Merge
authorduke
Wed, 05 Jul 2017 18:27:34 +0200
changeset 14236 1c3fdd0c4268
parent 14235 540a11e15fbb (current diff)
parent 14152 46a129d8f29b (diff)
child 14244 8589cc3525dc
Merge
common/bin/compareimage.sh
common/bin/diffexec.sh
common/bin/diffjarzip.sh
common/bin/difflib.sh
common/bin/difftext.sh
common/bin/exception_list_linux
common/bin/extractvcvars.sh
common/bin/unicode2x.sed
common/makefiles/compress.post
common/makefiles/compress.pre
common/makefiles/uncompress.sed
common/src/uncygdrive.c
hotspot/test/runtime/7158800/BadUtf8.java
hotspot/test/runtime/7158800/InternTest.java
hotspot/test/runtime/7158800/Test7158800.sh
hotspot/test/runtime/7158800/badstrings.txt
--- a/.hgtags-top-repo	Wed Oct 31 18:35:56 2012 -0700
+++ b/.hgtags-top-repo	Wed Jul 05 18:27:34 2017 +0200
@@ -183,3 +183,4 @@
 dae9821589ccd2611bdf7084269b98e819091770 jdk8-b59
 e07f499b9dccb529ecf74172cf6ac11a195ec57a jdk8-b60
 20ff117b509075c3aec4ee3a57990ecd5db5df9c jdk8-b61
+8a3fe0ae06a8cc21347da5a18384b0aa6c2349f5 jdk8-b62
--- a/NewMakefile.gmk	Wed Oct 31 18:35:56 2012 -0700
+++ b/NewMakefile.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -31,8 +31,9 @@
 CP=cp
 ECHO=echo
 MKDIR=mkdir
+PRINTF=printf
 PWD=pwd
-SH=sh
+TAR=tar
 ifeq ($(PLATFORM),windows)
   ZIP=zip
 else
@@ -63,9 +64,47 @@
 	  $(ECHO) "ERROR: No configurations to build"; exit 1; \
 	fi
 	@for bdir in $(dir $(ALL_MAKEFILES)) ; do \
-	  $(ECHO) "$(CD) $${bdir} && $(MAKE) $(EXTRA_MAKE_ARGS) $@" ; \
-	  $(CD) $${bdir} && $(MAKE) $(EXTRA_MAKE_ARGS) $@ ; \
+	  $(ECHO) "$(CD) $${bdir} && $(MAKE) $@" ; \
+	  $(CD) $${bdir} && $(MAKE) $@ ; \
+	done
+
+# TBD: Deploy input
+$(BUILD_DIR_ROOT)/.deploy_input:
+	@if [ "$(ALL_MAKEFILES)" = "" ] ; then \
+	  $(ECHO) "ERROR: No configurations to build"; exit 1; \
+	fi
+	@for bdir in $(dir $(ALL_MAKEFILES)) ; do \
+	  if [ deploy/make/Makefile ] ; then \
+	    echo "Attempting deploy build." ; \
+	    ( \
+	      $(RM) -r $${bdir}/deploy_input ; \
+	      $(MKDIR) -p $${bdir}/deploy_input ; \
+	      ( $(CD) $${bdir}/images && $(TAR) -cf - j2sdk-image j2re-image ) \
+	        | ( $(CD) $${bdir}/deploy_input && $(TAR) -xf - ) ; \
+	    ) ; \
+	  fi; \
 	done
+	touch $@
+
+# TBD: Deploy images
+deploy: $(BUILD_DIR_ROOT)/.deploy_input
+	@if [ "$(ALL_MAKEFILES)" = "" ] ; then \
+	  $(ECHO) "ERROR: No configurations to build"; exit 1; \
+	fi
+	@for bdir in $(dir $(ALL_MAKEFILES)) ; do \
+	  if [ deploy/make/Makefile ] ; then \
+	    echo "Attempting deploy build." ; \
+	    ( \
+	      $(CD) deploy/make && \
+	      $(MAKE) \
+	        ABS_OUTPUTDIR=$${bdir}/deploy_input \
+	        OUTPUTDIR=$${bdir}/deploy_input \
+	    ) ; \
+	  fi; \
+	done
+
+# TBD: Install bundles
+install:
 
 # Bundle creation
 bundles:
@@ -91,8 +130,8 @@
 checks:
 	@$(ECHO) "No checks yet"
 
-# Keep track of phony targets
-PHONY_LIST += all images clean clobber checks
+# Keep track of user targets
+USER_TARGETS += all deploy install images clean clobber checks
 
 ###########################################################################
 # To help in adoption of the new configure&&make build process, a bridge
@@ -102,32 +141,18 @@
 bridgeBuild: bridge2configure images
 
 # Bridge from old Makefile ALT settings to configure options
-bridge2configure: .bridge2configureOpts
-	$(CD) common/makefiles && sh ../autoconf/configure $(strip $(shell $(CAT) $<))
+bridge2configure: $(BUILD_DIR_ROOT)/.bridge2configureOpts
+	bash ./configure $(strip $(shell $(CAT) $<))
 
 # Create a file with configure options created from old Makefile mechanisms.
-.bridge2configureOpts: .bridge2configureOptsLatest
+$(BUILD_DIR_ROOT)/.bridge2configureOpts: $(BUILD_DIR_ROOT)/.bridge2configureOptsLatest
 	$(RM) $@
 	$(CP) $< $@
 
-# In case make was invoked from a specific path
-_MAKE_COMMAND_PATH:=$(firstword $(MAKE))
-ifneq ($(dir $(_MAKE_COMMAND_PATH)),./)
-  # This could be removed someday if JPRT was fixed and we could assume that
-  #    the path to make was always in PATH.
-  MAKE_BINDIR:=$(call UnixPath,$(dir $(_MAKE_COMMAND_PATH)))
-  NEWPATH:=$(MAKE_BINDIR):${PATH}
-  PATH:=$(NEWPATH)
-  export PATH
-  MAKE_COMMAND=$(MAKE_BINDIR)/$(notdir $(_MAKE_COMMAND_PATH))
-else
-  MAKE_COMMAND=$(_MAKE_COMMAND_PATH)
-endif
-
 # Use this file to only change when obvious things have changed
-.bridge2configureOptsLatest: FRC
+$(BUILD_DIR_ROOT)/.bridge2configureOptsLatest: FRC
 	$(RM) $@.tmp
-	@$(ECHO) " MAKE=$(MAKE_COMMAND) " >> $@.tmp
+	$(MKDIR) -p $(BUILD_DIR_ROOT)
 	@$(ECHO) " --with-debug-level=$(if $(DEBUG_LEVEL),$(DEBUG_LEVEL),release) " >> $@.tmp
 ifdef ARCH_DATA_MODEL
 	@$(ECHO) " --with-target-bits=$(ARCH_DATA_MODEL) " >> $@.tmp
@@ -156,20 +181,30 @@
 # Clobber all the built files
 clobber:: bridge2clobber
 bridge2clobber::
-	$(RM) .bridge2*
+	$(RM) $(BUILD_DIR_ROOT)/.bridge2*
+	$(RM) $(BUILD_DIR_ROOT)/.deploy_input
 
 # Keep track of phony targets
 PHONY_LIST += bridge2configure bridgeBuild bridge2clobber
 
 ###########################################################################
+# Sanity checks (history target)
+#
+
+sanity: checks
+
+# Keep track of user targets
+USER_TARGETS += sanity
+
+###########################################################################
 # Javadocs
 #
 
 javadocs:
 	cd common/makefiles && $(MAKE) -f MakefileJavadoc.gmk
 
-# Keep track of phony targets
-PHONY_LIST += javadocs
+# Keep track of user targets
+USER_TARGETS += javadocs
 
 ###########################################################################
 # JPRT targets
@@ -190,7 +225,6 @@
 jprt_build_debug: BUILD_DIRNAME=*-debug
 jprt_build_debug: jprt_build_generic
 
-jprt_build_generic: EXTRA_MAKE_ARGS=LOG=nofile,info
 jprt_build_generic: $(JPRT_ARCHIVE_BUNDLE)
 
 $(JPRT_ARCHIVE_BUNDLE): bridgeBuild bundles
@@ -203,9 +237,59 @@
               jprt_build_generic
 
 ###########################################################################
+# Help target
+
+HELP_FORMAT=%12s%s\n
+
+help:
+	@$(PRINTF) "# JDK Makefile\n"
+	@$(PRINTF) "#\n"
+	@$(PRINTF) "# Usage: make [Target]\n"
+	@$(PRINTF) "#\n"
+	@$(PRINTF) "#   $(HELP_FORMAT)" "Target   " "Description"
+	@$(PRINTF) "#   $(HELP_FORMAT)" "------   " "-----------"
+	@for i in $(USER_TARGETS) ; do \
+	  $(MAKE) help_$${i} ; \
+	done
+	@$(PRINTF) "#\n"
+
+help_all:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Build the entire jdk but not the images"
+help_images:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Create the jdk images for the builds"
+help_deploy:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Create the jdk deploy images from the jdk images"
+help_install:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Create the jdk install bundles from the deploy images"
+help_clean:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Clean and prepare for a fresh build from scratch"
+help_clobber:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Clean and also purge any hidden derived data"
+help_checks:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Perform various checks to make sure we can build"
+help_sanity:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Same as 'make checks'"
+help_javadocs:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Build the javadocs"
+help_help:
+	@$(PRINTF) "#   $(HELP_FORMAT)" "$(subst help_,,$@) - " \
+	"Print out the help messages"
+
+# Keep track of user targets
+USER_TARGETS += help
+
+###########################################################################
 # Phony targets
-.PHONY: $(PHONY_LIST)
+.PHONY: $(PHONY_LIST) $(USER_TARGETS)
 
 # Force target
 FRC:
-
--- a/common/autoconf/Makefile.in	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/Makefile.in	Wed Jul 05 18:27:34 2017 +0200
@@ -21,6 +21,7 @@
 # questions.
 #
 
-# Generated Makefile @DATE_WHEN_CONFIGURED@
+# This Makefile was generated by configure @DATE_WHEN_CONFIGURED@
+# GENERATED FILE, DO NOT EDIT
 SPEC:=@OUTPUT_ROOT@/spec.gmk
 include @SRC_ROOT@/common/makefiles/Makefile
--- a/common/autoconf/autogen.sh	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/autogen.sh	Wed Jul 05 18:27:34 2017 +0200
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 # Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -29,14 +29,11 @@
   # date +%s is not available on Solaris, use this workaround
   # from http://solarisjedi.blogspot.co.uk/2006/06/solaris-date-command-and-epoch-time.html
   TIMESTAMP=`/usr/bin/truss /usr/bin/date 2>&1 |  nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);print $2}'`
-  # On Solaris /bin/sh doesn't support test -e but /usr/bin/test does.
-  TEST=`which test`
 else
   TIMESTAMP=`date +%s`
-  TEST="test"
 fi
 
-if $TEST "$CUSTOM_CONFIG_DIR" = ""; then
+if test "x$CUSTOM_CONFIG_DIR" = "x"; then
   custom_script_dir="$script_dir/../../jdk/make/closed/autoconf"
 else
   custom_script_dir=$CUSTOM_CONFIG_DIR
@@ -44,16 +41,22 @@
 
 custom_hook=$custom_script_dir/custom-hook.m4
 
+if test "x`which autoconf 2> /dev/null`" = x; then
+  echo You need autoconf installed to be able to regenerate the configure script
+  echo Error: Cannot find autoconf 1>&2
+  exit 1
+fi
+
 echo Generating generated-configure.sh
 cat $script_dir/configure.ac  | sed -e "s|@DATE_WHEN_GENERATED@|$TIMESTAMP|" | autoconf -W all -I$script_dir - > $script_dir/generated-configure.sh
 rm -rf autom4te.cache
 
-if $TEST -e $custom_hook; then
+if test -e $custom_hook; then
   echo Generating custom generated-configure.sh
   # We have custom sources available; also generate configure script
   # with custom hooks compiled in.
   cat $script_dir/configure.ac | sed -e "s|@DATE_WHEN_GENERATED@|$TIMESTAMP|" | \
-    sed -e "s|AC_DEFUN_ONCE(\[CUSTOM_HOOK\])|m4_include([$custom_hook])|" | autoconf -W all -I$script_dir - > $custom_script_dir/generated-configure.sh
+    sed -e "s|#CUSTOM_AUTOCONF_INCLUDE|m4_include([$custom_hook])|" | autoconf -W all -I$script_dir - > $custom_script_dir/generated-configure.sh
   rm -rf autom4te.cache
 else
   echo No custom hook found:  $custom_hook
--- a/common/autoconf/basics.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/basics.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -34,84 +34,102 @@
     fi
 ])
 
-AC_DEFUN([SET_FULL_PATH],
+# This will make sure the given variable points to a full and proper
+# path. This means:
+# 1) There will be no spaces in the path. On posix platforms,
+#    spaces in the path will result in an error. On Windows,
+#    the path will be rewritten using short-style to be space-free.
+# 2) The path will be absolute, and it will be in unix-style (on
+#     cygwin).
+# $1: The name of the variable to fix
+AC_DEFUN([BASIC_FIXUP_PATH],
 [
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="[$]$1"
-    car="${tmp%% *}"
-    tmp="[$]$1 EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        SET_FULL_PATH_SPACESAFE(car)
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    BASIC_FIXUP_PATH_CYGWIN($1)
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    BASIC_FIXUP_PATH_MSYS($1)
+  else
+    # We're on a posix platform. Hooray! :)
+    path="[$]$1"
+    
+    if test ! -f "$path" && test ! -d "$path"; then
+      AC_MSG_ERROR([The path of $1, which resolves as "$path", is not found.])
     fi
-    if test "x$cdr" != xEOL; then
-        $1="$car ${cdr% *}"
-    else
-        $1="$car"
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      AC_MSG_NOTICE([The path of $1, which resolves as "$path", is invalid.])
+      AC_MSG_ERROR([Spaces are not allowed in this path.])
     fi
+  fi
 ])
 
-AC_DEFUN([SPACESAFE],
+# This will make sure the given variable points to a executable
+# with a full and proper path. This means:
+# 1) There will be no spaces in the path. On posix platforms,
+#    spaces in the path will result in an error. On Windows,
+#    the path will be rewritten using short-style to be space-free.
+# 2) The path will be absolute, and it will be in unix-style (on
+#     cygwin).
+# Any arguments given to the executable is preserved.
+# If the input variable does not have a directory specification, then
+# it need to be in the PATH.
+# $1: The name of the variable to fix
+AC_DEFUN([BASIC_FIXUP_EXECUTABLE],
 [
-    # Fail with message $2 if var $1 contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "[$]$1" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            $1=`$CYGPATH -s -m -a "[$]$1"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            $1=`$ECHO "[$]$1" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            $1=`$CYGPATH -u "[$]$1"`
-        else
-            AC_MSG_ERROR([You cannot have spaces in $2! "[$]$1"])
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    BASIC_FIXUP_EXECUTABLE_CYGWIN($1)
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    BASIC_FIXUP_EXECUTABLE_MSYS($1)
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="[$]$1"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        AC_MSG_NOTICE([Resolving $1 (as $path) with 'which' failed, using $path directly.])
+        new_path="$path"
+      else
+        AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          AC_MSG_NOTICE([This might be caused by spaces in the path, which is not allowed.])
         fi
+        AC_MSG_ERROR([Cannot locate the the path of $1])
+      fi
     fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    $1="$new_complete"
+    AC_MSG_NOTICE([Rewriting $1 to "$new_complete"])
+  fi
 ])
 
-AC_DEFUN([SET_FULL_PATH_SPACESAFE],
-[
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="[$]$1"
-    
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "[$]$1"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    $1="$tmp"
-])
-
-AC_DEFUN([REMOVE_SYMBOLIC_LINKS],
+AC_DEFUN([BASIC_REMOVE_SYMBOLIC_LINKS],
 [
     if test "x$OPENJDK_BUILD_OS" != xwindows; then
         # Follow a chain of symbolic links. Use readlink
         # where it exists, else fall back to horribly
         # complicated shell code.
-        AC_PATH_PROG(READLINK, readlink)
         if test "x$READLINK_TESTED" != yes; then
             # On MacOSX there is a readlink tool with a different
             # purpose than the GNU readlink tool. Check the found readlink.
-            ISGNU=`$READLINK --help 2>&1 | grep GNU`
+            ISGNU=`$READLINK --help 2>&1 | $GREP GNU`
             if test "x$ISGNU" = x; then
                  # A readlink that we do not know how to use.
                  # Are there other non-GNU readlinks out there?
@@ -125,23 +143,25 @@
         else
             STARTDIR=$PWD
             COUNTER=0
-            DIR=`dirname [$]$1`
-            FIL=`basename [$]$1`
+            sym_link_dir=`$DIRNAME [$]$1`
+            sym_link_file=`$BASENAME [$]$1`
             while test $COUNTER -lt 20; do
-                ISLINK=`ls -l $DIR/$FIL | grep '\->' | sed -e 's/.*-> \(.*\)/\1/'`
+                ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
                 if test "x$ISLINK" == x; then
                     # This is not a symbolic link! We are done!
                     break
                 fi
                 # The link might be relative! We have to use cd to travel safely.
-                cd $DIR
-                cd `dirname $ISLINK`
-                DIR=`pwd`
-                FIL=`basename $ISLINK`
+                cd $sym_link_dir
+                # ... and we must get the to the absolute path, not one using symbolic links.             
+                cd `pwd -P`
+                cd `$DIRNAME $ISLINK`
+                sym_link_dir=`$THEPWDCMD`
+                sym_link_file=`$BASENAME $ISLINK`
                 let COUNTER=COUNTER+1
             done
             cd $STARTDIR
-            $1=$DIR/$FIL
+            $1=$sym_link_dir/$sym_link_file
         fi
     fi
 ])
@@ -152,6 +172,107 @@
 AC_SUBST(CONFIGURE_COMMAND_LINE)
 DATE_WHEN_CONFIGURED=`LANG=C date`
 AC_SUBST(DATE_WHEN_CONFIGURED)
+AC_MSG_NOTICE([Configuration created at $DATE_WHEN_CONFIGURED.])
+AC_MSG_NOTICE([configure script generated at timestamp $DATE_WHEN_GENERATED.])
+])
+
+# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
+# $1: variable to check
+# $2: executable name to print in warning (optional)
+AC_DEFUN([BASIC_CHECK_NONEMPTY],
+[
+    if test "x[$]$1" = x; then
+        if test "x$2" = x; then
+          PROG_NAME=translit($1,A-Z,a-z)
+        else
+          PROG_NAME=$2
+        fi
+        AC_MSG_NOTICE([Could not find $PROG_NAME!])
+        AC_MSG_ERROR([Cannot continue])
+    fi
+])
+
+# Does AC_PATH_PROG followed by BASIC_CHECK_NONEMPTY.
+# Arguments as AC_PATH_PROG:
+# $1: variable to set
+# $2: executable name to look for
+AC_DEFUN([BASIC_REQUIRE_PROG],
+[
+    AC_PATH_PROGS($1, $2)
+    BASIC_CHECK_NONEMPTY($1, $2)
+])
+
+# Setup the most fundamental tools that relies on not much else to set up,
+# but is used by much of the early bootstrap code.
+AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
+[
+
+# Start with tools that do not need have cross compilation support
+# and can be expected to be found in the default PATH. These tools are
+# used by configure. Nor are these tools expected to be found in the
+# devkit from the builddeps server either, since they are
+# needed to download the devkit.
+
+# First are all the simple required tools.
+BASIC_REQUIRE_PROG(BASENAME, basename)
+BASIC_REQUIRE_PROG(BASH, bash)
+BASIC_REQUIRE_PROG(CAT, cat)
+BASIC_REQUIRE_PROG(CHMOD, chmod)
+BASIC_REQUIRE_PROG(CMP, cmp)
+BASIC_REQUIRE_PROG(CP, cp)
+BASIC_REQUIRE_PROG(CUT, cut)
+BASIC_REQUIRE_PROG(DATE, date)
+BASIC_REQUIRE_PROG(DIFF, [gdiff diff])
+BASIC_REQUIRE_PROG(DIRNAME, dirname)
+BASIC_REQUIRE_PROG(ECHO, echo)
+BASIC_REQUIRE_PROG(EXPR, expr)
+BASIC_REQUIRE_PROG(FILE, file)
+BASIC_REQUIRE_PROG(FIND, find)
+BASIC_REQUIRE_PROG(HEAD, head)
+BASIC_REQUIRE_PROG(LN, ln)
+BASIC_REQUIRE_PROG(LS, ls)
+BASIC_REQUIRE_PROG(MKDIR, mkdir)
+BASIC_REQUIRE_PROG(MKTEMP, mktemp)
+BASIC_REQUIRE_PROG(MV, mv)
+BASIC_REQUIRE_PROG(PRINTF, printf)
+BASIC_REQUIRE_PROG(THEPWDCMD, pwd)
+BASIC_REQUIRE_PROG(RM, rm)
+BASIC_REQUIRE_PROG(SH, sh)
+BASIC_REQUIRE_PROG(SORT, sort)
+BASIC_REQUIRE_PROG(TAIL, tail)
+BASIC_REQUIRE_PROG(TAR, tar)
+BASIC_REQUIRE_PROG(TEE, tee)
+BASIC_REQUIRE_PROG(TOUCH, touch)
+BASIC_REQUIRE_PROG(TR, tr)
+BASIC_REQUIRE_PROG(UNAME, uname)
+BASIC_REQUIRE_PROG(UNIQ, uniq)
+BASIC_REQUIRE_PROG(WC, wc)
+BASIC_REQUIRE_PROG(WHICH, which)
+BASIC_REQUIRE_PROG(XARGS, xargs)
+
+# Then required tools that require some special treatment.
+AC_PROG_AWK
+BASIC_CHECK_NONEMPTY(AWK)
+AC_PROG_GREP
+BASIC_CHECK_NONEMPTY(GREP)
+AC_PROG_EGREP
+BASIC_CHECK_NONEMPTY(EGREP)
+AC_PROG_FGREP
+BASIC_CHECK_NONEMPTY(FGREP)
+AC_PROG_SED
+BASIC_CHECK_NONEMPTY(SED)
+
+AC_PATH_PROGS(NAWK, [nawk gawk awk])
+BASIC_CHECK_NONEMPTY(NAWK)
+
+# Always force rm.
+RM="$RM -f"
+
+# These are not required on all platforms
+AC_PATH_PROG(CYGPATH, cygpath)
+AC_PATH_PROG(READLINK, readlink)
+AC_PATH_PROG(DF, df)
+AC_PATH_PROG(SETFILE, SetFile)
 ])
 
 # Setup basic configuration paths, and platform-specific stuff related to PATHs.
@@ -159,46 +280,37 @@
 [
 # Locate the directory of this script.
 SCRIPT="[$]0"
-REMOVE_SYMBOLIC_LINKS(SCRIPT)
-AUTOCONF_DIR=`dirname [$]0`
+BASIC_REMOVE_SYMBOLIC_LINKS(SCRIPT)
+AUTOCONF_DIR=`cd \`$DIRNAME $SCRIPT\`; $THEPWDCMD`
 
 # Where is the source? It is located two levels above the configure script.
 CURDIR="$PWD"
 cd "$AUTOCONF_DIR/../.."
 SRC_ROOT="`pwd`"
-if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-    SRC_ROOT_LENGTH=`pwd|wc -m`
-    if test $SRC_ROOT_LENGTH -gt 100; then
-        AC_MSG_ERROR([Your base path is too long. It is $SRC_ROOT_LENGTH characters long, but only 100 is supported])
-    fi
+
+if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+  PATH_SEP=";"
+  BASIC_CHECK_PATHS_WINDOWS
+else
+  PATH_SEP=":"
 fi
+
 AC_SUBST(SRC_ROOT)
+AC_SUBST(PATH_SEP)
 cd "$CURDIR"
 
-SPACESAFE(SRC_ROOT,[the path to the source root])
-SPACESAFE(CURDIR,[the path to the current directory])
+BASIC_FIXUP_PATH(SRC_ROOT)
+BASIC_FIXUP_PATH(CURDIR)
 
 if test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
     # Add extra search paths on solaris for utilities like ar and as etc...
     PATH="$PATH:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin"
 fi
 
-# For cygwin we need cygpath first, since it is used everywhere.
-AC_PATH_PROG(CYGPATH, cygpath)
-PATH_SEP=":"
-if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-    if test "x$CYGPATH" = x; then
-        AC_MSG_ERROR([Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path])
-    fi
-    PATH_SEP=";"
-fi
-AC_SUBST(PATH_SEP)
-
 # You can force the sys-root if the sys-root encoded into the cross compiler tools
 # is not correct.
 AC_ARG_WITH(sys-root, [AS_HELP_STRING([--with-sys-root],
-  [pass this sys-root to the compilers and linker (useful if the sys-root encoded in
-   the cross compiler tools is incorrect)])])
+  [pass this sys-root to the compilers and tools (for cross-compiling)])])
 
 if test "x$with_sys_root" != x; then
   SYS_ROOT=$with_sys_root
@@ -208,7 +320,7 @@
 AC_SUBST(SYS_ROOT)
 
 AC_ARG_WITH([tools-dir], [AS_HELP_STRING([--with-tools-dir],
-  [search this directory for (cross-compiling) compilers and tools])], [TOOLS_DIR=$with_tools_dir])
+  [search this directory for compilers and tools (for cross-compiling)])], [TOOLS_DIR=$with_tools_dir])
 
 AC_ARG_WITH([devkit], [AS_HELP_STRING([--with-devkit],
   [use this directory as base for tools-dir and sys-root (for cross-compiling)])],
@@ -229,7 +341,7 @@
 [
 
 AC_ARG_WITH(conf-name, [AS_HELP_STRING([--with-conf-name],
-	[use this as the name of the configuration, overriding the generated default])],
+	[use this as the name of the configuration @<:@generated from important configuration options@:>@])],
         [ CONF_NAME=${with_conf_name} ])
 
 # Test from where we are running configure, in or outside of src root.
@@ -240,7 +352,7 @@
         CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
     fi
     OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
-    mkdir -p "$OUTPUT_ROOT"
+    $MKDIR -p "$OUTPUT_ROOT"
     if test ! -d "$OUTPUT_ROOT"; then
         AC_MSG_ERROR([Could not create build directory $OUTPUT_ROOT])
     fi
@@ -253,9 +365,30 @@
         CONF_NAME=`$ECHO $CURDIR | $SED -e "s!^${SRC_ROOT}/build/!!"`
     fi
     OUTPUT_ROOT="$CURDIR"
-fi
+
+    # WARNING: This might be a bad thing to do. You need to be sure you want to
+    # have a configuration in this directory. Do some sanity checks!
 
-SPACESAFE(OUTPUT_ROOT,[the path to the output root])
+    if test ! -e "$OUTPUT_ROOT/spec.gmk"; then
+      # If we have a spec.gmk, we have run here before and we are OK. Otherwise, check for
+      # other files
+      files_present=`$LS $OUTPUT_ROOT`
+      if test "x$files_present" != x; then
+        AC_MSG_NOTICE([Current directory is $CURDIR.])
+        AC_MSG_NOTICE([Since this is not the source root, configure will output the configuration here])
+        AC_MSG_NOTICE([(as opposed to creating a configuration in <src_root>/build/<conf-name>).])
+        AC_MSG_NOTICE([However, this directory is not empty. This is not allowed, since it could])
+        AC_MSG_NOTICE([seriously mess up just about everything.])
+        AC_MSG_NOTICE([Try 'cd $SRC_ROOT' and restart configure])
+        AC_MSG_NOTICE([(or create a new empty directory and cd to it).])
+        AC_MSG_ERROR([Will not continue creating configuration in $CURDIR])
+      fi
+    fi
+fi
+AC_MSG_CHECKING([what configuration name to use])
+AC_MSG_RESULT([$CONF_NAME])
+
+BASIC_FIXUP_PATH(OUTPUT_ROOT)
 
 AC_SUBST(SPEC, $OUTPUT_ROOT/spec.gmk)
 AC_SUBST(CONF_NAME, $CONF_NAME)
@@ -287,7 +420,7 @@
 # Setup default logging of stdout and stderr to build.log in the output root.
 BUILD_LOG='$(OUTPUT_ROOT)/build.log'
 BUILD_LOG_PREVIOUS='$(OUTPUT_ROOT)/build.log.old'
-BUILD_LOG_WRAPPER='$(SH) $(SRC_ROOT)/common/bin/logger.sh $(BUILD_LOG)'
+BUILD_LOG_WRAPPER='$(BASH) $(SRC_ROOT)/common/bin/logger.sh $(BUILD_LOG)'
 AC_SUBST(BUILD_LOG)
 AC_SUBST(BUILD_LOG_PREVIOUS)
 AC_SUBST(BUILD_LOG_WRAPPER)
@@ -305,7 +438,6 @@
   DESCRIPTION="$2"
   if test "x$MAKE_CANDIDATE" != x; then
     AC_MSG_NOTICE([Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION])
-    SET_FULL_PATH(MAKE_CANDIDATE)
     MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
     IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
     if test "x$IS_GNU_MAKE" = x; then
@@ -314,8 +446,27 @@
       IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[[12346789]]'`
       if test "x$IS_MODERN_MAKE" = x; then
         AC_MSG_NOTICE([Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring.])
-      else 
-        FOUND_MAKE=$MAKE_CANDIDATE
+      else
+        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+          if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+            MAKE_EXPECTED_ENV='cygwin'
+          elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+            MAKE_EXPECTED_ENV='msys'
+          else
+            AC_MSG_ERROR([Unknown Windows environment])
+          fi
+          MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+          IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+        else
+          # Not relevant for non-Windows
+          IS_MAKE_CORRECT_ENV=true
+        fi
+        if test "x$IS_MAKE_CORRECT_ENV" = x; then
+          AC_MSG_NOTICE([Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring.])
+        else
+          FOUND_MAKE=$MAKE_CANDIDATE
+          BASIC_FIXUP_EXECUTABLE(FOUND_MAKE)
+        fi
       fi
     fi
   fi
@@ -330,7 +481,7 @@
     if test ! -f "$MAKE"; then
       AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not found.])
     fi
-    BASIC_CHECK_MAKE_VERSION("$MAKE", [user supplied MAKE=])
+    BASIC_CHECK_MAKE_VERSION("$MAKE", [user supplied MAKE=$MAKE])
     if test "x$FOUND_MAKE" = x; then
       AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not GNU make 3.81 or newer.])
     fi
@@ -375,7 +526,7 @@
     AC_MSG_CHECKING([if find supports -delete])
     FIND_DELETE="-delete"
 
-    DELETEDIR=`mktemp -d tmp.XXXXXXXXXX` || (echo Could not create temporary directory!; exit $?)
+    DELETEDIR=`$MKTEMP -d tmp.XXXXXXXXXX` || (echo Could not create temporary directory!; exit $?)
 
     echo Hejsan > $DELETEDIR/TestIfFindSupportsDelete
 
@@ -389,102 +540,22 @@
         AC_MSG_RESULT([yes])    
     fi
     rmdir $DELETEDIR
-])
-
-# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
-# $1: variable to check
-# $2: executable name to print in warning (optional)
-AC_DEFUN([CHECK_NONEMPTY],
-[
-    if test "x[$]$1" = x; then
-        if test "x$2" = x; then
-          PROG_NAME=translit($1,A-Z,a-z)
-        else
-          PROG_NAME=$2
-        fi
-        AC_MSG_NOTICE([Could not find $PROG_NAME!])
-        AC_MSG_ERROR([Cannot continue])
-    fi
-])
-
-# Does AC_PATH_PROG followed by CHECK_NONEMPTY.
-# Arguments as AC_PATH_PROG:
-# $1: variable to set
-# $2: executable name to look for
-AC_DEFUN([BASIC_REQUIRE_PROG],
-[
-    AC_PATH_PROGS($1, $2)
-    CHECK_NONEMPTY($1, $2)
+    AC_SUBST(FIND_DELETE)
 ])
 
-AC_DEFUN_ONCE([BASIC_SETUP_TOOLS],
+AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
 [
-# Start with tools that do not need have cross compilation support
-# and can be expected to be found in the default PATH. These tools are
-# used by configure. Nor are these tools expected to be found in the
-# devkit from the builddeps server either, since they are
-# needed to download the devkit.
-
-# First are all the simple required tools.
-BASIC_REQUIRE_PROG(BASENAME, basename)
-BASIC_REQUIRE_PROG(CAT, cat)
-BASIC_REQUIRE_PROG(CHMOD, chmod)
-BASIC_REQUIRE_PROG(CMP, cmp)
-BASIC_REQUIRE_PROG(CP, cp)
-BASIC_REQUIRE_PROG(CPIO, cpio)
-BASIC_REQUIRE_PROG(CUT, cut)
-BASIC_REQUIRE_PROG(DATE, date)
-BASIC_REQUIRE_PROG(DF, df)
-BASIC_REQUIRE_PROG(DIFF, [gdiff diff])
-BASIC_REQUIRE_PROG(ECHO, echo)
-BASIC_REQUIRE_PROG(EXPR, expr)
-BASIC_REQUIRE_PROG(FILE, file)
-BASIC_REQUIRE_PROG(FIND, find)
-BASIC_REQUIRE_PROG(HEAD, head)
-BASIC_REQUIRE_PROG(LN, ln)
-BASIC_REQUIRE_PROG(LS, ls)
-BASIC_REQUIRE_PROG(MKDIR, mkdir)
-BASIC_REQUIRE_PROG(MV, mv)
-BASIC_REQUIRE_PROG(PRINTF, printf)
-BASIC_REQUIRE_PROG(SH, sh)
-BASIC_REQUIRE_PROG(SORT, sort)
-BASIC_REQUIRE_PROG(TAIL, tail)
-BASIC_REQUIRE_PROG(TAR, tar)
-BASIC_REQUIRE_PROG(TEE, tee)
-BASIC_REQUIRE_PROG(TOUCH, touch)
-BASIC_REQUIRE_PROG(TR, tr)
-BASIC_REQUIRE_PROG(UNIQ, uniq)
-BASIC_REQUIRE_PROG(UNZIP, unzip)
-BASIC_REQUIRE_PROG(WC, wc)
-BASIC_REQUIRE_PROG(XARGS, xargs)
-BASIC_REQUIRE_PROG(ZIP, zip)
-
-# Then required tools that require some special treatment.
-AC_PROG_AWK
-CHECK_NONEMPTY(AWK)
-AC_PROG_GREP
-CHECK_NONEMPTY(GREP)
-AC_PROG_EGREP
-CHECK_NONEMPTY(EGREP)
-AC_PROG_FGREP
-CHECK_NONEMPTY(FGREP)
-AC_PROG_SED
-CHECK_NONEMPTY(SED)
-
-AC_PATH_PROGS(NAWK, [nawk gawk awk])
-CHECK_NONEMPTY(NAWK)
-
 BASIC_CHECK_GNU_MAKE
 
-BASIC_REQUIRE_PROG(RM, rm)
-RM="$RM -f"
+BASIC_CHECK_FIND_DELETE
 
-BASIC_CHECK_FIND_DELETE
-AC_SUBST(FIND_DELETE)
+# These tools might not be installed by default, 
+# need hint on how to install them.
+BASIC_REQUIRE_PROG(UNZIP, unzip)
+BASIC_REQUIRE_PROG(ZIP, zip)
 
 # Non-required basic tools
 
-AC_PATH_PROG(THEPWDCMD, pwd)
 AC_PATH_PROG(LDD, ldd)
 if test "x$LDD" = "x"; then
     # List shared lib dependencies is used for
@@ -497,52 +568,17 @@
    OTOOL="true"
 fi
 AC_PATH_PROGS(READELF, [readelf greadelf])
-AC_PATH_PROGS(OBJDUMP, [objdump gobjdump])
 AC_PATH_PROG(HG, hg)
+AC_PATH_PROG(STAT, stat)
+AC_PATH_PROG(TIME, time)
+
+if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+  BASIC_REQUIRE_PROG(COMM, comm)
+fi
 ])
 
-AC_DEFUN_ONCE([BASIC_COMPILE_UNCYGDRIVE],
-[
-# When using cygwin, we need a wrapper binary that renames
-# /cygdrive/c/ arguments into c:/ arguments and peeks into
-# @files and rewrites these too! This wrapper binary is
-# called uncygdrive.exe.
-UNCYGDRIVE=
-if test "x$OPENJDK_BUILD_OS" = xwindows; then
-    AC_MSG_CHECKING([if uncygdrive can be created])
-    UNCYGDRIVE_SRC=`$CYGPATH -m $SRC_ROOT/common/src/uncygdrive.c`
-    rm -f $OUTPUT_ROOT/uncygdrive*
-    UNCYGDRIVE=`$CYGPATH -m $OUTPUT_ROOT/uncygdrive.exe`
-    cd $OUTPUT_ROOT
-    $CC $UNCYGDRIVE_SRC /Fe$UNCYGDRIVE > $OUTPUT_ROOT/uncygdrive1.log 2>&1
-    cd $CURDIR
-
-    if test ! -x $OUTPUT_ROOT/uncygdrive.exe; then 
-        AC_MSG_RESULT([no])
-        cat $OUTPUT_ROOT/uncygdrive1.log
-        AC_MSG_ERROR([Could not create $OUTPUT_ROOT/uncygdrive.exe])
-    fi
-    AC_MSG_RESULT([$UNCYGDRIVE])
-    AC_MSG_CHECKING([if uncygdrive.exe works])
-    cd $OUTPUT_ROOT
-    $UNCYGDRIVE $CC $SRC_ROOT/common/src/uncygdrive.c /Fe$OUTPUT_ROOT/uncygdrive2.exe > $OUTPUT_ROOT/uncygdrive2.log 2>&1 
-    cd $CURDIR
-    if test ! -x $OUTPUT_ROOT/uncygdrive2.exe; then 
-        AC_MSG_RESULT([no])
-        cat $OUTPUT_ROOT/uncygdrive2.log
-        AC_MSG_ERROR([Uncygdrive did not work!])
-    fi
-    AC_MSG_RESULT([yes])
-    rm -f $OUTPUT_ROOT/uncygdrive?.??? $OUTPUT_ROOT/uncygdrive.obj
-    # The path to uncygdrive to use should be Unix-style
-    UNCYGDRIVE="$OUTPUT_ROOT/uncygdrive.exe"
-fi
-
-AC_SUBST(UNCYGDRIVE)
-])
-
-
-# Check if build directory is on local disk.
+# Check if build directory is on local disk. If not possible to determine,
+# we prefer to claim it's local.
 # Argument 1: directory to test
 # Argument 2: what to do if it is on local disk
 # Argument 3: what to do otherwise (remote disk or failure)
@@ -550,11 +586,26 @@
 [
 	# df -l lists only local disks; if the given directory is not found then
 	# a non-zero exit code is given
-	if $DF -l $1 > /dev/null 2>&1; then
-          $2
-        else
-          $3
-        fi
+  if test "x$DF" = x; then
+    if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+      # msys does not have df; use Windows "net use" instead.
+      IS_NETWORK_DISK=`net use | grep \`pwd -W | cut -d ":" -f 1 | tr a-z A-Z\`:`
+      if test "x$IS_NETWORK_DISK" = x; then
+        $2
+      else
+        $3
+      fi
+    else
+      # No df here, say it's local
+      $2
+    fi
+  else
+    if $DF -l $1 > /dev/null 2>&1; then
+      $2
+    else
+      $3
+    fi
+  fi
 ])
 
 AC_DEFUN_ONCE([BASIC_TEST_USABILITY_ISSUES],
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/autoconf/basics_windows.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,406 @@
+#
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+AC_DEFUN([BASIC_WINDOWS_REWRITE_AS_UNIX_PATH],
+[
+  windows_path="[$]$1"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    $1="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    $1="$unix_path"
+  fi
+])
+
+AC_DEFUN([BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH],
+[
+  unix_path="[$]$1"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    windows_path=`$CYGPATH -m "$unix_path"`
+    $1="$windows_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    windows_path=`cmd //c echo $unix_path`
+    $1="$windows_path"
+  fi
+])
+
+# Helper function which possibly converts a path using DOS-style short mode.
+# If so, the updated path is stored in $new_path.
+# $1: The path to check
+AC_DEFUN([BASIC_MAKE_WINDOWS_SPACE_SAFE_CYGWIN],
+[
+  input_path="$1"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use @<:@ and @:>@ instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP @<:@^-._/a-zA-Z0-9@:>@`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $1 | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+])
+
+# Helper function which possibly converts a path using DOS-style short mode.
+# If so, the updated path is stored in $new_path.
+# $1: The path to check
+AC_DEFUN([BASIC_MAKE_WINDOWS_SPACE_SAFE_MSYS],
+[
+  input_path="$1"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use @<:@ and @:>@ instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP @<:@^-_/:a-zA-Z0-9@:>@`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+])
+
+# FIXME: The BASIC_FIXUP_*_CYGWIN/MSYS is most likely too convoluted
+# and could probably be heavily simplified. However, all changes in this
+# area tend to need lot of testing in different scenarios, and in lack of
+# proper unit testing, cleaning this up has not been deemed worth the effort
+# at the moment.
+
+AC_DEFUN([BASIC_FIXUP_PATH_CYGWIN],
+[
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="[$]$1"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    AC_MSG_NOTICE([The path of $1, which resolves as "$path", is invalid.])
+    AC_MSG_ERROR([Cannot locate the the path of $1])
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  BASIC_MAKE_WINDOWS_SPACE_SAFE_CYGWIN([$new_path])
+
+  if test "x$path" != "x$new_path"; then
+    $1="$new_path"
+    AC_MSG_NOTICE([Rewriting $1 to "$new_path"])
+  fi
+])
+
+AC_DEFUN([BASIC_FIXUP_PATH_MSYS],
+[
+  path="[$]$1"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+  
+  BASIC_MAKE_WINDOWS_SPACE_SAFE_MSYS([$new_path])
+  BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+  if test "x$path" != "x$new_path"; then
+    $1="$new_path"
+    AC_MSG_NOTICE([Rewriting $1 to "$new_path"])
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes@<:@@@:>@}" "${new_path:0:10}")
+])
+
+AC_DEFUN([BASIC_FIXUP_EXECUTABLE_CYGWIN],
+[
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="[$]$1"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        AC_MSG_NOTICE([You might be mixing spaces in the path and extra arguments, which is not allowed.])
+      fi
+      AC_MSG_ERROR([Cannot locate the the path of $1])
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      AC_MSG_NOTICE([The path of $1, which resolves as "$new_path", is invalid.])
+      AC_MSG_NOTICE([Neither "$new_path" nor "$new_path.exe/cmd" can be found])
+      AC_MSG_ERROR([Cannot locate the the path of $1])
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+  BASIC_MAKE_WINDOWS_SPACE_SAFE_CYGWIN([$input_to_shortpath])
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+])
+
+AC_DEFUN([BASIC_FIXUP_EXECUTABLE_MSYS],
+[
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="[$]$1"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+  BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+    BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+    
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        AC_MSG_NOTICE([You might be mixing spaces in the path and extra arguments, which is not allowed.])
+      fi
+      AC_MSG_ERROR([Cannot locate the the path of $1])
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+    BASIC_MAKE_WINDOWS_SPACE_SAFE_MSYS([$new_path])
+    # Output is in $new_path
+    BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes@<:@@@:>@}" "${new_path:0:10}")
+  fi
+])
+
+# Setup basic configuration paths, and platform-specific stuff related to PATHs.
+AC_DEFUN([BASIC_CHECK_PATHS_WINDOWS],
+[
+  SRC_ROOT_LENGTH=`$THEPWDCMD|$WC -m`
+  if test $SRC_ROOT_LENGTH -gt 100; then
+      AC_MSG_ERROR([Your base path is too long. It is $SRC_ROOT_LENGTH characters long, but only 100 is supported])
+  fi
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    AC_MSG_CHECKING([cygwin release])
+    CYGWIN_VERSION=`$UNAME -r`
+    AC_MSG_RESULT([$CYGWIN_VERSION])
+    WINDOWS_ENV_VENDOR='cygwin'
+    WINDOWS_ENV_VERSION="$CYGWIN_VERSION"
+    
+    CYGWIN_VERSION_OK=`$ECHO $CYGWIN_VERSION | $GREP ^1.7.`
+    if test "x$CYGWIN_VERSION_OK" = x; then
+      AC_MSG_NOTICE([Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade.])
+      AC_MSG_ERROR([Cannot continue])
+    fi
+    if test "x$CYGPATH" = x; then
+        AC_MSG_ERROR([Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path])
+    fi
+    AC_MSG_CHECKING([cygwin root directory as unix-style path])
+    # The cmd output ends with Windows line endings (CR/LF), the grep command will strip that away
+    cygwin_winpath_root=`cd / ; cmd /c cd | grep ".*"`
+    # Force cygpath to report the proper root by including a trailing space, and then stripping it off again.
+    CYGWIN_ROOT_PATH=`$CYGPATH -u "$cygwin_winpath_root " | $CUT -f 1 -d " "`
+    AC_MSG_RESULT([$CYGWIN_ROOT_PATH])
+    WINDOWS_ENV_ROOT_PATH="$CYGWIN_ROOT_PATH"
+    test_cygdrive_prefix=`$ECHO $CYGWIN_ROOT_PATH | $GREP ^/cygdrive/`
+    if test "x$test_cygdrive_prefix" = x; then
+        AC_MSG_ERROR([Your cygdrive prefix is not /cygdrive. This is currently not supported. Change with mount -c.])
+    fi
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    AC_MSG_CHECKING([msys release])
+    MSYS_VERSION=`$UNAME -r`
+    AC_MSG_RESULT([$MSYS_VERSION])
+    
+    WINDOWS_ENV_VENDOR='msys'
+    WINDOWS_ENV_VERSION="$MSYS_VERSION"
+
+    AC_MSG_CHECKING([msys root directory as unix-style path])
+    # The cmd output ends with Windows line endings (CR/LF), the grep command will strip that away
+    MSYS_ROOT_PATH=`cd / ; cmd /c cd | grep ".*"`
+    BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(MSYS_ROOT_PATH)
+    AC_MSG_RESULT([$MSYS_ROOT_PATH])
+    WINDOWS_ENV_ROOT_PATH="$MSYS_ROOT_PATH"
+  else
+    AC_MSG_ERROR([Unknown Windows environment. Neither cygwin nor msys was detected.])
+  fi
+
+  # Test if windows or unix (cygwin/msys) find is first in path.
+  AC_MSG_CHECKING([what kind of 'find' is first on the PATH])
+  FIND_BINARY_OUTPUT=`find --version 2>&1`
+  if test "x`echo $FIND_BINARY_OUTPUT | $GREP GNU`" != x; then
+    AC_MSG_RESULT([unix style])
+  elif test "x`echo $FIND_BINARY_OUTPUT | $GREP FIND`" != x; then
+    AC_MSG_RESULT([Windows])
+    AC_MSG_NOTICE([Your path contains Windows tools (C:\Windows\system32) before your unix (cygwin or msys) tools.])
+    AC_MSG_NOTICE([This will not work. Please correct and make sure /usr/bin (or similar) is first in path.])
+    AC_MSG_ERROR([Cannot continue])
+  else
+    AC_MSG_RESULT([unknown])
+    AC_MSG_WARN([It seems that your find utility is non-standard.])
+  fi
+])
+
+AC_DEFUN_ONCE([BASIC_COMPILE_FIXPATH],
+[
+# When using cygwin or msys, we need a wrapper binary that renames
+# /cygdrive/c/ arguments into c:/ arguments and peeks into
+# @files and rewrites these too! This wrapper binary is
+# called fixpath.
+FIXPATH=
+if test "x$OPENJDK_BUILD_OS" = xwindows; then
+    AC_MSG_CHECKING([if fixpath can be created])
+    FIXPATH_SRC="$SRC_ROOT/common/src/fixpath.c"
+    FIXPATH_BIN="$OUTPUT_ROOT/fixpath.exe"
+    if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
+      FIXPATH_SRC=`$CYGPATH -m $FIXPATH_SRC`
+      FIXPATH_BIN=`$CYGPATH -m $FIXPATH_BIN`
+      # Important to keep the .exe suffix on Cygwin for Hotspot makefiles
+      FIXPATH="$OUTPUT_ROOT/fixpath.exe -c"
+    elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.msys; then
+      FIXPATH_SRC=`cmd //c echo $FIXPATH_SRC`
+      FIXPATH_BIN=`cmd //c echo $FIXPATH_BIN`
+
+      # Take all collected prefixes and turn them into a -m/c/foo@/c/bar@... command line
+      # @ was chosen as separator to minimize risk of other tools messing around with it
+      all_unique_prefixes=`echo "${all_fixpath_prefixes@<:@@@:>@}" | tr ' ' '\n' | grep '^/./' | sort | uniq`
+      fixpath_argument_list=`echo $all_unique_prefixes  | tr ' ' '@'`
+      
+      FIXPATH="$OUTPUT_ROOT/fixpath -m$fixpath_argument_list"
+    fi
+    rm -f $OUTPUT_ROOT/fixpath*
+    cd $OUTPUT_ROOT
+    $CC $FIXPATH_SRC -Fe$FIXPATH_BIN > $OUTPUT_ROOT/fixpath1.log 2>&1
+    cd $CURDIR
+
+    if test ! -x $OUTPUT_ROOT/fixpath.exe; then 
+        AC_MSG_RESULT([no])
+        cat $OUTPUT_ROOT/fixpath1.log
+        AC_MSG_ERROR([Could not create $OUTPUT_ROOT/fixpath.exe])
+    fi
+    AC_MSG_RESULT([yes])
+    AC_MSG_CHECKING([if fixpath.exe works])
+    cd $OUTPUT_ROOT
+    $FIXPATH $CC $SRC_ROOT/common/src/fixpath.c -Fe$OUTPUT_ROOT/fixpath2.exe > $OUTPUT_ROOT/fixpath2.log 2>&1 
+    cd $CURDIR
+    if test ! -x $OUTPUT_ROOT/fixpath2.exe; then 
+        AC_MSG_RESULT([no])
+        cat $OUTPUT_ROOT/fixpath2.log
+        AC_MSG_ERROR([fixpath did not work!])
+    fi
+    AC_MSG_RESULT([yes])
+    rm -f $OUTPUT_ROOT/fixpath?.??? $OUTPUT_ROOT/fixpath.obj
+fi
+
+AC_SUBST(FIXPATH)
+])
--- a/common/autoconf/boot-jdk.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/boot-jdk.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -62,9 +62,12 @@
             else
               # We're done! :-)
               BOOT_JDK_FOUND=yes
-              SPACESAFE(BOOT_JDK,[the path to the Boot JDK])
+              BASIC_FIXUP_PATH(BOOT_JDK)
               AC_MSG_CHECKING([for Boot JDK])
-              AC_MSG_RESULT([$BOOT_JDK ($BOOT_JDK_VERSION)])
+              AC_MSG_RESULT([$BOOT_JDK])
+              AC_MSG_CHECKING([Boot JDK version])
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              AC_MSG_RESULT([$BOOT_JDK_VERSION])
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -93,12 +96,8 @@
 AC_DEFUN([BOOTJDK_CHECK_JAVA_HOME],
 [
     if test "x$JAVA_HOME" != x; then
-        if test "x$OPENJDK_TARGET_OS" = xwindows; then
-          # On Windows, JAVA_HOME is likely in DOS-style
-          JAVA_HOME_PROCESSED="`$CYGPATH -u "$JAVA_HOME"`"
-        else
-          JAVA_HOME_PROCESSED="$JAVA_HOME"
-        fi
+        JAVA_HOME_PROCESSED="$JAVA_HOME"
+        BASIC_FIXUP_PATH(JAVA_HOME_PROCESSED)
         if test ! -d "$JAVA_HOME_PROCESSED"; then
             AC_MSG_NOTICE([Your JAVA_HOME points to a non-existing directory!])
         else
@@ -125,8 +124,7 @@
         # Lets find the JDK/JRE directory by following symbolic links.
         # Linux/GNU systems often have links from /usr/bin/java to 
         # /etc/alternatives/java to the real JDK binary.
-        SET_FULL_PATH_SPACESAFE(BINARY)
-        REMOVE_SYMBOLIC_LINKS(BINARY)
+        BASIC_REMOVE_SYMBOLIC_LINKS(BINARY)
         BOOT_JDK=`dirname "$BINARY"`
         BOOT_JDK=`cd "$BOOT_JDK/.."; pwd`
         if test -x "$BOOT_JDK/bin/javac" && test -x "$BOOT_JDK/bin/java"; then
@@ -155,13 +153,17 @@
 [
   BOOT_JDK_PREFIX="$1"
   BOOT_JDK_SUFFIX="$2"
-  BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
-  if test "x$BEST_JDK_FOUND" != x; then
-    BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
-    if test -d "$BOOT_JDK"; then
-      BOOT_JDK_FOUND=maybe
-      AC_MSG_NOTICE([Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)])
-    fi
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+      BOOTJDK_DO_CHECK([
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          AC_MSG_NOTICE([Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)])
+        fi
+      ])
+    done
   fi
 ])
 
@@ -171,7 +173,9 @@
 AC_DEFUN([BOOTJDK_FIND_BEST_JDK_IN_WINDOWS_VIRTUAL_DIRECTORY],
 [
   if test "x[$]$1" != x; then
-    BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([`$CYGPATH -u "[$]$1"`/Java])
+    VIRTUAL_DIR="[$]$1/Java"
+    BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(VIRTUAL_DIR)
+    BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY($VIRTUAL_DIR)
   fi
 ])
 
@@ -187,6 +191,8 @@
   elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
     BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([/Library/Java/JavaVirtualMachines],[/Contents/Home])])
     BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([/System/Library/Java/JavaVirtualMachines],[/Contents/Home])])
+  elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+    BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([/usr/lib/jvm])])
   fi
 ])
 
--- a/common/autoconf/build-aux/config.guess	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/build-aux/config.guess	Wed Jul 05 18:27:34 2017 +0200
@@ -48,6 +48,9 @@
 
 # Test and fix cygwin on x86_64
 echo $OUT | grep 86-pc-cygwin > /dev/null 2> /dev/null
+if test $? != 0; then
+  echo $OUT | grep 86-pc-mingw > /dev/null 2> /dev/null
+fi
 if test $? = 0; then
   case `echo $PROCESSOR_IDENTIFIER | cut -f1 -d' '` in
     intel64|Intel64|INTEL64|em64t|EM64T|amd64|AMD64|8664|x86_64)
--- a/common/autoconf/build-performance.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/build-performance.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -41,6 +41,10 @@
         # Looks like a MacOSX system
         NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk  '{print [$]5}'`
         FOUND_CORES=yes
+    elif test -n "$NUMBER_OF_PROCESSORS"; then
+        # On windows, look in the env
+        NUM_CORES=$NUMBER_OF_PROCESSORS
+        FOUND_CORES=yes
     fi
 
     # For c/c++ code we run twice as many concurrent build
@@ -50,7 +54,8 @@
     if test "x$FOUND_CORES" = xyes; then
         AC_MSG_RESULT([$NUM_CORES])
     else
-        AC_MSG_RESULT([could not detect number of cores, defaulting to 1!])
+        AC_MSG_RESULT([could not detect number of cores, defaulting to 1])
+        AC_MSG_WARN([This will disable all parallelism from build!])
     fi 
 
 ])
@@ -76,16 +81,18 @@
         MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk  '{print [$]2}'`
         MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
         FOUND_MEM=yes
-    elif test "x$build_os" = xwindows; then
+    elif test "x$OPENJDK_BUILD_OS" = xwindows; then
         # Windows, but without cygwin
-        MEMORY_SIZE=`systeminfo | grep 'Total Physical Memory:' | awk '{ print [$]4 }' | sed 's/,//'`
+        MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
+        MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
         FOUND_MEM=yes    
     fi
 
     if test "x$FOUND_MEM" = xyes; then
         AC_MSG_RESULT([$MEMORY_SIZE MB])
     else
-        AC_MSG_RESULT([could not detect memory size defaulting to 1024 MB!])
+        AC_MSG_RESULT([could not detect memory size, defaulting to 1024 MB])
+        AC_MSG_WARN([This might seriously impact build performance!])
     fi 
 ])
 
@@ -123,7 +130,7 @@
 [
     AC_ARG_ENABLE([ccache],
 	      [AS_HELP_STRING([--disable-ccache],
-	      		      [use ccache to speed up recompilations @<:@enabled@:>@])],
+	      		      [disable using ccache to speed up recompilations @<:@enabled@:>@])],
               [ENABLE_CCACHE=${enable_ccache}], [ENABLE_CCACHE=yes])
     if test "x$ENABLE_CCACHE" = xyes; then
         AC_PATH_PROG(CCACHE, ccache)
@@ -196,7 +203,7 @@
 # Can the C/C++ compiler use precompiled headers?
 #
 AC_ARG_ENABLE([precompiled-headers], [AS_HELP_STRING([--disable-precompiled-headers],
-	[use precompiled headers when compiling C++ @<:@enabled@:>@])],
+	[disable using precompiled headers when compiling C++ @<:@enabled@:>@])],
     [ENABLE_PRECOMPH=${enable_precompiled-headers}], [ENABLE_PRECOMPH=yes])
 
 USE_PRECOMPILED_HEADER=1
@@ -228,8 +235,7 @@
 AC_DEFUN_ONCE([BPERF_SETUP_SMART_JAVAC],
 [
 AC_ARG_WITH(sjavac-server-java, [AS_HELP_STRING([--with-sjavac-server-java],
-	[use this java binary for running the sjavac background server and other long running java tasks in the build process,
-     e.g. ---with-sjavac-server-java="/opt/jrockit/bin/java -server"])])
+	[use this java binary for running the sjavac background server @<:@Boot JDK java@:>@])])
 
 if test "x$with_sjavac_server_java" != x; then
     SJAVAC_SERVER_JAVA="$with_sjavac_server_java"
--- a/common/autoconf/builddeps.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/builddeps.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -235,26 +235,13 @@
     [use this configuration file for the builddeps])])
 
 AC_ARG_WITH(builddeps-server, [AS_HELP_STRING([--with-builddeps-server],
-    [download and use build dependencies from this server url, e.g. --with-builddeps-server=ftp://example.com/dir])])
+    [download and use build dependencies from this server url])])
 
 AC_ARG_WITH(builddeps-dir, [AS_HELP_STRING([--with-builddeps-dir],
-    [store downloaded build dependencies here @<:@d/localhome/builddeps@:>@])],
+    [store downloaded build dependencies here @<:@/localhome/builddeps@:>@])],
     [],
     [with_builddeps_dir=/localhome/builddeps])
 
 AC_ARG_WITH(builddeps-group, [AS_HELP_STRING([--with-builddeps-group],
     [chgrp the downloaded build dependencies to this group])])
-
-AC_ARG_ENABLE([list-builddeps], [AS_HELP_STRING([--enable-list-builddeps],
-	[list all build dependencies known to the configure script])],
-	[LIST_BUILDDEPS="${enableval}"], [LIST_BUILDDEPS='no'])
-
-if test "x$LIST_BUILDDEPS" = xyes; then
-    echo
-    echo List of build dependencies known to the configure script,
-    echo that can be used in builddeps.conf files:
-    cat $AUTOCONF_DIR/*.ac $AUTOCONF_DIR/*.m4 | grep BDEPS_CHECK_MODUL[E]\( | cut -f 2 -d ',' | tr -d ' ' | sort
-    echo
-    exit 1
-fi
 ])
--- a/common/autoconf/closed.version.numbers	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/closed.version.numbers	Wed Jul 05 18:27:34 2017 +0200
@@ -26,3 +26,7 @@
 PRODUCT_SUFFIX="SE Runtime Environment"
 JDK_RC_PLATFORM_NAME="Platform SE"
 COMPANY_NAME="Oracle Corporation"
+
+# Might need better names for these
+MACOSX_BUNDLE_NAME_BASE="Java SE"
+MACOSX_BUNDLE_ID_BASE="com.oracle.java"
--- a/common/autoconf/compare.sh.in	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/compare.sh.in	Wed Jul 05 18:27:34 2017 +0200
@@ -40,12 +40,12 @@
 CP="@CP@"
 CUT="@CUT@"
 DIFF="@DIFF@"
-DUMPBIN="@UNCYGDRIVE@ @DUMPBIN@"
+DUMPBIN="@FIXPATH@ @DUMPBIN@"
 EXPR="@EXPR@"
 FILE="@FILE@"
 FIND="@FIND@"
 GREP="@GREP@"
-JAVAP="@UNCYGDRIVE@ @BOOT_JDK@/bin/javap"
+JAVAP="@FIXPATH@ @BOOT_JDK@/bin/javap"
 LDD="@LDD@"
 MKDIR="@MKDIR@"
 NM="@NM@"
@@ -56,6 +56,7 @@
 RM="@RM@"
 SED="@SED@"
 SORT="@SORT@"
+STAT="@STAT@"
 STRIP="@POST_STRIP_CMD@"
 TEE="@TEE@"
 UNIQ="@UNIQ@"
@@ -63,1607 +64,15 @@
 
 SRC_ROOT="@SRC_ROOT@"
 
-if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
-    READELF_CMD="otool -v -V -h -X -t -d"
-elif [ -n "$READELF" ] && [ "$OPENJDK_TARGET_OS" != "windows" ]; then
-    READELF_CMD="$READELF -a"
-fi
-
-if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
-    LDD_CMD="$OTOOL -L"
-elif [ -n "$LDD" ]; then
-    LDD_CMD="$LDD"
-fi
-
-##########################################################################################
-# Diff exceptions
-
-if [ "$OPENJDK_TARGET_OS" = "linux" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
-STRIP_BEFORE_COMPARE="
-./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
-./demo/jvmti/gctest/lib/libgctest.so
-./demo/jvmti/heapTracker/lib/libheapTracker.so
-./demo/jvmti/heapViewer/lib/libheapViewer.so
-./demo/jvmti/hprof/lib/libhprof.so
-./demo/jvmti/minst/lib/libminst.so
-./demo/jvmti/mtrace/lib/libmtrace.so
-./demo/jvmti/versionCheck/lib/libversionCheck.so
-./demo/jvmti/waiters/lib/libwaiters.so
-"
-
-KNOWN_BIN_DIFF="
-"
-
-ACCEPTED_BIN_DIFF="
-./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
-./demo/jvmti/gctest/lib/libgctest.so
-./demo/jvmti/heapTracker/lib/libheapTracker.so
-./demo/jvmti/heapViewer/lib/libheapViewer.so
-./demo/jvmti/hprof/lib/libhprof.so
-./demo/jvmti/minst/lib/libminst.so
-./demo/jvmti/mtrace/lib/libmtrace.so
-./demo/jvmti/versionCheck/lib/libversionCheck.so
-./demo/jvmti/waiters/lib/libwaiters.so
-./jre/lib/amd64/libattach.so
-./jre/lib/amd64/libdt_socket.so
-./jre/lib/amd64/libhprof.so
-./jre/lib/amd64/libinstrument.so
-./jre/lib/amd64/libjava_crw_demo.so
-./jre/lib/amd64/libjsdt.so
-./jre/lib/amd64/libjsig.so
-./jre/lib/amd64/libmanagement.so
-./jre/lib/amd64/libnpt.so
-./jre/lib/amd64/libsaproc.so
-./jre/lib/amd64/libverify.so
-./jre/lib/amd64/server/libjsig.so
-./jre/lib/amd64/server/libjvm.so
-./bin/appletviewer
-./bin/extcheck
-./bin/idlj
-./bin/jar
-./bin/jarsigner
-./bin/java
-./bin/javac
-./bin/javadoc
-./bin/javah
-./bin/javap
-./bin/jcmd
-./bin/jconsole
-./bin/jdb
-./bin/jhat
-./bin/jinfo
-./bin/jmap
-./bin/jps
-./bin/jrunscript
-./bin/jsadebugd
-./bin/jstack
-./bin/jstat
-./bin/jstatd
-./bin/keytool
-./bin/native2ascii
-./bin/orbd
-./bin/pack200
-./bin/policytool
-./bin/rmic
-./bin/rmid
-./bin/rmiregistry
-./bin/schemagen
-./bin/serialver
-./bin/servertool
-./bin/tnameserv
-./bin/wsgen
-./bin/wsimport
-./bin/xjc
-./jre/bin/java
-./jre/bin/keytool
-./jre/bin/orbd
-./jre/bin/pack200
-./jre/bin/policytool
-./jre/bin/rmid
-./jre/bin/rmiregistry
-./jre/bin/servertool
-./jre/bin/tnameserv
-"
-
-KNOWN_SIZE_DIFF="
-"
-
-KNOWN_SYM_DIFF="
-"
-
-KNOWN_ELF_DIFF="
-./demo/jvmti/heapTracker/lib/libheapTracker.so
-./demo/jvmti/hprof/lib/libhprof.so
-./demo/jvmti/waiters/lib/libwaiters.so
-"
-fi
-
-if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "x86" ]; then
-
-STRIP_BEFORE_COMPARE="
-./demo/jni/Poller/lib/libPoller.so
-./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
-./demo/jvmti/gctest/lib/libgctest.so
-./demo/jvmti/heapTracker/lib/libheapTracker.so
-./demo/jvmti/heapViewer/lib/libheapViewer.so
-./demo/jvmti/hprof/lib/libhprof.so
-./demo/jvmti/minst/lib/libminst.so
-./demo/jvmti/mtrace/lib/libmtrace.so
-./demo/jvmti/versionCheck/lib/libversionCheck.so
-./demo/jvmti/waiters/lib/libwaiters.so
-./jre/lib/i386/jexec
-"
-
-SORT_SYMBOLS="
-./jre/lib/i386/client/libjvm.so
-./jre/lib/i386/server/libjvm.so
-"
-
-SKIP_BIN_DIFF="true"
-
-ACCEPTED_SMALL_SIZE_DIFF="
-./demo/jni/Poller/lib/libPoller.so
-./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
-./demo/jvmti/gctest/lib/libgctest.so
-./demo/jvmti/heapTracker/lib/libheapTracker.so
-./demo/jvmti/heapViewer/lib/libheapViewer.so
-./demo/jvmti/hprof/lib/libhprof.so
-./demo/jvmti/minst/lib/libminst.so
-./demo/jvmti/mtrace/lib/libmtrace.so
-./demo/jvmti/versionCheck/lib/libversionCheck.so
-./demo/jvmti/waiters/lib/libwaiters.so
-./jre/lib/i386/client/libjvm.so
-./jre/lib/i386/jli/libjli.so
-./jre/lib/i386/libJdbcOdbc.so
-./jre/lib/i386/libattach.so
-./jre/lib/i386/libawt.so
-./jre/lib/i386/libawt_headless.so
-./jre/lib/i386/libawt_xawt.so
-./jre/lib/i386/libdcpr.so
-./jre/lib/i386/libdt_socket.so
-./jre/lib/i386/libfontmanager.so
-./jre/lib/i386/libhprof.so
-./jre/lib/i386/libinstrument.so
-./jre/lib/i386/libj2gss.so
-./jre/lib/i386/libj2pcsc.so
-./jre/lib/i386/libj2pkcs11.so
-./jre/lib/i386/libj2ucrypto.so
-./jre/lib/i386/libjaas_unix.so
-./jre/lib/i386/libjava.so
-./jre/lib/i386/libjava_crw_demo.so
-./jre/lib/i386/libjawt.so
-./jre/lib/i386/libjdwp.so
-./jre/lib/i386/libjfr.so
-./jre/lib/i386/libjpeg.so
-./jre/lib/i386/libjsdt.so
-./jre/lib/i386/libjsound.so
-./jre/lib/i386/libkcms.so
-./jre/lib/i386/libmanagement.so
-./jre/lib/i386/libmlib_image.so
-./jre/lib/i386/libnet.so
-./jre/lib/i386/libnio.so
-./jre/lib/i386/libnpt.so
-./jre/lib/i386/libsctp.so
-./jre/lib/i386/libsplashscreen.so
-./jre/lib/i386/libsunec.so
-./jre/lib/i386/libsunwjdga.so
-./jre/lib/i386/libt2k.so
-./jre/lib/i386/libunpack.so
-./jre/lib/i386/libverify.so
-./jre/lib/i386/libzip.so
-./jre/lib/i386/server/libjvm.so
-./bin/appletviewer
-./bin/extcheck
-./bin/idlj
-./bin/jar
-./bin/jarsigner
-./bin/java
-./bin/javac
-./bin/javadoc
-./bin/javah
-./bin/javap
-./bin/jcmd
-./bin/jconsole
-./bin/jdb
-./bin/jhat
-./bin/jinfo
-./bin/jmap
-./bin/jps
-./bin/jrunscript
-./bin/jsadebugd
-./bin/jstack
-./bin/jstat
-./bin/jstatd
-./bin/keytool
-./bin/native2ascii
-./bin/orbd
-./bin/pack200
-./bin/policytool
-./bin/rmic
-./bin/rmid
-./bin/rmiregistry
-./bin/schemagen
-./bin/serialver
-./bin/servertool
-./bin/tnameserv
-./bin/unpack200
-./bin/wsgen
-./bin/wsimport
-./bin/xjc
-./jre/bin/java
-./jre/bin/keytool
-./jre/bin/orbd
-./jre/bin/pack200
-./jre/bin/policytool
-./jre/bin/rmid
-./jre/bin/rmiregistry
-./jre/bin/servertool
-./jre/bin/tnameserv
-./jre/bin/unpack200
-./jre/lib/i386/jexec
-"
-
-SKIP_ELF_DIFF="true"
-
-# libjvm.so differs in the random 15 char prefix on some symbols.
-ACCEPTED_DIS_DIFF="
-./jre/lib/i386/client/libjvm.so
-./jre/lib/i386/server/libjvm.so
-"
-
-fi
-
-if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
-
-STRIP_BEFORE_COMPARE="
-./demo/jni/Poller/lib/amd64/libPoller.so
-./demo/jvmti/compiledMethodLoad/lib/amd64/libcompiledMethodLoad.so
-./demo/jvmti/gctest/lib/amd64/libgctest.so
-./demo/jvmti/heapTracker/lib/amd64/libheapTracker.so
-./demo/jvmti/heapViewer/lib/amd64/libheapViewer.so
-./demo/jvmti/hprof/lib/amd64/libhprof.so
-./demo/jvmti/minst/lib/amd64/libminst.so
-./demo/jvmti/mtrace/lib/amd64/libmtrace.so
-./demo/jvmti/versionCheck/lib/amd64/libversionCheck.so
-./demo/jvmti/waiters/lib/amd64/libwaiters.so
-"
-
-SORT_SYMBOLS="
-./jre/lib/amd64/server/libjvm.so
-"
-
-SKIP_BIN_DIFF="true"
-
-ACCEPTED_SMALL_SIZE_DIFF="
-./demo/jni/Poller/lib/amd64/libPoller.so
-./demo/jvmti/compiledMethodLoad/lib/amd64/libcompiledMethodLoad.so
-./demo/jvmti/gctest/lib/amd64/libgctest.so
-./demo/jvmti/heapTracker/lib/amd64/libheapTracker.so
-./demo/jvmti/heapViewer/lib/amd64/libheapViewer.so
-./demo/jvmti/hprof/lib/amd64/libhprof.so
-./demo/jvmti/minst/lib/amd64/libminst.so
-./demo/jvmti/mtrace/lib/amd64/libmtrace.so
-./demo/jvmti/versionCheck/lib/amd64/libversionCheck.so
-./demo/jvmti/waiters/lib/amd64/libwaiters.so
-./jre/lib/amd64/jli/libjli.so
-./jre/lib/amd64/libJdbcOdbc.so
-./jre/lib/amd64/libattach.so
-./jre/lib/amd64/libawt.so
-./jre/lib/amd64/libawt_headless.so
-./jre/lib/amd64/libawt_xawt.so
-./jre/lib/amd64/libdcpr.so
-./jre/lib/amd64/libdt_socket.so
-./jre/lib/amd64/libfontmanager.so
-./jre/lib/amd64/libhprof.so
-./jre/lib/amd64/libinstrument.so
-./jre/lib/amd64/libj2gss.so
-./jre/lib/amd64/libj2pcsc.so
-./jre/lib/amd64/libj2pkcs11.so
-./jre/lib/amd64/libj2ucrypto.so
-./jre/lib/amd64/libjaas_unix.so
-./jre/lib/amd64/libjava.so
-./jre/lib/amd64/libjava_crw_demo.so
-./jre/lib/amd64/libjawt.so
-./jre/lib/amd64/libjdwp.so
-./jre/lib/amd64/libjfr.so
-./jre/lib/amd64/libjpeg.so
-./jre/lib/amd64/libjsdt.so
-./jre/lib/amd64/libjsound.so
-./jre/lib/amd64/libkcms.so
-./jre/lib/amd64/libmanagement.so
-./jre/lib/amd64/libmlib_image.so
-./jre/lib/amd64/libnet.so
-./jre/lib/amd64/libnio.so
-./jre/lib/amd64/libnpt.so
-./jre/lib/amd64/libsctp.so
-./jre/lib/amd64/libsplashscreen.so
-./jre/lib/amd64/libsunec.so
-./jre/lib/amd64/libsunwjdga.so
-./jre/lib/amd64/libt2k.so
-./jre/lib/amd64/libunpack.so
-./jre/lib/amd64/libverify.so
-./jre/lib/amd64/libzip.so
-./jre/lib/amd64/server/64/libjvm_db.so
-./jre/lib/amd64/server/64/libjvm_dtrace.so
-./bin/amd64/appletviewer
-./bin/amd64/extcheck
-./bin/amd64/idlj
-./bin/amd64/jar
-./bin/amd64/jarsigner
-./bin/amd64/java
-./bin/amd64/javac
-./bin/amd64/javadoc
-./bin/amd64/javah
-./bin/amd64/javap
-./bin/amd64/jcmd
-./bin/amd64/jconsole
-./bin/amd64/jdb
-./bin/amd64/jhat
-./bin/amd64/jinfo
-./bin/amd64/jmap
-./bin/amd64/jps
-./bin/amd64/jrunscript
-./bin/amd64/jsadebugd
-./bin/amd64/jstack
-./bin/amd64/jstat
-./bin/amd64/jstatd
-./bin/amd64/keytool
-./bin/amd64/native2ascii
-./bin/amd64/orbd
-./bin/amd64/pack200
-./bin/amd64/policytool
-./bin/amd64/rmic
-./bin/amd64/rmid
-./bin/amd64/rmiregistry
-./bin/amd64/schemagen
-./bin/amd64/serialver
-./bin/amd64/servertool
-./bin/amd64/tnameserv
-./bin/amd64/unpack200
-./bin/amd64/wsgen
-./bin/amd64/wsimport
-./bin/amd64/xjc
-./jre/bin/amd64/java
-./jre/bin/amd64/keytool
-./jre/bin/amd64/orbd
-./jre/bin/amd64/pack200
-./jre/bin/amd64/policytool
-./jre/bin/amd64/rmid
-./jre/bin/amd64/rmiregistry
-./jre/bin/amd64/servertool
-./jre/bin/amd64/tnameserv
-./jre/bin/amd64/unpack200
-./jre/lib/amd64/jexec
-"
-
-SKIP_ELF_DIFF="true"
-
-# Can't find an explaination for the diff in libmlib_image.so.
-KNOWN_DIS_DIFF="
-./jre/lib/amd64/libmlib_image.so
-"
-# libjvm.so differs in the random 15 char prefix on some symbols.
-ACCEPTED_DIS_DIFF="
-./jre/lib/amd64/server/libjvm.so
-"
-
-fi
-
-if [ "$OPENJDK_TARGET_OS" = "windows" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
-
-ACCEPTED_BIN_DIFF="
-./bin/jli.dll
-./demo/jvmti/compiledMethodLoad/lib/compiledMethodLoad.dll
-./demo/jvmti/gctest/lib/gctest.dll
-./demo/jvmti/heapTracker/lib/heapTracker.dll
-./demo/jvmti/heapViewer/lib/heapViewer.dll
-./demo/jvmti/hprof/lib/hprof.dll
-./demo/jvmti/minst/lib/minst.dll
-./demo/jvmti/mtrace/lib/mtrace.dll
-./demo/jvmti/versionCheck/lib/versionCheck.dll
-./demo/jvmti/waiters/lib/waiters.dll
-./jre/bin/attach.dll
-./jre/bin/awt.dll
-./jre/bin/dcpr.dll
-./jre/bin/dt_shmem.dll
-./jre/bin/dt_socket.dll
-./jre/bin/fontmanager.dll
-./jre/bin/hprof.dll
-./jre/bin/instrument.dll
-./jre/bin/j2pcsc.dll
-./jre/bin/j2pkcs11.dll
-./jre/bin/jaas_nt.dll
-./jre/bin/java.dll
-./jre/bin/java_crw_demo.dll
-./jre/bin/jawt.dll
-./jre/bin/JdbcOdbc.dll
-./jre/bin/jdwp.dll
-./jre/bin/jfr.dll
-./jre/bin/jli.dll
-./jre/bin/jpeg.dll
-./jre/bin/jsdt.dll
-./jre/bin/jsound.dll
-./jre/bin/jsoundds.dll
-./jre/bin/kcms.dll
-./jre/bin/management.dll
-./jre/bin/mlib_image.dll
-./jre/bin/net.dll
-./jre/bin/nio.dll
-./jre/bin/npt.dll
-./jre/bin/sawindbg.dll
-./jre/bin/server/jvm.dll
-./jre/bin/splashscreen.dll
-./jre/bin/sunec.dll
-./jre/bin/sunmscapi.dll
-./jre/bin/t2k.dll
-./jre/bin/unpack.dll
-./jre/bin/verify.dll
-./jre/bin/w2k_lsa_auth.dll
-./jre/bin/zip.dll
-./bin/appletviewer.exe
-./bin/extcheck.exe
-./bin/idlj.exe
-./bin/jar.exe
-./bin/jarsigner.exe
-./bin/java.exe
-./bin/javac.exe
-./bin/javadoc.exe
-./bin/javah.exe
-./bin/javap.exe
-./bin/java-rmi.exe
-./bin/javaw.exe
-./bin/jcmd.exe
-./bin/jconsole.exe
-./bin/jdb.exe
-./bin/jhat.exe
-./bin/jinfo.exe
-./bin/jmap.exe
-./bin/jps.exe
-./bin/jrunscript.exe
-./bin/jsadebugd.exe
-./bin/jstack.exe
-./bin/jstat.exe
-./bin/jstatd.exe
-./bin/keytool.exe
-./bin/kinit.exe
-./bin/klist.exe
-./bin/ktab.exe
-./bin/native2ascii.exe
-./bin/orbd.exe
-./bin/pack200.exe
-./bin/policytool.exe
-./bin/rmic.exe
-./bin/rmid.exe
-./bin/rmiregistry.exe
-./bin/schemagen.exe
-./bin/serialver.exe
-./bin/servertool.exe
-./bin/tnameserv.exe
-./bin/unpack200.exe
-./bin/wsgen.exe
-./bin/wsimport.exe
-./bin/xjc.exe
-./jre/bin/java.exe
-./jre/bin/java-rmi.exe
-./jre/bin/javaw.exe
-./jre/bin/keytool.exe
-./jre/bin/kinit.exe
-./jre/bin/klist.exe
-./jre/bin/ktab.exe
-./jre/bin/orbd.exe
-./jre/bin/pack200.exe
-./jre/bin/policytool.exe
-./jre/bin/rmid.exe
-./jre/bin/rmiregistry.exe
-./jre/bin/servertool.exe
-./jre/bin/tnameserv.exe
-./jre/bin/unpack200.exe
-"
-
-KNOWN_SIZE_DIFF="
-./demo/jvmti/heapTracker/lib/heapTracker.dll
-./demo/jvmti/minst/lib/minst.dll
-./jre/bin/awt.dll
-./jre/bin/java_crw_demo.dll
-./bin/java.exe
-./bin/javaw.exe
-./bin/unpack200.exe
-./jre/bin/java.exe
-./jre/bin/javaw.exe
-./jre/bin/unpack200.exe
-"
-
-KNOWN_SYM_DIFF="
-./jre/bin/awt.dll
-./jre/bin/java_crw_demo.dll
-"
-fi
-
-
-
-if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
-ACCEPTED_JARZIP_CONTENTS="
-/META-INF/INDEX.LIST
-"
-
-KNOWN_BIN_DIFF="
-./jre/lib/libJObjC.dylib
-./jre/lib/libsaproc.dylib
-./jre/lib/server/libjvm.dylib
-"
-
-ACCEPTED_BIN_DIFF="
-./bin/appletviewer
-./bin/extcheck
-./bin/idlj
-./bin/jar
-./bin/jarsigner
-./bin/java
-./bin/javac
-./bin/javadoc
-./bin/javah
-./bin/javap
-./bin/jcmd
-./bin/jconsole
-./bin/jdb
-./bin/jhat
-./bin/jinfo
-./bin/jmap
-./bin/jps
-./bin/jrunscript
-./bin/jsadebugd
-./bin/jstack
-./bin/jstat
-./bin/jstatd
-./bin/keytool
-./bin/native2ascii
-./bin/orbd
-./bin/pack200
-./bin/policytool
-./bin/rmic
-./bin/rmid
-./bin/rmiregistry
-./bin/schemagen
-./bin/serialver
-./bin/servertool
-./bin/tnameserv
-./bin/wsgen
-./bin/wsimport
-./bin/xjc
-./jre/bin/java
-./jre/bin/keytool
-./jre/bin/orbd
-./jre/bin/pack200
-./jre/bin/policytool
-./jre/bin/rmid
-./jre/bin/rmiregistry
-./jre/bin/servertool
-./jre/bin/tnameserv
-"
-
-KNOWN_SIZE_DIFF="
-./jre/lib/libJObjC.dylib
-./jre/lib/server/libjvm.dylib
-"
-
-KNOWN_SYM_DIFF="
-./jre/lib/libJObjC.dylib
-./jre/lib/server/libjvm.dylib
-"
-
-KNOWN_ELF_DIFF="
-./jre/lib/libJObjC.dylib
-./jre/lib/server/libjvm.dylib
-"
-
-SKIP_DIS_DIFF="true"
-
+if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+    PATH="@VS_PATH@"
 fi
 
-##########################################################################################
-# Compare text files and ignore specific differences:
-#
-#  * Timestamps in Java sources generated by idl2java
-#  * Sorting order and cleanup style in .properties files
-
-diff_text() {
-    OTHER_FILE=$1
-    THIS_FILE=$2
-
-    SUFFIX="${THIS_FILE##*.}"
-
-    TMP=1
-
-    if [[ "$THIS_FILE" = *"META-INF/MANIFEST.MF" ]]; then
-        TMP=$(LANG=C $DIFF $OTHER_FILE $THIS_FILE | \
-            $GREP '^[<>]' | \
-            $SED -e '/[<>] Ant-Version: Apache Ant .*/d' \
-	         -e '/[<>] Created-By: .* (Oracle Corporation).*/d')
-    fi
-    if test "x$SUFFIX" = "xjava"; then
-        TMP=$(LANG=C $DIFF $OTHER_FILE $THIS_FILE | \
-            $GREP '^[<>]' | \
-            $SED -e '/[<>] \* from.*\.idl/d' \
-                 -e '/[<>] \*.*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
-                 -e '/[<>] \*.*[0-9]\{4\} [0-9][0-9]*:[0-9]\{2\}:[0-9]\{2\}.*/d' \
-                 -e '/\/\/ Generated from input file.*/d' \
-                 -e '/\/\/ This file was generated AUTOMATICALLY from a template file.*/d' \
-                 -e '/\/\/ java GenerateCharacter.*/d')
-    fi
-    # Ignore date strings in class files.
-    # On Macosx the system sources for generated java classes produce different output on 
-    # consequtive invokations seemingly randomly.
-    # For example a method parameter randomly named "thePoint" or "aPoint". Ignore this.
-    if test "x$SUFFIX" = "xclass"; then
-        $JAVAP -c -constants -l -p ${OTHER_FILE} >  ${OTHER_FILE}.javap
-        $JAVAP -c -constants -l -p ${THIS_FILE} > ${THIS_FILE}.javap
-        TMP=$($DIFF ${OTHER_FILE}.javap ${THIS_FILE}.javap | \
-            $GREP '^[<>]' | \
-            $SED -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
-	         -e '/[<>].*Point   Lcom\/apple\/jobjc\/foundation\/NSPoint;/d' \
-	         -e '/[<>].*public com\.apple\.jobjc\.Pointer<com\.apple\.jobjc\..*itemsPtr();/d' \
-	         -e '/[<>].*public void setItemsPtr(com\.apple\.jobjc\.Pointer<com\.apple\.jobjc\..*);/d')
-    fi
-    if test "x$SUFFIX" = "xproperties"; then
-        $CAT $OTHER_FILE | $SED -e 's/\([^\\]\):/\1\\:/g' -e  's/\([^\\]\)=/\1\\=/g' -e 's/#.*/#/g' \
-            | $SED -f "$SRC_ROOT/common/bin/unicode2x.sed" \
-  	    | $SED -e '/^#/d' -e '/^$/d' \
-            -e :a -e '/\\$/N; s/\\\n//; ta' \
-  	    -e 's/^[ \t]*//;s/[ \t]*$//' \
-	    -e 's/\\=/=/' | LANG=C $SORT > $OTHER_FILE.cleaned
-        TMP=$(LANG=C $DIFF $OTHER_FILE.cleaned $THIS_FILE)
-    fi
-    if test -n "$TMP"; then
-        echo Files $OTHER_FILE and $THIS_FILE differ
-        return 1
-    fi
-
-    return 0
-}
-
-##########################################################################################
-# Compare directory structure
-
-compare_dirs() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-
-    mkdir -p $WORK_DIR
-
-    (cd $OTHER_DIR && $FIND . -type d | $SORT > $WORK_DIR/other_dirs)
-    (cd $THIS_DIR && $FIND . -type d | $SORT > $WORK_DIR/this_dirs)
-    
-    echo -n Directory structure...
-    if $DIFF $WORK_DIR/other_dirs $WORK_DIR/this_dirs > /dev/null; then
-        echo Identical!
-    else
-        echo Differences found.
-        REGRESSIONS=true
-    # Differences in directories found.
-        ONLY_OTHER=$($DIFF $WORK_DIR/other_dirs $WORK_DIR/this_dirs | $GREP '<')
-        if [ "$ONLY_OTHER" ]; then
-            echo Only in $OTHER
-            echo $ONLY_OTHER | $SED 's|< ./|\t|g' | $SED 's/ /\n/g'
-        fi
-    # Differences in directories found.
-        ONLY_THIS=$($DIFF $WORK_DIR/other_dirs $WORK_DIR/this_dirs | $GREP '>')
-        if [ "$ONLY_THIS" ]; then
-            echo Only in $THIS
-            echo $ONLY_THIS | $SED 's|> ./|\t|g' | $SED 's/ /\n/g'
-        fi
-    fi
-}
-
-
-##########################################################################################
-# Compare file structure
-
-compare_files() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-
-    mkdir -p $WORK_DIR
-
-    (cd $OTHER_DIR && $FIND . -type f | $SORT > $WORK_DIR/other_files)
-    (cd $THIS_DIR && $FIND . -type f | $SORT > $WORK_DIR/this_files)
-    
-    echo -n File names...
-    if diff $WORK_DIR/other_files $WORK_DIR/this_files > /dev/null; then
-        echo Identical!
-    else
-        echo Differences found.
-        REGRESSIONS=true
-    # Differences in directories found.
-        ONLY_OTHER=$(diff $WORK_DIR/other_files $WORK_DIR/this_files | $GREP '<')
-        if [ "$ONLY_OTHER" ]; then
-            echo Only in $OTHER
-            echo "$ONLY_OTHER" | sed 's|< ./|    |g'
-        fi
-    # Differences in directories found.
-        ONLY_THIS=$(diff $WORK_DIR/other_files $WORK_DIR/this_files | $GREP '>')
-        if [ "$ONLY_THIS" ]; then
-            echo Only in $THIS
-            echo "$ONLY_THIS" | sed 's|> ./|    |g'
-        fi
-    fi
-}
-
-
-##########################################################################################
-# Compare permissions
-
-compare_permissions() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-
-    mkdir -p $WORK_DIR
-
-    echo -n Permissions...
-    found=""
-    for f in `cd $OTHER_DIR && $FIND . -type f`
-    do
-        if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
-        if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
-        OP=`ls -l ${OTHER_DIR}/$f | awk '{printf("%.10s\n", $1);}'`
-        TP=`ls -l ${THIS_DIR}/$f | awk '{printf("%.10s\n", $1);}'`
-        if [ "$OP" != "$TP" ]
-        then
-	    if [ -z "$found" ]; then echo ; found="yes"; fi
-	    $PRINTF "\told: ${OP} new: ${TP}\t$f\n"
-        fi
-    done
-    if [ -z "$found" ]; then 
-        echo "Identical!"
-    else
-        REGRESSIONS=true
-    fi
-}
-
-##########################################################################################
-# Compare file command output
-
-compare_file_types() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-
-    $MKDIR -p $WORK_DIR
-
-    echo -n File types...
-    found=""
-    for f in `cd $OTHER_DIR && $FIND . -type f`
-    do
-        if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
-        if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
-        OF=`cd ${OTHER_DIR} && $FILE $f`
-        TF=`cd ${THIS_DIR} && $FILE $f`
-        if [ "$f" = "./src.zip" ] || [ "$f" = "./jre/lib/JObjC.jar" ] || [ "$f" = "./lib/JObjC.jar" ]
-        then
-	    if [ "`echo $OF | $GREP -ic zip`" -gt 0 -a "`echo $TF | $GREP -ic zip`" -gt 0 ]
-	    then
-	        # the way we produces zip-files make it so that directories are stored in old file
-	        # but not in new (only files with full-path)
-	        # this makes file-5.09 report them as different
-	        continue;
-	    fi
-        fi
-        
-        if [ "$OF" != "$TF" ]
-        then
-	    if [ -z "$found" ]; then echo ; found="yes"; fi
-	    $PRINTF "\tother: ${OF}\n\tthis : ${TF}\n"
-        fi
-    done
-    if [ -z "$found" ]; then 
-        echo "Identical!"
-    else
-        REGRESSIONS=true
-    fi
-}
-
-##########################################################################################
-# Compare the rest of the files
-
-compare_general_files() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-    
-    GENERAL_FILES=$(cd $THIS_DIR && $FIND . -type f ! -name "*.so" ! -name "*.jar" ! -name "*.zip" \
-        ! -name "*.debuginfo" ! -name "*.dylib" ! -name "jexec" \
-        ! -name "ct.sym" ! -name "*.diz" ! -name "*.dll" \
-        ! -name "*.pdb" ! -name "*.exp" ! -name "*.ilk" \
-        ! -name "*.lib" \
-        | $GREP -v "./bin/"  | $SORT | $FILTER)
-
-    echo General files...
-    for f in $GENERAL_FILES
-    do
-        if [ -e $OTHER_DIR/$f ]; then
-            DIFF_OUT=$($DIFF $OTHER_DIR/$f $THIS_DIR/$f 2>&1)
-            if [ -n "$DIFF_OUT" ]; then
-                echo $f
-                REGRESSIONS=true
-                if [ "$SHOW_DIFFS" = "true" ]; then
-                    echo "$DIFF_OUT"
-                fi
-            fi
-        fi
-    done
-
-
-}
-
-##########################################################################################
-# Compare zip file
-
-compare_zip_file() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-    ZIP_FILE=$4
-
-    THIS_ZIP=$THIS_DIR/$ZIP_FILE
-    OTHER_ZIP=$OTHER_DIR/$ZIP_FILE
-
-    THIS_SUFFIX="${THIS_ZIP##*.}"
-    OTHER_SUFFIX="${OTHER_ZIP##*.}"
-    if [ "$THIS_SUFFIX" != "$OTHER_SUFFIX" ]; then
-        echo The files do not have the same suffix type!
-        return 2
-    fi
-
-    UNARCHIVE="$UNZIP -q"
-
-    TYPE="$THIS_SUFFIX"
-
-    if $CMP $OTHER_ZIP $THIS_ZIP > /dev/null
-    then
-        return 0
-    fi
-    # Not quite identical, the might still contain the same data.
-    # Unpack the jar/zip files in temp dirs
-    
-    THIS_UNZIPDIR=$WORK_DIR/$ZIP_FILE.this
-    OTHER_UNZIPDIR=$WORK_DIR/$ZIP_FILE.other
-    $RM -rf $THIS_UNZIPDIR $OTHER_UNZIPDIR
-    $MKDIR -p $THIS_UNZIPDIR
-    $MKDIR -p $OTHER_UNZIPDIR
-    (cd $THIS_UNZIPDIR && $UNARCHIVE $THIS_ZIP)
-    (cd $OTHER_UNZIPDIR && $UNARCHIVE $OTHER_ZIP)
-
-    CONTENTS_DIFF_FILE=$WORK_DIR/$ZIP_FILE.diff
-    LANG=C $DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
-
-    ONLY_OTHER=$($GREP "^Only in $OTHER_UNZIPDIR" $CONTENTS_DIFF_FILE)
-    ONLY_THIS=$($GREP "^Only in $THIS_UNZIPDIR" $CONTENTS_DIFF_FILE)
-
-    return_value=0
-
-    if [ -n "$ONLY_OTHER" ]; then
-        echo "        Only OTHER $ZIP_FILE contains:"
-        echo "$ONLY_OTHER" | sed "s|Only in $OTHER_UNZIPDIR|            |"g | sed 's|: |/|g'
-        return_value=1
-    fi
-
-    if [ -n "$ONLY_THIS" ]; then
-        echo "        Only THIS $ZIP_FILE contains:"
-        echo "$ONLY_THIS" | sed "s|Only in $THIS_UNZIPDIR|            |"g | sed 's|: |/|g'
-        return_value=1
-    fi
-
-    DIFFING_FILES=$($GREP differ $CONTENTS_DIFF_FILE | $CUT -f 2 -d ' ' | $SED "s|$OTHER_UNZIPDIR/||g")
-
-    $RM -f $WORK_DIR/$ZIP_FILE.diffs
-    for file in $DIFFING_FILES; do
-	if [[ "$ACCEPTED_JARZIP_CONTENTS" != *"$file"* ]]; then
-            diff_text $OTHER_UNZIPDIR/$file $THIS_UNZIPDIR/$file >> $WORK_DIR/$ZIP_FILE.diffs
-	fi
-    done
-
-    if [ -s "$WORK_DIR/$ZIP_FILE.diffs" ]; then
-        return_value=1
-        echo "        Differing files in $ZIP_FILE"
-        $CAT $WORK_DIR/$ZIP_FILE.diffs | $GREP differ | cut -f 2 -d ' ' | \
-            $SED "s|$OTHER_UNZIPDIR|            |g" > $WORK_DIR/$ZIP_FILE.difflist
-        $CAT $WORK_DIR/$ZIP_FILE.difflist
-
-        if [ -n "$SHOW_DIFFS" ]; then
-            for i in $(cat $WORK_DIR/$ZIP_FILE.difflist) ; do
-                if [ -f "${OTHER_UNZIPDIR}/$i.javap" ]; then
-                    LANG=C $DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
-                elif [ -f "${OTHER_UNZIPDIR}/$i.cleaned" ]; then
-                    LANG=C $DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
-                else
-                    LANG=C $DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
-                fi
-            done
-        fi
-    fi
-
-    return $return_value
-}
-
-
-##########################################################################################
-# Compare all zip files
-
-compare_all_zip_files() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-
-    ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" | $SORT | $FILTER )
-
-    if [ -n "$ZIPS" ]; then
-        echo Zip files...
-
-        return_value=0
-        for f in $ZIPS; do
-            if [ -f "$OTHER_DIR/$f" ]; then
-                compare_zip_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
-                if [ "$?" != "0" ]; then
-                    return_value=1
-                    REGRESSIONS=true
-                fi
-            fi
-        done
-    fi
-
-    return $return_value
-}
-
-##########################################################################################
-# Compare all jar files
-
-compare_all_jar_files() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-
-    # TODO filter?
-    ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.jar" | $SORT | $FILTER)
-
-    if [ -n "$ZIPS" ]; then
-        echo Jar files...
-
-        return_value=0
-        for f in $ZIPS; do
-            if [ -f "$OTHER_DIR/$f" ]; then
-                compare_zip_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
-                if [ "$?" != "0" ]; then
-                    return_value=1
-                    REGRESSIONS=true
-                fi
-            fi
-        done
-    fi
-
-    return $return_value
-}
-
-##########################################################################################
-# Compare binary (executable/library) file
-
-compare_bin_file() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-    BIN_FILE=$4
-
-    THIS_FILE=$THIS_DIR/$BIN_FILE
-    OTHER_FILE=$OTHER_DIR/$BIN_FILE
-    NAME=$(basename $BIN_FILE)
-    WORK_FILE_BASE=$WORK_DIR/$BIN_FILE
-    FILE_WORK_DIR=$(dirname $WORK_FILE_BASE)
-
-    $MKDIR -p $FILE_WORK_DIR
-
-    ORIG_THIS_FILE="$THIS_FILE"
-    ORIG_OTHER_FILE="$OTHER_FILE"
-
-    if [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then
-        THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME
-        OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME
-        $MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other
-        $CP $THIS_FILE $THIS_STRIPPED_FILE
-        $CP $OTHER_FILE $OTHER_STRIPPED_FILE
-        $STRIP $THIS_STRIPPED_FILE
-        $STRIP $OTHER_STRIPPED_FILE
-        THIS_FILE="$THIS_STRIPPED_FILE"
-        OTHER_FILE="$OTHER_STRIPPED_FILE"
-    fi
-
-    if [ -z "$SKIP_BIN_DIFF" ]; then
-        if cmp $OTHER_FILE $THIS_FILE > /dev/null; then
-        # The files were bytewise identical.
-            if [ -n "$VERBOSE" ]; then
-                echo "        :           :         :         :          : $BIN_FILE"
-            fi
-            return 0
-        fi
-        BIN_MSG=" diff "
-        if [[ "$ACCEPTED_BIN_DIFF" != *"$BIN_FILE"* ]]; then
-            DIFF_BIN=true
-            if [[ "$KNOWN_BIN_DIFF" != *"$BIN_FILE"* ]]; then
-                BIN_MSG="*$BIN_MSG*"
-                REGRESSIONS=true
-            else
-                BIN_MSG=" $BIN_MSG "
-            fi
-        else
-            BIN_MSG="($BIN_MSG)"
-            DIFF_BIN=
-        fi
-    fi
-
-    THIS_SIZE=$(ls -l "$THIS_FILE" | awk '{ print $5 }')
-    OTHER_SIZE=$(ls -l "$OTHER_FILE" | awk '{ print $5 }')
-    if [ $THIS_SIZE -ne $OTHER_SIZE ]; then
-        DIFF_SIZE_NUM=$($EXPR $THIS_SIZE - $OTHER_SIZE)
-        DIFF_SIZE_REL=$($EXPR $THIS_SIZE \* 100 / $OTHER_SIZE)
-        SIZE_MSG=$($PRINTF "%3d%% %4d" $DIFF_SIZE_REL $DIFF_SIZE_NUM)
-        if [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] && [ "$DIFF_SIZE_REL" -gt 98 ] && [ "$DIFF_SIZE_REL" -lt 102 ]; then
-            SIZE_MSG="($SIZE_MSG)"
-            DIFF_SIZE=
-        else
-            if [[ "$ACCEPTED_SIZE_DIFF" != *"$BIN_FILE"* ]]; then
-                DIFF_SIZE=true
-                if [[ "$KNOWN_SIZE_DIFF" != *"$BIN_FILE"* ]]; then
-                    SIZE_MSG="*$SIZE_MSG*"
-                    REGRESSIONS=true
-                else
-                    SIZE_MSG=" $SIZE_MSG "
-                fi
-            else
-                SIZE_MSG="($SIZE_MSG)"
-                DIFF_SIZE=
-            fi
-        fi
-    else
-        SIZE_MSG="           "
-        DIFF_SIZE=
-        if [[ "$KNOWN_SIZE_DIFF $ACCEPTED_SIZE_DIFF" = *"$BIN_FILE"* ]]; then
-            SIZE_MSG="     !     "
-        fi
-    fi
-
-    if [[ "$SORT_SYMBOLS" = *"$BIN_FILE"* ]]; then
-        SYM_SORT_CMD="sort"
-    else
-        SYM_SORT_CMD="cat"
-    fi
-
-    # Check symbols
-    if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
-	$DUMPBIN -exports $OTHER_FILE | $GREP " = " | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
-	$DUMPBIN -exports $THIS_FILE  | $GREP " = " | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
-    elif [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
-        # Some symbols get seemingly random 15 character prefixes. Filter them out.
-        $NM -a $ORIG_OTHER_FILE | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SED 's/^\([a-zA-Z] \.\)[a-zA-Z0-9_\$]\{15,15\}\./\1./g' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
-	$NM -a $ORIG_THIS_FILE  | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SED 's/^\([a-zA-Z] \.\)[a-zA-Z0-9_\$]\{15,15\}\./\1./g' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
-    else
-	$NM -a $ORIG_OTHER_FILE | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
-	$NM -a $ORIG_THIS_FILE  | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
-    fi
-    
-    LANG=C $DIFF $WORK_FILE_BASE.symbols.other $WORK_FILE_BASE.symbols.this > $WORK_FILE_BASE.symbols.diff
-    if [ -s $WORK_FILE_BASE.symbols.diff ]; then
-        SYM_MSG=" diff  "
-        if [[ "$ACCEPTED_SYM_DIFF" != *"$BIN_FILE"* ]]; then
-            DIFF_SYM=true
-            if [[ "$KNOWN_SYM_DIFF" != *"$BIN_FILE"* ]]; then
-                SYM_MSG="*$SYM_MSG*"
-                REGRESSIONS=true
-            else
-                SYM_MSG=" $SYM_MSG "
-            fi
-        else
-            SYM_MSG="($SYM_MSG)"            
-            DIFF_SYM=
-        fi
-    else
-        SYM_MSG="         "
-        DIFF_SYM=
-        if [[ "$KNOWN_SYM_DIFF $ACCEPTED_SYM_DIFF" = *"$BIN_FILE"* ]]; then
-            SYM_MSG="    !    "
-        fi
-    fi
-
-    # Check dependencies
-    if [ -n "$LDD_CMD" ];then
-	(cd $FILE_WORK_DIR && $CP $OTHER_FILE . && $LDD_CMD $NAME | $AWK '{ print $1;}' | $SORT | $TEE $WORK_FILE_BASE.deps.other | $UNIQ > $WORK_FILE_BASE.deps.other.uniq)
-	(cd $FILE_WORK_DIR && $CP $THIS_FILE . && $LDD_CMD $NAME | $AWK '{ print $1;}' | $SORT | $TEE $WORK_FILE_BASE.deps.this | $UNIQ > $WORK_FILE_BASE.deps.this.uniq)
-	(cd $FILE_WORK_DIR && $RM -f $NAME)
-	
-	LANG=C $DIFF $WORK_FILE_BASE.deps.other $WORK_FILE_BASE.deps.this > $WORK_FILE_BASE.deps.diff
-	LANG=C $DIFF $WORK_FILE_BASE.deps.other.uniq $WORK_FILE_BASE.deps.this.uniq > $WORK_FILE_BASE.deps.diff.uniq
-	
-	if [ -s $WORK_FILE_BASE.deps.diff ]; then
-            if [ -s $WORK_FILE_BASE.deps.diff.uniq ]; then
-		DEP_MSG=" diff  "
-            else
-		DEP_MSG=" redun "
-            fi
-            if [[ "$ACCEPTED_DEP_DIFF" != *"$BIN_FILE"* ]]; then
-		DIFF_DEP=true
-		if [[ "$KNOWN_DEP_DIFF" != *"$BIN_FILE"* ]]; then
-                    DEP_MSG="*$DEP_MSG*"
-                    REGRESSIONS=true
-		else
-                    DEP_MSG=" $DEP_MSG "
-		fi
-            else
-		DEP_MSG="($DEP_MSG)"
-		DIFF_DEP=
-            fi
-	else
-	    DEP_MSG="         "
-	    DIFF_DEP=
-            if [[ "$KNOWN_DEP_DIFF $ACCEPTED_DEP_DIFF" = *"$BIN_FILE"* ]]; then
-                DEP_MSG="     !      "
-            fi
-	fi
-    fi
-    
-    # Compare readelf output
-    if [ -n "$READELF_CMD" ] && [ -z "$SKIP_ELF_DIFF" ]; then
-        $READELF_CMD $OTHER_FILE > $WORK_FILE_BASE.readelf.other 2>&1
-        $READELF_CMD $THIS_FILE > $WORK_FILE_BASE.readelf.this 2>&1
-        
-        LANG=C $DIFF $WORK_FILE_BASE.readelf.other $WORK_FILE_BASE.readelf.this > $WORK_FILE_BASE.readelf.diff
-        
-        if [ -s $WORK_FILE_BASE.readelf.diff ]; then
-            ELF_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.readelf.diff | awk '{print $5}')
-            ELF_MSG=$($PRINTF "%8d" $ELF_DIFF_SIZE)
-            if [[ "$ACCEPTED_ELF_DIFF" != *"$BIN_FILE"* ]]; then
-                DIFF_ELF=true
-                if [[ "$KNOWN_ELF_DIFF" != *"$BIN_FILE"* ]]; then
-                    ELF_MSG="*$ELF_MSG*"
-                    REGRESSIONS=true
-                else
-                    ELF_MSG=" $ELF_MSG "
-                fi
-            else
-                ELF_MSG="($ELF_MSG)"
-                DIFF_ELF=
-            fi
-        else
-            ELF_MSG="          "
-            DIFF_ELF=
-            if [[ "$KNOWN_DEP_DIFF $ACCEPTED_DEP_DIFF" = *"$BIN_FILE"* ]]; then
-                ELF_MSG="    !    "
-            fi
-        fi
-    fi
-
-    # Compare disassemble output
-    if [ -f "$OBJDUMP" ] && [ -z "$SKIP_DIS_DIFF" ]; then
-        $OBJDUMP -d $OTHER_FILE | $GREP -v $NAME > $WORK_FILE_BASE.dis.other 2>&1
-        $OBJDUMP -d $THIS_FILE  | $GREP -v $NAME > $WORK_FILE_BASE.dis.this  2>&1
-        
-        LANG=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
-        
-        if [ -s $WORK_FILE_BASE.dis.diff ]; then
-            DIS_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.dis.diff | awk '{print $5}')
-            DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE)
-            if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then
-                DIFF_DIS=true
-                if [[ "$KNOWN_DIS_DIFF" != *"$BIN_FILE"* ]]; then
-                    DIS_MSG="*$DIS_MSG*"
-                    REGRESSIONS=true
-                else
-                    DIS_MSG=" $DIS_MSG "
-                fi
-            else
-                DIS_MSG="($DIS_MSG)"
-                DIFF_DIS=
-            fi
-        else
-            DIS_MSG="          "
-            DIFF_DIS=
-            if [[ "$KNOWN_DEP_DIFF $ACCEPTED_DEP_DIFF" = *"$BIN_FILE"* ]]; then
-                DIS_MSG="    !    "
-            fi
-        fi
-    fi
-
-
-    if [ -n "$DIFF_BIN$DIFF_SIZE$DIFF_SYM$DIFF_DEP$DIFF_ELF$DIFF_DIS" ] || [ -n "$VERBOSE" ]; then
-        if [ -n "$BIN_MSG" ]; then echo -n "$BIN_MSG:"; fi
-        if [ -n "$SIZE_MSG" ]; then echo -n "$SIZE_MSG:"; fi
-        if [ -n "$SYM_MSG" ]; then echo -n "$SYM_MSG:"; fi
-        if [ -n "$DEP_MSG" ]; then echo -n "$DEP_MSG:"; fi
-        if [ -n "$ELF_MSG" ]; then echo -n "$ELF_MSG:"; fi
-        if [ -n "$DIS_MSG" ]; then echo -n "$DIS_MSG:"; fi
-        echo " $BIN_FILE"
-        if [ "$SHOW_DIFFS" = "true" ]; then
-            if [ -s "$WORK_FILE_BASE.symbols.diff" ]; then
-                echo "Symbols diff:"
-                $CAT $WORK_FILE_BASE.symbols.diff
-            fi
-            if [ -s "$WORK_FILE_BASE.deps.diff" ]; then
-                echo "Deps diff:"
-                $CAT $WORK_FILE_BASE.deps.diff
-            fi
-            if [ -s "$WORK_FILE_BASE.readelf.diff" ]; then
-                echo "Readelf diff:"
-                $CAT $WORK_FILE_BASE.readelf.diff
-            fi
-            if [ -s "$WORK_FILE_BASE.dis.diff" ]; then
-                echo "Disassembly diff:"
-                $CAT $WORK_FILE_BASE.dis.diff
-            fi
-        fi
-        return 1
-    fi
-    return 0
-}
-
-##########################################################################################
-# Print binary diff header
-
-print_binary_diff_header() {
-    if [ -z "$SKIP_BIN_DIFF" ]; then echo -n " Binary :"; fi
-    if [ -z "$SKIP_SIZE_DIFF" ]; then echo -n "   Size    :"; fi
-    if [ -z "$SKIP_SYM_DIFF" ]; then echo -n " Symbols :"; fi
-    if [ -z "$SKIP_DEP_DIFF" ]; then echo -n "  Deps   :"; fi
-    if [ -z "$SKIP_ELF_DIFF" ]; then echo -n " Readelf  :"; fi
-    if [ -z "$SKIP_DIS_DIFF" ]; then echo -n " Disass   :"; fi
-    echo
-}
-
-##########################################################################################
-# Compare all libraries
-
-compare_all_libs() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-
-    LIBS=$(cd $THIS_DIR && $FIND . -name 'lib*.so' -o -name '*.dylib' -o -name '*.dll' | $SORT | $FILTER)
-
-    if [ -n "$LIBS" ]; then
-        echo Libraries...
-        print_binary_diff_header
-        for l in $LIBS; do
-            if [ -f "$OTHER_DIR/$l" ]; then
-                compare_bin_file $THIS_DIR $OTHER_DIR $WORK_DIR $l
-                if [ "$?" != "0" ]; then
-                    return_value=1
-                fi
-            fi
-        done
-    fi
-
-    return $return_value
-}
-
-##########################################################################################
-# Compare all executables
-
-compare_all_execs() {
-    THIS_DIR=$1
-    OTHER_DIR=$2
-    WORK_DIR=$3
-
-    if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
-        EXECS=$(cd $THIS_DIR && $FIND . -type f -name '*.exe' | $SORT | $FILTER)
-    else
-        EXECS=$(cd $THIS_DIR && $FIND . -name db -prune -o -type f -perm -100 \! \( -name '*.so' -o -name '*.dylib' -o -name '*.dll' -o -name '*.cgi' \) | $SORT | $FILTER)
-    fi
-
-    if [ -n "$EXECS" ]; then
-        echo Executables...
-        print_binary_diff_header
-        for e in $EXECS; do
-            if [ -f "$OTHER_DIR/$e" ]; then
-                compare_bin_file $THIS_DIR $OTHER_DIR $WORK_DIR $e
-                if [ "$?" != "0" ]; then
-                    return_value=1
-                fi
-            fi
-        done
-    fi
-
-    return $return_value
-}
-
-##########################################################################################
-# Initiate configuration
-
-COMPARE_ROOT=/tmp/cimages.$USER
-$MKDIR -p $COMPARE_ROOT
-if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
-    if [ "$(uname -o)" = "Cygwin" ]; then
-	COMPARE_ROOT=$(cygpath -msa $COMPARE_ROOT)
-    fi
-fi
-
-THIS="$( cd "$( dirname "$0" )" && pwd )"
-echo "$THIS"
-THIS_SCRIPT="$0"
-
-if [ -z "$1" ] || [ "$1" = "-h" ] || [ "$1" = "-?" ] || [ "$1" = "/h" ] || [ "$1" = "/?" ] || [ "$1" = "-help" ] || [ "$1" = "--help" ]; then
-    echo "bash ./compare.sh [OPTIONS] [FILTER]"
-    echo ""
-    echo "-all                Compare all files in all known ways"
-    echo "-names              Compare the file names and directory structure"
-    echo "-perms              Compare the permission bits on all files and directories"
-    echo "-types              Compare the output of the file command on all files"
-    echo "-general            Compare the files not convered by the specialized comparisons"
-    echo "-zips               Compare the contents of all zip files"
-    echo "-jars               Compare the contents of all jar files"
-    echo "-libs               Compare all native libraries"
-    echo "-execs              Compare all executables"
-    echo "-v                  Verbose output, does not hide known differences"
-    echo "-vv                 More verbose output, shows diff output of all comparisons"
-    echo "-o [OTHER]          Compare with build in other directory. Will default to the old build directory"
-    echo ""
-    echo "[FILTER]            List filenames in the image to compare, works for jars, zips, libs and execs"
-    echo "Example:"
-    echo "bash ./common/bin/compareimages.sh CodePointIM.jar"
-    exit 10
-fi
-
-CMP_NAMES=false
-CMP_PERMS=false
-CMP_TYPES=false
-CMP_GENERAL=false
-CMP_ZIPS=false
-CMP_JARS=false
-CMP_LIBS=false
-CMP_EXECS=false
-
-while [ -n "$1" ]; do
-    case "$1" in
-        -v)
-            VERBOSE=true
-            ;;
-        -vv)
-            VERBOSE=true
-            SHOW_DIFFS=true
-            ;;
-        -o)
-            OTHER=$2
-            shift
-            ;;
-        -all)
-            CMP_NAMES=true
-            if [ "$OPENJDK_TARGET_OS" != "windows" ]; then
-                CMP_PERMS=true
-            fi
-            CMP_TYPES=true
-            CMP_GENERAL=true
-            CMP_ZIPS=true
-            CMP_JARS=true
-            CMP_LIBS=true
-            CMP_EXECS=true
-            ;;
-        -names)
-            CMP_NAMES=true
-            ;;
-        -perms)
-            CMP_PERMS=true
-            ;;
-        -types)
-            CMP_TYPES=true
-            ;;
-        -general)
-            CMP_GENERAL=true
-            ;;
-        -zips)
-            CMP_ZIPS=true
-            ;;
-        -jars)
-            CMP_JARS=true
-            ;;
-        -libs)
-            CMP_LIBS=true
-            ;;
-        -execs)
-            CMP_EXECS=true
-            ;;
-        *)
-            CMP_NAMES=false
-            CMP_PERMS=false
-            CMP_TYPES=false
-            CMP_ZIPS=true
-            CMP_JARS=true
-            CMP_LIBS=true
-            CMP_EXECS=true
-            
-            if [ -z "$FILTER" ]; then
-                FILTER="$GREP"
-            fi
-            FILTER="$FILTER -e $1"
-            ;;
-    esac
-    shift
-done
-
-if [ "$CMP_NAMES" = "false" ] && [ "$CMP_TYPES" = "false" ] && [ "$CMP_PERMS" = "false" ] && [ "$CMP_GENERAL" = "false" ] && [ "$CMP_ZIPS" = "false" ] && [ "$CMP_JARS" = "false" ] && [ "$CMP_LIBS" = "false" ] && [ "$CMP_EXECS" = "false" ]; then
-    CMP_NAMES=true
-    CMP_PERMS=true
-    CMP_TYPES=true
-    CMP_GENERAL=true
-    CMP_ZIPS=true
-    CMP_JARS=true
-    CMP_LIBS=true
-    CMP_EXECS=true
-fi
-
-if [ -z "$FILTER" ]; then
-    FILTER="$CAT"
-fi
-
-if [ -z "$OTHER" ]; then
-    OTHER="$THIS/../$LEGACY_BUILD_DIR"
-    if [ -d "$OTHER" ]; then
-        OTHER="$( cd "$OTHER" && pwd )"
-    else
-        echo "Default old build directory does not exist:"
-        echo "$OTHER"
-    fi
-    echo "Comparing to default old build:"
-    echo "$OTHER"
-    echo
-else
-    echo "Comparing to:"
-    echo "$OTHER"
-    echo
-fi
-
-if [ ! -d "$OTHER" ]; then
-    echo "Other build directory does not exist:"
-    echo "$OTHER"
-    exit 1;
-fi
-
-# Figure out the layout of the new build. Which kinds of images have been produced
-if [ -d "$THIS/images/j2sdk-image" ]; then
-    THIS_J2SDK="$THIS/images/j2sdk-image"
-    THIS_J2RE="$THIS/images/j2re-image"
-fi
-if [ -d "$THIS/images/j2sdk-overlay-image" ]; then
-    THIS_J2SDK_OVERLAY="$THIS/images/j2sdk-overlay-image"
-    THIS_J2RE_OVERLAY="$THIS/images/j2re-overlay-image"
-fi
-
-# Figure out the layout of the other build (old or new, normal or overlay image)
-if [ -d "$OTHER/j2sdk-image" ]; then
-    if [ -f "$OTHER/j2sdk-image/LICENSE" ]; then
-        OTHER_J2SDK="$OTHER/j2sdk-image"
-        OTHER_J2RE="$OTHER/j2re-image"
-    else
-        OTHER_J2SDK_OVERLAY="$OTHER/j2sdk-image"
-        OTHER_J2RE_OVERLAY="$OTHER/j2re-image"
-    fi
-
-fi
-
-if [ -z "$OTHER_J2SDK" ] && [ -n "$OTHER_J2SDK_OVERLAY" ] && [ -z "$THIS_J2SDK_OVERLAY" ]; then
-    echo "OTHER build only has an overlay image while this build does not. Nothing to compare!"
+# Now locate the main script and run it.
+REAL_COMPARE_SCRIPT="$SRC_ROOT/common/bin/compare.sh"
+if [ ! -e "$REAL_COMPARE_SCRIPT" ]; then
+    echo "Error: Cannot locate compare script, it should have been in $REAL_COMPARE_SCRIPT"
     exit 1
 fi
 
-
-##########################################################################################
-# Do the work
-
-if [ "$CMP_NAMES" = "true" ]; then
-    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
-        echo -n "J2SDK "
-        compare_dirs $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-        echo -n "J2RE  "
-        compare_dirs $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
-        
-        echo -n "J2SDK "
-        compare_files $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-        echo -n "J2RE  "
-        compare_files $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
-    fi
-    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
-        echo -n "J2SDK Overlay "
-        compare_dirs $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
-        echo -n "J2RE  Overlay "
-        compare_dirs $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
-        
-        echo -n "J2SDK Overlay "
-        compare_files $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
-        echo -n "J2RE  Overlay "
-        compare_files $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
-    fi
-fi
-
-if [ "$CMP_PERMS" = "true" ]; then
-    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
-        echo -n "J2SDK "
-        compare_permissions $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-        echo -n "J2RE  "
-        compare_permissions $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
-    fi
-    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
-        echo -n "J2SDK Overlay "
-        compare_permissions $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
-        echo -n "J2RE  Overlay "
-        compare_permissions $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
-    fi
-fi
-
-if [ "$CMP_TYPES" = "true" ]; then
-    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
-        echo -n "J2SDK "
-        compare_file_types $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-        echo -n "J2RE  "
-        compare_file_types $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
-    fi
-    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
-        echo -n "J2SDK Overlay "
-        compare_file_types $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
-        echo -n "J2RE  Overlay "
-        compare_file_types $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
-    fi
-fi
-
-if [ "$CMP_GENERAL" = "true" ]; then
-    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
-        echo -n "J2SDK "
-        compare_general_files $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-        echo -n "J2RE  "
-        compare_general_files $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
-    fi
-    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
-        echo -n "J2SDK Overlay "
-        compare_general_files $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
-        echo -n "J2RE  Overlay "
-        compare_general_files $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
-    fi
-fi
-
-if [ "$CMP_ZIPS" = "true" ]; then
-    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
-        compare_all_zip_files $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-    fi
-fi
-
-if [ "$CMP_JARS" = "true" ]; then
-    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
-        compare_all_jar_files $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-    fi
-fi
-
-if [ "$CMP_LIBS" = "true" ]; then
-    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
-        compare_all_libs $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-    fi
-    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
-        echo -n "Overlay "
-        compare_all_libs $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
-    fi
-fi
-
-if [ "$CMP_EXECS" = "true" ]; then
-    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
-        compare_all_execs $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
-    fi
-    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
-        echo -n "Overlay "
-        compare_all_execs $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
-    fi
-fi
-
-echo
-
-if [ -n "$REGRESSIONS" ]; then
-    echo "REGRESSIONS FOUND!"
-    echo
-    exit 1
-else
-    echo "No regressions found"
-    echo
-    exit 0
-fi
+. "$REAL_COMPARE_SCRIPT" "$@"
--- a/common/autoconf/configure	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/configure	Wed Jul 05 18:27:34 2017 +0200
@@ -1,4 +1,32 @@
-#!/bin/sh
+#!/bin/bash
+#
+# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+if test "x$BASH_VERSION" = x; then
+  echo This script needs bash to run.
+  echo It is recommended to use the configure script in the source tree root instead.
+  exit 1
+fi
 
 CONFIGURE_COMMAND_LINE="$@"
 conf_script_dir=`dirname $0`
@@ -13,58 +41,81 @@
 ### Test that the generated configure is up-to-date
 ###
 
-# On Solaris /bin/sh doesn't support test -nt but /usr/bin/test does.
-TEST=`which test`
-
-print_error_not_up_to_date() {
-  echo "Error: The configure source files is newer than the generated files."
-  echo "Please run 'sh autogen.sh' to update the generated files."
-  echo "Note that this test might trigger incorrectly sometimes due to hg timestamps".
+run_autogen_or_fail() {
+  if test "x`which autoconf 2> /dev/null`" = x; then
+    echo "Cannot locate autoconf, unable to correct situation."
+    echo "Please install autoconf and run 'bash autogen.sh' to update the generated files."
+    echo "Error: Cannot continue" 1>&2
+    exit 1
+  else
+    echo "Running autogen.sh to correct the situation"
+    bash $conf_script_dir/autogen.sh
+  fi
 }
 
-# NOTE: This test can occasionally go wrong due to the way mercurial handles
-# timestamps. It it supposed to aid during development of build-infra, but should
-# go away before making this the default build system.
-for file in configure.ac *.m4 ; do
-  if $TEST $file -nt generated-configure.sh; then
-    print_error_not_up_to_date
-    exit 1
-  fi
-done
-
-if $TEST -e $conf_custom_script_dir/generated-configure.sh; then
-  # If custom source configure is available, make sure it is up-to-date as well.
-  for file in configure.ac *.m4 $conf_custom_script_dir/*.m4; do
-    if $TEST $file -nt $conf_custom_script_dir/generated-configure.sh; then
-      print_error_not_up_to_date
-      exit 1
+check_autoconf_timestamps() {
+  for file in $conf_script_dir/configure.ac $conf_script_dir/*.m4 ; do
+    if test $file -nt $conf_script_dir/generated-configure.sh; then
+      echo "Warning: The configure source files is newer than the generated files."
+      run_autogen_or_fail
     fi
   done
 
+  if test -e $conf_custom_script_dir/generated-configure.sh; then
+    # If custom source configure is available, make sure it is up-to-date as well.
+    for file in $conf_script_dir/configure.ac $conf_script_dir/*.m4 $conf_custom_script_dir/*.m4; do
+      if test $file -nt $conf_custom_script_dir/generated-configure.sh; then
+        echo "Warning: The configure source files is newer than the custom generated files."
+        run_autogen_or_fail
+      fi
+    done
+  fi
+}
+
+check_hg_updates() {
+  if test "x`which hg 2> /dev/null`" != x; then
+    conf_updated_autoconf_files=`cd $conf_script_dir && hg status -mard 2> /dev/null | grep autoconf`
+    if test "x$conf_updated_autoconf_files" != x; then
+      echo "Configure source code has been updated, checking time stamps"
+      check_autoconf_timestamps
+    fi
+
+    if test -e $conf_custom_script_dir; then
+      # If custom source configure is available, make sure it is up-to-date as well.
+      conf_custom_updated_autoconf_files=`cd $conf_custom_script_dir && hg status -mard 2> /dev/null | grep autoconf`
+      if test "x$conf_custom_updated_autoconf_files" != x; then
+        echo "Configure custom source code has been updated, checking time stamps"
+        check_autoconf_timestamps
+      fi
+    fi
+    
+  fi
+}
+
+# Check for local changes
+check_hg_updates
+
+if test -e $conf_custom_script_dir/generated-configure.sh; then
   # Test if open configure is newer than custom configure, if so, custom needs to
   # be regenerated. This test is required to ensure consistency with custom source.
-  conf_open_configure_timestamp=`grep DATE_WHEN_GENERATED: $conf_script_dir/generated-configure.sh  | cut -d" " -f 3`
-  conf_custom_configure_timestamp=`grep DATE_WHEN_GENERATED: $conf_custom_script_dir/generated-configure.sh  | cut -d" " -f 3`
-  if $TEST $conf_open_configure_timestamp -gt $conf_custom_configure_timestamp; then
-    echo "Error: The generated configure file contains changes not present in the custom generated file."
-    echo "Please run 'sh autogen.sh' to update the generated files."
-    exit 1
+  conf_open_configure_timestamp=`grep DATE_WHEN_GENERATED= $conf_script_dir/generated-configure.sh  | cut -d"=" -f 2`
+  conf_custom_configure_timestamp=`grep DATE_WHEN_GENERATED= $conf_custom_script_dir/generated-configure.sh  | cut -d"=" -f 2`
+  if test $conf_open_configure_timestamp -gt $conf_custom_configure_timestamp; then
+    echo "Warning: The generated configure file contains changes not present in the custom generated file."
+    run_autogen_or_fail
   fi
-  
 fi
 
 # Autoconf calls the configure script recursively sometimes. 
 # Don't start logging twice in that case
-if $TEST "x$conf_debug_configure" = xtrue; then
+if test "x$conf_debug_configure" = xtrue; then
   conf_debug_configure=recursive
 fi
 ###
 ### Process command-line arguments
 ###
-conf_processed_arguments=
+conf_processed_arguments=()
 conf_openjdk_target=
-conf_extra_cflags=
-conf_extra_cxxflags=
 
 for conf_option
 do
@@ -72,20 +123,14 @@
   --openjdk-target=*)
     conf_openjdk_target=`expr "X$conf_option" : '[^=]*=\(.*\)'`
     continue ;;
-  --with-extra-cflags=*)
-    conf_extra_cflags=`expr "X$conf_option" : '[^=]*=\(.*\)'`
-    continue ;;
-  --with-extra-cxxflags=*)
-    conf_extra_cxxflags=`expr "X$conf_option" : '[^=]*=\(.*\)'`
-    continue ;;
   --debug-configure)
-    if $TEST "x$conf_debug_configure" != xrecursive; then
+    if test "x$conf_debug_configure" != xrecursive; then
       conf_debug_configure=true
       export conf_debug_configure
     fi
     continue ;;
   *)
-    conf_processed_arguments="$conf_processed_arguments $conf_option" ;;
+    conf_processed_arguments=("${conf_processed_arguments[@]}" "$conf_option") ;;
   esac
 
   case $conf_option in
@@ -95,11 +140,13 @@
     conf_legacy_crosscompile="$conf_legacy_crosscompile $conf_option" ;;
   -host | --host | --hos | --ho | -host=* | --host=* | --hos=* | --ho=*)
     conf_legacy_crosscompile="$conf_legacy_crosscompile $conf_option" ;;
+  -help | --help | --hel | --he | -h)
+    conf_print_help=true ;;
   esac
 done
 
-if $TEST "x$conf_legacy_crosscompile" != "x"; then
-  if $TEST "x$conf_openjdk_target" != "x"; then
+if test "x$conf_legacy_crosscompile" != "x"; then
+  if test "x$conf_openjdk_target" != "x"; then
     echo "Error: Specifying --openjdk-target together with autoconf"
     echo "legacy cross-compilation flags is not supported."
     echo "You specified: --openjdk-target=$conf_openjdk_target and $conf_legacy_crosscompile."
@@ -112,20 +159,20 @@
   fi
 fi
 
-if $TEST "x$conf_openjdk_target" != "x"; then
+if test "x$conf_openjdk_target" != "x"; then
   conf_build_platform=`sh $conf_script_dir/build-aux/config.guess`
-  conf_processed_arguments="--build=$conf_build_platform --host=$conf_openjdk_target --target=$conf_openjdk_target $conf_processed_arguments"
+  conf_processed_arguments=("--build=$conf_build_platform" "--host=$conf_openjdk_target" "--target=$conf_openjdk_target" "${conf_processed_arguments[@]}")
 fi
 
 # Make configure exit with error on invalid options as default.
 # Can be overridden by --disable-option-checking, since we prepend our argument
 # and later options override earlier.
-conf_processed_arguments="--enable-option-checking=fatal $conf_processed_arguments"
+conf_processed_arguments=("--enable-option-checking=fatal" "${conf_processed_arguments[@]}")
 
 ###
 ### Call the configure script
 ###
-if $TEST -e $conf_custom_script_dir/generated-configure.sh; then
+if test -e $conf_custom_script_dir/generated-configure.sh; then
   # Custom source configure available; run that instead
   echo Running custom generated-configure.sh
   conf_script_to_run=$conf_custom_script_dir/generated-configure.sh
@@ -134,17 +181,17 @@
   conf_script_to_run=$conf_script_dir/generated-configure.sh
 fi  
 
-if $TEST "x$conf_debug_configure" != x; then
+if test "x$conf_debug_configure" != x; then
   # Turn on shell debug output if requested (initial or recursive)
   set -x
 fi
 
-if $TEST "x$conf_debug_configure" = xtrue; then
+if test "x$conf_debug_configure" = xtrue; then
   # Turn on logging, but don't turn on twice when called recursive
   conf_debug_logfile=./debug-configure.log
-  (exec 3>&1 ; (. $conf_script_to_run $conf_processed_arguments --with-extra-cflags="$conf_extra_cflags" --with-extra-cxxflags="$conf_extra_cxxflags" 2>&1 1>&3 ) | tee -a $conf_debug_logfile 1>&2 ; exec 3>&-) | tee -a $conf_debug_logfile
+  (exec 3>&1 ; (. $conf_script_to_run "${conf_processed_arguments[@]}" 2>&1 1>&3 ) | tee -a $conf_debug_logfile 1>&2 ; exec 3>&-) | tee -a $conf_debug_logfile
 else
-  . $conf_script_to_run $conf_processed_arguments --with-extra-cflags="$conf_extra_cflags" --with-extra-cxxflags="$conf_extra_cxxflags"
+  ( . $conf_script_to_run "${conf_processed_arguments[@]}" )
 fi
 
 conf_result_code=$?
@@ -152,8 +199,28 @@
 ### Post-processing
 ###
 
+if test $conf_result_code -eq 0; then
+  if test "x$conf_print_help" = xtrue; then
+    cat <<EOT
+
+Additional (non-autoconf) OpenJDK Options:
+  --openjdk-target=TARGET cross-compile with TARGET as target platform
+                          (i.e. the one you will run the resulting binary on).
+                          Equivalent to --host=TARGET --target=TARGET
+                          --build=<current platform>
+  --debug-configure       Run the configure script with additional debug
+                          logging enabled.
+
+Please be aware that, when cross-compiling, the OpenJDK configure script will
+generally use 'target' where autoconf traditionally uses 'host'.
+EOT
+  fi
+else
+  echo configure exiting with result code $conf_result_code
+fi
+
 # Move the log file to the output root, if this was successfully created
-if $TEST -d "$OUTPUT_ROOT"; then
+if test -d "$OUTPUT_ROOT"; then
   mv -f config.log "$OUTPUT_ROOT" 2> /dev/null
 fi
 
--- a/common/autoconf/configure.ac	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/configure.ac	Wed Jul 05 18:27:34 2017 +0200
@@ -31,16 +31,14 @@
 
 
 AC_PREREQ([2.61])
-AC_INIT(openjdk, jdk8, build-dev@openjdk.java.net)
-
-# Do not change or remove the following line, it is needed for consistency checks:
-# DATE_WHEN_GENERATED: @DATE_WHEN_GENERATED@
+AC_INIT(OpenJDK, jdk8, build-dev@openjdk.java.net,,http://openjdk.java.net)
 
 AC_CONFIG_AUX_DIR([build-aux])
 m4_include([build-aux/pkg.m4])
 
 # Include these first...
 m4_include([basics.m4])
+m4_include([basics_windows.m4])
 m4_include([builddeps.m4])
 # ... then the rest
 m4_include([boot-jdk.m4])
@@ -51,35 +49,57 @@
 m4_include([platform.m4])
 m4_include([source-dirs.m4])
 m4_include([toolchain.m4])
+m4_include([toolchain_windows.m4])
 
-# This line needs to be here, verbatim, after all includes.
-# It is replaced with custom functionality when building
+AC_DEFUN_ONCE([CUSTOM_EARLY_HOOK])
+AC_DEFUN_ONCE([CUSTOM_LATE_HOOK])
+
+# This line needs to be here, verbatim, after all includes and the dummy hook
+# definitions. It is replaced with custom functionality when building
 # custom sources.
-AC_DEFUN_ONCE([CUSTOM_HOOK])
+#CUSTOM_AUTOCONF_INCLUDE
+
+# Do not change or remove the following line, it is needed for consistency checks:
+DATE_WHEN_GENERATED=@DATE_WHEN_GENERATED@
 
 ###############################################################################
 #
-# Initialization
+# Initialization / Boot-strapping
+#
+# The bootstrapping process needs to solve the "chicken or the egg" problem,
+# thus it jumps back and forth, each time gaining something needed later on.
 #
 ###############################################################################
 
 # Basic initialization that must happen first of all
 BASIC_INIT
+BASIC_SETUP_FUNDAMENTAL_TOOLS
 
 # Now we can determine OpenJDK build and target platforms. This is required to
 # have early on.
 PLATFORM_SETUP_OPENJDK_BUILD_AND_TARGET
 
-# Continue setting up basic stuff.
+# Continue setting up basic stuff. Most remaining code require fundamental tools.
 BASIC_SETUP_PATHS
 BASIC_SETUP_LOGGING
 
+# These are needed to be able to create a configuration name (and thus the output directory)
+JDKOPT_SETUP_JDK_VARIANT
+JDKOPT_SETUP_JVM_VARIANTS
+JDKOPT_SETUP_DEBUG_LEVEL
+
+# With basic setup done, call the custom early hook.
+CUSTOM_EARLY_HOOK
+
+# To properly create a configuration name, we need to have the OpenJDK target
+# and options (variants and debug level) parsed.
+BASIC_SETUP_OUTPUT_DIR
+
 # Must be done before we can call HELP_MSG_MISSING_DEPENDENCY.
 HELP_SETUP_DEPENDENCY_HELP
 
-# Setup simple tools, that do not need have cross compilation support.
-# Without these, we can't properly run the rest of the configure script.
-BASIC_SETUP_TOOLS
+# Setup tools that requires more complex handling, or that is not needed by the configure script.
+BASIC_SETUP_COMPLEX_TOOLS
 
 # Check if pkg-config is available.
 PKG_PROG_PKG_CONFIG
@@ -100,16 +120,9 @@
 ###############################################################################
 
 # We need build & target for this.
-JDKOPT_SETUP_JDK_VARIANT
-JDKOPT_SETUP_JVM_VARIANTS
-JDKOPT_SETUP_DEBUG_LEVEL
 JDKOPT_SETUP_JDK_OPTIONS
 JDKOPT_SETUP_JDK_VERSION_NUMBERS
 
-# To properly create a configuration name, we need to have the OpenJDK target
-# and options (variants and debug level) parsed.
-BASIC_SETUP_OUTPUT_DIR
-
 ###############################################################################
 #
 # Setup BootJDK, used to bootstrap the build.
@@ -137,7 +150,6 @@
 ###############################################################################
 
 TOOLCHAIN_SETUP_SYSROOT_AND_OUT_OPTIONS
-TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
 # Locate the actual tools
 TOOLCHAIN_SETUP_PATHS
 
@@ -152,10 +164,6 @@
 TOOLCHAIN_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION
 TOOLCHAIN_SETUP_COMPILER_FLAGS_FOR_JDK
 
-# After we have toolchain, we can compile the uncygdrive helper
-BASIC_COMPILE_UNCYGDRIVE
-
-
 # Setup debug symbols (need objcopy from the toolchain for that)
 JDKOPT_SETUP_DEBUG_SYMBOLS
 
@@ -173,6 +181,9 @@
 LIB_SETUP_MISC_LIBS
 LIB_SETUP_STATIC_LINK_LIBSTDCPP
 
+# After we have toolchain and the paths to all libraries (needed by msys), we can compile the fixpath helper
+BASIC_COMPILE_FIXPATH
+
 ###############################################################################
 #
 # We need to do some final tweaking, when everything else is done.
@@ -210,7 +221,7 @@
 BASIC_TEST_USABILITY_ISSUES
 
 # At the end, call the custom hook. (Dummy macro if no custom sources available)
-CUSTOM_HOOK
+CUSTOM_LATE_HOOK
 
 # We're messing a bit with internal autoconf variables to put the config.status
 # in the output directory instead of the current directory.
--- a/common/autoconf/generated-configure.sh	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/generated-configure.sh	Wed Jul 05 18:27:34 2017 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for openjdk jdk8.
+# Generated by GNU Autoconf 2.67 for OpenJDK jdk8.
 #
 # Report bugs to <build-dev@openjdk.java.net>.
 #
@@ -550,12 +550,12 @@
 MAKEFLAGS=
 
 # Identity of this package.
-PACKAGE_NAME='openjdk'
+PACKAGE_NAME='OpenJDK'
 PACKAGE_TARNAME='openjdk'
 PACKAGE_VERSION='jdk8'
-PACKAGE_STRING='openjdk jdk8'
+PACKAGE_STRING='OpenJDK jdk8'
 PACKAGE_BUGREPORT='build-dev@openjdk.java.net'
-PACKAGE_URL=''
+PACKAGE_URL='http://openjdk.java.net'
 
 # Factoring default headers for most tests.
 ac_includes_default="\
@@ -606,7 +606,9 @@
 NUM_CORES
 SALIB_NAME
 HOTSPOT_MAKE_ARGS
+FIXPATH
 LIBCXX
+STATIC_CXX_SETTING
 LIBDL
 LIBM
 LIBZIP_CAN_USE_MMAP
@@ -619,7 +621,6 @@
 USING_SYSTEM_FT_LIB
 FREETYPE2_LIBS
 FREETYPE2_CFLAGS
-CUPS_LIBS
 CUPS_CFLAGS
 OPENWIN_HOME
 X_EXTRA_LIBS
@@ -631,7 +632,6 @@
 CFLAGS_DEBUG_SYMBOLS
 ZIP_DEBUGINFO_FILES
 ENABLE_DEBUG_SYMBOLS
-UNCYGDRIVE
 LDFLAGS_CXX_JDK
 LDFLAGS_JDKEXE_SUFFIX
 LDFLAGS_JDKLIB_SUFFIX
@@ -672,6 +672,9 @@
 SHARED_LIBRARY
 OBJ_SUFFIX
 LIPO
+ac_ct_OBJDUMP
+OBJDUMP
+ac_ct_OBJCOPY
 OBJCOPY
 MCS
 STRIP
@@ -683,9 +686,13 @@
 RC_FLAGS
 DUMPBIN
 WINAR
+HOTSPOT_RC
+HOTSPOT_MT
 RC
 MT
 WINLD
+HOTSPOT_LD
+HOTSPOT_CXX
 ARFLAGS
 AR
 LDEXECXX
@@ -698,6 +705,9 @@
 ac_ct_CXX
 CXXFLAGS
 CXX
+ac_ct_PROPER_COMPILER_CXX
+PROPER_COMPILER_CXX
+POTENTIAL_CXX
 OBJEXT
 EXEEXT
 ac_ct_CC
@@ -705,12 +715,16 @@
 LDFLAGS
 CFLAGS
 CC
+ac_ct_PROPER_COMPILER_CC
+PROPER_COMPILER_CC
+POTENTIAL_CC
 BUILD_LD
 BUILD_CXX
 BUILD_CC
-MSVCR100DLL
-CHECK_FOR_VCINSTALLDIR
-SETUPDEVENV
+MSVCR_DLL
+VS_PATH
+VS_LIB
+VS_INCLUDE
 CYGWIN_LINK
 AR_OUT_OPTION
 LD_OUT_OPTION
@@ -733,15 +747,14 @@
 BOOT_RTJAR
 JAVA_CHECK
 JAVAC_CHECK
-OUTPUT_ROOT
-CONF_NAME
-SPEC
 COOKED_BUILD_NUMBER
 FULL_VERSION
 RELEASE
 JDK_VERSION
 RUNTIME_NAME
 COPYRIGHT_YEAR
+MACOSX_BUNDLE_ID_BASE
+MACOSX_BUNDLE_NAME_BASE
 COMPANY_NAME
 JDK_RC_PLATFORM_NAME
 PRODUCT_SUFFIX
@@ -753,16 +766,39 @@
 JDK_MICRO_VERSION
 JDK_MINOR_VERSION
 JDK_MAJOR_VERSION
-ENABLE_JFR
 COMPRESS_JARS
+UNLIMITED_CRYPTO
 CACERTS_FILE
 TEST_IN_BUILD
-DISABLE_NIMBUS
 BUILD_HEADLESS
 SUPPORT_HEADFUL
 SUPPORT_HEADLESS
-JIGSAW
 SET_OPENJDK
+BDEPS_FTP
+BDEPS_UNZIP
+OS_VERSION_MICRO
+OS_VERSION_MINOR
+OS_VERSION_MAJOR
+PKG_CONFIG
+COMM
+TIME
+STAT
+HG
+READELF
+OTOOL
+LDD
+ZIP
+UNZIP
+FIND_DELETE
+MAKE
+CHECK_TOOLSDIR_MAKE
+CHECK_TOOLSDIR_GMAKE
+CHECK_MAKE
+CHECK_GMAKE
+PKGHANDLER
+OUTPUT_ROOT
+CONF_NAME
+SPEC
 BUILD_VARIANT_RELEASE
 DEBUG_CLASSFILES
 FASTDEBUG
@@ -776,72 +812,12 @@
 JVM_VARIANT_SERVER
 JVM_VARIANTS
 JDK_VARIANT
-BDEPS_FTP
-BDEPS_UNZIP
-OS_VERSION_MICRO
-OS_VERSION_MINOR
-OS_VERSION_MAJOR
-PKG_CONFIG
-HG
-OBJDUMP
-READELF
-OTOOL
-LDD
-THEPWDCMD
-FIND_DELETE
-RM
-MAKE
-CHECK_TOOLSDIR_MAKE
-CHECK_TOOLSDIR_GMAKE
-CHECK_MAKE
-CHECK_GMAKE
-NAWK
-SED
-FGREP
-EGREP
-GREP
-AWK
-ZIP
-XARGS
-WC
-UNZIP
-UNIQ
-TR
-TOUCH
-TEE
-TAR
-TAIL
-SORT
-SH
-PRINTF
-MV
-MKDIR
-LS
-LN
-HEAD
-FIND
-FILE
-EXPR
-ECHO
-DIFF
-DF
-DATE
-CUT
-CPIO
-CP
-CMP
-CHMOD
-CAT
-BASENAME
-PKGHANDLER
 BUILD_LOG_WRAPPER
 BUILD_LOG_PREVIOUS
 BUILD_LOG
 SYS_ROOT
 PATH_SEP
-CYGPATH
 SRC_ROOT
-READLINK
 DEFINE_CROSS_COMPILE_ARCH
 LP64
 OPENJDK_TARGET_OS_API_DIR
@@ -854,18 +830,18 @@
 REQUIRED_OS_VERSION
 REQUIRED_OS_NAME
 COMPILE_TYPE
+OPENJDK_TARGET_CPU_ENDIAN
+OPENJDK_TARGET_CPU_BITS
+OPENJDK_TARGET_CPU_ARCH
+OPENJDK_TARGET_CPU
+OPENJDK_TARGET_OS_API
+OPENJDK_TARGET_OS
 OPENJDK_BUILD_CPU_ENDIAN
 OPENJDK_BUILD_CPU_BITS
 OPENJDK_BUILD_CPU_ARCH
 OPENJDK_BUILD_CPU
 OPENJDK_BUILD_OS_API
 OPENJDK_BUILD_OS
-OPENJDK_TARGET_CPU_ENDIAN
-OPENJDK_TARGET_CPU_BITS
-OPENJDK_TARGET_CPU_ARCH
-OPENJDK_TARGET_CPU
-OPENJDK_TARGET_OS_API
-OPENJDK_TARGET_OS
 OPENJDK_BUILD_AUTOCONF_NAME
 OPENJDK_TARGET_AUTOCONF_NAME
 target_os
@@ -880,6 +856,51 @@
 build_vendor
 build_cpu
 build
+SETFILE
+DF
+READLINK
+CYGPATH
+NAWK
+SED
+FGREP
+EGREP
+GREP
+AWK
+XARGS
+WHICH
+WC
+UNIQ
+UNAME
+TR
+TOUCH
+TEE
+TAR
+TAIL
+SORT
+SH
+RM
+THEPWDCMD
+PRINTF
+MV
+MKTEMP
+MKDIR
+LS
+LN
+HEAD
+FIND
+FILE
+EXPR
+ECHO
+DIRNAME
+DIFF
+DATE
+CUT
+CP
+CMP
+CHMOD
+CAT
+BASH
+BASENAME
 DATE_WHEN_CONFIGURED
 CONFIGURE_COMMAND_LINE
 CUSTOM_MAKE_DIR
@@ -929,23 +950,20 @@
 with_sys_root
 with_tools_dir
 with_devkit
-with_builddeps_conf
-with_builddeps_server
-with_builddeps_dir
-with_builddeps_group
-enable_list_builddeps
 with_jdk_variant
 with_jvm_variants
 enable_debug
 with_debug_level
+with_conf_name
+with_builddeps_conf
+with_builddeps_server
+with_builddeps_dir
+with_builddeps_group
 enable_openjdk_only
-enable_jigsaw
 enable_headful
-enable_nimbus
 enable_hotspot_test_in_build
 with_cacerts_file
-enable_jfr
-with_conf_name
+enable_unlimited_crypto
 with_boot_jdk
 with_boot_jdk_jvmargs
 with_add_source_root
@@ -957,7 +975,7 @@
 with_override_jaxws
 with_override_hotspot
 with_override_jdk
-with_msvcr100dll
+with_msvcr_dll
 with_extra_cflags
 with_extra_cxxflags
 with_extra_ldflags
@@ -967,7 +985,6 @@
 with_x
 with_cups
 with_cups_include
-with_cups_lib
 with_freetype
 with_alsa
 with_alsa_include
@@ -1546,7 +1563,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures openjdk jdk8 to adapt to many kinds of systems.
+\`configure' configures OpenJDK jdk8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1616,7 +1633,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of openjdk jdk8:";;
+     short | recursive ) echo "Configuration of OpenJDK jdk8:";;
    esac
   cat <<\_ACEOF
 
@@ -1624,24 +1641,19 @@
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-list-builddeps list all build dependencies known to the configure
-                          script
   --enable-debug          set the debug level to fastdebug (shorthand for
                           --with-debug-level=fastdebug) [disabled]
-  --enable-openjdk-only   build OpenJDK regardless of the presence of closed
-                          repositories [disabled]
-  --enable-jigsaw         build Jigsaw images (not yet available) [disabled]
-  --disable-headful       build headful support (graphical UI support)
-                          [enabled]
-  --disable-nimbus        disable Nimbus L&F [enabled]
+  --enable-openjdk-only   supress building closed source even if present
+                          [disabled]
+  --disable-headful       disable building headful support (graphical UI
+                          support) [enabled]
   --enable-hotspot-test-in-build
-                          enable running of Queens test after Hotspot build
-                          (not yet available) [disabled]
-  --enable-jfr            enable jfr (default is no)
-	ENABLE_JFR="${enableval}"
-  --disable-debug-symbols disable generation of debug symbols ([enabled])
+                          run the Queens test after Hotspot build [disabled]
+  --enable-unlimited-crypto
+                          Enable unlimited crypto policy [disabled]
+  --disable-debug-symbols disable generation of debug symbols [enabled]
   --disable-zip-debug-info
-                          don't zip debug-info files ([enabled@:@)
+                          disable zipping of debug-info files [enabled]
   --disable-macosx-runtime-support
                           disable the use of MacOSX Java runtime support
                           framework [enabled]
@@ -1651,38 +1663,38 @@
   --enable-sjavac         use sjavac to do fast incremental compiles
                           [disabled]
   --disable-precompiled-headers
-                          use precompiled headers when compiling C++ [enabled]
-  --disable-ccache        use ccache to speed up recompilations [enabled]
+                          disable using precompiled headers when compiling C++
+                          [enabled]
+  --disable-ccache        disable using ccache to speed up recompilations
+                          [enabled]
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-custom-make-dir  directory containing custom build/make files
+  --with-custom-make-dir  use this directory for custom build/make files
   --with-target-bits      build 32-bit or 64-bit binaries (for platforms that
                           support it), e.g. --with-target-bits=32 [guessed]
-  --with-sys-root         pass this sys-root to the compilers and linker
-                          (useful if the sys-root encoded in the cross
-                          compiler tools is incorrect)
-  --with-tools-dir        search this directory for (cross-compiling)
-                          compilers and tools
+  --with-sys-root         pass this sys-root to the compilers and tools (for
+                          cross-compiling)
+  --with-tools-dir        search this directory for compilers and tools (for
+                          cross-compiling)
   --with-devkit           use this directory as base for tools-dir and
                           sys-root (for cross-compiling)
-  --with-builddeps-conf   use this configuration file for the builddeps
-  --with-builddeps-server download and use build dependencies from this server
-                          url, e.g.
-                          --with-builddeps-server=ftp://example.com/dir
-  --with-builddeps-dir    store downloaded build dependencies here
-                          [d/localhome/builddeps]
-  --with-builddeps-group  chgrp the downloaded build dependencies to this
-                          group
   --with-jdk-variant      JDK variant to build (normal) [normal]
   --with-jvm-variants     JVM variants (separated by commas) to build (server,
                           client, kernel, zero, zeroshark) [server]
   --with-debug-level      set the debug level (release, fastdebug, slowdebug)
                           [release]
+  --with-conf-name        use this as the name of the configuration [generated
+                          from important configuration options]
+  --with-builddeps-conf   use this configuration file for the builddeps
+  --with-builddeps-server download and use build dependencies from this server
+                          url
+  --with-builddeps-dir    store downloaded build dependencies here
+                          [/localhome/builddeps]
+  --with-builddeps-group  chgrp the downloaded build dependencies to this
+                          group
   --with-cacerts-file     specify alternative cacerts file
-  --with-conf-name        use this as the name of the configuration,
-                          overriding the generated default
   --with-boot-jdk         path to Boot JDK (used to bootstrap build) [probed]
   --with-boot-jdk-jvmargs specify JVM arguments to be passed to all
                           invocations of the Boot JDK, overriding the default
@@ -1707,16 +1719,15 @@
   --with-override-jaxws   use this jaxws dir for the build
   --with-override-hotspot use this hotspot dir for the build
   --with-override-jdk     use this jdk dir for the build
-  --with-msvcr100dll      copy this msvcr100.dll into the built JDK
+  --with-msvcr-dll        copy this msvcr100.dll into the built JDK (Windows
+                          only) [probed]
   --with-extra-cflags     extra flags to be used when compiling jdk c-files
   --with-extra-cxxflags   extra flags to be used when compiling jdk c++-files
   --with-extra-ldflags    extra flags to be used when linking jdk
   --with-x                use the X Window System
   --with-cups             specify prefix directory for the cups package
-                          (expecting the libraries under PATH/lib and the
-                          headers under PATH/include)
+                          (expecting the headers under PATH/include)
   --with-cups-include     specify directory for the cups include files
-  --with-cups-lib         specify directory for the cups library
   --with-freetype         specify prefix directory for the freetype2 package
                           (expecting the libraries under PATH/lib and the
                           headers under PATH/include)
@@ -1733,10 +1744,7 @@
                           --with-memory-size=1024 [probed]
   --with-sjavac-server-java
                           use this java binary for running the sjavac
-                          background server and other long running java tasks
-                          in the build process, e.g.
-                          ---with-sjavac-server-java="/opt/jrockit/bin/java
-                          -server"
+                          background server [Boot JDK java]
   --with-sjavac-server-cores
                           use at most this number of concurrent threads on the
                           sjavac server [probed]
@@ -1769,6 +1777,7 @@
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <build-dev@openjdk.java.net>.
+OpenJDK home page: <http://openjdk.java.net>.
 _ACEOF
 ac_status=$?
 fi
@@ -1831,7 +1840,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-openjdk configure jdk8
+OpenJDK configure jdk8
 generated by GNU Autoconf 2.67
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2488,101 +2497,41 @@
 
 } # ac_fn_cxx_check_func
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
 # -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval "test \"\${$3+set}\"" = set; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
 if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 #include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
+  eval "$3=yes"
+else
+  eval "$3=no"
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ----------------------------------------- ##
-## Report this to build-dev@openjdk.java.net ##
-## ----------------------------------------- ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
 fi
 eval ac_res=\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-fi
   eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
 
-} # ac_fn_c_check_header_mongrel
+} # ac_fn_c_check_header_compile
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by openjdk $as_me jdk8, which was
+It was created by OpenJDK $as_me jdk8, which was
 generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
@@ -2931,9 +2880,6 @@
 
 
 
-# Do not change or remove the following line, it is needed for consistency checks:
-# DATE_WHEN_GENERATED: 1347963060
-
 ac_aux_dir=
 for ac_dir in build-aux "$srcdir"/build-aux; do
   if test -f "$ac_dir/install-sh"; then
@@ -3053,14 +2999,46 @@
 
 
 
-
-
-
-
-
-
-
-
+# This will make sure the given variable points to a full and proper
+# path. This means:
+# 1) There will be no spaces in the path. On posix platforms,
+#    spaces in the path will result in an error. On Windows,
+#    the path will be rewritten using short-style to be space-free.
+# 2) The path will be absolute, and it will be in unix-style (on
+#     cygwin).
+# $1: The name of the variable to fix
+
+
+# This will make sure the given variable points to a executable
+# with a full and proper path. This means:
+# 1) There will be no spaces in the path. On posix platforms,
+#    spaces in the path will result in an error. On Windows,
+#    the path will be rewritten using short-style to be space-free.
+# 2) The path will be absolute, and it will be in unix-style (on
+#     cygwin).
+# Any arguments given to the executable is preserved.
+# If the input variable does not have a directory specification, then
+# it need to be in the PATH.
+# $1: The name of the variable to fix
+
+
+
+
+
+
+# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
+# $1: variable to check
+# $2: executable name to print in warning (optional)
+
+
+# Does AC_PATH_PROG followed by BASIC_CHECK_NONEMPTY.
+# Arguments as AC_PATH_PROG:
+# $1: variable to set
+# $2: executable name to look for
+
+
+# Setup the most fundamental tools that relies on not much else to set up,
+# but is used by much of the early bootstrap code.
 
 
 # Setup basic configuration paths, and platform-specific stuff related to PATHs.
@@ -3083,23 +3061,10 @@
 
 
 
-# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
-# $1: variable to check
-# $2: executable name to print in warning (optional)
-
-
-# Does AC_PATH_PROG followed by CHECK_NONEMPTY.
-# Arguments as AC_PATH_PROG:
-# $1: variable to set
-# $2: executable name to look for
-
-
-
-
-
-
-
-# Check if build directory is on local disk.
+
+
+# Check if build directory is on local disk. If not possible to determine,
+# we prefer to claim it's local.
 # Argument 1: directory to test
 # Argument 2: what to do if it is on local disk
 # Argument 3: what to do otherwise (remote disk or failure)
@@ -3136,6 +3101,64 @@
 
 
 
+# Helper function which possibly converts a path using DOS-style short mode.
+# If so, the updated path is stored in $new_path.
+# $1: The path to check
+
+
+# Helper function which possibly converts a path using DOS-style short mode.
+# If so, the updated path is stored in $new_path.
+# $1: The path to check
+
+
+# FIXME: The BASIC_FIXUP_*_CYGWIN/MSYS is most likely too convoluted
+# and could probably be heavily simplified. However, all changes in this
+# area tend to need lot of testing in different scenarios, and in lack of
+# proper unit testing, cleaning this up has not been deemed worth the effort
+# at the moment.
+
+
+
+
+
+
+
+
+
+# Setup basic configuration paths, and platform-specific stuff related to PATHs.
+
+
+
+
+#
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+
+
+
+
 
 
 
@@ -3287,6 +3310,19 @@
 
 
 
+cygwin_help() {
+    case $1 in
+    unzip)
+        PKGHANDLER_COMMAND="cd <location of cygwin setup.exe> && cmd /c setup -q -P unzip" ;;
+    zip)
+        PKGHANDLER_COMMAND="cd <location of cygwin setup.exe> && cmd /c setup -q -P zip" ;;
+    make)
+        PKGHANDLER_COMMAND="cd <location of cygwin setup.exe> && cmd /c setup -q -P make" ;;
+    * )
+       break ;;
+    esac
+}
+
 apt_help() {
     case $1 in
     devkit)
@@ -3561,28 +3597,82 @@
 # questions.
 #
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# This line needs to be here, verbatim, after all includes.
-# It is replaced with custom functionality when building
+# $1 = compiler to test (CC or CXX)
+# $2 = human readable name of compiler (C or C++)
+
+
+
+
+
+# $1 = compiler to test (CC or CXX)
+# $2 = human readable name of compiler (C or C++)
+# $3 = list of compiler names to search for
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+
+
+
+
+
+
+# Check if the VS env variables were setup prior to running configure.
+# If not, then find vcvarsall.bat and run it automatically, and integrate
+# the set env variables into the spec file.
+
+
+
+
+
+
+# This line needs to be here, verbatim, after all includes and the dummy hook
+# definitions. It is replaced with custom functionality when building
 # custom sources.
-
-
-###############################################################################
-#
-# Initialization
+#CUSTOM_AUTOCONF_INCLUDE
+
+# Do not change or remove the following line, it is needed for consistency checks:
+DATE_WHEN_GENERATED=1351539315
+
+###############################################################################
+#
+# Initialization / Boot-strapping
+#
+# The bootstrapping process needs to solve the "chicken or the egg" problem,
+# thus it jumps back and forth, each time gaining something needed later on.
 #
 ###############################################################################
 
@@ -3592,789 +3682,12 @@
 
 DATE_WHEN_CONFIGURED=`LANG=C date`
 
-
-
-# Now we can determine OpenJDK build and target platforms. This is required to
-# have early on.
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if test "${ac_cv_build+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if test "${ac_cv_host+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if test "${ac_cv_target+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$target_alias" = x; then
-  ac_cv_target=$ac_cv_host
-else
-  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5 ;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
-  test "$program_prefix$program_suffix$program_transform_name" = \
-    NONENONEs,x,x, &&
-  program_prefix=${target_alias}-
-
-# Figure out the build and target systems. # Note that in autoconf terminology, "build" is obvious, but "target"
-# is confusing; it assumes you are cross-compiling a cross-compiler (!)  and "target" is thus the target of the
-# product you're building. The target of this build is called "host". Since this is confusing to most people, we
-# have not adopted that system, but use "target" as the platform we are building for. In some places though we need
-# to use the configure naming style.
-
-
-
-
-
-    # Copy the autoconf trip/quadruplet verbatim to OPENJDK_TARGET_AUTOCONF_NAME
-    # (from the autoconf "host") and OPENJDK_BUILD_AUTOCONF_NAME
-    # Note that we might later on rewrite e.g. OPENJDK_TARGET_CPU due to reduced build,
-    # but this will not change the value of OPENJDK_TARGET_AUTOCONF_NAME.
-    OPENJDK_TARGET_AUTOCONF_NAME="$host"
-    OPENJDK_BUILD_AUTOCONF_NAME="$build"
-
-
-
-    # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
-
-  case "$host_os" in
-    *linux*)
-      VAR_OS=linux
-      VAR_OS_API=posix
-      ;;
-    *solaris*)
-      VAR_OS=solaris
-      VAR_OS_API=posix
-      ;;
-    *darwin*)
-      VAR_OS=macosx
-      VAR_OS_API=posix
-      ;;
-    *bsd*)
-      VAR_OS=bsd
-      VAR_OS_API=posix
-      ;;
-    *cygwin*|*windows*)
-      VAR_OS=windows
-      VAR_OS_API=winapi
-      ;;
-    *)
-      as_fn_error $? "unsupported operating system $host_os" "$LINENO" 5
-      ;;
-  esac
-
-
-  # First argument is the cpu name from the trip/quad
-  case "$host_cpu" in
-    x86_64)
-      VAR_CPU=x86_64
-      VAR_CPU_ARCH=x86
-      VAR_CPU_BITS=64
-      VAR_CPU_ENDIAN=little
-      ;;
-    i?86)
-      VAR_CPU=x86
-      VAR_CPU_ARCH=x86
-      VAR_CPU_BITS=32
-      VAR_CPU_ENDIAN=little
-      ;;
-    arm*)
-      VAR_CPU=arm
-      VAR_CPU_ARCH=arm
-      VAR_CPU_BITS=32
-      VAR_CPU_ENDIAN=little
-      ;;
-    powerpc)
-      VAR_CPU=ppc
-      VAR_CPU_ARCH=ppc
-      VAR_CPU_BITS=32
-      VAR_CPU_ENDIAN=big
-       ;;
-    powerpc64)
-      VAR_CPU=ppc64
-      VAR_CPU_ARCH=ppc
-      VAR_CPU_BITS=64
-      VAR_CPU_ENDIAN=big
-       ;;
-    sparc)
-      VAR_CPU=sparc
-      VAR_CPU_ARCH=sparc
-      VAR_CPU_BITS=32
-      VAR_CPU_ENDIAN=big
-       ;;
-    sparcv9)
-      VAR_CPU=sparcv9
-      VAR_CPU_ARCH=sparc
-      VAR_CPU_BITS=64
-      VAR_CPU_ENDIAN=big
-       ;;
-    *)
-      as_fn_error $? "unsupported cpu $host_cpu" "$LINENO" 5
-      ;;
-  esac
-
-    # ... and setup our own variables. (Do this explicitely to facilitate searching)
-    OPENJDK_TARGET_OS="$VAR_OS"
-    OPENJDK_TARGET_OS_API="$VAR_OS_API"
-    OPENJDK_TARGET_CPU="$VAR_CPU"
-    OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH"
-    OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
-    OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
-
-
-
-
-
-
-
-    # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
-
-  case "$build_os" in
-    *linux*)
-      VAR_OS=linux
-      VAR_OS_API=posix
-      ;;
-    *solaris*)
-      VAR_OS=solaris
-      VAR_OS_API=posix
-      ;;
-    *darwin*)
-      VAR_OS=macosx
-      VAR_OS_API=posix
-      ;;
-    *bsd*)
-      VAR_OS=bsd
-      VAR_OS_API=posix
-      ;;
-    *cygwin*|*windows*)
-      VAR_OS=windows
-      VAR_OS_API=winapi
-      ;;
-    *)
-      as_fn_error $? "unsupported operating system $build_os" "$LINENO" 5
-      ;;
-  esac
-
-
-  # First argument is the cpu name from the trip/quad
-  case "$build_cpu" in
-    x86_64)
-      VAR_CPU=x86_64
-      VAR_CPU_ARCH=x86
-      VAR_CPU_BITS=64
-      VAR_CPU_ENDIAN=little
-      ;;
-    i?86)
-      VAR_CPU=x86
-      VAR_CPU_ARCH=x86
-      VAR_CPU_BITS=32
-      VAR_CPU_ENDIAN=little
-      ;;
-    arm*)
-      VAR_CPU=arm
-      VAR_CPU_ARCH=arm
-      VAR_CPU_BITS=32
-      VAR_CPU_ENDIAN=little
-      ;;
-    powerpc)
-      VAR_CPU=ppc
-      VAR_CPU_ARCH=ppc
-      VAR_CPU_BITS=32
-      VAR_CPU_ENDIAN=big
-       ;;
-    powerpc64)
-      VAR_CPU=ppc64
-      VAR_CPU_ARCH=ppc
-      VAR_CPU_BITS=64
-      VAR_CPU_ENDIAN=big
-       ;;
-    sparc)
-      VAR_CPU=sparc
-      VAR_CPU_ARCH=sparc
-      VAR_CPU_BITS=32
-      VAR_CPU_ENDIAN=big
-       ;;
-    sparcv9)
-      VAR_CPU=sparcv9
-      VAR_CPU_ARCH=sparc
-      VAR_CPU_BITS=64
-      VAR_CPU_ENDIAN=big
-       ;;
-    *)
-      as_fn_error $? "unsupported cpu $build_cpu" "$LINENO" 5
-      ;;
-  esac
-
-    # ..and setup our own variables. (Do this explicitely to facilitate searching)
-    OPENJDK_BUILD_OS="$VAR_OS"
-    OPENJDK_BUILD_OS_API="$VAR_OS_API"
-    OPENJDK_BUILD_CPU="$VAR_CPU"
-    OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
-    OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
-    OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
-
-
-
-
-
-
-
-
-
-# Check whether --with-target-bits was given.
-if test "${with_target_bits+set}" = set; then :
-  withval=$with_target_bits;
-fi
-
-
-  # We have three types of compiles:
-  # native  == normal compilation, target system == build system
-  # cross   == traditional cross compilation, target system != build system; special toolchain needed
-  # reduced == using native compilers, but with special flags (e.g. -m32) to produce 32-bit builds on 64-bit machines
-  #
-  if test "x$OPENJDK_BUILD_AUTOCONF_NAME" != "x$OPENJDK_TARGET_AUTOCONF_NAME"; then
-    # We're doing a proper cross-compilation
-    COMPILE_TYPE="cross"
-  else
-    COMPILE_TYPE="native"
-  fi
-
-  if test "x$with_target_bits" != x; then
-    if test "x$COMPILE_TYPE" = "xcross"; then
-      as_fn_error $? "It is not possible to combine --with-target-bits=X and proper cross-compilation. Choose either." "$LINENO" 5
-    fi
-
-    if test "x$with_target_bits" = x32 && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
-      # A reduced build is requested
-      COMPILE_TYPE="reduced"
-      OPENJDK_TARGET_CPU_BITS=32
-      if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
-        OPENJDK_TARGET_CPU=x86
-      elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
-        OPENJDK_TARGET_CPU=sparc
-      else
-        as_fn_error $? "Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9" "$LINENO" 5
-      fi
-    elif test "x$with_target_bits" = x64 && test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
-      as_fn_error $? "It is not possible to use --with-target-bits=64 on a 32 bit system. Use proper cross-compilation instead." "$LINENO" 5
-    elif test "x$with_target_bits" = "x$OPENJDK_TARGET_CPU_BITS"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: --with-target-bits are set to build platform address size; argument has no meaning" >&5
-$as_echo "$as_me: --with-target-bits are set to build platform address size; argument has no meaning" >&6;}
-    else
-      as_fn_error $? "--with-target-bits can only be 32 or 64, you specified $with_target_bits!" "$LINENO" 5
-    fi
-  fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compilation type" >&5
-$as_echo_n "checking for compilation type... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMPILE_TYPE" >&5
-$as_echo "$COMPILE_TYPE" >&6; }
-
-
-    if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
-       REQUIRED_OS_NAME=SunOS
-       REQUIRED_OS_VERSION=5.10
-    fi
-    if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
-       REQUIRED_OS_NAME=Linux
-       REQUIRED_OS_VERSION=2.6
-    fi
-    if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
-        REQUIRED_OS_NAME=Windows
-        if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
-            REQUIRED_OS_VERSION=5.2
-        else
-            REQUIRED_OS_VERSION=5.1
-        fi
-    fi
-    if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
-        REQUIRED_OS_NAME=Darwin
-        REQUIRED_OS_VERSION=11.2
-    fi
-
-
-
-
-
-    # Also store the legacy naming of the cpu.
-    # Ie i586 and amd64 instead of x86 and x86_64
-    OPENJDK_TARGET_CPU_LEGACY="$OPENJDK_TARGET_CPU"
-    if test "x$OPENJDK_TARGET_CPU" = xx86; then
-      OPENJDK_TARGET_CPU_LEGACY="i586"
-    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
-      # On all platforms except MacOSX replace x86_64 with amd64.
-      OPENJDK_TARGET_CPU_LEGACY="amd64"
-    fi
-
-
-    # And the second legacy naming of the cpu.
-    # Ie i386 and amd64 instead of x86 and x86_64.
-    OPENJDK_TARGET_CPU_LEGACY_LIB="$OPENJDK_TARGET_CPU"
-    if test "x$OPENJDK_TARGET_CPU" = xx86; then
-      OPENJDK_TARGET_CPU_LEGACY_LIB="i386"
-    elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
-      OPENJDK_TARGET_CPU_LEGACY_LIB="amd64"
-    fi
-
-
-    # This is the name of the cpu (but using i386 and amd64 instead of
-    # x86 and x86_64, respectively), preceeded by a /, to be used when
-    # locating libraries. On macosx, it's empty, though.
-    OPENJDK_TARGET_CPU_LIBDIR="/$OPENJDK_TARGET_CPU_LEGACY_LIB"
-    if test "x$OPENJDK_TARGET_OS" = xmacosx; then
-        OPENJDK_TARGET_CPU_LIBDIR=""
-    fi
-
-
-    # OPENJDK_TARGET_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
-    # /amd64 or /sparcv9. This string is appended to some library paths, like this:
-    # /usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libexample.so
-    OPENJDK_TARGET_CPU_ISADIR=""
-    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
-      if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
-          OPENJDK_TARGET_CPU_ISADIR="/amd64"
-      elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
-          OPENJDK_TARGET_CPU_ISADIR="/sparcv9"
-      fi
-    fi
-
-
-    # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
-    OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
-    if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
-      # On linux only, we replace x86 with i386.
-      OPENJDK_TARGET_CPU_OSARCH="i386"
-    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
-      # On all platforms except macosx, we replace x86_64 with amd64.
-      OPENJDK_TARGET_CPU_OSARCH="amd64"
-    fi
-
-
-    OPENJDK_TARGET_CPU_JLI="$OPENJDK_TARGET_CPU"
-    if test "x$OPENJDK_TARGET_CPU" = xx86; then
-      OPENJDK_TARGET_CPU_JLI="i386"
-    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
-      # On all platforms except macosx, we replace x86_64 with amd64.
-      OPENJDK_TARGET_CPU_JLI="amd64"
-    fi
-    # Now setup the -D flags for building libjli.
-    OPENJDK_TARGET_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_TARGET_CPU_JLI\"'"
-    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
-      if test "x$OPENJDK_TARGET_CPU_ARCH" = xsparc; then
-        OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'"
-      elif test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
-        OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"
-      fi
-    fi
-
-
-    # Setup OPENJDK_TARGET_OS_API_DIR, used in source paths.
-    if test "x$OPENJDK_TARGET_OS_API" = xposix; then
-        OPENJDK_TARGET_OS_API_DIR="solaris"
-    fi
-    if test "x$OPENJDK_TARGET_OS_API" = xwinapi; then
-        OPENJDK_TARGET_OS_API_DIR="windows"
-    fi
-
-
-    if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
-        A_LP64="LP64:="
-        ADD_LP64="-D_LP64=1"
-    fi
-    LP64=$A_LP64
-
-
-    if test "x$COMPILE_TYPE" = "xcross"; then
-      # FIXME: ... or should this include reduced builds..?
-      DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY"
-    else
-      DEFINE_CROSS_COMPILE_ARCH=""
-    fi
-
-
-
-
-# Continue setting up basic stuff.
-
-# Locate the directory of this script.
-SCRIPT="$0"
-
-    if test "x$OPENJDK_BUILD_OS" != xwindows; then
-        # Follow a chain of symbolic links. Use readlink
-        # where it exists, else fall back to horribly
-        # complicated shell code.
-        # Extract the first word of "readlink", so it can be a program name with args.
-set dummy readlink; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_READLINK+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $READLINK in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-READLINK=$ac_cv_path_READLINK
-if test -n "$READLINK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5
-$as_echo "$READLINK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-        if test "x$READLINK_TESTED" != yes; then
-            # On MacOSX there is a readlink tool with a different
-            # purpose than the GNU readlink tool. Check the found readlink.
-            ISGNU=`$READLINK --help 2>&1 | grep GNU`
-            if test "x$ISGNU" = x; then
-                 # A readlink that we do not know how to use.
-                 # Are there other non-GNU readlinks out there?
-                 READLINK_TESTED=yes
-                 READLINK=
-            fi
-        fi
-
-        if test "x$READLINK" != x; then
-            SCRIPT=`$READLINK -f $SCRIPT`
-        else
-            STARTDIR=$PWD
-            COUNTER=0
-            DIR=`dirname $SCRIPT`
-            FIL=`basename $SCRIPT`
-            while test $COUNTER -lt 20; do
-                ISLINK=`ls -l $DIR/$FIL | grep '\->' | sed -e 's/.*-> \(.*\)/\1/'`
-                if test "x$ISLINK" == x; then
-                    # This is not a symbolic link! We are done!
-                    break
-                fi
-                # The link might be relative! We have to use cd to travel safely.
-                cd $DIR
-                cd `dirname $ISLINK`
-                DIR=`pwd`
-                FIL=`basename $ISLINK`
-                let COUNTER=COUNTER+1
-            done
-            cd $STARTDIR
-            SCRIPT=$DIR/$FIL
-        fi
-    fi
-
-AUTOCONF_DIR=`dirname $0`
-
-# Where is the source? It is located two levels above the configure script.
-CURDIR="$PWD"
-cd "$AUTOCONF_DIR/../.."
-SRC_ROOT="`pwd`"
-if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-    SRC_ROOT_LENGTH=`pwd|wc -m`
-    if test $SRC_ROOT_LENGTH -gt 100; then
-        as_fn_error $? "Your base path is too long. It is $SRC_ROOT_LENGTH characters long, but only 100 is supported" "$LINENO" 5
-    fi
-fi
-
-cd "$CURDIR"
-
-
-    # Fail with message the path to the source root if var SRC_ROOT contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$SRC_ROOT" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            SRC_ROOT=`$CYGPATH -s -m -a "$SRC_ROOT"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            SRC_ROOT=`$ECHO "$SRC_ROOT" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            SRC_ROOT=`$CYGPATH -u "$SRC_ROOT"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the source root! \"$SRC_ROOT\"" "$LINENO" 5
-        fi
-    fi
-
-
-    # Fail with message the path to the current directory if var CURDIR contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$CURDIR" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            CURDIR=`$CYGPATH -s -m -a "$CURDIR"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            CURDIR=`$ECHO "$CURDIR" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            CURDIR=`$CYGPATH -u "$CURDIR"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the current directory! \"$CURDIR\"" "$LINENO" 5
-        fi
-    fi
-
-
-if test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
-    # Add extra search paths on solaris for utilities like ar and as etc...
-    PATH="$PATH:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin"
-fi
-
-# For cygwin we need cygpath first, since it is used everywhere.
-# Extract the first word of "cygpath", so it can be a program name with args.
-set dummy cygpath; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CYGPATH+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $CYGPATH in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CYGPATH="$CYGPATH" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_CYGPATH="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-CYGPATH=$ac_cv_path_CYGPATH
-if test -n "$CYGPATH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5
-$as_echo "$CYGPATH" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-PATH_SEP=":"
-if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-    if test "x$CYGPATH" = x; then
-        as_fn_error $? "Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path" "$LINENO" 5
-    fi
-    PATH_SEP=";"
-fi
-
-
-# You can force the sys-root if the sys-root encoded into the cross compiler tools
-# is not correct.
-
-# Check whether --with-sys-root was given.
-if test "${with_sys_root+set}" = set; then :
-  withval=$with_sys_root;
-fi
-
-
-if test "x$with_sys_root" != x; then
-  SYS_ROOT=$with_sys_root
-else
-  SYS_ROOT=/
-fi
-
-
-
-# Check whether --with-tools-dir was given.
-if test "${with_tools_dir+set}" = set; then :
-  withval=$with_tools_dir; TOOLS_DIR=$with_tools_dir
-fi
-
-
-
-# Check whether --with-devkit was given.
-if test "${with_devkit+set}" = set; then :
-  withval=$with_devkit;
-    if test "x$with_sys_root" != x; then
-      as_fn_error $? "Cannot specify both --with-devkit and --with-sys-root at the same time" "$LINENO" 5
-    fi
-    if test "x$with_tools_dir" != x; then
-      as_fn_error $? "Cannot specify both --with-devkit and --with-tools-dir at the same time" "$LINENO" 5
-    fi
-    TOOLS_DIR=$with_devkit/bin
-    SYS_ROOT=$with_devkit/$host_alias/libc
-
-fi
-
-
-
-
-# Setup default logging of stdout and stderr to build.log in the output root.
-BUILD_LOG='$(OUTPUT_ROOT)/build.log'
-BUILD_LOG_PREVIOUS='$(OUTPUT_ROOT)/build.log.old'
-BUILD_LOG_WRAPPER='$(SH) $(SRC_ROOT)/common/bin/logger.sh $(BUILD_LOG)'
-
-
-
-
-
-# Must be done before we can call HELP_MSG_MISSING_DEPENDENCY.
-
-    for ac_prog in apt-get yum port pkgutil pkgadd
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_PKGHANDLER+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$PKGHANDLER"; then
-  ac_cv_prog_PKGHANDLER="$PKGHANDLER" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_PKGHANDLER="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-PKGHANDLER=$ac_cv_prog_PKGHANDLER
-if test -n "$PKGHANDLER"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGHANDLER" >&5
-$as_echo "$PKGHANDLER" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$PKGHANDLER" && break
-done
-
-
-
-# Setup simple tools, that do not need have cross compilation support.
-# Without these, we can't properly run the rest of the configure script.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuration created at $DATE_WHEN_CONFIGURED." >&5
+$as_echo "$as_me: Configuration created at $DATE_WHEN_CONFIGURED." >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: configure script generated at timestamp $DATE_WHEN_GENERATED." >&5
+$as_echo "$as_me: configure script generated at timestamp $DATE_WHEN_GENERATED." >&6;}
+
+
 
 # Start with tools that do not need have cross compilation support
 # and can be expected to be found in the default PATH. These tools are
@@ -4443,6 +3756,65 @@
 
 
 
+    for ac_prog in bash
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_BASH+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $BASH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_BASH="$BASH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+BASH=$ac_cv_path_BASH
+if test -n "$BASH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH" >&5
+$as_echo "$BASH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$BASH" && break
+done
+
+
+    if test "x$BASH" = x; then
+        if test "xbash" = x; then
+          PROG_NAME=bash
+        else
+          PROG_NAME=bash
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
     for ac_prog in cat
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -4679,65 +4051,6 @@
 
 
 
-    for ac_prog in cpio
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CPIO+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $CPIO in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CPIO="$CPIO" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_CPIO="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-CPIO=$ac_cv_path_CPIO
-if test -n "$CPIO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPIO" >&5
-$as_echo "$CPIO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$CPIO" && break
-done
-
-
-    if test "x$CPIO" = x; then
-        if test "xcpio" = x; then
-          PROG_NAME=cpio
-        else
-          PROG_NAME=cpio
-        fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
-$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
-        as_fn_error $? "Cannot continue" "$LINENO" 5
-    fi
-
-
-
     for ac_prog in cut
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -4856,65 +4169,6 @@
 
 
 
-    for ac_prog in df
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_DF+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $DF in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_DF="$DF" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_DF="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-DF=$ac_cv_path_DF
-if test -n "$DF"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DF" >&5
-$as_echo "$DF" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$DF" && break
-done
-
-
-    if test "x$DF" = x; then
-        if test "xdf" = x; then
-          PROG_NAME=df
-        else
-          PROG_NAME=df
-        fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
-$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
-        as_fn_error $? "Cannot continue" "$LINENO" 5
-    fi
-
-
-
     for ac_prog in gdiff diff
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -4974,6 +4228,65 @@
 
 
 
+    for ac_prog in dirname
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_DIRNAME+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DIRNAME in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DIRNAME="$DIRNAME" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DIRNAME="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DIRNAME=$ac_cv_path_DIRNAME
+if test -n "$DIRNAME"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIRNAME" >&5
+$as_echo "$DIRNAME" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DIRNAME" && break
+done
+
+
+    if test "x$DIRNAME" = x; then
+        if test "xdirname" = x; then
+          PROG_NAME=dirname
+        else
+          PROG_NAME=dirname
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
     for ac_prog in echo
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -5446,6 +4759,65 @@
 
 
 
+    for ac_prog in mktemp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MKTEMP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MKTEMP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MKTEMP="$MKTEMP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_MKTEMP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+MKTEMP=$ac_cv_path_MKTEMP
+if test -n "$MKTEMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKTEMP" >&5
+$as_echo "$MKTEMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$MKTEMP" && break
+done
+
+
+    if test "x$MKTEMP" = x; then
+        if test "xmktemp" = x; then
+          PROG_NAME=mktemp
+        else
+          PROG_NAME=mktemp
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
     for ac_prog in mv
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -5564,6 +4936,124 @@
 
 
 
+    for ac_prog in pwd
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_THEPWDCMD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $THEPWDCMD in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_THEPWDCMD="$THEPWDCMD" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_THEPWDCMD="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+THEPWDCMD=$ac_cv_path_THEPWDCMD
+if test -n "$THEPWDCMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $THEPWDCMD" >&5
+$as_echo "$THEPWDCMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$THEPWDCMD" && break
+done
+
+
+    if test "x$THEPWDCMD" = x; then
+        if test "xpwd" = x; then
+          PROG_NAME=thepwdcmd
+        else
+          PROG_NAME=pwd
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
+    for ac_prog in rm
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_RM+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $RM in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_RM="$RM" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+RM=$ac_cv_path_RM
+if test -n "$RM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
+$as_echo "$RM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$RM" && break
+done
+
+
+    if test "x$RM" = x; then
+        if test "xrm" = x; then
+          PROG_NAME=rm
+        else
+          PROG_NAME=rm
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
     for ac_prog in sh
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -5977,6 +5467,65 @@
 
 
 
+    for ac_prog in uname
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_UNAME+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $UNAME in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_UNAME="$UNAME" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_UNAME="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+UNAME=$ac_cv_path_UNAME
+if test -n "$UNAME"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAME" >&5
+$as_echo "$UNAME" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$UNAME" && break
+done
+
+
+    if test "x$UNAME" = x; then
+        if test "xuname" = x; then
+          PROG_NAME=uname
+        else
+          PROG_NAME=uname
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
     for ac_prog in uniq
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -6036,65 +5585,6 @@
 
 
 
-    for ac_prog in unzip
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_UNZIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $UNZIP in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_UNZIP="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-UNZIP=$ac_cv_path_UNZIP
-if test -n "$UNZIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNZIP" >&5
-$as_echo "$UNZIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$UNZIP" && break
-done
-
-
-    if test "x$UNZIP" = x; then
-        if test "xunzip" = x; then
-          PROG_NAME=unzip
-        else
-          PROG_NAME=unzip
-        fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
-$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
-        as_fn_error $? "Cannot continue" "$LINENO" 5
-    fi
-
-
-
     for ac_prog in wc
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -6154,6 +5644,65 @@
 
 
 
+    for ac_prog in which
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_WHICH+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $WHICH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WHICH="$WHICH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_WHICH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+WHICH=$ac_cv_path_WHICH
+if test -n "$WHICH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WHICH" >&5
+$as_echo "$WHICH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$WHICH" && break
+done
+
+
+    if test "x$WHICH" = x; then
+        if test "xwhich" = x; then
+          PROG_NAME=which
+        else
+          PROG_NAME=which
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
     for ac_prog in xargs
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -6213,65 +5762,6 @@
 
 
 
-    for ac_prog in zip
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ZIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ZIP in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ZIP="$ZIP" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ZIP=$ac_cv_path_ZIP
-if test -n "$ZIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIP" >&5
-$as_echo "$ZIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ZIP" && break
-done
-
-
-    if test "x$ZIP" = x; then
-        if test "xzip" = x; then
-          PROG_NAME=zip
-        else
-          PROG_NAME=zip
-        fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
-$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
-        as_fn_error $? "Cannot continue" "$LINENO" 5
-    fi
-
-
-
 # Then required tools that require some special treatment.
 for ac_prog in gawk mawk nawk awk
 do
@@ -6700,1231 +6190,1150 @@
     fi
 
 
-
-  # We need to find a recent version of GNU make. Especially on Solaris, this can be tricky.
-  if test "x$MAKE" != x; then
-    # User has supplied a make, test it.
-    if test ! -f "$MAKE"; then
-      as_fn_error $? "The specified make (by MAKE=$MAKE) is not found." "$LINENO" 5
-    fi
-
-  MAKE_CANDIDATE=""$MAKE""
-  DESCRIPTION="user supplied MAKE="
-  if test "x$MAKE_CANDIDATE" != x; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
-$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
-
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$MAKE_CANDIDATE"
-    car="${tmp%% *}"
-    tmp="$MAKE_CANDIDATE EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        MAKE_CANDIDATE="$car ${cdr% *}"
-    else
-        MAKE_CANDIDATE="$car"
-    fi
-
-    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
-    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
-    if test "x$IS_GNU_MAKE" = x; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
-$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
-    else
-      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
-      if test "x$IS_MODERN_MAKE" = x; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
-$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
-      else
-        FOUND_MAKE=$MAKE_CANDIDATE
-      fi
-    fi
-  fi
-
-    if test "x$FOUND_MAKE" = x; then
-      as_fn_error $? "The specified make (by MAKE=$MAKE) is not GNU make 3.81 or newer." "$LINENO" 5
-    fi
-  else
-    # Try our hardest to locate a correct version of GNU make
-    for ac_prog in gmake
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CHECK_GMAKE+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $CHECK_GMAKE in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CHECK_GMAKE="$CHECK_GMAKE" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_CHECK_GMAKE="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-CHECK_GMAKE=$ac_cv_path_CHECK_GMAKE
-if test -n "$CHECK_GMAKE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_GMAKE" >&5
-$as_echo "$CHECK_GMAKE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$CHECK_GMAKE" && break
-done
-
-
-  MAKE_CANDIDATE=""$CHECK_GMAKE""
-  DESCRIPTION="gmake in PATH"
-  if test "x$MAKE_CANDIDATE" != x; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
-$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
-
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$MAKE_CANDIDATE"
-    car="${tmp%% *}"
-    tmp="$MAKE_CANDIDATE EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        MAKE_CANDIDATE="$car ${cdr% *}"
-    else
-        MAKE_CANDIDATE="$car"
-    fi
-
-    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
-    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
-    if test "x$IS_GNU_MAKE" = x; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
-$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
-    else
-      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
-      if test "x$IS_MODERN_MAKE" = x; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
-$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
-      else
-        FOUND_MAKE=$MAKE_CANDIDATE
-      fi
-    fi
-  fi
-
-
-    if test "x$FOUND_MAKE" = x; then
-      for ac_prog in make
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CHECK_MAKE+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $CHECK_MAKE in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CHECK_MAKE="$CHECK_MAKE" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_CHECK_MAKE="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-CHECK_MAKE=$ac_cv_path_CHECK_MAKE
-if test -n "$CHECK_MAKE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_MAKE" >&5
-$as_echo "$CHECK_MAKE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$CHECK_MAKE" && break
-done
-
-
-  MAKE_CANDIDATE=""$CHECK_MAKE""
-  DESCRIPTION="make in PATH"
-  if test "x$MAKE_CANDIDATE" != x; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
-$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
-
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$MAKE_CANDIDATE"
-    car="${tmp%% *}"
-    tmp="$MAKE_CANDIDATE EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        MAKE_CANDIDATE="$car ${cdr% *}"
-    else
-        MAKE_CANDIDATE="$car"
-    fi
-
-    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
-    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
-    if test "x$IS_GNU_MAKE" = x; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
-$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
-    else
-      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
-      if test "x$IS_MODERN_MAKE" = x; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
-$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
-      else
-        FOUND_MAKE=$MAKE_CANDIDATE
-      fi
-    fi
-  fi
-
-    fi
-
-    if test "x$FOUND_MAKE" = x; then
-      if test "x$TOOLS_DIR" != x; then
-        # We have a tools-dir, check that as well before giving up.
-        OLD_PATH=$PATH
-        PATH=$TOOLS_DIR:$PATH
-        for ac_prog in gmake
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CHECK_TOOLSDIR_GMAKE+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $CHECK_TOOLSDIR_GMAKE in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CHECK_TOOLSDIR_GMAKE="$CHECK_TOOLSDIR_GMAKE" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_CHECK_TOOLSDIR_GMAKE="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-CHECK_TOOLSDIR_GMAKE=$ac_cv_path_CHECK_TOOLSDIR_GMAKE
-if test -n "$CHECK_TOOLSDIR_GMAKE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_GMAKE" >&5
-$as_echo "$CHECK_TOOLSDIR_GMAKE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$CHECK_TOOLSDIR_GMAKE" && break
-done
-
-
-  MAKE_CANDIDATE=""$CHECK_TOOLSDIR_GMAKE""
-  DESCRIPTION="gmake in tools-dir"
-  if test "x$MAKE_CANDIDATE" != x; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
-$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
-
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$MAKE_CANDIDATE"
-    car="${tmp%% *}"
-    tmp="$MAKE_CANDIDATE EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        MAKE_CANDIDATE="$car ${cdr% *}"
-    else
-        MAKE_CANDIDATE="$car"
-    fi
-
-    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
-    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
-    if test "x$IS_GNU_MAKE" = x; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
-$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
-    else
-      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
-      if test "x$IS_MODERN_MAKE" = x; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
-$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
-      else
-        FOUND_MAKE=$MAKE_CANDIDATE
-      fi
-    fi
-  fi
-
-        if test "x$FOUND_MAKE" = x; then
-          for ac_prog in make
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CHECK_TOOLSDIR_MAKE+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $CHECK_TOOLSDIR_MAKE in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CHECK_TOOLSDIR_MAKE="$CHECK_TOOLSDIR_MAKE" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_CHECK_TOOLSDIR_MAKE="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-CHECK_TOOLSDIR_MAKE=$ac_cv_path_CHECK_TOOLSDIR_MAKE
-if test -n "$CHECK_TOOLSDIR_MAKE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_MAKE" >&5
-$as_echo "$CHECK_TOOLSDIR_MAKE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$CHECK_TOOLSDIR_MAKE" && break
-done
-
-
-  MAKE_CANDIDATE=""$CHECK_TOOLSDIR_MAKE""
-  DESCRIPTION="make in tools-dir"
-  if test "x$MAKE_CANDIDATE" != x; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
-$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
-
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$MAKE_CANDIDATE"
-    car="${tmp%% *}"
-    tmp="$MAKE_CANDIDATE EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        MAKE_CANDIDATE="$car ${cdr% *}"
-    else
-        MAKE_CANDIDATE="$car"
-    fi
-
-    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
-    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
-    if test "x$IS_GNU_MAKE" = x; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
-$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
-    else
-      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
-      if test "x$IS_MODERN_MAKE" = x; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
-$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
-      else
-        FOUND_MAKE=$MAKE_CANDIDATE
-      fi
-    fi
-  fi
-
-        fi
-        PATH=$OLD_PATH
-      fi
-    fi
-
-    if test "x$FOUND_MAKE" = x; then
-      as_fn_error $? "Cannot find GNU make 3.81 or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure." "$LINENO" 5
-    fi
-  fi
-
-  MAKE=$FOUND_MAKE
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: Using GNU make 3.81 (or later) at $FOUND_MAKE (version: $MAKE_VERSION_STRING)" >&5
-$as_echo "$as_me: Using GNU make 3.81 (or later) at $FOUND_MAKE (version: $MAKE_VERSION_STRING)" >&6;}
-
-
-
-    for ac_prog in rm
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_RM+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $RM in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_RM="$RM" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-RM=$ac_cv_path_RM
-if test -n "$RM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
-$as_echo "$RM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$RM" && break
-done
-
-
-    if test "x$RM" = x; then
-        if test "xrm" = x; then
-          PROG_NAME=rm
-        else
-          PROG_NAME=rm
-        fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
-$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
-        as_fn_error $? "Cannot continue" "$LINENO" 5
-    fi
-
-
+# Always force rm.
 RM="$RM -f"
 
-
-    # Test if find supports -delete
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if find supports -delete" >&5
-$as_echo_n "checking if find supports -delete... " >&6; }
-    FIND_DELETE="-delete"
-
-    DELETEDIR=`mktemp -d tmp.XXXXXXXXXX` || (echo Could not create temporary directory!; exit $?)
-
-    echo Hejsan > $DELETEDIR/TestIfFindSupportsDelete
-
-    TEST_DELETE=`$FIND "$DELETEDIR" -name TestIfFindSupportsDelete $FIND_DELETE 2>&1`
-    if test -f $DELETEDIR/TestIfFindSupportsDelete; then
-        # No, it does not.
-        rm $DELETEDIR/TestIfFindSupportsDelete
-        FIND_DELETE="-exec rm \{\} \+"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    fi
-    rmdir $DELETEDIR
-
-
-
-# Non-required basic tools
-
-# Extract the first word of "pwd", so it can be a program name with args.
-set dummy pwd; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_THEPWDCMD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $THEPWDCMD in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_THEPWDCMD="$THEPWDCMD" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_THEPWDCMD="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-THEPWDCMD=$ac_cv_path_THEPWDCMD
-if test -n "$THEPWDCMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $THEPWDCMD" >&5
-$as_echo "$THEPWDCMD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "ldd", so it can be a program name with args.
-set dummy ldd; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_LDD+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $LDD in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_LDD="$LDD" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_LDD="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-LDD=$ac_cv_path_LDD
-if test -n "$LDD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDD" >&5
-$as_echo "$LDD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test "x$LDD" = "x"; then
-    # List shared lib dependencies is used for
-    # debug output and checking for forbidden dependencies.
-    # We can build without it.
-    LDD="true"
-fi
-# Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_OTOOL+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $OTOOL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_OTOOL="$OTOOL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_OTOOL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-OTOOL=$ac_cv_path_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test "x$OTOOL" = "x"; then
-   OTOOL="true"
-fi
-for ac_prog in readelf greadelf
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_READELF+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $READELF in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_READELF="$READELF" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_READELF="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-READELF=$ac_cv_path_READELF
-if test -n "$READELF"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
-$as_echo "$READELF" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$READELF" && break
-done
-
-for ac_prog in objdump gobjdump
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_OBJDUMP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $OBJDUMP in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_OBJDUMP="$OBJDUMP" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_OBJDUMP="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-OBJDUMP=$ac_cv_path_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$OBJDUMP" && break
-done
-
-# Extract the first word of "hg", so it can be a program name with args.
-set dummy hg; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_HG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $HG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_HG="$HG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_HG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-HG=$ac_cv_path_HG
-if test -n "$HG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HG" >&5
-$as_echo "$HG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-# Check if pkg-config is available.
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-		PKG_CONFIG=""
-	fi
-
-fi
-
-# After basic tools have been setup, we can check build os specific details.
-
-###############################################################################
-
-# Note that this is the build platform OS version!
-
-OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`"
-OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`"
-OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`"
-OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`"
-
-
-
-
-
-# Setup builddeps, for automatic downloading of tools we need.
-# This is needed before we can call BDEPS_CHECK_MODULE, which is done in
-# boot-jdk setup, but we need to have basic tools setup first.
-
-
-# Check whether --with-builddeps-conf was given.
-if test "${with_builddeps_conf+set}" = set; then :
-  withval=$with_builddeps_conf;
-fi
-
-
-
-# Check whether --with-builddeps-server was given.
-if test "${with_builddeps_server+set}" = set; then :
-  withval=$with_builddeps_server;
-fi
-
-
-
-# Check whether --with-builddeps-dir was given.
-if test "${with_builddeps_dir+set}" = set; then :
-  withval=$with_builddeps_dir;
-else
-  with_builddeps_dir=/localhome/builddeps
-fi
-
-
-
-# Check whether --with-builddeps-group was given.
-if test "${with_builddeps_group+set}" = set; then :
-  withval=$with_builddeps_group;
-fi
-
-
-# Check whether --enable-list-builddeps was given.
-if test "${enable_list_builddeps+set}" = set; then :
-  enableval=$enable_list_builddeps; LIST_BUILDDEPS="${enableval}"
-else
-  LIST_BUILDDEPS='no'
-fi
-
-
-if test "x$LIST_BUILDDEPS" = xyes; then
-    echo
-    echo List of build dependencies known to the configure script,
-    echo that can be used in builddeps.conf files:
-    cat $AUTOCONF_DIR/*.ac $AUTOCONF_DIR/*.m4 | grep BDEPS_CHECK_MODULE\( | cut -f 2 -d ',' | tr -d ' ' | sort
-    echo
-    exit 1
-fi
-
-
-
-    if test "x$with_builddeps_server" != x || test "x$with_builddeps_conf" != x; then
-        if test "x$with_builddeps_conf" != x; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supplied builddeps configuration file" >&5
-$as_echo_n "checking for supplied builddeps configuration file... " >&6; }
-            builddepsfile=$with_builddeps_conf
-            if test -s $builddepsfile; then
-                . $builddepsfile
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: loaded!" >&5
-$as_echo "loaded!" >&6; }
-            else
-               as_fn_error $? "The given builddeps conf file $with_builddeps_conf could not be loaded!" "$LINENO" 5
-           fi
-        else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for builddeps.conf files in sources..." >&5
-$as_echo_n "checking for builddeps.conf files in sources...... " >&6; }
-            builddepsfile=`mktemp`
-            touch $builddepsfile
-            # Put all found confs into a single file.
-            find ${SRC_ROOT} -name builddeps.conf -exec cat \{\} \; >> $builddepsfile
-            # Source the file to acquire the variables
-            if test -s $builddepsfile; then
-                . $builddepsfile
-                { $as_echo "$as_me:${as_lineno-$LINENO}: result: found at least one!" >&5
-$as_echo "found at least one!" >&6; }
-            else
-               as_fn_error $? "Could not find any builddeps.conf at all!" "$LINENO" 5
-           fi
-        fi
-        # Create build and target names that use _ instead of "-" and ".".
-        # This is necessary to use them in variable names.
-        build_var=`echo ${OPENJDK_BUILD_AUTOCONF_NAME} | tr '-' '_' | tr '.' '_'`
-        target_var=`echo ${OPENJDK_TARGET_AUTOCONF_NAME} | tr '-' '_' | tr '.' '_'`
-        # Extract rewrite information for build and target
-        eval rewritten_build=\${REWRITE_${build_var}}
-        if test "x$rewritten_build" = x; then
-            rewritten_build=${OPENJDK_BUILD_AUTOCONF_NAME}
-            echo Build stays the same $rewritten_build
-        else
-            echo Rewriting build for builddeps into $rewritten_build
-        fi
-        eval rewritten_target=\${REWRITE_${target_var}}
-        if test "x$rewritten_target" = x; then
-            rewritten_target=${OPENJDK_TARGET_AUTOCONF_NAME}
-            echo Target stays the same $rewritten_target
-        else
-            echo Rewriting target for builddeps into $rewritten_target
-        fi
-        rewritten_build_var=`echo ${rewritten_build} | tr '-' '_' | tr '.' '_'`
-        rewritten_target_var=`echo ${rewritten_target} | tr '-' '_' | tr '.' '_'`
-    fi
-    for ac_prog in 7z unzip
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_BDEPS_UNZIP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$BDEPS_UNZIP"; then
-  ac_cv_prog_BDEPS_UNZIP="$BDEPS_UNZIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_BDEPS_UNZIP="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-BDEPS_UNZIP=$ac_cv_prog_BDEPS_UNZIP
-if test -n "$BDEPS_UNZIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BDEPS_UNZIP" >&5
-$as_echo "$BDEPS_UNZIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$BDEPS_UNZIP" && break
-done
-
-    if test "x$BDEPS_UNZIP" = x7z; then
-        BDEPS_UNZIP="7z x"
-    fi
-
-    for ac_prog in wget lftp ftp
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_BDEPS_FTP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$BDEPS_FTP"; then
-  ac_cv_prog_BDEPS_FTP="$BDEPS_FTP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_BDEPS_FTP="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-BDEPS_FTP=$ac_cv_prog_BDEPS_FTP
-if test -n "$BDEPS_FTP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BDEPS_FTP" >&5
-$as_echo "$BDEPS_FTP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$BDEPS_FTP" && break
-done
-
-
-
-###############################################################################
-#
-# Determine OpenJDK variants, options and version numbers.
-#
-###############################################################################
-
-# We need build & target for this.
+# These are not required on all platforms
+# Extract the first word of "cygpath", so it can be a program name with args.
+set dummy cygpath; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_CYGPATH+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CYGPATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CYGPATH="$CYGPATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_CYGPATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CYGPATH=$ac_cv_path_CYGPATH
+if test -n "$CYGPATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5
+$as_echo "$CYGPATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "readlink", so it can be a program name with args.
+set dummy readlink; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_READLINK+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $READLINK in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+READLINK=$ac_cv_path_READLINK
+if test -n "$READLINK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5
+$as_echo "$READLINK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "df", so it can be a program name with args.
+set dummy df; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_DF+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DF in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DF="$DF" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DF="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DF=$ac_cv_path_DF
+if test -n "$DF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DF" >&5
+$as_echo "$DF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "SetFile", so it can be a program name with args.
+set dummy SetFile; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_SETFILE+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $SETFILE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_SETFILE="$SETFILE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_SETFILE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+SETFILE=$ac_cv_path_SETFILE
+if test -n "$SETFILE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETFILE" >&5
+$as_echo "$SETFILE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+# Now we can determine OpenJDK build and target platforms. This is required to
+# have early on.
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if test "${ac_cv_target+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5 ;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+# Figure out the build and target systems. # Note that in autoconf terminology, "build" is obvious, but "target"
+# is confusing; it assumes you are cross-compiling a cross-compiler (!)  and "target" is thus the target of the
+# product you're building. The target of this build is called "host". Since this is confusing to most people, we
+# have not adopted that system, but use "target" as the platform we are building for. In some places though we need
+# to use the configure naming style.
+
+
+
+
+
+    # Copy the autoconf trip/quadruplet verbatim to OPENJDK_TARGET_AUTOCONF_NAME
+    # (from the autoconf "host") and OPENJDK_BUILD_AUTOCONF_NAME
+    # Note that we might later on rewrite e.g. OPENJDK_TARGET_CPU due to reduced build,
+    # but this will not change the value of OPENJDK_TARGET_AUTOCONF_NAME.
+    OPENJDK_TARGET_AUTOCONF_NAME="$host"
+    OPENJDK_BUILD_AUTOCONF_NAME="$build"
+
+
+
+    # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
+
+  case "$build_os" in
+    *linux*)
+      VAR_OS=linux
+      VAR_OS_API=posix
+      VAR_OS_ENV=linux
+      ;;
+    *solaris*)
+      VAR_OS=solaris
+      VAR_OS_API=posix
+      VAR_OS_ENV=solaris
+      ;;
+    *darwin*)
+      VAR_OS=macosx
+      VAR_OS_API=posix
+      VAR_OS_ENV=macosx
+      ;;
+    *bsd*)
+      VAR_OS=bsd
+      VAR_OS_API=posix
+      VAR_OS_ENV=bsd
+      ;;
+    *cygwin*)
+      VAR_OS=windows
+      VAR_OS_API=winapi
+      VAR_OS_ENV=windows.cygwin
+      ;;
+    *mingw*)
+      VAR_OS=windows
+      VAR_OS_API=winapi
+      VAR_OS_ENV=windows.msys
+      ;;
+    *)
+      as_fn_error $? "unsupported operating system $build_os" "$LINENO" 5
+      ;;
+  esac
+
+
+  # First argument is the cpu name from the trip/quad
+  case "$build_cpu" in
+    x86_64)
+      VAR_CPU=x86_64
+      VAR_CPU_ARCH=x86
+      VAR_CPU_BITS=64
+      VAR_CPU_ENDIAN=little
+      ;;
+    i?86)
+      VAR_CPU=x86
+      VAR_CPU_ARCH=x86
+      VAR_CPU_BITS=32
+      VAR_CPU_ENDIAN=little
+      ;;
+    arm*)
+      VAR_CPU=arm
+      VAR_CPU_ARCH=arm
+      VAR_CPU_BITS=32
+      VAR_CPU_ENDIAN=little
+      ;;
+    powerpc)
+      VAR_CPU=ppc
+      VAR_CPU_ARCH=ppc
+      VAR_CPU_BITS=32
+      VAR_CPU_ENDIAN=big
+       ;;
+    powerpc64)
+      VAR_CPU=ppc64
+      VAR_CPU_ARCH=ppc
+      VAR_CPU_BITS=64
+      VAR_CPU_ENDIAN=big
+       ;;
+    sparc)
+      VAR_CPU=sparc
+      VAR_CPU_ARCH=sparc
+      VAR_CPU_BITS=32
+      VAR_CPU_ENDIAN=big
+       ;;
+    sparcv9)
+      VAR_CPU=sparcv9
+      VAR_CPU_ARCH=sparc
+      VAR_CPU_BITS=64
+      VAR_CPU_ENDIAN=big
+       ;;
+    *)
+      as_fn_error $? "unsupported cpu $build_cpu" "$LINENO" 5
+      ;;
+  esac
+
+    # ..and setup our own variables. (Do this explicitely to facilitate searching)
+    OPENJDK_BUILD_OS="$VAR_OS"
+    OPENJDK_BUILD_OS_API="$VAR_OS_API"
+    OPENJDK_BUILD_OS_ENV="$VAR_OS_ENV"
+    OPENJDK_BUILD_CPU="$VAR_CPU"
+    OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
+    OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
+    OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking openjdk-build os-cpu" >&5
+$as_echo_n "checking openjdk-build os-cpu... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" >&5
+$as_echo "$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" >&6; }
+
+    # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
+
+  case "$host_os" in
+    *linux*)
+      VAR_OS=linux
+      VAR_OS_API=posix
+      VAR_OS_ENV=linux
+      ;;
+    *solaris*)
+      VAR_OS=solaris
+      VAR_OS_API=posix
+      VAR_OS_ENV=solaris
+      ;;
+    *darwin*)
+      VAR_OS=macosx
+      VAR_OS_API=posix
+      VAR_OS_ENV=macosx
+      ;;
+    *bsd*)
+      VAR_OS=bsd
+      VAR_OS_API=posix
+      VAR_OS_ENV=bsd
+      ;;
+    *cygwin*)
+      VAR_OS=windows
+      VAR_OS_API=winapi
+      VAR_OS_ENV=windows.cygwin
+      ;;
+    *mingw*)
+      VAR_OS=windows
+      VAR_OS_API=winapi
+      VAR_OS_ENV=windows.msys
+      ;;
+    *)
+      as_fn_error $? "unsupported operating system $host_os" "$LINENO" 5
+      ;;
+  esac
+
+
+  # First argument is the cpu name from the trip/quad
+  case "$host_cpu" in
+    x86_64)
+      VAR_CPU=x86_64
+      VAR_CPU_ARCH=x86
+      VAR_CPU_BITS=64
+      VAR_CPU_ENDIAN=little
+      ;;
+    i?86)
+      VAR_CPU=x86
+      VAR_CPU_ARCH=x86
+      VAR_CPU_BITS=32
+      VAR_CPU_ENDIAN=little
+      ;;
+    arm*)
+      VAR_CPU=arm
+      VAR_CPU_ARCH=arm
+      VAR_CPU_BITS=32
+      VAR_CPU_ENDIAN=little
+      ;;
+    powerpc)
+      VAR_CPU=ppc
+      VAR_CPU_ARCH=ppc
+      VAR_CPU_BITS=32
+      VAR_CPU_ENDIAN=big
+       ;;
+    powerpc64)
+      VAR_CPU=ppc64
+      VAR_CPU_ARCH=ppc
+      VAR_CPU_BITS=64
+      VAR_CPU_ENDIAN=big
+       ;;
+    sparc)
+      VAR_CPU=sparc
+      VAR_CPU_ARCH=sparc
+      VAR_CPU_BITS=32
+      VAR_CPU_ENDIAN=big
+       ;;
+    sparcv9)
+      VAR_CPU=sparcv9
+      VAR_CPU_ARCH=sparc
+      VAR_CPU_BITS=64
+      VAR_CPU_ENDIAN=big
+       ;;
+    *)
+      as_fn_error $? "unsupported cpu $host_cpu" "$LINENO" 5
+      ;;
+  esac
+
+    # ... and setup our own variables. (Do this explicitely to facilitate searching)
+    OPENJDK_TARGET_OS="$VAR_OS"
+    OPENJDK_TARGET_OS_API="$VAR_OS_API"
+    OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
+    OPENJDK_TARGET_CPU="$VAR_CPU"
+    OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH"
+    OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
+    OPENJDK_TARGET_CPU_ENDIAN="$VAR_CPU_ENDIAN"
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking openjdk-target os-cpu" >&5
+$as_echo_n "checking openjdk-target os-cpu... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" >&5
+$as_echo "$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" >&6; }
+
+
+
+# Check whether --with-target-bits was given.
+if test "${with_target_bits+set}" = set; then :
+  withval=$with_target_bits;
+fi
+
+
+  # We have three types of compiles:
+  # native  == normal compilation, target system == build system
+  # cross   == traditional cross compilation, target system != build system; special toolchain needed
+  # reduced == using native compilers, but with special flags (e.g. -m32) to produce 32-bit builds on 64-bit machines
+  #
+  if test "x$OPENJDK_BUILD_AUTOCONF_NAME" != "x$OPENJDK_TARGET_AUTOCONF_NAME"; then
+    # We're doing a proper cross-compilation
+    COMPILE_TYPE="cross"
+  else
+    COMPILE_TYPE="native"
+  fi
+
+  if test "x$with_target_bits" != x; then
+    if test "x$COMPILE_TYPE" = "xcross"; then
+      as_fn_error $? "It is not possible to combine --with-target-bits=X and proper cross-compilation. Choose either." "$LINENO" 5
+    fi
+
+    if test "x$with_target_bits" = x32 && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+      # A reduced build is requested
+      COMPILE_TYPE="reduced"
+      OPENJDK_TARGET_CPU_BITS=32
+      if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
+        OPENJDK_TARGET_CPU=x86
+      elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+        OPENJDK_TARGET_CPU=sparc
+      else
+        as_fn_error $? "Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9" "$LINENO" 5
+      fi
+    elif test "x$with_target_bits" = x64 && test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+      as_fn_error $? "It is not possible to use --with-target-bits=64 on a 32 bit system. Use proper cross-compilation instead." "$LINENO" 5
+    elif test "x$with_target_bits" = "x$OPENJDK_TARGET_CPU_BITS"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: --with-target-bits are set to build platform address size; argument has no meaning" >&5
+$as_echo "$as_me: --with-target-bits are set to build platform address size; argument has no meaning" >&6;}
+    else
+      as_fn_error $? "--with-target-bits can only be 32 or 64, you specified $with_target_bits!" "$LINENO" 5
+    fi
+  fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking compilation type" >&5
+$as_echo_n "checking compilation type... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMPILE_TYPE" >&5
+$as_echo "$COMPILE_TYPE" >&6; }
+
+
+    if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
+       REQUIRED_OS_NAME=SunOS
+       REQUIRED_OS_VERSION=5.10
+    fi
+    if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
+       REQUIRED_OS_NAME=Linux
+       REQUIRED_OS_VERSION=2.6
+    fi
+    if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+        REQUIRED_OS_NAME=Windows
+        if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
+            REQUIRED_OS_VERSION=5.2
+        else
+            REQUIRED_OS_VERSION=5.1
+        fi
+    fi
+    if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
+        REQUIRED_OS_NAME=Darwin
+        REQUIRED_OS_VERSION=11.2
+    fi
+
+
+
+
+
+    # Also store the legacy naming of the cpu.
+    # Ie i586 and amd64 instead of x86 and x86_64
+    OPENJDK_TARGET_CPU_LEGACY="$OPENJDK_TARGET_CPU"
+    if test "x$OPENJDK_TARGET_CPU" = xx86; then
+      OPENJDK_TARGET_CPU_LEGACY="i586"
+    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+      # On all platforms except MacOSX replace x86_64 with amd64.
+      OPENJDK_TARGET_CPU_LEGACY="amd64"
+    fi
+
+
+    # And the second legacy naming of the cpu.
+    # Ie i386 and amd64 instead of x86 and x86_64.
+    OPENJDK_TARGET_CPU_LEGACY_LIB="$OPENJDK_TARGET_CPU"
+    if test "x$OPENJDK_TARGET_CPU" = xx86; then
+      OPENJDK_TARGET_CPU_LEGACY_LIB="i386"
+    elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+      OPENJDK_TARGET_CPU_LEGACY_LIB="amd64"
+    fi
+
+
+    # This is the name of the cpu (but using i386 and amd64 instead of
+    # x86 and x86_64, respectively), preceeded by a /, to be used when
+    # locating libraries. On macosx, it's empty, though.
+    OPENJDK_TARGET_CPU_LIBDIR="/$OPENJDK_TARGET_CPU_LEGACY_LIB"
+    if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+        OPENJDK_TARGET_CPU_LIBDIR=""
+    fi
+
+
+    # OPENJDK_TARGET_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
+    # /amd64 or /sparcv9. This string is appended to some library paths, like this:
+    # /usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libexample.so
+    OPENJDK_TARGET_CPU_ISADIR=""
+    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+      if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+          OPENJDK_TARGET_CPU_ISADIR="/amd64"
+      elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+          OPENJDK_TARGET_CPU_ISADIR="/sparcv9"
+      fi
+    fi
+
+
+    # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
+    OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
+    if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
+      # On linux only, we replace x86 with i386.
+      OPENJDK_TARGET_CPU_OSARCH="i386"
+    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+      # On all platforms except macosx, we replace x86_64 with amd64.
+      OPENJDK_TARGET_CPU_OSARCH="amd64"
+    fi
+
+
+    OPENJDK_TARGET_CPU_JLI="$OPENJDK_TARGET_CPU"
+    if test "x$OPENJDK_TARGET_CPU" = xx86; then
+      OPENJDK_TARGET_CPU_JLI="i386"
+    elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+      # On all platforms except macosx, we replace x86_64 with amd64.
+      OPENJDK_TARGET_CPU_JLI="amd64"
+    fi
+    # Now setup the -D flags for building libjli.
+    OPENJDK_TARGET_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_TARGET_CPU_JLI\"'"
+    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+      if test "x$OPENJDK_TARGET_CPU_ARCH" = xsparc; then
+        OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'"
+      elif test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
+        OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"
+      fi
+    fi
+
+
+    # Setup OPENJDK_TARGET_OS_API_DIR, used in source paths.
+    if test "x$OPENJDK_TARGET_OS_API" = xposix; then
+        OPENJDK_TARGET_OS_API_DIR="solaris"
+    fi
+    if test "x$OPENJDK_TARGET_OS_API" = xwinapi; then
+        OPENJDK_TARGET_OS_API_DIR="windows"
+    fi
+
+
+    if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+        A_LP64="LP64:="
+        # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
+        # unpack200.exe
+        if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+            ADD_LP64="-D_LP64=1"
+        fi
+    fi
+    LP64=$A_LP64
+
+
+    if test "x$COMPILE_TYPE" = "xcross"; then
+      # FIXME: ... or should this include reduced builds..?
+      DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY"
+    else
+      DEFINE_CROSS_COMPILE_ARCH=""
+    fi
+
+
+
+
+# Continue setting up basic stuff. Most remaining code require fundamental tools.
+
+# Locate the directory of this script.
+SCRIPT="$0"
+
+    if test "x$OPENJDK_BUILD_OS" != xwindows; then
+        # Follow a chain of symbolic links. Use readlink
+        # where it exists, else fall back to horribly
+        # complicated shell code.
+        if test "x$READLINK_TESTED" != yes; then
+            # On MacOSX there is a readlink tool with a different
+            # purpose than the GNU readlink tool. Check the found readlink.
+            ISGNU=`$READLINK --help 2>&1 | $GREP GNU`
+            if test "x$ISGNU" = x; then
+                 # A readlink that we do not know how to use.
+                 # Are there other non-GNU readlinks out there?
+                 READLINK_TESTED=yes
+                 READLINK=
+            fi
+        fi
+
+        if test "x$READLINK" != x; then
+            SCRIPT=`$READLINK -f $SCRIPT`
+        else
+            STARTDIR=$PWD
+            COUNTER=0
+            sym_link_dir=`$DIRNAME $SCRIPT`
+            sym_link_file=`$BASENAME $SCRIPT`
+            while test $COUNTER -lt 20; do
+                ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+                if test "x$ISLINK" == x; then
+                    # This is not a symbolic link! We are done!
+                    break
+                fi
+                # The link might be relative! We have to use cd to travel safely.
+                cd $sym_link_dir
+                # ... and we must get the to the absolute path, not one using symbolic links.
+                cd `pwd -P`
+                cd `$DIRNAME $ISLINK`
+                sym_link_dir=`$THEPWDCMD`
+                sym_link_file=`$BASENAME $ISLINK`
+                let COUNTER=COUNTER+1
+            done
+            cd $STARTDIR
+            SCRIPT=$sym_link_dir/$sym_link_file
+        fi
+    fi
+
+AUTOCONF_DIR=`cd \`$DIRNAME $SCRIPT\`; $THEPWDCMD`
+
+# Where is the source? It is located two levels above the configure script.
+CURDIR="$PWD"
+cd "$AUTOCONF_DIR/../.."
+SRC_ROOT="`pwd`"
+
+if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+  PATH_SEP=";"
+
+  SRC_ROOT_LENGTH=`$THEPWDCMD|$WC -m`
+  if test $SRC_ROOT_LENGTH -gt 100; then
+      as_fn_error $? "Your base path is too long. It is $SRC_ROOT_LENGTH characters long, but only 100 is supported" "$LINENO" 5
+  fi
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking cygwin release" >&5
+$as_echo_n "checking cygwin release... " >&6; }
+    CYGWIN_VERSION=`$UNAME -r`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGWIN_VERSION" >&5
+$as_echo "$CYGWIN_VERSION" >&6; }
+    WINDOWS_ENV_VENDOR='cygwin'
+    WINDOWS_ENV_VERSION="$CYGWIN_VERSION"
+
+    CYGWIN_VERSION_OK=`$ECHO $CYGWIN_VERSION | $GREP ^1.7.`
+    if test "x$CYGWIN_VERSION_OK" = x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade." >&5
+$as_echo "$as_me: Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade." >&6;}
+      as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+    if test "x$CYGPATH" = x; then
+        as_fn_error $? "Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path" "$LINENO" 5
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking cygwin root directory as unix-style path" >&5
+$as_echo_n "checking cygwin root directory as unix-style path... " >&6; }
+    # The cmd output ends with Windows line endings (CR/LF), the grep command will strip that away
+    cygwin_winpath_root=`cd / ; cmd /c cd | grep ".*"`
+    # Force cygpath to report the proper root by including a trailing space, and then stripping it off again.
+    CYGWIN_ROOT_PATH=`$CYGPATH -u "$cygwin_winpath_root " | $CUT -f 1 -d " "`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGWIN_ROOT_PATH" >&5
+$as_echo "$CYGWIN_ROOT_PATH" >&6; }
+    WINDOWS_ENV_ROOT_PATH="$CYGWIN_ROOT_PATH"
+    test_cygdrive_prefix=`$ECHO $CYGWIN_ROOT_PATH | $GREP ^/cygdrive/`
+    if test "x$test_cygdrive_prefix" = x; then
+        as_fn_error $? "Your cygdrive prefix is not /cygdrive. This is currently not supported. Change with mount -c." "$LINENO" 5
+    fi
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking msys release" >&5
+$as_echo_n "checking msys release... " >&6; }
+    MSYS_VERSION=`$UNAME -r`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSYS_VERSION" >&5
+$as_echo "$MSYS_VERSION" >&6; }
+
+    WINDOWS_ENV_VENDOR='msys'
+    WINDOWS_ENV_VERSION="$MSYS_VERSION"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking msys root directory as unix-style path" >&5
+$as_echo_n "checking msys root directory as unix-style path... " >&6; }
+    # The cmd output ends with Windows line endings (CR/LF), the grep command will strip that away
+    MSYS_ROOT_PATH=`cd / ; cmd /c cd | grep ".*"`
+
+  windows_path="$MSYS_ROOT_PATH"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    MSYS_ROOT_PATH="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    MSYS_ROOT_PATH="$unix_path"
+  fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSYS_ROOT_PATH" >&5
+$as_echo "$MSYS_ROOT_PATH" >&6; }
+    WINDOWS_ENV_ROOT_PATH="$MSYS_ROOT_PATH"
+  else
+    as_fn_error $? "Unknown Windows environment. Neither cygwin nor msys was detected." "$LINENO" 5
+  fi
+
+  # Test if windows or unix (cygwin/msys) find is first in path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking what kind of 'find' is first on the PATH" >&5
+$as_echo_n "checking what kind of 'find' is first on the PATH... " >&6; }
+  FIND_BINARY_OUTPUT=`find --version 2>&1`
+  if test "x`echo $FIND_BINARY_OUTPUT | $GREP GNU`" != x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unix style" >&5
+$as_echo "unix style" >&6; }
+  elif test "x`echo $FIND_BINARY_OUTPUT | $GREP FIND`" != x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Windows" >&5
+$as_echo "Windows" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Your path contains Windows tools (C:\Windows\system32) before your unix (cygwin or msys) tools." >&5
+$as_echo "$as_me: Your path contains Windows tools (C:\Windows\system32) before your unix (cygwin or msys) tools." >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: This will not work. Please correct and make sure /usr/bin (or similar) is first in path." >&5
+$as_echo "$as_me: This will not work. Please correct and make sure /usr/bin (or similar) is first in path." >&6;}
+    as_fn_error $? "Cannot continue" "$LINENO" 5
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown" >&5
+$as_echo "unknown" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: It seems that your find utility is non-standard." >&5
+$as_echo "$as_me: WARNING: It seems that your find utility is non-standard." >&2;}
+  fi
+
+else
+  PATH_SEP=":"
+fi
+
+
+
+cd "$CURDIR"
+
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$SRC_ROOT"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of SRC_ROOT, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of SRC_ROOT, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of SRC_ROOT" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    SRC_ROOT="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting SRC_ROOT to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting SRC_ROOT to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$SRC_ROOT"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    SRC_ROOT="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting SRC_ROOT to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting SRC_ROOT to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$SRC_ROOT"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of SRC_ROOT, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of SRC_ROOT, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of SRC_ROOT, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$CURDIR"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CURDIR, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of CURDIR, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of CURDIR" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    CURDIR="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CURDIR to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting CURDIR to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$CURDIR"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    CURDIR="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CURDIR to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting CURDIR to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$CURDIR"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of CURDIR, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CURDIR, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of CURDIR, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+
+if test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
+    # Add extra search paths on solaris for utilities like ar and as etc...
+    PATH="$PATH:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin"
+fi
+
+# You can force the sys-root if the sys-root encoded into the cross compiler tools
+# is not correct.
+
+# Check whether --with-sys-root was given.
+if test "${with_sys_root+set}" = set; then :
+  withval=$with_sys_root;
+fi
+
+
+if test "x$with_sys_root" != x; then
+  SYS_ROOT=$with_sys_root
+else
+  SYS_ROOT=/
+fi
+
+
+
+# Check whether --with-tools-dir was given.
+if test "${with_tools_dir+set}" = set; then :
+  withval=$with_tools_dir; TOOLS_DIR=$with_tools_dir
+fi
+
+
+
+# Check whether --with-devkit was given.
+if test "${with_devkit+set}" = set; then :
+  withval=$with_devkit;
+    if test "x$with_sys_root" != x; then
+      as_fn_error $? "Cannot specify both --with-devkit and --with-sys-root at the same time" "$LINENO" 5
+    fi
+    if test "x$with_tools_dir" != x; then
+      as_fn_error $? "Cannot specify both --with-devkit and --with-tools-dir at the same time" "$LINENO" 5
+    fi
+    TOOLS_DIR=$with_devkit/bin
+    SYS_ROOT=$with_devkit/$host_alias/libc
+
+fi
+
+
+
+
+# Setup default logging of stdout and stderr to build.log in the output root.
+BUILD_LOG='$(OUTPUT_ROOT)/build.log'
+BUILD_LOG_PREVIOUS='$(OUTPUT_ROOT)/build.log.old'
+BUILD_LOG_WRAPPER='$(BASH) $(SRC_ROOT)/common/bin/logger.sh $(BUILD_LOG)'
+
+
+
+
+
+# These are needed to be able to create a configuration name (and thus the output directory)
 
 ###############################################################################
 #
@@ -7969,8 +7378,8 @@
 #             ie normal interpreter and C1, only the serial GC, kernel jvmti etc
 #    zero: no machine code interpreter, no compiler
 #    zeroshark: zero interpreter and shark/llvm compiler backend
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which variants of the JVM that should be built" >&5
-$as_echo_n "checking which variants of the JVM that should be built... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which variants of the JVM to build" >&5
+$as_echo_n "checking which variants of the JVM to build... " >&6; }
 
 # Check whether --with-jvm-variants was given.
 if test "${with_jvm_variants+set}" = set; then :
@@ -8151,6 +7560,2687 @@
 
 
 
+# With basic setup done, call the custom early hook.
+
+
+# To properly create a configuration name, we need to have the OpenJDK target
+# and options (variants and debug level) parsed.
+
+
+
+# Check whether --with-conf-name was given.
+if test "${with_conf_name+set}" = set; then :
+  withval=$with_conf_name;  CONF_NAME=${with_conf_name}
+fi
+
+
+# Test from where we are running configure, in or outside of src root.
+if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" || test "x$CURDIR" = "x$SRC_ROOT/common/autoconf" || test "x$CURDIR" = "x$SRC_ROOT/common/makefiles" ; then
+    # We are running configure from the src root.
+    # Create a default ./build/target-variant-debuglevel output root.
+    if test "x${CONF_NAME}" = x; then
+        CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
+    fi
+    OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
+    $MKDIR -p "$OUTPUT_ROOT"
+    if test ! -d "$OUTPUT_ROOT"; then
+        as_fn_error $? "Could not create build directory $OUTPUT_ROOT" "$LINENO" 5
+    fi
+else
+    # We are running configure from outside of the src dir.
+    # Then use the current directory as output dir!
+    # If configuration is situated in normal build directory, just use the build
+    # directory name as configuration name, otherwise use the complete path.
+    if test "x${CONF_NAME}" = x; then
+        CONF_NAME=`$ECHO $CURDIR | $SED -e "s!^${SRC_ROOT}/build/!!"`
+    fi
+    OUTPUT_ROOT="$CURDIR"
+
+    # WARNING: This might be a bad thing to do. You need to be sure you want to
+    # have a configuration in this directory. Do some sanity checks!
+
+    if test ! -e "$OUTPUT_ROOT/spec.gmk"; then
+      # If we have a spec.gmk, we have run here before and we are OK. Otherwise, check for
+      # other files
+      files_present=`$LS $OUTPUT_ROOT`
+      if test "x$files_present" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Current directory is $CURDIR." >&5
+$as_echo "$as_me: Current directory is $CURDIR." >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Since this is not the source root, configure will output the configuration here" >&5
+$as_echo "$as_me: Since this is not the source root, configure will output the configuration here" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: (as opposed to creating a configuration in <src_root>/build/<conf-name>)." >&5
+$as_echo "$as_me: (as opposed to creating a configuration in <src_root>/build/<conf-name>)." >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: However, this directory is not empty. This is not allowed, since it could" >&5
+$as_echo "$as_me: However, this directory is not empty. This is not allowed, since it could" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: seriously mess up just about everything." >&5
+$as_echo "$as_me: seriously mess up just about everything." >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Try 'cd $SRC_ROOT' and restart configure" >&5
+$as_echo "$as_me: Try 'cd $SRC_ROOT' and restart configure" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: (or create a new empty directory and cd to it)." >&5
+$as_echo "$as_me: (or create a new empty directory and cd to it)." >&6;}
+        as_fn_error $? "Will not continue creating configuration in $CURDIR" "$LINENO" 5
+      fi
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what configuration name to use" >&5
+$as_echo_n "checking what configuration name to use... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CONF_NAME" >&5
+$as_echo "$CONF_NAME" >&6; }
+
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$OUTPUT_ROOT"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of OUTPUT_ROOT" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    OUTPUT_ROOT="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OUTPUT_ROOT to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting OUTPUT_ROOT to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$OUTPUT_ROOT"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    OUTPUT_ROOT="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OUTPUT_ROOT to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting OUTPUT_ROOT to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$OUTPUT_ROOT"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of OUTPUT_ROOT, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+
+SPEC=$OUTPUT_ROOT/spec.gmk
+
+CONF_NAME=$CONF_NAME
+
+OUTPUT_ROOT=$OUTPUT_ROOT
+
+
+# Most of the probed defines are put into config.h
+ac_config_headers="$ac_config_headers $OUTPUT_ROOT/config.h:$AUTOCONF_DIR/config.h.in"
+
+# The spec.gmk file contains all variables for the make system.
+ac_config_files="$ac_config_files $OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in"
+
+# The hotspot-spec.gmk file contains legacy variables for the hotspot make system.
+ac_config_files="$ac_config_files $OUTPUT_ROOT/hotspot-spec.gmk:$AUTOCONF_DIR/hotspot-spec.gmk.in"
+
+# The bootcycle-spec.gmk file contains support for boot cycle builds.
+ac_config_files="$ac_config_files $OUTPUT_ROOT/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in"
+
+# The compare.sh is used to compare the build output to other builds.
+ac_config_files="$ac_config_files $OUTPUT_ROOT/compare.sh:$AUTOCONF_DIR/compare.sh.in"
+
+# Spec.sh is currently used by compare-objects.sh
+ac_config_files="$ac_config_files $OUTPUT_ROOT/spec.sh:$AUTOCONF_DIR/spec.sh.in"
+
+# The generated Makefile knows where the spec.gmk is and where the source is.
+# You can run make from the OUTPUT_ROOT, or from the top-level Makefile
+# which will look for generated configurations
+ac_config_files="$ac_config_files $OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in"
+
+
+# Save the arguments given to us
+echo "$CONFIGURE_COMMAND_LINE" > $OUTPUT_ROOT/configure-arguments
+
+
+# Must be done before we can call HELP_MSG_MISSING_DEPENDENCY.
+
+    for ac_prog in apt-get yum port pkgutil pkgadd
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_PKGHANDLER+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PKGHANDLER"; then
+  ac_cv_prog_PKGHANDLER="$PKGHANDLER" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PKGHANDLER="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PKGHANDLER=$ac_cv_prog_PKGHANDLER
+if test -n "$PKGHANDLER"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGHANDLER" >&5
+$as_echo "$PKGHANDLER" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$PKGHANDLER" && break
+done
+
+
+
+# Setup tools that requires more complex handling, or that is not needed by the configure script.
+
+
+  # We need to find a recent version of GNU make. Especially on Solaris, this can be tricky.
+  if test "x$MAKE" != x; then
+    # User has supplied a make, test it.
+    if test ! -f "$MAKE"; then
+      as_fn_error $? "The specified make (by MAKE=$MAKE) is not found." "$LINENO" 5
+    fi
+
+  MAKE_CANDIDATE=""$MAKE""
+  DESCRIPTION="user supplied MAKE=$MAKE"
+  if test "x$MAKE_CANDIDATE" != x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+    if test "x$IS_GNU_MAKE" = x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+    else
+      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
+      if test "x$IS_MODERN_MAKE" = x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+      else
+        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+          if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+            MAKE_EXPECTED_ENV='cygwin'
+          elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+            MAKE_EXPECTED_ENV='msys'
+          else
+            as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+          fi
+          MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+          IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+        else
+          # Not relevant for non-Windows
+          IS_MAKE_CORRECT_ENV=true
+        fi
+        if test "x$IS_MAKE_CORRECT_ENV" = x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+        else
+          FOUND_MAKE=$MAKE_CANDIDATE
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$FOUND_MAKE"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    FOUND_MAKE="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+  fi
+
+        fi
+      fi
+    fi
+  fi
+
+    if test "x$FOUND_MAKE" = x; then
+      as_fn_error $? "The specified make (by MAKE=$MAKE) is not GNU make 3.81 or newer." "$LINENO" 5
+    fi
+  else
+    # Try our hardest to locate a correct version of GNU make
+    for ac_prog in gmake
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_CHECK_GMAKE+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CHECK_GMAKE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CHECK_GMAKE="$CHECK_GMAKE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_CHECK_GMAKE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CHECK_GMAKE=$ac_cv_path_CHECK_GMAKE
+if test -n "$CHECK_GMAKE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_GMAKE" >&5
+$as_echo "$CHECK_GMAKE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CHECK_GMAKE" && break
+done
+
+
+  MAKE_CANDIDATE=""$CHECK_GMAKE""
+  DESCRIPTION="gmake in PATH"
+  if test "x$MAKE_CANDIDATE" != x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+    if test "x$IS_GNU_MAKE" = x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+    else
+      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
+      if test "x$IS_MODERN_MAKE" = x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+      else
+        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+          if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+            MAKE_EXPECTED_ENV='cygwin'
+          elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+            MAKE_EXPECTED_ENV='msys'
+          else
+            as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+          fi
+          MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+          IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+        else
+          # Not relevant for non-Windows
+          IS_MAKE_CORRECT_ENV=true
+        fi
+        if test "x$IS_MAKE_CORRECT_ENV" = x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+        else
+          FOUND_MAKE=$MAKE_CANDIDATE
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$FOUND_MAKE"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    FOUND_MAKE="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+  fi
+
+        fi
+      fi
+    fi
+  fi
+
+
+    if test "x$FOUND_MAKE" = x; then
+      for ac_prog in make
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_CHECK_MAKE+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CHECK_MAKE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CHECK_MAKE="$CHECK_MAKE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_CHECK_MAKE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CHECK_MAKE=$ac_cv_path_CHECK_MAKE
+if test -n "$CHECK_MAKE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_MAKE" >&5
+$as_echo "$CHECK_MAKE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CHECK_MAKE" && break
+done
+
+
+  MAKE_CANDIDATE=""$CHECK_MAKE""
+  DESCRIPTION="make in PATH"
+  if test "x$MAKE_CANDIDATE" != x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+    if test "x$IS_GNU_MAKE" = x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+    else
+      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
+      if test "x$IS_MODERN_MAKE" = x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+      else
+        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+          if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+            MAKE_EXPECTED_ENV='cygwin'
+          elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+            MAKE_EXPECTED_ENV='msys'
+          else
+            as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+          fi
+          MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+          IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+        else
+          # Not relevant for non-Windows
+          IS_MAKE_CORRECT_ENV=true
+        fi
+        if test "x$IS_MAKE_CORRECT_ENV" = x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+        else
+          FOUND_MAKE=$MAKE_CANDIDATE
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$FOUND_MAKE"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    FOUND_MAKE="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+  fi
+
+        fi
+      fi
+    fi
+  fi
+
+    fi
+
+    if test "x$FOUND_MAKE" = x; then
+      if test "x$TOOLS_DIR" != x; then
+        # We have a tools-dir, check that as well before giving up.
+        OLD_PATH=$PATH
+        PATH=$TOOLS_DIR:$PATH
+        for ac_prog in gmake
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_CHECK_TOOLSDIR_GMAKE+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CHECK_TOOLSDIR_GMAKE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CHECK_TOOLSDIR_GMAKE="$CHECK_TOOLSDIR_GMAKE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_CHECK_TOOLSDIR_GMAKE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CHECK_TOOLSDIR_GMAKE=$ac_cv_path_CHECK_TOOLSDIR_GMAKE
+if test -n "$CHECK_TOOLSDIR_GMAKE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_GMAKE" >&5
+$as_echo "$CHECK_TOOLSDIR_GMAKE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CHECK_TOOLSDIR_GMAKE" && break
+done
+
+
+  MAKE_CANDIDATE=""$CHECK_TOOLSDIR_GMAKE""
+  DESCRIPTION="gmake in tools-dir"
+  if test "x$MAKE_CANDIDATE" != x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+    if test "x$IS_GNU_MAKE" = x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+    else
+      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
+      if test "x$IS_MODERN_MAKE" = x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+      else
+        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+          if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+            MAKE_EXPECTED_ENV='cygwin'
+          elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+            MAKE_EXPECTED_ENV='msys'
+          else
+            as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+          fi
+          MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+          IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+        else
+          # Not relevant for non-Windows
+          IS_MAKE_CORRECT_ENV=true
+        fi
+        if test "x$IS_MAKE_CORRECT_ENV" = x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+        else
+          FOUND_MAKE=$MAKE_CANDIDATE
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$FOUND_MAKE"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    FOUND_MAKE="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+  fi
+
+        fi
+      fi
+    fi
+  fi
+
+        if test "x$FOUND_MAKE" = x; then
+          for ac_prog in make
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_CHECK_TOOLSDIR_MAKE+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CHECK_TOOLSDIR_MAKE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CHECK_TOOLSDIR_MAKE="$CHECK_TOOLSDIR_MAKE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_CHECK_TOOLSDIR_MAKE="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CHECK_TOOLSDIR_MAKE=$ac_cv_path_CHECK_TOOLSDIR_MAKE
+if test -n "$CHECK_TOOLSDIR_MAKE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_MAKE" >&5
+$as_echo "$CHECK_TOOLSDIR_MAKE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CHECK_TOOLSDIR_MAKE" && break
+done
+
+
+  MAKE_CANDIDATE=""$CHECK_TOOLSDIR_MAKE""
+  DESCRIPTION="make in tools-dir"
+  if test "x$MAKE_CANDIDATE" != x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+    MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+    IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+    if test "x$IS_GNU_MAKE" = x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+    else
+      IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP '3.8[12346789]'`
+      if test "x$IS_MODERN_MAKE" = x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version 3.81 or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+      else
+        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+          if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+            MAKE_EXPECTED_ENV='cygwin'
+          elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+            MAKE_EXPECTED_ENV='msys'
+          else
+            as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+          fi
+          MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+          IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+        else
+          # Not relevant for non-Windows
+          IS_MAKE_CORRECT_ENV=true
+        fi
+        if test "x$IS_MAKE_CORRECT_ENV" = x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+        else
+          FOUND_MAKE=$MAKE_CANDIDATE
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$FOUND_MAKE"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$FOUND_MAKE"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving FOUND_MAKE (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    FOUND_MAKE="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+  fi
+
+        fi
+      fi
+    fi
+  fi
+
+        fi
+        PATH=$OLD_PATH
+      fi
+    fi
+
+    if test "x$FOUND_MAKE" = x; then
+      as_fn_error $? "Cannot find GNU make 3.81 or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure." "$LINENO" 5
+    fi
+  fi
+
+  MAKE=$FOUND_MAKE
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using GNU make 3.81 (or later) at $FOUND_MAKE (version: $MAKE_VERSION_STRING)" >&5
+$as_echo "$as_me: Using GNU make 3.81 (or later) at $FOUND_MAKE (version: $MAKE_VERSION_STRING)" >&6;}
+
+
+
+    # Test if find supports -delete
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if find supports -delete" >&5
+$as_echo_n "checking if find supports -delete... " >&6; }
+    FIND_DELETE="-delete"
+
+    DELETEDIR=`$MKTEMP -d tmp.XXXXXXXXXX` || (echo Could not create temporary directory!; exit $?)
+
+    echo Hejsan > $DELETEDIR/TestIfFindSupportsDelete
+
+    TEST_DELETE=`$FIND "$DELETEDIR" -name TestIfFindSupportsDelete $FIND_DELETE 2>&1`
+    if test -f $DELETEDIR/TestIfFindSupportsDelete; then
+        # No, it does not.
+        rm $DELETEDIR/TestIfFindSupportsDelete
+        FIND_DELETE="-exec rm \{\} \+"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    fi
+    rmdir $DELETEDIR
+
+
+
+# These tools might not be installed by default,
+# need hint on how to install them.
+
+    for ac_prog in unzip
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_UNZIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $UNZIP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_UNZIP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+UNZIP=$ac_cv_path_UNZIP
+if test -n "$UNZIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNZIP" >&5
+$as_echo "$UNZIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$UNZIP" && break
+done
+
+
+    if test "x$UNZIP" = x; then
+        if test "xunzip" = x; then
+          PROG_NAME=unzip
+        else
+          PROG_NAME=unzip
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
+    for ac_prog in zip
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_ZIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ZIP in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ZIP="$ZIP" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ZIP=$ac_cv_path_ZIP
+if test -n "$ZIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIP" >&5
+$as_echo "$ZIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ZIP" && break
+done
+
+
+    if test "x$ZIP" = x; then
+        if test "xzip" = x; then
+          PROG_NAME=zip
+        else
+          PROG_NAME=zip
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+
+# Non-required basic tools
+
+# Extract the first word of "ldd", so it can be a program name with args.
+set dummy ldd; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_LDD+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $LDD in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_LDD="$LDD" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_LDD="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+LDD=$ac_cv_path_LDD
+if test -n "$LDD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDD" >&5
+$as_echo "$LDD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "x$LDD" = "x"; then
+    # List shared lib dependencies is used for
+    # debug output and checking for forbidden dependencies.
+    # We can build without it.
+    LDD="true"
+fi
+# Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_OTOOL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $OTOOL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_OTOOL="$OTOOL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_OTOOL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+OTOOL=$ac_cv_path_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "x$OTOOL" = "x"; then
+   OTOOL="true"
+fi
+for ac_prog in readelf greadelf
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_READELF+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $READELF in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_READELF="$READELF" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_READELF="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+READELF=$ac_cv_path_READELF
+if test -n "$READELF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
+$as_echo "$READELF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$READELF" && break
+done
+
+# Extract the first word of "hg", so it can be a program name with args.
+set dummy hg; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_HG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $HG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_HG="$HG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_HG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+HG=$ac_cv_path_HG
+if test -n "$HG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HG" >&5
+$as_echo "$HG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "stat", so it can be a program name with args.
+set dummy stat; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_STAT+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $STAT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_STAT="$STAT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_STAT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+STAT=$ac_cv_path_STAT
+if test -n "$STAT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STAT" >&5
+$as_echo "$STAT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "time", so it can be a program name with args.
+set dummy time; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_TIME+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $TIME in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TIME="$TIME" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_TIME="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+TIME=$ac_cv_path_TIME
+if test -n "$TIME"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TIME" >&5
+$as_echo "$TIME" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+
+    for ac_prog in comm
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_COMM+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $COMM in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_COMM="$COMM" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_COMM="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+COMM=$ac_cv_path_COMM
+if test -n "$COMM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMM" >&5
+$as_echo "$COMM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$COMM" && break
+done
+
+
+    if test "x$COMM" = x; then
+        if test "xcomm" = x; then
+          PROG_NAME=comm
+        else
+          PROG_NAME=comm
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $PROG_NAME!" >&5
+$as_echo "$as_me: Could not find $PROG_NAME!" >&6;}
+        as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+
+fi
+
+
+# Check if pkg-config is available.
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+		PKG_CONFIG=""
+	fi
+
+fi
+
+# After basic tools have been setup, we can check build os specific details.
+
+###############################################################################
+
+# Note that this is the build platform OS version!
+
+OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`"
+OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`"
+OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`"
+OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`"
+
+
+
+
+
+# Setup builddeps, for automatic downloading of tools we need.
+# This is needed before we can call BDEPS_CHECK_MODULE, which is done in
+# boot-jdk setup, but we need to have basic tools setup first.
+
+
+# Check whether --with-builddeps-conf was given.
+if test "${with_builddeps_conf+set}" = set; then :
+  withval=$with_builddeps_conf;
+fi
+
+
+
+# Check whether --with-builddeps-server was given.
+if test "${with_builddeps_server+set}" = set; then :
+  withval=$with_builddeps_server;
+fi
+
+
+
+# Check whether --with-builddeps-dir was given.
+if test "${with_builddeps_dir+set}" = set; then :
+  withval=$with_builddeps_dir;
+else
+  with_builddeps_dir=/localhome/builddeps
+fi
+
+
+
+# Check whether --with-builddeps-group was given.
+if test "${with_builddeps_group+set}" = set; then :
+  withval=$with_builddeps_group;
+fi
+
+
+
+
+    if test "x$with_builddeps_server" != x || test "x$with_builddeps_conf" != x; then
+        if test "x$with_builddeps_conf" != x; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supplied builddeps configuration file" >&5
+$as_echo_n "checking for supplied builddeps configuration file... " >&6; }
+            builddepsfile=$with_builddeps_conf
+            if test -s $builddepsfile; then
+                . $builddepsfile
+                { $as_echo "$as_me:${as_lineno-$LINENO}: result: loaded!" >&5
+$as_echo "loaded!" >&6; }
+            else
+               as_fn_error $? "The given builddeps conf file $with_builddeps_conf could not be loaded!" "$LINENO" 5
+           fi
+        else
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for builddeps.conf files in sources..." >&5
+$as_echo_n "checking for builddeps.conf files in sources...... " >&6; }
+            builddepsfile=`mktemp`
+            touch $builddepsfile
+            # Put all found confs into a single file.
+            find ${SRC_ROOT} -name builddeps.conf -exec cat \{\} \; >> $builddepsfile
+            # Source the file to acquire the variables
+            if test -s $builddepsfile; then
+                . $builddepsfile
+                { $as_echo "$as_me:${as_lineno-$LINENO}: result: found at least one!" >&5
+$as_echo "found at least one!" >&6; }
+            else
+               as_fn_error $? "Could not find any builddeps.conf at all!" "$LINENO" 5
+           fi
+        fi
+        # Create build and target names that use _ instead of "-" and ".".
+        # This is necessary to use them in variable names.
+        build_var=`echo ${OPENJDK_BUILD_AUTOCONF_NAME} | tr '-' '_' | tr '.' '_'`
+        target_var=`echo ${OPENJDK_TARGET_AUTOCONF_NAME} | tr '-' '_' | tr '.' '_'`
+        # Extract rewrite information for build and target
+        eval rewritten_build=\${REWRITE_${build_var}}
+        if test "x$rewritten_build" = x; then
+            rewritten_build=${OPENJDK_BUILD_AUTOCONF_NAME}
+            echo Build stays the same $rewritten_build
+        else
+            echo Rewriting build for builddeps into $rewritten_build
+        fi
+        eval rewritten_target=\${REWRITE_${target_var}}
+        if test "x$rewritten_target" = x; then
+            rewritten_target=${OPENJDK_TARGET_AUTOCONF_NAME}
+            echo Target stays the same $rewritten_target
+        else
+            echo Rewriting target for builddeps into $rewritten_target
+        fi
+        rewritten_build_var=`echo ${rewritten_build} | tr '-' '_' | tr '.' '_'`
+        rewritten_target_var=`echo ${rewritten_target} | tr '-' '_' | tr '.' '_'`
+    fi
+    for ac_prog in 7z unzip
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_BDEPS_UNZIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$BDEPS_UNZIP"; then
+  ac_cv_prog_BDEPS_UNZIP="$BDEPS_UNZIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_BDEPS_UNZIP="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+BDEPS_UNZIP=$ac_cv_prog_BDEPS_UNZIP
+if test -n "$BDEPS_UNZIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BDEPS_UNZIP" >&5
+$as_echo "$BDEPS_UNZIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$BDEPS_UNZIP" && break
+done
+
+    if test "x$BDEPS_UNZIP" = x7z; then
+        BDEPS_UNZIP="7z x"
+    fi
+
+    for ac_prog in wget lftp ftp
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_BDEPS_FTP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$BDEPS_FTP"; then
+  ac_cv_prog_BDEPS_FTP="$BDEPS_FTP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_BDEPS_FTP="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+BDEPS_FTP=$ac_cv_prog_BDEPS_FTP
+if test -n "$BDEPS_FTP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BDEPS_FTP" >&5
+$as_echo "$BDEPS_FTP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$BDEPS_FTP" && break
+done
+
+
+
+###############################################################################
+#
+# Determine OpenJDK variants, options and version numbers.
+#
+###############################################################################
+
+# We need build & target for this.
+
 
 ###############################################################################
 #
@@ -8159,42 +10249,45 @@
 # Check whether --enable-openjdk-only was given.
 if test "${enable_openjdk_only+set}" = set; then :
   enableval=$enable_openjdk_only;
-fi
-
-
-if test "x$enable_openjdk_only" = "xyes"; then
+else
+  enable_openjdk_only="no"
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of closed sources" >&5
+$as_echo_n "checking for presence of closed sources... " >&6; }
+if test -d "$SRC_ROOT/jdk/src/closed"; then
+    CLOSED_SOURCE_PRESENT=yes
+else
+    CLOSED_SOURCE_PRESENT=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CLOSED_SOURCE_PRESENT" >&5
+$as_echo "$CLOSED_SOURCE_PRESENT" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if closed source is supressed (openjdk-only)" >&5
+$as_echo_n "checking if closed source is supressed (openjdk-only)... " >&6; }
+SUPRESS_CLOSED_SOURCE="$enable_openjdk_only"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SUPRESS_CLOSED_SOURCE" >&5
+$as_echo "$SUPRESS_CLOSED_SOURCE" >&6; }
+
+if test "x$CLOSED_SOURCE_PRESENT" = xno; then
+  OPENJDK=true
+  if test "x$SUPRESS_CLOSED_SOURCE" = "xyes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No closed source present, --enable-openjdk-only makes no sense" >&5
+$as_echo "$as_me: WARNING: No closed source present, --enable-openjdk-only makes no sense" >&2;}
+  fi
+else
+  if test "x$SUPRESS_CLOSED_SOURCE" = "xyes"; then
     OPENJDK=true
-elif test "x$enable_openjdk_only" = "xno"; then
+  else
     OPENJDK=false
-elif test -d "$SRC_ROOT/jdk/src/closed"; then
-    OPENJDK=false
-else
-    OPENJDK=true
+  fi
 fi
 
 if test "x$OPENJDK" = "xtrue"; then
-    SET_OPENJDK=OPENJDK=true
-fi
-
-
-
-###############################################################################
-#
-# JIGSAW or not.  The JIGSAW variable is used during the intermediate
-# stage when we are building both the old style JDK and the new style modularized JDK.
-# When the modularized JDK is finalized, this option will go away.
-#
-# Check whether --enable-jigsaw was given.
-if test "${enable_jigsaw+set}" = set; then :
-  enableval=$enable_jigsaw;
-fi
-
-
-if test "x$enable_jigsaw" = "xyes"; then
-    JIGSAW=true
-else
-    JIGSAW=false
-fi
+    SET_OPENJDK="OPENJDK=true"
+fi
+
 
 
 ###############################################################################
@@ -8233,28 +10326,6 @@
 
 
 
-###############################################################################
-#
-# Should we compile nimbus swing L&F? We can probably remove this option
-# since nimbus is officially part of javax now.
-#
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build nimbus L&F" >&5
-$as_echo_n "checking whether to build nimbus L&F... " >&6; }
-# Check whether --enable-nimbus was given.
-if test "${enable_nimbus+set}" = set; then :
-  enableval=$enable_nimbus; ENABLE_NIMBUS="${enableval}"
-else
-  ENABLE_NIMBUS='yes'
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENABLE_NIMBUS" >&5
-$as_echo "$ENABLE_NIMBUS" >&6; }
-DISABLE_NIMBUS=
-if test "x$ENABLE_NIMBUS" = xno; then
-    DISABLE_NIMBUS=true
-fi
-
-
 # Control wether Hotspot runs Queens test after build.
 # Check whether --enable-hotspot-test-in-build was given.
 if test "${enable_hotspot_test_in_build+set}" = set; then :
@@ -8293,48 +10364,30 @@
 
 ###############################################################################
 #
+# Enable or disable unlimited crypto
+#
+# Check whether --enable-unlimited-crypto was given.
+if test "${enable_unlimited_crypto+set}" = set; then :
+  enableval=$enable_unlimited_crypto;
+else
+  enable_unlimited_crypto=no
+fi
+
+if test "x$enable_unlimited_crypto" = "xyes"; then
+    UNLIMITED_CRYPTO=true
+else
+    UNLIMITED_CRYPTO=false
+fi
+
+
+###############################################################################
+#
 # Compress jars
 #
 COMPRESS_JARS=false
 
 
 
-###############################################################################
-#
-# Should we compile JFR
-#   default no, except for on closed-jdk
-#
-ENABLE_JFR=no
-
-# Is the JFR source present
-
-#
-# For closed default is yes
-#
-if test "x${OPENJDK}" != "xtrue"; then
-   ENABLE_JFR=yes
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build jfr" >&5
-$as_echo_n "checking whether to build jfr... " >&6; }
-# Check whether --enable-jfr was given.
-if test "${enable_jfr+set}" = set; then :
-  enableval=$enable_jfr;
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ENABLE_JFR}" >&5
-$as_echo "${ENABLE_JFR}" >&6; }
-
-if test "x$ENABLE_JFR" = "xyes"; then
-    ENABLE_JFR=true
-elif test "x$ENABLE_JFR" = "xno"; then
-    ENABLE_JFR=false
-else
-   as_fn_error $? "Invalid argument to --enable-jfr" "$LINENO" 5
-fi
-
-
-
 
 # Source the version numbers
 . $AUTOCONF_DIR/version.numbers
@@ -8354,6 +10407,8 @@
 
 
 
+
+
 COPYRIGHT_YEAR=`date +'%Y'`
 
 
@@ -8381,7 +10436,7 @@
     BUILD_DATE=`date '+%Y_%m_%d_%H_%M'`
     # Avoid [:alnum:] since it depends on the locale.
     CLEAN_USERNAME=`echo "$USER" | $TR -d -c 'abcdefghijklmnopqrstuvqxyz0123456789'`
-    USER_RELEASE_SUFFIX=`echo "${CLEAN_USERNAME}_${BUILD_DATE}" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
+    USER_RELEASE_SUFFIX=`echo "${CLEAN_USERNAME}_${BUILD_DATE}" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
     FULL_VERSION="${RELEASE}-${USER_RELEASE_SUFFIX}-${JDK_BUILD_NUMBER}"
 fi
 
@@ -8389,93 +10444,6 @@
 
 
 
-# To properly create a configuration name, we need to have the OpenJDK target
-# and options (variants and debug level) parsed.
-
-
-
-# Check whether --with-conf-name was given.
-if test "${with_conf_name+set}" = set; then :
-  withval=$with_conf_name;  CONF_NAME=${with_conf_name}
-fi
-
-
-# Test from where we are running configure, in or outside of src root.
-if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" || test "x$CURDIR" = "x$SRC_ROOT/common/autoconf" || test "x$CURDIR" = "x$SRC_ROOT/common/makefiles" ; then
-    # We are running configure from the src root.
-    # Create a default ./build/target-variant-debuglevel output root.
-    if test "x${CONF_NAME}" = x; then
-        CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
-    fi
-    OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
-    mkdir -p "$OUTPUT_ROOT"
-    if test ! -d "$OUTPUT_ROOT"; then
-        as_fn_error $? "Could not create build directory $OUTPUT_ROOT" "$LINENO" 5
-    fi
-else
-    # We are running configure from outside of the src dir.
-    # Then use the current directory as output dir!
-    # If configuration is situated in normal build directory, just use the build
-    # directory name as configuration name, otherwise use the complete path.
-    if test "x${CONF_NAME}" = x; then
-        CONF_NAME=`$ECHO $CURDIR | $SED -e "s!^${SRC_ROOT}/build/!!"`
-    fi
-    OUTPUT_ROOT="$CURDIR"
-fi
-
-
-    # Fail with message the path to the output root if var OUTPUT_ROOT contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$OUTPUT_ROOT" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            OUTPUT_ROOT=`$CYGPATH -s -m -a "$OUTPUT_ROOT"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            OUTPUT_ROOT=`$ECHO "$OUTPUT_ROOT" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            OUTPUT_ROOT=`$CYGPATH -u "$OUTPUT_ROOT"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the output root! \"$OUTPUT_ROOT\"" "$LINENO" 5
-        fi
-    fi
-
-
-SPEC=$OUTPUT_ROOT/spec.gmk
-
-CONF_NAME=$CONF_NAME
-
-OUTPUT_ROOT=$OUTPUT_ROOT
-
-
-# Most of the probed defines are put into config.h
-ac_config_headers="$ac_config_headers $OUTPUT_ROOT/config.h:$AUTOCONF_DIR/config.h.in"
-
-# The spec.gmk file contains all variables for the make system.
-ac_config_files="$ac_config_files $OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in"
-
-# The hotspot-spec.gmk file contains legacy variables for the hotspot make system.
-ac_config_files="$ac_config_files $OUTPUT_ROOT/hotspot-spec.gmk:$AUTOCONF_DIR/hotspot-spec.gmk.in"
-
-# The bootcycle-spec.gmk file contains support for boot cycle builds.
-ac_config_files="$ac_config_files $OUTPUT_ROOT/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in"
-
-# The compare.sh is used to compare the build output to other builds.
-ac_config_files="$ac_config_files $OUTPUT_ROOT/compare.sh:$AUTOCONF_DIR/compare.sh.in"
-
-# Spec.sh is currently used by compare-objects.sh
-ac_config_files="$ac_config_files $OUTPUT_ROOT/spec.sh:$AUTOCONF_DIR/spec.sh.in"
-
-# The generated Makefile knows where the spec.gmk is and where the source is.
-# You can run make from the OUTPUT_ROOT, or from the top-level Makefile
-# which will look for generated configurations
-ac_config_files="$ac_config_files $OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in"
-
-
-# Save the arguments given to us
-echo "$CONFIGURE_COMMAND_LINE" > $OUTPUT_ROOT/configure-arguments
-
-
 ###############################################################################
 #
 # Setup BootJDK, used to bootstrap the build.
@@ -8546,26 +10514,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -8768,26 +10843,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -8802,12 +10984,126 @@
     # Now execute the test
 
     if test "x$JAVA_HOME" != x; then
-        if test "x$OPENJDK_TARGET_OS" = xwindows; then
-          # On Windows, JAVA_HOME is likely in DOS-style
-          JAVA_HOME_PROCESSED="`$CYGPATH -u "$JAVA_HOME"`"
-        else
-          JAVA_HOME_PROCESSED="$JAVA_HOME"
-        fi
+        JAVA_HOME_PROCESSED="$JAVA_HOME"
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$JAVA_HOME_PROCESSED"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of JAVA_HOME_PROCESSED" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    JAVA_HOME_PROCESSED="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JAVA_HOME_PROCESSED to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JAVA_HOME_PROCESSED to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$JAVA_HOME_PROCESSED"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    JAVA_HOME_PROCESSED="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JAVA_HOME_PROCESSED to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JAVA_HOME_PROCESSED to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$JAVA_HOME_PROCESSED"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
         if test ! -d "$JAVA_HOME_PROCESSED"; then
             { $as_echo "$as_me:${as_lineno-$LINENO}: Your JAVA_HOME points to a non-existing directory!" >&5
 $as_echo "$as_me: Your JAVA_HOME points to a non-existing directory!" >&6;}
@@ -8859,26 +11155,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -8937,26 +11340,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9060,75 +11570,14 @@
         # Linux/GNU systems often have links from /usr/bin/java to
         # /etc/alternatives/java to the real JDK binary.
 
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$BINARY"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$BINARY"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    BINARY="$tmp"
-
-
     if test "x$OPENJDK_BUILD_OS" != xwindows; then
         # Follow a chain of symbolic links. Use readlink
         # where it exists, else fall back to horribly
         # complicated shell code.
-        # Extract the first word of "readlink", so it can be a program name with args.
-set dummy readlink; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_READLINK+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $READLINK in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-READLINK=$ac_cv_path_READLINK
-if test -n "$READLINK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5
-$as_echo "$READLINK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
         if test "x$READLINK_TESTED" != yes; then
             # On MacOSX there is a readlink tool with a different
             # purpose than the GNU readlink tool. Check the found readlink.
-            ISGNU=`$READLINK --help 2>&1 | grep GNU`
+            ISGNU=`$READLINK --help 2>&1 | $GREP GNU`
             if test "x$ISGNU" = x; then
                  # A readlink that we do not know how to use.
                  # Are there other non-GNU readlinks out there?
@@ -9142,23 +11591,25 @@
         else
             STARTDIR=$PWD
             COUNTER=0
-            DIR=`dirname $BINARY`
-            FIL=`basename $BINARY`
+            sym_link_dir=`$DIRNAME $BINARY`
+            sym_link_file=`$BASENAME $BINARY`
             while test $COUNTER -lt 20; do
-                ISLINK=`ls -l $DIR/$FIL | grep '\->' | sed -e 's/.*-> \(.*\)/\1/'`
+                ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
                 if test "x$ISLINK" == x; then
                     # This is not a symbolic link! We are done!
                     break
                 fi
                 # The link might be relative! We have to use cd to travel safely.
-                cd $DIR
-                cd `dirname $ISLINK`
-                DIR=`pwd`
-                FIL=`basename $ISLINK`
+                cd $sym_link_dir
+                # ... and we must get the to the absolute path, not one using symbolic links.
+                cd `pwd -P`
+                cd `$DIRNAME $ISLINK`
+                sym_link_dir=`$THEPWDCMD`
+                sym_link_file=`$BASENAME $ISLINK`
                 let COUNTER=COUNTER+1
             done
             cd $STARTDIR
-            BINARY=$DIR/$FIL
+            BINARY=$sym_link_dir/$sym_link_file
         fi
     fi
 
@@ -9210,26 +11661,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9249,17 +11807,207 @@
     # Now execute the test
 
   if test "x$ProgramW6432" != x; then
-
-  BOOT_JDK_PREFIX="`$CYGPATH -u "$ProgramW6432"`/Java"
+    VIRTUAL_DIR="$ProgramW6432/Java"
+
+  windows_path="$VIRTUAL_DIR"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VIRTUAL_DIR="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VIRTUAL_DIR="$unix_path"
+  fi
+
+
+  BOOT_JDK_PREFIX="$VIRTUAL_DIR"
   BOOT_JDK_SUFFIX=""
-  BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
-  if test "x$BEST_JDK_FOUND" != x; then
-    BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
-    if test -d "$BOOT_JDK"; then
-      BOOT_JDK_FOUND=maybe
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&5
-$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&6;}
-    fi
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+        fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+    done
   fi
 
   fi
@@ -9302,26 +12050,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9334,17 +12189,207 @@
     # Now execute the test
 
   if test "x$PROGRAMW6432" != x; then
-
-  BOOT_JDK_PREFIX="`$CYGPATH -u "$PROGRAMW6432"`/Java"
+    VIRTUAL_DIR="$PROGRAMW6432/Java"
+
+  windows_path="$VIRTUAL_DIR"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VIRTUAL_DIR="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VIRTUAL_DIR="$unix_path"
+  fi
+
+
+  BOOT_JDK_PREFIX="$VIRTUAL_DIR"
   BOOT_JDK_SUFFIX=""
-  BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
-  if test "x$BEST_JDK_FOUND" != x; then
-    BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
-    if test -d "$BOOT_JDK"; then
-      BOOT_JDK_FOUND=maybe
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&5
-$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&6;}
-    fi
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+        fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+    done
   fi
 
   fi
@@ -9387,26 +12432,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9419,17 +12571,589 @@
     # Now execute the test
 
   if test "x$PROGRAMFILES" != x; then
-
-  BOOT_JDK_PREFIX="`$CYGPATH -u "$PROGRAMFILES"`/Java"
+    VIRTUAL_DIR="$PROGRAMFILES/Java"
+
+  windows_path="$VIRTUAL_DIR"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VIRTUAL_DIR="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VIRTUAL_DIR="$unix_path"
+  fi
+
+
+  BOOT_JDK_PREFIX="$VIRTUAL_DIR"
   BOOT_JDK_SUFFIX=""
-  BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
-  if test "x$BEST_JDK_FOUND" != x; then
-    BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
-    if test -d "$BOOT_JDK"; then
-      BOOT_JDK_FOUND=maybe
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&5
-$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&6;}
-    fi
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+        fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+    done
+  fi
+
+  fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+  if test "x$ProgramFiles" != x; then
+    VIRTUAL_DIR="$ProgramFiles/Java"
+
+  windows_path="$VIRTUAL_DIR"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VIRTUAL_DIR="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VIRTUAL_DIR="$unix_path"
+  fi
+
+
+  BOOT_JDK_PREFIX="$VIRTUAL_DIR"
+  BOOT_JDK_SUFFIX=""
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+        fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+    done
   fi
 
   fi
@@ -9472,26 +13196,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9503,20 +13334,195 @@
   if test "x$BOOT_JDK_FOUND" = xno; then
     # Now execute the test
 
-  if test "x$ProgramFiles" != x; then
-
-  BOOT_JDK_PREFIX="`$CYGPATH -u "$ProgramFiles"`/Java"
+  BOOT_JDK_PREFIX="/cygdrive/c/Program Files/Java"
   BOOT_JDK_SUFFIX=""
-  BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
-  if test "x$BEST_JDK_FOUND" != x; then
-    BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
-    if test -d "$BOOT_JDK"; then
-      BOOT_JDK_FOUND=maybe
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&5
-$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&6;}
-    fi
-  fi
-
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+        fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+    done
   fi
 
 
@@ -9557,26 +13563,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9584,20 +13697,200 @@
     fi # end check boot jdk found
   fi
 
+  elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+  BOOT_JDK_PREFIX="/Library/Java/JavaVirtualMachines"
+  BOOT_JDK_SUFFIX="/Contents/Home"
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
 
   if test "x$BOOT_JDK_FOUND" = xno; then
     # Now execute the test
 
-  BOOT_JDK_PREFIX="/cygdrive/c/Program Files/Java"
-  BOOT_JDK_SUFFIX=""
-  BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
-  if test "x$BEST_JDK_FOUND" != x; then
-    BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
-    if test -d "$BOOT_JDK"; then
-      BOOT_JDK_FOUND=maybe
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&5
-$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&6;}
-    fi
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+        fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+    done
   fi
 
 
@@ -9638,26 +13931,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9665,21 +14065,199 @@
     fi # end check boot jdk found
   fi
 
-  elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+  BOOT_JDK_PREFIX="/System/Library/Java/JavaVirtualMachines"
+  BOOT_JDK_SUFFIX="/Contents/Home"
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
 
   if test "x$BOOT_JDK_FOUND" = xno; then
     # Now execute the test
 
-  BOOT_JDK_PREFIX="/Library/Java/JavaVirtualMachines"
-  BOOT_JDK_SUFFIX="/Contents/Home"
-  BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
-  if test "x$BEST_JDK_FOUND" != x; then
-    BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
-    if test -d "$BOOT_JDK"; then
-      BOOT_JDK_FOUND=maybe
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&5
-$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&6;}
-    fi
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+        fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+    done
   fi
 
 
@@ -9720,26 +14298,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9747,20 +14432,200 @@
     fi # end check boot jdk found
   fi
 
+  elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+
+  if test "x$BOOT_JDK_FOUND" = xno; then
+    # Now execute the test
+
+  BOOT_JDK_PREFIX="/usr/lib/jvm"
+  BOOT_JDK_SUFFIX=""
+  ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+  if test "x$ALL_JDKS_FOUND" != x; then
+    for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
 
   if test "x$BOOT_JDK_FOUND" = xno; then
     # Now execute the test
 
-  BOOT_JDK_PREFIX="/System/Library/Java/JavaVirtualMachines"
-  BOOT_JDK_SUFFIX="/Contents/Home"
-  BEST_JDK_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $GREP jdk | $SORT -r | $HEAD -n 1 `
-  if test "x$BEST_JDK_FOUND" != x; then
-    BOOT_JDK="${BOOT_JDK_PREFIX}/${BEST_JDK_FOUND}${BOOT_JDK_SUFFIX}"
-    if test -d "$BOOT_JDK"; then
-      BOOT_JDK_FOUND=maybe
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&5
-$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX)" >&6;}
-    fi
+        BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+        if test -d "$BOOT_JDK"; then
+          BOOT_JDK_FOUND=maybe
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+        fi
+
+
+    # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+    if test "x$BOOT_JDK_FOUND" = xmaybe; then
+      # Do we have a bin/java?
+      if test ! -x "$BOOT_JDK/bin/java"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+        BOOT_JDK_FOUND=no
+      else
+        # Do we have a bin/javac?
+        if test ! -x "$BOOT_JDK/bin/javac"; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+          { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+          BOOT_JDK_FOUND=no
+        else
+          # Do we have an rt.jar? (On MacOSX it is called classes.jar)
+          if test ! -f "$BOOT_JDK/jre/lib/rt.jar" && test ! -f "$BOOT_JDK/../Classes/classes.jar"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain an rt.jar; ignoring" >&6;}
+            BOOT_JDK_FOUND=no
+          else
+            # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+            BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | head -n 1`
+
+            # Extra M4 quote needed to protect [] in grep expression.
+            FOUND_VERSION_78=`echo $BOOT_JDK_VERSION | grep  '\"1\.[78]\.'`
+            if test "x$FOUND_VERSION_78" = x; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 7 or 8)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 7 or 8)" >&6;}
+              BOOT_JDK_FOUND=no
+            else
+              # We're done! :-)
+              BOOT_JDK_FOUND=yes
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+            fi # end check jdk version
+          fi # end check rt.jar
+        fi # end check javac
+      fi # end check java
+    fi # end check boot jdk found
+  fi
+
+    done
   fi
 
 
@@ -9801,26 +14666,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -9868,26 +14840,133 @@
               # We're done! :-)
               BOOT_JDK_FOUND=yes
 
-    # Fail with message the path to the Boot JDK if var BOOT_JDK contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$BOOT_JDK" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            BOOT_JDK=`$CYGPATH -s -m -a "$BOOT_JDK"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            BOOT_JDK=`$ECHO "$BOOT_JDK" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            BOOT_JDK=`$CYGPATH -u "$BOOT_JDK"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to the Boot JDK! \"$BOOT_JDK\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$BOOT_JDK"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$BOOT_JDK"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    BOOT_JDK="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$BOOT_JDK"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
 $as_echo_n "checking for Boot JDK... " >&6; }
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK ($BOOT_JDK_VERSION)" >&5
-$as_echo "$BOOT_JDK ($BOOT_JDK_VERSION)" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+              BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' '  '`
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
             fi # end check jdk version
           fi # end check rt.jar
         fi # end check javac
@@ -10465,16 +15544,13 @@
 
 
 
-
-
-# Check if the VS env variables were setup prior to running configure.
-# If not, then find vcvarsall.bat and run it automatically, and integrate
-# the set env variables into the spec file.
-SETUPDEVENV="# No special vars"
-if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-    # Store path to cygwin link.exe to help excluding it when searching for
-    # VS linker.
-    # Extract the first word of "link", so it can be a program name with args.
+# Locate the actual tools
+
+if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+
+  # Store path to cygwin link.exe to help excluding it when searching for
+  # VS linker. This must be done before changing the PATH when looking for VS.
+  # Extract the first word of "link", so it can be a program name with args.
 set dummy link; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
@@ -10514,6 +15590,7 @@
 fi
 
 
+  if test "x$CYGWIN_LINK" != x; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the first found link.exe is actually the Cygwin link tool" >&5
 $as_echo_n "checking if the first found link.exe is actually the Cygwin link tool... " >&6; }
     "$CYGWIN_LINK" --version > /dev/null
@@ -10526,123 +15603,861 @@
       # This might be the VS linker. Don't exclude it later on.
       CYGWIN_LINK=""
     fi
-
-    # If vcvarsall.bat has been run, then VCINSTALLDIR is set.
+  fi
+
+  # First-hand choice is to locate and run the vsvars bat file.
+
+  if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+    VCVARSFILE="vc/bin/vcvars32.bat"
+  else
+    VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+  fi
+
+  VS_ENV_CMD=""
+  VS_ENV_ARGS=""
+  if test "x$with_toolsdir" != x; then
+
+  if test "x$VS_ENV_CMD" = x; then
+    VS100BASE="$with_toolsdir/../.."
+    METHOD="--with-tools-dir"
+
+  windows_path="$VS100BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VS100BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VS100BASE="$unix_path"
+  fi
+
+    if test -d "$VS100BASE"; then
+      if test -f "$VS100BASE/$VCVARSFILE"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$VS100BASE/$VCVARSFILE"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+  fi
+
+  if test "x$with_toolsdir" != x && test "x$VS_ENV_CMD" = x; then
+    # Having specified an argument which is incorrect will produce an instant failure;
+    # we should not go on looking
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path given by --with-tools-dir does not contain a valid Visual Studio installation" >&5
+$as_echo "$as_me: The path given by --with-tools-dir does not contain a valid Visual Studio installation" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Please point to the VC/bin directory within the Visual Studio installation" >&5
+$as_echo "$as_me: Please point to the VC/bin directory within the Visual Studio installation" >&6;}
+    as_fn_error $? "Cannot locate a valid Visual Studio installation" "$LINENO" 5
+  fi
+
+  if test "x$ProgramW6432" != x; then
+
+  if test "x$VS_ENV_CMD" = x; then
+    WIN_SDK_BASE="$ProgramW6432/Microsoft SDKs/Windows/v7.1/Bin"
+    METHOD="well-known name"
+
+  windows_path="$WIN_SDK_BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    WIN_SDK_BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    WIN_SDK_BASE="$unix_path"
+  fi
+
+    if test -d "$WIN_SDK_BASE"; then
+      if test -f "$WIN_SDK_BASE/SetEnv.Cmd"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$WIN_SDK_BASE/SetEnv.Cmd"
+        if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+          VS_ENV_ARGS="/x86"
+        else
+          VS_ENV_ARGS="/x64"
+        fi
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+  fi
+  if test "x$PROGRAMW6432" != x; then
+
+  if test "x$VS_ENV_CMD" = x; then
+    WIN_SDK_BASE="$PROGRAMW6432/Microsoft SDKs/Windows/v7.1/Bin"
+    METHOD="well-known name"
+
+  windows_path="$WIN_SDK_BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    WIN_SDK_BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    WIN_SDK_BASE="$unix_path"
+  fi
+
+    if test -d "$WIN_SDK_BASE"; then
+      if test -f "$WIN_SDK_BASE/SetEnv.Cmd"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$WIN_SDK_BASE/SetEnv.Cmd"
+        if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+          VS_ENV_ARGS="/x86"
+        else
+          VS_ENV_ARGS="/x64"
+        fi
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+  fi
+  if test "x$PROGRAMFILES" != x; then
+
+  if test "x$VS_ENV_CMD" = x; then
+    WIN_SDK_BASE="$PROGRAMFILES/Microsoft SDKs/Windows/v7.1/Bin"
+    METHOD="well-known name"
+
+  windows_path="$WIN_SDK_BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    WIN_SDK_BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    WIN_SDK_BASE="$unix_path"
+  fi
+
+    if test -d "$WIN_SDK_BASE"; then
+      if test -f "$WIN_SDK_BASE/SetEnv.Cmd"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$WIN_SDK_BASE/SetEnv.Cmd"
+        if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+          VS_ENV_ARGS="/x86"
+        else
+          VS_ENV_ARGS="/x64"
+        fi
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+  fi
+
+  if test "x$VS_ENV_CMD" = x; then
+    WIN_SDK_BASE="C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin"
+    METHOD="well-known name"
+
+  windows_path="$WIN_SDK_BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    WIN_SDK_BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    WIN_SDK_BASE="$unix_path"
+  fi
+
+    if test -d "$WIN_SDK_BASE"; then
+      if test -f "$WIN_SDK_BASE/SetEnv.Cmd"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$WIN_SDK_BASE/SetEnv.Cmd"
+        if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+          VS_ENV_ARGS="/x86"
+        else
+          VS_ENV_ARGS="/x64"
+        fi
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+
+  if test "x$VS_ENV_CMD" = x; then
+    WIN_SDK_BASE="C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1/Bin"
+    METHOD="well-known name"
+
+  windows_path="$WIN_SDK_BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    WIN_SDK_BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    WIN_SDK_BASE="$unix_path"
+  fi
+
+    if test -d "$WIN_SDK_BASE"; then
+      if test -f "$WIN_SDK_BASE/SetEnv.Cmd"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$WIN_SDK_BASE/SetEnv.Cmd"
+        if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+          VS_ENV_ARGS="/x86"
+        else
+          VS_ENV_ARGS="/x64"
+        fi
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+
+  if test "x$VS100COMNTOOLS" != x; then
+
+  if test "x$VS_ENV_CMD" = x; then
+    VS100BASE="$VS100COMNTOOLS/../.."
+    METHOD="VS100COMNTOOLS variable"
+
+  windows_path="$VS100BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VS100BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VS100BASE="$unix_path"
+  fi
+
+    if test -d "$VS100BASE"; then
+      if test -f "$VS100BASE/$VCVARSFILE"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$VS100BASE/$VCVARSFILE"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+  fi
+  if test "x$PROGRAMFILES" != x; then
+
+  if test "x$VS_ENV_CMD" = x; then
+    VS100BASE="$PROGRAMFILES/Microsoft Visual Studio 10.0"
+    METHOD="well-known name"
+
+  windows_path="$VS100BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VS100BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VS100BASE="$unix_path"
+  fi
+
+    if test -d "$VS100BASE"; then
+      if test -f "$VS100BASE/$VCVARSFILE"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$VS100BASE/$VCVARSFILE"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+  fi
+
+  if test "x$VS_ENV_CMD" = x; then
+    VS100BASE="C:/Program Files/Microsoft Visual Studio 10.0"
+    METHOD="well-known name"
+
+  windows_path="$VS100BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VS100BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VS100BASE="$unix_path"
+  fi
+
+    if test -d "$VS100BASE"; then
+      if test -f "$VS100BASE/$VCVARSFILE"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$VS100BASE/$VCVARSFILE"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+
+  if test "x$VS_ENV_CMD" = x; then
+    VS100BASE="C:/Program Files (x86)/Microsoft Visual Studio 10.0"
+    METHOD="well-known name"
+
+  windows_path="$VS100BASE"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    VS100BASE="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    VS100BASE="$unix_path"
+  fi
+
+    if test -d "$VS100BASE"; then
+      if test -f "$VS100BASE/$VCVARSFILE"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        VS_ENV_CMD="$VS100BASE/$VCVARSFILE"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS100BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS100BASE using $METHOD" >&6;}
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+      fi
+    fi
+  fi
+
+
+  if test "x$VS_ENV_CMD" != x; then
+    # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$VS_ENV_CMD"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of VS_ENV_CMD" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of VS_ENV_CMD, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of VS_ENV_CMD, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of VS_ENV_CMD" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$VS_ENV_CMD"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of VS_ENV_CMD" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$VS_ENV_CMD"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving VS_ENV_CMD (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving VS_ENV_CMD (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of VS_ENV_CMD" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    VS_ENV_CMD="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting VS_ENV_CMD to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting VS_ENV_CMD to \"$new_complete\"" >&6;}
+  fi
+
+
+    # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Trying to extract Visual Studio environment variables" >&5
+$as_echo "$as_me: Trying to extract Visual Studio environment variables" >&6;}
+    cd $OUTPUT_ROOT
+    # FIXME: The code betweeen ---- was inlined from a separate script and is not properly adapted
+    # to autoconf standards.
+
+    #----
+
+    # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment)
+    # but calculate the difference in Cygwin environment before/after running it and then
+    # apply the diff.
+
+    if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
+      _vs10varsall=`cygpath -a -m -s "$VS_ENV_CMD"`
+      _dosvs10varsall=`cygpath -a -w -s $_vs10varsall`
+      _dosbash=`cygpath -a -w -s \`which bash\`.*`
+    else
+      _dosvs10varsall=`cmd //c echo $VS_ENV_CMD`
+      _dosbash=`cmd //c echo \`which bash\``
+    fi
+
+    # generate the set of exported vars before/after the vs10 setup
+    $ECHO "@echo off"                                           >  localdevenvtmp.bat
+    $ECHO "$_dosbash -c \"export -p\" > localdevenvtmp.export0" >> localdevenvtmp.bat
+    $ECHO "call $_dosvs10varsall $VS_ENV_ARGS"                  >> localdevenvtmp.bat
+    $ECHO "$_dosbash -c \"export -p\" > localdevenvtmp.export1" >> localdevenvtmp.bat
+
+    # Now execute the newly created bat file.
+    # The | cat is to stop SetEnv.Cmd to mess with system colors on msys
+    cmd /c localdevenvtmp.bat | cat
+
+    # apply the diff (less some non-vs10 vars named by "!")
+    $SORT localdevenvtmp.export0 | $GREP -v "!" > localdevenvtmp.export0.sort
+    $SORT localdevenvtmp.export1 | $GREP -v "!" > localdevenvtmp.export1.sort
+    $COMM -1 -3 localdevenvtmp.export0.sort localdevenvtmp.export1.sort > localdevenv.sh
+
+    # cleanup
+    $RM localdevenvtmp*
+    #----
+    cd $CURDIR
+    if test ! -s $OUTPUT_ROOT/localdevenv.sh; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Could not succesfully extract the envionment variables needed for the VS setup." >&5
+$as_echo "$as_me: Could not succesfully extract the envionment variables needed for the VS setup." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&5
+$as_echo "$as_me: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&5
+$as_echo "$as_me: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&6;}
+      as_fn_error $? "Cannot continue" "$LINENO" 5
+    fi
+
+    # Now set all paths and other env variables. This will allow the rest of
+    # the configure script to find and run the compiler in the proper way.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Setting extracted environment variables" >&5
+$as_echo "$as_me: Setting extracted environment variables" >&6;}
+    . $OUTPUT_ROOT/localdevenv.sh
+  else
+    # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Cannot locate a valid Visual Studio installation, checking current environment" >&5
+$as_echo "$as_me: Cannot locate a valid Visual Studio installation, checking current environment" >&6;}
+  fi
+
+  # At this point, we should have corrent variables in the environment, or we can't continue.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Visual Studio variables" >&5
+$as_echo_n "checking for Visual Studio variables... " >&6; }
+
+  if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x || test "x$WINDOWSSDKDIR" != x; then
+    if test "x$INCLUDE" = x || test "x$LIB" = x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: present but broken" >&5
+$as_echo "present but broken" >&6; }
+      as_fn_error $? "Your VC command prompt seems broken, INCLUDE and/or LIB is missing." "$LINENO" 5
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+      VS_INCLUDE="$INCLUDE"
+      VS_LIB="$LIB"
+      VS_PATH="$PATH"
+
+
+
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+
+    if test "x$VS_ENV_CMD" = x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Cannot locate a valid Visual Studio or Windows SDK installation on disk," >&5
+$as_echo "$as_me: Cannot locate a valid Visual Studio or Windows SDK installation on disk," >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: nor is this script run from a Visual Studio command prompt." >&5
+$as_echo "$as_me: nor is this script run from a Visual Studio command prompt." >&6;}
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Running the extraction script failed." >&5
+$as_echo "$as_me: Running the extraction script failed." >&6;}
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&5
+$as_echo "$as_me: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&5
+$as_echo "$as_me: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&6;}
+    as_fn_error $? "Cannot continue" "$LINENO" 5
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for msvcr100.dll" >&5
+$as_echo_n "checking for msvcr100.dll... " >&6; }
+
+# Check whether --with-msvcr-dll was given.
+if test "${with_msvcr_dll+set}" = set; then :
+  withval=$with_msvcr_dll;
+fi
+
+  if test "x$with_msvcr_dll" != x; then
+    MSVCR_DLL="$with_msvcr_dll"
+  else
     if test "x$VCINSTALLDIR" != x; then
-        # No further setup is needed. The build will happen from this kind
-        # of shell.
-        SETUPDEVENV="# This spec file expects that you are running bash from within a VS command prompt."
-        # Make sure to remind you, if you forget to run make from a cygwin bash shell
-        # that is spawned "bash -l" from a VS command prompt.
-        CHECK_FOR_VCINSTALLDIR=yes
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if you are running from within a VS command prompt" >&5
-$as_echo_n "checking if you are running from within a VS command prompt... " >&6; }
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-        # Ah, we have not yet run vcvarsall.bat/vsvars32.bat/vsvars64.bat. Lets do that. First find it.
-        if test "x$VS100COMNTOOLS" != x; then
-            VARSBAT=`find "$VS100COMNTOOLS/../.." -name vcvarsall.bat`
-	    SEARCH_ROOT="$VS100COMNTOOLS"
-        else
-            VARSBAT=`find "$PROGRAMFILES" -name vcvarsall.bat`
-	    SEARCH_ROOT="$PROGRAMFILES"
-        fi
-        VCPATH=`dirname "$VARSBAT"`
-        VCPATH=`cygpath -w "$VCPATH"`
-	if test "x$VARSBAT" = x || test ! -d "$VCPATH"; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can find the VS installation" >&5
-$as_echo_n "checking if we can find the VS installation... " >&6; }
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-            as_fn_error $? "Tried to find a VS installation using both $SEARCH_ROOT but failed. Please run \"c:\\cygwin\\bin\\bash.exe -l\" from a VS command prompt and then run configure/make from there." "$LINENO" 5
-        fi
-        case "$OPENJDK_TARGET_CPU" in
-          x86)
-            VARSBAT_ARCH=x86
-            ;;
-          x86_64)
-            VARSBAT_ARCH=amd64
-            ;;
-        esac
-        # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
-        cd $OUTPUT_ROOT
-        bash $SRC_ROOT/common/bin/extractvcvars.sh "$VARSBAT" "$VARSBAT_ARCH"
-	cd $CURDIR
-	if test ! -s $OUTPUT_ROOT/localdevenv.sh || test ! -s $OUTPUT_ROOT/localdevenv.gmk; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can extract the needed env variables" >&5
-$as_echo_n "checking if we can extract the needed env variables... " >&6; }
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-            as_fn_error $? "Could not succesfully extract the env variables needed for the VS setup. Please run \"c:\\cygwin\\bin\\bash.exe -l\" from a VS command prompt and then run configure/make from there." "$LINENO" 5
-        fi
-        # Now set all paths and other env variables. This will allow the rest of
-        # the configure script to find and run the compiler in the proper way.
-        . $OUTPUT_ROOT/localdevenv.sh
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can find the VS installation" >&5
-$as_echo_n "checking if we can find the VS installation... " >&6; }
-	if test "x$VCINSTALLDIR" != x; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VCINSTALLDIR" >&5
-$as_echo "$VCINSTALLDIR" >&6; }
-        else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-            as_fn_error $? "Could not find VS installation. Please install. If you are sure you have installed VS, then please run \"c:\\cygwin\\bin\\bash.exe -l\" from a VS command prompt and then run configure/make from there." "$LINENO" 5
-        fi
-        CHECK_FOR_VCINSTALLDIR=no
-	SETUPDEVENV="include $OUTPUT_ROOT/localdevenv.gmk"
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for msvcr100.dll" >&5
-$as_echo_n "checking for msvcr100.dll... " >&6; }
-
-# Check whether --with-msvcr100dll was given.
-if test "${with_msvcr100dll+set}" = set; then :
-  withval=$with_msvcr100dll;
-fi
-
-        if test "x$with_msvcr100dll" != x; then
-            MSVCR100DLL="$with_msvcr100dll"
-        else
-            if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
-                MSVCR100DLL=`find "$VCINSTALLDIR/.." -name msvcr100.dll | grep x64 | head --lines 1`
-            else
-                MSVCR100DLL=`find "$VCINSTALLDIR/.." -name msvcr100.dll | grep x86 | grep -v ia64 | grep -v x64 | head --lines 1`
-                if test "x$MSVCR100DLL" = x; then
-                    MSVCR100DLL=`find "$VCINSTALLDIR/.." -name msvcr100.dll | head --lines 1`
-                fi
-            fi
-        fi
-	if test "x$MSVCR100DLL" = x; then
-           { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	   as_fn_error $? "Could not find msvcr100.dll !" "$LINENO" 5
-        fi
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVCR100DLL" >&5
-$as_echo "$MSVCR100DLL" >&6; }
-
-    # Fail with message the path to msvcr100.dll if var MSVCR100DLL contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$MSVCR100DLL" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            MSVCR100DLL=`$CYGPATH -s -m -a "$MSVCR100DLL"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            MSVCR100DLL=`$ECHO "$MSVCR100DLL" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            MSVCR100DLL=`$CYGPATH -u "$MSVCR100DLL"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to msvcr100.dll! \"$MSVCR100DLL\"" "$LINENO" 5
-        fi
-    fi
-
-    fi
-fi
-
-
-
-
-# Locate the actual tools
+      if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+        MSVCR_DLL=`find "$VCINSTALLDIR" -name msvcr100.dll | grep x64 | head --lines 1`
+      else
+        MSVCR_DLL=`find "$VCINSTALLDIR" -name msvcr100.dll | grep x86 | grep -v ia64 | grep -v x64 | head --lines 1`
+        if test "x$MSVCR_DLL" = x; then
+          MSVCR_DLL=`find "$VCINSTALLDIR" -name msvcr100.dll | head --lines 1`
+        fi
+      fi
+      if test "x$MSVCR_DLL" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: msvcr100.dll found in VCINSTALLDIR: $VCINSTALLDIR" >&5
+$as_echo "$as_me: msvcr100.dll found in VCINSTALLDIR: $VCINSTALLDIR" >&6;}
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: msvcr100.dll not found in VCINSTALLDIR: $VCINSTALLDIR" >&5
+$as_echo "$as_me: Warning: msvcr100.dll not found in VCINSTALLDIR: $VCINSTALLDIR" >&6;}
+      fi
+    fi
+    if test "x$MSVCR_DLL" = x; then
+      if test -f "$SYSTEMROOT/system32/msvcr100.dll"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: msvcr100.dll found in $SYSTEMROOT/system32" >&5
+$as_echo "$as_me: msvcr100.dll found in $SYSTEMROOT/system32" >&6;}
+        MSVCR_DLL="$SYSTEMROOT/system32/msvcr100.dll"
+      fi
+    fi
+  fi
+  if test "x$MSVCR_DLL" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    as_fn_error $? "Could not find msvcr100.dll !" "$LINENO" 5
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVCR_DLL" >&5
+$as_echo "$MSVCR_DLL" >&6; }
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$MSVCR_DLL"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of MSVCR_DLL" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    MSVCR_DLL="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVCR_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVCR_DLL to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$MSVCR_DLL"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    MSVCR_DLL="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVCR_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVCR_DLL to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$MSVCR_DLL"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of MSVCR_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+
+fi
+
+
 
 # If --build AND --host is set, then the configure script will find any
 # cross compilation tools in the PATH. Cross compilation tools
@@ -10707,47 +16522,245 @@
 done
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$BUILD_CC"
-    car="${tmp%% *}"
-    tmp="$BUILD_CC EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        BUILD_CC="$car ${cdr% *}"
-    else
-        BUILD_CC="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$BUILD_CC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of BUILD_CC" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CC, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_CC, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of BUILD_CC" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$BUILD_CC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of BUILD_CC" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$BUILD_CC"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving BUILD_CC (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving BUILD_CC (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of BUILD_CC" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    BUILD_CC="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_CC to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_CC to \"$new_complete\"" >&6;}
+  fi
 
     for ac_prog in cl CC g++
 do
@@ -10795,47 +16808,245 @@
 done
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$BUILD_CXX"
-    car="${tmp%% *}"
-    tmp="$BUILD_CXX EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        BUILD_CXX="$car ${cdr% *}"
-    else
-        BUILD_CXX="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$BUILD_CXX"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of BUILD_CXX" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CXX, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_CXX, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of BUILD_CXX" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$BUILD_CXX"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of BUILD_CXX" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$BUILD_CXX"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving BUILD_CXX (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving BUILD_CXX (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of BUILD_CXX" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    BUILD_CXX="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_CXX to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_CXX to \"$new_complete\"" >&6;}
+  fi
 
     # Extract the first word of "ld", so it can be a program name with args.
 set dummy ld; ac_word=$2
@@ -10878,47 +17089,245 @@
 
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$BUILD_LD"
-    car="${tmp%% *}"
-    tmp="$BUILD_LD EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        BUILD_LD="$car ${cdr% *}"
-    else
-        BUILD_LD="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$BUILD_LD"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of BUILD_LD" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_LD, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_LD, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of BUILD_LD" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$BUILD_LD"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of BUILD_LD" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$BUILD_LD"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving BUILD_LD (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving BUILD_LD (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of BUILD_LD" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    BUILD_LD="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_LD to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_LD to \"$new_complete\"" >&6;}
+  fi
 
 fi
 
@@ -11102,16 +17511,874 @@
   PATH=$TOOLS_DIR:$PATH
 fi
 
+
+### Locate C compiler (CC)
+
 # gcc is almost always present, but on Windows we
 # prefer cl.exe and on Solaris we prefer CC.
 # Thus test for them in this order.
+if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+  # Do not probe for cc on MacOSX.
+  COMPILER_CHECK_LIST="cl gcc"
+else
+  COMPILER_CHECK_LIST="cl cc gcc"
+fi
+
+
+  COMPILER_NAME=C
+
+  # Do a first initial attempt at searching the list of compiler names.
+  # AC_PATH_PROGS can't be run multiple times with the same variable,
+  # so create a new name for this run.
+  for ac_prog in $COMPILER_CHECK_LIST
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_POTENTIAL_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $POTENTIAL_CC in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_POTENTIAL_CC="$POTENTIAL_CC" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_POTENTIAL_CC="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+POTENTIAL_CC=$ac_cv_path_POTENTIAL_CC
+if test -n "$POTENTIAL_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POTENTIAL_CC" >&5
+$as_echo "$POTENTIAL_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$POTENTIAL_CC" && break
+done
+
+  CC=$POTENTIAL_CC
+
+  if test "x$$CC" = x; then
+
+    # Print a helpful message on how to acquire the necessary build dependency.
+    # devkit is the help tag: freetyp2, cups, pulse, alsa etc
+    MISSING_DEPENDENCY=devkit
+    PKGHANDLER_COMMAND=
+
+    case $PKGHANDLER in
+	apt-get)
+                apt_help     $MISSING_DEPENDENCY ;;
+    yum)
+                yum_help     $MISSING_DEPENDENCY ;;
+	port)
+                port_help    $MISSING_DEPENDENCY ;;
+	pkgutil)
+                pkgutil_help $MISSING_DEPENDENCY ;;
+	pkgadd)
+                pkgadd_help  $MISSING_DEPENDENCY ;;
+    * )
+      break ;;
+    esac
+
+    if test "x$PKGHANDLER_COMMAND" != x; then
+        HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+    fi
+
+      as_fn_error $? "Could not find a $COMPILER_NAME compiler. $HELP_MSG" "$LINENO" 5
+  fi
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$CC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of CC" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CC, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of CC, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of CC" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$CC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of CC" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$CC"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving CC (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving CC (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CC, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of CC" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    CC="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CC to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting CC to \"$new_complete\"" >&6;}
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking resolved symbolic links for CC" >&5
+$as_echo_n "checking resolved symbolic links for CC... " >&6; }
+  TEST_COMPILER="$CC"
+
+    if test "x$OPENJDK_BUILD_OS" != xwindows; then
+        # Follow a chain of symbolic links. Use readlink
+        # where it exists, else fall back to horribly
+        # complicated shell code.
+        if test "x$READLINK_TESTED" != yes; then
+            # On MacOSX there is a readlink tool with a different
+            # purpose than the GNU readlink tool. Check the found readlink.
+            ISGNU=`$READLINK --help 2>&1 | $GREP GNU`
+            if test "x$ISGNU" = x; then
+                 # A readlink that we do not know how to use.
+                 # Are there other non-GNU readlinks out there?
+                 READLINK_TESTED=yes
+                 READLINK=
+            fi
+        fi
+
+        if test "x$READLINK" != x; then
+            TEST_COMPILER=`$READLINK -f $TEST_COMPILER`
+        else
+            STARTDIR=$PWD
+            COUNTER=0
+            sym_link_dir=`$DIRNAME $TEST_COMPILER`
+            sym_link_file=`$BASENAME $TEST_COMPILER`
+            while test $COUNTER -lt 20; do
+                ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+                if test "x$ISLINK" == x; then
+                    # This is not a symbolic link! We are done!
+                    break
+                fi
+                # The link might be relative! We have to use cd to travel safely.
+                cd $sym_link_dir
+                # ... and we must get the to the absolute path, not one using symbolic links.
+                cd `pwd -P`
+                cd `$DIRNAME $ISLINK`
+                sym_link_dir=`$THEPWDCMD`
+                sym_link_file=`$BASENAME $ISLINK`
+                let COUNTER=COUNTER+1
+            done
+            cd $STARTDIR
+            TEST_COMPILER=$sym_link_dir/$sym_link_file
+        fi
+    fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_COMPILER" >&5
+$as_echo "$TEST_COMPILER" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if CC is disguised ccache" >&5
+$as_echo_n "checking if CC is disguised ccache... " >&6; }
+
+  COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"`
+  if test "x$COMPILER_BASENAME" = "xccache"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, trying to find proper $COMPILER_NAME compiler" >&5
+$as_echo "yes, trying to find proper $COMPILER_NAME compiler" >&6; }
+    # We /usr/lib/ccache in the path, so cc is a symlink to /usr/bin/ccache.
+    # We want to control ccache invocation ourselves, so ignore this cc and try
+    # searching again.
+
+    # Remove the path to the fake ccache cc from the PATH
+    RETRY_COMPILER_SAVED_PATH="$PATH"
+    COMPILER_DIRNAME=`$DIRNAME $CC`
+    PATH="`$ECHO $PATH | $SED -e "s,$COMPILER_DIRNAME,,g" -e "s,::,:,g" -e "s,^:,,g"`"
+
+    # Try again looking for our compiler
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in $COMPILER_CHECK_LIST
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_PROPER_COMPILER_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PROPER_COMPILER_CC"; then
+  ac_cv_prog_PROPER_COMPILER_CC="$PROPER_COMPILER_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PROPER_COMPILER_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PROPER_COMPILER_CC=$ac_cv_prog_PROPER_COMPILER_CC
+if test -n "$PROPER_COMPILER_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PROPER_COMPILER_CC" >&5
+$as_echo "$PROPER_COMPILER_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$PROPER_COMPILER_CC" && break
+  done
+fi
+if test -z "$PROPER_COMPILER_CC"; then
+  ac_ct_PROPER_COMPILER_CC=$PROPER_COMPILER_CC
+  for ac_prog in $COMPILER_CHECK_LIST
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_PROPER_COMPILER_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_PROPER_COMPILER_CC"; then
+  ac_cv_prog_ac_ct_PROPER_COMPILER_CC="$ac_ct_PROPER_COMPILER_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_PROPER_COMPILER_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_PROPER_COMPILER_CC=$ac_cv_prog_ac_ct_PROPER_COMPILER_CC
+if test -n "$ac_ct_PROPER_COMPILER_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_PROPER_COMPILER_CC" >&5
+$as_echo "$ac_ct_PROPER_COMPILER_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_PROPER_COMPILER_CC" && break
+done
+
+  if test "x$ac_ct_PROPER_COMPILER_CC" = x; then
+    PROPER_COMPILER_CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PROPER_COMPILER_CC=$ac_ct_PROPER_COMPILER_CC
+  fi
+fi
+
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$PROPER_COMPILER_CC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of PROPER_COMPILER_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of PROPER_COMPILER_CC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of PROPER_COMPILER_CC" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of PROPER_COMPILER_CC, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of PROPER_COMPILER_CC, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of PROPER_COMPILER_CC" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$PROPER_COMPILER_CC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of PROPER_COMPILER_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of PROPER_COMPILER_CC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of PROPER_COMPILER_CC" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$PROPER_COMPILER_CC"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving PROPER_COMPILER_CC (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving PROPER_COMPILER_CC (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of PROPER_COMPILER_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of PROPER_COMPILER_CC, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of PROPER_COMPILER_CC" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    PROPER_COMPILER_CC="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting PROPER_COMPILER_CC to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting PROPER_COMPILER_CC to \"$new_complete\"" >&6;}
+  fi
+
+    PATH="$RETRY_COMPILER_SAVED_PATH"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for resolved symbolic links for CC" >&5
+$as_echo_n "checking for resolved symbolic links for CC... " >&6; }
+
+    if test "x$OPENJDK_BUILD_OS" != xwindows; then
+        # Follow a chain of symbolic links. Use readlink
+        # where it exists, else fall back to horribly
+        # complicated shell code.
+        if test "x$READLINK_TESTED" != yes; then
+            # On MacOSX there is a readlink tool with a different
+            # purpose than the GNU readlink tool. Check the found readlink.
+            ISGNU=`$READLINK --help 2>&1 | $GREP GNU`
+            if test "x$ISGNU" = x; then
+                 # A readlink that we do not know how to use.
+                 # Are there other non-GNU readlinks out there?
+                 READLINK_TESTED=yes
+                 READLINK=
+            fi
+        fi
+
+        if test "x$READLINK" != x; then
+            PROPER_COMPILER_CC=`$READLINK -f $PROPER_COMPILER_CC`
+        else
+            STARTDIR=$PWD
+            COUNTER=0
+            sym_link_dir=`$DIRNAME $PROPER_COMPILER_CC`
+            sym_link_file=`$BASENAME $PROPER_COMPILER_CC`
+            while test $COUNTER -lt 20; do
+                ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+                if test "x$ISLINK" == x; then
+                    # This is not a symbolic link! We are done!
+                    break
+                fi
+                # The link might be relative! We have to use cd to travel safely.
+                cd $sym_link_dir
+                # ... and we must get the to the absolute path, not one using symbolic links.
+                cd `pwd -P`
+                cd `$DIRNAME $ISLINK`
+                sym_link_dir=`$THEPWDCMD`
+                sym_link_file=`$BASENAME $ISLINK`
+                let COUNTER=COUNTER+1
+            done
+            cd $STARTDIR
+            PROPER_COMPILER_CC=$sym_link_dir/$sym_link_file
+        fi
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PROPER_COMPILER_CC" >&5
+$as_echo "$PROPER_COMPILER_CC" >&6; }
+    CC="$PROPER_COMPILER_CC"
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, keeping CC" >&5
+$as_echo "no, keeping CC" >&6; }
+    CC="$TEST_COMPILER"
+  fi
+
+  COMPILER=$CC
+  COMPILER_NAME=$COMPILER_NAME
+
+  if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+    # Make sure we use the Sun Studio compiler and not gcc on Solaris, which won't work
+    COMPILER_VERSION_TEST=`$COMPILER -V 2>&1 | $HEAD -n 1`
+    $ECHO $COMPILER_VERSION_TEST | $GREP "^.*: Sun $COMPILER_NAME" > /dev/null
+    if test $? -ne 0; then
+      GCC_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required Sun Studio compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required Sun Studio compiler." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -V was: \"$COMPILER_VERSION_TEST\" and with --version: \"$GCC_VERSION_TEST\"" >&5
+$as_echo "$as_me: The result from running with -V was: \"$COMPILER_VERSION_TEST\" and with --version: \"$GCC_VERSION_TEST\"" >&6;}
+      as_fn_error $? "Sun Studio compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+    else
+      COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*[ ,\t]$COMPILER_NAME[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p"`
+      COMPILER_VENDOR="Sun Studio"
+    fi
+  elif test  "x$OPENJDK_TARGET_OS" = xwindows; then
+    # First line typically looks something like:
+    # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
+    COMPILER_VERSION_TEST=`$COMPILER 2>&1 | $HEAD -n 1`
+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*Version \([1-9][0-9.]*\) .*/\1/p"`
+    COMPILER_VENDOR="Microsoft CL.EXE"
+    COMPILER_CPU_TEST=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* for \(.*\)$/\1/p"`
+    if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
+      if test "x$COMPILER_CPU_TEST" != "x80x86"; then
+        as_fn_error $? "Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for \"$COMPILER_CPU_TEST\"; expected \"80x86\"." "$LINENO" 5
+      fi
+    elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
+      if test "x$COMPILER_CPU_TEST" != "xx64"; then
+        as_fn_error $? "Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for \"$COMPILER_CPU_TEST\"; expected \"x64\"." "$LINENO" 5
+      fi
+    fi
+  else
+    COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
+    # Check that this is likely to be GCC.
+    $COMPILER --version 2>&1 | $GREP "Free Software Foundation" > /dev/null
+    if test $? -ne 0; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION_TEST\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION_TEST\"" >&6;}
+      as_fn_error $? "GCC compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+    fi
+
+    # First line typically looks something like:
+    # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \([1-9][0-9.]*\)/\1/p"`
+    COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) [1-9][0-9.]*/\1/p"`
+  fi
+  # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker)
+  CC_VERSION="$COMPILER_VERSION"
+  # This sets CC_VENDOR or CXX_VENDOR. (This comment is a grep marker)
+  CC_VENDOR="$COMPILER_VENDOR"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $COMPILER_VENDOR $COMPILER_NAME compiler version $COMPILER_VERSION (located at $COMPILER)" >&5
+$as_echo "$as_me: Using $COMPILER_VENDOR $COMPILER_NAME compiler version $COMPILER_VERSION (located at $COMPILER)" >&6;}
+
+
+# Now that we have resolved CC ourself, let autoconf have it's go at it
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl cc gcc
+  for ac_prog in $CC
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
@@ -11155,7 +18422,7 @@
 fi
 if test -z "$CC"; then
   ac_ct_CC=$CC
-  for ac_prog in cl cc gcc
+  for ac_prog in $CC
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -11703,7 +18970,69 @@
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-if test "x$CC" = x; then
+
+### Locate C++ compiler (CXX)
+
+if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+  # Do not probe for CC on MacOSX.
+  COMPILER_CHECK_LIST="cl g++"
+else
+  COMPILER_CHECK_LIST="cl CC g++"
+fi
+
+  COMPILER_NAME=C++
+
+  # Do a first initial attempt at searching the list of compiler names.
+  # AC_PATH_PROGS can't be run multiple times with the same variable,
+  # so create a new name for this run.
+  for ac_prog in $COMPILER_CHECK_LIST
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_POTENTIAL_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $POTENTIAL_CXX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_POTENTIAL_CXX="$POTENTIAL_CXX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_POTENTIAL_CXX="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+POTENTIAL_CXX=$ac_cv_path_POTENTIAL_CXX
+if test -n "$POTENTIAL_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POTENTIAL_CXX" >&5
+$as_echo "$POTENTIAL_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$POTENTIAL_CXX" && break
+done
+
+  CXX=$POTENTIAL_CXX
+
+  if test "x$$CXX" = x; then
 
     # Print a helpful message on how to acquire the necessary build dependency.
     # devkit is the help tag: freetyp2, cups, pulse, alsa etc
@@ -11729,56 +19058,775 @@
         HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
     fi
 
-    as_fn_error $? "Could not find a compiler. $HELP_MSG" "$LINENO" 5
-fi
-if test "x$CC" = xcc && test "x$OPENJDK_BUILD_OS" = xmacosx; then
-    # Do not use cc on MacOSX use gcc instead.
-    CC="gcc"
-fi
-
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$CC"
-    car="${tmp%% *}"
-    tmp="$CC EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        CC="$car ${cdr% *}"
-    else
-        CC="$car"
-    fi
-
-
+      as_fn_error $? "Could not find a $COMPILER_NAME compiler. $HELP_MSG" "$LINENO" 5
+  fi
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$CXX"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXX, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of CXX" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXX, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of CXX, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of CXX" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$CXX"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXX, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of CXX" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$CXX"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving CXX (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving CXX (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXX, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of CXX" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    CXX="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CXX to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting CXX to \"$new_complete\"" >&6;}
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking resolved symbolic links for CXX" >&5
+$as_echo_n "checking resolved symbolic links for CXX... " >&6; }
+  TEST_COMPILER="$CXX"
+
+    if test "x$OPENJDK_BUILD_OS" != xwindows; then
+        # Follow a chain of symbolic links. Use readlink
+        # where it exists, else fall back to horribly
+        # complicated shell code.
+        if test "x$READLINK_TESTED" != yes; then
+            # On MacOSX there is a readlink tool with a different
+            # purpose than the GNU readlink tool. Check the found readlink.
+            ISGNU=`$READLINK --help 2>&1 | $GREP GNU`
+            if test "x$ISGNU" = x; then
+                 # A readlink that we do not know how to use.
+                 # Are there other non-GNU readlinks out there?
+                 READLINK_TESTED=yes
+                 READLINK=
+            fi
+        fi
+
+        if test "x$READLINK" != x; then
+            TEST_COMPILER=`$READLINK -f $TEST_COMPILER`
+        else
+            STARTDIR=$PWD
+            COUNTER=0
+            sym_link_dir=`$DIRNAME $TEST_COMPILER`
+            sym_link_file=`$BASENAME $TEST_COMPILER`
+            while test $COUNTER -lt 20; do
+                ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+                if test "x$ISLINK" == x; then
+                    # This is not a symbolic link! We are done!
+                    break
+                fi
+                # The link might be relative! We have to use cd to travel safely.
+                cd $sym_link_dir
+                # ... and we must get the to the absolute path, not one using symbolic links.
+                cd `pwd -P`
+                cd `$DIRNAME $ISLINK`
+                sym_link_dir=`$THEPWDCMD`
+                sym_link_file=`$BASENAME $ISLINK`
+                let COUNTER=COUNTER+1
+            done
+            cd $STARTDIR
+            TEST_COMPILER=$sym_link_dir/$sym_link_file
+        fi
+    fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_COMPILER" >&5
+$as_echo "$TEST_COMPILER" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if CXX is disguised ccache" >&5
+$as_echo_n "checking if CXX is disguised ccache... " >&6; }
+
+  COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"`
+  if test "x$COMPILER_BASENAME" = "xccache"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, trying to find proper $COMPILER_NAME compiler" >&5
+$as_echo "yes, trying to find proper $COMPILER_NAME compiler" >&6; }
+    # We /usr/lib/ccache in the path, so cc is a symlink to /usr/bin/ccache.
+    # We want to control ccache invocation ourselves, so ignore this cc and try
+    # searching again.
+
+    # Remove the path to the fake ccache cc from the PATH
+    RETRY_COMPILER_SAVED_PATH="$PATH"
+    COMPILER_DIRNAME=`$DIRNAME $CXX`
+    PATH="`$ECHO $PATH | $SED -e "s,$COMPILER_DIRNAME,,g" -e "s,::,:,g" -e "s,^:,,g"`"
+
+    # Try again looking for our compiler
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in $COMPILER_CHECK_LIST
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_PROPER_COMPILER_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PROPER_COMPILER_CXX"; then
+  ac_cv_prog_PROPER_COMPILER_CXX="$PROPER_COMPILER_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_PROPER_COMPILER_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+PROPER_COMPILER_CXX=$ac_cv_prog_PROPER_COMPILER_CXX
+if test -n "$PROPER_COMPILER_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PROPER_COMPILER_CXX" >&5
+$as_echo "$PROPER_COMPILER_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$PROPER_COMPILER_CXX" && break
+  done
+fi
+if test -z "$PROPER_COMPILER_CXX"; then
+  ac_ct_PROPER_COMPILER_CXX=$PROPER_COMPILER_CXX
+  for ac_prog in $COMPILER_CHECK_LIST
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_PROPER_COMPILER_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_PROPER_COMPILER_CXX"; then
+  ac_cv_prog_ac_ct_PROPER_COMPILER_CXX="$ac_ct_PROPER_COMPILER_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_PROPER_COMPILER_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_PROPER_COMPILER_CXX=$ac_cv_prog_ac_ct_PROPER_COMPILER_CXX
+if test -n "$ac_ct_PROPER_COMPILER_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_PROPER_COMPILER_CXX" >&5
+$as_echo "$ac_ct_PROPER_COMPILER_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_PROPER_COMPILER_CXX" && break
+done
+
+  if test "x$ac_ct_PROPER_COMPILER_CXX" = x; then
+    PROPER_COMPILER_CXX=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PROPER_COMPILER_CXX=$ac_ct_PROPER_COMPILER_CXX
+  fi
+fi
+
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$PROPER_COMPILER_CXX"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of PROPER_COMPILER_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of PROPER_COMPILER_CXX, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of PROPER_COMPILER_CXX" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of PROPER_COMPILER_CXX, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of PROPER_COMPILER_CXX, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of PROPER_COMPILER_CXX" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$PROPER_COMPILER_CXX"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of PROPER_COMPILER_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of PROPER_COMPILER_CXX, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of PROPER_COMPILER_CXX" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$PROPER_COMPILER_CXX"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving PROPER_COMPILER_CXX (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving PROPER_COMPILER_CXX (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of PROPER_COMPILER_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of PROPER_COMPILER_CXX, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of PROPER_COMPILER_CXX" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    PROPER_COMPILER_CXX="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting PROPER_COMPILER_CXX to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting PROPER_COMPILER_CXX to \"$new_complete\"" >&6;}
+  fi
+
+    PATH="$RETRY_COMPILER_SAVED_PATH"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for resolved symbolic links for CXX" >&5
+$as_echo_n "checking for resolved symbolic links for CXX... " >&6; }
+
+    if test "x$OPENJDK_BUILD_OS" != xwindows; then
+        # Follow a chain of symbolic links. Use readlink
+        # where it exists, else fall back to horribly
+        # complicated shell code.
+        if test "x$READLINK_TESTED" != yes; then
+            # On MacOSX there is a readlink tool with a different
+            # purpose than the GNU readlink tool. Check the found readlink.
+            ISGNU=`$READLINK --help 2>&1 | $GREP GNU`
+            if test "x$ISGNU" = x; then
+                 # A readlink that we do not know how to use.
+                 # Are there other non-GNU readlinks out there?
+                 READLINK_TESTED=yes
+                 READLINK=
+            fi
+        fi
+
+        if test "x$READLINK" != x; then
+            PROPER_COMPILER_CXX=`$READLINK -f $PROPER_COMPILER_CXX`
+        else
+            STARTDIR=$PWD
+            COUNTER=0
+            sym_link_dir=`$DIRNAME $PROPER_COMPILER_CXX`
+            sym_link_file=`$BASENAME $PROPER_COMPILER_CXX`
+            while test $COUNTER -lt 20; do
+                ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+                if test "x$ISLINK" == x; then
+                    # This is not a symbolic link! We are done!
+                    break
+                fi
+                # The link might be relative! We have to use cd to travel safely.
+                cd $sym_link_dir
+                # ... and we must get the to the absolute path, not one using symbolic links.
+                cd `pwd -P`
+                cd `$DIRNAME $ISLINK`
+                sym_link_dir=`$THEPWDCMD`
+                sym_link_file=`$BASENAME $ISLINK`
+                let COUNTER=COUNTER+1
+            done
+            cd $STARTDIR
+            PROPER_COMPILER_CXX=$sym_link_dir/$sym_link_file
+        fi
+    fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PROPER_COMPILER_CXX" >&5
+$as_echo "$PROPER_COMPILER_CXX" >&6; }
+    CXX="$PROPER_COMPILER_CXX"
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, keeping CXX" >&5
+$as_echo "no, keeping CXX" >&6; }
+    CXX="$TEST_COMPILER"
+  fi
+
+  COMPILER=$CXX
+  COMPILER_NAME=$COMPILER_NAME
+
+  if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+    # Make sure we use the Sun Studio compiler and not gcc on Solaris, which won't work
+    COMPILER_VERSION_TEST=`$COMPILER -V 2>&1 | $HEAD -n 1`
+    $ECHO $COMPILER_VERSION_TEST | $GREP "^.*: Sun $COMPILER_NAME" > /dev/null
+    if test $? -ne 0; then
+      GCC_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required Sun Studio compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required Sun Studio compiler." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -V was: \"$COMPILER_VERSION_TEST\" and with --version: \"$GCC_VERSION_TEST\"" >&5
+$as_echo "$as_me: The result from running with -V was: \"$COMPILER_VERSION_TEST\" and with --version: \"$GCC_VERSION_TEST\"" >&6;}
+      as_fn_error $? "Sun Studio compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+    else
+      COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*[ ,\t]$COMPILER_NAME[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/p"`
+      COMPILER_VENDOR="Sun Studio"
+    fi
+  elif test  "x$OPENJDK_TARGET_OS" = xwindows; then
+    # First line typically looks something like:
+    # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
+    COMPILER_VERSION_TEST=`$COMPILER 2>&1 | $HEAD -n 1`
+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*Version \([1-9][0-9.]*\) .*/\1/p"`
+    COMPILER_VENDOR="Microsoft CL.EXE"
+    COMPILER_CPU_TEST=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* for \(.*\)$/\1/p"`
+    if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
+      if test "x$COMPILER_CPU_TEST" != "x80x86"; then
+        as_fn_error $? "Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for \"$COMPILER_CPU_TEST\"; expected \"80x86\"." "$LINENO" 5
+      fi
+    elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
+      if test "x$COMPILER_CPU_TEST" != "xx64"; then
+        as_fn_error $? "Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for \"$COMPILER_CPU_TEST\"; expected \"x64\"." "$LINENO" 5
+      fi
+    fi
+  else
+    COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
+    # Check that this is likely to be GCC.
+    $COMPILER --version 2>&1 | $GREP "Free Software Foundation" > /dev/null
+    if test $? -ne 0; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION_TEST\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION_TEST\"" >&6;}
+      as_fn_error $? "GCC compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+    fi
+
+    # First line typically looks something like:
+    # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \([1-9][0-9.]*\)/\1/p"`
+    COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) [1-9][0-9.]*/\1/p"`
+  fi
+  # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker)
+  CXX_VERSION="$COMPILER_VERSION"
+  # This sets CC_VENDOR or CXX_VENDOR. (This comment is a grep marker)
+  CXX_VENDOR="$COMPILER_VENDOR"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $COMPILER_VENDOR $COMPILER_NAME compiler version $COMPILER_VERSION (located at $COMPILER)" >&5
+$as_echo "$as_me: Using $COMPILER_VENDOR $COMPILER_NAME compiler version $COMPILER_VERSION (located at $COMPILER)" >&6;}
+
+
+# Now that we have resolved CXX ourself, let autoconf have it's go at it
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -11789,7 +19837,7 @@
     CXX=$CCC
   else
     if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl CC g++
+  for ac_prog in $CXX
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
@@ -11833,7 +19881,7 @@
 fi
 if test -z "$CXX"; then
   ac_ct_CXX=$CXX
-  for ac_prog in cl CC g++
+  for ac_prog in $CXX
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -12036,85 +20084,10 @@
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-if test "x$CXX" = xCC && test "x$OPENJDK_BUILD_OS" = xmacosx; then
-    # The found CC, even though it seems to be a g++ derivate, cannot compile
-    # c++ code. Override.
-    CXX="g++"
-fi
-
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$CXX"
-    car="${tmp%% *}"
-    tmp="$CXX EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        CXX="$car ${cdr% *}"
-    else
-        CXX="$car"
-    fi
-
-
-if test "x$CXX" = x || test "x$CC" = x; then
-
-    # Print a helpful message on how to acquire the necessary build dependency.
-    # devkit is the help tag: freetyp2, cups, pulse, alsa etc
-    MISSING_DEPENDENCY=devkit
-    PKGHANDLER_COMMAND=
-
-    case $PKGHANDLER in
-	apt-get)
-                apt_help     $MISSING_DEPENDENCY ;;
-    yum)
-                yum_help     $MISSING_DEPENDENCY ;;
-	port)
-                port_help    $MISSING_DEPENDENCY ;;
-	pkgutil)
-                pkgutil_help $MISSING_DEPENDENCY ;;
-	pkgadd)
-                pkgadd_help  $MISSING_DEPENDENCY ;;
-    * )
-      break ;;
-    esac
-
-    if test "x$PKGHANDLER_COMMAND" != x; then
-        HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
-    fi
-
-    as_fn_error $? "Could not find the needed compilers! $HELP_MSG " "$LINENO" 5
-fi
-
-if test "x$OPENJDK_BUILD_OS" != xwindows; then
+
+### Locate other tools
+
+if test "x$OPENJDK_TARGET_OS" = xmacosx; then
     ac_ext=m
 ac_cpp='$OBJCPP $CPPFLAGS'
 ac_compile='$OBJC -c $OBJCFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -12367,47 +20340,245 @@
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$OBJC"
-    car="${tmp%% *}"
-    tmp="$OBJC EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        OBJC="$car ${cdr% *}"
-    else
-        OBJC="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$OBJC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of OBJC" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJC, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of OBJC, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of OBJC" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$OBJC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of OBJC" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$OBJC"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving OBJC (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving OBJC (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJC, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of OBJC" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    OBJC="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OBJC to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting OBJC to \"$new_complete\"" >&6;}
+  fi
 
 else
     OBJC=
@@ -12431,7 +20602,7 @@
 # Linking C++ executables.
 
 
-if test "x$OPENJDK_BUILD_OS" != xwindows; then
+if test "x$OPENJDK_TARGET_OS" != xwindows; then
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
@@ -12525,59 +20696,263 @@
 fi
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$AR"
-    car="${tmp%% *}"
-    tmp="$AR EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        AR="$car ${cdr% *}"
-    else
-        AR="$car"
-    fi
-
-fi
-if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$AR"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AR, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of AR" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AR, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of AR, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of AR" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$AR"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AR, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of AR" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$AR"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving AR (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving AR (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AR, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of AR" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    AR="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting AR to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting AR to \"$new_complete\"" >&6;}
+  fi
+
+fi
+if test "x$OPENJDK_TARGET_OS" = xmacosx; then
     ARFLAGS="-r"
 else
     ARFLAGS=""
 fi
 
 
+# For hotspot, we need these in Windows mixed path; other platforms keep them the same
+HOTSPOT_CXX="$CXX"
+HOTSPOT_LD="$LD"
+
+
+
 COMPILER_NAME=gcc
 COMPILER_TYPE=CC
-if test "x$OPENJDK_BUILD_OS" = xwindows; then :
+if test "x$OPENJDK_TARGET_OS" = xwindows; then :
 
     # For now, assume that we are always compiling using cl.exe.
     CC_OUT_OPTION=-Fo
@@ -12643,25 +21018,245 @@
     # Since we must ignore the first found link, WINLD will contain
     # the full path to the link.exe program.
 
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$WINLD"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$WINLD"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    WINLD="$tmp"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$WINLD"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of WINLD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of WINLD, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of WINLD" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of WINLD, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of WINLD, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of WINLD" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$WINLD"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of WINLD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of WINLD, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of WINLD" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$WINLD"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving WINLD (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving WINLD (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of WINLD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of WINLD, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of WINLD" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    WINLD="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting WINLD to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting WINLD to \"$new_complete\"" >&6;}
+  fi
 
     printf "Windows linker was found at $WINLD\n"
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the found link.exe is actually the Visual Studio linker" >&5
@@ -12735,25 +21330,245 @@
 
 
 
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$MT"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$MT"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    MT="$tmp"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$MT"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MT, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MT, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of MT" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MT, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of MT, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of MT" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$MT"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MT, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MT, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of MT" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$MT"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving MT (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving MT (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MT, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MT, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of MT" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    MT="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MT to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting MT to \"$new_complete\"" >&6;}
+  fi
 
     # The resource compiler
     # Extract the first word of "rc", so it can be a program name with args.
@@ -12811,28 +21626,297 @@
 
 
 
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$RC"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$RC"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    RC="$tmp"
-
-
-    RC_FLAGS="-nologo /l 0x409 /r"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$RC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of RC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of RC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of RC" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of RC, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of RC, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of RC" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$RC"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of RC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of RC, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of RC" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$RC"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving RC (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving RC (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of RC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of RC, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of RC" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    RC="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting RC to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting RC to \"$new_complete\"" >&6;}
+  fi
+
+
+    # For hotspot, we need these in Windows mixed path,
+    # so rewrite them all. Need added .exe suffix.
+    HOTSPOT_CXX="$CXX.exe"
+    HOTSPOT_LD="$LD.exe"
+    HOTSPOT_MT="$MT.exe"
+    HOTSPOT_RC="$RC.exe"
+
+  unix_path="$HOTSPOT_CXX"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    windows_path=`$CYGPATH -m "$unix_path"`
+    HOTSPOT_CXX="$windows_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    windows_path=`cmd //c echo $unix_path`
+    HOTSPOT_CXX="$windows_path"
+  fi
+
+
+  unix_path="$HOTSPOT_LD"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    windows_path=`$CYGPATH -m "$unix_path"`
+    HOTSPOT_LD="$windows_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    windows_path=`cmd //c echo $unix_path`
+    HOTSPOT_LD="$windows_path"
+  fi
+
+
+  unix_path="$HOTSPOT_MT"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    windows_path=`$CYGPATH -m "$unix_path"`
+    HOTSPOT_MT="$windows_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    windows_path=`cmd //c echo $unix_path`
+    HOTSPOT_MT="$windows_path"
+  fi
+
+
+  unix_path="$HOTSPOT_RC"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    windows_path=`$CYGPATH -m "$unix_path"`
+    HOTSPOT_RC="$windows_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    windows_path=`cmd //c echo $unix_path`
+    HOTSPOT_RC="$windows_path"
+  fi
+
+
+
+
+    RC_FLAGS="-nologo -l 0x409 -r"
     if test "x$VARIANT" = xOPT; then :
 
         RC_FLAGS="$RC_FLAGS -d NDEBUG"
@@ -12891,25 +21975,245 @@
 
 
 
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$WINAR"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$WINAR"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    WINAR="$tmp"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$WINAR"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of WINAR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of WINAR, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of WINAR" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of WINAR, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of WINAR, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of WINAR" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$WINAR"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of WINAR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of WINAR, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of WINAR" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$WINAR"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving WINAR (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving WINAR (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of WINAR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of WINAR, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of WINAR" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    WINAR="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting WINAR to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting WINAR to \"$new_complete\"" >&6;}
+  fi
 
     AR="$WINAR"
     ARFLAGS="-nologo -NODEFAULTLIB:MSVCRT"
@@ -12952,25 +22256,245 @@
 
 
 
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$DUMPBIN"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$DUMPBIN"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    DUMPBIN="$tmp"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$DUMPBIN"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of DUMPBIN" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of DUMPBIN, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of DUMPBIN, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of DUMPBIN" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$DUMPBIN"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of DUMPBIN" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$DUMPBIN"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving DUMPBIN (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving DUMPBIN (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of DUMPBIN" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    DUMPBIN="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting DUMPBIN to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting DUMPBIN to \"$new_complete\"" >&6;}
+  fi
 
 
     COMPILER_TYPE=CL
@@ -13118,47 +22642,245 @@
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$CPP"
-    car="${tmp%% *}"
-    tmp="$CPP EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        CPP="$car ${cdr% *}"
-    else
-        CPP="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$CPP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CPP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of CPP" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CPP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of CPP, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of CPP" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$CPP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CPP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of CPP" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$CPP"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving CPP (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving CPP (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CPP, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of CPP" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    CPP="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CPP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting CPP to \"$new_complete\"" >&6;}
+  fi
 
 
 ac_ext=cpp
@@ -13295,47 +23017,245 @@
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$CXXCPP"
-    car="${tmp%% *}"
-    tmp="$CXXCPP EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        CXXCPP="$car ${cdr% *}"
-    else
-        CXXCPP="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$CXXCPP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXXCPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXXCPP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of CXXCPP" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXXCPP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of CXXCPP, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of CXXCPP" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$CXXCPP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXXCPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXXCPP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of CXXCPP" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$CXXCPP"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving CXXCPP (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving CXXCPP (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXXCPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXXCPP, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of CXXCPP" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    CXXCPP="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CXXCPP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting CXXCPP to \"$new_complete\"" >&6;}
+  fi
 
 
 if test "x$COMPILE_TYPE" != "xcross"; then
@@ -13359,7 +23279,7 @@
 fi
 
 # Find the right assembler.
-if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+if test "x$OPENJDK_TARGET_OS" = xsolaris; then
     # Extract the first word of "as", so it can be a program name with args.
 set dummy as; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -13401,54 +23321,252 @@
 
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$AS"
-    car="${tmp%% *}"
-    tmp="$AS EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        AS="$car ${cdr% *}"
-    else
-        AS="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$AS"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AS, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of AS" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AS, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of AS, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of AS" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$AS"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AS, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of AS" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$AS"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving AS (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving AS (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AS, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of AS" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    AS="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting AS to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting AS to \"$new_complete\"" >&6;}
+  fi
 
 else
     AS="$CC -c"
 fi
 
 
-if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+if test "x$OPENJDK_TARGET_OS" = xsolaris; then
     for ac_prog in gnm nm
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -13495,47 +23613,245 @@
 done
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$NM"
-    car="${tmp%% *}"
-    tmp="$NM EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        NM="$car ${cdr% *}"
-    else
-        NM="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$NM"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$NM"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$NM"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving NM (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving NM (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    NM="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting NM to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting NM to \"$new_complete\"" >&6;}
+  fi
 
     # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
@@ -13578,47 +23894,245 @@
 
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$STRIP"
-    car="${tmp%% *}"
-    tmp="$STRIP EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        STRIP="$car ${cdr% *}"
-    else
-        STRIP="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$STRIP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$STRIP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$STRIP"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving STRIP (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving STRIP (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    STRIP="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting STRIP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting STRIP to \"$new_complete\"" >&6;}
+  fi
 
     # Extract the first word of "mcs", so it can be a program name with args.
 set dummy mcs; ac_word=$2
@@ -13661,49 +24175,247 @@
 
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$MCS"
-    car="${tmp%% *}"
-    tmp="$MCS EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        MCS="$car ${cdr% *}"
-    else
-        MCS="$car"
-    fi
-
-elif test "x$OPENJDK_BUILD_OS" != xwindows; then
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$MCS"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MCS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MCS, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of MCS" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MCS, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of MCS, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of MCS" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$MCS"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MCS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MCS, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of MCS" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$MCS"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving MCS (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving MCS (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MCS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MCS, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of MCS" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    MCS="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MCS to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting MCS to \"$new_complete\"" >&6;}
+  fi
+
+elif test "x$OPENJDK_TARGET_OS" != xwindows; then
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
 set dummy ${ac_tool_prefix}nm; ac_word=$2
@@ -13797,47 +24509,245 @@
 fi
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$NM"
-    car="${tmp%% *}"
-    tmp="$NM EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        NM="$car ${cdr% *}"
-    else
-        NM="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$NM"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$NM"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$NM"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving NM (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving NM (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    NM="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting NM to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting NM to \"$new_complete\"" >&6;}
+  fi
 
     if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -13932,89 +24842,282 @@
 fi
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$STRIP"
-    car="${tmp%% *}"
-    tmp="$STRIP EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        STRIP="$car ${cdr% *}"
-    else
-        STRIP="$car"
-    fi
-
-fi
-
-###
-#
-# Check for objcopy
-#
-#   but search for gobjcopy first...
-#   since I on solaris found a broken objcopy...buhh
-#
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gobjcopy", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gobjcopy; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_OBJCOPY+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $OBJCOPY in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-OBJCOPY=$ac_cv_path_OBJCOPY
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$STRIP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$STRIP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$STRIP"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving STRIP (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving STRIP (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    STRIP="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting STRIP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting STRIP to \"$new_complete\"" >&6;}
+  fi
+
+fi
+
+# objcopy is used for moving debug symbols to separate files when
+# full debug symbols are enabled.
+if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in gobjcopy objcopy
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJCOPY+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJCOPY"; then
+  ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJCOPY="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJCOPY=$ac_cv_prog_OBJCOPY
 if test -n "$OBJCOPY"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5
 $as_echo "$OBJCOPY" >&6; }
@@ -14024,49 +25127,54 @@
 fi
 
 
-fi
-if test -z "$ac_cv_path_OBJCOPY"; then
-  ac_pt_OBJCOPY=$OBJCOPY
-  # Extract the first word of "gobjcopy", so it can be a program name with args.
-set dummy gobjcopy; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_OBJCOPY+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_OBJCOPY in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_OBJCOPY="$ac_pt_OBJCOPY" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ac_pt_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_OBJCOPY=$ac_cv_path_ac_pt_OBJCOPY
-if test -n "$ac_pt_OBJCOPY"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_OBJCOPY" >&5
-$as_echo "$ac_pt_OBJCOPY" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_OBJCOPY" = x; then
+    test -n "$OBJCOPY" && break
+  done
+fi
+if test -z "$OBJCOPY"; then
+  ac_ct_OBJCOPY=$OBJCOPY
+  for ac_prog in gobjcopy objcopy
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJCOPY+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJCOPY"; then
+  ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJCOPY="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY
+if test -n "$ac_ct_OBJCOPY"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJCOPY" >&5
+$as_echo "$ac_ct_OBJCOPY" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_OBJCOPY" && break
+done
+
+  if test "x$ac_ct_OBJCOPY" = x; then
     OBJCOPY=""
   else
     case $cross_compiling:$ac_tool_warned in
@@ -14075,98 +25183,342 @@
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    OBJCOPY=$ac_pt_OBJCOPY
-  fi
-else
-  OBJCOPY="$ac_cv_path_OBJCOPY"
-fi
-
-if test "x$OBJCOPY" = x; then
-   if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objcopy; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_OBJCOPY+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $OBJCOPY in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-OBJCOPY=$ac_cv_path_OBJCOPY
-if test -n "$OBJCOPY"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5
-$as_echo "$OBJCOPY" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_OBJCOPY"; then
-  ac_pt_OBJCOPY=$OBJCOPY
-  # Extract the first word of "objcopy", so it can be a program name with args.
-set dummy objcopy; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_OBJCOPY+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_OBJCOPY in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_OBJCOPY="$ac_pt_OBJCOPY" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ac_pt_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_OBJCOPY=$ac_cv_path_ac_pt_OBJCOPY
-if test -n "$ac_pt_OBJCOPY"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_OBJCOPY" >&5
-$as_echo "$ac_pt_OBJCOPY" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_OBJCOPY" = x; then
-    OBJCOPY=""
+    OBJCOPY=$ac_ct_OBJCOPY
+  fi
+fi
+
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$OBJCOPY"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of OBJCOPY" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJCOPY, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of OBJCOPY, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of OBJCOPY" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$OBJCOPY"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of OBJCOPY" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$OBJCOPY"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving OBJCOPY (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving OBJCOPY (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of OBJCOPY" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    OBJCOPY="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OBJCOPY to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting OBJCOPY to \"$new_complete\"" >&6;}
+  fi
+
+fi
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in gobjdump objdump
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$OBJDUMP" && break
+  done
+fi
+if test -z "$OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  for ac_prog in gobjdump objdump
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_OBJDUMP" && break
+done
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP=""
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -14174,11 +25526,252 @@
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    OBJCOPY=$ac_pt_OBJCOPY
-  fi
-else
-  OBJCOPY="$ac_cv_path_OBJCOPY"
-fi
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+fi
+
+if test "x$OBJDUMP" != x; then
+  # Only used for compare.sh; we can live without it. BASIC_FIXUP_EXECUTABLE bails if argument is missing.
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$OBJDUMP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of OBJDUMP" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJDUMP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of OBJDUMP, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of OBJDUMP" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$OBJDUMP"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of OBJDUMP" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$OBJDUMP"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving OBJDUMP (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving OBJDUMP (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of OBJDUMP" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    OBJDUMP="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OBJDUMP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting OBJDUMP to \"$new_complete\"" >&6;}
+  fi
 
 fi
 
@@ -14224,47 +25817,245 @@
 
 
 
-    # Translate "gcc -E" into "`which gcc` -E" ie
-    # extract the full path to the binary and at the
-    # same time maintain any arguments passed to it.
-    # The command MUST exist in the path, or else!
-    tmp="$LIPO"
-    car="${tmp%% *}"
-    tmp="$LIPO EOL"
-    cdr="${tmp#* }"
-    # On windows we want paths without spaces.
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-
-    # Translate long cygdrive or C:\sdfsf path
-    # into a short mixed mode path that has no
-    # spaces in it.
-    tmp="$car"
-
-    if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-        tmp=`$CYGPATH -u "$car"`
-        tmp=`which "$tmp"`
-        # If file exists with .exe appended, that's the real filename
-        # and cygpath needs that to convert to short style path.
-        if test -f "${tmp}.exe"; then
-           tmp="${tmp}.exe"
-        elif test -f "${tmp}.cmd"; then
-           tmp="${tmp}.cmd"
-        fi
-        # Convert to C:/ mixed style path without spaces.
-         tmp=`$CYGPATH -s -m "$tmp"`
-    fi
-    car="$tmp"
-
-    else
-        # "which" is not portable, but is used here
-        # because we know that the command exists!
-        car=`which $car`
-    fi
-    if test "x$cdr" != xEOL; then
-        LIPO="$car ${cdr% *}"
-    else
-        LIPO="$car"
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$LIPO"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path=`$CYGPATH -u "$path"`
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path=`$CYGPATH -u "$path"`
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LIPO, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LIPO, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of LIPO" "$LINENO" 5
+    fi
+  fi
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    # Short path failed, file does not exist as specified.
+    # Try adding .exe or .cmd
+    if test -f "${new_path}.exe"; then
+       input_to_shortpath="${new_path}.exe"
+    elif test -f "${new_path}.cmd"; then
+       input_to_shortpath="${new_path}.cmd"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LIPO, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of LIPO, which resolves as \"$new_path\", is invalid." >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+      as_fn_error $? "Cannot locate the the path of LIPO" "$LINENO" 5
+    fi
+  else
+    input_to_shortpath="$new_path"
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+  new_path="$input_to_shortpath"
+
+  input_path="$input_to_shortpath"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+  # remove trailing .exe if any
+  new_path="${new_path/%.exe/}"
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  # First separate the path from the arguments. This will split at the first
+  # space.
+  complete="$LIPO"
+  path="${complete%% *}"
+  tmp="$complete EOL"
+  arguments="${tmp#* }"
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+  # Now try to locate executable using which
+  new_path=`$WHICH "$new_path" 2> /dev/null`
+
+  if test "x$new_path" = x; then
+    # Oops. Which didn't find the executable.
+    # The splitting of arguments from the executable at a space might have been incorrect,
+    # since paths with space are more likely in Windows. Give it another try with the whole
+    # argument.
+    path="$complete"
+    arguments="EOL"
+    new_path="$path"
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+
+    new_path=`$WHICH "$new_path" 2> /dev/null`
+
+    if test "x$new_path" = x; then
+      # It's still not found. Now this is an unrecoverable error.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LIPO, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LIPO, which resolves as \"$complete\", is not found." >&6;}
+      has_space=`$ECHO "$complete" | $GREP " "`
+      if test "x$has_space" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+      fi
+      as_fn_error $? "Cannot locate the the path of LIPO" "$LINENO" 5
+    fi
+  fi
+
+  # Now new_path has a complete unix path to the binary
+  if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+    # Keep paths in /bin as-is, but remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+    # Do not save /bin paths to all_fixpath_prefixes!
+  else
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $new_path`
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+    # Output is in $new_path
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+    # remove trailing .exe if any
+    new_path="${new_path/%.exe/}"
+
+    # Save the first 10 bytes of this path to the storage, so fixpath can work.
+    all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+  fi
+
+  else
+    # We're on a posix platform. Hooray! :)
+    # First separate the path from the arguments. This will split at the first
+    # space.
+    complete="$LIPO"
+    path="${complete%% *}"
+    tmp="$complete EOL"
+    arguments="${tmp#* }"
+
+    new_path=`$WHICH $path 2> /dev/null`
+    if test "x$new_path" = x; then
+      is_absolute_path=`$ECHO "$path" | $GREP ^/`
+      if test "x$is_absolute_path" != x; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Resolving LIPO (as $path) with 'which' failed, using $path directly." >&5
+$as_echo "$as_me: Resolving LIPO (as $path) with 'which' failed, using $path directly." >&6;}
+        new_path="$path"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LIPO, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LIPO, which resolves as \"$complete\", is not found." >&6;}
+        has_space=`$ECHO "$complete" | $GREP " "`
+        if test "x$has_space" != x; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+        fi
+        as_fn_error $? "Cannot locate the the path of LIPO" "$LINENO" 5
+      fi
+    fi
+  fi
+
+  # Now join together the path and the arguments once again
+  if test "x$arguments" != xEOL; then
+      new_complete="$new_path ${arguments% *}"
+  else
+      new_complete="$new_path"
+  fi
+
+  if test "x$complete" != "x$new_complete"; then
+    LIPO="$new_complete"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting LIPO to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting LIPO to \"$new_complete\"" >&6;}
+  fi
 
 fi
 
@@ -14800,7 +26591,7 @@
     POST_STRIP_CMD="$STRIP -g"
 
     # Linking is different on MacOSX
-    if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+    if test "x$OPENJDK_TARGET_OS" = xmacosx; then
         # Might change in the future to clang.
         COMPILER_NAME=gcc
         SHARED_LIBRARY='lib$1.dylib'
@@ -14814,7 +26605,7 @@
         POST_STRIP_CMD="$STRIP -S"
     fi
 else
-    if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
         # If it is not gcc, then assume it is the Oracle Solaris Studio Compiler
         COMPILER_NAME=ossc
         PICFLAG="-KPIC"
@@ -14838,7 +26629,7 @@
         POST_STRIP_CMD="$STRIP -x"
         POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\""
     fi
-    if test "x$OPENJDK_BUILD_OS" = xwindows; then
+    if test "x$OPENJDK_TARGET_OS" = xwindows; then
         # If it is not gcc, then assume it is the MS Visual Studio compiler
         COMPILER_NAME=cl
         PICFLAG=""
@@ -14986,6 +26777,11 @@
         #  Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
         #CC_HIGHEST="$CC_HIGHEST -xlibmopt"
 
+        if test "x$OPENJDK_TARGET_CPU" = xsparc; then
+          CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s"
+          CXXFLAGS_JDK="${CXXFLAGS_JDK} -xmemalign=4s"
+        fi
+
         case $OPENJDK_TARGET_CPU_ARCH in
           x86)
             C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xregs=no%frameptr"
@@ -15002,8 +26798,6 @@
             fi
             ;;
           sparc)
-            CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s"
-            CXXFLAGS_JDK="${CXXFLAGS_JDK} -xmemalign=4s"
             CFLAGS_JDKLIB_EXTRA="${CFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
             CXXFLAGS_JDKLIB_EXTRA="${CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
             C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
@@ -15132,7 +26926,7 @@
           CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
           case $OPENJDK_TARGET_CPU_ARCH in
           x86 )
-            CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -Di386"
+            CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
        	    CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE"
           ;;
           esac
@@ -15232,7 +27026,7 @@
 # libraries will link to whatever is in memory. Yuck.
 #
 # Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
-if test "x$COMPILER_TYPE" = xCL; then
+if test "x$COMPILER_NAME" = xcl; then
     LDFLAGS_JDK="$LDFLAGS_JDK -nologo -opt:ref -incremental:no"
     if test "x$OPENJDK_TARGET_CPU" = xx86; then
         LDFLAGS_JDK="$LDFLAGS_JDK -safeseh"
@@ -15248,19 +27042,23 @@
     fi
     LDFLAGS_JDKEXE="${LDFLAGS_JDK} /STACK:$LDFLAGS_STACK_SIZE"
 else
-    # If this is a --hash-style=gnu system, use --hash-style=both, why?
-    HAS_GNU_HASH=`$CC -dumpspecs 2>/dev/null | $GREP 'hash-style=gnu'`
-    if test -n "$HAS_GNU_HASH"; then
-        # And since we now know that the linker is gnu, then add -z defs, to forbid
-        # undefined symbols in object files.
-        LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker --hash-style=both -Xlinker -z -Xlinker defs"
-        if test "x$DEBUG_LEVEL" == "xrelease"; then
-            # When building release libraries, tell the linker optimize them.
-            # Should this be supplied to the OSS linker as well?
-            LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -O1"
-        fi
-    fi
-
+    if test "x$COMPILER_NAME" = xgcc; then
+        # If this is a --hash-style=gnu system, use --hash-style=both, why?
+        HAS_GNU_HASH=`$CC -dumpspecs 2>/dev/null | $GREP 'hash-style=gnu'`
+        if test -n "$HAS_GNU_HASH"; then
+            LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker --hash-style=both "
+        fi
+        if test "x$OPENJDK_TARGET_OS" = xlinux; then
+          # And since we now know that the linker is gnu, then add -z defs, to forbid
+          # undefined symbols in object files.
+          LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -z -Xlinker defs"
+          if test "x$DEBUG_LEVEL" = "xrelease"; then
+              # When building release libraries, tell the linker optimize them.
+              # Should this be supplied to the OSS linker as well?
+              LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -O1"
+          fi
+        fi
+    fi
     LDFLAGS_JDKLIB="${LDFLAGS_JDK} $SHARED_LIBRARY_FLAGS \
                     -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}/server \
                     -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}/client \
@@ -15307,53 +27105,6 @@
 
 
 
-# After we have toolchain, we can compile the uncygdrive helper
-
-# When using cygwin, we need a wrapper binary that renames
-# /cygdrive/c/ arguments into c:/ arguments and peeks into
-# @files and rewrites these too! This wrapper binary is
-# called uncygdrive.exe.
-UNCYGDRIVE=
-if test "x$OPENJDK_BUILD_OS" = xwindows; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if uncygdrive can be created" >&5
-$as_echo_n "checking if uncygdrive can be created... " >&6; }
-    UNCYGDRIVE_SRC=`$CYGPATH -m $SRC_ROOT/common/src/uncygdrive.c`
-    rm -f $OUTPUT_ROOT/uncygdrive*
-    UNCYGDRIVE=`$CYGPATH -m $OUTPUT_ROOT/uncygdrive.exe`
-    cd $OUTPUT_ROOT
-    $CC $UNCYGDRIVE_SRC /Fe$UNCYGDRIVE > $OUTPUT_ROOT/uncygdrive1.log 2>&1
-    cd $CURDIR
-
-    if test ! -x $OUTPUT_ROOT/uncygdrive.exe; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-        cat $OUTPUT_ROOT/uncygdrive1.log
-        as_fn_error $? "Could not create $OUTPUT_ROOT/uncygdrive.exe" "$LINENO" 5
-    fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNCYGDRIVE" >&5
-$as_echo "$UNCYGDRIVE" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if uncygdrive.exe works" >&5
-$as_echo_n "checking if uncygdrive.exe works... " >&6; }
-    cd $OUTPUT_ROOT
-    $UNCYGDRIVE $CC $SRC_ROOT/common/src/uncygdrive.c /Fe$OUTPUT_ROOT/uncygdrive2.exe > $OUTPUT_ROOT/uncygdrive2.log 2>&1
-    cd $CURDIR
-    if test ! -x $OUTPUT_ROOT/uncygdrive2.exe; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-        cat $OUTPUT_ROOT/uncygdrive2.log
-        as_fn_error $? "Uncygdrive did not work!" "$LINENO" 5
-    fi
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    rm -f $OUTPUT_ROOT/uncygdrive?.??? $OUTPUT_ROOT/uncygdrive.obj
-    # The path to uncygdrive to use should be Unix-style
-    UNCYGDRIVE="$OUTPUT_ROOT/uncygdrive.exe"
-fi
-
-
-
-
-
 # Setup debug symbols (need objcopy from the toolchain for that)
 
 #
@@ -15384,7 +27135,7 @@
 
 if test "x$ENABLE_DEBUG_SYMBOLS" = "xdefault"; then
   # Default is on if objcopy is found, otherwise off
-  if test "x$OBJCOPY" != x; then
+  if test "x$OBJCOPY" != x || test "x$OPENJDK_TARGET_OS" = xwindows; then
      ENABLE_DEBUG_SYMBOLS=yes
   else
      ENABLE_DEBUG_SYMBOLS=no
@@ -15536,7 +27287,6 @@
 
 
 
-
 ###############################################################################
 #
 # Check for X Windows
@@ -16308,10 +28058,15 @@
 
 OLD_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS $X_CFLAGS"
+
+# Need to include Xlib.h and Xutil.h to avoid "present but cannot be compiled" warnings on Solaris 10
 for ac_header in X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " # include <X11/Xlib.h>
+                   # include <X11/Xutil.h>
+
+"
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
@@ -16323,6 +28078,7 @@
 
 done
 
+
 CFLAGS="$OLD_CFLAGS"
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
@@ -16382,28 +28138,20 @@
 fi
 
 
-# Check whether --with-cups-lib was given.
-if test "${with_cups_lib+set}" = set; then :
-  withval=$with_cups_lib;
-fi
-
-
 if test "x$CUPS_NOT_NEEDED" = xyes; then
-	if test "x${with_cups}" != x || test "x${with_cups_include}" != x || test "x${with_cups_lib}" != x; then
+	if test "x${with_cups}" != x || test "x${with_cups_include}" != x; then
 		{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cups not used, so --with-cups is ignored" >&5
 $as_echo "$as_me: WARNING: cups not used, so --with-cups is ignored" >&2;}
 	fi
 	CUPS_CFLAGS=
-	CUPS_LIBS=
 else
 	CUPS_FOUND=no
 
-	if test "x${with_cups}" = xno || test "x${with_cups_include}" = xno || test "x${with_cups_lib}" = xno; then
+	if test "x${with_cups}" = xno || test "x${with_cups_include}" = xno; then
 	    as_fn_error $? "It is not possible to disable the use of cups. Remove the --without-cups option." "$LINENO" 5
 	fi
 
 	if test "x${with_cups}" != x; then
-	    CUPS_LIBS="-L${with_cups}/lib -lcups"
 	    CUPS_CFLAGS="-I${with_cups}/include"
 	    CUPS_FOUND=yes
 	fi
@@ -16411,10 +28159,6 @@
 	    CUPS_CFLAGS="-I${with_cups_include}"
 	    CUPS_FOUND=yes
 	fi
-	if test "x${with_cups_lib}" != x; then
-	    CUPS_LIBS="-L${with_cups_lib} -lcups"
-	    CUPS_FOUND=yes
-	fi
 	if test "x$CUPS_FOUND" = xno; then
 
 
@@ -16572,7 +28316,6 @@
 _ACEOF
  CUPS_FOUND=yes
 	                      CUPS_CFLAGS=
-	                      CUPS_LIBS="-lcups"
 	                      DEFAULT_CUPS=yes
 fi
 
@@ -16582,18 +28325,16 @@
 	if test "x$CUPS_FOUND" = xno; then
 	    # Getting nervous now? Lets poke around for standard Solaris third-party
 	    # package installation locations.
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cups headers and libs" >&5
-$as_echo_n "checking for cups headers and libs... " >&6; }
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cups headers" >&5
+$as_echo_n "checking for cups headers... " >&6; }
 	    if test -s /opt/sfw/cups/include/cups/cups.h; then
 	       # An SFW package seems to be installed!
 	       CUPS_FOUND=yes
 	       CUPS_CFLAGS="-I/opt/sfw/cups/include"
-	       CUPS_LIBS="-L/opt/sfw/cups/lib -lcups"
 	    elif test -s /opt/csw/include/cups/cups.h; then
 	       # A CSW package seems to be installed!
 	       CUPS_FOUND=yes
 	       CUPS_CFLAGS="-I/opt/csw/include"
-	       CUPS_LIBS="-L/opt/csw/lib -lcups"
 	    fi
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5
 $as_echo "$CUPS_FOUND" >&6; }
@@ -16633,7 +28374,6 @@
 
 
 
-
 ###############################################################################
 #
 # The ubiquitous freetype2 library is used to render fonts.
@@ -16661,32 +28401,138 @@
 
 	if test "x$with_freetype" != x; then
 
-    # Fail with message the path to freetype if var with_freetype contains a path with no spaces in it.
-    # Unless on Windows, where we can rewrite the path.
-    HAS_SPACE=`echo "$with_freetype" | grep " "`
-    if test "x$HAS_SPACE" != x; then
-        if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-            # First convert it to DOS-style, short mode (no spaces)
-            with_freetype=`$CYGPATH -s -m -a "$with_freetype"`
-            # Now it's case insensitive; let's make it lowercase to improve readability
-            with_freetype=`$ECHO "$with_freetype" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
-            # Now convert it back to Unix-stile (cygpath)
-            with_freetype=`$CYGPATH -u "$with_freetype"`
-        else
-            as_fn_error $? "You cannot have spaces in the path to freetype! \"$with_freetype\"" "$LINENO" 5
-        fi
-    fi
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$with_freetype"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_freetype, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of with_freetype, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of with_freetype" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    with_freetype="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting with_freetype to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting with_freetype to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$with_freetype"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    with_freetype="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting with_freetype to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting with_freetype to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$with_freetype"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of with_freetype, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_freetype, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of with_freetype, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
 
 	    FREETYPE2_LIBS="-L$with_freetype/lib -lfreetype"
+            FREETYPE2_LIB_PATH="$with_freetype/lib"
+            if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$OPENJDK_TARGET_CPU" = xx86_64 && test -d "$with_freetype/lib/amd64"; then
+                FREETYPE2_LIBS="-L$with_freetype/lib/amd64 -lfreetype"
+                FREETYPE2_LIB_PATH="$with_freetype/lib/amd64"
+            fi
             if test "x$OPENJDK_TARGET_OS" = xwindows; then
                 FREETYPE2_LIBS="$with_freetype/lib/freetype.lib"
             fi
-            FREETYPE2_LIB_PATH="$with_freetype/lib"
 	    FREETYPE2_CFLAGS="-I$with_freetype/include"
             if test -s $with_freetype/include/ft2build.h && test -d $with_freetype/include/freetype2/freetype; then
                 FREETYPE2_CFLAGS="-I$with_freetype/include/freetype2 -I$with_freetype/include"
             fi
-	    FREETYPE2_FOUND=yes
+ 	    FREETYPE2_FOUND=yes
    	    if test "x$FREETYPE2_FOUND" = xyes; then
 	        # Verify that the directories exist
                 if ! test -d "$with_freetype/lib" || ! test -d "$with_freetype/include"; then
@@ -16695,7 +28541,7 @@
 	        # List the contents of the lib.
 		FREETYPELIB=`ls $with_freetype/lib/libfreetype.so $with_freetype/lib/freetype.dll 2> /dev/null`
                 if test "x$FREETYPELIB" = x; then
-		   as_fn_error $? "Could not find libfreetype.se nor freetype.dll in $with_freetype/lib" "$LINENO" 5
+		   as_fn_error $? "Could not find libfreetype.so nor freetype.dll in $with_freetype/lib" "$LINENO" 5
 		fi
 	        # Check one h-file
                 if ! test -s "$with_freetype/include/ft2build.h"; then
@@ -16851,6 +28697,145 @@
 
             USING_SYSTEM_FT_LIB=true
 	fi
+	if test "x$FREETYPE2_FOUND" = xno && test "x$OPENJDK_TARGET_OS" = xwindows; then
+            FREETYPELOCATION="$PROGRAMFILES/GnuWin32"
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$FREETYPELOCATION"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPELOCATION, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPELOCATION, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of FREETYPELOCATION" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    FREETYPELOCATION="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPELOCATION to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPELOCATION to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$FREETYPELOCATION"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    FREETYPELOCATION="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPELOCATION to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPELOCATION to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a posix platform. Hooray! :)
+    path="$FREETYPELOCATION"
+
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of FREETYPELOCATION, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPELOCATION, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPELOCATION, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+  fi
+
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype in some standard windows locations" >&5
+$as_echo_n "checking for freetype in some standard windows locations... " >&6; }
+	    if test -s "$FREETYPELOCATION/include/ft2build.h" && test -d "$FREETYPELOCATION/include/freetype2/freetype"; then
+	        FREETYPE2_CFLAGS="-I$FREETYPELOCATION/include/freetype2 -I$FREETYPELOCATION/include"
+	        FREETYPE2_LIBS="$FREETYPELOCATION/lib/freetype.lib"
+ 	        FREETYPE2_LIB_PATH="$FREETYPELOCATION/lib"
+                if ! test -s "$FREETYPE2_LIBS"; then
+		   as_fn_error $? "Could not find $FREETYPE2_LIBS" "$LINENO" 5
+		fi
+                if ! test -s "$FREETYPE2_LIB_PATH/freetype.dll"; then
+		   as_fn_error $? "Could not find $FREETYPE2_LIB_PATH/freetype.dll" "$LINENO" 5
+		fi
+                USING_SYSTEM_FT_LIB=true
+                FREETYPE2_FOUND=yes
+	    fi
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE2_FOUND" >&5
+$as_echo "$FREETYPE2_FOUND" >&6; }
+        fi
 	if test "x$FREETYPE2_FOUND" = xno; then
 
 pkg_failed=no
@@ -16919,7 +28904,13 @@
 $as_echo "yes" >&6; }
 	FREETYPE2_FOUND=yes
 fi
+            # On solaris, pkg_check adds -lz to freetype libs, which isn't necessary for us.
+            FREETYPE2_LIBS=`$ECHO $FREETYPE2_LIBS | $SED 's/-lz//g'`
             USING_SYSTEM_FT_LIB=true
+            # 64-bit libs for Solaris x86 are installed in the amd64 subdirectory, change lib to lib/amd64
+            if test "x$FREETYPE2_FOUND" = xyes && test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+              FREETYPE2_LIBS=`$ECHO $FREETYPE2_LIBS | $SED 's?/lib?/lib/amd64?g'`
+            fi
 	fi
 	if test "x$FREETYPE2_FOUND" = xno; then
 	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype in some standard locations" >&5
@@ -16993,6 +28984,60 @@
 
 		as_fn_error $? "Could not find freetype2! $HELP_MSG " "$LINENO" 5
 	fi
+
+        if test "x$OPENJDK_TARGET_OS" != xwindows; then
+            # AC_CHECK_LIB does not support use of cl.exe
+            PREV_LDFLAGS="$LDFLAGS"
+            LDFLAGS="$FREETYPE2_LIBS"
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FT_Init_FreeType in -lfreetype" >&5
+$as_echo_n "checking for FT_Init_FreeType in -lfreetype... " >&6; }
+if test "${ac_cv_lib_freetype_FT_Init_FreeType+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfreetype  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char FT_Init_FreeType ();
+int
+main ()
+{
+return FT_Init_FreeType ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  ac_cv_lib_freetype_FT_Init_FreeType=yes
+else
+  ac_cv_lib_freetype_FT_Init_FreeType=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_freetype_FT_Init_FreeType" >&5
+$as_echo "$ac_cv_lib_freetype_FT_Init_FreeType" >&6; }
+if test "x$ac_cv_lib_freetype_FT_Init_FreeType" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBFREETYPE 1
+_ACEOF
+
+  LIBS="-lfreetype $LIBS"
+
+else
+  as_fn_error $? "Could not find freetype2! $HELP_MSG " "$LINENO" 5
+fi
+
+            LDFLAGS="$PREV_LDFLAGS"
+        fi
 fi
 
 
@@ -17795,16 +29840,19 @@
     if test "x$enable_static_link_stdc__" = xyes; then
         LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS"
         LDCXX="$CC"
+        STATIC_CXX_SETTING="STATIC_CXX=true"
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: static" >&5
 $as_echo "static" >&6; }
     else
         LIBCXX="$LIBCXX -lstdc++"
         LDCXX="$CXX"
+        STATIC_CXX_SETTING="STATIC_CXX=false"
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: dynamic" >&5
 $as_echo "dynamic" >&6; }
     fi
 fi
 
+
 # libCrun is the c++ runtime-library with SunStudio (roughly the equivalent of gcc's libstdc++.so)
 if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$LIBCXX" = x; then
     LIBCXX="/usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libCrun.so.1"
@@ -17819,6 +29867,66 @@
 
 
 
+# After we have toolchain and the paths to all libraries (needed by msys), we can compile the fixpath helper
+
+# When using cygwin or msys, we need a wrapper binary that renames
+# /cygdrive/c/ arguments into c:/ arguments and peeks into
+# @files and rewrites these too! This wrapper binary is
+# called fixpath.
+FIXPATH=
+if test "x$OPENJDK_BUILD_OS" = xwindows; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fixpath can be created" >&5
+$as_echo_n "checking if fixpath can be created... " >&6; }
+    FIXPATH_SRC="$SRC_ROOT/common/src/fixpath.c"
+    FIXPATH_BIN="$OUTPUT_ROOT/fixpath.exe"
+    if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
+      FIXPATH_SRC=`$CYGPATH -m $FIXPATH_SRC`
+      FIXPATH_BIN=`$CYGPATH -m $FIXPATH_BIN`
+      # Important to keep the .exe suffix on Cygwin for Hotspot makefiles
+      FIXPATH="$OUTPUT_ROOT/fixpath.exe -c"
+    elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.msys; then
+      FIXPATH_SRC=`cmd //c echo $FIXPATH_SRC`
+      FIXPATH_BIN=`cmd //c echo $FIXPATH_BIN`
+
+      # Take all collected prefixes and turn them into a -m/c/foo@/c/bar@... command line
+      # @ was chosen as separator to minimize risk of other tools messing around with it
+      all_unique_prefixes=`echo "${all_fixpath_prefixes[@]}" | tr ' ' '\n' | grep '^/./' | sort | uniq`
+      fixpath_argument_list=`echo $all_unique_prefixes  | tr ' ' '@'`
+
+      FIXPATH="$OUTPUT_ROOT/fixpath -m$fixpath_argument_list"
+    fi
+    rm -f $OUTPUT_ROOT/fixpath*
+    cd $OUTPUT_ROOT
+    $CC $FIXPATH_SRC -Fe$FIXPATH_BIN > $OUTPUT_ROOT/fixpath1.log 2>&1
+    cd $CURDIR
+
+    if test ! -x $OUTPUT_ROOT/fixpath.exe; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        cat $OUTPUT_ROOT/fixpath1.log
+        as_fn_error $? "Could not create $OUTPUT_ROOT/fixpath.exe" "$LINENO" 5
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fixpath.exe works" >&5
+$as_echo_n "checking if fixpath.exe works... " >&6; }
+    cd $OUTPUT_ROOT
+    $FIXPATH $CC $SRC_ROOT/common/src/fixpath.c -Fe$OUTPUT_ROOT/fixpath2.exe > $OUTPUT_ROOT/fixpath2.log 2>&1
+    cd $CURDIR
+    if test ! -x $OUTPUT_ROOT/fixpath2.exe; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        cat $OUTPUT_ROOT/fixpath2.log
+        as_fn_error $? "fixpath did not work!" "$LINENO" 5
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    rm -f $OUTPUT_ROOT/fixpath?.??? $OUTPUT_ROOT/fixpath.obj
+fi
+
+
+
+
 ###############################################################################
 #
 # We need to do some final tweaking, when everything else is done.
@@ -17873,6 +29981,10 @@
         # Looks like a MacOSX system
         NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk  '{print $5}'`
         FOUND_CORES=yes
+    elif test -n "$NUMBER_OF_PROCESSORS"; then
+        # On windows, look in the env
+        NUM_CORES=$NUMBER_OF_PROCESSORS
+        FOUND_CORES=yes
     fi
 
     # For c/c++ code we run twice as many concurrent build
@@ -17883,8 +29995,10 @@
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NUM_CORES" >&5
 $as_echo "$NUM_CORES" >&6; }
     else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not detect number of cores, defaulting to 1!" >&5
-$as_echo "could not detect number of cores, defaulting to 1!" >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not detect number of cores, defaulting to 1" >&5
+$as_echo "could not detect number of cores, defaulting to 1" >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This will disable all parallelism from build!" >&5
+$as_echo "$as_me: WARNING: This will disable all parallelism from build!" >&2;}
     fi
 
 
@@ -17926,9 +30040,10 @@
         MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk  '{print $2}'`
         MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
         FOUND_MEM=yes
-    elif test "x$build_os" = xwindows; then
+    elif test "x$OPENJDK_BUILD_OS" = xwindows; then
         # Windows, but without cygwin
-        MEMORY_SIZE=`systeminfo | grep 'Total Physical Memory:' | awk '{ print $4 }' | sed 's/,//'`
+        MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
+        MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
         FOUND_MEM=yes
     fi
 
@@ -17936,8 +30051,10 @@
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MEMORY_SIZE MB" >&5
 $as_echo "$MEMORY_SIZE MB" >&6; }
     else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not detect memory size defaulting to 1024 MB!" >&5
-$as_echo "could not detect memory size defaulting to 1024 MB!" >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not detect memory size, defaulting to 1024 MB" >&5
+$as_echo "could not detect memory size, defaulting to 1024 MB" >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This might seriously impact build performance!" >&5
+$as_echo "$as_me: WARNING: This might seriously impact build performance!" >&2;}
     fi
 
 else
@@ -18366,11 +30483,26 @@
 
 	# df -l lists only local disks; if the given directory is not found then
 	# a non-zero exit code is given
-	if $DF -l $OUTPUT_ROOT > /dev/null 2>&1; then
-          OUTPUT_DIR_IS_LOCAL="yes"
-        else
-          OUTPUT_DIR_IS_LOCAL="no"
-        fi
+  if test "x$DF" = x; then
+    if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+      # msys does not have df; use Windows "net use" instead.
+      IS_NETWORK_DISK=`net use | grep \`pwd -W | cut -d ":" -f 1 | tr a-z A-Z\`:`
+      if test "x$IS_NETWORK_DISK" = x; then
+        OUTPUT_DIR_IS_LOCAL="yes"
+      else
+        OUTPUT_DIR_IS_LOCAL="no"
+      fi
+    else
+      # No df here, say it's local
+      OUTPUT_DIR_IS_LOCAL="yes"
+    fi
+  else
+    if $DF -l $OUTPUT_ROOT > /dev/null 2>&1; then
+      OUTPUT_DIR_IS_LOCAL="yes"
+    else
+      OUTPUT_DIR_IS_LOCAL="no"
+    fi
+  fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OUTPUT_DIR_IS_LOCAL" >&5
 $as_echo "$OUTPUT_DIR_IS_LOCAL" >&6; }
@@ -18909,7 +31041,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by openjdk $as_me jdk8, which was
+This file was extended by OpenJDK $as_me jdk8, which was
 generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18965,13 +31097,14 @@
 Configuration headers:
 $config_headers
 
-Report bugs to <build-dev@openjdk.java.net>."
+Report bugs to <build-dev@openjdk.java.net>.
+OpenJDK home page: <http://openjdk.java.net>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-openjdk config.status jdk8
+OpenJDK config.status jdk8
 configured by $0, generated by GNU Autoconf 2.67,
   with options \\"\$ac_cs_config\\"
 
@@ -19718,7 +31851,15 @@
 printf "* JDK variant:    $JDK_VARIANT\n"
 printf "* JVM variants:   $with_jvm_variants\n"
 printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
-printf "* Boot JDK:       $BOOT_JDK\n"
+
+printf "\n"
+printf "Tools summary:\n"
+if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+  printf "* Environment:    $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n"
+fi
+printf "* Boot JDK:       $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
+printf "* C Compiler:     $CC_VENDOR version $CC_VERSION (at $CC)\n"
+printf "* C++ Compiler:   $CXX_VENDOR version $CXX_VERSION (at $CXX)\n"
 
 printf "\n"
 printf "Build performance summary:\n"
--- a/common/autoconf/help.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/help.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -55,6 +55,19 @@
     fi
 ])
 
+cygwin_help() {
+    case $1 in
+    unzip)
+        PKGHANDLER_COMMAND="cd <location of cygwin setup.exe> && cmd /c setup -q -P unzip" ;;
+    zip)
+        PKGHANDLER_COMMAND="cd <location of cygwin setup.exe> && cmd /c setup -q -P zip" ;;
+    make)
+        PKGHANDLER_COMMAND="cd <location of cygwin setup.exe> && cmd /c setup -q -P make" ;;
+    * )
+       break ;;
+    esac
+}
+
 apt_help() {
     case $1 in
     devkit)
@@ -149,7 +162,15 @@
 printf "* JDK variant:    $JDK_VARIANT\n"
 printf "* JVM variants:   $with_jvm_variants\n"
 printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
-printf "* Boot JDK:       $BOOT_JDK\n"
+
+printf "\n"
+printf "Tools summary:\n"
+if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+  printf "* Environment:    $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n"
+fi
+printf "* Boot JDK:       $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
+printf "* C Compiler:     $CC_VENDOR version $CC_VERSION (at $CC)\n"
+printf "* C++ Compiler:   $CXX_VENDOR version $CXX_VERSION (at $CXX)\n"
 
 printf "\n"
 printf "Build performance summary:\n"
--- a/common/autoconf/hotspot-spec.gmk.in	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/hotspot-spec.gmk.in	Wed Jul 05 18:27:34 2017 +0200
@@ -48,8 +48,8 @@
 
 # The HOSTCC/HOSTCXX is Hotspot terminology for the BUILD_CC/BUILD_CXX, i.e. the
 # compiler that produces code that can be run on the build platform.
-HOSTCC:=@UNCYGDRIVE@ @BUILD_CC@
-HOSTCXX:=@UNCYGDRIVE@ @BUILD_CXX@
+HOSTCC:=@FIXPATH@ @BUILD_CC@
+HOSTCXX:=@FIXPATH@ @BUILD_CXX@
 
 ####################################################
 #
@@ -78,13 +78,23 @@
 ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
 ALT_EXPORT_PATH=$(HOTSPOT_DIST)
 
-HOTSPOT_MAKE_ARGS:=@HOTSPOT_MAKE_ARGS@
+HOTSPOT_MAKE_ARGS:=@HOTSPOT_MAKE_ARGS@ @STATIC_CXX_SETTING@
 # This is used from the libjvm build for C/C++ code.
 HOTSPOT_BUILD_JOBS:=@CONCURRENT_BUILD_JOBS@
 # Control wether Hotspot runs Queens test after building
 TEST_IN_BUILD=@TEST_IN_BUILD@
 
+# For hotspot, override compiler/tools definition to not include FIXPATH prefix.
+# Hotspot has its own handling on the Windows path situation.
+CXX:=@CCACHE@ @HOTSPOT_CXX@
+LD:=@HOTSPOT_LD@
+MT:=@HOTSPOT_MT@
+RC:=@HOTSPOT_RC@
 
 EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@
 EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@
 EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@
+
+# Sneak this in via the spec.gmk file, since we don't want to mess around too much with the Hotspot make files.
+# This is needed to get the LOG setting to work properly.
+include $(SRC_ROOT)/common/makefiles/MakeBase.gmk
--- a/common/autoconf/jdk-options.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/jdk-options.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -64,7 +64,7 @@
 #             ie normal interpreter and C1, only the serial GC, kernel jvmti etc
 #    zero: no machine code interpreter, no compiler
 #    zeroshark: zero interpreter and shark/llvm compiler backend
-AC_MSG_CHECKING([which variants of the JVM that should be built])
+AC_MSG_CHECKING([which variants of the JVM to build])
 AC_ARG_WITH([jvm-variants], [AS_HELP_STRING([--with-jvm-variants],
 	[JVM variants (separated by commas) to build (server, client, kernel, zero, zeroshark) @<:@server@:>@])])
 
@@ -241,48 +241,47 @@
 # Should we build only OpenJDK even if closed sources are present?
 #
 AC_ARG_ENABLE([openjdk-only], [AS_HELP_STRING([--enable-openjdk-only],
-    [build OpenJDK regardless of the presence of closed repositories @<:@disabled@:>@])],,)
+    [supress building closed source even if present @<:@disabled@:>@])],,[enable_openjdk_only="no"])
+
+AC_MSG_CHECKING([for presence of closed sources])
+if test -d "$SRC_ROOT/jdk/src/closed"; then
+    CLOSED_SOURCE_PRESENT=yes
+else
+    CLOSED_SOURCE_PRESENT=no
+fi
+AC_MSG_RESULT([$CLOSED_SOURCE_PRESENT])
 
-if test "x$enable_openjdk_only" = "xyes"; then
+AC_MSG_CHECKING([if closed source is supressed (openjdk-only)])
+SUPRESS_CLOSED_SOURCE="$enable_openjdk_only"
+AC_MSG_RESULT([$SUPRESS_CLOSED_SOURCE])
+
+if test "x$CLOSED_SOURCE_PRESENT" = xno; then
+  OPENJDK=true
+  if test "x$SUPRESS_CLOSED_SOURCE" = "xyes"; then
+    AC_MSG_WARN([No closed source present, --enable-openjdk-only makes no sense])
+  fi
+else
+  if test "x$SUPRESS_CLOSED_SOURCE" = "xyes"; then
     OPENJDK=true
-elif test "x$enable_openjdk_only" = "xno"; then
+  else
     OPENJDK=false
-elif test -d "$SRC_ROOT/jdk/src/closed"; then
-    OPENJDK=false
-else
-    OPENJDK=true
+  fi
 fi
 
 if test "x$OPENJDK" = "xtrue"; then
-    SET_OPENJDK=OPENJDK=true
+    SET_OPENJDK="OPENJDK=true"
 fi
 
 AC_SUBST(SET_OPENJDK)
 
 ###############################################################################
 #
-# JIGSAW or not.  The JIGSAW variable is used during the intermediate
-# stage when we are building both the old style JDK and the new style modularized JDK.
-# When the modularized JDK is finalized, this option will go away.
-#
-AC_ARG_ENABLE([jigsaw], [AS_HELP_STRING([--enable-jigsaw],
-    [build Jigsaw images (not yet available) @<:@disabled@:>@])],,)
-
-if test "x$enable_jigsaw" = "xyes"; then
-    JIGSAW=true
-else
-    JIGSAW=false
-fi
-AC_SUBST(JIGSAW)
-
-###############################################################################
-#
 # Should we build a JDK/JVM with headful support (ie a graphical ui)?
 # We always build headless support.
 #
 AC_MSG_CHECKING([headful support])
 AC_ARG_ENABLE([headful], [AS_HELP_STRING([--disable-headful],
-	[build headful support (graphical UI support) @<:@enabled@:>@])],
+	[disable building headful support (graphical UI support) @<:@enabled@:>@])],
     [SUPPORT_HEADFUL=${enable_headful}], [SUPPORT_HEADFUL=yes])
 
 SUPPORT_HEADLESS=yes
@@ -305,25 +304,9 @@
 AC_SUBST(SUPPORT_HEADFUL)
 AC_SUBST(BUILD_HEADLESS)
 
-###############################################################################
-#
-# Should we compile nimbus swing L&F? We can probably remove this option
-# since nimbus is officially part of javax now.
-#
-AC_MSG_CHECKING([whether to build nimbus L&F])
-AC_ARG_ENABLE([nimbus], [AS_HELP_STRING([--disable-nimbus],
-	[disable Nimbus L&F @<:@enabled@:>@])],
-	[ENABLE_NIMBUS="${enableval}"], [ENABLE_NIMBUS='yes'])
-AC_MSG_RESULT([$ENABLE_NIMBUS])
-DISABLE_NIMBUS=
-if test "x$ENABLE_NIMBUS" = xno; then
-    DISABLE_NIMBUS=true
-fi
-AC_SUBST(DISABLE_NIMBUS)
-
 # Control wether Hotspot runs Queens test after build.
 AC_ARG_ENABLE([hotspot-test-in-build], [AS_HELP_STRING([--enable-hotspot-test-in-build],
-	[enable running of Queens test after Hotspot build (not yet available) @<:@disabled@:>@])],,
+	[run the Queens test after Hotspot build @<:@disabled@:>@])],,
     [enable_hotspot_test_in_build=no])
 if test "x$enable_hotspot_test_in_build" = "xyes"; then
     TEST_IN_BUILD=true
@@ -351,43 +334,25 @@
 
 ###############################################################################
 #
+# Enable or disable unlimited crypto
+#
+AC_ARG_ENABLE(unlimited-crypto, [AS_HELP_STRING([--enable-unlimited-crypto],
+        [Enable unlimited crypto policy @<:@disabled@:>@])],,
+    [enable_unlimited_crypto=no])
+if test "x$enable_unlimited_crypto" = "xyes"; then
+    UNLIMITED_CRYPTO=true
+else
+    UNLIMITED_CRYPTO=false
+fi
+AC_SUBST(UNLIMITED_CRYPTO)
+
+###############################################################################
+#
 # Compress jars
 #
 COMPRESS_JARS=false
 
 AC_SUBST(COMPRESS_JARS)
-
-###############################################################################
-#
-# Should we compile JFR
-#   default no, except for on closed-jdk
-#
-ENABLE_JFR=no
-
-# Is the JFR source present
-
-#
-# For closed default is yes
-#
-if test "x${OPENJDK}" != "xtrue"; then
-   ENABLE_JFR=yes
-fi
-
-AC_MSG_CHECKING([whether to build jfr])
-AC_ARG_ENABLE([jfr], [AS_HELP_STRING([--enable-jfr],
-	[enable jfr (default is no)])]
-	[ENABLE_JFR="${enableval}"])
-AC_MSG_RESULT([${ENABLE_JFR}])
-
-if test "x$ENABLE_JFR" = "xyes"; then
-    ENABLE_JFR=true
-elif test "x$ENABLE_JFR" = "xno"; then
-    ENABLE_JFR=false
-else
-   AC_MSG_ERROR([Invalid argument to --enable-jfr])
-fi
-
-AC_SUBST(ENABLE_JFR)
 ])
 
 AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_VERSION_NUMBERS],
@@ -409,6 +374,8 @@
 AC_SUBST(PRODUCT_SUFFIX)
 AC_SUBST(JDK_RC_PLATFORM_NAME)
 AC_SUBST(COMPANY_NAME)
+AC_SUBST(MACOSX_BUNDLE_NAME_BASE)
+AC_SUBST(MACOSX_BUNDLE_ID_BASE)
 
 COPYRIGHT_YEAR=`date +'%Y'`
 AC_SUBST(COPYRIGHT_YEAR)
@@ -437,7 +404,7 @@
     BUILD_DATE=`date '+%Y_%m_%d_%H_%M'`
     # Avoid [:alnum:] since it depends on the locale.
     CLEAN_USERNAME=`echo "$USER" | $TR -d -c 'abcdefghijklmnopqrstuvqxyz0123456789'`
-    USER_RELEASE_SUFFIX=`echo "${CLEAN_USERNAME}_${BUILD_DATE}" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvqxyz'`
+    USER_RELEASE_SUFFIX=`echo "${CLEAN_USERNAME}_${BUILD_DATE}" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
     FULL_VERSION="${RELEASE}-${USER_RELEASE_SUFFIX}-${JDK_BUILD_NUMBER}"
 fi
 AC_SUBST(FULL_VERSION)
@@ -473,7 +440,7 @@
 fi
 
 AC_ARG_ENABLE([debug-symbols],
-              [AS_HELP_STRING([--disable-debug-symbols],[disable generation of debug symbols (@<:@enabled@:>@)])],
+              [AS_HELP_STRING([--disable-debug-symbols],[disable generation of debug symbols @<:@enabled@:>@])],
               [ENABLE_DEBUG_SYMBOLS=${enable_debug_symbols}],
 )
 
@@ -487,7 +454,7 @@
 
 if test "x$ENABLE_DEBUG_SYMBOLS" = "xdefault"; then
   # Default is on if objcopy is found, otherwise off
-  if test "x$OBJCOPY" != x; then
+  if test "x$OBJCOPY" != x || test "x$OPENJDK_TARGET_OS" = xwindows; then
      ENABLE_DEBUG_SYMBOLS=yes
   else
      ENABLE_DEBUG_SYMBOLS=no
@@ -502,7 +469,7 @@
 ZIP_DEBUGINFO_FILES=yes
 
 AC_ARG_ENABLE([zip-debug-info],
-              [AS_HELP_STRING([--disable-zip-debug-info],[don't zip debug-info files (@<:@enabled@:@)])],
+              [AS_HELP_STRING([--disable-zip-debug-info],[disable zipping of debug-info files @<:@enabled@:>@])],
               [ZIP_DEBUGINFO_FILES=${enable_zip_debug_info}],
 )
 
@@ -528,5 +495,5 @@
 # for a degree of customization of the build targets and the rules/recipes
 # to create them
 AC_ARG_WITH([custom-make-dir], [AS_HELP_STRING([--with-custom-make-dir],
-    [directory containing custom build/make files])], [CUSTOM_MAKE_DIR=$with_custom_make_dir])
+    [use this directory for custom build/make files])], [CUSTOM_MAKE_DIR=$with_custom_make_dir])
 AC_SUBST(CUSTOM_MAKE_DIR)
--- a/common/autoconf/libraries.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/libraries.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -172,9 +172,15 @@
 AC_LANG_PUSH(C)
 OLD_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS $X_CFLAGS"
+
+# Need to include Xlib.h and Xutil.h to avoid "present but cannot be compiled" warnings on Solaris 10
 AC_CHECK_HEADERS([X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h],
-                [X11_A_OK=yes],
-                [X11_A_OK=no])
+                 [X11_A_OK=yes],
+                 [X11_A_OK=no],
+                 [ # include <X11/Xlib.h>
+                   # include <X11/Xutil.h>
+                 ])
+
 CFLAGS="$OLD_CFLAGS"
 AC_LANG_POP(C)
 
@@ -196,27 +202,23 @@
 #
 AC_ARG_WITH(cups, [AS_HELP_STRING([--with-cups],
     [specify prefix directory for the cups package
-	 (expecting the libraries under PATH/lib and the headers under PATH/include)])])
+	 (expecting the headers under PATH/include)])])
 AC_ARG_WITH(cups-include, [AS_HELP_STRING([--with-cups-include],
 	[specify directory for the cups include files])])
-AC_ARG_WITH(cups-lib, [AS_HELP_STRING([--with-cups-lib],
-	[specify directory for the cups library])])
 
 if test "x$CUPS_NOT_NEEDED" = xyes; then
-	if test "x${with_cups}" != x || test "x${with_cups_include}" != x || test "x${with_cups_lib}" != x; then
+	if test "x${with_cups}" != x || test "x${with_cups_include}" != x; then
 		AC_MSG_WARN([cups not used, so --with-cups is ignored])
 	fi
 	CUPS_CFLAGS=
-	CUPS_LIBS=
 else
 	CUPS_FOUND=no
 
-	if test "x${with_cups}" = xno || test "x${with_cups_include}" = xno || test "x${with_cups_lib}" = xno; then
+	if test "x${with_cups}" = xno || test "x${with_cups_include}" = xno; then
 	    AC_MSG_ERROR([It is not possible to disable the use of cups. Remove the --without-cups option.])
 	fi
 
 	if test "x${with_cups}" != x; then
-	    CUPS_LIBS="-L${with_cups}/lib -lcups"
 	    CUPS_CFLAGS="-I${with_cups}/include"
 	    CUPS_FOUND=yes
 	fi
@@ -224,10 +226,6 @@
 	    CUPS_CFLAGS="-I${with_cups_include}"
 	    CUPS_FOUND=yes
 	fi
-	if test "x${with_cups_lib}" != x; then
-	    CUPS_LIBS="-L${with_cups_lib} -lcups"
-	    CUPS_FOUND=yes
-	fi
 	if test "x$CUPS_FOUND" = xno; then
 	    BDEPS_CHECK_MODULE(CUPS, cups, xxx, [CUPS_FOUND=yes])
 	fi
@@ -236,23 +234,20 @@
 	    AC_CHECK_HEADERS([cups/cups.h cups/ppd.h],
 	                     [CUPS_FOUND=yes
 	                      CUPS_CFLAGS=
-	                      CUPS_LIBS="-lcups"
 	                      DEFAULT_CUPS=yes])
 	fi
 	if test "x$CUPS_FOUND" = xno; then
 	    # Getting nervous now? Lets poke around for standard Solaris third-party
 	    # package installation locations.
-	    AC_MSG_CHECKING([for cups headers and libs])
+	    AC_MSG_CHECKING([for cups headers])
 	    if test -s /opt/sfw/cups/include/cups/cups.h; then
 	       # An SFW package seems to be installed!
 	       CUPS_FOUND=yes
 	       CUPS_CFLAGS="-I/opt/sfw/cups/include"
-	       CUPS_LIBS="-L/opt/sfw/cups/lib -lcups"
 	    elif test -s /opt/csw/include/cups/cups.h; then
 	       # A CSW package seems to be installed!
 	       CUPS_FOUND=yes
 	       CUPS_CFLAGS="-I/opt/csw/include"
-	       CUPS_LIBS="-L/opt/csw/lib -lcups"
 	    fi
 	    AC_MSG_RESULT([$CUPS_FOUND])
 	fi
@@ -263,7 +258,6 @@
 fi
 
 AC_SUBST(CUPS_CFLAGS)
-AC_SUBST(CUPS_LIBS)
 
 ])
 
@@ -292,17 +286,21 @@
 	FREETYPE2_FOUND=no
 
 	if test "x$with_freetype" != x; then
-            SPACESAFE(with_freetype,[the path to freetype])
+            BASIC_FIXUP_PATH(with_freetype)
 	    FREETYPE2_LIBS="-L$with_freetype/lib -lfreetype"
+            FREETYPE2_LIB_PATH="$with_freetype/lib"
+            if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$OPENJDK_TARGET_CPU" = xx86_64 && test -d "$with_freetype/lib/amd64"; then
+                FREETYPE2_LIBS="-L$with_freetype/lib/amd64 -lfreetype"
+                FREETYPE2_LIB_PATH="$with_freetype/lib/amd64"
+            fi
             if test "x$OPENJDK_TARGET_OS" = xwindows; then
                 FREETYPE2_LIBS="$with_freetype/lib/freetype.lib"
             fi
-            FREETYPE2_LIB_PATH="$with_freetype/lib"
 	    FREETYPE2_CFLAGS="-I$with_freetype/include"
             if test -s $with_freetype/include/ft2build.h && test -d $with_freetype/include/freetype2/freetype; then
                 FREETYPE2_CFLAGS="-I$with_freetype/include/freetype2 -I$with_freetype/include"
             fi
-	    FREETYPE2_FOUND=yes
+ 	    FREETYPE2_FOUND=yes
    	    if test "x$FREETYPE2_FOUND" = xyes; then
 	        # Verify that the directories exist 
                 if ! test -d "$with_freetype/lib" || ! test -d "$with_freetype/include"; then
@@ -311,7 +309,7 @@
 	        # List the contents of the lib.
 		FREETYPELIB=`ls $with_freetype/lib/libfreetype.so $with_freetype/lib/freetype.dll 2> /dev/null`
                 if test "x$FREETYPELIB" = x; then
-		   AC_MSG_ERROR([Could not find libfreetype.se nor freetype.dll in $with_freetype/lib])
+		   AC_MSG_ERROR([Could not find libfreetype.so nor freetype.dll in $with_freetype/lib])
 		fi
 	        # Check one h-file
                 if ! test -s "$with_freetype/include/ft2build.h"; then
@@ -323,9 +321,34 @@
 	    BDEPS_CHECK_MODULE(FREETYPE2, freetype2, xxx, [FREETYPE2_FOUND=yes], [FREETYPE2_FOUND=no])
             USING_SYSTEM_FT_LIB=true
 	fi
+	if test "x$FREETYPE2_FOUND" = xno && test "x$OPENJDK_TARGET_OS" = xwindows; then
+            FREETYPELOCATION="$PROGRAMFILES/GnuWin32"
+            BASIC_FIXUP_PATH(FREETYPELOCATION)
+	    AC_MSG_CHECKING([for freetype in some standard windows locations])
+	    if test -s "$FREETYPELOCATION/include/ft2build.h" && test -d "$FREETYPELOCATION/include/freetype2/freetype"; then
+	        FREETYPE2_CFLAGS="-I$FREETYPELOCATION/include/freetype2 -I$FREETYPELOCATION/include"
+	        FREETYPE2_LIBS="$FREETYPELOCATION/lib/freetype.lib"
+ 	        FREETYPE2_LIB_PATH="$FREETYPELOCATION/lib"
+                if ! test -s "$FREETYPE2_LIBS"; then
+		   AC_MSG_ERROR([Could not find $FREETYPE2_LIBS])
+		fi
+                if ! test -s "$FREETYPE2_LIB_PATH/freetype.dll"; then
+		   AC_MSG_ERROR([Could not find $FREETYPE2_LIB_PATH/freetype.dll])
+		fi
+                USING_SYSTEM_FT_LIB=true
+                FREETYPE2_FOUND=yes
+	    fi
+	    AC_MSG_RESULT([$FREETYPE2_FOUND])         
+        fi
 	if test "x$FREETYPE2_FOUND" = xno; then
 	    PKG_CHECK_MODULES(FREETYPE2, freetype2, [FREETYPE2_FOUND=yes], [FREETYPE2_FOUND=no])
+            # On solaris, pkg_check adds -lz to freetype libs, which isn't necessary for us.
+            FREETYPE2_LIBS=`$ECHO $FREETYPE2_LIBS | $SED 's/-lz//g'` 
             USING_SYSTEM_FT_LIB=true
+            # 64-bit libs for Solaris x86 are installed in the amd64 subdirectory, change lib to lib/amd64
+            if test "x$FREETYPE2_FOUND" = xyes && test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+              FREETYPE2_LIBS=`$ECHO $FREETYPE2_LIBS | $SED 's?/lib?/lib/amd64?g'`
+            fi
 	fi
 	if test "x$FREETYPE2_FOUND" = xno; then
 	    AC_MSG_CHECKING([for freetype in some standard locations])
@@ -364,7 +387,15 @@
 	if test "x$FREETYPE2_FOUND" = xno; then
 		HELP_MSG_MISSING_DEPENDENCY([freetype2])
 		AC_MSG_ERROR([Could not find freetype2! $HELP_MSG ])
-	fi    
+	fi
+
+        if test "x$OPENJDK_TARGET_OS" != xwindows; then
+            # AC_CHECK_LIB does not support use of cl.exe
+            PREV_LDFLAGS="$LDFLAGS"
+            LDFLAGS="$FREETYPE2_LIBS"
+            AC_CHECK_LIB(freetype, FT_Init_FreeType, [], AC_MSG_ERROR([Could not find freetype2! $HELP_MSG ]))
+            LDFLAGS="$PREV_LDFLAGS"
+        fi
 fi
 
 AC_SUBST(USING_SYSTEM_FT_LIB)
@@ -621,13 +652,16 @@
     if test "x$enable_static_link_stdc__" = xyes; then
         LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS"
         LDCXX="$CC"
+        STATIC_CXX_SETTING="STATIC_CXX=true"
         AC_MSG_RESULT([static])
     else
         LIBCXX="$LIBCXX -lstdc++"
         LDCXX="$CXX"
+        STATIC_CXX_SETTING="STATIC_CXX=false"
         AC_MSG_RESULT([dynamic])
     fi
 fi
+AC_SUBST(STATIC_CXX_SETTING)
 
 # libCrun is the c++ runtime-library with SunStudio (roughly the equivalent of gcc's libstdc++.so)
 if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$LIBCXX" = x; then
--- a/common/autoconf/platform.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/platform.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -87,22 +87,32 @@
     *linux*)
       VAR_OS=linux
       VAR_OS_API=posix
+      VAR_OS_ENV=linux
       ;;
     *solaris*)
       VAR_OS=solaris
       VAR_OS_API=posix
+      VAR_OS_ENV=solaris
       ;;
     *darwin*)
       VAR_OS=macosx
       VAR_OS_API=posix
+      VAR_OS_ENV=macosx
       ;;
     *bsd*)
       VAR_OS=bsd
       VAR_OS_API=posix
+      VAR_OS_ENV=bsd
       ;;
-    *cygwin*|*windows*)
+    *cygwin*)
       VAR_OS=windows
       VAR_OS_API=winapi
+      VAR_OS_ENV=windows.cygwin
+      ;;
+    *mingw*)
+      VAR_OS=windows
+      VAR_OS_API=winapi
+      VAR_OS_ENV=windows.msys
       ;;
     *)
       AC_MSG_ERROR([unsupported operating system $1])
@@ -128,11 +138,33 @@
     AC_SUBST(OPENJDK_BUILD_AUTOCONF_NAME)
 
     # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
+    PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
+    PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
+    # ..and setup our own variables. (Do this explicitely to facilitate searching)
+    OPENJDK_BUILD_OS="$VAR_OS"
+    OPENJDK_BUILD_OS_API="$VAR_OS_API"
+    OPENJDK_BUILD_OS_ENV="$VAR_OS_ENV"
+    OPENJDK_BUILD_CPU="$VAR_CPU"
+    OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
+    OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
+    OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
+    AC_SUBST(OPENJDK_BUILD_OS)
+    AC_SUBST(OPENJDK_BUILD_OS_API)
+    AC_SUBST(OPENJDK_BUILD_CPU)
+    AC_SUBST(OPENJDK_BUILD_CPU_ARCH)
+    AC_SUBST(OPENJDK_BUILD_CPU_BITS)
+    AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
+
+    AC_MSG_CHECKING([openjdk-build os-cpu])
+    AC_MSG_RESULT([$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU])
+
+    # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
     PLATFORM_EXTRACT_VARS_FROM_OS($host_os)
     PLATFORM_EXTRACT_VARS_FROM_CPU($host_cpu)
     # ... and setup our own variables. (Do this explicitely to facilitate searching)
     OPENJDK_TARGET_OS="$VAR_OS"
     OPENJDK_TARGET_OS_API="$VAR_OS_API"
+    OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
     OPENJDK_TARGET_CPU="$VAR_CPU"
     OPENJDK_TARGET_CPU_ARCH="$VAR_CPU_ARCH"
     OPENJDK_TARGET_CPU_BITS="$VAR_CPU_BITS"
@@ -144,22 +176,8 @@
     AC_SUBST(OPENJDK_TARGET_CPU_BITS)
     AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN)
 
-    # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
-    PLATFORM_EXTRACT_VARS_FROM_OS($build_os)
-    PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
-    # ..and setup our own variables. (Do this explicitely to facilitate searching)
-    OPENJDK_BUILD_OS="$VAR_OS"
-    OPENJDK_BUILD_OS_API="$VAR_OS_API"
-    OPENJDK_BUILD_CPU="$VAR_CPU"
-    OPENJDK_BUILD_CPU_ARCH="$VAR_CPU_ARCH"
-    OPENJDK_BUILD_CPU_BITS="$VAR_CPU_BITS"
-    OPENJDK_BUILD_CPU_ENDIAN="$VAR_CPU_ENDIAN"
-    AC_SUBST(OPENJDK_BUILD_OS)
-    AC_SUBST(OPENJDK_BUILD_OS_API)
-    AC_SUBST(OPENJDK_BUILD_CPU)
-    AC_SUBST(OPENJDK_BUILD_CPU_ARCH)
-    AC_SUBST(OPENJDK_BUILD_CPU_BITS)
-    AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
+    AC_MSG_CHECKING([openjdk-target os-cpu])
+    AC_MSG_RESULT([$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
 ])
 
 # Check if a reduced build (32-bit on 64-bit platforms) is requested, and modify behaviour
@@ -208,7 +226,7 @@
   fi
   AC_SUBST(COMPILE_TYPE)
 
-AC_MSG_CHECKING([for compilation type])
+AC_MSG_CHECKING([compilation type])
 AC_MSG_RESULT([$COMPILE_TYPE])
 ])
 
@@ -299,7 +317,11 @@
 
     if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
         A_LP64="LP64:="
-        ADD_LP64="-D_LP64=1"
+        # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in 
+        # unpack200.exe
+        if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+            ADD_LP64="-D_LP64=1"
+        fi
     fi
     AC_SUBST(LP64,$A_LP64)
 
--- a/common/autoconf/spec.gmk.in	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/spec.gmk.in	Wed Jul 05 18:27:34 2017 +0200
@@ -41,7 +41,9 @@
 #'
 DQUOTE:="
 #"
-define NEWLINE:=
+define NEWLINE
+
+
 endef
 
 # A self-referential reference to this file.
@@ -50,11 +52,7 @@
 # Specify where the spec file is.
 MAKE_ARGS="SPEC=$(SPEC)"
 
-# TODO The logic for finding and setting MAKE is currently not working 
-# well on windows. Disable it TEMPORARILY there for now.
-ifneq (@OPENJDK_TARGET_OS@,windows)
-    MAKE:=@MAKE@
-endif
+MAKE:=@MAKE@
 
 # Pass along the verbosity setting.
 ifeq (,$(findstring VERBOSE=,$(MAKE)))
@@ -77,6 +75,7 @@
 # The built jdk will run in this target system.
 OPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
 OPENJDK_TARGET_OS_API:=@OPENJDK_TARGET_OS_API@
+OPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
 
 OPENJDK_TARGET_CPU:=@OPENJDK_TARGET_CPU@
 OPENJDK_TARGET_CPU_ARCH:=@OPENJDK_TARGET_CPU_ARCH@
@@ -109,16 +108,21 @@
 REQUIRED_OS_VERSION:=@REQUIRED_OS_VERSION@
 
 @SET_OPENJDK@
-JIGSAW:=@JIGSAW@
 LIBM:=-lm
 LIBDL:=@LIBDL@
 
 # colon or semicolon
 PATH_SEP:=@PATH_SEP@
 
-# Set special env variables, to be passed to external tools.
-# Used for cygwin setups.
-@SETUPDEVENV@
+ifeq ($(OPENJDK_TARGET_OS), windows)
+  # On Windows, the Visual Studio toolchain needs the LIB and INCLUDE
+  # environment variables (in Windows path style), and the PATH needs to
+  # be adjusted to include Visual Studio tools (but this needs to be in
+  # cygwin/msys style).
+  export PATH:=@VS_PATH@
+  export INCLUDE:=@VS_INCLUDE@
+  export LIB:=@VS_LIB@
+endif
 
 # The sys root where standard headers and libraries are found.
 # Usually not needed since the configure script should have
@@ -131,7 +135,6 @@
 OVERRIDE_SRC_ROOT:=@OVERRIDE_SRC_ROOT@
 TOPDIR:=@SRC_ROOT@
 OUTPUT_ROOT:=@OUTPUT_ROOT@
-JDK_MAKE_SHARED_DIR:=@JDK_TOPDIR@/makefiles/common/shared
 JDK_TOPDIR:=@JDK_TOPDIR@
 LANGTOOLS_TOPDIR:=@LANGTOOLS_TOPDIR@
 CORBA_TOPDIR:=@CORBA_TOPDIR@
@@ -155,6 +158,8 @@
 PRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
 JDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
 COMPANY_NAME:=@COMPANY_NAME@
+MACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
+MACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
 
 # Different version strings generated from the above information.
 JDK_VERSION:=@JDK_VERSION@
@@ -260,6 +265,9 @@
 # Source file for cacerts
 CACERTS_FILE=@CACERTS_FILE@
 
+# Enable unlimited crypto policy
+UNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
+
 # Necessary additional compiler flags to compile X11 
 X_CFLAGS:=@X_CFLAGS@
 X_LIBS:=@X_LIBS@
@@ -289,7 +297,7 @@
 CXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
 
 # Tools that potentially need to be cross compilation aware.
-CC:=@UNCYGDRIVE@ @CCACHE@ @CC@
+CC:=@FIXPATH@ @CCACHE@ @CC@
 
 # CFLAGS used to compile the jdk native libraries (C-code)
 CFLAGS_JDKLIB:=@CFLAGS_JDKLIB@
@@ -299,17 +307,17 @@
 CFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
 CXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
 
-CXX:=@UNCYGDRIVE@ @CCACHE@ @CXX@
+CXX:=@FIXPATH@ @CCACHE@ @CXX@
 #CXXFLAGS:=@CXXFLAGS@
 
 OBJC:=@CCACHE@ @OBJC@
 #OBJCFLAGS:=@OBJCFLAGS@
 
-CPP:=@UNCYGDRIVE@ @CPP@
+CPP:=@FIXPATH@ @CPP@
 #CPPFLAGS:=@CPPFLAGS@
 
 # The linker can be gcc or ld on posix systems, or link.exe on windows systems.
-LD:=@UNCYGDRIVE@ @LD@
+LD:=@FIXPATH@ @LD@
 
 # LDFLAGS used to link the jdk native libraries (C-code)
 LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
@@ -317,7 +325,7 @@
 
 # On some platforms the linker cannot be used to create executables, thus
 # the need for a separate LDEXE command.
-LDEXE:=@UNCYGDRIVE@ @LDEXE@
+LDEXE:=@FIXPATH@ @LDEXE@
 
 # LDFLAGS used to link the jdk native launchers (C-code)
 LDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
@@ -327,22 +335,22 @@
 LDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
 
 # Sometimes a different linker is needed for c++ libs
-LDCXX:=@UNCYGDRIVE@ @LDCXX@
+LDCXX:=@FIXPATH@ @LDCXX@
 # The flags for linking libstdc++ linker.
 LIBCXX:=@LIBCXX@
 
 # Sometimes a different linker is needed for c++ executables
-LDEXECXX:=@UNCYGDRIVE@ @LDEXECXX@
+LDEXECXX:=@FIXPATH@ @LDEXECXX@
 
 # BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
 # build platform.
-BUILD_CC:=@UNCYGDRIVE@ @BUILD_CC@
-BUILD_LD:=@UNCYGDRIVE@ @BUILD_LD@
+BUILD_CC:=@FIXPATH@ @BUILD_CC@
+BUILD_LD:=@FIXPATH@ @BUILD_LD@
 
-AS:=@UNCYGDRIVE@ @AS@
+AS:=@FIXPATH@ @AS@
 
 # AR is used to create a static library (is ar in posix, lib.exe in windows)
-AR:=@UNCYGDRIVE@ @AR@
+AR:=@FIXPATH@ @AR@
 ARFLAGS:=@ARFLAGS@
 
 NM:=@NM@
@@ -400,20 +408,20 @@
 
 JAVA_FLAGS:=@BOOT_JDK_JVMARGS@
 
-JAVA=@UNCYGDRIVE@ $(BOOT_JDK)/bin/java $(JAVA_FLAGS)
+JAVA=@FIXPATH@ $(BOOT_JDK)/bin/java $(JAVA_FLAGS)
 
-JAVAC=@UNCYGDRIVE@ $(BOOT_JDK)/bin/javac
+JAVAC=@FIXPATH@ $(BOOT_JDK)/bin/javac
 # Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid
 # overriding that value by using ?=.
 JAVAC_FLAGS?=@JAVAC_FLAGS@
 
-JAVAH=@UNCYGDRIVE@ $(BOOT_JDK)/bin/javah
+JAVAH=@FIXPATH@ $(BOOT_JDK)/bin/javah
 
-JAR=@UNCYGDRIVE@ $(BOOT_JDK)/bin/jar
+JAR=@FIXPATH@ $(BOOT_JDK)/bin/jar
 
-RMIC=@UNCYGDRIVE@ $(BOOT_JDK)/bin/rmic
+RMIC=@FIXPATH@ $(BOOT_JDK)/bin/rmic
 
-NATIVE2ASCII=@UNCYGDRIVE@ $(BOOT_JDK)/bin/native2ascii
+NATIVE2ASCII=@FIXPATH@ $(BOOT_JDK)/bin/native2ascii
 
 # Base flags for RC
 # Guarding this against resetting value. Legacy make files include spec multiple
@@ -424,21 +432,20 @@
 
 # A specific java binary with specific options can be used to run
 # the long running background sjavac servers and other long running tasks.
-SJAVAC_SERVER_JAVA:=@UNCYGDRIVE@ @SJAVAC_SERVER_JAVA@
+SJAVAC_SERVER_JAVA:=@FIXPATH@ @SJAVAC_SERVER_JAVA@
 
 # Tools adhering to a minimal and common standard of posix compliance.
 AWK:=@AWK@
 BASENAME:=@BASENAME@
+BASH:=@BASH@
 CAT:=@CAT@
 CCACHE:=@CCACHE@
 # CD is going away, but remains to cater for legacy makefiles.
 CD:=cd
 CHMOD:=@CHMOD@
 CP:=@CP@
-CPIO:=@CPIO@
 CUT:=@CUT@
 DATE:=@DATE@
-DF:=@DF@
 DIFF:=@DIFF@
 FIND:=@FIND@
 FIND_DELETE:=@FIND_DELETE@
@@ -461,6 +468,7 @@
 TAR:=@TAR@
 TAIL:=@TAIL@
 TEE:=@TEE@
+TIME:=@TIME@
 TR:=@TR@
 TOUCH:=@TOUCH@
 WC:=@WC@
@@ -468,9 +476,9 @@
 ZIPEXE:=@ZIP@
 ZIP:=@ZIP@
 UNZIP:=@UNZIP@
-MT:=@UNCYGDRIVE@ @MT@
-RC:=@UNCYGDRIVE@ @RC@
-DUMPBIN:=@UNCYGDRIVE@ @DUMPBIN@
+MT:=@FIXPATH@ @MT@
+RC:=@FIXPATH@ @RC@
+DUMPBIN:=@FIXPATH@ @DUMPBIN@
 CYGPATH:=@CYGPATH@
 LDD:=@LDD@
 OTOOL:=@OTOOL@
@@ -479,8 +487,9 @@
 FILE:=@FILE@
 HG:=@HG@
 OBJCOPY:=@OBJCOPY@
+SETFILE:=@SETFILE@
 
-UNCYGDRIVE:=@UNCYGDRIVE@
+FIXPATH:=@FIXPATH@
 
 # Where the build output is stored for your convenience.
 BUILD_LOG:=@BUILD_LOG@
@@ -488,14 +497,12 @@
 BUILD_LOG_WRAPPER:=@BUILD_LOG_WRAPPER@
 
 # Build setup
-DISABLE_NIMBUS:=@DISABLE_NIMBUS@
 ENABLE_JFR=@ENABLE_JFR@
 USE_EXTERNAL_LIBJPEG:=@USE_EXTERNAL_LIBJPEG@
 USE_EXTERNAL_LIBGIF:=@USE_EXTERNAL_LIBGIF@
 USE_EXTERNAL_LIBZ:=@USE_EXTERNAL_LIBZ@
 LIBZIP_CAN_USE_MMAP:=@LIBZIP_CAN_USE_MMAP@
-CHECK_FOR_VCINSTALLDIR=@CHECK_FOR_VCINSTALLDIR@
-MSVCRNN_DLL:=@MSVCR100DLL@
+MSVCR_DLL:=@MSVCR_DLL@
 
 
 # ADD_SRCS takes a single argument with source roots
--- a/common/autoconf/toolchain.m4	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/toolchain.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -23,111 +23,67 @@
 # questions.
 #
 
-AC_DEFUN_ONCE([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
+# $1 = compiler to test (CC or CXX)
+# $2 = human readable name of compiler (C or C++)
+AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION],
 [
+  COMPILER=[$]$1
+  COMPILER_NAME=$2
 
-# Check if the VS env variables were setup prior to running configure.
-# If not, then find vcvarsall.bat and run it automatically, and integrate
-# the set env variables into the spec file.
-SETUPDEVENV="# No special vars"
-if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
-    # Store path to cygwin link.exe to help excluding it when searching for 
-    # VS linker.
-    AC_PATH_PROG(CYGWIN_LINK, link)
-    AC_MSG_CHECKING([if the first found link.exe is actually the Cygwin link tool])
-    "$CYGWIN_LINK" --version > /dev/null
-    if test $? -eq 0 ; then
-      AC_MSG_RESULT([yes])
+  if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+    # Make sure we use the Sun Studio compiler and not gcc on Solaris, which won't work
+    COMPILER_VERSION_TEST=`$COMPILER -V 2>&1 | $HEAD -n 1`
+    $ECHO $COMPILER_VERSION_TEST | $GREP "^.*: Sun $COMPILER_NAME" > /dev/null
+    if test $? -ne 0; then
+      GCC_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
+      
+      AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required Sun Studio compiler.])
+      AC_MSG_NOTICE([The result from running with -V was: "$COMPILER_VERSION_TEST" and with --version: "$GCC_VERSION_TEST"])
+      AC_MSG_ERROR([Sun Studio compiler is required. Try setting --with-tools-dir.])
     else
-      AC_MSG_RESULT([no])
-      # This might be the VS linker. Don't exclude it later on.
-      CYGWIN_LINK=""
+      COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/p"`
+      COMPILER_VENDOR="Sun Studio"
+    fi
+  elif test  "x$OPENJDK_TARGET_OS" = xwindows; then
+    # First line typically looks something like:
+    # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
+    COMPILER_VERSION_TEST=`$COMPILER 2>&1 | $HEAD -n 1`
+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*Version \(@<:@1-9@:>@@<:@0-9.@:>@*\) .*/\1/p"`
+    COMPILER_VENDOR="Microsoft CL.EXE"
+    COMPILER_CPU_TEST=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* for \(.*\)$/\1/p"`
+    if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
+      if test "x$COMPILER_CPU_TEST" != "x80x86"; then
+        AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "80x86".])
+      fi
+    elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
+      if test "x$COMPILER_CPU_TEST" != "xx64"; then
+        AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
+      fi
+    fi
+  else
+    COMPILER_VERSION_TEST=`$COMPILER --version 2>&1 | $HEAD -n 1`
+    # Check that this is likely to be GCC.
+    $COMPILER --version 2>&1 | $GREP "Free Software Foundation" > /dev/null
+    if test $? -ne 0; then
+      AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required GCC compiler.])
+      AC_MSG_NOTICE([The result from running with --version was: "$COMPILER_VERSION_TEST"])
+      AC_MSG_ERROR([GCC compiler is required. Try setting --with-tools-dir.])
     fi
     
-    # If vcvarsall.bat has been run, then VCINSTALLDIR is set.
-    if test "x$VCINSTALLDIR" != x; then
-        # No further setup is needed. The build will happen from this kind
-        # of shell.
-        SETUPDEVENV="# This spec file expects that you are running bash from within a VS command prompt."
-        # Make sure to remind you, if you forget to run make from a cygwin bash shell
-        # that is spawned "bash -l" from a VS command prompt.
-        CHECK_FOR_VCINSTALLDIR=yes
-        AC_MSG_CHECKING([if you are running from within a VS command prompt])
-        AC_MSG_RESULT([yes])
-    else
-        # Ah, we have not yet run vcvarsall.bat/vsvars32.bat/vsvars64.bat. Lets do that. First find it.
-        if test "x$VS100COMNTOOLS" != x; then
-            VARSBAT=`find "$VS100COMNTOOLS/../.." -name vcvarsall.bat`
-	    SEARCH_ROOT="$VS100COMNTOOLS"
-        else
-            VARSBAT=`find "$PROGRAMFILES" -name vcvarsall.bat`
-	    SEARCH_ROOT="$PROGRAMFILES"
-        fi
-        VCPATH=`dirname "$VARSBAT"`
-        VCPATH=`cygpath -w "$VCPATH"`
-	if test "x$VARSBAT" = x || test ! -d "$VCPATH"; then
-            AC_MSG_CHECKING([if we can find the VS installation])
-            AC_MSG_RESULT([no])
-            AC_MSG_ERROR([Tried to find a VS installation using both $SEARCH_ROOT but failed. Please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
-        fi
-        case "$OPENJDK_TARGET_CPU" in
-          x86)
-            VARSBAT_ARCH=x86
-            ;;
-          x86_64)
-            VARSBAT_ARCH=amd64
-            ;;
-        esac
-        # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
-        cd $OUTPUT_ROOT
-        bash $SRC_ROOT/common/bin/extractvcvars.sh "$VARSBAT" "$VARSBAT_ARCH"
-	cd $CURDIR
-	if test ! -s $OUTPUT_ROOT/localdevenv.sh || test ! -s $OUTPUT_ROOT/localdevenv.gmk; then
-            AC_MSG_CHECKING([if we can extract the needed env variables])
-            AC_MSG_RESULT([no])
-            AC_MSG_ERROR([Could not succesfully extract the env variables needed for the VS setup. Please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
-        fi 
-        # Now set all paths and other env variables. This will allow the rest of 
-        # the configure script to find and run the compiler in the proper way.
-        . $OUTPUT_ROOT/localdevenv.sh
-        AC_MSG_CHECKING([if we can find the VS installation])
-	if test "x$VCINSTALLDIR" != x; then 
-            AC_MSG_RESULT([$VCINSTALLDIR])
-        else 
-            AC_MSG_RESULT([no])
-            AC_MSG_ERROR([Could not find VS installation. Please install. If you are sure you have installed VS, then please run "c:\\cygwin\\bin\\bash.exe -l" from a VS command prompt and then run configure/make from there.])
-        fi
-        CHECK_FOR_VCINSTALLDIR=no
-	SETUPDEVENV="include $OUTPUT_ROOT/localdevenv.gmk"
+    # First line typically looks something like:
+    # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \(@<:@1-9@:>@@<:@0-9.@:>@*\)/\1/p"`
+    COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) @<:@1-9@:>@@<:@0-9.@:>@*/\1/p"`
+  fi
+  # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker)
+  $1_VERSION="$COMPILER_VERSION"
+  # This sets CC_VENDOR or CXX_VENDOR. (This comment is a grep marker)
+  $1_VENDOR="$COMPILER_VENDOR"
 
-	AC_MSG_CHECKING([for msvcr100.dll])
-        AC_ARG_WITH(msvcr100dll, [AS_HELP_STRING([--with-msvcr100dll],
-            [copy this msvcr100.dll into the built JDK])])
-        if test "x$with_msvcr100dll" != x; then
-            MSVCR100DLL="$with_msvcr100dll"
-        else
-            if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
-                MSVCR100DLL=`find "$VCINSTALLDIR/.." -name msvcr100.dll | grep x64 | head --lines 1`
-            else
-                MSVCR100DLL=`find "$VCINSTALLDIR/.." -name msvcr100.dll | grep x86 | grep -v ia64 | grep -v x64 | head --lines 1`
-                if test "x$MSVCR100DLL" = x; then
-                    MSVCR100DLL=`find "$VCINSTALLDIR/.." -name msvcr100.dll | head --lines 1`
-                fi
-            fi
-        fi
-	if test "x$MSVCR100DLL" = x; then
-           AC_MSG_RESULT([no])
-	   AC_MSG_ERROR([Could not find msvcr100.dll !])
-        fi
-        AC_MSG_RESULT([$MSVCR100DLL])
-	SPACESAFE(MSVCR100DLL,[the path to msvcr100.dll])
-    fi
-fi
-AC_SUBST(SETUPDEVENV)
-AC_SUBST(CHECK_FOR_VCINSTALLDIR)
-AC_SUBST(MSVCR100DLL)
+  AC_MSG_NOTICE([Using $COMPILER_VENDOR $COMPILER_NAME compiler version $COMPILER_VERSION (located at $COMPILER)])
 ])
 
+
 AC_DEFUN_ONCE([TOOLCHAIN_SETUP_SYSROOT_AND_OUT_OPTIONS],
 [
 ###############################################################################
@@ -151,8 +107,67 @@
 AC_SUBST(AR_OUT_OPTION)
 ])
 
-AC_DEFUN_ONCE([TOOLCHAIN_SETUP_PATHS],
+# $1 = compiler to test (CC or CXX)
+# $2 = human readable name of compiler (C or C++)
+# $3 = list of compiler names to search for
+AC_DEFUN([TOOLCHAIN_FIND_COMPILER],
 [
+  COMPILER_NAME=$2
+
+  # Do a first initial attempt at searching the list of compiler names.
+  # AC_PATH_PROGS can't be run multiple times with the same variable,
+  # so create a new name for this run.
+  AC_PATH_PROGS(POTENTIAL_$1, $3)
+  $1=$POTENTIAL_$1
+
+  if test "x$[$]$1" = x; then
+      HELP_MSG_MISSING_DEPENDENCY([devkit])
+      AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG])
+  fi
+  BASIC_FIXUP_EXECUTABLE($1)
+  AC_MSG_CHECKING([resolved symbolic links for $1])
+  TEST_COMPILER="[$]$1"
+  BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER)
+  AC_MSG_RESULT([$TEST_COMPILER])
+  AC_MSG_CHECKING([if $1 is disguised ccache])
+  
+  COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"`
+  if test "x$COMPILER_BASENAME" = "xccache"; then
+    AC_MSG_RESULT([yes, trying to find proper $COMPILER_NAME compiler])
+    # We /usr/lib/ccache in the path, so cc is a symlink to /usr/bin/ccache.
+    # We want to control ccache invocation ourselves, so ignore this cc and try
+    # searching again.
+
+    # Remove the path to the fake ccache cc from the PATH
+    RETRY_COMPILER_SAVED_PATH="$PATH"
+    COMPILER_DIRNAME=`$DIRNAME [$]$1`
+    PATH="`$ECHO $PATH | $SED -e "s,$COMPILER_DIRNAME,,g" -e "s,::,:,g" -e "s,^:,,g"`"
+
+    # Try again looking for our compiler
+    AC_CHECK_TOOLS(PROPER_COMPILER_$1, $3)
+    BASIC_FIXUP_EXECUTABLE(PROPER_COMPILER_$1)
+    PATH="$RETRY_COMPILER_SAVED_PATH"
+
+    AC_MSG_CHECKING([for resolved symbolic links for $1])
+    BASIC_REMOVE_SYMBOLIC_LINKS(PROPER_COMPILER_$1)
+    AC_MSG_RESULT([$PROPER_COMPILER_$1])
+    $1="$PROPER_COMPILER_$1"
+  else
+    AC_MSG_RESULT([no, keeping $1])
+    $1="$TEST_COMPILER"
+  fi
+  TOOLCHAIN_CHECK_COMPILER_VERSION([$1], [$COMPILER_NAME])
+])
+
+
+AC_DEFUN([TOOLCHAIN_SETUP_PATHS],
+[
+if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+  TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
+fi
+
+AC_SUBST(MSVCR_DLL)
+
 # If --build AND --host is set, then the configure script will find any
 # cross compilation tools in the PATH. Cross compilation tools
 # follows the cross compilation standard where they are prefixed with ${host}.
@@ -171,11 +186,11 @@
     # Otherwise, we'll set the BUILD_tools to the native tools, but that'll have
     # to wait until they are properly discovered.
     AC_PATH_PROGS(BUILD_CC, [cl cc gcc])
-    SET_FULL_PATH(BUILD_CC)
+    BASIC_FIXUP_EXECUTABLE(BUILD_CC)
     AC_PATH_PROGS(BUILD_CXX, [cl CC g++])
-    SET_FULL_PATH(BUILD_CXX)
+    BASIC_FIXUP_EXECUTABLE(BUILD_CXX)
     AC_PATH_PROG(BUILD_LD, ld)
-    SET_FULL_PATH(BUILD_LD)
+    BASIC_FIXUP_EXECUTABLE(BUILD_LD)
 fi
 AC_SUBST(BUILD_CC)
 AC_SUBST(BUILD_CXX)
@@ -218,36 +233,40 @@
   PATH=$TOOLS_DIR:$PATH
 fi
 
+
+### Locate C compiler (CC)
+
 # gcc is almost always present, but on Windows we
 # prefer cl.exe and on Solaris we prefer CC.
 # Thus test for them in this order.
-AC_PROG_CC([cl cc gcc])
-if test "x$CC" = x; then
-    HELP_MSG_MISSING_DEPENDENCY([devkit])
-    AC_MSG_ERROR([Could not find a compiler. $HELP_MSG])
-fi
-if test "x$CC" = xcc && test "x$OPENJDK_BUILD_OS" = xmacosx; then
-    # Do not use cc on MacOSX use gcc instead.
-    CC="gcc"
-fi
-SET_FULL_PATH(CC)
-
-AC_PROG_CXX([cl CC g++])
-if test "x$CXX" = xCC && test "x$OPENJDK_BUILD_OS" = xmacosx; then
-    # The found CC, even though it seems to be a g++ derivate, cannot compile
-    # c++ code. Override.
-    CXX="g++"
-fi
-SET_FULL_PATH(CXX)
-
-if test "x$CXX" = x || test "x$CC" = x; then
-    HELP_MSG_MISSING_DEPENDENCY([devkit])
-    AC_MSG_ERROR([Could not find the needed compilers! $HELP_MSG ])
+if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+  # Do not probe for cc on MacOSX.
+  COMPILER_CHECK_LIST="cl gcc"
+else
+  COMPILER_CHECK_LIST="cl cc gcc"
 fi
 
-if test "x$OPENJDK_BUILD_OS" != xwindows; then
+TOOLCHAIN_FIND_COMPILER([CC],[C],[$COMPILER_CHECK_LIST])
+# Now that we have resolved CC ourself, let autoconf have it's go at it
+AC_PROG_CC([$CC])
+
+### Locate C++ compiler (CXX)
+
+if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+  # Do not probe for CC on MacOSX.
+  COMPILER_CHECK_LIST="cl g++"
+else
+  COMPILER_CHECK_LIST="cl CC g++"
+fi
+TOOLCHAIN_FIND_COMPILER([CXX],[C++],[$COMPILER_CHECK_LIST])
+# Now that we have resolved CXX ourself, let autoconf have it's go at it
+AC_PROG_CXX([$CXX])
+
+### Locate other tools
+
+if test "x$OPENJDK_TARGET_OS" = xmacosx; then
     AC_PROG_OBJC
-    SET_FULL_PATH(OBJC)
+    BASIC_FIXUP_EXECUTABLE(OBJC)
 else
     OBJC=
 fi
@@ -270,20 +289,26 @@
 # Linking C++ executables.
 AC_SUBST(LDEXECXX)
 
-if test "x$OPENJDK_BUILD_OS" != xwindows; then
+if test "x$OPENJDK_TARGET_OS" != xwindows; then
     AC_CHECK_TOOL(AR, ar)
-    SET_FULL_PATH(AR)
+    BASIC_FIXUP_EXECUTABLE(AR)
 fi
-if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+if test "x$OPENJDK_TARGET_OS" = xmacosx; then
     ARFLAGS="-r"
 else
     ARFLAGS=""
 fi
 AC_SUBST(ARFLAGS)
 
+# For hotspot, we need these in Windows mixed path; other platforms keep them the same
+HOTSPOT_CXX="$CXX"
+HOTSPOT_LD="$LD"
+AC_SUBST(HOTSPOT_CXX)
+AC_SUBST(HOTSPOT_LD)
+
 COMPILER_NAME=gcc
 COMPILER_TYPE=CC
-AS_IF([test "x$OPENJDK_BUILD_OS" = xwindows], [
+AS_IF([test "x$OPENJDK_TARGET_OS" = xwindows], [
     # For now, assume that we are always compiling using cl.exe. 
     CC_OUT_OPTION=-Fo
     EXE_OUT_OPTION=-out:
@@ -294,7 +319,7 @@
     AC_CHECK_PROG([WINLD], [link],[link],,, [$CYGWIN_LINK])
     # Since we must ignore the first found link, WINLD will contain
     # the full path to the link.exe program.
-    SET_FULL_PATH_SPACESAFE([WINLD])
+    BASIC_FIXUP_EXECUTABLE(WINLD)
     printf "Windows linker was found at $WINLD\n"
     AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
     "$WINLD" --version > /dev/null
@@ -310,12 +335,25 @@
     LDEXECXX="$WINLD"
 
     AC_CHECK_PROG([MT], [mt], [mt],,, [/usr/bin/mt])
-    SET_FULL_PATH_SPACESAFE([MT])
+    BASIC_FIXUP_EXECUTABLE(MT)
     # The resource compiler
     AC_CHECK_PROG([RC], [rc], [rc],,, [/usr/bin/rc])
-    SET_FULL_PATH_SPACESAFE([RC])
+    BASIC_FIXUP_EXECUTABLE(RC)
 
-    RC_FLAGS="-nologo /l 0x409 /r"
+    # For hotspot, we need these in Windows mixed path,
+    # so rewrite them all. Need added .exe suffix.
+    HOTSPOT_CXX="$CXX.exe"
+    HOTSPOT_LD="$LD.exe"
+    HOTSPOT_MT="$MT.exe"
+    HOTSPOT_RC="$RC.exe"
+    BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(HOTSPOT_CXX)
+    BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(HOTSPOT_LD)
+    BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(HOTSPOT_MT)
+    BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(HOTSPOT_RC)
+    AC_SUBST(HOTSPOT_MT)
+    AC_SUBST(HOTSPOT_RC)
+
+    RC_FLAGS="-nologo -l 0x409 -r"
     AS_IF([test "x$VARIANT" = xOPT], [
         RC_FLAGS="$RC_FLAGS -d NDEBUG"
     ])
@@ -333,12 +371,12 @@
 
     # lib.exe is used to create static libraries.
     AC_CHECK_PROG([WINAR], [lib],[lib],,,)
-    SET_FULL_PATH_SPACESAFE([WINAR])
+    BASIC_FIXUP_EXECUTABLE(WINAR)
     AR="$WINAR"
     ARFLAGS="-nologo -NODEFAULTLIB:MSVCRT"
 
     AC_CHECK_PROG([DUMPBIN], [dumpbin], [dumpbin],,,)
-    SET_FULL_PATH_SPACESAFE([DUMPBIN])
+    BASIC_FIXUP_EXECUTABLE(DUMPBIN)
 
     COMPILER_TYPE=CL
     CCXXFLAGS="$CCXXFLAGS -nologo"
@@ -347,10 +385,10 @@
 AC_SUBST(COMPILER_TYPE)
 
 AC_PROG_CPP
-SET_FULL_PATH(CPP)
+BASIC_FIXUP_EXECUTABLE(CPP)
 
 AC_PROG_CXXCPP
-SET_FULL_PATH(CXXCPP)
+BASIC_FIXUP_EXECUTABLE(CXXCPP)
 
 if test "x$COMPILE_TYPE" != "xcross"; then
     # If we are not cross compiling, use the same compilers for
@@ -373,43 +411,44 @@
 fi
 
 # Find the right assembler.
-if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+if test "x$OPENJDK_TARGET_OS" = xsolaris; then
     AC_PATH_PROG(AS, as)
-    SET_FULL_PATH(AS)
+    BASIC_FIXUP_EXECUTABLE(AS)
 else
     AS="$CC -c"
 fi
 AC_SUBST(AS)
 
-if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+if test "x$OPENJDK_TARGET_OS" = xsolaris; then
     AC_PATH_PROGS(NM, [gnm nm])
-    SET_FULL_PATH(NM)
+    BASIC_FIXUP_EXECUTABLE(NM)
     AC_PATH_PROG(STRIP, strip)
-    SET_FULL_PATH(STRIP)
+    BASIC_FIXUP_EXECUTABLE(STRIP)
     AC_PATH_PROG(MCS, mcs)
-    SET_FULL_PATH(MCS)
-elif test "x$OPENJDK_BUILD_OS" != xwindows; then
+    BASIC_FIXUP_EXECUTABLE(MCS)
+elif test "x$OPENJDK_TARGET_OS" != xwindows; then
     AC_CHECK_TOOL(NM, nm)
-    SET_FULL_PATH(NM)
+    BASIC_FIXUP_EXECUTABLE(NM)
     AC_CHECK_TOOL(STRIP, strip)
-    SET_FULL_PATH(STRIP)
+    BASIC_FIXUP_EXECUTABLE(STRIP)
 fi
 
-###
-#
-# Check for objcopy
-#
-#   but search for gobjcopy first...
-#   since I on solaris found a broken objcopy...buhh
-#
-AC_PATH_TOOL(OBJCOPY, gobjcopy)
-if test "x$OBJCOPY" = x; then
-   AC_PATH_TOOL(OBJCOPY, objcopy)
+# objcopy is used for moving debug symbols to separate files when
+# full debug symbols are enabled.
+if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+    AC_CHECK_TOOLS(OBJCOPY, [gobjcopy objcopy])
+    BASIC_FIXUP_EXECUTABLE(OBJCOPY)
+fi
+
+AC_CHECK_TOOLS(OBJDUMP, [gobjdump objdump])
+if test "x$OBJDUMP" != x; then
+  # Only used for compare.sh; we can live without it. BASIC_FIXUP_EXECUTABLE bails if argument is missing.
+  BASIC_FIXUP_EXECUTABLE(OBJDUMP)
 fi
 
 if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
    AC_PATH_PROG(LIPO, lipo)
-   SET_FULL_PATH(LIPO)
+   BASIC_FIXUP_EXECUTABLE(LIPO)
 fi
 
 # Restore old path without tools dir
@@ -449,7 +488,7 @@
     POST_STRIP_CMD="$STRIP -g"
 
     # Linking is different on MacOSX
-    if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+    if test "x$OPENJDK_TARGET_OS" = xmacosx; then
         # Might change in the future to clang.
         COMPILER_NAME=gcc
         SHARED_LIBRARY='lib[$]1.dylib'
@@ -463,7 +502,7 @@
         POST_STRIP_CMD="$STRIP -S"
     fi
 else
-    if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+    if test "x$OPENJDK_TARGET_OS" = xsolaris; then
         # If it is not gcc, then assume it is the Oracle Solaris Studio Compiler
         COMPILER_NAME=ossc
         PICFLAG="-KPIC"
@@ -487,7 +526,7 @@
         POST_STRIP_CMD="$STRIP -x"
         POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\""
     fi
-    if test "x$OPENJDK_BUILD_OS" = xwindows; then
+    if test "x$OPENJDK_TARGET_OS" = xwindows; then
         # If it is not gcc, then assume it is the MS Visual Studio compiler
         COMPILER_NAME=cl
         PICFLAG=""
@@ -626,6 +665,11 @@
         #  Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
         #CC_HIGHEST="$CC_HIGHEST -xlibmopt"
 
+        if test "x$OPENJDK_TARGET_CPU" = xsparc; then
+          CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s"
+          CXXFLAGS_JDK="${CXXFLAGS_JDK} -xmemalign=4s"
+        fi
+
         case $OPENJDK_TARGET_CPU_ARCH in
           x86)
             C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xregs=no%frameptr"
@@ -642,8 +686,6 @@
             fi
             ;;
           sparc)
-            CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s"
-            CXXFLAGS_JDK="${CXXFLAGS_JDK} -xmemalign=4s"
             CFLAGS_JDKLIB_EXTRA="${CFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
             CXXFLAGS_JDKLIB_EXTRA="${CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
             C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
@@ -759,7 +801,7 @@
           CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
           case $OPENJDK_TARGET_CPU_ARCH in
           x86 )
-            CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -Di386"
+            CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
        	    CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE"
           ;;
           esac
@@ -859,7 +901,7 @@
 # libraries will link to whatever is in memory. Yuck. 
 #
 # Thus we offer the compiler to find libjvm.so first in server then in client. It works. Ugh.
-if test "x$COMPILER_TYPE" = xCL; then
+if test "x$COMPILER_NAME" = xcl; then
     LDFLAGS_JDK="$LDFLAGS_JDK -nologo -opt:ref -incremental:no"
     if test "x$OPENJDK_TARGET_CPU" = xx86; then 
         LDFLAGS_JDK="$LDFLAGS_JDK -safeseh"
@@ -875,19 +917,23 @@
     fi
     LDFLAGS_JDKEXE="${LDFLAGS_JDK} /STACK:$LDFLAGS_STACK_SIZE"
 else
-    # If this is a --hash-style=gnu system, use --hash-style=both, why?
-    HAS_GNU_HASH=`$CC -dumpspecs 2>/dev/null | $GREP 'hash-style=gnu'`
-    if test -n "$HAS_GNU_HASH"; then
-        # And since we now know that the linker is gnu, then add -z defs, to forbid
-        # undefined symbols in object files.
-        LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker --hash-style=both -Xlinker -z -Xlinker defs"
-        if test "x$DEBUG_LEVEL" == "xrelease"; then
-            # When building release libraries, tell the linker optimize them.
-            # Should this be supplied to the OSS linker as well?
-            LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -O1"
+    if test "x$COMPILER_NAME" = xgcc; then
+        # If this is a --hash-style=gnu system, use --hash-style=both, why?
+        HAS_GNU_HASH=`$CC -dumpspecs 2>/dev/null | $GREP 'hash-style=gnu'`
+        if test -n "$HAS_GNU_HASH"; then
+            LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker --hash-style=both "
+        fi
+        if test "x$OPENJDK_TARGET_OS" = xlinux; then 
+          # And since we now know that the linker is gnu, then add -z defs, to forbid
+          # undefined symbols in object files.
+          LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -z -Xlinker defs"
+          if test "x$DEBUG_LEVEL" = "xrelease"; then
+              # When building release libraries, tell the linker optimize them.
+              # Should this be supplied to the OSS linker as well?
+              LDFLAGS_JDK="${LDFLAGS_JDK} -Xlinker -O1"
+          fi
         fi
     fi
-
     LDFLAGS_JDKLIB="${LDFLAGS_JDK} $SHARED_LIBRARY_FLAGS \
                     -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}/server \
                     -L${JDK_OUTPUTDIR}/lib${OPENJDK_TARGET_CPU_LIBDIR}/client \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/autoconf/toolchain_windows.m4	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,258 @@
+#
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
+[
+  if test "x$VS_ENV_CMD" = x; then
+    VS100BASE="$1"
+    METHOD="$2"
+    BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(VS100BASE)
+    if test -d "$VS100BASE"; then
+      if test -f "$VS100BASE/$VCVARSFILE"; then
+        AC_MSG_NOTICE([Found Visual Studio installation at $VS100BASE using $METHOD])
+        VS_ENV_CMD="$VS100BASE/$VCVARSFILE"
+      else
+        AC_MSG_NOTICE([Found Visual Studio installation at $VS100BASE using $METHOD])
+        AC_MSG_NOTICE([Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring])
+      fi
+    fi
+  fi
+])
+
+AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT],
+[
+  if test "x$VS_ENV_CMD" = x; then
+    WIN_SDK_BASE="$1"
+    METHOD="$2"
+    BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(WIN_SDK_BASE)
+    if test -d "$WIN_SDK_BASE"; then
+      if test -f "$WIN_SDK_BASE/SetEnv.Cmd"; then
+        AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
+        VS_ENV_CMD="$WIN_SDK_BASE/SetEnv.Cmd"
+        if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+          VS_ENV_ARGS="/x86"
+        else
+          VS_ENV_ARGS="/x64"
+        fi
+      else
+        AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
+        AC_MSG_NOTICE([Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring])
+      fi
+    fi
+  fi
+])
+
+AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
+[
+  if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+    VCVARSFILE="vc/bin/vcvars32.bat"
+  else
+    VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+  fi 
+
+  VS_ENV_CMD=""
+  VS_ENV_ARGS=""
+  if test "x$with_toolsdir" != x; then
+    TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$with_toolsdir/../..], [--with-tools-dir])
+  fi
+
+  if test "x$with_toolsdir" != x && test "x$VS_ENV_CMD" = x; then
+    # Having specified an argument which is incorrect will produce an instant failure;
+    # we should not go on looking
+    AC_MSG_NOTICE([The path given by --with-tools-dir does not contain a valid Visual Studio installation])
+    AC_MSG_NOTICE([Please point to the VC/bin directory within the Visual Studio installation])
+    AC_MSG_ERROR([Cannot locate a valid Visual Studio installation])
+  fi  
+
+  if test "x$ProgramW6432" != x; then
+    TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([$ProgramW6432/Microsoft SDKs/Windows/v7.1/Bin], [well-known name])
+  fi
+  if test "x$PROGRAMW6432" != x; then
+    TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([$PROGRAMW6432/Microsoft SDKs/Windows/v7.1/Bin], [well-known name])
+  fi
+  if test "x$PROGRAMFILES" != x; then
+    TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([$PROGRAMFILES/Microsoft SDKs/Windows/v7.1/Bin], [well-known name])
+  fi
+  TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin], [well-known name])
+  TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1/Bin], [well-known name])
+
+  if test "x$VS100COMNTOOLS" != x; then
+    TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$VS100COMNTOOLS/../..], [VS100COMNTOOLS variable])
+  fi
+  if test "x$PROGRAMFILES" != x; then
+    TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([$PROGRAMFILES/Microsoft Visual Studio 10.0], [well-known name])
+  fi
+  TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([C:/Program Files/Microsoft Visual Studio 10.0], [well-known name])
+  TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([C:/Program Files (x86)/Microsoft Visual Studio 10.0], [well-known name])
+])
+
+# Check if the VS env variables were setup prior to running configure.
+# If not, then find vcvarsall.bat and run it automatically, and integrate
+# the set env variables into the spec file.
+AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
+[
+  # Store path to cygwin link.exe to help excluding it when searching for 
+  # VS linker. This must be done before changing the PATH when looking for VS.
+  AC_PATH_PROG(CYGWIN_LINK, link)
+  if test "x$CYGWIN_LINK" != x; then
+    AC_MSG_CHECKING([if the first found link.exe is actually the Cygwin link tool])
+    "$CYGWIN_LINK" --version > /dev/null
+    if test $? -eq 0 ; then
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+      # This might be the VS linker. Don't exclude it later on.
+      CYGWIN_LINK=""
+    fi
+  fi
+
+  # First-hand choice is to locate and run the vsvars bat file.
+  TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE
+  if test "x$VS_ENV_CMD" != x; then
+    # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
+    BASIC_FIXUP_EXECUTABLE(VS_ENV_CMD)
+
+    # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
+    AC_MSG_NOTICE([Trying to extract Visual Studio environment variables])
+    cd $OUTPUT_ROOT
+    # FIXME: The code betweeen ---- was inlined from a separate script and is not properly adapted
+    # to autoconf standards.
+
+    #----
+
+    # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment)
+    # but calculate the difference in Cygwin environment before/after running it and then
+    # apply the diff.
+
+    if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
+      _vs10varsall=`cygpath -a -m -s "$VS_ENV_CMD"`
+      _dosvs10varsall=`cygpath -a -w -s $_vs10varsall`
+      _dosbash=`cygpath -a -w -s \`which bash\`.*`
+    else
+      _dosvs10varsall=`cmd //c echo $VS_ENV_CMD`
+      _dosbash=`cmd //c echo \`which bash\``
+    fi
+
+    # generate the set of exported vars before/after the vs10 setup
+    $ECHO "@echo off"                                           >  localdevenvtmp.bat
+    $ECHO "$_dosbash -c \"export -p\" > localdevenvtmp.export0" >> localdevenvtmp.bat
+    $ECHO "call $_dosvs10varsall $VS_ENV_ARGS"                  >> localdevenvtmp.bat
+    $ECHO "$_dosbash -c \"export -p\" > localdevenvtmp.export1" >> localdevenvtmp.bat
+
+    # Now execute the newly created bat file.
+    # The | cat is to stop SetEnv.Cmd to mess with system colors on msys
+    cmd /c localdevenvtmp.bat | cat
+
+    # apply the diff (less some non-vs10 vars named by "!")
+    $SORT localdevenvtmp.export0 | $GREP -v "!" > localdevenvtmp.export0.sort
+    $SORT localdevenvtmp.export1 | $GREP -v "!" > localdevenvtmp.export1.sort
+    $COMM -1 -3 localdevenvtmp.export0.sort localdevenvtmp.export1.sort > localdevenv.sh
+
+    # cleanup
+    $RM localdevenvtmp*
+    #----
+    cd $CURDIR
+    if test ! -s $OUTPUT_ROOT/localdevenv.sh; then
+      AC_MSG_RESULT([no])
+      AC_MSG_NOTICE([Could not succesfully extract the envionment variables needed for the VS setup.])
+      AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation])
+      AC_MSG_NOTICE([or run "bash.exe -l" from a VS command prompt and then run configure from there.])
+      AC_MSG_ERROR([Cannot continue])
+    fi
+
+    # Now set all paths and other env variables. This will allow the rest of 
+    # the configure script to find and run the compiler in the proper way.
+    AC_MSG_NOTICE([Setting extracted environment variables])
+    . $OUTPUT_ROOT/localdevenv.sh
+  else
+    # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
+    AC_MSG_NOTICE([Cannot locate a valid Visual Studio installation, checking current environment])
+  fi
+
+  # At this point, we should have corrent variables in the environment, or we can't continue.
+  AC_MSG_CHECKING([for Visual Studio variables])
+  
+  if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x || test "x$WINDOWSSDKDIR" != x; then
+    if test "x$INCLUDE" = x || test "x$LIB" = x; then
+      AC_MSG_RESULT([present but broken])
+      AC_MSG_ERROR([Your VC command prompt seems broken, INCLUDE and/or LIB is missing.])
+    else
+      AC_MSG_RESULT([ok])
+      VS_INCLUDE="$INCLUDE"
+      VS_LIB="$LIB"
+      VS_PATH="$PATH"
+      AC_SUBST(VS_INCLUDE)
+      AC_SUBST(VS_LIB)
+      AC_SUBST(VS_PATH)
+    fi
+  else
+    AC_MSG_RESULT([not found])
+
+    if test "x$VS_ENV_CMD" = x; then
+      AC_MSG_NOTICE([Cannot locate a valid Visual Studio or Windows SDK installation on disk,])
+      AC_MSG_NOTICE([nor is this script run from a Visual Studio command prompt.])
+    else
+      AC_MSG_NOTICE([Running the extraction script failed.])
+    fi
+    AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation])
+    AC_MSG_NOTICE([or run "bash.exe -l" from a VS command prompt and then run configure from there.])
+    AC_MSG_ERROR([Cannot continue])
+  fi
+  
+  AC_MSG_CHECKING([for msvcr100.dll])
+  AC_ARG_WITH(msvcr-dll, [AS_HELP_STRING([--with-msvcr-dll],
+      [copy this msvcr100.dll into the built JDK (Windows only) @<:@probed@:>@])])
+  if test "x$with_msvcr_dll" != x; then
+    MSVCR_DLL="$with_msvcr_dll"
+  else
+    if test "x$VCINSTALLDIR" != x; then
+      if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+        MSVCR_DLL=`find "$VCINSTALLDIR" -name msvcr100.dll | grep x64 | head --lines 1`
+      else
+        MSVCR_DLL=`find "$VCINSTALLDIR" -name msvcr100.dll | grep x86 | grep -v ia64 | grep -v x64 | head --lines 1`
+        if test "x$MSVCR_DLL" = x; then
+          MSVCR_DLL=`find "$VCINSTALLDIR" -name msvcr100.dll | head --lines 1`
+        fi
+      fi
+      if test "x$MSVCR_DLL" != x; then
+        AC_MSG_NOTICE([msvcr100.dll found in VCINSTALLDIR: $VCINSTALLDIR])
+      else
+        AC_MSG_NOTICE([Warning: msvcr100.dll not found in VCINSTALLDIR: $VCINSTALLDIR])
+      fi
+    fi
+    if test "x$MSVCR_DLL" = x; then
+      if test -f "$SYSTEMROOT/system32/msvcr100.dll"; then
+        AC_MSG_NOTICE([msvcr100.dll found in $SYSTEMROOT/system32])
+        MSVCR_DLL="$SYSTEMROOT/system32/msvcr100.dll"
+      fi
+    fi
+  fi
+  if test "x$MSVCR_DLL" = x; then
+    AC_MSG_RESULT([no])
+    AC_MSG_ERROR([Could not find msvcr100.dll !])
+  fi
+  AC_MSG_RESULT([$MSVCR_DLL])
+  BASIC_FIXUP_PATH(MSVCR_DLL)
+])
--- a/common/autoconf/version.numbers	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/autoconf/version.numbers	Wed Jul 05 18:27:34 2017 +0200
@@ -34,3 +34,7 @@
 PRODUCT_SUFFIX="Runtime Environment"
 JDK_RC_PLATFORM_NAME=Platform
 COMPANY_NAME=N/A
+
+# Might need better names for these
+MACOSX_BUNDLE_NAME_BASE="OpenJDK"
+MACOSX_BUNDLE_ID_BASE="net.java.openjdk"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/bin/compare.sh	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,1220 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# This script is processed by configure before it's usable. It is run from 
+# the root of the build directory.
+
+
+##########################################################################################
+
+# Check that we are run via the wrapper generated by configure
+if [ -z "$SRC_ROOT" ]; then
+    echo "Error: You must run this script using build/[conf]/compare.sh"
+    exit 1
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
+    FULLDUMP_CMD="$OTOOL -v -V -h -X -t -d"
+    LDD_CMD="$OTOOL -L"
+    DIS_CMD="$OTOOL -v -t"
+    STAT_PRINT_SIZE="-f %z"
+elif [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+    FULLDUMP_CMD="$DUMPBIN -all"
+    LDD_CMD="$DUMPBIN -dependants | $GREP .dll"
+    DIS_CMD="$DUMPBIN -disasm:nobytes"
+    STAT_PRINT_SIZE="-c %s"
+else
+    FULLDUMP_CMD="$READELF -a"
+    LDD_CMD="$LDD"
+    DIS_CMD="$OBJDUMP -d"
+    STAT_PRINT_SIZE="-c %s"
+fi
+
+UNARCHIVE="$UNZIP -q"
+
+COMPARE_EXCEPTIONS_INCLUDE="$SRC_ROOT/common/bin/compare_exceptions.sh.incl"
+if [ ! -e "$COMPARE_EXCEPTIONS_INCLUDE" ]; then
+    echo "Error: Cannot locate the exceptions file, it should have been here: $COMPARE_EXCEPTIONS_INCLUDE"
+    exit 1
+fi
+# Include exception definitions
+. "$COMPARE_EXCEPTIONS_INCLUDE"
+
+##########################################################################################
+# Compare text files and ignore specific differences:
+#
+#  * Timestamps in Java sources generated by idl2java
+#  * Sorting order and cleanup style in .properties files
+
+diff_text() {
+    OTHER_FILE=$1
+    THIS_FILE=$2
+
+    SUFFIX="${THIS_FILE##*.}"
+
+    TMP=1
+
+    if [[ "$THIS_FILE" = *"META-INF/MANIFEST.MF" ]]; then
+        TMP=$(LANG=C $DIFF $OTHER_FILE $THIS_FILE | \
+            $GREP '^[<>]' | \
+            $SED -e '/[<>] Ant-Version: Apache Ant .*/d' \
+	         -e '/[<>] Created-By: .* (Oracle Corporation).*/d')
+    fi
+    if test "x$SUFFIX" = "xjava"; then
+        TMP=$(LANG=C $DIFF $OTHER_FILE $THIS_FILE | \
+            $GREP '^[<>]' | \
+            $SED -e '/[<>] \* from.*\.idl/d' \
+                 -e '/[<>] \*.*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
+                 -e '/[<>] \*.*[0-9]\{4\} [0-9][0-9]*:[0-9]\{2\}:[0-9]\{2\}.*/d' \
+                 -e '/\/\/ Generated from input file.*/d' \
+                 -e '/\/\/ This file was generated AUTOMATICALLY from a template file.*/d' \
+                 -e '/\/\/ java GenerateCharacter.*/d')
+    fi
+    # Ignore date strings in class files.
+    # On Macosx the system sources for generated java classes produce different output on 
+    # consequtive invokations seemingly randomly.
+    # For example a method parameter randomly named "thePoint" or "aPoint". Ignore this.
+    if test "x$SUFFIX" = "xclass"; then
+        # To improve performance when large diffs are found, do a rough filtering of classes
+        # elibeble for these exceptions
+        if $GREP -R -e '[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}' -e thePoint -e aPoint -e setItemsPtr ${THIS_FILE} > /dev/null; then
+            $JAVAP -c -constants -l -p ${OTHER_FILE} >  ${OTHER_FILE}.javap
+            $JAVAP -c -constants -l -p ${THIS_FILE} > ${THIS_FILE}.javap
+            TMP=$($DIFF ${OTHER_FILE}.javap ${THIS_FILE}.javap | \
+                $GREP '^[<>]' | \
+                $SED -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
+ 	             -e '/[<>].*Point   Lcom\/apple\/jobjc\/foundation\/NSPoint;/d' \
+	             -e '/[<>].*public com\.apple\.jobjc\.Pointer<com\.apple\.jobjc\..*itemsPtr();/d' \
+	             -e '/[<>].*public void setItemsPtr(com\.apple\.jobjc\.Pointer<com\.apple\.jobjc\..*);/d')
+        fi
+    fi
+    if test "x$SUFFIX" = "xproperties"; then
+        $CAT $OTHER_FILE | $SED -e 's/\([^\\]\):/\1\\:/g' -e  's/\([^\\]\)=/\1\\=/g' -e 's/#.*/#/g' \
+            | $SED -f "$SRC_ROOT/common/makefiles/support/unicode2x.sed" \
+  	    | $SED -e '/^#/d' -e '/^$/d' \
+            -e :a -e '/\\$/N; s/\\\n//; ta' \
+  	    -e 's/^[ \t]*//;s/[ \t]*$//' \
+	    -e 's/\\=/=/' | LANG=C $SORT > $OTHER_FILE.cleaned
+        TMP=$(LANG=C $DIFF $OTHER_FILE.cleaned $THIS_FILE)
+    fi
+    if test -n "$TMP"; then
+        echo Files $OTHER_FILE and $THIS_FILE differ
+        return 1
+    fi
+
+    return 0
+}
+
+##########################################################################################
+# Compare directory structure
+
+compare_dirs() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+
+    mkdir -p $WORK_DIR
+
+    (cd $OTHER_DIR && $FIND . -type d | $SORT > $WORK_DIR/dirs_other)
+    (cd $THIS_DIR && $FIND . -type d | $SORT > $WORK_DIR/dirs_this)
+
+    $DIFF $WORK_DIR/dirs_other $WORK_DIR/dirs_other > $WORK_DIR/dirs_diff
+    
+    echo -n Directory structure...
+    if [ -s $WORK_DIR/dirs_diff ]; then
+        echo Differences found.
+        REGRESSIONS=true
+        # Differences in directories found.
+        ONLY_OTHER=$($GREP '<' $WORK_DIR/dirs_diff)
+        if [ "$ONLY_OTHER" ]; then
+            echo Only in $OTHER
+            $GREP '<' $WORK_DIR/dirs_diff | $SED 's|< ./|    |g'
+        fi
+        ONLY_THIS=$($GREP '>' $WORK_DIR/dirs_diff)
+        if [ "$ONLY_THIS" ]; then
+            echo Only in $THIS
+            $GREP '>' $WORK_DIR/dirs_diff | $SED 's|> ./|    |g'
+        fi
+    else
+        echo Identical!
+    fi
+}
+
+
+##########################################################################################
+# Compare file structure
+
+compare_files() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+
+    $MKDIR -p $WORK_DIR
+
+    (cd $OTHER_DIR && $FIND . ! -type d | $SORT > $WORK_DIR/files_other)
+    (cd $THIS_DIR && $FIND . ! -type d | $SORT > $WORK_DIR/files_this)
+    
+    $DIFF $WORK_DIR/files_other $WORK_DIR/files_this > $WORK_DIR/files_diff
+
+    echo -n File names...
+    if [ -s $WORK_DIR/files_diff ]; then
+        echo Differences found.
+        REGRESSIONS=true
+        # Differences in files found.
+        ONLY_OTHER=$($GREP '<' $WORK_DIR/files_diff)
+        if [ "$ONLY_OTHER" ]; then
+            echo Only in $OTHER
+            $GREP '<' $WORK_DIR/files_diff | $SED 's|< ./|    |g'
+        fi
+        ONLY_THIS=$($GREP '>' $WORK_DIR/files_diff)
+        if [ "$ONLY_THIS" ]; then
+            echo Only in $THIS
+            $GREP '>' $WORK_DIR/files_diff | $SED 's|> ./|    |g'
+        fi
+    else
+        echo Identical!
+    fi
+}
+
+
+##########################################################################################
+# Compare permissions
+
+compare_permissions() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+
+    mkdir -p $WORK_DIR
+
+    echo -n Permissions...
+    found=""
+    for f in `cd $OTHER_DIR && $FIND . -type f`
+    do
+        if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
+        if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
+        OP=`ls -l ${OTHER_DIR}/$f | awk '{printf("%.10s\n", $1);}'`
+        TP=`ls -l ${THIS_DIR}/$f | awk '{printf("%.10s\n", $1);}'`
+        if [ "$OP" != "$TP" ]
+        then
+	    if [ -z "$found" ]; then echo ; found="yes"; fi
+	    $PRINTF "\told: ${OP} new: ${TP}\t$f\n"
+        fi
+    done
+    if [ -z "$found" ]; then 
+        echo "Identical!"
+    else
+        REGRESSIONS=true
+    fi
+}
+
+##########################################################################################
+# Compare file command output
+
+compare_file_types() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+
+    $MKDIR -p $WORK_DIR
+
+    echo -n File types...
+    found=""
+    for f in `cd $OTHER_DIR && $FIND . ! -type d`
+    do
+        if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
+        if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
+        OF=`cd ${OTHER_DIR} && $FILE -h $f`
+        TF=`cd ${THIS_DIR} && $FILE -h $f`
+        if [ "$f" = "./src.zip" ] || [[ "$f" = *"/Home/src.zip" ]] || [[ "$f" = *"/lib/JObjC.jar" ]]
+        then
+	    if [ "`echo $OF | $GREP -ic zip`" -gt 0 -a "`echo $TF | $GREP -ic zip`" -gt 0 ]
+	    then
+	        # the way we produces zip-files make it so that directories are stored in old file
+	        # but not in new (only files with full-path)
+	        # this makes file-5.09 report them as different
+	        continue;
+	    fi
+        fi
+        
+        if [ "$OF" != "$TF" ]
+        then
+	    if [ -z "$found" ]; then echo ; found="yes"; fi
+	    $PRINTF "\tother: ${OF}\n\tthis : ${TF}\n"
+        fi
+    done
+    if [ -z "$found" ]; then 
+        echo "Identical!"
+    else
+        REGRESSIONS=true
+    fi
+}
+
+##########################################################################################
+# Compare the rest of the files
+
+compare_general_files() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+    
+    GENERAL_FILES=$(cd $THIS_DIR && $FIND . -type f ! -name "*.so" ! -name "*.jar" ! -name "*.zip" \
+        ! -name "*.debuginfo" ! -name "*.dylib" ! -name "jexec" \
+        ! -name "ct.sym" ! -name "*.diz" ! -name "*.dll" \
+        ! -name "*.pdb" ! -name "*.exp" ! -name "*.ilk" \
+        ! -name "*.lib" ! -name "*.war" \
+        | $GREP -v "./bin/"  | $SORT | $FILTER)
+
+    echo General files...
+    for f in $GENERAL_FILES
+    do
+        if [ -e $OTHER_DIR/$f ]; then
+            if [ "$(basename $f)" = "release" ]; then
+                # Ignore differences in change numbers in release file.
+                OTHER_FILE=$WORK_DIR/$f.other
+                THIS_FILE=$WORK_DIR/$f.this
+                $MKDIR -p $(dirname $OTHER_FILE)
+                $MKDIR -p $(dirname $THIS_FILE)
+                $CAT $OTHER_DIR/$f | $SED 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' > $OTHER_FILE
+                $CAT $THIS_DIR/$f  | $SED 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' > $THIS_FILE
+            else
+                OTHER_FILE=$OTHER_DIR/$f
+                THIS_FILE=$THIS_DIR/$f
+            fi
+            DIFF_OUT=$($DIFF $OTHER_FILE $THIS_FILE 2>&1)
+            if [ -n "$DIFF_OUT" ]; then
+                echo $f
+                REGRESSIONS=true
+                if [ "$SHOW_DIFFS" = "true" ]; then
+                    echo "$DIFF_OUT"
+                fi
+            fi
+        fi
+    done
+
+
+}
+
+##########################################################################################
+# Compare zip file
+
+compare_zip_file() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+    ZIP_FILE=$4
+
+    THIS_ZIP=$THIS_DIR/$ZIP_FILE
+    OTHER_ZIP=$OTHER_DIR/$ZIP_FILE
+
+    THIS_SUFFIX="${THIS_ZIP##*.}"
+    OTHER_SUFFIX="${OTHER_ZIP##*.}"
+    if [ "$THIS_SUFFIX" != "$OTHER_SUFFIX" ]; then
+        echo The files do not have the same suffix type!
+        return 2
+    fi
+
+    TYPE="$THIS_SUFFIX"
+
+    if $CMP $OTHER_ZIP $THIS_ZIP > /dev/null
+    then
+        return 0
+    fi
+    # Not quite identical, the might still contain the same data.
+    # Unpack the jar/zip files in temp dirs
+    
+    THIS_UNZIPDIR=$WORK_DIR/$ZIP_FILE.this
+    OTHER_UNZIPDIR=$WORK_DIR/$ZIP_FILE.other
+    $RM -rf $THIS_UNZIPDIR $OTHER_UNZIPDIR
+    $MKDIR -p $THIS_UNZIPDIR
+    $MKDIR -p $OTHER_UNZIPDIR
+    (cd $THIS_UNZIPDIR && $UNARCHIVE $THIS_ZIP)
+    (cd $OTHER_UNZIPDIR && $UNARCHIVE $OTHER_ZIP)
+
+    CONTENTS_DIFF_FILE=$WORK_DIR/$ZIP_FILE.diff
+    # On solaris, there is no -q option.
+    if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
+        LANG=C $DIFF -r $OTHER_UNZIPDIR $THIS_UNZIPDIR \
+            | $GREP -v -e "^<" -e "^>" -e "^Common subdirectories:" \
+            > $CONTENTS_DIFF_FILE
+    else
+        LANG=C $DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
+    fi
+
+    ONLY_OTHER=$($GREP "^Only in $OTHER_UNZIPDIR" $CONTENTS_DIFF_FILE)
+    ONLY_THIS=$($GREP "^Only in $THIS_UNZIPDIR" $CONTENTS_DIFF_FILE)
+
+    return_value=0
+
+    if [ -n "$ONLY_OTHER" ]; then
+        echo "        Only OTHER $ZIP_FILE contains:"
+        echo "$ONLY_OTHER" | sed "s|Only in $OTHER_UNZIPDIR|            |"g | sed 's|: |/|g'
+        return_value=1
+    fi
+
+    if [ -n "$ONLY_THIS" ]; then
+        echo "        Only THIS $ZIP_FILE contains:"
+        echo "$ONLY_THIS" | sed "s|Only in $THIS_UNZIPDIR|            |"g | sed 's|: |/|g'
+        return_value=1
+    fi
+
+    if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
+        DIFFING_FILES=$($GREP -e "differ$" -e "^diff " $CONTENTS_DIFF_FILE \
+            | $CUT -f 3 -d ' ' | $SED "s|$OTHER_UNZIPDIR/||g")
+    else
+        DIFFING_FILES=$($GREP -e "differ$" $CONTENTS_DIFF_FILE \
+            | $CUT -f 2 -d ' ' | $SED "s|$OTHER_UNZIPDIR/||g")
+    fi
+
+    $RM -f $WORK_DIR/$ZIP_FILE.diffs
+    for file in $DIFFING_FILES; do
+	if [[ "$ACCEPTED_JARZIP_CONTENTS" != *"$file"* ]]; then
+            diff_text $OTHER_UNZIPDIR/$file $THIS_UNZIPDIR/$file >> $WORK_DIR/$ZIP_FILE.diffs
+	fi
+    done
+
+    if [ -s "$WORK_DIR/$ZIP_FILE.diffs" ]; then
+        return_value=1
+        echo "        Differing files in $ZIP_FILE"
+        $CAT $WORK_DIR/$ZIP_FILE.diffs | $GREP differ | cut -f 2 -d ' ' | \
+            $SED "s|$OTHER_UNZIPDIR|            |g" > $WORK_DIR/$ZIP_FILE.difflist
+        $CAT $WORK_DIR/$ZIP_FILE.difflist
+
+        if [ -n "$SHOW_DIFFS" ]; then
+            for i in $(cat $WORK_DIR/$ZIP_FILE.difflist) ; do
+                if [ -f "${OTHER_UNZIPDIR}/$i.javap" ]; then
+                    LANG=C $DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
+                elif [ -f "${OTHER_UNZIPDIR}/$i.cleaned" ]; then
+                    LANG=C $DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
+                else
+                    LANG=C $DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
+                fi
+            done
+        fi
+    fi
+
+    return $return_value
+}
+
+
+##########################################################################################
+# Compare all zip files
+
+compare_all_zip_files() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+
+    ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" | $SORT | $FILTER )
+
+    if [ -n "$ZIPS" ]; then
+        echo Zip files...
+
+        return_value=0
+        for f in $ZIPS; do
+            if [ -f "$OTHER_DIR/$f" ]; then
+                compare_zip_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
+                if [ "$?" != "0" ]; then
+                    return_value=1
+                    REGRESSIONS=true
+                fi
+            fi
+        done
+    fi
+
+    return $return_value
+}
+
+##########################################################################################
+# Compare all jar files
+
+compare_all_jar_files() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+
+    # TODO filter?
+    ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.jar" -o -name "*.war" | $SORT | $FILTER)
+
+    if [ -n "$ZIPS" ]; then
+        echo Jar files...
+
+        return_value=0
+        for f in $ZIPS; do
+            if [ -f "$OTHER_DIR/$f" ]; then
+                compare_zip_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
+                if [ "$?" != "0" ]; then
+                    return_value=1
+                    REGRESSIONS=true
+                fi
+            fi
+        done
+    fi
+
+    return $return_value
+}
+
+##########################################################################################
+# Compare binary (executable/library) file
+
+compare_bin_file() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+    BIN_FILE=$4
+
+    THIS_FILE=$THIS_DIR/$BIN_FILE
+    OTHER_FILE=$OTHER_DIR/$BIN_FILE
+    NAME=$(basename $BIN_FILE)
+    WORK_FILE_BASE=$WORK_DIR/$BIN_FILE
+    FILE_WORK_DIR=$(dirname $WORK_FILE_BASE)
+
+    $MKDIR -p $FILE_WORK_DIR
+
+    ORIG_THIS_FILE="$THIS_FILE"
+    ORIG_OTHER_FILE="$OTHER_FILE"
+
+    if [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then
+        THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME
+        OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME
+        $MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other
+        $CP $THIS_FILE $THIS_STRIPPED_FILE
+        $CP $OTHER_FILE $OTHER_STRIPPED_FILE
+        $STRIP $THIS_STRIPPED_FILE
+        $STRIP $OTHER_STRIPPED_FILE
+        THIS_FILE="$THIS_STRIPPED_FILE"
+        OTHER_FILE="$OTHER_STRIPPED_FILE"
+    fi
+
+    if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+	unset _NT_SYMBOL_PATH
+	# On windows we need to unzip the debug symbols, if present
+	OTHER_FILE_BASE=${OTHER_FILE/.dll/}
+	OTHER_FILE_BASE=${OTHER_FILE_BASE/.exe/}
+	DIZ_NAME=$(basename $OTHER_FILE_BASE).diz
+        # java.exe and java.dll diz files will have the same name. Have to
+	# make sure java.exe gets the right one. This is only needed for 
+	# OTHER since in the new build, all pdb files are left around.
+	if [ "$NAME" = "java.exe" ] && [ -f "$OTHER/tmp/java/java/obj64/java.diz" ]; then
+	    OTHER_DIZ_FILE="$OTHER/tmp/java/java/obj64/java.diz"
+	elif [ -f "${OTHER_FILE_BASE}.diz" ]; then
+	    OTHER_DIZ_FILE=${OTHER_FILE_BASE}.diz
+	else
+            # Some files, jli.dll, appears twice in the image but only one of
+	    # thme has a diz file next to it.
+	    OTHER_DIZ_FILE="$($FIND $OTHER_DIR -name $DIZ_NAME | $SED 1q)"
+	    if [ ! -f "$OTHER_DIZ_FILE" ]; then
+		# As a last resort, look for diz file in the whole build output
+		# dir.
+		OTHER_DIZ_FILE="$($FIND $OTHER -name $DIZ_NAME | $SED 1q)"
+	    fi
+	fi
+	if [ -n "$OTHER_DIZ_FILE" ]; then
+	    $MKDIR -p $FILE_WORK_DIR/other
+	    (cd $FILE_WORK_DIR/other ; $UNARCHIVE -o $OTHER_DIZ_FILE)
+	    export _NT_SYMBOL_PATH="$FILE_WORK_DIR/other"
+	fi
+	THIS_FILE_BASE=${THIS_FILE/.dll/}
+	THIS_FILE_BASE=${THIS_FILE_BASE/.exe/}
+	if [ -f "${THIS_FILE/.dll/}.diz" ]; then
+	    THIS_DIZ_FILE=${THIS_FILE/.dll/}.diz
+	else
+	    THIS_DIZ_FILE="$($FIND $THIS_DIR -name $DIZ_NAME | $SED 1q)"
+	    if [ ! -f "$THIS_DIZ_FILE" ]; then
+		# As a last resort, look for diz file in the whole build output
+		# dir.
+		THIS_DIZ_FILE="$($FIND $THIS -name $DIZ_NAME | $SED 1q)"
+	    fi
+	fi
+	if [ -n "$THIS_DIZ_FILE" ]; then
+	    $MKDIR -p $FILE_WORK_DIR/this
+	    (cd $FILE_WORK_DIR/this ; $UNARCHIVE -o $THIS_DIZ_FILE)
+	    export _NT_SYMBOL_PATH="$_NT_SYMBOL_PATH;$FILE_WORK_DIR/this"
+	fi
+    fi
+
+    if [ -z "$SKIP_BIN_DIFF" ]; then
+        if cmp $OTHER_FILE $THIS_FILE > /dev/null; then
+        # The files were bytewise identical.
+            if [ -n "$VERBOSE" ]; then
+                echo "        :           :         :         :          : $BIN_FILE"
+            fi
+            return 0
+        fi
+        BIN_MSG=" diff "
+        if [[ "$ACCEPTED_BIN_DIFF" != *"$BIN_FILE"* ]]; then
+            DIFF_BIN=true
+            if [[ "$KNOWN_BIN_DIFF" != *"$BIN_FILE"* ]]; then
+                BIN_MSG="*$BIN_MSG*"
+                REGRESSIONS=true
+            else
+                BIN_MSG=" $BIN_MSG "
+            fi
+        else
+            BIN_MSG="($BIN_MSG)"
+            DIFF_BIN=
+        fi
+    fi
+
+    if [ -n "$STAT" ]; then
+        THIS_SIZE=$($STAT $STAT_PRINT_SIZE "$THIS_FILE")
+        OTHER_SIZE=$($STAT $STAT_PRINT_SIZE "$OTHER_FILE")
+    else
+        THIS_SIZE=$(ls -l "$THIS_FILE" | awk '{ print $5 }')
+        OTHER_SIZE=$(ls -l "$OTHER_FILE" | awk '{ print $5 }')
+    fi
+    if [ $THIS_SIZE -ne $OTHER_SIZE ]; then
+        DIFF_SIZE_NUM=$($EXPR $THIS_SIZE - $OTHER_SIZE)
+        DIFF_SIZE_REL=$($EXPR $THIS_SIZE \* 100 / $OTHER_SIZE)
+        SIZE_MSG=$($PRINTF "%3d%% %4d" $DIFF_SIZE_REL $DIFF_SIZE_NUM)
+        if [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] && [ "$DIFF_SIZE_REL" -gt 98 ] && [ "$DIFF_SIZE_REL" -lt 102 ]; then
+            SIZE_MSG="($SIZE_MSG)"
+            DIFF_SIZE=
+        elif [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] && [ "$DIFF_SIZE_NUM" = 512 ]; then
+	    # On windows, size of binaries increase in 512 increments.
+            SIZE_MSG="($SIZE_MSG)"
+            DIFF_SIZE=
+        else
+            if [[ "$ACCEPTED_SIZE_DIFF" != *"$BIN_FILE"* ]]; then
+                DIFF_SIZE=true
+                if [[ "$KNOWN_SIZE_DIFF" != *"$BIN_FILE"* ]]; then
+                    SIZE_MSG="*$SIZE_MSG*"
+                    REGRESSIONS=true
+                else
+                    SIZE_MSG=" $SIZE_MSG "
+                fi
+            else
+                SIZE_MSG="($SIZE_MSG)"
+                DIFF_SIZE=
+            fi
+        fi
+    else
+        SIZE_MSG="           "
+        DIFF_SIZE=
+        if [[ "$KNOWN_SIZE_DIFF $ACCEPTED_SIZE_DIFF" = *"$BIN_FILE"* ]]; then
+            SIZE_MSG="     !     "
+        fi
+    fi
+
+    if [[ "$SORT_SYMBOLS" = *"$BIN_FILE"* ]]; then
+        SYM_SORT_CMD="sort"
+    else
+        SYM_SORT_CMD="cat"
+    fi
+
+    # Check symbols
+    if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+        # The output from dumpbin on windows differs depending on if the debug symbol
+        # files are still around at the location the binary is pointing too. Need
+	# to filter out that extra information.
+	$DUMPBIN -exports $OTHER_FILE | $GREP  -E '^ +[0-9A-F]+ +[0-9A-F]+ [0-9A-F]+' | sed 's/ = .*//g' | cut -c27- | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
+	$DUMPBIN -exports $THIS_FILE  | $GREP  -E '^ +[0-9A-F]+ +[0-9A-F]+ [0-9A-F]+' | sed 's/ = .*//g' | cut -c27- | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
+    elif [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
+        # Some symbols get seemingly random 15 character prefixes. Filter them out.
+        $NM -a $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SED 's/^\([a-zA-Z] [\.\$]\)[a-zA-Z0-9_\$]\{15,15\}\./\1./g' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
+	$NM -a $ORIG_THIS_FILE  2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SED 's/^\([a-zA-Z] [\.\$]\)[a-zA-Z0-9_\$]\{15,15\}\./\1./g' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
+    else
+	$NM -a $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
+	$NM -a $ORIG_THIS_FILE  2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
+    fi
+    
+    LANG=C $DIFF $WORK_FILE_BASE.symbols.other $WORK_FILE_BASE.symbols.this > $WORK_FILE_BASE.symbols.diff
+    if [ -s $WORK_FILE_BASE.symbols.diff ]; then
+        SYM_MSG=" diff  "
+        if [[ "$ACCEPTED_SYM_DIFF" != *"$BIN_FILE"* ]]; then
+            DIFF_SYM=true
+            if [[ "$KNOWN_SYM_DIFF" != *"$BIN_FILE"* ]]; then
+                SYM_MSG="*$SYM_MSG*"
+                REGRESSIONS=true
+            else
+                SYM_MSG=" $SYM_MSG "
+            fi
+        else
+            SYM_MSG="($SYM_MSG)"            
+            DIFF_SYM=
+        fi
+    else
+        SYM_MSG="         "
+        DIFF_SYM=
+        if [[ "$KNOWN_SYM_DIFF $ACCEPTED_SYM_DIFF" = *"$BIN_FILE"* ]]; then
+            SYM_MSG="    !    "
+        fi
+    fi
+
+    # Check dependencies
+    if [ -n "$LDD_CMD" ]; then
+	(cd $FILE_WORK_DIR && $CP $OTHER_FILE . && $LDD_CMD $NAME | $AWK '{ print $1;}' | $SORT | $TEE $WORK_FILE_BASE.deps.other | $UNIQ > $WORK_FILE_BASE.deps.other.uniq)
+	(cd $FILE_WORK_DIR && $CP $THIS_FILE . && $LDD_CMD $NAME | $AWK '{ print $1;}' | $SORT | $TEE $WORK_FILE_BASE.deps.this | $UNIQ > $WORK_FILE_BASE.deps.this.uniq)
+	(cd $FILE_WORK_DIR && $RM -f $NAME)
+	
+	LANG=C $DIFF $WORK_FILE_BASE.deps.other $WORK_FILE_BASE.deps.this > $WORK_FILE_BASE.deps.diff
+	LANG=C $DIFF $WORK_FILE_BASE.deps.other.uniq $WORK_FILE_BASE.deps.this.uniq > $WORK_FILE_BASE.deps.diff.uniq
+	
+	if [ -s $WORK_FILE_BASE.deps.diff ]; then
+            if [ -s $WORK_FILE_BASE.deps.diff.uniq ]; then
+		DEP_MSG=" diff  "
+            else
+		DEP_MSG=" redun "
+            fi
+            if [[ "$ACCEPTED_DEP_DIFF" != *"$BIN_FILE"* ]]; then
+		DIFF_DEP=true
+		if [[ "$KNOWN_DEP_DIFF" != *"$BIN_FILE"* ]]; then
+                    DEP_MSG="*$DEP_MSG*"
+                    REGRESSIONS=true
+		else
+                    DEP_MSG=" $DEP_MSG "
+		fi
+            else
+		DEP_MSG="($DEP_MSG)"
+		DIFF_DEP=
+            fi
+	else
+	    DEP_MSG="         "
+	    DIFF_DEP=
+            if [[ "$KNOWN_DEP_DIFF $ACCEPTED_DEP_DIFF" = *"$BIN_FILE"* ]]; then
+                DEP_MSG="     !      "
+            fi
+	fi
+    else
+	DEP_MSG="    -    "
+    fi
+    
+    # Compare fulldump output
+    if [ -n "$FULLDUMP_CMD" ] && [ -z "$SKIP_FULLDUMP_DIFF" ]; then
+        $FULLDUMP_CMD $OTHER_FILE > $WORK_FILE_BASE.fulldump.other 2>&1
+        $FULLDUMP_CMD $THIS_FILE > $WORK_FILE_BASE.fulldump.this 2>&1
+        LANG=C $DIFF $WORK_FILE_BASE.fulldump.other $WORK_FILE_BASE.fulldump.this > $WORK_FILE_BASE.fulldump.diff
+        
+        if [ -s $WORK_FILE_BASE.fulldump.diff ]; then
+            ELF_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.fulldump.diff | awk '{print $5}')
+            ELF_MSG=$($PRINTF "%8d" $ELF_DIFF_SIZE)
+            if [[ "$ACCEPTED_ELF_DIFF" != *"$BIN_FILE"* ]]; then
+                DIFF_ELF=true
+                if [[ "$KNOWN_ELF_DIFF" != *"$BIN_FILE"* ]]; then
+                    ELF_MSG="*$ELF_MSG*"
+                    REGRESSIONS=true
+                else
+                    ELF_MSG=" $ELF_MSG "
+                fi
+            else
+                ELF_MSG="($ELF_MSG)"
+                DIFF_ELF=
+            fi
+        else
+            ELF_MSG="          "
+            DIFF_ELF=
+            if [[ "$KNOWN_DEP_DIFF $ACCEPTED_DEP_DIFF" = *"$BIN_FILE"* ]]; then
+                ELF_MSG="    !    "
+            fi
+        fi
+    fi
+
+    # Compare disassemble output
+    if [ -n "$DIS_CMD" ] && [ -z "$SKIP_DIS_DIFF" ]; then
+	if [ -z "$DIS_DIFF_FILTER" ]; then
+	    DIS_DIFF_FILTER="$CAT"
+	fi
+        $DIS_CMD $OTHER_FILE | $GREP -v $NAME | $DIS_DIFF_FILTER > $WORK_FILE_BASE.dis.other 2>&1
+        $DIS_CMD $THIS_FILE  | $GREP -v $NAME | $DIS_DIFF_FILTER > $WORK_FILE_BASE.dis.this  2>&1
+        
+        LANG=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
+        
+        if [ -s $WORK_FILE_BASE.dis.diff ]; then
+            DIS_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.dis.diff | awk '{print $5}')
+            DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE)
+            if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then
+                DIFF_DIS=true
+                if [[ "$KNOWN_DIS_DIFF" != *"$BIN_FILE"* ]]; then
+                    DIS_MSG="*$DIS_MSG*"
+                    REGRESSIONS=true
+                else
+                    DIS_MSG=" $DIS_MSG "
+                fi
+            else
+                DIS_MSG="($DIS_MSG)"
+                DIFF_DIS=
+            fi
+        else
+            DIS_MSG="          "
+            DIFF_DIS=
+            if [[ "$KNOWN_DEP_DIFF $ACCEPTED_DEP_DIFF" = *"$BIN_FILE"* ]]; then
+                DIS_MSG="    !    "
+            fi
+        fi
+    fi
+
+
+    if [ -n "$DIFF_BIN$DIFF_SIZE$DIFF_SYM$DIFF_DEP$DIFF_ELF$DIFF_DIS" ] || [ -n "$VERBOSE" ]; then
+        if [ -n "$BIN_MSG" ]; then echo -n "$BIN_MSG:"; fi
+        if [ -n "$SIZE_MSG" ]; then echo -n "$SIZE_MSG:"; fi
+        if [ -n "$SYM_MSG" ]; then echo -n "$SYM_MSG:"; fi
+        if [ -n "$DEP_MSG" ]; then echo -n "$DEP_MSG:"; fi
+        if [ -n "$ELF_MSG" ]; then echo -n "$ELF_MSG:"; fi
+        if [ -n "$DIS_MSG" ]; then echo -n "$DIS_MSG:"; fi
+        echo " $BIN_FILE"
+        if [ "$SHOW_DIFFS" = "true" ]; then
+            if [ -s "$WORK_FILE_BASE.symbols.diff" ]; then
+                echo "Symbols diff:"
+                $CAT $WORK_FILE_BASE.symbols.diff
+            fi
+            if [ -s "$WORK_FILE_BASE.deps.diff" ]; then
+                echo "Deps diff:"
+                $CAT $WORK_FILE_BASE.deps.diff
+            fi
+            if [ -s "$WORK_FILE_BASE.fulldump.diff" ]; then
+                echo "Fulldump diff:"
+                $CAT $WORK_FILE_BASE.fulldump.diff
+            fi
+            if [ -s "$WORK_FILE_BASE.dis.diff" ]; then
+                echo "Disassembly diff:"
+                $CAT $WORK_FILE_BASE.dis.diff
+            fi
+        fi
+        return 1
+    fi
+    return 0
+}
+
+##########################################################################################
+# Print binary diff header
+
+print_binary_diff_header() {
+    if [ -z "$SKIP_BIN_DIFF" ]; then echo -n " Binary :"; fi
+    if [ -z "$SKIP_SIZE_DIFF" ]; then echo -n "   Size    :"; fi
+    if [ -z "$SKIP_SYM_DIFF" ]; then echo -n " Symbols :"; fi
+    if [ -z "$SKIP_DEP_DIFF" ]; then echo -n "  Deps   :"; fi
+    if [ -z "$SKIP_FULLDUMP_DIFF" ]; then echo -n " Fulldump :"; fi
+    if [ -z "$SKIP_DIS_DIFF" ]; then echo -n " Disass   :"; fi
+    echo
+}
+
+##########################################################################################
+# Compare all libraries
+
+compare_all_libs() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+
+    LIBS=$(cd $THIS_DIR && $FIND . -type f \( -name 'lib*.so' -o -name '*.dylib' -o -name '*.dll' \) | $SORT | $FILTER)
+
+    if [ -n "$LIBS" ]; then
+        echo Libraries...
+        print_binary_diff_header
+        for l in $LIBS; do
+            if [ -f "$OTHER_DIR/$l" ]; then
+                compare_bin_file $THIS_DIR $OTHER_DIR $WORK_DIR $l
+                if [ "$?" != "0" ]; then
+                    return_value=1
+                fi
+            fi
+        done
+    fi
+
+    return $return_value
+}
+
+##########################################################################################
+# Compare all executables
+
+compare_all_execs() {
+    THIS_DIR=$1
+    OTHER_DIR=$2
+    WORK_DIR=$3
+
+    if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+        EXECS=$(cd $THIS_DIR && $FIND . -type f -name '*.exe' | $SORT | $FILTER)
+    else
+        EXECS=$(cd $THIS_DIR && $FIND . -name db -prune -o -type f -perm -100 \! \( -name '*.so' -o -name '*.dylib' -o -name '*.dll' -o -name '*.cgi' -o -name '*.jar' -o -name '*.diz' \) | $SORT | $FILTER)
+    fi
+
+    if [ -n "$EXECS" ]; then
+        echo Executables...
+        print_binary_diff_header
+        for e in $EXECS; do
+            if [ -f "$OTHER_DIR/$e" ]; then
+                compare_bin_file $THIS_DIR $OTHER_DIR $WORK_DIR $e
+                if [ "$?" != "0" ]; then
+                    return_value=1
+                fi
+            fi
+        done
+    fi
+
+    return $return_value
+}
+
+##########################################################################################
+# Initiate configuration
+
+COMPARE_ROOT=/tmp/cimages.$USER
+$MKDIR -p $COMPARE_ROOT
+if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+    if [ "$(uname -o)" = "Cygwin" ]; then
+	COMPARE_ROOT=$(cygpath -msa $COMPARE_ROOT)
+    fi
+fi
+
+THIS="$( cd "$( dirname "$0" )" && pwd )"
+echo "$THIS"
+THIS_SCRIPT="$0"
+
+if [ -z "$1" ] || [ "$1" = "-h" ] || [ "$1" = "-?" ] || [ "$1" = "/h" ] || [ "$1" = "/?" ] || [ "$1" = "-help" ] || [ "$1" = "--help" ]; then
+    echo "bash ./compare.sh [OPTIONS] [FILTER]"
+    echo ""
+    echo "-all                Compare all files in all known ways"
+    echo "-names              Compare the file names and directory structure"
+    echo "-perms              Compare the permission bits on all files and directories"
+    echo "-types              Compare the output of the file command on all files"
+    echo "-general            Compare the files not convered by the specialized comparisons"
+    echo "-zips               Compare the contents of all zip files"
+    echo "-jars               Compare the contents of all jar files"
+    echo "-libs               Compare all native libraries"
+    echo "-execs              Compare all executables"
+    echo "-v                  Verbose output, does not hide known differences"
+    echo "-vv                 More verbose output, shows diff output of all comparisons"
+    echo "-o [OTHER]          Compare with build in other directory. Will default to the old build directory"
+    echo ""
+    echo "[FILTER]            List filenames in the image to compare, works for jars, zips, libs and execs"
+    echo "Example:"
+    echo "bash ./common/bin/compareimages.sh CodePointIM.jar"
+    exit 10
+fi
+
+CMP_NAMES=false
+CMP_PERMS=false
+CMP_TYPES=false
+CMP_GENERAL=false
+CMP_ZIPS=false
+CMP_JARS=false
+CMP_LIBS=false
+CMP_EXECS=false
+
+while [ -n "$1" ]; do
+    case "$1" in
+        -v)
+            VERBOSE=true
+            ;;
+        -vv)
+            VERBOSE=true
+            SHOW_DIFFS=true
+            ;;
+        -o)
+            OTHER="$2"
+            shift
+            ;;
+        -all)
+            CMP_NAMES=true
+            if [ "$OPENJDK_TARGET_OS" != "windows" ]; then
+                CMP_PERMS=true
+            fi
+            CMP_TYPES=true
+            CMP_GENERAL=true
+            CMP_ZIPS=true
+            CMP_JARS=true
+            CMP_LIBS=true
+            CMP_EXECS=true
+            ;;
+        -names)
+            CMP_NAMES=true
+            ;;
+        -perms)
+            CMP_PERMS=true
+            ;;
+        -types)
+            CMP_TYPES=true
+            ;;
+        -general)
+            CMP_GENERAL=true
+            ;;
+        -zips)
+            CMP_ZIPS=true
+            ;;
+        -jars)
+            CMP_JARS=true
+            ;;
+        -libs)
+            CMP_LIBS=true
+            ;;
+        -execs)
+            CMP_EXECS=true
+            ;;
+        *)
+            CMP_NAMES=false
+            CMP_PERMS=false
+            CMP_TYPES=false
+            CMP_ZIPS=true
+            CMP_JARS=true
+            CMP_LIBS=true
+            CMP_EXECS=true
+            
+            if [ -z "$FILTER" ]; then
+                FILTER="$GREP"
+            fi
+            FILTER="$FILTER -e $1"
+            ;;
+    esac
+    shift
+done
+
+if [ "$CMP_NAMES" = "false" ] && [ "$CMP_TYPES" = "false" ] && [ "$CMP_PERMS" = "false" ] && [ "$CMP_GENERAL" = "false" ] && [ "$CMP_ZIPS" = "false" ] && [ "$CMP_JARS" = "false" ] && [ "$CMP_LIBS" = "false" ] && [ "$CMP_EXECS" = "false" ]; then
+    CMP_NAMES=true
+    CMP_PERMS=true
+    CMP_TYPES=true
+    CMP_GENERAL=true
+    CMP_ZIPS=true
+    CMP_JARS=true
+    CMP_LIBS=true
+    CMP_EXECS=true
+fi
+
+if [ -z "$FILTER" ]; then
+    FILTER="$CAT"
+fi
+
+if [ -z "$OTHER" ]; then
+    OTHER="$THIS/../$LEGACY_BUILD_DIR"
+    if [ -d "$OTHER" ]; then
+        OTHER="$( cd "$OTHER" && pwd )"
+    else
+        echo "Default old build directory does not exist:"
+        echo "$OTHER"
+        exit 1
+    fi
+    echo "Comparing to default old build:"
+    echo "$OTHER"
+    echo
+else
+    if [ ! -d "$OTHER" ]; then
+        echo "Other build directory does not exist:"
+        echo "$OTHER"
+        exit 1
+    fi
+    OTHER="$( cd "$OTHER" && pwd )"
+    echo "Comparing to:"
+    echo "$OTHER"
+    echo
+fi
+
+
+# Figure out the layout of the this build. Which kinds of images have been produced
+if [ -d "$THIS/deploy/j2sdk-image" ]; then
+    THIS_J2SDK="$THIS/deploy/j2sdk-image"
+    THIS_J2RE="$THIS/deploy/j2re-image"
+elif [ -d "$THIS/images/j2sdk-image" ]; then
+    THIS_J2SDK="$THIS/images/j2sdk-image"
+    THIS_J2RE="$THIS/images/j2re-image"
+fi
+if [ -d "$THIS/images/j2sdk-overlay-image" ]; then
+    THIS_J2SDK_OVERLAY="$THIS/images/j2sdk-overlay-image"
+    THIS_J2RE_OVERLAY="$THIS/images/j2re-overlay-image"
+fi
+
+if [ -d "$THIS/images/j2sdk-bundle" ]; then
+    THIS_J2SDK_BUNDLE="$THIS/images/j2sdk-bundle"
+    THIS_J2RE_BUNDLE="$THIS/images/j2re-bundle"
+fi
+
+# Figure out the layout of the other build (old or new, normal or overlay image)
+if [ -d "$OTHER/j2sdk-image" ]; then
+    if [ -f "$OTHER/j2sdk-image/LICENSE" ]; then
+        OTHER_J2SDK="$OTHER/j2sdk-image"
+        OTHER_J2RE="$OTHER/j2re-image"
+    else
+        OTHER_J2SDK_OVERLAY="$OTHER/j2sdk-image"
+        OTHER_J2RE_OVERLAY="$OTHER/j2re-image"
+    fi
+
+fi
+
+if [ -d "$OTHER/j2sdk-bundle" ]; then
+    OTHER_J2SDK_BUNDLE="$OTHER/j2sdk-bundle"
+    OTHER_J2RE_BUNDLE="$OTHER/j2re-bundle"
+elif [ -d "$OTHER/images/j2sdk-bundle" ]; then
+    OTHER_J2SDK_BUNDLE="$OTHER/images/j2sdk-bundle"
+    OTHER_J2RE_BUNDLE="$OTHER/images/j2re-bundle"
+fi
+
+if [ -z "$THIS_J2SDK" ] || [ -z "$THIS_J2RE" ]; then
+    if [ -z "$THIS_J2SDK_OVERLAY" ]; then
+        echo "Cannot locate images for this build. Are you sure you have run 'make images'?"
+        exit 1
+    fi
+fi
+
+if [ -z "$OTHER_J2SDK" ] && [ -n "$OTHER_J2SDK_OVERLAY" ] && [ -z "$THIS_J2SDK_OVERLAY" ]; then
+    echo "OTHER build only has an overlay image while this build does not. Nothing to compare!"
+    exit 1
+fi
+
+if [ -z "$THIS_J2SDK_BUNDLE" ] && [ -n "$OTHER_J2SDK_BUNDLE" ]; then
+    echo "WARNING! OTHER build has bundles built while this build does not."
+    echo "Skipping bundle compare!"
+fi
+
+##########################################################################################
+# Do the work
+
+if [ "$CMP_NAMES" = "true" ]; then
+    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
+        echo -n "J2SDK "
+        compare_dirs $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+        echo -n "J2RE  "
+        compare_dirs $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
+        
+        echo -n "J2SDK "
+        compare_files $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+        echo -n "J2RE  "
+        compare_files $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
+    fi
+    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
+        echo -n "J2SDK Overlay "
+        compare_dirs $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
+        echo -n "J2RE  Overlay "
+        compare_dirs $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
+        
+        echo -n "J2SDK Overlay "
+        compare_files $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
+        echo -n "J2RE  Overlay "
+        compare_files $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
+    fi
+    if [ -n "$THIS_J2SDK_BUNDLE" ] && [ -n "$OTHER_J2SDK_BUNDLE" ]; then
+        echo -n "J2SDK Bundle "
+        compare_dirs $THIS_J2SDK_BUNDLE $OTHER_J2SDK_BUNDLE $COMPARE_ROOT/j2sdk-bundle
+        echo -n "J2RE  Bundle "
+        compare_dirs $THIS_J2RE_BUNDLE $OTHER_J2RE_BUNDLE $COMPARE_ROOT/j2re-bundle
+        
+        echo -n "J2SDK Bundle "
+        compare_files $THIS_J2SDK_BUNDLE $OTHER_J2SDK_BUNDLE $COMPARE_ROOT/j2sdk-bundle
+        echo -n "J2RE  Bundle "
+        compare_files $THIS_J2RE_BUNDLE $OTHER_J2RE_BUNDLE $COMPARE_ROOT/j2re-bundle
+    fi
+fi
+
+if [ "$CMP_PERMS" = "true" ]; then
+    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
+        echo -n "J2SDK "
+        compare_permissions $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+        echo -n "J2RE  "
+        compare_permissions $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
+    fi
+    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
+        echo -n "J2SDK Overlay "
+        compare_permissions $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
+        echo -n "J2RE  Overlay "
+        compare_permissions $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
+    fi
+    if [ -n "$THIS_J2SDK_BUNDLE" ] && [ -n "$OTHER_J2SDK_BUNDLE" ]; then
+        echo -n "J2SDK Bundle "
+        compare_permissions $THIS_J2SDK_BUNDLE $OTHER_J2SDK_BUNDLE $COMPARE_ROOT/j2sdk-bundle
+        echo -n "J2RE  Bundle "
+        compare_permissions $THIS_J2RE_BUNDLE $OTHER_J2RE_BUNDLE $COMPARE_ROOT/j2re-bundle
+    fi
+fi
+
+if [ "$CMP_TYPES" = "true" ]; then
+    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
+        echo -n "J2SDK "
+        compare_file_types $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+        echo -n "J2RE  "
+        compare_file_types $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
+    fi
+    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
+        echo -n "J2SDK Overlay "
+        compare_file_types $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
+        echo -n "J2RE  Overlay "
+        compare_file_types $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
+    fi
+    if [ -n "$THIS_J2SDK_BUNDLE" ] && [ -n "$OTHER_J2SDK_BUNDLE" ]; then
+        echo -n "J2SDK Bundle "
+        compare_file_types $THIS_J2SDK_BUNDLE $OTHER_J2SDK_BUNDLE $COMPARE_ROOT/j2sdk-bundle
+        echo -n "J2RE  Bundle "
+        compare_file_types $THIS_J2RE_BUNDLE $OTHER_J2RE_BUNDLE $COMPARE_ROOT/j2re-bundle
+    fi
+fi
+
+if [ "$CMP_GENERAL" = "true" ]; then
+    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
+        echo -n "J2SDK "
+        compare_general_files $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+        echo -n "J2RE  "
+        compare_general_files $THIS_J2RE $OTHER_J2RE $COMPARE_ROOT/j2re
+    fi
+    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
+        echo -n "J2SDK Overlay "
+        compare_general_files $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
+        echo -n "J2RE  Overlay "
+        compare_general_files $THIS_J2RE_OVERLAY $OTHER_J2RE_OVERLAY $COMPARE_ROOT/j2re-overlay
+    fi
+    if [ -n "$THIS_J2SDK_BUNDLE" ] && [ -n "$OTHER_J2SDK_BUNDLE" ]; then
+        echo -n "J2SDK Bundle "
+        compare_general_files $THIS_J2SDK_BUNDLE $OTHER_J2SDK_BUNDLE $COMPARE_ROOT/j2sdk-bundle
+        echo -n "J2RE  Bundle "
+        compare_general_files $THIS_J2RE_BUNDLE $OTHER_J2RE_BUNDLE $COMPARE_ROOT/j2re-bundle
+    fi
+fi
+
+if [ "$CMP_ZIPS" = "true" ]; then
+    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
+        compare_all_zip_files $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+    fi
+fi
+
+if [ "$CMP_JARS" = "true" ]; then
+    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
+        compare_all_jar_files $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+    fi
+fi
+
+if [ "$CMP_LIBS" = "true" ]; then
+    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
+        compare_all_libs $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+    fi
+    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
+        echo -n "Bundle   "
+        compare_all_libs $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
+    fi
+fi
+
+if [ "$CMP_EXECS" = "true" ]; then
+    if [ -n "$THIS_J2SDK" ] && [ -n "$OTHER_J2SDK" ]; then
+        compare_all_execs $THIS_J2SDK $OTHER_J2SDK $COMPARE_ROOT/j2sdk
+    fi
+    if [ -n "$THIS_J2SDK_OVERLAY" ] && [ -n "$OTHER_J2SDK_OVERLAY" ]; then
+        echo -n "Overlay "
+        compare_all_execs $THIS_J2SDK_OVERLAY $OTHER_J2SDK_OVERLAY $COMPARE_ROOT/j2sdk-overlay
+    fi
+fi
+
+echo
+
+if [ -n "$REGRESSIONS" ]; then
+    echo "REGRESSIONS FOUND!"
+    echo
+    exit 1
+else
+    echo "No regressions found"
+    echo
+    exit 0
+fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/bin/compare_exceptions.sh.incl	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,935 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# This script is not to be run as stand-alone, it should be included from
+# compare.sh.
+
+##########################################################################################
+# Check that we are run via inclusion from compare.sh and not as stand-alone.
+if [ -z "$COMPARE_EXCEPTIONS_INCLUDE" ]; then
+    echo "Error: This script should not be run as stand-alone. It is included by compare.sh"
+    exit 1
+fi
+
+##########################################################################################
+# Diff exceptions
+
+if [ "$OPENJDK_TARGET_OS" = "linux" ] && [ "$OPENJDK_TARGET_CPU" = "x86" ]; then
+
+STRIP_BEFORE_COMPARE="
+./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/libgctest.so
+./demo/jvmti/heapTracker/lib/libheapTracker.so
+./demo/jvmti/heapViewer/lib/libheapViewer.so
+./demo/jvmti/hprof/lib/libhprof.so
+./demo/jvmti/minst/lib/libminst.so
+./demo/jvmti/mtrace/lib/libmtrace.so
+./demo/jvmti/versionCheck/lib/libversionCheck.so
+./demo/jvmti/waiters/lib/libwaiters.so
+"
+
+ACCEPTED_BIN_DIFF="
+./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/libgctest.so
+./demo/jvmti/heapTracker/lib/libheapTracker.so
+./demo/jvmti/heapViewer/lib/libheapViewer.so
+./demo/jvmti/hprof/lib/libhprof.so
+./demo/jvmti/minst/lib/libminst.so
+./demo/jvmti/mtrace/lib/libmtrace.so
+./demo/jvmti/versionCheck/lib/libversionCheck.so
+./demo/jvmti/waiters/lib/libwaiters.so
+./jre/lib/i386/client/libjvm.so
+./jre/lib/i386/libattach.so
+./jre/lib/i386/libdt_socket.so
+./jre/lib/i386/libhprof.so
+./jre/lib/i386/libinstrument.so
+./jre/lib/i386/libjava_crw_demo.so
+./jre/lib/i386/libjsdt.so
+./jre/lib/i386/libmanagement.so
+./jre/lib/i386/libnpt.so
+./jre/lib/i386/libverify.so
+./jre/lib/i386/server/libjvm.so
+./bin/appletviewer
+./bin/extcheck
+./bin/idlj
+./bin/jar
+./bin/jarsigner
+./bin/java
+./bin/javac
+./bin/javadoc
+./bin/javah
+./bin/javap
+./bin/jcmd
+./bin/jconsole
+./bin/jdb
+./bin/jhat
+./bin/jinfo
+./bin/jmap
+./bin/jps
+./bin/jrunscript
+./bin/jsadebugd
+./bin/jstack
+./bin/jstat
+./bin/jstatd
+./bin/keytool
+./bin/native2ascii
+./bin/orbd
+./bin/pack200
+./bin/policytool
+./bin/rmic
+./bin/rmid
+./bin/rmiregistry
+./bin/schemagen
+./bin/serialver
+./bin/servertool
+./bin/tnameserv
+./bin/wsgen
+./bin/wsimport
+./bin/xjc
+./jre/bin/java
+./jre/bin/keytool
+./jre/bin/orbd
+./jre/bin/pack200
+./jre/bin/policytool
+./jre/bin/rmid
+./jre/bin/rmiregistry
+./jre/bin/servertool
+./jre/bin/tnameserv
+"
+
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "linux" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
+
+STRIP_BEFORE_COMPARE="
+./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/libgctest.so
+./demo/jvmti/heapTracker/lib/libheapTracker.so
+./demo/jvmti/heapViewer/lib/libheapViewer.so
+./demo/jvmti/hprof/lib/libhprof.so
+./demo/jvmti/minst/lib/libminst.so
+./demo/jvmti/mtrace/lib/libmtrace.so
+./demo/jvmti/versionCheck/lib/libversionCheck.so
+./demo/jvmti/waiters/lib/libwaiters.so
+"
+
+ACCEPTED_BIN_DIFF="
+./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/libgctest.so
+./demo/jvmti/heapTracker/lib/libheapTracker.so
+./demo/jvmti/heapViewer/lib/libheapViewer.so
+./demo/jvmti/hprof/lib/libhprof.so
+./demo/jvmti/minst/lib/libminst.so
+./demo/jvmti/mtrace/lib/libmtrace.so
+./demo/jvmti/versionCheck/lib/libversionCheck.so
+./demo/jvmti/waiters/lib/libwaiters.so
+./jre/lib/amd64/libattach.so
+./jre/lib/amd64/libdt_socket.so
+./jre/lib/amd64/libhprof.so
+./jre/lib/amd64/libinstrument.so
+./jre/lib/amd64/libjava_crw_demo.so
+./jre/lib/amd64/libjsdt.so
+./jre/lib/amd64/libjsig.so
+./jre/lib/amd64/libmanagement.so
+./jre/lib/amd64/libnpt.so
+./jre/lib/amd64/libsaproc.so
+./jre/lib/amd64/libverify.so
+./jre/lib/amd64/server/libjsig.so
+./jre/lib/amd64/server/libjvm.so
+./bin/appletviewer
+./bin/extcheck
+./bin/idlj
+./bin/jar
+./bin/jarsigner
+./bin/java
+./bin/javac
+./bin/javadoc
+./bin/javah
+./bin/javap
+./bin/jcmd
+./bin/jconsole
+./bin/jdb
+./bin/jhat
+./bin/jinfo
+./bin/jmap
+./bin/jps
+./bin/jrunscript
+./bin/jsadebugd
+./bin/jstack
+./bin/jstat
+./bin/jstatd
+./bin/keytool
+./bin/native2ascii
+./bin/orbd
+./bin/pack200
+./bin/policytool
+./bin/rmic
+./bin/rmid
+./bin/rmiregistry
+./bin/schemagen
+./bin/serialver
+./bin/servertool
+./bin/tnameserv
+./bin/wsgen
+./bin/wsimport
+./bin/xjc
+./jre/bin/java
+./jre/bin/keytool
+./jre/bin/orbd
+./jre/bin/pack200
+./jre/bin/policytool
+./jre/bin/rmid
+./jre/bin/rmiregistry
+./jre/bin/servertool
+./jre/bin/tnameserv
+"
+
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "x86" ]; then
+
+STRIP_BEFORE_COMPARE="
+./demo/jni/Poller/lib/libPoller.so
+./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/libgctest.so
+./demo/jvmti/heapTracker/lib/libheapTracker.so
+./demo/jvmti/heapViewer/lib/libheapViewer.so
+./demo/jvmti/hprof/lib/libhprof.so
+./demo/jvmti/minst/lib/libminst.so
+./demo/jvmti/mtrace/lib/libmtrace.so
+./demo/jvmti/versionCheck/lib/libversionCheck.so
+./demo/jvmti/waiters/lib/libwaiters.so
+./jre/lib/i386/jexec
+"
+
+SORT_SYMBOLS="
+./jre/lib/i386/client/libjvm.so
+./jre/lib/i386/libsaproc.so
+./jre/lib/i386/server/libjvm.so
+"
+
+SKIP_BIN_DIFF="true"
+
+ACCEPTED_SMALL_SIZE_DIFF="
+./demo/jni/Poller/lib/libPoller.so
+./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/libgctest.so
+./demo/jvmti/heapTracker/lib/libheapTracker.so
+./demo/jvmti/heapViewer/lib/libheapViewer.so
+./demo/jvmti/hprof/lib/libhprof.so
+./demo/jvmti/minst/lib/libminst.so
+./demo/jvmti/mtrace/lib/libmtrace.so
+./demo/jvmti/versionCheck/lib/libversionCheck.so
+./demo/jvmti/waiters/lib/libwaiters.so
+./jre/lib/i386/client/libjvm.so
+./jre/lib/i386/jli/libjli.so
+./jre/lib/i386/libJdbcOdbc.so
+./jre/lib/i386/libattach.so
+./jre/lib/i386/libawt.so
+./jre/lib/i386/libawt_headless.so
+./jre/lib/i386/libawt_xawt.so
+./jre/lib/i386/libdcpr.so
+./jre/lib/i386/libdt_socket.so
+./jre/lib/i386/libfontmanager.so
+./jre/lib/i386/libhprof.so
+./jre/lib/i386/libinstrument.so
+./jre/lib/i386/libj2gss.so
+./jre/lib/i386/libj2pcsc.so
+./jre/lib/i386/libj2pkcs11.so
+./jre/lib/i386/libj2ucrypto.so
+./jre/lib/i386/libjaas_unix.so
+./jre/lib/i386/libjava.so
+./jre/lib/i386/libjava_crw_demo.so
+./jre/lib/i386/libjawt.so
+./jre/lib/i386/libjdwp.so
+./jre/lib/i386/libjfr.so
+./jre/lib/i386/libjpeg.so
+./jre/lib/i386/libjsdt.so
+./jre/lib/i386/libjsound.so
+./jre/lib/i386/libkcms.so
+./jre/lib/i386/liblcms.so
+./jre/lib/i386/libmanagement.so
+./jre/lib/i386/libmlib_image.so
+./jre/lib/i386/libnet.so
+./jre/lib/i386/libnio.so
+./jre/lib/i386/libnpt.so
+./jre/lib/i386/libsctp.so
+./jre/lib/i386/libsplashscreen.so
+./jre/lib/i386/libsunec.so
+./jre/lib/i386/libsunwjdga.so
+./jre/lib/i386/libt2k.so
+./jre/lib/i386/libunpack.so
+./jre/lib/i386/libverify.so
+./jre/lib/i386/libzip.so
+./jre/lib/i386/server/libjvm.so
+./bin/appletviewer
+./bin/extcheck
+./bin/idlj
+./bin/jar
+./bin/jarsigner
+./bin/java
+./bin/javac
+./bin/javadoc
+./bin/javah
+./bin/javap
+./bin/jcmd
+./bin/jconsole
+./bin/jdb
+./bin/jhat
+./bin/jinfo
+./bin/jmap
+./bin/jps
+./bin/jrunscript
+./bin/jsadebugd
+./bin/jstack
+./bin/jstat
+./bin/jstatd
+./bin/keytool
+./bin/native2ascii
+./bin/orbd
+./bin/pack200
+./bin/policytool
+./bin/rmic
+./bin/rmid
+./bin/rmiregistry
+./bin/schemagen
+./bin/serialver
+./bin/servertool
+./bin/tnameserv
+./bin/unpack200
+./bin/wsgen
+./bin/wsimport
+./bin/xjc
+./jre/bin/java
+./jre/bin/keytool
+./jre/bin/orbd
+./jre/bin/pack200
+./jre/bin/policytool
+./jre/bin/rmid
+./jre/bin/rmiregistry
+./jre/bin/servertool
+./jre/bin/tnameserv
+./jre/bin/unpack200
+./jre/lib/i386/jexec
+"
+
+SKIP_FULLDUMP_DIFF="true"
+
+# Filter random C++ symbol strings.
+DIS_DIFF_FILTER="$SED -e s/\.[a-zA-Z0-9_\$]\{15,15\}/<SYM>/g"
+
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
+
+STRIP_BEFORE_COMPARE="
+./demo/jni/Poller/lib/amd64/libPoller.so
+./demo/jvmti/compiledMethodLoad/lib/amd64/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/amd64/libgctest.so
+./demo/jvmti/heapTracker/lib/amd64/libheapTracker.so
+./demo/jvmti/heapViewer/lib/amd64/libheapViewer.so
+./demo/jvmti/hprof/lib/amd64/libhprof.so
+./demo/jvmti/minst/lib/amd64/libminst.so
+./demo/jvmti/mtrace/lib/amd64/libmtrace.so
+./demo/jvmti/versionCheck/lib/amd64/libversionCheck.so
+./demo/jvmti/waiters/lib/amd64/libwaiters.so
+"
+
+SORT_SYMBOLS="
+./jre/lib/amd64/server/libjvm.so
+./jre/lib/amd64/libsaproc.so
+"
+
+SKIP_BIN_DIFF="true"
+
+ACCEPTED_SMALL_SIZE_DIFF="
+./demo/jni/Poller/lib/amd64/libPoller.so
+./demo/jvmti/compiledMethodLoad/lib/amd64/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/amd64/libgctest.so
+./demo/jvmti/heapTracker/lib/amd64/libheapTracker.so
+./demo/jvmti/heapViewer/lib/amd64/libheapViewer.so
+./demo/jvmti/hprof/lib/amd64/libhprof.so
+./demo/jvmti/minst/lib/amd64/libminst.so
+./demo/jvmti/mtrace/lib/amd64/libmtrace.so
+./demo/jvmti/versionCheck/lib/amd64/libversionCheck.so
+./demo/jvmti/waiters/lib/amd64/libwaiters.so
+./jre/lib/amd64/jli/libjli.so
+./jre/lib/amd64/libJdbcOdbc.so
+./jre/lib/amd64/libattach.so
+./jre/lib/amd64/libawt.so
+./jre/lib/amd64/libawt_headless.so
+./jre/lib/amd64/libawt_xawt.so
+./jre/lib/amd64/libdcpr.so
+./jre/lib/amd64/libdt_socket.so
+./jre/lib/amd64/libfontmanager.so
+./jre/lib/amd64/libhprof.so
+./jre/lib/amd64/libinstrument.so
+./jre/lib/amd64/libj2gss.so
+./jre/lib/amd64/libj2pcsc.so
+./jre/lib/amd64/libj2pkcs11.so
+./jre/lib/amd64/libj2ucrypto.so
+./jre/lib/amd64/libjaas_unix.so
+./jre/lib/amd64/libjava.so
+./jre/lib/amd64/libjava_crw_demo.so
+./jre/lib/amd64/libjawt.so
+./jre/lib/amd64/libjdwp.so
+./jre/lib/amd64/libjfr.so
+./jre/lib/amd64/libjpeg.so
+./jre/lib/amd64/libjsdt.so
+./jre/lib/amd64/libjsound.so
+./jre/lib/amd64/libkcms.so
+./jre/lib/amd64/liblcms.so
+./jre/lib/amd64/libmanagement.so
+./jre/lib/amd64/libmlib_image.so
+./jre/lib/amd64/libnet.so
+./jre/lib/amd64/libnio.so
+./jre/lib/amd64/libnpt.so
+./jre/lib/amd64/libsctp.so
+./jre/lib/amd64/libsplashscreen.so
+./jre/lib/amd64/libsunec.so
+./jre/lib/amd64/libsunwjdga.so
+./jre/lib/amd64/libt2k.so
+./jre/lib/amd64/libunpack.so
+./jre/lib/amd64/libverify.so
+./jre/lib/amd64/libzip.so
+./jre/lib/amd64/server/64/libjvm_db.so
+./jre/lib/amd64/server/64/libjvm_dtrace.so
+./bin/amd64/appletviewer
+./bin/amd64/extcheck
+./bin/amd64/idlj
+./bin/amd64/jar
+./bin/amd64/jarsigner
+./bin/amd64/java
+./bin/amd64/javac
+./bin/amd64/javadoc
+./bin/amd64/javah
+./bin/amd64/javap
+./bin/amd64/jcmd
+./bin/amd64/jconsole
+./bin/amd64/jdb
+./bin/amd64/jhat
+./bin/amd64/jinfo
+./bin/amd64/jmap
+./bin/amd64/jps
+./bin/amd64/jrunscript
+./bin/amd64/jsadebugd
+./bin/amd64/jstack
+./bin/amd64/jstat
+./bin/amd64/jstatd
+./bin/amd64/keytool
+./bin/amd64/native2ascii
+./bin/amd64/orbd
+./bin/amd64/pack200
+./bin/amd64/policytool
+./bin/amd64/rmic
+./bin/amd64/rmid
+./bin/amd64/rmiregistry
+./bin/amd64/schemagen
+./bin/amd64/serialver
+./bin/amd64/servertool
+./bin/amd64/tnameserv
+./bin/amd64/unpack200
+./bin/amd64/wsgen
+./bin/amd64/wsimport
+./bin/amd64/xjc
+./jre/bin/amd64/java
+./jre/bin/amd64/keytool
+./jre/bin/amd64/orbd
+./jre/bin/amd64/pack200
+./jre/bin/amd64/policytool
+./jre/bin/amd64/rmid
+./jre/bin/amd64/rmiregistry
+./jre/bin/amd64/servertool
+./jre/bin/amd64/tnameserv
+./jre/bin/amd64/unpack200
+./jre/lib/amd64/jexec
+"
+
+SKIP_FULLDUMP_DIFF="true"
+
+# Filter random C++ symbol strings.
+DIS_DIFF_FILTER="$SED -e s/\.[a-zA-Z0-9_\$]\{15,15\}/<SYM>/g"
+
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "sparc" ]; then
+
+STRIP_BEFORE_COMPARE="
+./demo/jni/Poller/lib/libPoller.so
+./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/libgctest.so
+./demo/jvmti/heapTracker/lib/libheapTracker.so
+./demo/jvmti/heapViewer/lib/libheapViewer.so
+./demo/jvmti/hprof/lib/libhprof.so
+./demo/jvmti/minst/lib/libminst.so
+./demo/jvmti/mtrace/lib/libmtrace.so
+./demo/jvmti/versionCheck/lib/libversionCheck.so
+./demo/jvmti/waiters/lib/libwaiters.so
+./jre/lib/sparc/jexec
+"
+
+SORT_SYMBOLS="
+./demo/jvmti/waiters/lib/libwaiters.so
+./jre/lib/sparc/client/64/libjvm_db.so
+./jre/lib/sparc/client/64/libjvm_dtrace.so
+./jre/lib/sparc/client/libjsig.so
+./jre/lib/sparc/client/libjvm.so
+./jre/lib/sparc/client/libjvm_db.so
+./jre/lib/sparc/client/libjvm_dtrace.so
+./jre/lib/sparc/libjsig.so
+./jre/lib/sparc/libsaproc.so
+./jre/lib/sparc/server/64/libjvm_db.so
+./jre/lib/sparc/server/64/libjvm_dtrace.so
+./jre/lib/sparc/server/libjsig.so
+./jre/lib/sparc/server/libjvm.so
+./jre/lib/sparc/server/libjvm_db.so
+./jre/lib/sparc/server/libjvm_dtrace.so
+"
+
+SKIP_BIN_DIFF="true"
+
+ACCEPTED_SMALL_SIZE_DIFF="
+./demo/jni/Poller/lib/libPoller.so
+./demo/jvmti/compiledMethodLoad/lib/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/libgctest.so
+./demo/jvmti/heapTracker/lib/libheapTracker.so
+./demo/jvmti/heapViewer/lib/libheapViewer.so
+./demo/jvmti/hprof/lib/libhprof.so
+./demo/jvmti/minst/lib/libminst.so
+./demo/jvmti/mtrace/lib/libmtrace.so
+./demo/jvmti/versionCheck/lib/libversionCheck.so
+./demo/jvmti/waiters/lib/libwaiters.so
+./jre/lib/sparc/client/libjvm.so
+./jre/lib/sparc/jli/libjli.so
+./jre/lib/sparc/libJdbcOdbc.so
+./jre/lib/sparc/libattach.so
+./jre/lib/sparc/libawt.so
+./jre/lib/sparc/libawt_headless.so
+./jre/lib/sparc/libawt_xawt.so
+./jre/lib/sparc/libdcpr.so
+./jre/lib/sparc/libdt_socket.so
+./jre/lib/sparc/libfontmanager.so
+./jre/lib/sparc/libhprof.so
+./jre/lib/sparc/libinstrument.so
+./jre/lib/sparc/libj2gss.so
+./jre/lib/sparc/libj2pcsc.so
+./jre/lib/sparc/libj2pkcs11.so
+./jre/lib/sparc/libj2ucrypto.so
+./jre/lib/sparc/libjaas_unix.so
+./jre/lib/sparc/libjava.so
+./jre/lib/sparc/libjava_crw_demo.so
+./jre/lib/sparc/libjawt.so
+./jre/lib/sparc/libjdwp.so
+./jre/lib/sparc/libjfr.so
+./jre/lib/sparc/libjpeg.so
+./jre/lib/sparc/libjsdt.so
+./jre/lib/sparc/libjsound.so
+./jre/lib/sparc/libkcms.so
+./jre/lib/sparc/liblcms.so
+./jre/lib/sparc/libmanagement.so
+./jre/lib/sparc/libmlib_image.so
+./jre/lib/sparc/libmlib_image_v.so
+./jre/lib/sparc/libnet.so
+./jre/lib/sparc/libnio.so
+./jre/lib/sparc/libnpt.so
+./jre/lib/sparc/libsctp.so
+./jre/lib/sparc/libsplashscreen.so
+./jre/lib/sparc/libsunec.so
+./jre/lib/sparc/libsunwjdga.so
+./jre/lib/sparc/libt2k.so
+./jre/lib/sparc/libunpack.so
+./jre/lib/sparc/libverify.so
+./jre/lib/sparc/libzip.so
+./jre/lib/sparc/server/libjvm.so
+./bin/appletviewer
+./bin/extcheck
+./bin/idlj
+./bin/jar
+./bin/jarsigner
+./bin/java
+./bin/javac
+./bin/javadoc
+./bin/javah
+./bin/javap
+./bin/jcmd
+./bin/jconsole
+./bin/jdb
+./bin/jhat
+./bin/jinfo
+./bin/jmap
+./bin/jps
+./bin/jrunscript
+./bin/jsadebugd
+./bin/jstack
+./bin/jstat
+./bin/jstatd
+./bin/keytool
+./bin/native2ascii
+./bin/orbd
+./bin/pack200
+./bin/policytool
+./bin/rmic
+./bin/rmid
+./bin/rmiregistry
+./bin/schemagen
+./bin/serialver
+./bin/servertool
+./bin/tnameserv
+./bin/unpack200
+./bin/wsgen
+./bin/wsimport
+./bin/xjc
+./jre/bin/java
+./jre/bin/keytool
+./jre/bin/orbd
+./jre/bin/pack200
+./jre/bin/policytool
+./jre/bin/rmid
+./jre/bin/rmiregistry
+./jre/bin/servertool
+./jre/bin/tnameserv
+./jre/bin/unpack200
+./jre/lib/sparc/jexec
+"
+
+# Filter random C++ symbol strings.
+# Some numbers differ randomly.
+DIS_DIFF_FILTER="$SED -e s/\$[a-zA-Z0-9_\$]\{15,15\}/<SYM>/g -e s/\([0-9a-f][0-9a-f].[0-9a-f][0-9a-f].[0-9a-f][0-9a-f].\)[0-9a-f][0-9a-f]/\1<NUM>/g -e s/\(%g1,.0x\)[0-9a-f]*\(,.%g1\)/\1<HEX>\2/g -e s/\(!.\)[0-9a-f]*\(.<SUNWprivate_1.1+0x\)[0-9a-f]*/\1<NUM>\2<HEX>/g"
+
+# Some xor instructions end up with different args in the lib but not in the object files.
+ACCEPTED_DIS_DIFF="
+./demo/jvmti/waiters/lib/libwaiters.so
+"
+
+SKIP_FULLDUMP_DIFF="true"
+
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "sparcv9" ]; then
+
+STRIP_BEFORE_COMPARE="
+./demo/jni/Poller/lib/sparcv9/libPoller.so
+./demo/jvmti/compiledMethodLoad/lib/sparcv9/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/sparcv9/libgctest.so
+./demo/jvmti/heapTracker/lib/sparcv9/libheapTracker.so
+./demo/jvmti/heapViewer/lib/sparcv9/libheapViewer.so
+./demo/jvmti/hprof/lib/sparcv9/libhprof.so
+./demo/jvmti/minst/lib/sparcv9/libminst.so
+./demo/jvmti/mtrace/lib/sparcv9/libmtrace.so
+./demo/jvmti/versionCheck/lib/sparcv9/libversionCheck.so
+./demo/jvmti/waiters/lib/sparcv9/libwaiters.so
+"
+
+SORT_SYMBOLS="
+./demo/jvmti/waiters/lib/sparcv9/libwaiters.so
+./jre/lib/sparcv9/libjsig.so
+./jre/lib/sparcv9/libsaproc.so
+./jre/lib/sparcv9/server/libjvm.so
+./jre/lib/sparcv9/server/libjvm_dtrace.so
+"
+
+SKIP_BIN_DIFF="true"
+
+ACCEPTED_SMALL_SIZE_DIFF="
+./demo/jni/Poller/lib/sparcv9/libPoller.so
+./demo/jvmti/compiledMethodLoad/lib/sparcv9/libcompiledMethodLoad.so
+./demo/jvmti/gctest/lib/sparcv9/libgctest.so
+./demo/jvmti/heapTracker/lib/sparcv9/libheapTracker.so
+./demo/jvmti/heapViewer/lib/sparcv9/libheapViewer.so
+./demo/jvmti/hprof/lib/sparcv9/libhprof.so
+./demo/jvmti/minst/lib/sparcv9/libminst.so
+./demo/jvmti/mtrace/lib/sparcv9/libmtrace.so
+./demo/jvmti/versionCheck/lib/sparcv9/libversionCheck.so
+./demo/jvmti/waiters/lib/sparcv9/libwaiters.so
+./jre/lib/sparcv9/client/libjvm.so
+./jre/lib/sparcv9/jli/libjli.so
+./jre/lib/sparcv9/libJdbcOdbc.so
+./jre/lib/sparcv9/libattach.so
+./jre/lib/sparcv9/libawt.so
+./jre/lib/sparcv9/libawt_headless.so
+./jre/lib/sparcv9/libawt_xawt.so
+./jre/lib/sparcv9/libdcpr.so
+./jre/lib/sparcv9/libdt_socket.so
+./jre/lib/sparcv9/libfontmanager.so
+./jre/lib/sparcv9/libhprof.so
+./jre/lib/sparcv9/libinstrument.so
+./jre/lib/sparcv9/libj2gss.so
+./jre/lib/sparcv9/libj2pcsc.so
+./jre/lib/sparcv9/libj2pkcs11.so
+./jre/lib/sparcv9/libj2ucrypto.so
+./jre/lib/sparcv9/libjaas_unix.so
+./jre/lib/sparcv9/libjava.so
+./jre/lib/sparcv9/libjava_crw_demo.so
+./jre/lib/sparcv9/libjawt.so
+./jre/lib/sparcv9/libjdwp.so
+./jre/lib/sparcv9/libjfr.so
+./jre/lib/sparcv9/libjpeg.so
+./jre/lib/sparcv9/libjsdt.so
+./jre/lib/sparcv9/libjsound.so
+./jre/lib/sparcv9/libkcms.so
+./jre/lib/sparcv9/liblcms.so
+./jre/lib/sparcv9/libmanagement.so
+./jre/lib/sparcv9/libmlib_image.so
+./jre/lib/sparcv9/libmlib_image_v.so
+./jre/lib/sparcv9/libnet.so
+./jre/lib/sparcv9/libnio.so
+./jre/lib/sparcv9/libnpt.so
+./jre/lib/sparcv9/libsctp.so
+./jre/lib/sparcv9/libsplashscreen.so
+./jre/lib/sparcv9/libsunec.so
+./jre/lib/sparcv9/libsunwjdga.so
+./jre/lib/sparcv9/libt2k.so
+./jre/lib/sparcv9/libunpack.so
+./jre/lib/sparcv9/libverify.so
+./jre/lib/sparcv9/libzip.so
+./jre/lib/sparcv9/server/libjvm.so
+./bin/sparcv9/appletviewer
+./bin/sparcv9/extcheck
+./bin/sparcv9/idlj
+./bin/sparcv9/jar
+./bin/sparcv9/jarsigner
+./bin/sparcv9/java
+./bin/sparcv9/javac
+./bin/sparcv9/javadoc
+./bin/sparcv9/javah
+./bin/sparcv9/javap
+./bin/sparcv9/jcmd
+./bin/sparcv9/jconsole
+./bin/sparcv9/jdb
+./bin/sparcv9/jhat
+./bin/sparcv9/jinfo
+./bin/sparcv9/jmap
+./bin/sparcv9/jps
+./bin/sparcv9/jrunscript
+./bin/sparcv9/jsadebugd
+./bin/sparcv9/jstack
+./bin/sparcv9/jstat
+./bin/sparcv9/jstatd
+./bin/sparcv9/keytool
+./bin/sparcv9/native2ascii
+./bin/sparcv9/orbd
+./bin/sparcv9/pack200
+./bin/sparcv9/policytool
+./bin/sparcv9/rmic
+./bin/sparcv9/rmid
+./bin/sparcv9/rmiregistry
+./bin/sparcv9/schemagen
+./bin/sparcv9/serialver
+./bin/sparcv9/servertool
+./bin/sparcv9/tnameserv
+./bin/sparcv9/unpack200
+./bin/sparcv9/wsgen
+./bin/sparcv9/wsimport
+./bin/sparcv9/xjc
+./jre/bin/sparcv9/java
+./jre/bin/sparcv9/keytool
+./jre/bin/sparcv9/orbd
+./jre/bin/sparcv9/pack200
+./jre/bin/sparcv9/policytool
+./jre/bin/sparcv9/rmid
+./jre/bin/sparcv9/rmiregistry
+./jre/bin/sparcv9/servertool
+./jre/bin/sparcv9/tnameserv
+./jre/bin/sparcv9/unpack200
+"
+
+# Filter random C++ symbol strings.
+# Some numbers differ randomly.
+DIS_DIFF_FILTER="$SED -e s/\$[a-zA-Z0-9_\$]\{15,15\}/<SYM>/g -e s/[0-9a-f][0-9a-f].[0-9a-f][0-9a-f].[0-9a-f][0-9a-f].[0-9a-f][0-9a-f]/<NUMS>/g -e s/\(%g1,.0x\)[0-9a-f]*\(,.%g1\)/\1<HEX>\2/g -e s/\(!.\)[0-9a-f]*\(.<SUNWprivate_1.1+0x\)[0-9a-f]*/\1<NUM>\2<HEX>/g"
+
+# Some xor instructions end up with different args in the lib but not in the object files.
+ACCEPTED_DIS_DIFF="
+./demo/jvmti/waiters/lib/sparcv9/libwaiters.so
+"
+
+SKIP_FULLDUMP_DIFF="true"
+
+fi
+
+
+if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+
+# Probably should add all libs here
+ACCEPTED_SMALL_SIZE_DIFF="
+./demo/jvmti/gctest/lib/gctest.dll
+./demo/jvmti/heapTracker/lib/heapTracker.dll
+./demo/jvmti/minst/lib/minst.dll
+./jre/bin/attach.dll
+./jre/bin/java_crw_demo.dll
+./jre/bin/jsoundds.dll
+./bin/appletviewer.exe
+./bin/extcheck.exe
+./bin/idlj.exe
+./bin/jar.exe
+./bin/jarsigner.exe
+./bin/java-rmi.exe
+./bin/java.exe
+./bin/javac.exe
+./bin/javadoc.exe
+./bin/javah.exe
+./bin/javap.exe
+./bin/javaw.exe
+./bin/jcmd.exe
+./bin/jconsole.exe
+./bin/jdb.exe
+./bin/jhat.exe
+./bin/jinfo.exe
+./bin/jmap.exe
+./bin/jps.exe
+./bin/jrunscript.exe
+./bin/jsadebugd.exe
+./bin/jstack.exe
+./bin/jstat.exe
+./bin/jstatd.exe
+./bin/keytool.exe
+./bin/kinit.exe
+./bin/klist.exe
+./bin/ktab.exe
+./bin/native2ascii.exe
+./bin/orbd.exe
+./bin/pack200.exe
+./bin/policytool.exe
+./bin/rmic.exe
+./bin/rmid.exe
+./bin/rmiregistry.exe
+./bin/schemagen.exe
+./bin/serialver.exe
+./bin/servertool.exe
+./bin/tnameserv.exe
+./bin/unpack200.exe
+./bin/wsgen.exe
+./bin/wsimport.exe
+./bin/xjc.exe
+./jre/bin/java-rmi.exe
+./jre/bin/java.exe
+./jre/bin/javaw.exe
+./jre/bin/keytool.exe
+./jre/bin/kinit.exe
+./jre/bin/klist.exe
+./jre/bin/ktab.exe
+./jre/bin/orbd.exe
+./jre/bin/pack200.exe
+./jre/bin/policytool.exe
+./jre/bin/rmid.exe
+./jre/bin/rmiregistry.exe
+./jre/bin/servertool.exe
+./jre/bin/tnameserv.exe
+./jre/bin/unpack200.exe
+"
+
+# On windows, there are unavoidable allignment issues making
+# a perfect disasm diff impossible. Filter out the following:
+# * Random parts of C++ symbols (this is a bit greedy, but does the trick)
+#   @XXXXX
+# * Hexadecimal addresses that are sometimes alligned differently.
+# * Dates in version strings XXXX_XX_XX.
+DIS_DIFF_FILTER="$SED -e s/[@?][A-Z0-9_]\{1,25\}/<SYM>/g -e s/^.\{2,2\}[0-9A-F]\{16,16\}.\{2,2\}//g -e s/[0-9A-F]\{4,16\}h/<HEXSTR>/g -e s/_[0-9]\{4,4\}_[0-9][0-9]_[0-9][0-9]/<DATE>/g"
+
+SKIP_BIN_DIFF="true"
+SKIP_FULLDUMP_DIFF="true"
+
+fi
+
+
+if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
+ACCEPTED_JARZIP_CONTENTS="
+/META-INF/INDEX.LIST
+"
+
+KNOWN_BIN_DIFF="
+./jre/lib/libJObjC.dylib
+"
+
+ACCEPTED_BIN_DIFF="
+./bin/appletviewer
+./bin/extcheck
+./bin/idlj
+./bin/jar
+./bin/jarsigner
+./bin/java
+./bin/javac
+./bin/javadoc
+./bin/javah
+./bin/javap
+./bin/jcmd
+./bin/jconsole
+./bin/jdb
+./bin/jhat
+./bin/jinfo
+./bin/jmap
+./bin/jps
+./bin/jrunscript
+./bin/jsadebugd
+./bin/jstack
+./bin/jstat
+./bin/jstatd
+./bin/keytool
+./bin/native2ascii
+./bin/orbd
+./bin/pack200
+./bin/policytool
+./bin/rmic
+./bin/rmid
+./bin/rmiregistry
+./bin/schemagen
+./bin/serialver
+./bin/servertool
+./bin/tnameserv
+./bin/wsgen
+./bin/wsimport
+./bin/xjc
+./jre/bin/java
+./jre/bin/keytool
+./jre/bin/orbd
+./jre/bin/pack200
+./jre/bin/policytool
+./jre/bin/rmid
+./jre/bin/rmiregistry
+./jre/bin/servertool
+./jre/bin/tnameserv
+./jre/lib/libsaproc.dylib
+./jre/lib/server/libjvm.dylib
+"
+
+KNOWN_SIZE_DIFF="
+./jre/lib/libJObjC.dylib
+"
+
+SORT_SYMBOLS="
+./jre/lib/libJObjC.dylib
+"
+
+KNOWN_SYM_DIFF="
+./jre/lib/libJObjC.dylib
+"
+
+KNOWN_ELF_DIFF="
+./jre/lib/libJObjC.dylib
+"
+
+KNOWN_DIS_DIFF="
+./jre/lib/libJObjC.dylib
+"
+
+fi
--- a/common/bin/compareimage.sh	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,335 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# MANUAL
-#
-# ./common/bin/compareimages.sh old_jdk_image new_jdk_image
-#
-# Compare the directory structure.
-# Compare the filenames in the directories.
-# Compare the contents of the zip archives
-# Compare the contents of the jar archives
-# Compare the native libraries
-# Compare the native executables
-# Compare the remaining files
-#
-# ./common/bin/compareimages.sh old_jdk_image new_jdk_image [zips jars libs execs other]
-#
-# Compare only the selected subset of the images.
-#
-# ./common/bin/compareimages.sh old_jdk_image new_jdk_image CodePointIM.jar
-#
-# Compare only the CodePointIM.jar file
-# Can be used to compare zips, libraries and executables.
-#
-
-if [ "x$1" = "x-h" ] || [ "x$1" = "x--help" ] || [ "x$1" == "x" ]; then
-    echo "bash ./common/bin/compareimages.sh old_jdk_image new_jdk_image"
-    echo ""
-    echo "Compare the directory structure."
-    echo "Compare the filenames in the directories."
-    echo "Compare the contents of the zip archives"
-    echo "Compare the contents of the jar archives"
-    echo "Compare the native libraries"
-    echo "Compare the native executables"
-    echo "Compare the remaining files"
-    echo ""
-    echo "bash ./common/bin/compareimages.sh old_jdk_image new_jdk_image [zips jars libs execs other]"
-    echo ""
-    echo "Compare only the selected subset of the images."
-    echo ""
-    echo "bash ./common/bin/compareimages.sh old_jdk_image new_jdk_image CodePointIM.jar"
-    echo ""
-    echo "Compare only the CodePointIM.jar file"
-    echo "Can be used to compare zips, libraries and executables."
-    exit 10
-fi
-
-OLD="$1"
-NEW="$2"
-CMD="$3"
-
-DIFF_RESULT=0
-
-CMP_ZIPS=false
-CMP_JARS=false
-CMP_LIBS=false
-CMP_EXECS=false
-CMP_OTHER=false
-
-FILTER="cat"
-
-if [ -n "$CMD" ]; then
-  case "$CMD" in
-    zips)
-          CMP_ZIPS=true
-      ;;
-    jars)
-          CMP_JARS=true
-      ;;
-    libs)
-          CMP_LIBS=true
-      ;;
-    execs)
-          CMP_EXECS=true
-      ;;
-    other)
-          CMP_OTHER=true
-      ;;
-    *)
-          CMP_ZIPS=true
-          CMP_JARS=true
-          CMP_LIBS=true
-          CMP_EXECS=true
-          CMP_OTHER=true
-          FILTER="grep $3"
-      ;;
-  esac
-else
-    CMP_ZIPS=true
-    CMP_JARS=true
-    CMP_LIBS=true
-    CMP_EXECS=true
-    CMP_OTHER=true
-fi
-
-DIFFJARZIP="/bin/bash `dirname $0`/diffjarzip.sh"
-DIFFLIB="/bin/bash `dirname $0`/difflib.sh"
-DIFFEXEC="/bin/bash `dirname $0`/diffexec.sh"
-export COMPARE_ROOT=/tmp/cimages.$USER
-mkdir -p $COMPARE_ROOT
-
-# Load the correct exception list.
-case "`uname -s`" in
-    Linux)
-        . `dirname $0`/exception_list_linux
-        ;;
-esac
-
-echo
-echo Comparing $OLD to $NEW
-echo
-
-(cd $OLD && find . -type d | sort > $COMPARE_ROOT/from_dirs)
-(cd $NEW && find . -type d | sort > $COMPARE_ROOT/to_dirs)
-
-echo -n Directory structure...
-if diff $COMPARE_ROOT/from_dirs $COMPARE_ROOT/to_dirs > /dev/null; then
-    echo Identical!
-else
-    echo Differences found.
-    DIFF_RESULT=1
-    # Differences in directories found.
-    ONLY_OLD=$(diff $COMPARE_ROOT/from_dirs $COMPARE_ROOT/to_dirs | grep '<')
-    if [ "$ONLY_OLD" ]; then
-        echo Only in $OLD
-        echo $ONLY_OLD | sed 's|< ./|\t|g' | sed 's/ /\n/g'
-    fi
-    # Differences in directories found.
-    ONLY_NEW=$(diff $COMPARE_ROOT/from_dirs $COMPARE_ROOT/to_dirs | grep '>')
-    if [ "$ONLY_NEW" ]; then
-        echo Only in $NEW
-        echo $ONLY_NEW | sed 's|> ./|\t|g' | sed 's/ /\n/g'
-    fi
-fi
-
-(cd $OLD && find . -type f | sort > $COMPARE_ROOT/from_files)
-(cd $NEW && find . -type f | sort > $COMPARE_ROOT/to_files)
-
-echo -n File names...
-if diff $COMPARE_ROOT/from_files $COMPARE_ROOT/to_files > /dev/null; then
-    echo Identical!
-else
-    echo Differences found.
-    DIFF_RESULT=1
-    # Differences in directories found.
-    ONLY_OLD=$(diff $COMPARE_ROOT/from_files $COMPARE_ROOT/to_files | grep '<')
-    if [ "$ONLY_OLD" ]; then
-        echo Only in $OLD
-        echo "$ONLY_OLD" | sed 's|< ./|    |g'
-    fi
-    # Differences in directories found.
-    ONLY_NEW=$(diff $COMPARE_ROOT/from_files $COMPARE_ROOT/to_files | grep '>')
-    if [ "$ONLY_NEW" ]; then
-        echo Only in $NEW
-        echo "$ONLY_NEW" | sed 's|> ./|    |g'
-    fi
-fi
-
-echo -n Permissions...
-found=""
-for f in `cd $OLD && find . -type f`
-do
-    if [ ! -f ${OLD}/$f ]; then continue; fi
-    if [ ! -f ${NEW}/$f ]; then continue; fi
-    OP=`ls -l ${OLD}/$f | awk '{printf("%.10s\n", $1);}'`
-    NP=`ls -l ${NEW}/$f | awk '{printf("%.10s\n", $1);}'`
-    if [ "$OP" != "$NP" ]
-    then
-	if [ -z "$found" ]; then echo ; found="yes"; fi
-	printf "\told: ${OP} new: ${NP}\t$f\n"
-    fi
-
-    OF=`cd ${OLD} && file $f`
-    NF=`cd ${NEW} && file $f`
-    if [ "$f" = "./src.zip" ]
-    then
-	if [ "`echo $OF | grep -ic zip`" -gt 0 -a "`echo $NF | grep -ic zip`" -gt 0 ]
-	then
-	    # the way we produces zip-files make it so that directories are stored in old file
-	    # but not in new (only files with full-path)
-	    # this makes file-5.09 report them as different
-	    continue;
-	fi
-    fi
-
-    if [ "$OF" != "$NF" ]
-    then
-	if [ -z "$found" ]; then echo ; found="yes"; fi
-	printf "\tFILE: old: ${OF} new: ${NF}\t$f\n"
-    fi
-done
-if [ -z "$found" ]; then echo ; found="yes"; fi
-
-GENERAL_FILES=$(cd $OLD && find . -type f ! -name "*.so" ! -name "*.jar" ! -name "*.zip" \
-                                  ! -name "*.debuginfo" ! -name "*.dylib" ! -name "jexec" \
-                                  ! -name "ct.sym" ! -name "*.diz" \
-                              | grep -v "./bin/"  | sort | $FILTER)
-echo General files...
-for f in $GENERAL_FILES
-do
-    if [ -e $NEW/$f ]; then
-        DIFF_OUT=$(diff $OLD/$f $NEW/$f 2>&1)
-        if [ -n "$DIFF_OUT" ]; then
-            echo $f
-            echo "$DIFF_OUT"
-        fi
-    fi
-done
-
-
-if [ "x$CMP_ZIPS" == "xtrue" ]; then
-    ZIPS=$(cd $OLD && find . -type f -name "*.zip" | sort | $FILTER)
-
-    if [ -n "$ZIPS" ]; then
-        echo Zip files...
-
-        for f in $ZIPS
-        do
-            $DIFFJARZIP $OLD/$f $NEW/$f $OLD $NEW 
-            if [ "$?" != "0" ]; then
-                DIFF_RESULT=1
-            fi
-        done
-   fi        
-fi    
-
-if [ "x$CMP_JARS" == "xtrue" ]; then
-    JARS=$(cd $OLD && find . -type f -name "*.jar" -o -name "ct.sym" | sort | $FILTER)
-
-    if [ -n "$JARS" ]; then
-        echo Jar files...
-
-        for f in $JARS
-        do
-            DIFFJAR_OUTPUT=`$DIFFJARZIP $OLD/$f $NEW/$f $OLD $NEW`
-            DIFFJAR_RESULT=$?
-            if [ "$DIFFJAR_RESULT" != "0" ]; then
-                for diff in $LIST_DIFF_JAR; do
-                    DIFFJAR_OUTPUT=`echo "$DIFFJAR_OUTPUT" | grep -v "$diff"`
-                done
-                if [ "`echo "$DIFFJAR_OUTPUT" | grep -v "Differing files in"`" != "" ]; then
-                    DIFF_RESULT=1
-                    echo "$DIFFJAR_OUTPUT"
-                fi
-            fi
-        done
-    fi
-fi
-
-if [ "x$FILTER" != "xcat" ]; then
-    VIEW=view
-else
-    VIEW=
-fi
-
-if [ "x$CMP_LIBS" == "xtrue" ]; then
-    LIBS=$(cd $OLD && find . -name 'lib*.so' -o -name '*.dylib' -o -name '*.dll' | sort | $FILTER)
-
-    if [ -n "$LIBS" ]; then
-        echo Libraries...
-        for f in $LIBS
-        do
-            DIFFLIB_OUTPUT=`$DIFFLIB $OLD/$f $NEW/$f $OLD $NEW $VIEW`
-            DIFFLIB_RESULT=$?
-            if [ "$DIFFLIB_RESULT" = "0" ]; then
-                :
-                #echo "OK: $DIFFLIB_OUTPUT"
-            elif [ "$DIFFLIB_RESULT" = "2" ] && [[ "$LIST_DIFF_SIZE $LIST_DIFF_BYTE" == *"${f:2}"* ]]; then
-                :
-                #echo "OK: $DIFFLIB_OUTPUT"
-            elif [ "$DIFFLIB_RESULT" = "1" ] && [[ "$LIST_DIFF_BYTE" == *"${f:2}"* ]]; then
-                :
-                #echo "OK: $DIFFLIB_OUTPUT"
-            else
-                echo "$DIFFLIB_OUTPUT"
-                DIFF_RESULT=1
-            fi
-        done
-    fi
-fi
-
-if [ "x$CMP_EXECS" == "xtrue" ]; then
-    if [ $OSTYPE == "cygwin" ]; then
-        EXECS=$(cd $OLD && find . -type f -name '*.exe' | sort | $FILTER)
-    else
-        EXECS=$(cd $OLD && find . -type f -perm -100 \! \( -name '*.so' -o -name '*.dylib' -o -name '*.dll' \) | sort | $FILTER)
-    fi
-
-
-    if [ -n "$EXECS" ]; then
-        echo Executables...
-
-        for f in $EXECS
-        do
-            DIFFEXEC_OUTPUT=`$DIFFEXEC $OLD/$f $NEW/$f $OLD $NEW $VIEW`
-            DIFFEXEC_RESULT=$?
-            if [ "$DIFFEXEC_RESULT" = "0" ]; then
-                :
-                #echo "OK: $DIFFEXEC_OUTPUT"
-            elif [ "$DIFFEXEC_RESULT" = "2" ] && [[ "$LIST_DIFF_SIZE $LIST_DIFF_BYTE" == *"${f:2}"* ]]; then
-                :
-                #echo "OK: $DIFFEXEC_OUTPUT"
-            elif [ "$DIFFEXEC_RESULT" = "1" ] && [[ "$LIST_DIFF_BYTE" == *"${f:2}"* ]]; then
-                :
-                #echo "OK: $DIFFEXEC_OUTPUT"
-            else
-                echo "$DIFFEXEC_OUTPUT"
-                DIFF_RESULT=1
-            fi
-        done
-    fi
-fi
-
-exit $DIFF_RESULT
--- a/common/bin/diffexec.sh	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-if [ $# -lt 2 ] 
-then
-  echo "Diff two executables. Return codes:"
-  echo "0 - no diff"
-  echo "1 - Identical symbols AND size, BUT not bytewise identical"
-  echo "2 - Identical symbols BUT NEW size"
-  echo "3 - Differences, content BUT SAME size"
-  echo "4 - Differences, content AND size"
-  echo "10 - Could not perform diff"
-  echo "Use 'quiet' to disable any output."
-  echo "Syntax: $0 file1 file2 [quiet]"
-  exit 10
-fi
-
-if [ ! -f $1 ]
-then
-  echo $1 does not exist
-  exit 10
-fi
-
-if [ ! -f $2 ]
-then
-  echo $2 does not exist
-  exit 10
-fi
-
-if [ "`uname`" == "SunOS" ]; then
-    if [ -f "`which nm`" ]; then
-        NM=nm
-    elif [ -f "`which gnm`" ]; then
-        NM=gnm
-    else
-        echo "No nm command found"
-        exit 10
-    fi
-    LDD=ldd
-elif [ $OSTYPE == "cygwin" ]; then
-    NM="$VS100COMNTOOLS/../../VC/bin/amd64/dumpbin.exe"
-    NM_ARGS=/exports
-    LDD=
-elif [ "`uname`" == "Darwin" ]; then
-    NM=nm
-    LDD="otool -L"
-else
-    NM=nm
-    LDD=ldd
-fi
-
-# Should the differences be viewed?
-VIEW=
-# You can do export DIFF=meld to view
-# any differences using meld instead.
-if [ -n "$DIFF" ]; then
-    DIFF="$DIFF"
-else
-    DIFF=diff
-fi
-OLD=$(cd $(dirname $1) && pwd)/$(basename $1)
-NEW=$(cd $(dirname $2) && pwd)/$(basename $2)
-
-OLD_SIZE=$(ls -l "$OLD" | awk '{ print $5 }')
-NEW_SIZE=$(ls -l "$NEW" | awk '{ print $5 }')
-
-if [ $# -gt 3 ]
-then
-    ROOT1=$(cd $3 && pwd)
-    ROOT2=$(cd $4 && pwd)
-    OLD_NAME=$(echo $OLD | sed "s|$ROOT1/||")
-    NEW_NAME=$(echo $NEW | sed "s|$ROOT2/||")
-    if [ "x$5" == "xview" ]; then VIEW=view; fi
-else
-    ROOT1=$(dirname $OLD)/
-    ROOT2=$(dirname $NEW)/
-    OLD_NAME=$OLD
-    NEW_NAME=$NEW
-    if [ "x$3" == "xview" ]; then VIEW=view; fi
-fi
-
-if cmp $OLD $NEW > /dev/null
-then
-    # The files were bytewise identical.
-    echo Identical: $OLD_NAME
-    exit 0
-fi
-
-OLD_SYMBOLS=$COMPARE_ROOT/$OLD_NAME.old
-NEW_SYMBOLS=$COMPARE_ROOT/$NEW_NAME.new
-
-mkdir -p $(dirname $OLD_SYMBOLS)
-mkdir -p $(dirname $NEW_SYMBOLS)
-
-if [ $OSTYPE == "cygwin" ]; then
-    "$NM" $NM_ARGS $OLD | grep " = " > $OLD_SYMBOLS
-    "$NM" $NM_ARGS $NEW | grep " = " > $NEW_SYMBOLS
-    "$NM" $NM_ARGS $OLD > $OLD_SYMBOLS.full
-    "$NM" $NM_ARGS $NEW > $NEW_SYMBOLS.full
-else
-    # Strip the addresses, just compare the ordering of the symbols.
-    $NM $OLD | cut -f 2- -d ' ' > $OLD_SYMBOLS
-    $NM $NEW | cut -f 2- -d ' ' > $NEW_SYMBOLS
-    # But store the full information for easy diff access.
-    $NM $OLD  > $OLD_SYMBOLS.full
-    $NM $NEW  > $NEW_SYMBOLS.full
-fi
-
-DIFFS=$(LANG=C diff $OLD_SYMBOLS $NEW_SYMBOLS)
-
-if [ "${LDD}" ]
-then
-    NAME=`basename $OLD`
-    TMP=$COMPARE_ROOT/ldd/ldd.${NAME}
-    rm -rf "${TMP}"
-    mkdir -p "${TMP}"
-
-    (cd "${TMP}" && cp $OLD . && ${LDD} ${NAME} | awk '{ print $1;}' | sort | tee dep.old | uniq > dep.uniq.old)
-    (cd "${TMP}" && cp $NEW . && ${LDD} ${NAME} | awk '{ print $1;}' | sort | tee dep.new | uniq > dep.uniq.new)
-    (cd "${TMP}" && rm -f ${NAME})
-    
-    DIFFS_DEP=$(LANG=C diff "${TMP}/dep.old" "${TMP}/dep.new")
-    DIFFS_UNIQ_DEP=$(LANG=C diff "${TMP}/dep.uniq.old" "${TMP}/dep.uniq.new")
-    
-    DEP_MSG=
-    if [ -z "${DIFFS_UNIQ_DEP}" -a -z "${DIFFS_DEP}" ]; then
-       DEP_MSG="Identical dependencies"
-    elif [ -z "${DIFFS_UNIQ_DEP}" ]; then
-       DEP_MSG="Redundant duplicate dependencies added"
-       RES=1
-    else
-       DEP_MSG="DIFFERENT dependencies"
-       RES=1
-    fi
-fi
-
-RESULT=0
-
-if [ -n "$DIFFS" ]; then
-   if [ $OLD_SIZE -ne $NEW_SIZE ]
-   then
-       echo Differences, content AND size     : $DEP_MSG : $OLD_NAME 
-       RESULT=4
-   else
-       echo Differences, content BUT SAME size: $DEP_MSG : $OLD_NAME 
-       RESULT=3
-   fi
-   if [ "x$VIEW" == "xview" ]; then
-       LANG=C $DIFF $OLD_SYMBOLS $NEW_SYMBOLS
-   fi
-else
-   if [ $OLD_SIZE -ne $NEW_SIZE ]
-   then
-       echo Identical symbols BUT NEW size    : $DEP_MSG : $OLD_NAME 
-       RESULT=2
-   else
-       echo Identical symbols AND size, BUT not bytewise identical: $DEP_MSG : $OLD_NAME 
-       RESULT=1
-   fi
-fi
-
-exit $RESULT
-
-
-
--- a/common/bin/diffjarzip.sh	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# Simple tool to diff two jar or zip files. It unpacks the jar/zip files and
-# reports if files differs and if files are new or missing.
-# Assumes gnu diff.
-
-# There are a few source files that have DOS line endings in the
-# jaxp/jaxws source drops, when the sources were added to the repository
-# the source files were converted to UNIX line endings.
-# For now we ignore these differences.
-DIFF_FLAGS="--strip-trailing-cr"
-#set -x
-
-if [ $# -lt 2 ] 
-then
-  echo "Diff two jar/zip files. Return codes: 0 - no diff, 1 - diff, 2 - couldn't perform diff"
-  echo "Syntax: $0 old_archive new_archive [old_root new_root]"
-  exit 2
-fi
-
-if [ ! -f $1 ]
-then
-  echo $1 does not exist
-  exit 2
-fi
-
-if [ ! -f $2 ]
-then
-  echo $2 does not exist
-  exit 2
-fi
-
-IGNORES="cat"
-OLD=$(cd $(dirname $1) && pwd)/$(basename $1)
-NEW=$(cd $(dirname $2) && pwd)/$(basename $2)
-
-if [ $# -gt 3 ]
-then
-    ROOT1=$(cd $3 && pwd)
-    ROOT2=$(cd $4 && pwd)
-    OLD_NAME=$(echo $OLD | sed "s|$ROOT1/||")
-    NEW_NAME=$(echo $NEW | sed "s|$ROOT2/||")
-    if [ $# == 5 ]; then IGNORES="$5"; fi
-else
-    ROOT1=$(dirname $OLD)/
-    ROOT2=$(dirname $NEW)/
-    OLD_NAME=$OLD
-    NEW_NAME=$NEW
-    if [ $# == 3 ]; then IGNORES="$3"; fi
-fi
-
-if [ "`uname`" == "SunOS" ]; then
-    if [ -f "`which gdiff`" ]; then
-        DIFF=gdiff
-    else
-        DIFF=diff
-    fi
-else
-    DIFF=diff
-fi
-
-OLD_SUFFIX="${OLD##*.}"
-NEW_SUFFIX="${NEW##*.}"
-if [ "$OLD_SUFFIX" != "$NEW_SUFFIX" ]; then
-    echo The files do not have the same suffix type!
-    exit 2
-fi
-
-if [ "$OLD_SUFFIX" != "zip" ] && [ "$OLD_SUFFIX" != "jar" ] && [ "$OLD_SUFFIX" != "sym" ]; then
-    echo The files have to be zip, jar or sym! They are $OLD_SUFFIX
-    exit 2
-fi
-
-UNARCHIVE="unzip -q"
-
-TYPE="$OLD_SUFFIX"
-
-if cmp $OLD $NEW > /dev/null
-then
-    # The files were bytewise identical.
-    exit 0
-fi
-
-# Not quite identical, the might still contain the same data.
-# Unpack the jar/zip files in temp dirs
-if test "x$COMPARE_ROOT" == "x"; then
-    COMPARE_ROOT=/tmp/compare_root.$$
-    REMOVE_COMPARE_ROOT=true
-fi
-OLD_TEMPDIR=$COMPARE_ROOT/$OLD_NAME.old
-NEW_TEMPDIR=$COMPARE_ROOT/$NEW_NAME.new
-mkdir -p $OLD_TEMPDIR
-mkdir -p $NEW_TEMPDIR
-(cd $OLD_TEMPDIR && rm -rf * ; $UNARCHIVE $OLD)
-(cd $NEW_TEMPDIR && rm -rf * ; $UNARCHIVE $NEW)
-
-ONLY1=$(LANG=C $DIFF -rq $OLD_TEMPDIR $NEW_TEMPDIR | grep "^Only in $OLD_TEMPDIR")
-
-if [ -n "$ONLY1" ]; then
-    echo "        Only the OLD $OLD_NAME contains:"
-    LANG=C $DIFF -rq $DIFF_FLAGS $OLD_TEMPDIR $NEW_TEMPDIR | grep "^Only in $OLD_TEMPDIR" \
-        | sed "s|Only in $OLD_TEMPDIR|            |"g | sed 's|: |/|g'
-fi
-
-ONLY2=$(LANG=C $DIFF -rq $OLD_TEMPDIR $NEW_TEMPDIR | grep "^Only in $NEW_TEMPDIR")
-
-if [ -n "$ONLY2" ]; then
-    echo "        Only the NEW $NEW_NAME contains:"
-    LANG=C $DIFF -rq $DIFF_FLAGS $OLD_TEMPDIR $NEW_TEMPDIR | grep "^Only in $NEW_TEMPDIR" \
-        | sed "s|Only in $NEW_TEMPDIR|            |"g | sed 's|: |/|g'
-fi
-
-DIFFTEXT="/bin/bash `dirname $0`/difftext.sh"
-
-LANG=C $DIFF -rq $DIFF_FLAGS $OLD_TEMPDIR $NEW_TEMPDIR | grep differ | cut -f 2,4 -d ' ' | \
-   awk "{ print \"$DIFFTEXT \"\$1\" \"\$2 }" > $COMPARE_ROOT/diffing
-
-/bin/bash $COMPARE_ROOT/diffing > $COMPARE_ROOT/diffs
-
-if [ -s "$COMPARE_ROOT/diffs" ]; then
-   echo "        Differing files in $OLD_NAME"
-   cat $COMPARE_ROOT/diffs | grep differ | $IGNORES | cut -f 2 -d ' ' | \
-          sed "s|$OLD_TEMPDIR|            |g"
-fi
-
-# Clean up
-
-if [ "x$REMOVE_COMPARE_ROOT" == xtrue ]; then
-    rm -rf $REMOVE_COMPARE_ROOT
-fi
-
-exit 1
-
--- a/common/bin/difflib.sh	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# Simple tool to diff two shared libraries. 
-# Criterias: two shared libraries are considered equal if:
-# the file sizes are the same AND the symbols outputs from the nm command are equal
-
-if [ $# -lt 2 ] 
-then
-  echo "Diff two shared libs. Return codes:"
-  echo "0 - no diff"
-  echo "1 - Identical symbols AND size, BUT not bytewise identical"
-  echo "2 - Identical symbols BUT NEW size"
-  echo "3 - Differences, content BUT SAME size"
-  echo "4 - Differences, content AND size"
-  echo "10 - Could not perform diff"
-  echo "Use 'quiet' to disable any output."
-  echo "Syntax: $0 file1 file2 [quiet]"
-  exit 10
-fi
-
-if [ ! -f $1 ]
-then
-  echo $1 does not exist
-  exit 10
-fi
-
-if [ ! -f $2 ]
-then
-  echo $2 does not exist
-  exit 10
-fi
-
-if [ "`uname`" == "SunOS" ]; then
-    if [ -f "`which gnm`" ]; then
-        NM=gnm
-# Jonas 2012-05-29: solaris native nm produces radically different output than gnm
-#                   so if using that...we need different filter than "cut -f 2-"
-#
-    elif [ -f "`which nm`" ]; then
-        NM=nm
-    else
-        echo "No nm command found"
-        exit 10
-    fi
-    LDD=ldd
-elif [ $OSTYPE == "cygwin" ]; then
-    NM="$VS100COMNTOOLS/../../VC/bin/amd64/dumpbin.exe"
-    NM_ARGS=/exports
-    LDD=
-elif [ "`uname`" == "Darwin" ]; then
-    NM=nm
-    LDD="otool -L"
-else
-    NM=nm
-    LDD=ldd
-fi
-
-# Should the differences be viewed?
-VIEW=
-# You can do export DIFF=meld to view
-# any differences using meld instead.
-if [ -n "$DIFF" ]; then
-    DIFF="$DIFF"
-else
-    DIFF=diff
-fi
-OLD=$(cd $(dirname $1) && pwd)/$(basename $1)
-NEW=$(cd $(dirname $2) && pwd)/$(basename $2)
-
-OLD_SIZE=$(ls -l "$OLD" | awk '{ print $5 }')
-NEW_SIZE=$(ls -l "$NEW" | awk '{ print $5 }')
-
-if [ $# -gt 3 ]
-then
-    ROOT1=$(cd $3 && pwd)
-    ROOT2=$(cd $4 && pwd)
-    OLD_NAME=$(echo $OLD | sed "s|$ROOT1/||")
-    NEW_NAME=$(echo $NEW | sed "s|$ROOT2/||")
-    if [ "x$5" == "xview" ]; then VIEW=view; fi
-else
-    ROOT1=$(dirname $OLD)/
-    ROOT2=$(dirname $NEW)/
-    OLD_NAME=$OLD
-    NEW_NAME=$NEW
-    if [ "x$3" == "xview" ]; then VIEW=view; fi
-fi
-
-OLD_SUFFIX="${OLD##*.}"
-NEW_SUFFIX="${NEW##*.}"
-if [ "$OLD_SUFFIX" != "$NEW_SUFFIX" ]; then
-    echo The files do not have the same suffix type!
-    exit 10
-fi
-
-if [ "$OLD_SUFFIX" != "so" ] && [ "$OLD_SUFFIX" != "dylib" ] && [ "$OLD_SUFFIX" != "dll" ]; then
-    echo The files have to be .so, .dylib or .dll! They are $OLD_SUFFIX
-    exit 10
-fi
-
-TYPE="$OLD_SUFFIX"
-
-if cmp $OLD $NEW > /dev/null
-then
-    # The files were bytewise identical.
-    echo Identical: $OLD_NAME
-    exit 0
-fi
-
-OLD_SYMBOLS=$COMPARE_ROOT/nm.$OLD_NAME.old
-NEW_SYMBOLS=$COMPARE_ROOT/nm.$NEW_NAME.new
-
-mkdir -p $(dirname $OLD_SYMBOLS)
-mkdir -p $(dirname $NEW_SYMBOLS)
-
-if [ $OSTYPE == "cygwin" ]; then
-    "$NM" $NM_ARGS $OLD | grep " = " > $OLD_SYMBOLS
-    "$NM" $NM_ARGS $NEW | grep " = " > $NEW_SYMBOLS
-    "$NM" $NM_ARGS $OLD > $OLD_SYMBOLS.full
-    "$NM" $NM_ARGS $NEW > $NEW_SYMBOLS.full
-else
-    # Strip the addresses, just compare the ordering of the symbols.
-    $NM $OLD | cut -f 2- -d ' ' > $OLD_SYMBOLS
-    $NM $NEW | cut -f 2- -d ' ' > $NEW_SYMBOLS
-    # But store the full information for easy diff access.
-    $NM $OLD  > $OLD_SYMBOLS.full
-    $NM $NEW  > $NEW_SYMBOLS.full
-fi
-
-DIFFS=$(LANG=C diff $OLD_SYMBOLS $NEW_SYMBOLS)
-
-RESULT=0
-
-if [ "${LDD}" ]
-then
-    NAME=`basename $OLD`
-    TMP=$COMPARE_ROOT/ldd/ldd.${NAME}
-    rm -rf "${TMP}"
-    mkdir -p "${TMP}"
-    
-    (cd "${TMP}" && cp $OLD . && ${LDD} ${NAME} | awk '{ print $1;}' | sort | tee dep.old | uniq > dep.uniq.old)
-    (cd "${TMP}" && cp $NEW . && ${LDD} ${NAME} | awk '{ print $1;}' | sort | tee dep.new | uniq > dep.uniq.new)
-    (cd "${TMP}" && rm -f ${NAME})
-    
-    DIFFS_DEP=$(LANG=C diff "${TMP}/dep.old" "${TMP}/dep.new")
-    DIFFS_UNIQ_DEP=$(LANG=C diff "${TMP}/dep.uniq.old" "${TMP}/dep.uniq.new")
-    
-    DEP_MSG=
-    if [ -z "${DIFFS_UNIQ_DEP}" -a -z "${DIFFS_DEP}" ]; then
-       DEP_MSG="Identical dependencies"
-    elif [ -z "${DIFFS_UNIQ_DEP}" ]; then
-       DEP_MSG="Redundant duplicate dependencies added"
-       RES=1
-    else
-       DEP_MSG="DIFFERENT dependencies"
-       RES=1
-    fi
-fi
-
-if [ -n "$DIFFS" ]; then
-   if [ $OLD_SIZE -ne $NEW_SIZE ]
-   then
-       echo Differences, content AND size     : $DEP_MSG : $OLD_NAME 
-       RESULT=4
-   else
-       echo Differences, content BUT SAME size: $DEP_MSG : $OLD_NAME 
-       RESULT=3
-   fi
-   if [ "x$VIEW" == "xview" ]; then
-       LANG=C $DIFF $OLD_SYMBOLS $NEW_SYMBOLS
-   fi
-else
-   if [ $OLD_SIZE -ne $NEW_SIZE ]
-   then
-       echo Identical symbols BUT NEW size    : $DEP_MSG : $OLD_NAME 
-       RESULT=2
-   else
-       echo Identical symbols AND size, BUT not bytewise identical: $DEP_MSG : $OLD_NAME 
-       RESULT=1
-   fi
-fi
-
-exit $RESULT
-
-
-
--- a/common/bin/difftext.sh	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# The difftext.sh knows how to compare text files and
-# ignore some specific differences.
-# When difftext.sh is called, we already know that the
-# files differ. But if the tests below trigger, then
-# we ignore differences caused by:
-#
-#   Timestamps in Java sources generated by idl2java
-#   Sorting order and cleanup style in .properties files.
-
-OLD="$1"
-NEW="$2"
-SUF="${OLD##*.}"
-TMP=1
-if test "x$SUF" == "xjava"; then
-   TMP=$(LANG=C diff $OLD $NEW | \
-       grep '^[<>]' | \
-       sed '/[<>] \* from.*\.idl/d' | \
-       sed '/[<>] \*.*201[12].*/d' | \
-       sed '/\/\/ Generated from input file.*/d' | \
-       sed '/\/\/ This file was generated AUTOMATICALLY from a template file.*/d' | \
-       sed '/\/\/ java GenerateCharacter.*/d')
-fi
-if test "x$SUF" == "xproperties"; then
-    cat $OLD | sed -e 's/\([^\\]\):/\1\\:/g' -e  's/\([^\\]\)=/\1\\=/g' -e 's/#.*/#/g' \
--e 's/\\u0020/\x20/g' \
--e 's/\\u003A/\x3A/g' \
--e 's/\\u006B/\x6B/g' \
--e 's/\\u0075/\x75/g' \
--e 's/\\u00A0/\xA0/g' \
--e 's/\\u00A3/\xA3/g' \
--e 's/\\u00B0/\xB0/g' \
--e 's/\\u00B7/\xB7/g' \
--e 's/\\u00BA/\xBA/g' \
--e 's/\\u00BF/\xBF/g' \
--e 's/\\u00C0/\xC0/g' \
--e 's/\\u00C1/\xC1/g' \
--e 's/\\u00C2/\xC2/g' \
--e 's/\\u00C4/\xC4/g' \
--e 's/\\u00C5/\xC5/g' \
--e 's/\\u00C8/\xC8/g' \
--e 's/\\u00C9/\xC9/g' \
--e 's/\\u00CA/\xCA/g' \
--e 's/\\u00CD/\xCD/g' \
--e 's/\\u00CE/\xCE/g' \
--e 's/\\u00D3/\xD3/g' \
--e 's/\\u00D4/\xD4/g' \
--e 's/\\u00D6/\xD6/g' \
--e 's/\\u00DA/\xDA/g' \
--e 's/\\u00DC/\xDC/g' \
--e 's/\\u00DD/\xDD/g' \
--e 's/\\u00DF/\xDF/g' \
--e 's/\\u00E0/\xE0/g' \
--e 's/\\u00E1/\xE1/g' \
--e 's/\\u00E2/\xE2/g' \
--e 's/\\u00E3/\xE3/g' \
--e 's/\\u00E4/\xE4/g' \
--e 's/\\u00E5/\xE5/g' \
--e 's/\\u00E6/\xE6/g' \
--e 's/\\u00E7/\xE7/g' \
--e 's/\\u00E8/\xE8/g' \
--e 's/\\u00E9/\xE9/g' \
--e 's/\\u00EA/\xEA/g' \
--e 's/\\u00EB/\xEB/g' \
--e 's/\\u00EC/\xEC/g' \
--e 's/\\u00ED/\xED/g' \
--e 's/\\u00EE/\xEE/g' \
--e 's/\\u00EF/\xEF/g' \
--e 's/\\u00F1/\xF1/g' \
--e 's/\\u00F2/\xF2/g' \
--e 's/\\u00F3/\xF3/g' \
--e 's/\\u00F4/\xF4/g' \
--e 's/\\u00F5/\xF5/g' \
--e 's/\\u00F6/\xF6/g' \
--e 's/\\u00F9/\xF9/g' \
--e 's/\\u00FA/\xFA/g' \
--e 's/\\u00FC/\xFC/g' \
--e 's/\\u0020/\x20/g' \
--e 's/\\u003f/\x3f/g' \
--e 's/\\u006f/\x6f/g' \
--e 's/\\u0075/\x75/g' \
--e 's/\\u00a0/\xa0/g' \
--e 's/\\u00a3/\xa3/g' \
--e 's/\\u00b0/\xb0/g' \
--e 's/\\u00ba/\xba/g' \
--e 's/\\u00bf/\xbf/g' \
--e 's/\\u00c1/\xc1/g' \
--e 's/\\u00c4/\xc4/g' \
--e 's/\\u00c5/\xc5/g' \
--e 's/\\u00c8/\xc8/g' \
--e 's/\\u00c9/\xc9/g' \
--e 's/\\u00ca/\xca/g' \
--e 's/\\u00cd/\xcd/g' \
--e 's/\\u00d6/\xd6/g' \
--e 's/\\u00dc/\xdc/g' \
--e 's/\\u00dd/\xdd/g' \
--e 's/\\u00df/\xdf/g' \
--e 's/\\u00e0/\xe0/g' \
--e 's/\\u00e1/\xe1/g' \
--e 's/\\u00e2/\xe2/g' \
--e 's/\\u00e3/\xe3/g' \
--e 's/\\u00e4/\xe4/g' \
--e 's/\\u00e5/\xe5/g' \
--e 's/\\u00e7/\xe7/g' \
--e 's/\\u00e8/\xe8/g' \
--e 's/\\u00e9/\xe9/g' \
--e 's/\\u00ea/\xea/g' \
--e 's/\\u00eb/\xeb/g' \
--e 's/\\u00ec/\xec/g' \
--e 's/\\u00ed/\xed/g' \
--e 's/\\u00ee/\xee/g' \
--e 's/\\u00ef/\xef/g' \
--e 's/\\u00f0/\xf0/g' \
--e 's/\\u00f1/\xf1/g' \
--e 's/\\u00f2/\xf2/g' \
--e 's/\\u00f3/\xf3/g' \
--e 's/\\u00f4/\xf4/g' \
--e 's/\\u00f5/\xf5/g' \
--e 's/\\u00f6/\xf6/g' \
--e 's/\\u00f7/\xf7/g' \
--e 's/\\u00f8/\xf8/g' \
--e 's/\\u00f9/\xf9/g' \
--e 's/\\u00fa/\xfa/g' \
--e 's/\\u00fc/\xfc/g' \
--e 's/\\u00ff/\xff/g' \
-  	     | sed -e '/^#/d' -e '/^$/d' \
-                  -e :a -e '/\\$/N; s/\\\n//; ta' \
-  	          -e 's/^[ \t]*//;s/[ \t]*$//' \
-		  -e 's/\\=/=/' | LANG=C sort > $OLD.cleaned
-   TMP=$(LANG=C diff $OLD.cleaned $NEW)
-fi
-if test -n "$TMP"; then
-    echo Files $OLD and $NEW differ
-fi
--- a/common/bin/exception_list_linux	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# List of files inside jar archives that are ok if they differ.
-LIST_DIFF_JAR="
-/sun/misc/Version.class
-/sun/tools/jconsole/Version.class
-/com/sun/tools/javac/resources/version.class
-/com/sun/tools/javah/resources/version.class
-/com/sun/tools/javap/resources/version.class
-"
-
-# List of binaries that only need to match symbols
-LIST_DIFF_SIZE="
-jre/lib/amd64/libfontmanager.so
-jre/lib/amd64/libjdwp.so
-jre/lib/amd64/libt2k.so
-bin/unpack200
-jre/bin/unpack200
-jre/lib/amd64/libjsig.debuginfo
-jre/lib/amd64/libsaproc.debuginfo
-jre/lib/amd64/server/libjvm.debuginfo
-"
-
-# List of binares that need to match both symbols and size
-LIST_DIFF_BYTE="
-jre/lib/amd64/libdt_socket.so
-jre/lib/amd64/libattach.so
-jre/lib/amd64/libjaas_unix.so
-jre/lib/amd64/libjawt.so
-jre/lib/amd64/libjpeg.so
-jre/lib/amd64/libjsdt.so
-jre/lib/amd64/libjsig.so
-jre/lib/amd64/libsaproc.so
-jre/lib/amd64/libsctp.so
-jre/lib/amd64/libsunec.so
-jre/lib/amd64/libunpack.so
-jre/lib/amd64/libverify.so
-jre/lib/amd64/libzip.so
-jre/lib/amd64/server/libjsig.so
-jre/lib/amd64/server/libjvm.so
-jre/lib/amd64/liblcms.so
-demo/jvmti/heapTracker/lib/libheapTracker.so
-demo/jvmti/hprof/lib/libhprof.so
-demo/jvmti/minst/lib/libminst.so
-demo/jvmti/mtrace/lib/libmtrace.so
-demo/jvmti/waiters/lib/libwaiters.so
-bin/appletviewer
-bin/extcheck
-bin/idlj
-bin/jar
-bin/jarsigner
-bin/java
-bin/javac
-bin/javadoc
-bin/javah
-bin/javap
-bin/jcmd
-bin/jconsole
-bin/jdb
-bin/jhat
-bin/jinfo
-bin/jmap
-bin/jps
-bin/jrunscript
-bin/jsadebugd
-bin/jstack
-bin/jstat
-bin/jstatd
-bin/keytool
-bin/native2ascii
-bin/orbd
-bin/pack200
-bin/policytool
-bin/rmic
-bin/rmid
-bin/rmiregistry
-bin/schemagen
-bin/serialver
-bin/servertool
-bin/tnameserv
-bin/wsgen
-bin/wsimport
-bin/xjc
-jre/bin/java
-jre/bin/keytool
-jre/bin/orbd
-jre/bin/pack200
-jre/bin/policytool
-jre/bin/rmid
-jre/bin/rmiregistry
-jre/bin/servertool
-jre/bin/tnameserv
-"
--- a/common/bin/extractvcvars.sh	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-# Must be bash, but that is ok since we are running from cygwin.
-# The first argument is the vcvarsall.bat file to run.
-# The second argument is the arch arg to give to vcvars.
-VCVARSALL="$1"
-ARCH_ARG="$2"
-
-# Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment)
-# but calculate the difference in Cygwin environment before/after running it and then
-# apply the diff.
-_vs10varsall=`cygpath -a -m -s "$VCVARSALL"`
-_dosvs10varsall=`cygpath -a -w -s $_vs10varsall`
-_dosbash=`cygpath -a -w -s \`which bash\`.*`
-
-# generate the set of exported vars before/after the vs10 setup
-echo "@echo off" > localdevenvtmp.bat
-echo "$_dosbash -c \"export -p\" > localdevenvtmp.export0" >> localdevenvtmp.bat
-echo "call $_dosvs10varsall $ARCH_ARG" >> localdevenvtmp.bat
-echo "$_dosbash -c \"export -p\" > localdevenvtmp.export1" >> localdevenvtmp.bat
-cmd /c localdevenvtmp.bat
-
-# apply the diff (less some non-vs10 vars named by "!")
-sort localdevenvtmp.export0 |grep -v "!" > localdevenvtmp.export0.sort
-sort localdevenvtmp.export1 |grep -v "!" > localdevenvtmp.export1.sort
-comm -1 -3 localdevenvtmp.export0.sort localdevenvtmp.export1.sort > localdevenv.sh
-cat localdevenv.sh | sed 's/declare -x /export /g' | sed 's/="/:="/g' | sed 's/\\\\/\\/g' | sed 's/"//g' | \
-    sed 's/#/\$\(HASH\)/g' > localdevenv.gmk
-
-# cleanup
-rm -f localdevenvtmp*
--- a/common/bin/hide_important_warnings_from_javac.sh	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/bin/hide_important_warnings_from_javac.sh	Wed Jul 05 18:27:34 2017 +0200
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
--- a/common/bin/logger.sh	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/bin/logger.sh	Wed Jul 05 18:27:34 2017 +0200
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 #
 # Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/bin/shell-tracer.sh	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Usage: sh shell-tracer.sh <TIME_CMD> <OUTPUT_FILE> <OLD_SHELL> <shell command line>
+#
+# This shell script is supposed to be set as a replacement for SHELL in make,
+# causing it to be called whenever make wants to execute shell commands.
+# The <shell command line> is suitable for passing on to the old shell, 
+# typically beginning with -c.
+#
+# This script will make sure the shell command line is executed with 
+# OLD_SHELL -x, and it will also store a simple log of the the time it takes to
+# execute the command in the OUTPUT_FILE, using the "time" utility as pointed 
+# to by TIME_CMD. If TIME_CMD is "-", no timestamp will be stored.
+
+TIME_CMD="$1"
+OUTPUT_FILE="$2"
+OLD_SHELL="$3"
+shift
+shift
+shift
+if [ "$TIME_CMD" != "-" ]; then
+"$TIME_CMD" -f "[TIME:%E] $*" -a -o "$OUTPUT_FILE" "$OLD_SHELL" -x "$@"
+else
+"$OLD_SHELL" -x "$@"
+fi
--- a/common/bin/unicode2x.sed	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-s/\\u0020/\x20/g
-s/\\u003A/\x3A/g
-s/\\u006B/\x6B/g
-s/\\u0075/\x75/g
-s/\\u00A0/\xA0/g
-s/\\u00A3/\xA3/g
-s/\\u00B0/\xB0/g
-s/\\u00B7/\xB7/g
-s/\\u00BA/\xBA/g
-s/\\u00BF/\xBF/g
-s/\\u00C0/\xC0/g
-s/\\u00C1/\xC1/g
-s/\\u00C2/\xC2/g
-s/\\u00C4/\xC4/g
-s/\\u00C5/\xC5/g
-s/\\u00C8/\xC8/g
-s/\\u00C9/\xC9/g
-s/\\u00CA/\xCA/g
-s/\\u00CD/\xCD/g
-s/\\u00CE/\xCE/g
-s/\\u00D3/\xD3/g
-s/\\u00D4/\xD4/g
-s/\\u00D6/\xD6/g
-s/\\u00DA/\xDA/g
-s/\\u00DC/\xDC/g
-s/\\u00DD/\xDD/g
-s/\\u00DF/\xDF/g
-s/\\u00E0/\xE0/g
-s/\\u00E1/\xE1/g
-s/\\u00E2/\xE2/g
-s/\\u00E3/\xE3/g
-s/\\u00E4/\xE4/g
-s/\\u00E5/\xE5/g
-s/\\u00E6/\xE6/g
-s/\\u00E7/\xE7/g
-s/\\u00E8/\xE8/g
-s/\\u00E9/\xE9/g
-s/\\u00EA/\xEA/g
-s/\\u00EB/\xEB/g
-s/\\u00EC/\xEC/g
-s/\\u00ED/\xED/g
-s/\\u00EE/\xEE/g
-s/\\u00EF/\xEF/g
-s/\\u00F1/\xF1/g
-s/\\u00F2/\xF2/g
-s/\\u00F3/\xF3/g
-s/\\u00F4/\xF4/g
-s/\\u00F5/\xF5/g
-s/\\u00F6/\xF6/g
-s/\\u00F9/\xF9/g
-s/\\u00FA/\xFA/g
-s/\\u00FC/\xFC/g
-s/\\u0020/\x20/g
-s/\\u003f/\x3f/g
-s/\\u006f/\x6f/g
-s/\\u0075/\x75/g
-s/\\u00a0/\xa0/g
-s/\\u00a3/\xa3/g
-s/\\u00b0/\xb0/g
-s/\\u00ba/\xba/g
-s/\\u00bf/\xbf/g
-s/\\u00c1/\xc1/g
-s/\\u00c4/\xc4/g
-s/\\u00c5/\xc5/g
-s/\\u00c8/\xc8/g
-s/\\u00c9/\xc9/g
-s/\\u00ca/\xca/g
-s/\\u00cd/\xcd/g
-s/\\u00d6/\xd6/g
-s/\\u00dc/\xdc/g
-s/\\u00dd/\xdd/g
-s/\\u00df/\xdf/g
-s/\\u00e0/\xe0/g
-s/\\u00e1/\xe1/g
-s/\\u00e2/\xe2/g
-s/\\u00e3/\xe3/g
-s/\\u00e4/\xe4/g
-s/\\u00e5/\xe5/g
-s/\\u00e7/\xe7/g
-s/\\u00e8/\xe8/g
-s/\\u00e9/\xe9/g
-s/\\u00ea/\xea/g
-s/\\u00eb/\xeb/g
-s/\\u00ec/\xec/g
-s/\\u00ed/\xed/g
-s/\\u00ee/\xee/g
-s/\\u00ef/\xef/g
-s/\\u00f0/\xf0/g
-s/\\u00f1/\xf1/g
-s/\\u00f2/\xf2/g
-s/\\u00f3/\xf3/g
-s/\\u00f4/\xf4/g
-s/\\u00f5/\xf5/g
-s/\\u00f6/\xf6/g
-s/\\u00f7/\xf7/g
-s/\\u00f8/\xf8/g
-s/\\u00f9/\xf9/g
-s/\\u00fa/\xfa/g
-s/\\u00fc/\xfc/g
-s/\\u00ff/\xff/g
--- a/common/makefiles/HotspotWrapper.gmk	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/makefiles/HotspotWrapper.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -36,9 +36,12 @@
 default: all
 
 # Get all files except .hg in the hotspot directory.
-HOTSPOT_FILES :=  $(shell $(FIND) $(HOTSPOT_TOPDIR) -name ".hg" -prune -o -print)
+HOTSPOT_FILES :=  $(shell $(FIND) -L $(HOTSPOT_TOPDIR) -name ".hg" -prune -o -print)
 
+# The old build creates hotspot output dir before calling hotspot and
+# not doing it breaks builds on msys.
 $(HOTSPOT_OUTPUTDIR)/_hotspot.timestamp: $(HOTSPOT_FILES)
+	@$(MKDIR) -p $(HOTSPOT_OUTPUTDIR)
 	@($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) -j1 $(HOTSPOT_MAKE_ARGS) SPEC=$(HOTSPOT_SPEC) BASE_SPEC=$(BASE_SPEC))
 	$(TOUCH) $@
 
--- a/common/makefiles/IdlCompilation.gmk	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/makefiles/IdlCompilation.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -59,7 +59,7 @@
 	$(MKDIR) -p $3/$$($4_TMPDIR)
 	$(RM) -rf $3/$$($4_TMPDIR)
 	$(MKDIR) -p $(dir $5)
-	$(ECHO) Compiling IDL $(patsubst $2/%,%,$4) 
+	$(ECHO) $(LOG_INFO) Compiling IDL $(patsubst $2/%,%,$4) 
 	$8 -td $3/$$($4_TMPDIR) \
 		-i $2/org/omg/CORBA \
 		-i $2/org/omg/PortableInterceptor \
@@ -79,15 +79,9 @@
 # param 1 is for example BUILD_IDLS
 # param 2,3,4,5,6,7,8 are named args.
 #    IDLJ,SRC,BIN,INCLUDES,EXCLUDES,OLDIMPLBASES,DELETES
-$(if $2,$1_$(strip $2))
-$(if $3,$1_$(strip $3))
-$(if $4,$1_$(strip $4))
-$(if $5,$1_$(strip $5))
-$(if $6,$1_$(strip $6))
-$(if $7,$1_$(strip $7))
-$(if $8,$1_$(strip $8))
-$(if $9,$1_$(strip $9))
-$(if $(10),$(error Internal makefile error: Too many arguments to SetupIdlCompilation, please update IdlCompilation.gmk))
+$(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+$(call LogSetupMacroEntry,SetupIdlCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))
+$(if $(16),$(error Internal makefile error: Too many arguments to SetupIdlCompilation, please update IdlCompilation.gmk))
 
 # Remove any relative addressing in the paths.
 $1_SRC := $$(abspath $$($1_SRC))
--- a/common/makefiles/JavaCompilation.gmk	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/makefiles/JavaCompilation.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -50,27 +50,17 @@
     #   FLAGS:=Flags to be supplied to javac
     #   SERVER_DIR:=Use a javac server (-XDserver) and store the server related files here
     #   SERVER_JVM:=Use this JVM for the server. Defaults to the JVM above.
-    $(if $2,$1_$(strip $2))
-    $(if $3,$1_$(strip $3))
-    $(if $4,$1_$(strip $4))
-    $(if $5,$1_$(strip $5))
-    $(if $6,$1_$(strip $6))
-    $(if $7,$1_$(strip $7))
-    $(if $8,$1_$(strip $8))
-    $(if $9,$1_$(strip $9))
-    $(if $(10),$(error Internal makefile error: Too many arguments to SetupJavaCompiler, please update JavaCompilation.gmk))
+    $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+    $(call LogSetupMacroEntry,SetupJavaCompiler($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))
+    $(if $(16),$(error Internal makefile error: Too many arguments to SetupJavaCompiler, please update JavaCompilation.gmk))
 
-    ifeq ($$(ENABLE_SJAVAC),yes)
-        # The port file contains the tcp/ip on which the server listens
-        # and the cookie necessary to talk to the server.
-        $1_JAVAC_PORTFILE:=$$($1_SERVER_DIR)/server.port
-        # You can use a different JVM to run the background javac server.
-        ifeq ($$($1_SERVER_JVM),)
-            # It defaults to the same JVM that is used to start the javac command.
-            $1_SERVER_JVM:=$$($1_JVM)
-        endif
-        # Set the $1_REMOTE to spawn a background javac server.
-        $1_REMOTE:=-XDserver:portfile=$$($1_JAVAC_PORTFILE),poolsize=$(SJAVAC_SERVER_CORES),id=$1,javac=$$(subst $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_SERVER_JVM) $$($1_JAVAC))))
+    # The port file contains the tcp/ip on which the server listens
+    # and the cookie necessary to talk to the server.
+    $1_SJAVAC_PORTFILE:=$$($1_SERVER_DIR)/server.port
+    # You can use a different JVM to run the background javac server.
+    ifeq ($$($1_SERVER_JVM),)
+        # It defaults to the same JVM that is used to start the javac command.
+        $1_SERVER_JVM:=$$($1_JVM)
     endif
 endef
 
@@ -92,19 +82,11 @@
     #                  added to the archive.
     #    EXTRA_MANIFEST_ATTR:=Extra attribute to add to manifest.
     #    CHECK_COMPRESS_JAR Check the COMPRESS_JAR variable
-    $(if $3,$1_$(strip $3))
-    $(if $4,$1_$(strip $4))
-    $(if $5,$1_$(strip $5))
-    $(if $6,$1_$(strip $6))
-    $(if $7,$1_$(strip $7))
-    $(if $8,$1_$(strip $8))
-    $(if $9,$1_$(strip $9))
-    $(if $(10),$1_$(strip $(10)))
-    $(if $(11),$1_$(strip $(11)))
-    $(if $(12),$1_$(strip $(12)))
-    $(if $(13),$1_$(strip $(13)))
-    $(if $(14),$1_$(strip $(14)))
-    $(if $(15),$1_$(strip $(15)))
+
+    # NOTE: $2 is dependencies, not a named argument!
+    $(foreach i,3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+    $(call LogSetupMacroEntry,SetupArchive($1),<dependencies>,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))
+    $(if $(findstring $(LOG),debug trace), $(info *[2] <dependencies> = $(strip $2)))
     $(if $(16),$(error Internal makefile error: Too many arguments to SetupArchive, please update JavaCompilation.gmk))
 
     $1_JARMAIN:=$(strip $$($1_JARMAIN))
@@ -125,16 +107,28 @@
     ifneq (,$$($1_INCLUDES))
         $1_GREP_INCLUDE_PATTERNS:=$$(foreach src,$$($1_SRCS),\
 					$$(addprefix $$(src)/,$$($1_INCLUDES)))
-        $$(eval $$(call ListPathsSafelyNow,$1_GREP_INCLUDE_PATTERNS,\n, \
+        # If there are a lot of include patterns, output to file to shorten command lines
+        ifeq ($$(word 20,$$($1_GREP_INCLUDE_PATTERNS)),)
+            $1_GREP_INCLUDES:=| $(GREP) $$(patsubst %,$(SPACE)-e$(SPACE)$(DQUOTE)%$(DQUOTE),$$($1_GREP_INCLUDE_PATTERNS))
+        else
+            $$(shell $(RM) $$($1_BIN)/_the.$$($1_JARNAME)_include)
+            $$(eval $$(call ListPathsSafelyNow,$1_GREP_INCLUDE_PATTERNS,\n, \
 			>> $$($1_BIN)/_the.$$($1_JARNAME)_include))
-        $1_GREP_INCLUDES:=| $(GREP) -f $$($1_BIN)/_the.$$($1_JARNAME)_include
+            $1_GREP_INCLUDES:=| $(GREP) -f $$($1_BIN)/_the.$$($1_JARNAME)_include
+        endif
     endif
     ifneq (,$$($1_EXCLUDES)$$($1_EXCLUDE_FILES))
         $1_GREP_EXCLUDE_PATTERNS:=$$(foreach src,$$($1_SRCS),$$(addprefix $$(src)/,\
 		$$($1_EXCLUDES) $$($1_EXCLUDE_FILES)))
-        $$(eval $$(call ListPathsSafelyNow,$1_GREP_EXCLUDE_PATTERNS,\n, \
+        # If there are a lot of include patterns, output to file to shorten command lines
+        ifeq ($$(word 20,$$($1_GREP_EXCLUDE_PATTERNS)),)
+            $1_GREP_EXCLUDES:=| $(GREP) -v $$(patsubst %,$(SPACE)-e$(SPACE)$(DQUOTE)%$(DQUOTE),$$($1_GREP_EXCLUDE_PATTERNS))
+        else
+            $$(shell $(RM) $$($1_BIN)/_the.$$($1_JARNAME)_exclude)
+            $$(eval $$(call ListPathsSafelyNow,$1_GREP_EXCLUDE_PATTERNS,\n, \
 			>> $$($1_BIN)/_the.$$($1_JARNAME)_exclude))
-        $1_GREP_EXCLUDES:=| $(GREP) -v -f $$($1_BIN)/_the.$$($1_JARNAME)_exclude
+            $1_GREP_EXCLUDES:=| $(GREP) -v -f $$($1_BIN)/_the.$$($1_JARNAME)_exclude
+        endif
     endif
 
     # Check if this jar needs to have its index generated.
@@ -149,11 +143,13 @@
     ifneq (,$2)
         $1_DEPS:=$2
     else
-        $1_DEPS:=$$(foreach src,$$($1_SRCS),$$(shell ($(FIND) $$(src) -type f \
-			-a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \
-			$$($1_GREP_EXCLUDES) && $(ECHO) $$(addprefix $$(src)/,$$($1_EXTRA_FILES)))))
+        # The subst of \ is needed because $ has to be escaped with \ in EXTRA_FILES for the command 
+        # lines, but not here for use in make dependencies.
+        $1_DEPS:=$$(shell $(FIND) $$($1_SRCS) -type f -a \( $$($1_FIND_PATTERNS) \) \
+			  $$($1_GREP_INCLUDES) $$($1_GREP_EXCLUDES)) \
+		 $$(subst \,,$$(foreach src,$$($1_SRCS),$$(addprefix $$(src)/,$$($1_EXTRA_FILES))))
         ifeq (,$$($1_SKIP_METAINF))
-            $1_DEPS+=$$(foreach src,$$($1_SRCS),$$(shell $(FIND) $$(src)/META-INF -type f 2> /dev/null))
+            $1_DEPS+=$$(shell $(FIND) $$(addsuffix /META-INF,$$($1_SRCS)) -type f 2> /dev/null))
         endif
     endif
 
@@ -161,34 +157,39 @@
 
     # The capture contents macro finds all files (matching the patterns, typically
     # .class and .prp) that are newer than the jar-file, ie the new content to be put into the jar.
-    $1_CAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS),(($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) -a -newer $$@ $$($1_GREP_INCLUDES) $$($1_GREP_EXCLUDES) && $(ECHO) $$($1_EXTRA_FILES)) | $(SED) 's|$$(src)/||g' > $$(src)/_the.$$($1_JARNAME)_contents) && )
+    $1_CAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS),\
+                   (($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) -a -newer $$@ $$($1_GREP_INCLUDES) \
+                       $$($1_GREP_EXCLUDES) | $(SED) 's|$$(src)/||g' &&\
+                       $(ECHO) $$(subst $$(src)/,,$$($1_EXTRA_FILES))) > \
+                       $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE))
     # The capture metainf macro finds all files below the META-INF directory that are newer than the jar-file.
     ifeq (,$$($1_SKIP_METAINF))
-        $1_CAPTURE_METAINF =$$(foreach src,$$($1_SRCS),($(FIND) $$(src)/META-INF -type f -a -newer $$@ 2> /dev/null | $(SED) 's|$$(src)/||g' >> $$(src)/_the.$$($1_JARNAME)_contents ) && )
+        $1_CAPTURE_METAINF =$$(foreach src,$$($1_SRCS),($(FIND) $$(src)/META-INF -type f -a -newer $$@ 2> /dev/null | $(SED) 's|$$(src)/||g' >> $$(src)/_the.$$($1_JARNAME)_contents ) $$(NEWLINE))
     endif
     # The capture deletes macro finds all deleted files and concatenates them. The resulting file
     # tells us what to remove from the jar-file.
-    $1_CAPTURE_DELETES=$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name _the.package.deleted -newer $$@ -exec $(SED) 's|$$(src)||g' \{\} >> $$($1_DELETES_FILE) \;) &&)
+    $1_CAPTURE_DELETES=$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name _the.package.deleted -newer $$@ -exec $(SED) 's|$$(src)||g' \{\} >> $$($1_DELETES_FILE) \;) $$(NEWLINE))
     # The update contents macro updates the jar file with the previously capture contents.
     $1_UPDATE_CONTENTS=$$(foreach src,$$($1_SRCS),\
                     (cd $$(src) && \
                      if [ -s _the.$$($1_JARNAME)_contents ]; then \
                          $(ECHO) "  updating" `$(WC) -l _the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'` files && \
                          $(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @_the.$$($1_JARNAME)_contents; \
-                     fi) &&)
+                     fi) $$(NEWLINE))
     # The s-variants of the above macros are used when the jar is created from scratch.
     $1_SCAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS),\
                     (($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \
-			$$($1_GREP_EXCLUDES) && $(ECHO) $$($1_EXTRA_FILES)) | $(SED) 's|$$(src)/||g' > \
-			$$(src)/_the.$$($1_JARNAME)_contents) && )
+			$$($1_GREP_EXCLUDES) | $(SED) 's|$$(src)/||g' &&\
+			$$(subst $$(src)/,,$(ECHO) $$($1_EXTRA_FILES))) > \
+			$$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE))
 
     ifeq (,$$($1_SKIP_METAINF))
         $1_SCAPTURE_METAINF=$$(foreach src,$$($1_SRCS),\
                     ($(FIND) $$(src)/META-INF -type f 2> /dev/null | $(SED) 's|$$(src)/||g' >> \
-			$$(src)/_the.$$($1_JARNAME)_contents) && )
+			$$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE))
     endif
     $1_SUPDATE_CONTENTS=$$(foreach src,$$($1_SRCS),\
-                    (cd $$(src) && $(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @$$(src)/_the.$$($1_JARNAME)_contents) &&)
+                    (cd $$(src) && $(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @$$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE))
 
     # Use a slightly shorter name for logging, but with enough path to identify this jar.
     $1_NAME:=$$(subst $$(OUTPUT_ROOT)/,,$$($1_JAR))
@@ -208,38 +209,32 @@
     # Here is the rule that creates/updates the jar file.
     $$($1_JAR) : $$($1_DEPS)
 	$(MKDIR) -p $$($1_BIN)
-	if [ -n "$$($1_MANIFEST)" ]; then \
+	$$(if $$($1_MANIFEST),\
 		$(SED) -e "s#@@RELEASE@@#$(RELEASE)#"           \
-		       -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" $$($1_MANIFEST) > $$($1_MANIFEST_FILE); \
-	else \
-		$(RM) $$($1_MANIFEST_FILE) && $(TOUCH) $$($1_MANIFEST_FILE); \
-	fi
-	if [ -n "$$(strip $$($1_JARMAIN))" ]; then \
-		$(ECHO) "Main-Class: $$(strip $$($1_JARMAIN))" >> $$($1_MANIFEST_FILE); \
-	fi
-	if [ -n "$$($1_EXTRA_MANIFEST_ATTR)" ]; then \
-		$(PRINTF) "$$($1_EXTRA_MANIFEST_ATTR)\n" >> $$($1_MANIFEST_FILE); \
-	fi
-	+if [ -s $$@ ]; then \
-		$(ECHO) Modifying $$($1_NAME) && \
+		       -e "s#@@COMPANY_NAME@@#$(COMPANY_NAME)#" $$($1_MANIFEST) > $$($1_MANIFEST_FILE) \
+	,\
+		$(RM) $$($1_MANIFEST_FILE) && $(TOUCH) $$($1_MANIFEST_FILE))
+	$$(if $$($1_JARMAIN),$(ECHO) "Main-Class: $$(strip $$($1_JARMAIN))" >> $$($1_MANIFEST_FILE))
+	$$(if $$($1_EXTRA_MANIFEST_ATTR),$(PRINTF) "$$($1_EXTRA_MANIFEST_ATTR)\n" >> $$($1_MANIFEST_FILE))
+	$$(if $$(wildcard $$@),\
+		$(ECHO) Modifying $$($1_NAME) $$(NEWLINE)\
 		$$($1_CAPTURE_CONTENTS) \
 		$$($1_CAPTURE_METAINF) \
-		$(RM) $$($1_DELETES_FILE) && \
+		$(RM) $$($1_DELETES_FILE) $$(NEWLINE)\
 		$$($1_CAPTURE_DELETES) \
-		$(CAT) $$($1_DELETES_FILE) > $$($1_DELETESS_FILE) && \
+		$(CAT) $$($1_DELETES_FILE) > $$($1_DELETESS_FILE) $$(NEWLINE)\
 		if [ -s $$($1_DELETESS_FILE) ]; then \
 			$(ECHO) "  deleting" `$(WC) -l $$($1_DELETESS_FILE) | $(AWK) '{ print $$$$1 }'` files && \
 	                       $(ZIP) -q -d $$@ `$(CAT) $$($1_DELETESS_FILE)` ; \
-		fi && \
-		$$($1_UPDATE_CONTENTS) true && \
-		$$($1_JARINDEX) && true ; \
-	else \
-		$(ECHO) Creating $$($1_NAME) && $(JAR) $$($1_JAR_CREATE_OPTIONS) $$@ $$($1_MANIFEST_FILE) && \
+		fi $$(NEWLINE) \
+		$$($1_UPDATE_CONTENTS) true $$(NEWLINE) \
+		$$($1_JARINDEX) && true \
+	,\
+		$(ECHO) Creating $$($1_NAME) && $(JAR) $$($1_JAR_CREATE_OPTIONS) $$@ $$($1_MANIFEST_FILE) $$(NEWLINE) \
 	        $$($1_SCAPTURE_CONTENTS) \
 		$$($1_SCAPTURE_METAINF) \
 		$$($1_SUPDATE_CONTENTS) \
-		$$($1_JARINDEX) && true ; \
-	fi; 
+		$$($1_JARINDEX) && true ) 
 
 endef
 
@@ -247,15 +242,9 @@
     # param 1 is for example ZIP_MYSOURCE
     # param 2,3,4,5,6,7,8,9 are named args.
     #    SRC,ZIP,INCLUDES,EXCLUDES,EXCLUDE_FILES,SUFFIXES,EXTRA_DEPS
-    $(if $2,$1_$(strip $2))
-    $(if $3,$1_$(strip $3))
-    $(if $4,$1_$(strip $4))
-    $(if $5,$1_$(strip $5))
-    $(if $6,$1_$(strip $6))
-    $(if $7,$1_$(strip $7))
-    $(if $8,$1_$(strip $8))
-    $(if $9,$1_$(strip $9))
-    $(if $(10),$(error Internal makefile error: Too many arguments to SetupZipArchive, please update JavaCompilation.gmk))
+    $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+    $(call LogSetupMacroEntry,SetupZipArchive($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))
+    $(if $(16),$(error Internal makefile error: Too many arguments to SetupZipArchive, please update JavaCompilation.gmk))
 
     # Find all files in the source tree.
     $1_SUFFIX_FILTER := $$(patsubst %,-o -name $(DQUOTE)*%$(DQUOTE),$$($1_SUFFIXES))
@@ -274,7 +263,7 @@
     ifneq ($$($1_EXCLUDES),)
         $1_SRC_EXCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_EXCLUDES))))
         $1_ZIP_EXCLUDES := $$(addprefix -x$(SPACE)$(DQUOTE),$$(addsuffix /*$(DQUOTE),$$($1_EXCLUDES)))
-        $1_ALL_SRCS     := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRC))
+        $1_ALL_SRCS     := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_ALL_SRCS))
     endif
 
     # Use a slightly shorter name for logging, but with enough path to identify this zip.
@@ -288,7 +277,7 @@
     $$($1_ZIP) : $$($1_ALL_SRCS) $$($1_EXTRA_DEPS)
 		$(MKDIR) -p $$(@D)
 		$(ECHO) Updating $$($1_NAME)
-		$$(foreach i,$$($1_SRC),(cd $$i && $(ZIP) -qru $$@ . $$($1_ZIP_INCLUDES) $$($1_ZIP_EXCLUDES) -x \*_the.\* $$(addprefix -x$(SPACE),$$(patsubst $$i/%,%,$$($1_EXCLUDE_FILES)))) ;) true
+		$$(foreach i,$$($1_SRC),(cd $$i && $(ZIP) -qru $$@ . $$($1_ZIP_INCLUDES) $$($1_ZIP_EXCLUDES) -x \*_the.\* $$(addprefix -x$(SPACE),$$(patsubst $$i/%,%,$$($1_EXCLUDE_FILES))))$$(NEWLINE)) true
 		$(TOUCH) $$@
 endef
 
@@ -324,7 +313,7 @@
     $$($1_BIN)$$($2_TARGET) : $2
 	$(MKDIR) -p $$(@D)
 	$(CAT) $$< | $(SED) -e 's/\([^\\]\):/\1\\:/g' -e  's/\([^\\]\)=/\1\\=/g' -e 's/#.*/#/g' \
-                   | $(SED) -f "$(SRC_ROOT)/common/bin/unicode2x.sed" \
+                   | $(SED) -f "$(SRC_ROOT)/common/makefiles/support/unicode2x.sed" \
 		   | $(SED) -e '/^#/d' -e '/^$$$$/d' \
 		            -e :a -e '/\\$$$$/N; s/\\\n//; ta' \
 			    -e 's/^[ \t]*//;s/[ \t]*$$$$//' \
@@ -364,36 +353,27 @@
     #                                     Its only here until we cleanup some nasty source code pasta in the jdk.
     #    HEADERS:=path to directory where all generated c-headers are written.
     #    DEPENDS:=Extra dependecy
-    $(if $2,$1_$(strip $2))
-    $(if $3,$1_$(strip $3))
-    $(if $4,$1_$(strip $4))
-    $(if $5,$1_$(strip $5))
-    $(if $6,$1_$(strip $6))
-    $(if $7,$1_$(strip $7))
-    $(if $8,$1_$(strip $8))
-    $(if $9,$1_$(strip $9))
-    $(if $(10),$1_$(strip $(10)))
-    $(if $(11),$1_$(strip $(11)))
-    $(if $(12),$1_$(strip $(12)))
-    $(if $(13),$1_$(strip $(13)))
-    $(if $(14),$1_$(strip $(14)))
-    $(if $(15),$(error Internal makefile error: Too many arguments to SetupJavaCompilation, please update JavaCompilation.gmk))
+    $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+    $(call LogSetupMacroEntry,SetupJavaCompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))
+    $(if $(16),$(error Internal makefile error: Too many arguments to SetupJavaCompilation, please update JavaCompilation.gmk))
 
     # Extract the info from the java compiler setup.
-    $1_REMOTE := $$($$($1_SETUP)_REMOTE)
     $1_JVM   := $$($$($1_SETUP)_JVM)
     $1_JAVAC := $$($$($1_SETUP)_JAVAC)
     $1_FLAGS := $$($$($1_SETUP)_FLAGS) $(JAVAC_FLAGS) $$($1_ADD_JAVAC_FLAGS)
     ifeq ($$($1_JAVAC),)
         $$(error The Java compilation $1 refers to a non-existant java compiler setup $$($1_SETUP))
     endif
+    $1_SJAVAC_PORTFILE := $$($$($1_SETUP)_SJAVAC_PORTFILE)
+    $1_SERVER_JVM := $$($$($1_SETUP)_SERVER_JVM)
 
     # Handle addons and overrides.
     $1_SRC:=$$(call ADD_SRCS,$$($1_SRC))
     # Make sure the dirs exist.
-    $$(shell $(MKDIR) -p $$($1_SRC) $$($1_BIN))
+    $$(foreach d,$$($1_SRC), $$(if $$(wildcard $$d),,$$(error SRC specified to SetupJavaCompilation $1 contains missing directory $$d)))
+    $$(eval $$(call MakeDir,$$($1_BIN)))
     # Find all files in the source trees.
-    $1_ALL_SRCS := $$(filter-out $(OVR_SRCS),$$(foreach i,$$($1_SRC),$$(shell $(FIND) $$i -type f)))
+    $1_ALL_SRCS := $$(filter-out $(OVR_SRCS),$$(shell $(FIND) $$($1_SRC) -type f))
     # Extract the java files.
     ifneq ($$($1_EXCLUDE_FILES),)
         $1_EXCLUDE_FILES_PATTERN:=$$(addprefix %,$$($1_EXCLUDE_FILES))
@@ -428,7 +408,7 @@
         # Rewrite list of patterns into a find statement.
         $1_COPY_PATTERN:=$(FALSE_FIND_PATTERN) $$(patsubst %,$(SPACE)-o$(SPACE)-name$(SPACE)$(DQUOTE)*%$(DQUOTE),$$($1_COPY))
         # Search for all files to be copied.
-        $1_ALL_COPIES := $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i \( $$($1_COPY_PATTERN) \) -a -type f))
+        $1_ALL_COPIES := $$(filter $$(addprefix %,$$($1_COPY)),$$($1_ALL_SRCS))
         # Copy these explicitly
         $1_ALL_COPIES += $$($1_COPY_FILES)
         # Copy must also respect filters.
@@ -442,7 +422,7 @@
             $1_ALL_COPIES := $$(filter-out $$($1_EXCLUDE_FILES_PATTERN),$$($1_ALL_COPIES))
         endif
         # All files below META-INF are always copied.
-        $1_ALL_COPIES += $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i/META-INF -type f 2> /dev/null))
+        $1_ALL_COPIES += $$(filter $$(addsuffix /META-INF%,$$($1_SRC)),$$($1_ALL_SRCS))
         ifneq (,$$($1_ALL_COPIES))
             # Yep, there are files to be copied!
             $1_ALL_COPY_TARGETS:=
@@ -456,7 +436,7 @@
         # Rewrite list of patterns into a find statement.
         $1_CLEAN_PATTERN:=$(FALSE_FIND_PATTERN) $$(patsubst %,$(SPACE)-o$(SPACE)-name$(SPACE)$(DQUOTE)*%$(DQUOTE),$$($1_CLEAN))
         # Search for all files to be copied.
-        $1_ALL_CLEANS := $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i \( $$($1_CLEAN_PATTERN) \) -a -type f))
+        $1_ALL_CLEANS := $$(filter $$(addprefix %,$$($1_CLEAN)),$$($1_ALL_SRCS))
         # Copy and clean must also respect filters.
         ifneq (,$$($1_INCLUDES))
             $1_ALL_CLEANS := $$(filter $$($1_SRC_INCLUDES),$$($1_ALL_CLEANS))
@@ -482,30 +462,59 @@
       $$(eval $$(call replace_space_with_pathsep,$1_SRCROOTSC,$$($1_SRC)))
     endif
 
-    ifneq (,$$($1_HEADERS))
-        $1_HEADERS_ARG := -h $$($1_HEADERS)
-    endif
-
     # Create a sed expression to remove the source roots and to replace / with .
     # and remove .java at the end. 
     $1_REWRITE_INTO_CLASSES:=$$(foreach i,$$($1_SRC),-e 's|$$i/||g') -e 's|/|.|g' -e 's|.java$$$$||g'
 
     ifeq ($$($1_DISABLE_SJAVAC)x$$(ENABLE_SJAVAC),xyes)
+        ifneq (,$$($1_HEADERS))
+            $1_HEADERS_ARG := -h $$($1_HEADERS)
+        endif
+
         # Using sjavac to compile. 
         $1 := $$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS) $$($1_BIN)/javac_state
 
+        # Create SJAVAC variable,
+        # expects $1_JAVAC to be "bootclasspathprepend -jar ...javac.jar"
+        # and it is rewritten into "bootclasspathprepend com.sun.tools.sjavac.Main"
+        $1_SJAVAC:=$$(word 1,$$($1_JAVAC)) -cp $$(word 3,$$($1_JAVAC)) com.sun.tools.sjavac.Main
+
+        # Set the $1_REMOTE to spawn a background javac server.
+        $1_REMOTE:=--server:portfile=$$($1_SJAVAC_PORTFILE),poolsize=$(SJAVAC_SERVER_CORES),id=$1,sjavac=$$(subst $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_SERVER_JVM) $$($1_SJAVAC))))
+
         $$($1_BIN)/javac_state: $$($1_SRCS) $$($1_DEPENDS)
 		$(MKDIR) -p $$(@D)
 		$$(call ListPathsSafely,$1_SRCS,\n, >> $$($1_BIN)/_the.batch.tmp)
 		$(ECHO) Compiling $1
-		$$($1_JVM) $$(word 1,$$($1_JAVAC)) com.sun.tools.sjavac.Main \
-			$$($1_REMOTE) $$($1_SJAVAC_ARGS) --permit-unidentified-artifacts -mfl $$($1_BIN)/_the.batch.tmp \
+		$$($1_JVM) $$($1_SJAVAC) \
+			$$($1_REMOTE) $$($1_SJAVAC_ARGS) \
+			--permit-unidentified-artifacts \
+			--permit-sources-without-package \
+			--compare-found-sources $$($1_BIN)/_the.batch.tmp \
 			$$($1_FLAGS) \
 			-implicit:none -d $$($1_BIN) $$($1_HEADERS_ARG)
     else
         # Using plain javac to batch compile everything.
         $1 := $$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS) $$($1_BIN)/_the.batch
 
+        # When buliding in batch, put headers in a temp dir to filter out those that actually
+        # changed before copying them to the real header dir.
+        ifneq (,$$($1_HEADERS))
+            $1_HEADERS_ARG := -h $$($1_HEADERS).tmp
+
+            $$($1_HEADERS)/_the.headers: $$($1_BIN)/_the.batch
+		$(MKDIR) -p $$(@D)
+		for f in `ls $$($1_HEADERS).tmp`; do \
+		  if [ ! -f "$$($1_HEADERS)/$$$$f" ] || [ "`$(DIFF) $$($1_HEADERS)/$$$$f $$($1_HEADERS).tmp/$$$$f`" != "" ]; then \
+		    $(CP) -f $$($1_HEADERS).tmp/$$$$f $$($1_HEADERS)/$$$$f; \
+		  fi; \
+		done
+		$(RM) -r $$($1_HEADERS).tmp
+		$(TOUCH) $$@
+
+            $1 += $$($1_HEADERS)/_the.headers
+        endif
+
         # When not using sjavac, pass along all sources to javac using an @file.
         $$($1_BIN)/_the.batch: $$($1_SRCS) $$($1_DEPENDS)
 		$(MKDIR) -p $$(@D)
@@ -516,6 +525,7 @@
 			-implicit:none -sourcepath "$$($1_SRCROOTSC)" \
 			-d $$($1_BIN) $$($1_HEADERS_ARG) @$$($1_BIN)/_the.batch.tmp && \
 			$(MV) $$($1_BIN)/_the.batch.tmp $$($1_BIN)/_the.batch)
+
     endif
 
     # Check if a jar file was specified, then setup the rules for the jar.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/makefiles/Main.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,208 @@
+#
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.  Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+### This is the main part of the Makefile, for the normal case with SPEC specifying a single existing spec.gmk file.
+
+# Now load the spec
+include $(SPEC)
+
+# Load the vital tools for all the makefiles. 
+include $(SRC_ROOT)/common/makefiles/MakeBase.gmk
+
+# Include the corresponding custom file, if present.
+-include $(CUSTOM_MAKE_DIR)/Main.gmk
+
+### Clean up from previous run
+
+# Remove any build.log from a previous run, if they exist
+ifneq (,$(BUILD_LOG))
+    ifneq (,$(BUILD_LOG_PREVIOUS))
+        # Rotate old log
+        $(shell $(RM) $(BUILD_LOG_PREVIOUS) 2> /dev/null)
+        $(shell $(MV) $(BUILD_LOG) $(BUILD_LOG_PREVIOUS) 2> /dev/null)
+    else
+        $(shell $(RM) $(BUILD_LOG) 2> /dev/null)
+    endif
+    $(shell $(RM) $(OUTPUT_ROOT)/build-trace-time.log 2> /dev/null)
+endif
+# Remove any javac server logs and port files. This
+# prevents a new make run to reuse the previous servers.
+ifneq (,$(SJAVAC_SERVER_DIR))
+    $(shell $(MKDIR) -p $(SJAVAC_SERVER_DIR) && $(RM) -rf $(SJAVAC_SERVER_DIR)/*)
+endif
+
+# Reset the build timers.
+$(eval $(call ResetAllTimers))
+
+# Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
+# hence this workaround.
+ifeq ($(JOBS),)
+    JOBS=$(NUM_CORES)
+endif
+MAKE_ARGS:=$(MAKE_ARGS) -j$(JOBS)
+
+### Main targets
+
+all: jdk
+
+start-make:
+	@$(call AtMakeStart)
+
+langtools: langtools-only
+langtools-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(LANGTOOLS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildLangtools.gmk)
+	@$(call TargetExit)
+
+corba: langtools corba-only
+corba-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(CORBA_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildCorba.gmk)
+	@$(call TargetExit)
+
+jaxp: langtools jaxp-only
+jaxp-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(JAXP_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJaxp.gmk)
+	@$(call TargetExit)
+
+jaxws: langtools jaxp jaxws-only
+jaxws-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(JAXWS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJaxws.gmk)
+	@$(call TargetExit)
+
+hotspot: hotspot-only
+hotspot-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f HotspotWrapper.gmk)
+	@$(call TargetExit)
+
+jdk: langtools hotspot corba jaxp jaxws jdk-only
+jdk-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk $(JDK_TARGET))
+	@$(call TargetExit)
+
+demos: jdk demos-only
+demos-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk demos)
+	@$(call TargetExit)
+
+images: source-tips demos images-only
+images-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk images)
+	@$(call TargetExit)
+
+overlay-images: source-tips demos overlay-images-only
+overlay-images-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk overlay-images)
+	@$(call TargetExit)
+
+bundles: images bundles-only
+bundles-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk bundles)
+	@$(call TargetExit)
+
+install: images install-only
+install-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f BuildJdk.gmk install)
+	@$(call TargetExit)
+
+docs: jdk docs-only
+docs-only: start-make
+	@$(call TargetEnter)
+	@($(CD) $(SRC_ROOT)/common/makefiles/javadoc && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs)
+	@$(call TargetExit)
+
+bootcycle-images:
+	@$(ECHO) Boot cycle build step 1: Building the JDK image normally
+	@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(SPEC) images)
+	@$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image
+	@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(dir $(SPEC))bootcycle-spec.gmk images)
+
+test: start-make
+	@$(call TargetEnter)
+	@($(CD) $(SRC_ROOT)/test && $(BUILD_LOG_WRAPPER) $(MAKE) MAKEFLAGS= -j1 PRODUCT_HOME=$(OUTPUT_ROOT)/jdk JPRT_JAVA_HOME=$(OUTPUT_ROOT)/jdk ALT_OUTPUTDIR=$(OUTPUT_ROOT) $(TEST)) || true
+	@$(call TargetExit)
+
+# Stores the tips for each repository. This file is be used when constructing the jdk image and can be
+# used to track the exact sources used to build that image.
+source-tips: $(OUTPUT_ROOT)/source_tips
+$(OUTPUT_ROOT)/source_tips: FRC
+	@$(MKDIR) -p $(@D)
+	@$(RM) $@
+	@$(if $(HG),$(call GetSourceTips),$(ECHO) "hg not installed" > $@)
+
+
+# Remove everything, except the output from configure.
+clean: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images clean-overlay-images clean-bootcycle-build
+	@($(CD) $(OUTPUT_ROOT) && $(RM) -r tmp source_tips build.log* build-trace*.log*)
+	@$(ECHO) Cleaned all build artifacts.
+
+# Remove everything, including configure configuration.
+# If the output directory was created by configure and now becomes empty, remove it as well.
+# FIXME: tmp should not be here, fix ResetTimers instead. And remove spec.sh!
+dist-clean: clean
+	@($(CD) $(OUTPUT_ROOT) && $(RM) -r *spec.gmk config.* configure-arguments Makefile compare.sh spec.sh tmp)
+	@$(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \
+    if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \
+        $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ;\
+    else \
+        ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" && $(RM) -r $(OUTPUT_ROOT)) \
+    fi \
+  )
+	@$(ECHO) Cleaned everything, you will have to re-run configure.
+
+clean-langtools:
+	$(call CleanComponent,langtools)
+clean-corba:
+	$(call CleanComponent,corba)
+clean-jaxp:
+	$(call CleanComponent,jaxp)
+clean-jaxws:
+	$(call CleanComponent,jaxws)
+clean-hotspot:
+	$(call CleanComponent,hotspot)
+clean-jdk:
+	$(call CleanComponent,jdk)
+clean-images:
+	$(call CleanComponent,images)
+clean-overlay-images:
+	$(call CleanComponent,overlay-images)
+clean-bootcycle-build:
+	$(call CleanComponent,bootcycle-build)
+
+.PHONY: langtools corba jaxp jaxws hotspot jdk images overlay-images install
+.PHONY: langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only images-only overlay-images-only install-only
+.PHONY: all test clean dist-clean bootcycle-images start-make
+.PHONY: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images clean-overlay-images clean-bootcycle-build
+
+FRC: # Force target
--- a/common/makefiles/MakeBase.gmk	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/makefiles/MakeBase.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -33,129 +33,13 @@
 ifndef _MAKEBASE_GMK
 _MAKEBASE_GMK := 1
 
-ifeq (,$(findstring 3.81,$(MAKE_VERSION)))
-    ifeq (,$(findstring 3.82,$(MAKE_VERSION)))
-        $(error This version of GNU Make is too low ($(MAKE_VERSION)). Please upgrade to 3.81 or newer.)
-    endif
-endif
-
-ifneq (,$(CYGPATH))
-    # Cygwin styff, if needed but most is going to be
-    # done in configure!
-    ifeq (yes,$(CHECK_FOR_VCINSTALLDIR))
-        ifeq (,$(VCINSTALLDIR)) 
-            $(info Could not find compiler paths!)
-            $(info You probably configured the build from within a)
-            $(info VS command prompt, but you are not using such a)
-            $(info prompt right now.)
-            $(info If you instead run configure from a plain cygwin shell, it)
-            $(info will attempt to setup VS for you! Please try that.)
-            $(error Giving up for now.)
-        endif
-    endif
-endif
-
-# The build times report is turned off by setting REPORT_BUILD_TIMES to nothing.
-# This is necessary for the target clean which will erase the
-# directories where the buildtimes are stored.
-REPORT_BUILD_TIMES=1
-# Store the build times in this directory.
-BUILDTIMESDIR=$(OUTPUT_ROOT)/tmp/buildtimes
-
-# Record starting time for build of a sub repository.
-define RecordStartTime
-$(MKDIR) -p $(BUILDTIMESDIR)
-$(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_start_$1
-$(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_start_$1_human_readable
-endef
-
-# Indicate that we started to build a sub repository and record starting time. 
-define MakeStart
-$(call RecordStartTime,$1)
-$(BUILD_LOG_WRAPPER) $(PRINTF) "\n\n%s\n%s\n##### %-60.60s #####\n%s\n\n" \
-"########################################################################" \
-"########################################################################" \
-"Entering $1 for target(s) $2" \
-"########################################################################"
-endef
-
-# Record ending time and calculate the difference and store it in a
-# easy to read format. Handles builds that cross midnight. Expects
-# that a build will never take 24 hours or more. 
-define RecordEndTime
-$(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_end_$1
-$(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_end_$1_human_readable
-$(ECHO) `$(CAT) $(BUILDTIMESDIR)/build_time_start_$1` `$(CAT) $(BUILDTIMESDIR)/build_time_end_$1` $1 | \
-  $(NAWK) '{ F=$$7; T=$$14; if (F > T) { T+=3600*24 }; D=T-F; H=int(D/3600); \
-             M=int((D-H*3600)/60); S=D-H*3600-M*60; printf("%02d:%02d:%02d %s\n",H,M,S,$$15); }' \
-  > $(BUILDTIMESDIR)/build_time_diff_$1
-endef
-
-# Check if the current target is the final target, as specified by
-# the user on the command line. If so, call PrintEndMessage.
-define CheckIfFinished
-$(if $(filter $@,$(MAKECMDGOALS)),$(call PrintEndMessage))
-# If no taget is given, "all" is default. Check for that, too.
-# At most one of the tests can be true.
-$(if $(MAKECMDGOALS),,$(if $(filter $@,all),$(call PrintEndMessage)))
-endef
-
-# Indicate that we are done.
-# Record ending time and print out the total time it took to build.
-define MakeFinish 
-$(if $(REPORT_BUILD_TIMES),$(call RecordEndTime,$1),) 
-$(BUILD_LOG_WRAPPER) $(PRINTF) "%s\n##### %-60.60s #####\n%s\n##### %-60.60s #####\n%s\n\n" \
-"########################################################################" \
-"Leaving $1 for target(s) $2" \
-"########################################################################" \
-$(if $(REPORT_BUILD_TIMES),"Build time `$(CAT) $(BUILDTIMESDIR)/build_time_diff_$1` for target(s) $2","") \
-"########################################################################"
-$(call CheckIfFinished)
-endef
-
-# Find all build_time_* files and print their contents in a list sorted
-# on the name of the sub repository.
-define ReportBuildTimes
-$(BUILD_LOG_WRAPPER) $(PRINTF) -- "-- Build times ----------\nTarget %s\nStart %s\nEnd   %s\n%s\n%s\n-------------------------\n" \
-"$1" \
-"`$(CAT) $(BUILDTIMESDIR)/build_time_start_TOTAL_human_readable`" \
-"`$(CAT) $(BUILDTIMESDIR)/build_time_end_TOTAL_human_readable`" \
-"`$(LS) $(BUILDTIMESDIR)/build_time_diff_* | $(GREP) -v _TOTAL | $(XARGS) $(CAT) | $(SORT) -k 2`" \
-"`$(CAT) $(BUILDTIMESDIR)/build_time_diff_TOTAL`"
-endef
-
-define ResetTimers
-$$(shell $(MKDIR) -p $(BUILDTIMESDIR) &&  $(RM) $(BUILDTIMESDIR)/build_time_*)
-endef
-
-define StartTimer
-	$(call RecordStartTime,TOTAL)
-endef
-
-define StopTimer
-	$(if $(REPORT_BUILD_TIMES),$(call RecordEndTime,TOTAL) && $(call ReportBuildTimes,$1),)
-endef
-
-# Hook to be called as the very first thing when running a normal build
-define AtRootMakeStart
-	$(if $(findstring --jobserver,$(MAKEFLAGS)), $(error make -j is not supported, use make JOBS=n))
-	$(call PrintStartMessage)
-	$(call StartTimer)
-endef
-
-# Hook to be called as the very last thing for targets that are "top level" targets
-define AtRootMakeEnd
-	$(call StopTimer)
-	$(call CheckIfFinished)
-endef
-
 # If the variable that you want to send to stdout for piping into a file or otherwise,
 # is potentially long, for example the a list of file paths, eg a list of all package directories.
 # Then you need to use ListPathsSafely, which optimistically splits the output into several shell
 # calls as well as use compression on recurrent file paths segments, to get around the potential
 # command line length problem that exists in cygwin and other shells.
-compress_pre:=$(strip $(shell cat $(SRC_ROOT)/common/makefiles/compress.pre))
-compress_post:=$(strip $(shell cat $(SRC_ROOT)/common/makefiles/compress.post))
+compress_pre:=$(strip $(shell $(CAT) $(SRC_ROOT)/common/makefiles/support/ListPathsSafely-pre-compress.incl))
+compress_post:=$(strip $(shell $(CAT) $(SRC_ROOT)/common/makefiles/support/ListPathsSafely-post-compress.incl))
 compress_paths=$(compress_pre)\
 $(subst $(SRC_ROOT),X97,\
 $(subst $(OUTPUT_ROOT),X98,\
@@ -163,7 +47,7 @@
 $(subst $(SPACE),\n,$(strip $1)))))\
 $(compress_post)
 
-decompress_paths=sed -f $(SRC_ROOT)/common/makefiles/uncompress.sed -e 's|X99|\\n|g' \
+decompress_paths=$(SED) -f $(SRC_ROOT)/common/makefiles/support/ListPathsSafely-uncompress.sed -e 's|X99|\\n|g' \
 		     -e 's|X98|$(OUTPUT_ROOT)|g' -e 's|X97|$(SRC_ROOT)|g' \
 		     -e 's|X00|X|g' | tr '\n' '$2'
 
@@ -384,14 +268,67 @@
 endef
 
 define SetupLogging
-    ifneq ($(findstring $(LOG),debug trace),)
+    ifeq ($$(LOG), trace)
         # Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
+        # For each target executed, will print
+        # Building <TARGET> (from <FIRST PREREQUISITE>) (<ALL NEWER PREREQUISITES> newer)
+        # but with a limit of 20 on <ALL NEWER PREREQUISITES>, to avoid cluttering logs too much (and causing a crash on Cygwin).
         OLD_SHELL:=$$(SHELL)
-        SHELL = $$(warning Building $$@$$(if $$<, (from $$<))$(if $$?, ($$? newer)))$$(OLD_SHELL) -x
+        WRAPPER_SHELL:=$$(OLD_SHELL) $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(TIME),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log $$(OLD_SHELL)
+        SHELL=$$(warning $$(if $$@,Building $$@,Running shell command) $$(if $$<, (from $$<))$$(if $$?, ($$(wordlist 1, 20, $$?) $$(if $$(wordlist 21, 22, $$?), ... [in total $$(words $$?) files]) newer)))$$(WRAPPER_SHELL)
+    endif
+    # Never remove warning messages; this is just for completeness
+    LOG_WARN= 
+    ifneq ($$(findstring $$(LOG),info debug trace),)
+        LOG_INFO=
+    else
+        LOG_INFO=> /dev/null
+    endif
+    ifneq ($$(findstring $$(LOG),debug trace),)
+        LOG_DEBUG=
+    else
+        LOG_DEBUG=> /dev/null
+    endif
+    ifneq ($$(findstring $$(LOG),trace),)
+        LOG_TRACE=
+    else
+        LOG_TRACE=> /dev/null
     endif
 endef
 
 # Make sure logging is setup for everyone that includes MakeBase.gmk.
 $(eval $(call SetupLogging))
 
+# This is to be called by all SetupFoo macros
+define LogSetupMacroEntry
+    $(if $(26),$(error Internal makefile error: Too many arguments to LogSetupMacroEntry, please update MakeBase.gmk))
+    $(if $(findstring $(LOG),debug trace), $(info $1 $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25,$(if $($i),$(NEWLINE) $(strip [$i] $($i))))))
+endef
+
+# Make directory without forking mkdir if not needed
+define MakeDir
+    ifneq ($$(wildcard $1 $2 $3 $4 $5 $6 $7 $8 $9),$$(strip $1 $2 $3 $4 $5 $6 $7 $8 $9))
+        $$(shell $(MKDIR) -p $1 $2 $3 $4 $5 $6 $7 $8 $9)
+    endif
+endef
+
+ifeq ($(OPENJDK_TARGET_OS),solaris)
+# On Solaris, if the target is a symlink and exists, cp won't overwrite.
+define install-file
+	$(MKDIR) -p $(@D)
+	$(RM) '$@'
+	$(CP) -f -r -P '$<' '$(@D)'
+endef
+else ifeq ($(OPENJDK_TARGET_OS),macosx)
+define install-file
+	$(MKDIR) -p $(@D)
+	$(CP) -fpRP '$<' '$@'
+endef
+else
+define install-file
+	$(MKDIR) -p $(@D)
+	$(CP) -fP '$<' '$@'
+endef
+endif
+
 endif # _MAKEBASE_GMK
--- a/common/makefiles/MakeHelpers.gmk	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/makefiles/MakeHelpers.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -45,13 +45,130 @@
 list_alt_overrides_with_origins=$(filter ALT_%=environment ALT_%=command,$(foreach var,$(.VARIABLES),$(var)=$(firstword $(origin $(var)))))
 list_alt_overrides=$(subst =command,,$(subst =environment,,$(list_alt_overrides_with_origins)))
 
+# Store the build times in this directory.
+BUILDTIMESDIR=$(OUTPUT_ROOT)/tmp/buildtimes
+
+# Global targets are possible to run either with or without a SPEC. The prototypical
+# global target is "help". 
+global_targets=help configure
+
 ##############################
 # Functions
 ##############################
 
-define fatal-error
+define CheckEnvironment
+    # Find all environment or command line variables that begin with ALT.
+    $(if $(list_alt_overrides),
+        @$(PRINTF) "\nWARNING: You have the following ALT_ variables set:\n"
+    @$(PRINTF) "$(foreach var,$(list_alt_overrides),$(var)=$$$(var))\n"
+    @$(PRINTF) "ALT_ variables are deprecated and will be ignored. Please clean your environment.\n\n"
+    )
+endef
+
+### Functions for timers
+
+# Record starting time for build of a sub repository.
+define RecordStartTime
+    $(MKDIR) -p $(BUILDTIMESDIR)
+    $(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_start_$1
+    $(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_start_$1_human_readable
+endef
+
+# Record ending time and calculate the difference and store it in a
+# easy to read format. Handles builds that cross midnight. Expects
+# that a build will never take 24 hours or more. 
+define RecordEndTime
+    $(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_end_$1
+    $(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_end_$1_human_readable
+    $(ECHO) `$(CAT) $(BUILDTIMESDIR)/build_time_start_$1` `$(CAT) $(BUILDTIMESDIR)/build_time_end_$1` $1 | \
+        $(NAWK) '{ F=$$7; T=$$14; if (F > T) { T+=3600*24 }; D=T-F; H=int(D/3600); \
+        M=int((D-H*3600)/60); S=D-H*3600-M*60; printf("%02d:%02d:%02d %s\n",H,M,S,$$15); }' \
+        > $(BUILDTIMESDIR)/build_time_diff_$1
+endef
+
+# Find all build_time_* files and print their contents in a list sorted
+# on the name of the sub repository.
+define ReportBuildTimes
+    $(BUILD_LOG_WRAPPER) $(PRINTF) -- "----- Build times -------\nStart %s\nEnd   %s\n%s\n%s\n-------------------------\n" \
+        "`$(CAT) $(BUILDTIMESDIR)/build_time_start_TOTAL_human_readable`" \
+        "`$(CAT) $(BUILDTIMESDIR)/build_time_end_TOTAL_human_readable`" \
+        "`$(LS) $(BUILDTIMESDIR)/build_time_diff_* | $(GREP) -v _TOTAL | $(XARGS) $(CAT) | $(SORT) -k 2`" \
+        "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_TOTAL`"
+endef
+
+define ResetAllTimers
+    $$(shell $(MKDIR) -p $(BUILDTIMESDIR) &&  $(RM) $(BUILDTIMESDIR)/build_time_*)
+endef
+
+define StartGlobalTimer
+    $(call RecordStartTime,TOTAL)
+endef
+
+define StopGlobalTimer
+    $(call RecordEndTime,TOTAL)
+endef
+
+### Functions for managing makefile structure (start/end of makefile and individual targets)
+
+# Do not indent this function, this will add whitespace at the start which the caller won't handle
+define GetRealTarget
+$(strip $(if $(MAKECMDGOALS),$(MAKECMDGOALS),all))
+endef
+
+# Do not indent this function, this will add whitespace at the start which the caller won't handle
+define LastGoal
+$(strip $(lastword $(call GetRealTarget)))
+endef
+
+# Check if the current target is the final target, as specified by
+# the user on the command line. If so, call AtRootMakeEnd.
+define CheckIfMakeAtEnd
+    # Check if the current target is the last goal
+    $(if $(filter $@,$(call LastGoal)),$(call AtMakeEnd))
+    # If the target is 'foo-only', check if our goal was stated as 'foo'
+    $(if $(filter $(patsubst %-only,%,$@),$(call LastGoal)),$(call AtMakeEnd))
+    # If no goal is given, 'all' is default, but the last target executed for all is 'jdk-only'. Check for that, too.
+    # At most one of the tests can be true.
+    $(if $(subst all,,$(call LastGoal)),,$(if $(filter $@,jdk-only),$(call AtMakeEnd)))
+endef
+
+# Hook to be called when starting to execute a top-level target
+define TargetEnter
+    $(BUILD_LOG_WRAPPER) $(PRINTF) "## Starting $(patsubst %-only,%,$@)\n"
+    $(call RecordStartTime,$(patsubst %-only,%,$@))
+endef
+
+# Hook to be called when finish executing a top-level target
+define TargetExit
+    $(call RecordEndTime,$(patsubst %-only,%,$@))
+    $(BUILD_LOG_WRAPPER) $(PRINTF) "## Finished $(patsubst %-only,%,$@) (build time %s)\n\n" \
+        "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_$(patsubst %-only,%,$@) | $(CUT) -f 1 -d " "`"
+    $(call CheckIfMakeAtEnd)
+endef
+
+# Hook to be called as the very first thing when running a normal build
+define AtMakeStart
+    $(if $(findstring --jobserver,$(MAKEFLAGS)),$(error make -j is not supported, use make JOBS=n))
+    $(call CheckEnvironment)
+    @$(PRINTF) $(LOG_INFO) "Running make as '$(MAKE) $(MFLAGS) $(MAKE_ARGS)'\n"
+    @$(PRINTF) "Building $(PRODUCT_NAME) for target '$(call GetRealTarget)' in configuration '$(CONF_NAME)'\n\n"
+    $(call StartGlobalTimer)
+endef
+
+# Hook to be called as the very last thing for targets that are "top level" targets
+define AtMakeEnd
+    $(if $(SJAVAC_SERVER_DIR),@$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
+    $(call StopGlobalTimer)
+    $(call ReportBuildTimes)
+    @$(PRINTF) "Finished building $(PRODUCT_NAME) for target '$(call GetRealTarget)'\n"
+    $(call CheckEnvironment)
+endef
+
+### Functions for parsing and setting up make options from command-line
+
+define FatalError
     # If the user specificed a "global" target (e.g. 'help'), do not exit but continue running
-    $$(if $$(findstring help,$$(MAKECMDGOALS)),,$$(error Cannot continue))
+    $$(if $$(filter-out $(global_targets),$$(call GetRealTarget)),$$(error Cannot continue))
 endef
 
 define ParseLogLevel
@@ -80,14 +197,14 @@
         ifeq ($$(LOG),warn)
             VERBOSE=-s
         else ifeq ($$(LOG),info)
-            VERBOSE=
+            VERBOSE=-s
         else ifeq ($$(LOG),debug)
             VERBOSE=
         else ifeq ($$(LOG),trace)
-            VERBOSE=-d -p
+            VERBOSE=
         else
             $$(info Error: LOG must be one of: warn, info, debug or trace.)
-            $$(eval $$(call fatal-error))
+            $$(eval $$(call FatalError))
         endif
     else
         ifneq ($$(LOG),)
@@ -95,108 +212,84 @@
             # but complain if this is the top-level make call.
             ifeq ($$(MAKELEVEL),0)
                 $$(info Cannot use LOG=$$(LOG) and VERBOSE=$$(VERBOSE) at the same time. Choose one.)
-                $$(eval $$(call fatal-error))
+                $$(eval $$(call FatalError))
             endif
         endif
     endif
 endef
 
-# TODO: Fix duplication in MakeBase.gmk
-define SetupLogging
-    ifneq ($(findstring $(LOG),debug trace),)
-        # Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
-        OLD_SHELL:=$$(SHELL)
-        SHELL = $$(warning Building $$@$$(if $$<, (from $$<))$(if $$?, ($$? newer)))$$(OLD_SHELL) -x
-    endif
-endef
-
 define ParseConfAndSpec
-    ifneq ($$(origin SPEC),undefined)
-        # We have been given a SPEC, check that it works out properly
-        ifeq ($$(wildcard $$(SPEC)),)
-            $$(info Cannot locate spec.gmk, given by SPEC=$$(SPEC))
-            $$(eval $$(call fatal-error))
-        endif
-        ifneq ($$(origin CONF),undefined)
-            # We also have a CONF argument. This is OK only if this is a repeated call by ourselves,
-            # but complain if this is the top-level make call.
-            ifeq ($$(MAKELEVEL),0)
-                $$(info Cannot use CONF=$$(CONF) and SPEC=$$(SPEC) at the same time. Choose one.)
-                $$(eval $$(call fatal-error))
+    ifneq ($$(filter-out $(global_targets),$$(call GetRealTarget)),)
+        # If we only have global targets, no need to bother with SPEC or CONF
+        ifneq ($$(origin SPEC),undefined)
+            # We have been given a SPEC, check that it works out properly
+            ifeq ($$(wildcard $$(SPEC)),)
+                $$(info Cannot locate spec.gmk, given by SPEC=$$(SPEC))
+                $$(eval $$(call FatalError))
             endif
-        endif
-        # ... OK, we're satisfied, we'll use this SPEC later on
-    else
-        # Find all spec.gmk files in the build output directory
-        output_dir=$$(root_dir)/build
-        all_spec_files=$$(wildcard $$(output_dir)/*/spec.gmk)
-        ifeq ($$(all_spec_files),)
-            $$(info No configurations found for $$(root_dir)! Please run configure to create a configuration.)
-            $$(eval $$(call fatal-error))
-        endif
-        # Extract the configuration names from the path
-        all_confs=$$(patsubst %/spec.gmk,%,$$(patsubst $$(output_dir)/%,%,$$(all_spec_files)))
-
-        ifneq ($$(origin CONF),undefined)
-            # User have given a CONF= argument.
-            ifeq ($$(CONF),)
-                # If given CONF=, match all configurations
-                matching_confs=$$(strip $$(all_confs))
-            else
-                # Otherwise select those that contain the given CONF string
-                matching_confs=$$(strip $$(foreach var,$$(all_confs),$$(if $$(findstring $$(CONF),$$(var)),$$(var))))
-            endif
-            ifeq ($$(matching_confs),)
-                $$(info No configurations found matching CONF=$$(CONF))
-                $$(info Available configurations:)
-                $$(foreach var,$$(all_confs),$$(info * $$(var)))
-                $$(eval $$(call fatal-error))
-            else
-                ifeq ($$(words $$(matching_confs)),1)
-                    $$(info Building '$$(matching_confs)' (matching CONF=$$(CONF)))
-                else
-                    $$(info Building the following configurations (matching CONF=$$(CONF)):)
-                    $$(foreach var,$$(matching_confs),$$(info * $$(var)))
+            ifneq ($$(origin CONF),undefined)
+                # We also have a CONF argument. This is OK only if this is a repeated call by ourselves,
+                # but complain if this is the top-level make call.
+                ifeq ($$(MAKELEVEL),0)
+                    $$(info Cannot use CONF=$$(CONF) and SPEC=$$(SPEC) at the same time. Choose one.)
+                    $$(eval $$(call FatalError))
                 endif
             endif
-
-            # Create a SPEC definition. This will contain the path to one or more spec.gmk files.
-            SPEC=$$(addsuffix /spec.gmk,$$(addprefix $$(output_dir)/,$$(matching_confs)))
+            # ... OK, we're satisfied, we'll use this SPEC later on
         else
-            # No CONF or SPEC given, check the available configurations
-            ifneq ($$(words $$(all_spec_files)),1)
-                $$(info No CONF or SPEC given, but more than one spec.gmk found in $$(output_dir).)
-                $$(info Available configurations:)
-                $$(foreach var,$$(all_confs),$$(info * $$(var)))
-                $$(info Please retry building with CONF=<config> or SPEC=<specfile>)
-                $$(eval $$(call fatal-error))
+            # Find all spec.gmk files in the build output directory
+            output_dir=$$(root_dir)/build
+            all_spec_files=$$(wildcard $$(output_dir)/*/spec.gmk)
+            ifeq ($$(all_spec_files),)
+                $$(info No configurations found for $$(root_dir)! Please run configure to create a configuration.)
+                $$(eval $$(call FatalError))
             endif
+            # Extract the configuration names from the path
+            all_confs=$$(patsubst %/spec.gmk,%,$$(patsubst $$(output_dir)/%,%,$$(all_spec_files)))
 
-            # We found exactly one configuration, use it
-            SPEC=$$(strip $$(all_spec_files))
+            ifneq ($$(origin CONF),undefined)
+                # User have given a CONF= argument.
+                ifeq ($$(CONF),)
+                    # If given CONF=, match all configurations
+                    matching_confs=$$(strip $$(all_confs))
+                else
+                    # Otherwise select those that contain the given CONF string
+                    matching_confs=$$(strip $$(foreach var,$$(all_confs),$$(if $$(findstring $$(CONF),$$(var)),$$(var))))
+                endif
+                ifeq ($$(matching_confs),)
+                    $$(info No configurations found matching CONF=$$(CONF))
+                    $$(info Available configurations:)
+                    $$(foreach var,$$(all_confs),$$(info * $$(var)))
+                    $$(eval $$(call FatalError))
+                else
+                    ifeq ($$(words $$(matching_confs)),1)
+                        $$(info Building '$$(matching_confs)' (matching CONF=$$(CONF)))
+                    else
+                        $$(info Building target '$(call GetRealTarget)' in the following configurations (matching CONF=$$(CONF)):)
+                        $$(foreach var,$$(matching_confs),$$(info * $$(var)))
+                    endif
+                endif
+
+                # Create a SPEC definition. This will contain the path to one or more spec.gmk files.
+                SPEC=$$(addsuffix /spec.gmk,$$(addprefix $$(output_dir)/,$$(matching_confs)))
+            else
+                # No CONF or SPEC given, check the available configurations
+                ifneq ($$(words $$(all_spec_files)),1)
+                    $$(info No CONF given, but more than one configuration found in $$(output_dir).)
+                    $$(info Available configurations:)
+                    $$(foreach var,$$(all_confs),$$(info * $$(var)))
+                    $$(info Please retry building with CONF=<config pattern> (or SPEC=<specfile>))
+                    $$(eval $$(call FatalError))
+                endif
+
+                # We found exactly one configuration, use it
+                SPEC=$$(strip $$(all_spec_files))
+            endif
         endif
     endif
 endef
 
-define CheckEnvironment
-    # Find all environment or command line variables that begin with ALT.
-    $(if $(list_alt_overrides),
-        @$(PRINTF) "\nWARNING: You have the following ALT_ variables set:\n"
-    @$(PRINTF) "$(foreach var,$(list_alt_overrides),$(var)=$$$(var))\n"
-    @$(PRINTF) "ALT_ variables are deprecated and will be ignored. Please clean your environment.\n\n"
-    )
-endef
-
-define PrintStartMessage
-    $(if $(VERBOSE),,@$(ECHO) Running make as $(MAKE) $(MFLAGS) $(MAKE_ARGS))
-    $(call CheckEnvironment)
-    @$(ECHO) "Building OpenJDK for target $(if $(MAKECMDGOALS),'$(MAKECMDGOALS)','all') in configuration '$(CONF_NAME)'"
-endef
-
-define PrintEndMessage
-    @$(ECHO) "Finished building OpenJDK for target '$@'"
-    $(call CheckEnvironment)
-endef
+### Convenience functions from Main.gmk
 
 # Cleans the component given as $1
 define CleanComponent
--- a/common/makefiles/Makefile	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/makefiles/Makefile	Wed Jul 05 18:27:34 2017 +0200
@@ -24,13 +24,24 @@
 #
 
 # This must be the first rule
-default: all
+all:
 
 # Inclusion of this pseudo-target will cause make to execute this file
 # serially, regardless of -j. Recursively called makefiles will not be
 # affected, however. This is required for correct dependency management.
 .NOTPARALLEL:
 
+# The shell code below will be executed on /usr/ccs/bin/make on Solaris, but not in GNU make.
+# /usr/ccs/bin/make lacks basically every other flow control mechanism.
+TEST_FOR_NON_GNUMAKE:sh=echo You are not using GNU make/gmake, this is a requirement. Check your path. 1>&2 && exit 1
+
+# Assume we have GNU make, but check version.
+ifeq (,$(findstring 3.81,$(MAKE_VERSION)))
+    ifeq (,$(findstring 3.82,$(MAKE_VERSION)))
+        $(error This version of GNU Make is too low ($(MAKE_VERSION)). Check your path, or upgrade to 3.81 or newer.)
+    endif
+endif
+
 # Locate this Makefile
 ifeq ($(filter /%,$(lastword $(MAKEFILE_LIST))),)
     makefile_path:=$(CURDIR)/$(lastword $(MAKEFILE_LIST))
@@ -43,202 +54,32 @@
 include $(dir $(makefile_path))/MakeHelpers.gmk
 
 $(eval $(call ParseLogLevel))
-$(eval $(call SetupLogging))
 $(eval $(call ParseConfAndSpec))
 
-ifneq ($(words $(SPEC)),1)
-### We have multiple configurations to build, call make repeatedly
-all clean dist-clean:
-langtools corba jaxp jaxws hotspot jdk images overlay-images install:
-langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only images-only overlay-images-only install-only:
-clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images:
+# Now determine if we have zero, one or several configurations to build.
+ifeq ($(SPEC),)
+    # Since we got past ParseConfAndSpec, we must be building a global target. Do nothing.
+else
+    ifeq ($(words $(SPEC)),1)
+        # We are building a single configuration. This is the normal case. Execute the Main.gmk file.
+        include $(dir $(makefile_path))/Main.gmk
+    else
+        # We are building multiple configurations.
+        # First, find out the valid targets
+        # Run the makefile with an arbitraty SPEC using -p -q (quiet dry-run and dump rules) to find
+        # available PHONY targets. Use this list as valid targets to pass on to the repeated calls.
+        all_phony_targets=$(filter-out $(global_targets), $(strip $(shell \
+            $(MAKE) -p -q -f  $(makefile_path) SPEC=$(firstword $(SPEC)) | \
+            grep ^.PHONY: | head -n 1 | cut -d " " -f 2-)))
+
+$(all_phony_targets):
 	@$(foreach spec,$(SPEC),($(MAKE) -f $(makefile_path) SPEC=$(spec) $(VERBOSE) VERBOSE=$(VERBOSE) $@) &&) true
 
-.PHONY: all clean dist-clean
-.PHONY: langtools corba jaxp jaxws hotspot jdk images overlay-images install
-.PHONY: langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only images-only overlay-images-only install-only
-.PHONY: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images
-
-else
-### This is the main part of the Makefile, for the normal case with SPEC specifying a single existing spec.gmk file.
-
-# Now load the spec
-include $(SPEC)
-
-# Load the vital tools for all the makefiles. 
-include $(SRC_ROOT)/common/makefiles/MakeBase.gmk
-
-### Clean up from previous run
-
-# Remove any build.log from a previous run, if they exist
-ifneq (,$(BUILD_LOG))
-    ifneq (,$(BUILD_LOG_PREVIOUS))
-        # Rotate old log
-        $(shell $(RM) $(BUILD_LOG_PREVIOUS) 2> /dev/null)
-        $(shell $(MV) $(BUILD_LOG) $(BUILD_LOG_PREVIOUS) 2> /dev/null)
-    else
-        $(shell $(RM) $(BUILD_LOG) 2> /dev/null)
     endif
 endif
-# Remove any javac server logs and port files. This
-# prevents a new make run to reuse the previous servers.
-ifneq (,$(SJAVAC_SERVER_DIR))
-    $(shell $(MKDIR) -p $(SJAVAC_SERVER_DIR) && $(RM) -rf $(SJAVAC_SERVER_DIR)/*)
-endif
-# Clean out any notifications from the previous build.
-$(shell $(FIND) $(OUTPUT_ROOT) -name "_the.*.notify" $(FIND_DELETE))
-
-# Reset the build timers.
-$(eval $(call ResetTimers))
-
-# Setup number of jobs to use. -jN is unfortunately not available for us to parse from the command line,
-# hence this workaround.
-ifeq ($(JOBS),)
-    JOBS=$(NUM_CORES)
-endif
-MAKE_ARGS:=$(MAKE_ARGS) -j$(JOBS)
-
-### Main targets
-
-all: jdk
-	@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
-	@$(call AtRootMakeEnd)
-.PHONY: all
-
-langtools: start-make langtools-only
-langtools-only:
-	@$(call MakeStart,langtools,all)
-	@($(CD) $(LANGTOOLS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS))
-	@$(call MakeFinish,langtools,all)
-
-corba: langtools corba-only
-corba-only:
-	@$(call MakeStart,corba,all)
-	@($(CD) $(CORBA_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS))
-	@$(call MakeFinish,corba,all)
-
-jaxp: langtools jaxp-only
-jaxp-only:
-	@$(call MakeStart,jaxp,all)
-	@($(CD) $(JAXP_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS))
-	@$(call MakeFinish,jaxp,all)
-
-jaxws: langtools jaxp jaxws-only
-jaxws-only:
-	@$(call MakeStart,jaxws,all)
-	@($(CD) $(JAXWS_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS))
-	@$(call MakeFinish,jaxws,all)
-
-hotspot: langtools hotspot-only
-hotspot-only:
-	@$(call MakeStart,hotspot,all)
-	@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f HotspotWrapper.gmk)
-	@$(call MakeFinish,hotspot,all)
-
-jdk: langtools corba jaxp jaxws hotspot jdk-only
-jdk-only:
-	@$(call MakeStart,jdk,all)
-	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) $(JDK_TARGET))
-	@$(call MakeFinish,jdk,all)
-
-images: source-tips start-make jdk langtools corba jaxp jaxws hotspot images-only
-images-only:
-	@$(call MakeStart,jdk-images,$@)
-	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) images)
-	@$(call MakeFinish,jdk-images,$@)
-	@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
-	@$(call AtRootMakeEnd)
-
-overlay-images: source-tips start-make jdk langtools corba jaxp jaxws hotspot overlay-images-only
-overlay-images-only:
-	@$(call MakeStart,jdk-overlay-images,$@)
-	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) overlay-images)
-	@$(call MakeFinish,jdk-overlay-images,$@)
-	@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
-	@$(call AtRootMakeEnd)
-
-install: source-tips start-make jdk langtools corba jaxp jaxws hotspot install-only
-install-only:
-	@$(call MakeStart,jdk-images,$@)
-	@($(CD) $(JDK_TOPDIR)/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) install)
-	@$(call MakeFinish,jdk-images,$@)
-	@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
-	@$(call AtRootMakeEnd)
-
-docs: start-make jdk docs-only
-docs-only:
-	@$(call MakeStart,docs,$@)
-	@($(CD) $(SRC_ROOT)/common/makefiles/javadoc && $(BUILD_LOG_WRAPPER) $(MAKE) $(MAKE_ARGS) -f Javadoc.gmk docs)
-	@$(call MakeFinish,docs,$@)
-	@$(if $(SJAVAC_SERVER_DIR),$(RM) -rf $(SJAVAC_SERVER_DIR)/*.port)
-	@$(call AtRootMakeEnd)
-
-
-.PHONY: langtools corba jaxp jaxws hotspot jdk images install
-.PHONY: langtools-only corba-only jaxp-only jaxws-only hotspot-only jdk-only images-only install-only
-
-start-make:
-	@$(call AtRootMakeStart)
-.PHONY: start-make
-
-bootcycle-images:
-	@$(ECHO) Boot cycle build step 1: Building the JDK image normally
-	@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(SPEC) images)
-	@$(ECHO) Boot cycle build step 2: Building a new JDK image using previously built image
-	@($(CD) $(SRC_ROOT)/common/makefiles && $(BUILD_LOG_WRAPPER) $(MAKE) SPEC=$(dir $(SPEC))bootcycle-spec.gmk images)
-
-test: start-make
-	@$(call MakeStart,test,$(if $(TEST),$(TEST),all))
-	@($(CD) $(SRC_ROOT)/test && $(BUILD_LOG_WRAPPER) $(MAKE) MAKEFLAGS= -j1 PRODUCT_HOME=$(OUTPUT_ROOT)/jdk JPRT_JAVA_HOME=$(OUTPUT_ROOT)/jdk ALT_OUTPUTDIR=$(OUTPUT_ROOT) $(TEST)) || true
-	@$(call MakeFinish,test,$(if $(TEST),$(TEST),all))
-	@$(call AtRootMakeEnd)
-.PHONY: test
-
-
-# Stores the tips for each repository. This file is be used when constructing the jdk image and can be
-# used to track the exact sources used to build that image.
-source-tips: $(OUTPUT_ROOT)/source_tips
-$(OUTPUT_ROOT)/source_tips: FRC
-	@$(MKDIR) -p $(@D)
-	@$(RM) $@
-	@$(call GetSourceTips)
-
-
-# Remove everything, except the output from configure.
-clean: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images clean-bootcycle-build
-	@($(CD) $(OUTPUT_ROOT) && $(RM) -r tmp source_tips build.log*)
-	@$(ECHO) Cleaned everything except the build configuration.
-.PHONY: clean
-
-# Remove everything, you have to rerun configure.
-dist-clean:
-	@$(RM) -r $(OUTPUT_ROOT)
-	@$(ECHO) Cleaned everything, you will have to re-run configure.
-.PHONY: dist-clean
-
-clean-langtools:
-	$(call CleanComponent,langtools)
-clean-corba:
-	$(call CleanComponent,corba)
-clean-jaxp:
-	$(call CleanComponent,jaxp)
-clean-jaxws:
-	$(call CleanComponent,jaxws)
-clean-hotspot:
-	$(call CleanComponent,hotspot)
-clean-jdk:
-	$(call CleanComponent,jdk)
-clean-images:
-	$(call CleanComponent,images)
-clean-bootcycle-build:
-	$(call CleanComponent,bootcycle-build)
-
-.PHONY: clean-langtools clean-corba clean-jaxp clean-jaxws clean-hotspot clean-jdk clean-images
-
-endif
 
 # Here are "global" targets, i.e. targets that can be executed without specifying a single configuration.
-# If you addd more global targets, please update the fatal-error macro.
+# If you addd more global targets, please update the variable global_targets in MakeHelpers.
 
 help:
 	$(info )
@@ -258,7 +99,7 @@
 	$(info .  make test              # Run tests, default is all tests (see TEST below))
 	$(info )
 	$(info Targets for specific components)
-	$(info (Component is any of langtools, corba, jaxp, jaxws, hotspot, jdk or images))
+	$(info (Component is any of langtools, corba, jaxp, jaxws, hotspot, jdk, images or overlay-images))
 	$(info .  make <component>       # Build <component> and everything it depends on. )
 	$(info .  make <component>-only  # Build <component> only, without dependencies. This)
 	$(info .                         # is faster but can result in incorrect build results!)
@@ -272,7 +113,7 @@
 	$(info .  make LOG=<loglevel>    # Change the log level from warn to <loglevel>)
 	$(info .                         # Available log levels are:)
 	$(info .                         # 'warn' (default), 'info', 'debug' and 'trace')
-	$(info .                         # To see executed command lines, use LOG=info)
+	$(info .                         # To see executed command lines, use LOG=debug)
 	$(info )
 	$(info .  make JOBS=<n>          # Run <n> parallel make jobs)
 	$(info .                         # Note that -jN does not work as expected!)
@@ -280,5 +121,11 @@
 	$(info .  make test TEST=<test>  # Only run the given test or tests, e.g.)
 	$(info .                         # make test TEST="jdk_lang jdk_net")
 	$(info )
-.PHONY: help
-FRC: # Force target
+
+configure:
+	@$(SHELL) $(root_dir)/configure $(CONFIGURE_ARGS)
+	@echo ====================================================
+	@echo "Note: This is a non-recommended way of running configure."
+	@echo "Instead, run 'sh configure' in the top-level directory"
+
+.PHONY: help configure
--- a/common/makefiles/NativeCompilation.gmk	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/makefiles/NativeCompilation.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -32,10 +32,10 @@
 endif
 
 ifeq ($(COMPILER_TYPE),CC)
-    COMPILING_MSG=echo Compiling $1
-    LINKING_MSG=echo Linking $1
-    LINKING_EXE_MSG=echo Linking executable $1
-    ARCHIVING_MSG=echo Archiving $1
+    COMPILING_MSG=echo $(LOG_INFO) "Compiling $(notdir $1) (for $(notdir $2))"
+    LINKING_MSG=echo $(LOG_INFO) "Linking $1"
+    LINKING_EXE_MSG=echo $(LOG_INFO) "Linking executable $1"
+    ARCHIVING_MSG=echo $(LOG_INFO) "Archiving $1"
 else
     COMPILING_MSG=
     LINKING_MSG=
@@ -94,7 +94,7 @@
 
         $$($1_$2_OBJ) : $2
         ifeq ($(COMPILER_TYPE),CC)
-		$$(call COMPILING_MSG,$$(notdir $2))
+		$$(call COMPILING_MSG,$2,$$($1_TARGET))
 		$$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2
         endif
         ifeq ($(COMPILER_TYPE),CL)
@@ -129,30 +129,8 @@
     #    CC the compiler to use, default is $(CC)
     #    LDEXE the linker to use for linking executables, default is $(LDEXE)
     #    OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST
-    $(if $2,$1_$(strip $2))
-    $(if $3,$1_$(strip $3))
-    $(if $4,$1_$(strip $4))
-    $(if $5,$1_$(strip $5))
-    $(if $6,$1_$(strip $6))
-    $(if $7,$1_$(strip $7))
-    $(if $8,$1_$(strip $8))
-    $(if $9,$1_$(strip $9))
-    $(if $(10),$1_$(strip $(10)))
-    $(if $(11),$1_$(strip $(11)))
-    $(if $(12),$1_$(strip $(12)))
-    $(if $(13),$1_$(strip $(13)))
-    $(if $(14),$1_$(strip $(14)))
-    $(if $(15),$1_$(strip $(15)))
-    $(if $(16),$1_$(strip $(16)))
-    $(if $(17),$1_$(strip $(17)))
-    $(if $(18),$1_$(strip $(18)))
-    $(if $(19),$1_$(strip $(19)))
-    $(if $(20),$1_$(strip $(20)))
-    $(if $(21),$1_$(strip $(21)))
-    $(if $(22),$1_$(strip $(22)))
-    $(if $(23),$1_$(strip $(23)))
-    $(if $(24),$1_$(strip $(24)))
-    $(if $(25),$1_$(strip $(25)))
+    $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+    $(call LogSetupMacroEntry,SetupNativeCompilation($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))
     $(if $(26),$(error Internal makefile error: Too many arguments to SetupNativeCompilation, please update NativeCompilation.gmk))
 
     ifneq (,$$($1_BIN))
@@ -236,9 +214,9 @@
         $$(error You have to specify LANG for native compilation $1)
     endif
     ifeq (C,$$($1_LANG))
-    ifeq ($$($1_LDEXE),)
+        ifeq ($$($1_LDEXE),)
 	    $1_LDEXE:=$(LDEXE)
-    endif
+        endif
 	$1_LD:=$(LD)
     else
        ifeq (C++,$$($1_LANG))
@@ -254,9 +232,11 @@
     endif
 
     # Make sure the dirs exist.
-    $$(shell $(MKDIR) -p $$($1_SRC) $$($1_OBJECT_DIR) $$($1_OUTPUT_DIR))
+    $$(eval $$(call MakeDir,$$($1_OBJECT_DIR) $$($1_OUTPUT_DIR)))
+    $$(foreach d,$$($1_SRC), $$(if $$(wildcard $$d),,$$(error SRC specified to SetupNativeCompilation $1 contains missing directory $$d)))
+
     # Find all files in the source trees. Sort to remove duplicates.
-    $1_ALL_SRCS := $$(sort $$(foreach i,$$($1_SRC), $$(shell $(FIND) $$i -type f)))
+    $1_ALL_SRCS := $$(sort $$(shell $(FIND) $$($1_SRC) -type f))
     # Extract the C/C++ files.
     $1_EXCLUDE_FILES:=$$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$($1_EXCLUDE_FILES)))
     $1_INCLUDE_FILES:=$$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$($1_INCLUDE_FILES)))
@@ -291,7 +271,9 @@
     # Are there too many object files on disk? Perhaps because some source file was removed?
     $1_SUPERFLOUS_OBJS:=$$(sort $$(filter-out $$($1_EXPECTED_OBJS),$$($1_BINS)))
     # Clean out the superfluous object files.
-    $$(shell $(RM) -f $$($1_SUPERFLUOUS_OBJS))
+    ifneq ($$($1_SUPERFLUOUS_OBJS),)
+        $$(shell $(RM) -f $$($1_SUPERFLUOUS_OBJS))
+    endif
 
     # Pickup extra OPENJDK_TARGET_OS_API and/or OPENJDK_TARGET_OS dependent variables for CFLAGS.
     $1_EXTRA_CFLAGS:=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_API)) $$($1_CFLAGS_$(OPENJDK_TARGET_OS))
@@ -358,11 +340,6 @@
         $$(error Unknown value for OPTIMIZATION: $$($1_OPTIMIZATION))
     endif
 
-    # Now create a list of the packages that are about to compile. Used when sending source
-    # in a batch to the compiler.
-    $$(shell $(RM) $$($1_OBJECT_DIR)/_the.list_of_sources)
-    $$(eval $$(call ListPathsSafelyNow,$1_SRCS,\n, >> $$($1_OBJECT_DIR)/_the.list_of_sources))
-
     # Now call add_native_source for each source file we are going to compile.
     $$(foreach p,$$($1_SRCS),\
         $$(eval $$(call add_native_source,$1,$$p,$$($1_OBJECT_DIR),\
@@ -385,8 +362,6 @@
     endif
 
     # mapfile doesnt seem to be implemented on macosx (yet??)
-    ifneq ($(OPENJDK_TARGET_CPU),ppc)
-    ifneq ($(OPENJDK_TARGET_CPU),arm)
     ifneq ($(OPENJDK_TARGET_OS),macosx)
     ifneq ($(OPENJDK_TARGET_OS),windows)
         $1_REAL_MAPFILE:=$$($1_MAPFILE)
@@ -401,8 +376,6 @@
         endif
     endif
     endif
-    endif
-    endif
 
     # Pickup extra OPENJDK_TARGET_OS_API and/or OPENJDK_TARGET_OS dependent variables
     # for LDFLAGS and LDFLAGS_SUFFIX
@@ -445,9 +418,9 @@
                     $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET) \
 					$(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
 			$(RM) $$@
-			$(FIX_EMPTY_SEC_HDR_FLAGS) $$<
+			$(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
 			$(OBJCOPY) --only-keep-debug $$< $$@
-			$(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $$(@F) $$<
+			$(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
                 else # not solaris
                     $$($1_OBJECT_DIR)/$$(LIBRARY_PREFIX)$$($1_LIBRARY).debuginfo : $$($1_TARGET)
 			$(RM) $$@
@@ -523,9 +496,9 @@
                     $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET) \
 					$(FIX_EMPTY_SEC_HDR_FLAGS) $(ADD_GNU_DEBUGLINK)
 			$(RM) $$@
-			$(FIX_EMPTY_SEC_HDR_FLAGS) $$<
+			$(FIX_EMPTY_SEC_HDR_FLAGS) $(LOG_INFO) $$<
 			$(OBJCOPY) --only-keep-debug $$< $$@
-			$(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $$(@F) $$<
+			$(CD) $$(@D) && $(ADD_GNU_DEBUGLINK) $(LOG_INFO) $$(@F) $$<
                 else # not solaris
                     $$($1_OBJECT_DIR)/$$($1_PROGRAM).debuginfo : $$($1_TARGET)
 			$(RM) $$@
@@ -564,7 +537,7 @@
 			$$($1_EXPECTED_OBJS) $$($1_RES) $$($1_LDFLAGS_SUFFIX) \
 			$$($1_EXTRA_LDFLAGS_SUFFIX)
         ifneq (,$$($1_GEN_MANIFEST))
-		$(MT) -nologo /manifest $$($1_GEN_MANIFEST) /outputresource:$$@;#1
+		$(MT) -nologo -manifest $$($1_GEN_MANIFEST) -outputresource:$$@;#1
         endif
 
     endif
--- a/common/makefiles/RMICompilation.gmk	Wed Oct 31 18:35:56 2012 -0700
+++ b/common/makefiles/RMICompilation.gmk	Wed Jul 05 18:27:34 2017 +0200
@@ -34,16 +34,9 @@
     #   RUN_IIOP:=Set to run rmic with -iiop
     #   RUN_IIOP_STDPKG:=Set to run rmic with -iiop -standardPackage
     #   KEEP_GENERATED:=Set to keep generated sources around
-    $(if $2,$1_$(strip $2))
-    $(if $3,$1_$(strip $3))
-    $(if $4,$1_$(strip $4))
-    $(if $5,$1_$(strip $5))
-    $(if $6,$1_$(strip $6))
-    $(if $7,$1_$(strip $7))
-    $(if $8,$1_$(strip $8))
-    $(if $9,$1_$(strip $9))
-    $(if $(10),$(error Internal makefile error: Too many arguments to SetupRMICompilation, please update RMICompilation.gmk))
-
+    $(foreach i,2 3 4 5 6 7 8 9 10 11 12 13 14 15, $(if $($i),$1_$(strip $($i)))$(NEWLINE))
+    $(call LogSetupMacroEntry,SetupRMICompilation($1),$2,$3,$4,$5,$6,$7,$8,$9,$(10),$(11),$(12),$(13),$(14),$(15))
+    $(if $(16),$(error Internal makefile error: Too many arguments to SetupRMICompilation, please update RMICompilation.gmk))
 
     $1_DEP_FILE := $$($1_STUB_CLASSES_DIR)/$1_rmic
 
@@ -86,12 +79,12 @@
     $$($1_DEP_FILE): $$($1_CLASS_FILES)
 	$(MKDIR) -p $$($1_STUB_CLASSES_DIR)
 	if [ "x$$($1_ARGS)" != "x" ]; then \
-	    $(ECHO) Running rmic $$($1_ARGS) for $$($1_DOLLAR_SAFE_CLASSES) &&\
+	    $(ECHO) $(LOG_INFO) Running rmic $$($1_ARGS) for $$($1_DOLLAR_SAFE_CLASSES) &&\
 	    $(RMIC) $$($1_ARGS) -classpath "$$($1_CLASSES_DIR)" \
 			-d $$($1_STUB_CLASSES_DIR) $$($1_DOLLAR_SAFE_CLASSES);\
 	fi;
 	if [ "x$$($1_ARGS2)" != "x" ]; then \
-	    $(ECHO) Running rmic $$($1_ARGS2) for $$($1_DOLLAR_SAFE_CLASSES) &&\
+	    $(ECHO) $(LOG_INFO) Running rmic $$($1_ARGS2) for $$($1_DOLLAR_SAFE_CLASSES) &&\
 	    $(RMIC) $$($1_ARGS2) -classpath "$$($1_CLASSES_DIR)" \
 			-d $$($1_STUB_CLASSES_DIR) $$($1_DOLLAR_SAFE_CLASSES);\
 	fi;
--- a/common/makefiles/compress.post	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
\ No newline at end of file
--- a/common/makefiles/compress.pre	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-$(subst com,X01,$(subst org,X02,$(subst sun,X03,$(subst java,X04,$(subst javax,X05,$(subst sun/io,X06,$(subst com/sun,X07,$(subst java/io,X08,$(subst org/omg,X09,$(subst org/w3c,X10,$(subst org/xml,X11,$(subst sun/awt,X12,$(subst sun/net,X13,$(subst sun/nio,X14,$(subst sun/rmi,X15,$(subst java/awt,X16,$(subst java/net,X17,$(subst java/nio,X18,$(subst java/rmi,X19,$(subst META-INF,X20,$(subst sun/font,X21,$(subst sun/misc,X22,$(subst sun/text,X23,$(subst sun/util,X24,$(subst java/lang,X25,$(subst java/math,X26,$(subst java/text,X27,$(subst java/util,X28,$(subst javax/jws,X29,$(subst javax/net,X30,$(subst javax/rmi,X31,$(subst javax/xml,X32,$(subst sun/corba,X33,$(subst sun/print,X34,$(subst sun/swing,X35,$(subst java/beans,X36,$(subst javax/lang,X37,$(subst sun/applet,X38,$(subst sun/java2d,X39,$(subst java/applet,X40,$(subst javax/print,X41,$(subst javax/sound,X42,$(subst javax/swing,X43,$(subst javax/tools,X44,$(subst jdk/classes,X45,$(subst org/relaxng,X46,$(subst sun/reflect,X47,$(subst javax/crypto,X48,$(subst javax/naming,X49,$(subst jaxp/classes,X50,$(subst sun/security,X51,$(subst corba/classes,X52,$(subst java/security,X53,$(subst javax/imageio,X54,$(subst jdk/btclasses,X55,$(subst javax/activity,X56,$(subst javax/security,X57,$(subst jdk/newclasses,X58,$(subst sun/instrument,X59,$(subst sun/management,X60,$(subst corba/btclasses,X61,$(subst jdk/democlasses,X62,$(subst javax/activation,X63,$(subst javax/annotation,X64,$(subst javax/management,X65,$(subst javax/transaction,X66,$(subst jaxws/jaf_classes,X67,$(subst langtools/classes,X68,$(subst META-INF/services,X69,$(subst jdk/newdemoclasses,X70,$(subst javax/accessibility,X71,$(subst jaxws/jaxws_classes,X72,
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/makefiles/support/ListPathsSafely-post-compress.incl	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,1 @@
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/makefiles/support/ListPathsSafely-pre-compress.incl	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,1 @@
+$(subst com,X01,$(subst org,X02,$(subst sun,X03,$(subst java,X04,$(subst javax,X05,$(subst sun/io,X06,$(subst com/sun,X07,$(subst java/io,X08,$(subst org/omg,X09,$(subst org/w3c,X10,$(subst org/xml,X11,$(subst sun/awt,X12,$(subst sun/net,X13,$(subst sun/nio,X14,$(subst sun/rmi,X15,$(subst java/awt,X16,$(subst java/net,X17,$(subst java/nio,X18,$(subst java/rmi,X19,$(subst META-INF,X20,$(subst sun/font,X21,$(subst sun/misc,X22,$(subst sun/text,X23,$(subst sun/util,X24,$(subst java/lang,X25,$(subst java/math,X26,$(subst java/text,X27,$(subst java/util,X28,$(subst javax/jws,X29,$(subst javax/net,X30,$(subst javax/rmi,X31,$(subst javax/xml,X32,$(subst sun/corba,X33,$(subst sun/print,X34,$(subst sun/swing,X35,$(subst java/beans,X36,$(subst javax/lang,X37,$(subst sun/applet,X38,$(subst sun/java2d,X39,$(subst java/applet,X40,$(subst javax/print,X41,$(subst javax/sound,X42,$(subst javax/swing,X43,$(subst javax/tools,X44,$(subst jdk/classes,X45,$(subst org/relaxng,X46,$(subst sun/reflect,X47,$(subst javax/crypto,X48,$(subst javax/naming,X49,$(subst jaxp/classes,X50,$(subst sun/security,X51,$(subst corba/classes,X52,$(subst java/security,X53,$(subst javax/imageio,X54,$(subst jdk/btclasses,X55,$(subst javax/activity,X56,$(subst javax/security,X57,$(subst jdk/newclasses,X58,$(subst sun/instrument,X59,$(subst sun/management,X60,$(subst corba/btclasses,X61,$(subst jdk/democlasses,X62,$(subst javax/activation,X63,$(subst javax/annotation,X64,$(subst javax/management,X65,$(subst javax/transaction,X66,$(subst jaxws/jaf_classes,X67,$(subst langtools/classes,X68,$(subst META-INF/services,X69,$(subst jdk/newdemoclasses,X70,$(subst javax/accessibility,X71,$(subst jaxws/jaxws_classes,X72,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/makefiles/support/ListPathsSafely-uncompress.sed	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,72 @@
+s|X01|com|g
+s|X02|org|g
+s|X03|sun|g
+s|X04|java|g
+s|X05|javax|g
+s|X06|sun/io|g
+s|X07|com/sun|g
+s|X08|java/io|g
+s|X09|org/omg|g
+s|X10|org/w3c|g
+s|X11|org/xml|g
+s|X12|sun/awt|g
+s|X13|sun/net|g
+s|X14|sun/nio|g
+s|X15|sun/rmi|g
+s|X16|java/awt|g
+s|X17|java/net|g
+s|X18|java/nio|g
+s|X19|java/rmi|g
+s|X20|META-INF|g
+s|X21|sun/font|g
+s|X22|sun/misc|g
+s|X23|sun/text|g
+s|X24|sun/util|g
+s|X25|java/lang|g
+s|X26|java/math|g
+s|X27|java/text|g
+s|X28|java/util|g
+s|X29|javax/jws|g
+s|X30|javax/net|g
+s|X31|javax/rmi|g
+s|X32|javax/xml|g
+s|X33|sun/corba|g
+s|X34|sun/print|g
+s|X35|sun/swing|g
+s|X36|java/beans|g
+s|X37|javax/lang|g
+s|X38|sun/applet|g
+s|X39|sun/java2d|g
+s|X40|java/applet|g
+s|X41|javax/print|g
+s|X42|javax/sound|g
+s|X43|javax/swing|g
+s|X44|javax/tools|g
+s|X45|jdk/classes|g
+s|X46|org/relaxng|g
+s|X47|sun/reflect|g
+s|X48|javax/crypto|g
+s|X49|javax/naming|g
+s|X50|jaxp/classes|g
+s|X51|sun/security|g
+s|X52|corba/classes|g
+s|X53|java/security|g
+s|X54|javax/imageio|g
+s|X55|jdk/btclasses|g
+s|X56|javax/activity|g
+s|X57|javax/security|g
+s|X58|jdk/newclasses|g
+s|X59|sun/instrument|g
+s|X60|sun/management|g
+s|X61|corba/btclasses|g
+s|X62|jdk/democlasses|g
+s|X63|javax/activation|g
+s|X64|javax/annotation|g
+s|X65|javax/management|g
+s|X66|javax/transaction|g
+s|X67|jaxws/jaf_classes|g
+s|X68|langtools/classes|g
+s|X69|META-INF/services|g
+s|X70|jdk/newdemoclasses|g
+s|X71|javax/accessibility|g
+s|X72|jaxws/jaxws_classes|g
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/makefiles/support/unicode2x.sed	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,100 @@
+s/\\u0020/\x20/g
+s/\\u003A/\x3A/g
+s/\\u006B/\x6B/g
+s/\\u0075/\x75/g
+s/\\u00A0/\xA0/g
+s/\\u00A3/\xA3/g
+s/\\u00B0/\xB0/g
+s/\\u00B7/\xB7/g
+s/\\u00BA/\xBA/g
+s/\\u00BF/\xBF/g
+s/\\u00C0/\xC0/g
+s/\\u00C1/\xC1/g
+s/\\u00C2/\xC2/g
+s/\\u00C4/\xC4/g
+s/\\u00C5/\xC5/g
+s/\\u00C8/\xC8/g
+s/\\u00C9/\xC9/g
+s/\\u00CA/\xCA/g
+s/\\u00CD/\xCD/g
+s/\\u00CE/\xCE/g
+s/\\u00D3/\xD3/g
+s/\\u00D4/\xD4/g
+s/\\u00D6/\xD6/g
+s/\\u00DA/\xDA/g
+s/\\u00DC/\xDC/g
+s/\\u00DD/\xDD/g
+s/\\u00DF/\xDF/g
+s/\\u00E0/\xE0/g
+s/\\u00E1/\xE1/g
+s/\\u00E2/\xE2/g
+s/\\u00E3/\xE3/g
+s/\\u00E4/\xE4/g
+s/\\u00E5/\xE5/g
+s/\\u00E6/\xE6/g
+s/\\u00E7/\xE7/g
+s/\\u00E8/\xE8/g
+s/\\u00E9/\xE9/g
+s/\\u00EA/\xEA/g
+s/\\u00EB/\xEB/g
+s/\\u00EC/\xEC/g
+s/\\u00ED/\xED/g
+s/\\u00EE/\xEE/g
+s/\\u00EF/\xEF/g
+s/\\u00F1/\xF1/g
+s/\\u00F2/\xF2/g
+s/\\u00F3/\xF3/g
+s/\\u00F4/\xF4/g
+s/\\u00F5/\xF5/g
+s/\\u00F6/\xF6/g
+s/\\u00F9/\xF9/g
+s/\\u00FA/\xFA/g
+s/\\u00FC/\xFC/g
+s/\\u0020/\x20/g
+s/\\u003f/\x3f/g
+s/\\u006f/\x6f/g
+s/\\u0075/\x75/g
+s/\\u00a0/\xa0/g
+s/\\u00a3/\xa3/g
+s/\\u00b0/\xb0/g
+s/\\u00ba/\xba/g
+s/\\u00bf/\xbf/g
+s/\\u00c1/\xc1/g
+s/\\u00c4/\xc4/g
+s/\\u00c5/\xc5/g
+s/\\u00c8/\xc8/g
+s/\\u00c9/\xc9/g
+s/\\u00ca/\xca/g
+s/\\u00cd/\xcd/g
+s/\\u00d6/\xd6/g
+s/\\u00dc/\xdc/g
+s/\\u00dd/\xdd/g
+s/\\u00df/\xdf/g
+s/\\u00e0/\xe0/g
+s/\\u00e1/\xe1/g
+s/\\u00e2/\xe2/g
+s/\\u00e3/\xe3/g
+s/\\u00e4/\xe4/g
+s/\\u00e5/\xe5/g
+s/\\u00e7/\xe7/g
+s/\\u00e8/\xe8/g
+s/\\u00e9/\xe9/g
+s/\\u00ea/\xea/g
+s/\\u00eb/\xeb/g
+s/\\u00ec/\xec/g
+s/\\u00ed/\xed/g
+s/\\u00ee/\xee/g
+s/\\u00ef/\xef/g
+s/\\u00f0/\xf0/g
+s/\\u00f1/\xf1/g
+s/\\u00f2/\xf2/g
+s/\\u00f3/\xf3/g
+s/\\u00f4/\xf4/g
+s/\\u00f5/\xf5/g
+s/\\u00f6/\xf6/g
+s/\\u00f7/\xf7/g
+s/\\u00f8/\xf8/g
+s/\\u00f9/\xf9/g
+s/\\u00fa/\xfa/g
+s/\\u00fc/\xfc/g
+s/\\u00ff/\xff/g
--- a/common/makefiles/uncompress.sed	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-s|X01|com|g
-s|X02|org|g
-s|X03|sun|g
-s|X04|java|g
-s|X05|javax|g
-s|X06|sun/io|g
-s|X07|com/sun|g
-s|X08|java/io|g
-s|X09|org/omg|g
-s|X10|org/w3c|g
-s|X11|org/xml|g
-s|X12|sun/awt|g
-s|X13|sun/net|g
-s|X14|sun/nio|g
-s|X15|sun/rmi|g
-s|X16|java/awt|g
-s|X17|java/net|g
-s|X18|java/nio|g
-s|X19|java/rmi|g
-s|X20|META-INF|g
-s|X21|sun/font|g
-s|X22|sun/misc|g
-s|X23|sun/text|g
-s|X24|sun/util|g
-s|X25|java/lang|g
-s|X26|java/math|g
-s|X27|java/text|g
-s|X28|java/util|g
-s|X29|javax/jws|g
-s|X30|javax/net|g
-s|X31|javax/rmi|g
-s|X32|javax/xml|g
-s|X33|sun/corba|g
-s|X34|sun/print|g
-s|X35|sun/swing|g
-s|X36|java/beans|g
-s|X37|javax/lang|g
-s|X38|sun/applet|g
-s|X39|sun/java2d|g
-s|X40|java/applet|g
-s|X41|javax/print|g
-s|X42|javax/sound|g
-s|X43|javax/swing|g
-s|X44|javax/tools|g
-s|X45|jdk/classes|g
-s|X46|org/relaxng|g
-s|X47|sun/reflect|g
-s|X48|javax/crypto|g
-s|X49|javax/naming|g
-s|X50|jaxp/classes|g
-s|X51|sun/security|g
-s|X52|corba/classes|g
-s|X53|java/security|g
-s|X54|javax/imageio|g
-s|X55|jdk/btclasses|g
-s|X56|javax/activity|g
-s|X57|javax/security|g
-s|X58|jdk/newclasses|g
-s|X59|sun/instrument|g
-s|X60|sun/management|g
-s|X61|corba/btclasses|g
-s|X62|jdk/democlasses|g
-s|X63|javax/activation|g
-s|X64|javax/annotation|g
-s|X65|javax/management|g
-s|X66|javax/transaction|g
-s|X67|jaxws/jaf_classes|g
-s|X68|langtools/classes|g
-s|X69|META-INF/services|g
-s|X70|jdk/newdemoclasses|g
-s|X71|javax/accessibility|g
-s|X72|jaxws/jaxws_classes|g
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/src/fixpath.c	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,334 @@
+/*
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include <Windows.h>
+#include <io.h>
+#include <stdio.h>
+#include <string.h>
+#include <malloc.h>
+
+/*
+ * Test if pos points to /cygdrive/_/ where _ can
+ * be any character.
+ */
+int is_cygdrive_here(int pos, char *in, int len)
+{
+  // Length of /cygdrive/c/ is 12
+  if (pos+12 > len) return 0;
+  if (in[pos+11]=='/' &&
+      in[pos+9]=='/' &&
+      in[pos+8]=='e' &&
+      in[pos+7]=='v' &&
+      in[pos+6]=='i' &&
+      in[pos+5]=='r' &&
+      in[pos+4]=='d' &&
+      in[pos+3]=='g' &&
+      in[pos+2]=='y' &&
+      in[pos+1]=='c' &&
+      in[pos+0]=='/') {
+    return 1;
+  }
+  return 0;
+}
+
+/*
+ * Replace /cygdrive/_/ with _:/
+ * Works in place since drive letter is always
+ * shorter than /cygdrive/
+ */
+char *replace_cygdrive_cygwin(char *in)
+{
+  int len = strlen(in);
+  char *out = malloc(len+1);
+  int i,j;
+
+  if (len < 12) {
+    strcpy(out, in);
+    return out;
+  }
+  for (i = 0, j = 0; i<len;) {
+    if (is_cygdrive_here(i, in, len)) {
+      out[j++] = in[i+10];
+      out[j++] = ':';
+      i+=11;
+    } else {
+      out[j] = in[i];
+      i++;
+      j++;
+    }
+  }
+  out[j] = 0;
+  return out;
+}
+
+void append(char **b, size_t *bl, size_t *u, char *add, size_t addlen)
+{
+  while ( (addlen+*u+1) > *bl) {
+    *bl *= 2;
+    *b = realloc(*b, *bl);
+  }
+  memcpy(*b+*u, add, addlen);
+  *u += addlen;
+}
+
+/*
+ * Creates a new string from in where the first occurance of sub is
+ * replaced by rep.
+ */
+char *replace_substring(char *in, char *sub, char *rep)
+{
+  int in_len = strlen(in);
+  int sub_len = strlen(sub);
+  int rep_len = strlen(rep);
+  char *out = malloc(in_len - sub_len + rep_len + 1);
+  char *p;
+
+  if (!(p = strstr(in, sub))) {
+    // If sub isn't a substring of in, just return in.
+    return in;
+  }
+
+  // Copy characters from beginning of in to start of sub.
+  strncpy(out, in, p - in);
+  out[p - in] = '\0';
+
+  sprintf(out + (p - in), "%s%s", rep, p + sub_len);
+
+  return out;
+}
+
+char* msys_path_list; // @-separated list of paths prefix to look for
+char* msys_path_list_end; // Points to last \0 in msys_path_list.
+
+void setup_msys_path_list(char* argument)
+{
+  char* p;
+  char* drive_letter_pos;
+
+  msys_path_list = strdup(&argument[2]);
+  msys_path_list_end = &msys_path_list[strlen(msys_path_list)];
+
+  // Convert all at-sign (@) in path list to \0.
+  // @ was chosen as separator to minimize risk of other tools messing around with it
+  p = msys_path_list;
+  do {
+    if (p[1] == ':') {
+      // msys has mangled our path list, restore it from c:/... to /c/...
+      drive_letter_pos = p+1;
+      *drive_letter_pos = *p;
+      *p = '/';
+    }
+
+    // Look for an @ in the list
+    p = strchr(p, '@');
+    if (p != NULL) {
+      *p = '\0';
+      p++;
+    }
+  } while (p != NULL);
+}
+
+char *replace_cygdrive_msys(char *in)
+{
+  char* str;
+  char* prefix;
+  char* p;
+
+  str = strdup(in);
+
+  // For each prefix in the path list, search for it and replace /c/... with c:/...
+  for (prefix = msys_path_list; prefix < msys_path_list_end && prefix != NULL; prefix += strlen(prefix)+1) {
+    p=str;
+    while ((p = strstr(p, prefix))) {
+      char* drive_letter = p+1;
+      *p = *drive_letter;
+      *drive_letter = ':';
+      p++;
+    }
+  }
+
+  return str;
+}
+
+char*(*replace_cygdrive)(char *in) = NULL;
+
+char *files_to_delete[1024];
+int num_files_to_delete = 0;
+
+char *fix_at_file(char *in)
+{
+  char *tmpdir;
+  char name[2048];
+  char *atname;
+  char *buffer;
+  size_t buflen=65536;
+  size_t used=0;
+  size_t len;
+  int rc;
+  FILE *atout;
+  FILE *atin;
+  char block[2048];
+  size_t blocklen;
+  char *fixed;
+
+  atin = fopen(in+1, "r");
+  if (atin == NULL) {
+    fprintf(stderr, "Could not read at file %s\n", in+1);
+    exit(-1);
+  }
+
+  tmpdir = getenv("TMP");
+  if (tmpdir == NULL) {
+    tmpdir = "c:/cygwin/tmp";
+  }
+  _snprintf(name, sizeof(name), "%s\\atfile_XXXXXX", tmpdir);
+
+  rc = _mktemp_s(name, strlen(name)+1);
+  if (rc) {
+    fprintf(stderr, "Could not create temporary file name for at file!\n");
+    exit(-1);
+  }
+
+  atout = fopen(name, "w");
+  if (atout == NULL) {
+    fprintf(stderr, "Could not open temporary file for writing! %s\n", name);
+    exit(-1);
+  }
+
+  buffer = malloc(buflen);
+  while((blocklen = fread(block,1,sizeof(block),atin)) > 0) {
+    append(&buffer, &buflen, &used, block, blocklen);
+  }
+  buffer[used] = 0;
+  if (getenv("DEBUG_FIXPATH") != NULL) {
+    fprintf(stderr, "fixpath input from @-file %s: %s\n", &in[1], buffer);
+  }
+  fixed = replace_cygdrive(buffer);
+  if (getenv("DEBUG_FIXPATH") != NULL) {
+    fprintf(stderr, "fixpath converted to @-file %s is: %s\n", name, fixed);
+  }
+  fwrite(fixed, strlen(fixed), 1, atout);
+  fclose(atin);
+  fclose(atout);
+  free(fixed);
+  free(buffer);
+  files_to_delete[num_files_to_delete] = malloc(strlen(name)+1);
+  strcpy(files_to_delete[num_files_to_delete], name);
+  num_files_to_delete++;
+  atname = malloc(strlen(name)+2);
+  atname[0] = '@';
+  strcpy(atname+1, name);
+  return atname;
+}
+
+int main(int argc, char **argv)
+{
+    STARTUPINFO si;
+    PROCESS_INFORMATION pi;
+    unsigned short rc;
+
+    char *new_at_file;
+    char *old_at_file;
+    char *line;
+    int i;
+    DWORD exitCode;
+
+    if (argc<3 || argv[1][0] != '-' || (argv[1][1] != 'c' && argv[1][1] != 'm')) {
+        fprintf(stderr, "Usage: fixpath -c|m<path@path@...> /cygdrive/c/WINDOWS/notepad.exe /cygdrive/c/x/test.txt");
+        exit(0);
+    }
+
+    if (getenv("DEBUG_FIXPATH") != NULL) {
+      fprintf(stderr, "fixpath input line >%s<\n", strstr(GetCommandLine(), argv[1]));
+    }
+
+    if (argv[1][1] == 'c' && argv[1][2] == '\0') {
+      if (getenv("DEBUG_FIXPATH") != NULL) {
+        fprintf(stderr, "using cygwin mode\n");
+      }
+      replace_cygdrive = replace_cygdrive_cygwin;
+    } else if (argv[1][1] == 'm') {
+      if (getenv("DEBUG_FIXPATH") != NULL) {
+        fprintf(stderr, "using msys mode, with path list: %s\n", &argv[1][2]);
+      }
+      setup_msys_path_list(argv[1]);
+      replace_cygdrive = replace_cygdrive_msys;
+    } else {
+      fprintf(stderr, "Unknown mode: %s\n", argv[1]);
+      exit(-1);
+    }
+    line = replace_cygdrive(strstr(GetCommandLine(), argv[2]));
+
+    for (i=1; i<argc; ++i) {
+       if (argv[i][0] == '@') {
+          // Found at-file! Fix it!
+          old_at_file = replace_cygdrive(argv[i]);
+          new_at_file = fix_at_file(old_at_file);
+          line = replace_substring(line, old_at_file, new_at_file);
+       }
+    }
+
+    if (getenv("DEBUG_FIXPATH") != NULL) {
+      fprintf(stderr, "fixpath converted line >%s<\n", line);
+    }
+
+    ZeroMemory(&si,sizeof(si));
+    si.cb=sizeof(si);
+    ZeroMemory(&pi,sizeof(pi));
+
+    rc = CreateProcess(NULL,
+                       line,
+                       0,
+                       0,
+                       TRUE,
+                       0,
+                       0,
+                       0,
+                       &si,
+                       &pi);
+    if(!rc)
+    {
+      //Could not start process;
+      fprintf(stderr, "Could not start process!\n");
+      exit(-1);
+    }
+
+    WaitForSingleObject(pi.hProcess,INFINITE);
+    GetExitCodeProcess(pi.hProcess,&exitCode);
+
+    if (getenv("DEBUG_FIXPATH") != NULL) {
+      for (i=0; i<num_files_to_delete; ++i) {
+        fprintf(stderr, "Not deleting temporary fixpath file %s\n",
+                files_to_delete[i]);
+      }
+    }
+    else {
+      for (i=0; i<num_files_to_delete; ++i) {
+        remove(files_to_delete[i]);
+      }
+    }
+
+    exit(exitCode);
+}
--- a/common/src/uncygdrive.c	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include <Windows.h>
-#include <io.h>
-#include <stdio.h>
-#include <string.h>
-#include <malloc.h>
-
-/*
- * Test if pos points to /cygdrive/_/ where _ can
- * be any character.
- */
-int is_cygdrive_here(int pos, char *in, int len)
-{
-  // Length of /cygdrive/c/ is 12
-  if (pos+12 > len) return 0;
-  if (in[pos+11]=='/' &&
-      in[pos+9]=='/' &&
-      in[pos+8]=='e' &&
-      in[pos+7]=='v' &&
-      in[pos+6]=='i' &&
-      in[pos+5]=='r' &&
-      in[pos+4]=='d' &&
-      in[pos+3]=='g' &&
-      in[pos+2]=='y' &&
-      in[pos+1]=='c' &&
-      in[pos+0]=='/') {
-    return 1;
-  }
-  return 0;
-}
-
-/*
- * Replace /cygdrive/_/ with _:/
- * Works in place since drive letter is always
- * shorter than /cygdrive/
- */
-char *replace_cygdrive(char *in)
-{
-  int len = strlen(in);
-  char *out = malloc(len+1);
-  int i,j;
-
-  if (len < 12) {
-    strcpy(out, in);
-    return out;
-  }
-  for (i = 0, j = 0; i<len;) {
-    if (is_cygdrive_here(i, in, len)) {
-      out[j++] = in[i+10];
-      out[j++] = ':';
-      i+=11;
-    } else {
-      out[j] = in[i];
-      i++;
-      j++;
-    }
-  }
-  out[j] = 0;
-  return out;
-}
-
-void append(char **b, size_t *bl, size_t *u, char *add, size_t addlen)
-{
-  while ( (addlen+*u+1) > *bl) {
-    *bl *= 2;
-    *b = realloc(*b, *bl);
-  }
-  memcpy(*b+*u, add, addlen);
-  *u += addlen;
-}
-
-/*
- * Creates a new string from in where the first occurance of sub is
- * replaced by rep.
- */
-char *replace_substring(char *in, char *sub, char *rep)
-{
-  int in_len = strlen(in);
-  int sub_len = strlen(sub);
-  int rep_len = strlen(rep);
-  char *out = malloc(in_len - sub_len + rep_len + 1);
-  char *p;
-
-  if (!(p = strstr(in, sub))) {
-    // If sub isn't a substring of in, just return in.
-    return in;
-  }
-
-  // Copy characters from beginning of in to start of sub.
-  strncpy(out, in, p - in);
-  out[p - in] = '\0';
-
-  sprintf(out + (p - in), "%s%s", rep, p + sub_len);
-
-  return out;
-}
-
-char *files_to_delete[1024];
-int num_files_to_delete = 0;
-
-char *fix_at_file(char *in)
-{
-  char *tmpdir;
-  char name[2048];
-  char *atname;
-  char *buffer;
-  size_t buflen=65536;
-  size_t used=0;
-  size_t len;
-  int rc;
-  FILE *atout;
-  FILE *atin;
-  char block[2048];
-  size_t blocklen;
-  char *fixed;
-
-  atin = fopen(in+1, "r");
-  if (atin == NULL) {
-    fprintf(stderr, "Could not read at file %s\n", in+1);
-    exit(-1);
-  }
-
-  tmpdir = getenv("TMP");
-  if (tmpdir == NULL) {
-    tmpdir = "c:/cygwin/tmp";
-  }
-  _snprintf(name, sizeof(name), "%s\\atfile_XXXXXX", tmpdir);
-
-  rc = _mktemp_s(name, strlen(name)+1);
-  if (rc) {
-    fprintf(stderr, "Could not create temporary file name for at file!\n");
-    exit(-1);
-  }
-
-  atout = fopen(name, "w");
-  if (atout == NULL) {
-    fprintf(stderr, "Could open temporary file for writing! %s\n", name);
-    exit(-1);
-  }
-
-  buffer = malloc(buflen);
-  while((blocklen = fread(block,1,sizeof(block),atin)) > 0) {
-    append(&buffer, &buflen, &used, block, blocklen);
-  }
-  buffer[used] = 0;
-  fixed = replace_cygdrive(buffer);
-  fwrite(fixed, strlen(fixed), 1, atout);
-  fclose(atin);
-  fclose(atout);
-  free(fixed);
-  free(buffer);
-  files_to_delete[num_files_to_delete] = malloc(strlen(name)+1);
-  strcpy(files_to_delete[num_files_to_delete], name);
-  num_files_to_delete++;
-  atname = malloc(strlen(name)+2);
-  atname[0] = '@';
-  strcpy(atname+1, name);
-  return atname;
-}
-
-int main(int argc, char **argv)
-{
-    STARTUPINFO si;
-    PROCESS_INFORMATION pi;
-    unsigned short rc;
-
-    char *new_at_file;
-    char *old_at_file;
-    char *line;
-    int i;
-    DWORD exitCode;
-
-    if (argc<2) {
-        fprintf(stderr, "Usage: uncygdrive.exe /cygdrive/c/WINDOWS/notepad.exe /cygdrive/c/x/test.txt");
-        exit(0);
-    }
-
-    line = replace_cygdrive(strstr(GetCommandLine(), argv[1]));
-
-    for (i=1; i<argc; ++i) {
-       if (argv[i][0] == '@') {
-          // Found at-file! Fix it!
-          old_at_file = replace_cygdrive(argv[i]);
-          new_at_file = fix_at_file(old_at_file);
-          line = replace_substring(line, old_at_file, new_at_file);
-       }
-    }
-
-    if (getenv("DEBUG_UNCYGDRIVE") != NULL) {
-      fprintf(stderr, "uncygdrive >%s<\n", line);
-    }
-
-    ZeroMemory(&si,sizeof(si));
-    si.cb=sizeof(si);
-    ZeroMemory(&pi,sizeof(pi));
-
-    rc = CreateProcess(NULL,
-                       line,
-                       0,
-                       0,
-                       TRUE,
-                       0,
-                       0,
-                       0,
-                       &si,
-                       &pi);
-    if(!rc)
-    {
-      //Could not start process;
-      fprintf(stderr, "Could not start process!\n");
-      exit(-1);
-    }
-
-    WaitForSingleObject(pi.hProcess,INFINITE);
-    GetExitCodeProcess(pi.hProcess,&exitCode);
-
-    if (getenv("DEBUG_UNCYGDRIVE") != NULL) {
-      for (i=0; i<num_files_to_delete; ++i) {
-        fprintf(stderr, "Not deleting temporary uncygdrive file %s\n",
-                files_to_delete[i]);
-      }
-    }
-    else {
-      for (i=0; i<num_files_to_delete; ++i) {
-        remove(files_to_delete[i]);
-      }
-    }
-
-    exit(exitCode);
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/configure	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# This is a thin wrapper which will call the real configure script, and
+# make sure that is called using bash.
+
+this_script_dir=`dirname $0`
+bash $this_script_dir/common/autoconf/configure "$@"
--- a/hotspot/.hgtags	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/.hgtags	Wed Jul 05 18:27:34 2017 +0200
@@ -287,3 +287,5 @@
 b261523fe66c40a02968f0aa7e73602491bb3386 hs25-b05
 4547dc71db765276e027b0c2780b724bae0a07d3 jdk8-b61
 d0337c31c8be7716369b4e7c3bd5f352983c6a06 hs25-b06
+dccd40de8db1fa96f186e6179907818d75320440 jdk8-b62
+dc16fe422c535ecd4e9f80fb814a1bb9704da6f5 hs25-b07
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecodes.java	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecodes.java	Wed Jul 05 18:27:34 2017 +0200
@@ -272,9 +272,10 @@
   public static final int _fast_aldc            = 229;
   public static final int _fast_aldc_w          = 230;
   public static final int _return_register_finalizer = 231;
-  public static final int _shouldnotreachhere   = 232; // For debugging
+  public static final int _invokehandle         = 232;
+  public static final int _shouldnotreachhere   = 233; // For debugging
 
-  public static final int number_of_codes       = 233;
+  public static final int number_of_codes       = 234;
 
   // Flag bits derived from format strings, can_trap, can_rewrite, etc.:
   // semantic flags:
@@ -787,20 +788,22 @@
     def(_fast_aaccess_0      , "fast_aaccess_0"      , "b_JJ" , null    , BasicType.getTObject() ,  1, true , _aload_0        );
     def(_fast_faccess_0      , "fast_faccess_0"      , "b_JJ" , null    , BasicType.getTObject() ,  1, true , _aload_0        );
 
-    def(_fast_iload          , "fast_iload"          , "bi"   , null    , BasicType.getTInt()    ,  1, false, _iload);
-    def(_fast_iload2         , "fast_iload2"         , "bi_i" , null    , BasicType.getTInt()    ,  2, false, _iload);
-    def(_fast_icaload        , "fast_icaload"        , "bi_"  , null    , BasicType.getTInt()    ,  0, false, _iload);
+    def(_fast_iload          , "fast_iload"          , "bi"   , null    , BasicType.getTInt()    ,  1, false, _iload          );
+    def(_fast_iload2         , "fast_iload2"         , "bi_i" , null    , BasicType.getTInt()    ,  2, false, _iload          );
+    def(_fast_icaload        , "fast_icaload"        , "bi_"  , null    , BasicType.getTInt()    ,  0, false, _iload          );
 
     // Faster method invocation.
-    def(_fast_invokevfinal   , "fast_invokevfinal"   , "bJJ"  , null    , BasicType.getTIllegal(), -1, true, _invokevirtual);
+    def(_fast_invokevfinal   , "fast_invokevfinal"   , "bJJ"  , null    , BasicType.getTIllegal(), -1, true, _invokevirtual   );
 
     def(_fast_linearswitch   , "fast_linearswitch"   , ""     , null    , BasicType.getTVoid()   , -1, false, _lookupswitch   );
     def(_fast_binaryswitch   , "fast_binaryswitch"   , ""     , null    , BasicType.getTVoid()   , -1, false, _lookupswitch   );
+    def(_fast_aldc           , "fast_aldc"           , "bj"   , null    , BasicType.getTObject(),   1, true,  _ldc            );
+    def(_fast_aldc_w         , "fast_aldc_w"         , "bJJ"  , null    , BasicType.getTObject(),   1, true,  _ldc_w          );
 
     def(_return_register_finalizer, "return_register_finalizer", "b"    , null    , BasicType.getTVoid()   , 0, true, _return );
 
-    def(_fast_aldc           , "fast_aldc"           , "bj"   , null    , BasicType.getTObject(),   1, true,  _ldc   );
-    def(_fast_aldc_w         , "fast_aldc_w"         , "bJJ"  , null    , BasicType.getTObject(),   1, true,  _ldc_w );
+    // special handling of signature-polymorphic methods
+    def(_invokehandle        , "invokehandle"        , "bJJ"  , null    , BasicType.getTIllegal(), -1, true, _invokevirtual   );
 
     def(_shouldnotreachhere  , "_shouldnotreachhere" , "b"    , null    , BasicType.getTVoid()   ,  0, false);
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Bytes.java	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Bytes.java	Wed Jul 05 18:27:34 2017 +0200
@@ -30,24 +30,10 @@
 /** Encapsulates some byte-swapping operations defined in the VM */
 
 public class Bytes {
-  // swap if client platform is different from server's.
   private boolean swap;
 
   public Bytes(MachineDescription machDesc) {
-    String cpu = PlatformInfo.getCPU();
-    if (cpu.equals("sparc")) {
-      if (machDesc.isBigEndian()) {
-        swap = false;
-      } else {
-        swap = true;
-      }
-    } else { // intel
-      if (machDesc.isBigEndian()) {
-        swap = true;
-      } else {
-        swap = false;
-      }
-    }
+    swap = !machDesc.isBigEndian();
   }
 
   /** Should only swap if the hardware's underlying byte order is
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java	Wed Jul 05 18:27:34 2017 +0200
@@ -29,6 +29,11 @@
 import sun.jvm.hotspot.utilities.*;
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.runtime.*;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.AccessControlContext;
+import java.security.PrivilegedExceptionAction;
+import java.security.PrivilegedActionException;
 
 public class ByteCodeRewriter
 {
@@ -38,8 +43,20 @@
     private byte[] code;
     private Bytes  bytes;
 
-    public static final boolean DEBUG = false;
     private static final int jintSize = 4;
+    public static final boolean DEBUG;
+
+    static {
+        String debug =  (String) AccessController.doPrivileged(
+            new PrivilegedAction() {
+                public Object run() {
+                    return System.getProperty("sun.jvm.hotspot.tools.jcore.ByteCodeRewriter.DEBUG");
+                }
+            }
+        );
+        DEBUG = (debug != null ? debug.equalsIgnoreCase("true") : false);
+    }
+
 
     protected void debugMessage(String message) {
         System.out.println(message);
@@ -54,6 +71,18 @@
 
     }
 
+    protected short getConstantPoolIndexFromRefMap(int rawcode, int bci) {
+        int refIndex;
+        String fmt = Bytecodes.format(rawcode);
+        switch (fmt.length()) {
+            case 2: refIndex = 0xFF & method.getBytecodeByteArg(bci); break;
+            case 3: refIndex = 0xFFFF & bytes.swapShort(method.getBytecodeShortArg(bci)); break;
+            default: throw new IllegalArgumentException();
+        }
+
+        return (short)cpool.objectToCPIndex(refIndex);
+     }
+
     protected short getConstantPoolIndex(int rawcode, int bci) {
        // get ConstantPool index from ConstantPoolCacheIndex at given bci
        String fmt = Bytecodes.format(rawcode);
@@ -95,6 +124,12 @@
         int hotspotcode = Bytecodes._illegal;
         int len = 0;
 
+        if (DEBUG) {
+            String msg = method.getMethodHolder().getName().asString() + "." +
+                         method.getName().asString() +
+                         method.getSignature().asString();
+            debugMessage(msg);
+        }
         for (int bci = 0; bci < code.length;) {
             hotspotcode = Bytecodes.codeAt(method, bci);
             bytecode = Bytecodes.javaCode(hotspotcode);
@@ -133,15 +168,15 @@
 
                 case Bytecodes._ldc_w:
                     if (hotspotcode != bytecode) {
-                        // fast_aldc_w puts constant in CP cache
-                        cpoolIndex = getConstantPoolIndex(hotspotcode, bci + 1);
+                        // fast_aldc_w puts constant in reference map
+                        cpoolIndex = getConstantPoolIndexFromRefMap(hotspotcode, bci + 1);
                         writeShort(code, bci + 1, cpoolIndex);
                     }
                     break;
                 case Bytecodes._ldc:
                     if (hotspotcode != bytecode) {
-                        // fast_aldc puts constant in CP cache
-                        cpoolIndex = getConstantPoolIndex(hotspotcode, bci + 1);
+                        // fast_aldc puts constant in reference map
+                        cpoolIndex = getConstantPoolIndexFromRefMap(hotspotcode, bci + 1);
                         code[bci + 1] = (byte)(cpoolIndex);
                     }
                     break;
--- a/hotspot/make/excludeSrc.make	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/make/excludeSrc.make	Wed Jul 05 18:27:34 2017 +0200
@@ -79,10 +79,10 @@
       CXXFLAGS += -DSERIALGC
       CFLAGS += -DSERIALGC
       Src_Files_EXCLUDE += \
-	binaryTreeDictionary.cpp cmsAdaptiveSizePolicy.cpp cmsCollectorPolicy.cpp \
+	cmsAdaptiveSizePolicy.cpp cmsCollectorPolicy.cpp \
 	cmsGCAdaptivePolicyCounters.cpp cmsLockVerifier.cpp cmsPermGen.cpp compactibleFreeListSpace.cpp \
-	concurrentMarkSweepGeneration.cpp concurrentMarkSweepThread.cpp freeBlockDictionary.cpp \
-	freeChunk.cpp freeList.cpp promotionInfo.cpp vmCMSOperations.cpp collectionSetChooser.cpp \
+	concurrentMarkSweepGeneration.cpp concurrentMarkSweepThread.cpp \
+	freeChunk.cpp adaptiveFreeList.cpp promotionInfo.cpp vmCMSOperations.cpp collectionSetChooser.cpp \
 	concurrentG1Refine.cpp concurrentG1RefineThread.cpp concurrentMark.cpp concurrentMarkThread.cpp \
 	dirtyCardQueue.cpp g1AllocRegion.cpp g1BlockOffsetTable.cpp g1CollectedHeap.cpp g1GCPhaseTimes.cpp \
 	g1CollectorPolicy.cpp g1ErgoVerbose.cpp g1_globals.cpp g1HRPrinter.cpp g1MarkSweep.cpp \
--- a/hotspot/make/hotspot_version	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/make/hotspot_version	Wed Jul 05 18:27:34 2017 +0200
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=25
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=06
+HS_BUILD_NUMBER=07
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=8
--- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -1007,6 +1007,67 @@
   emit_simd_arith(0x58, dst, src, VEX_SIMD_F3);
 }
 
+void Assembler::aesdec(XMMRegister dst, Address src) {
+  assert(VM_Version::supports_aes(), "");
+  InstructionMark im(this);
+  simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0xde);
+  emit_operand(dst, src);
+}
+
+void Assembler::aesdec(XMMRegister dst, XMMRegister src) {
+  assert(VM_Version::supports_aes(), "");
+  int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0xde);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::aesdeclast(XMMRegister dst, Address src) {
+  assert(VM_Version::supports_aes(), "");
+  InstructionMark im(this);
+  simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0xdf);
+  emit_operand(dst, src);
+}
+
+void Assembler::aesdeclast(XMMRegister dst, XMMRegister src) {
+  assert(VM_Version::supports_aes(), "");
+  int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0xdf);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::aesenc(XMMRegister dst, Address src) {
+  assert(VM_Version::supports_aes(), "");
+  InstructionMark im(this);
+  simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0xdc);
+  emit_operand(dst, src);
+}
+
+void Assembler::aesenc(XMMRegister dst, XMMRegister src) {
+  assert(VM_Version::supports_aes(), "");
+  int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0xdc);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::aesenclast(XMMRegister dst, Address src) {
+  assert(VM_Version::supports_aes(), "");
+  InstructionMark im(this);
+  simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0xdd);
+  emit_operand(dst, src);
+}
+
+void Assembler::aesenclast(XMMRegister dst, XMMRegister src) {
+  assert(VM_Version::supports_aes(), "");
+  int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0xdd);
+  emit_byte(0xC0 | encode);
+}
+
+
 void Assembler::andl(Address dst, int32_t imm32) {
   InstructionMark im(this);
   prefix(dst);
@@ -2307,6 +2368,22 @@
   a_byte(p);
 }
 
+void Assembler::pshufb(XMMRegister dst, XMMRegister src) {
+  assert(VM_Version::supports_ssse3(), "");
+  int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0x00);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::pshufb(XMMRegister dst, Address src) {
+  assert(VM_Version::supports_ssse3(), "");
+  assert((UseAVX > 0), "SSE mode requires address alignment 16 bytes");
+  InstructionMark im(this);
+  simd_prefix(dst, dst, src, VEX_SIMD_66, VEX_OPCODE_0F_38);
+  emit_byte(0x00);
+  emit_operand(dst, src);
+}
+
 void Assembler::pshufd(XMMRegister dst, XMMRegister src, int mode) {
   assert(isByte(mode), "invalid value");
   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
@@ -8067,6 +8144,15 @@
   LP64_ONLY(movq(dst, src)) NOT_LP64(movl(dst, src));
 }
 
+void MacroAssembler::movdqu(XMMRegister dst, AddressLiteral src) {
+  if (reachable(src)) {
+    Assembler::movdqu(dst, as_Address(src));
+  } else {
+    lea(rscratch1, src);
+    Assembler::movdqu(dst, Address(rscratch1, 0));
+  }
+}
+
 void MacroAssembler::movsd(XMMRegister dst, AddressLiteral src) {
   if (reachable(src)) {
     Assembler::movsd(dst, as_Address(src));
@@ -8357,6 +8443,17 @@
   }
 }
 
+void MacroAssembler::pshufb(XMMRegister dst, AddressLiteral src) {
+  // Used in sign-bit flipping with aligned address.
+  assert((UseAVX > 0) || (((intptr_t)src.target() & 15) == 0), "SSE mode requires address alignment 16 bytes");
+  if (reachable(src)) {
+    Assembler::pshufb(dst, as_Address(src));
+  } else {
+    lea(rscratch1, src);
+    Assembler::pshufb(dst, Address(rscratch1, 0));
+  }
+}
+
 // AVX 3-operands instructions
 
 void MacroAssembler::vaddsd(XMMRegister dst, XMMRegister nds, AddressLiteral src) {
--- a/hotspot/src/cpu/x86/vm/assembler_x86.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -875,6 +875,17 @@
   void addss(XMMRegister dst, Address src);
   void addss(XMMRegister dst, XMMRegister src);
 
+  // AES instructions
+  void aesdec(XMMRegister dst, Address src);
+  void aesdec(XMMRegister dst, XMMRegister src);
+  void aesdeclast(XMMRegister dst, Address src);
+  void aesdeclast(XMMRegister dst, XMMRegister src);
+  void aesenc(XMMRegister dst, Address src);
+  void aesenc(XMMRegister dst, XMMRegister src);
+  void aesenclast(XMMRegister dst, Address src);
+  void aesenclast(XMMRegister dst, XMMRegister src);
+
+
   void andl(Address  dst, int32_t imm32);
   void andl(Register dst, int32_t imm32);
   void andl(Register dst, Address src);
@@ -1424,6 +1435,10 @@
   void prefetcht2(Address src);
   void prefetchw(Address src);
 
+  // Shuffle Bytes
+  void pshufb(XMMRegister dst, XMMRegister src);
+  void pshufb(XMMRegister dst, Address src);
+
   // Shuffle Packed Doublewords
   void pshufd(XMMRegister dst, XMMRegister src, int mode);
   void pshufd(XMMRegister dst, Address src,     int mode);
@@ -2611,6 +2626,12 @@
   void divss(XMMRegister dst, Address src)        { Assembler::divss(dst, src); }
   void divss(XMMRegister dst, AddressLiteral src);
 
+  // Move Unaligned Double Quadword
+  void movdqu(Address     dst, XMMRegister src)   { Assembler::movdqu(dst, src); }
+  void movdqu(XMMRegister dst, Address src)       { Assembler::movdqu(dst, src); }
+  void movdqu(XMMRegister dst, XMMRegister src)   { Assembler::movdqu(dst, src); }
+  void movdqu(XMMRegister dst, AddressLiteral src);
+
   void movsd(XMMRegister dst, XMMRegister src) { Assembler::movsd(dst, src); }
   void movsd(Address dst, XMMRegister src)     { Assembler::movsd(dst, src); }
   void movsd(XMMRegister dst, Address src)     { Assembler::movsd(dst, src); }
@@ -2658,6 +2679,10 @@
   void xorps(XMMRegister dst, Address src)     { Assembler::xorps(dst, src); }
   void xorps(XMMRegister dst, AddressLiteral src);
 
+  // Shuffle Bytes
+  void pshufb(XMMRegister dst, XMMRegister src) { Assembler::pshufb(dst, src); }
+  void pshufb(XMMRegister dst, Address src)     { Assembler::pshufb(dst, src); }
+  void pshufb(XMMRegister dst, AddressLiteral src);
   // AVX 3-operands instructions
 
   void vaddsd(XMMRegister dst, XMMRegister nds, XMMRegister src) { Assembler::vaddsd(dst, nds, src); }
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -2137,6 +2137,529 @@
     }
   }
 
+  // AES intrinsic stubs
+  enum {AESBlockSize = 16};
+
+  address generate_key_shuffle_mask() {
+    __ align(16);
+    StubCodeMark mark(this, "StubRoutines", "key_shuffle_mask");
+    address start = __ pc();
+    __ emit_data(0x00010203, relocInfo::none, 0 );
+    __ emit_data(0x04050607, relocInfo::none, 0 );
+    __ emit_data(0x08090a0b, relocInfo::none, 0 );
+    __ emit_data(0x0c0d0e0f, relocInfo::none, 0 );
+    return start;
+  }
+
+  // Utility routine for loading a 128-bit key word in little endian format
+  // can optionally specify that the shuffle mask is already in an xmmregister
+  void load_key(XMMRegister xmmdst, Register key, int offset, XMMRegister xmm_shuf_mask=NULL) {
+    __ movdqu(xmmdst, Address(key, offset));
+    if (xmm_shuf_mask != NULL) {
+      __ pshufb(xmmdst, xmm_shuf_mask);
+    } else {
+      __ pshufb(xmmdst, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    }
+  }
+
+  // aesenc using specified key+offset
+  // can optionally specify that the shuffle mask is already in an xmmregister
+  void aes_enc_key(XMMRegister xmmdst, XMMRegister xmmtmp, Register key, int offset, XMMRegister xmm_shuf_mask=NULL) {
+    load_key(xmmtmp, key, offset, xmm_shuf_mask);
+    __ aesenc(xmmdst, xmmtmp);
+  }
+
+  // aesdec using specified key+offset
+  // can optionally specify that the shuffle mask is already in an xmmregister
+  void aes_dec_key(XMMRegister xmmdst, XMMRegister xmmtmp, Register key, int offset, XMMRegister xmm_shuf_mask=NULL) {
+    load_key(xmmtmp, key, offset, xmm_shuf_mask);
+    __ aesdec(xmmdst, xmmtmp);
+  }
+
+
+  // Arguments:
+  //
+  // Inputs:
+  //   c_rarg0   - source byte array address
+  //   c_rarg1   - destination byte array address
+  //   c_rarg2   - K (key) in little endian int array
+  //
+  address generate_aescrypt_encryptBlock() {
+    assert(UseAES && (UseAVX > 0), "need AES instructions and misaligned SSE support");
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", "aescrypt_encryptBlock");
+    Label L_doLast;
+    address start = __ pc();
+
+    const Register from        = rsi;      // source array address
+    const Register to          = rdx;      // destination array address
+    const Register key         = rcx;      // key array address
+    const Register keylen      = rax;
+    const Address  from_param(rbp, 8+0);
+    const Address  to_param  (rbp, 8+4);
+    const Address  key_param (rbp, 8+8);
+
+    const XMMRegister xmm_result = xmm0;
+    const XMMRegister xmm_temp   = xmm1;
+    const XMMRegister xmm_key_shuf_mask = xmm2;
+
+    __ enter(); // required for proper stackwalking of RuntimeStub frame
+    __ push(rsi);
+    __ movptr(from , from_param);
+    __ movptr(to   , to_param);
+    __ movptr(key  , key_param);
+
+    __ movl(keylen, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+    // keylen = # of 32-bit words, convert to 128-bit words
+    __ shrl(keylen, 2);
+    __ subl(keylen, 11);   // every key has at least 11 128-bit words, some have more
+
+    __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    __ movdqu(xmm_result, Address(from, 0));  // get 16 bytes of input
+
+    // For encryption, the java expanded key ordering is just what we need
+
+    load_key(xmm_temp, key, 0x00, xmm_key_shuf_mask);
+    __ pxor(xmm_result, xmm_temp);
+    for (int offset = 0x10; offset <= 0x90; offset += 0x10) {
+      aes_enc_key(xmm_result, xmm_temp, key, offset, xmm_key_shuf_mask);
+    }
+    load_key  (xmm_temp, key, 0xa0, xmm_key_shuf_mask);
+    __ cmpl(keylen, 0);
+    __ jcc(Assembler::equal, L_doLast);
+    __ aesenc(xmm_result, xmm_temp);                   // only in 192 and 256 bit keys
+    aes_enc_key(xmm_result, xmm_temp, key, 0xb0, xmm_key_shuf_mask);
+    load_key(xmm_temp, key, 0xc0, xmm_key_shuf_mask);
+    __ subl(keylen, 2);
+    __ jcc(Assembler::equal, L_doLast);
+    __ aesenc(xmm_result, xmm_temp);                   // only in 256 bit keys
+    aes_enc_key(xmm_result, xmm_temp, key, 0xd0, xmm_key_shuf_mask);
+    load_key(xmm_temp, key, 0xe0, xmm_key_shuf_mask);
+
+    __ BIND(L_doLast);
+    __ aesenclast(xmm_result, xmm_temp);
+    __ movdqu(Address(to, 0), xmm_result);        // store the result
+    __ xorptr(rax, rax); // return 0
+    __ pop(rsi);
+    __ leave(); // required for proper stackwalking of RuntimeStub frame
+    __ ret(0);
+
+    return start;
+  }
+
+
+  // Arguments:
+  //
+  // Inputs:
+  //   c_rarg0   - source byte array address
+  //   c_rarg1   - destination byte array address
+  //   c_rarg2   - K (key) in little endian int array
+  //
+  address generate_aescrypt_decryptBlock() {
+    assert(UseAES && (UseAVX > 0), "need AES instructions and misaligned SSE support");
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", "aescrypt_decryptBlock");
+    Label L_doLast;
+    address start = __ pc();
+
+    const Register from        = rsi;      // source array address
+    const Register to          = rdx;      // destination array address
+    const Register key         = rcx;      // key array address
+    const Register keylen      = rax;
+    const Address  from_param(rbp, 8+0);
+    const Address  to_param  (rbp, 8+4);
+    const Address  key_param (rbp, 8+8);
+
+    const XMMRegister xmm_result = xmm0;
+    const XMMRegister xmm_temp   = xmm1;
+    const XMMRegister xmm_key_shuf_mask = xmm2;
+
+    __ enter(); // required for proper stackwalking of RuntimeStub frame
+    __ push(rsi);
+    __ movptr(from , from_param);
+    __ movptr(to   , to_param);
+    __ movptr(key  , key_param);
+
+    __ movl(keylen, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+    // keylen = # of 32-bit words, convert to 128-bit words
+    __ shrl(keylen, 2);
+    __ subl(keylen, 11);   // every key has at least 11 128-bit words, some have more
+
+    __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    __ movdqu(xmm_result, Address(from, 0));
+
+    // for decryption java expanded key ordering is rotated one position from what we want
+    // so we start from 0x10 here and hit 0x00 last
+    // we don't know if the key is aligned, hence not using load-execute form
+    load_key(xmm_temp, key, 0x10, xmm_key_shuf_mask);
+    __ pxor  (xmm_result, xmm_temp);
+    for (int offset = 0x20; offset <= 0xa0; offset += 0x10) {
+      aes_dec_key(xmm_result, xmm_temp, key, offset, xmm_key_shuf_mask);
+    }
+    __ cmpl(keylen, 0);
+    __ jcc(Assembler::equal, L_doLast);
+    // only in 192 and 256 bit keys
+    aes_dec_key(xmm_result, xmm_temp, key, 0xb0, xmm_key_shuf_mask);
+    aes_dec_key(xmm_result, xmm_temp, key, 0xc0, xmm_key_shuf_mask);
+    __ subl(keylen, 2);
+    __ jcc(Assembler::equal, L_doLast);
+    // only in 256 bit keys
+    aes_dec_key(xmm_result, xmm_temp, key, 0xd0, xmm_key_shuf_mask);
+    aes_dec_key(xmm_result, xmm_temp, key, 0xe0, xmm_key_shuf_mask);
+
+    __ BIND(L_doLast);
+    // for decryption the aesdeclast operation is always on key+0x00
+    load_key(xmm_temp, key, 0x00, xmm_key_shuf_mask);
+    __ aesdeclast(xmm_result, xmm_temp);
+
+    __ movdqu(Address(to, 0), xmm_result);  // store the result
+
+    __ xorptr(rax, rax); // return 0
+    __ pop(rsi);
+    __ leave(); // required for proper stackwalking of RuntimeStub frame
+    __ ret(0);
+
+    return start;
+  }
+
+  void handleSOERegisters(bool saving) {
+    const int saveFrameSizeInBytes = 4 * wordSize;
+    const Address saved_rbx     (rbp, -3 * wordSize);
+    const Address saved_rsi     (rbp, -2 * wordSize);
+    const Address saved_rdi     (rbp, -1 * wordSize);
+
+    if (saving) {
+      __ subptr(rsp, saveFrameSizeInBytes);
+      __ movptr(saved_rsi, rsi);
+      __ movptr(saved_rdi, rdi);
+      __ movptr(saved_rbx, rbx);
+    } else {
+      // restoring
+      __ movptr(rsi, saved_rsi);
+      __ movptr(rdi, saved_rdi);
+      __ movptr(rbx, saved_rbx);
+    }
+  }
+
+  // Arguments:
+  //
+  // Inputs:
+  //   c_rarg0   - source byte array address
+  //   c_rarg1   - destination byte array address
+  //   c_rarg2   - K (key) in little endian int array
+  //   c_rarg3   - r vector byte array address
+  //   c_rarg4   - input length
+  //
+  address generate_cipherBlockChaining_encryptAESCrypt() {
+    assert(UseAES && (UseAVX > 0), "need AES instructions and misaligned SSE support");
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", "cipherBlockChaining_encryptAESCrypt");
+    address start = __ pc();
+
+    Label L_exit, L_key_192_256, L_key_256, L_loopTop_128, L_loopTop_192, L_loopTop_256;
+    const Register from        = rsi;      // source array address
+    const Register to          = rdx;      // destination array address
+    const Register key         = rcx;      // key array address
+    const Register rvec        = rdi;      // r byte array initialized from initvector array address
+                                           // and left with the results of the last encryption block
+    const Register len_reg     = rbx;      // src len (must be multiple of blocksize 16)
+    const Register pos         = rax;
+
+    // xmm register assignments for the loops below
+    const XMMRegister xmm_result = xmm0;
+    const XMMRegister xmm_temp   = xmm1;
+    // first 6 keys preloaded into xmm2-xmm7
+    const int XMM_REG_NUM_KEY_FIRST = 2;
+    const int XMM_REG_NUM_KEY_LAST  = 7;
+    const XMMRegister xmm_key0   = as_XMMRegister(XMM_REG_NUM_KEY_FIRST);
+
+    __ enter(); // required for proper stackwalking of RuntimeStub frame
+    handleSOERegisters(true /*saving*/);
+
+    // load registers from incoming parameters
+    const Address  from_param(rbp, 8+0);
+    const Address  to_param  (rbp, 8+4);
+    const Address  key_param (rbp, 8+8);
+    const Address  rvec_param (rbp, 8+12);
+    const Address  len_param  (rbp, 8+16);
+    __ movptr(from , from_param);
+    __ movptr(to   , to_param);
+    __ movptr(key  , key_param);
+    __ movptr(rvec , rvec_param);
+    __ movptr(len_reg , len_param);
+
+    const XMMRegister xmm_key_shuf_mask = xmm_temp;  // used temporarily to swap key bytes up front
+    __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    // load up xmm regs 2 thru 7 with keys 0-5
+    for (int rnum = XMM_REG_NUM_KEY_FIRST, offset = 0x00; rnum  <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      load_key(as_XMMRegister(rnum), key, offset, xmm_key_shuf_mask);
+      offset += 0x10;
+    }
+
+    __ movdqu(xmm_result, Address(rvec, 0x00));   // initialize xmm_result with r vec
+
+    // now split to different paths depending on the keylen (len in ints of AESCrypt.KLE array (52=192, or 60=256))
+    __ movl(rax, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+    __ cmpl(rax, 44);
+    __ jcc(Assembler::notEqual, L_key_192_256);
+
+    // 128 bit code follows here
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_loopTop_128);
+    __ movdqu(xmm_temp, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of input
+    __ pxor  (xmm_result, xmm_temp);                                // xor with the current r vector
+
+    __ pxor  (xmm_result, xmm_key0);                                // do the aes rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum  <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      __ aesenc(xmm_result, as_XMMRegister(rnum));
+    }
+    for (int key_offset = 0x60; key_offset <= 0x90; key_offset += 0x10) {
+      aes_enc_key(xmm_result, xmm_temp, key, key_offset);
+    }
+    load_key(xmm_temp, key, 0xa0);
+    __ aesenclast(xmm_result, xmm_temp);
+
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual, L_loopTop_128);
+
+    __ BIND(L_exit);
+    __ movdqu(Address(rvec, 0), xmm_result);     // final value of r stored in rvec of CipherBlockChaining object
+
+    handleSOERegisters(false /*restoring*/);
+    __ movl(rax, 0);                             // return 0 (why?)
+    __ leave();                                  // required for proper stackwalking of RuntimeStub frame
+    __ ret(0);
+
+  __ BIND(L_key_192_256);
+  // here rax = len in ints of AESCrypt.KLE array (52=192, or 60=256)
+    __ cmpl(rax, 52);
+    __ jcc(Assembler::notEqual, L_key_256);
+
+    // 192-bit code follows here (could be changed to use more xmm registers)
+    __ movptr(pos, 0);
+  __ align(OptoLoopAlignment);
+  __ BIND(L_loopTop_192);
+    __ movdqu(xmm_temp, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of input
+    __ pxor  (xmm_result, xmm_temp);                                // xor with the current r vector
+
+    __ pxor  (xmm_result, xmm_key0);                                // do the aes rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum  <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      __ aesenc(xmm_result, as_XMMRegister(rnum));
+    }
+    for (int key_offset = 0x60; key_offset <= 0xb0; key_offset += 0x10) {
+      aes_enc_key(xmm_result, xmm_temp, key, key_offset);
+    }
+    load_key(xmm_temp, key, 0xc0);
+    __ aesenclast(xmm_result, xmm_temp);
+
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);   // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual, L_loopTop_192);
+    __ jmp(L_exit);
+
+  __ BIND(L_key_256);
+    // 256-bit code follows here (could be changed to use more xmm registers)
+    __ movptr(pos, 0);
+  __ align(OptoLoopAlignment);
+  __ BIND(L_loopTop_256);
+    __ movdqu(xmm_temp, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of input
+    __ pxor  (xmm_result, xmm_temp);                                // xor with the current r vector
+
+    __ pxor  (xmm_result, xmm_key0);                                // do the aes rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum  <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      __ aesenc(xmm_result, as_XMMRegister(rnum));
+    }
+    for (int key_offset = 0x60; key_offset <= 0xd0; key_offset += 0x10) {
+      aes_enc_key(xmm_result, xmm_temp, key, key_offset);
+    }
+    load_key(xmm_temp, key, 0xe0);
+    __ aesenclast(xmm_result, xmm_temp);
+
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);   // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual, L_loopTop_256);
+    __ jmp(L_exit);
+
+    return start;
+  }
+
+
+  // CBC AES Decryption.
+  // In 32-bit stub, because of lack of registers we do not try to parallelize 4 blocks at a time.
+  //
+  // Arguments:
+  //
+  // Inputs:
+  //   c_rarg0   - source byte array address
+  //   c_rarg1   - destination byte array address
+  //   c_rarg2   - K (key) in little endian int array
+  //   c_rarg3   - r vector byte array address
+  //   c_rarg4   - input length
+  //
+
+  address generate_cipherBlockChaining_decryptAESCrypt() {
+    assert(UseAES && (UseAVX > 0), "need AES instructions and misaligned SSE support");
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", "cipherBlockChaining_decryptAESCrypt");
+    address start = __ pc();
+
+    Label L_exit, L_key_192_256, L_key_256;
+    Label L_singleBlock_loopTop_128;
+    Label L_singleBlock_loopTop_192, L_singleBlock_loopTop_256;
+    const Register from        = rsi;      // source array address
+    const Register to          = rdx;      // destination array address
+    const Register key         = rcx;      // key array address
+    const Register rvec        = rdi;      // r byte array initialized from initvector array address
+                                           // and left with the results of the last encryption block
+    const Register len_reg     = rbx;      // src len (must be multiple of blocksize 16)
+    const Register pos         = rax;
+
+    // xmm register assignments for the loops below
+    const XMMRegister xmm_result = xmm0;
+    const XMMRegister xmm_temp   = xmm1;
+    // first 6 keys preloaded into xmm2-xmm7
+    const int XMM_REG_NUM_KEY_FIRST = 2;
+    const int XMM_REG_NUM_KEY_LAST  = 7;
+    const int FIRST_NON_REG_KEY_offset = 0x70;
+    const XMMRegister xmm_key_first   = as_XMMRegister(XMM_REG_NUM_KEY_FIRST);
+
+    __ enter(); // required for proper stackwalking of RuntimeStub frame
+    handleSOERegisters(true /*saving*/);
+
+    // load registers from incoming parameters
+    const Address  from_param(rbp, 8+0);
+    const Address  to_param  (rbp, 8+4);
+    const Address  key_param (rbp, 8+8);
+    const Address  rvec_param (rbp, 8+12);
+    const Address  len_param  (rbp, 8+16);
+    __ movptr(from , from_param);
+    __ movptr(to   , to_param);
+    __ movptr(key  , key_param);
+    __ movptr(rvec , rvec_param);
+    __ movptr(len_reg , len_param);
+
+    // the java expanded key ordering is rotated one position from what we want
+    // so we start from 0x10 here and hit 0x00 last
+    const XMMRegister xmm_key_shuf_mask = xmm1;  // used temporarily to swap key bytes up front
+    __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    // load up xmm regs 2 thru 6 with first 5 keys
+    for (int rnum = XMM_REG_NUM_KEY_FIRST, offset = 0x10; rnum  <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      load_key(as_XMMRegister(rnum), key, offset, xmm_key_shuf_mask);
+      offset += 0x10;
+    }
+
+    // inside here, use the rvec register to point to previous block cipher
+    // with which we xor at the end of each newly decrypted block
+    const Register  prev_block_cipher_ptr = rvec;
+
+    // now split to different paths depending on the keylen (len in ints of AESCrypt.KLE array (52=192, or 60=256))
+    __ movl(rax, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+    __ cmpl(rax, 44);
+    __ jcc(Assembler::notEqual, L_key_192_256);
+
+
+    // 128-bit code follows here, parallelized
+    __ movptr(pos, 0);
+  __ align(OptoLoopAlignment);
+  __ BIND(L_singleBlock_loopTop_128);
+    __ cmpptr(len_reg, 0);           // any blocks left??
+    __ jcc(Assembler::equal, L_exit);
+    __ movdqu(xmm_result, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of cipher input
+    __ pxor  (xmm_result, xmm_key_first);                             // do the aes dec rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum  <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      __ aesdec(xmm_result, as_XMMRegister(rnum));
+    }
+    for (int key_offset = FIRST_NON_REG_KEY_offset; key_offset <= 0xa0; key_offset += 0x10) {   // 128-bit runs up to key offset a0
+      aes_dec_key(xmm_result, xmm_temp, key, key_offset);
+    }
+    load_key(xmm_temp, key, 0x00);                                     // final key is stored in java expanded array at offset 0
+    __ aesdeclast(xmm_result, xmm_temp);
+    __ movdqu(xmm_temp, Address(prev_block_cipher_ptr, 0x00));
+    __ pxor  (xmm_result, xmm_temp);                                  // xor with the current r vector
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ lea(prev_block_cipher_ptr, Address(from, pos, Address::times_1, 0));     // set up new ptr
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jmp(L_singleBlock_loopTop_128);
+
+
+    __ BIND(L_exit);
+    __ movdqu(xmm_temp, Address(prev_block_cipher_ptr, 0x00));
+    __ movptr(rvec , rvec_param);                                     // restore this since used in loop
+    __ movdqu(Address(rvec, 0), xmm_temp);                            // final value of r stored in rvec of CipherBlockChaining object
+    handleSOERegisters(false /*restoring*/);
+    __ movl(rax, 0);                                                  // return 0 (why?)
+    __ leave();                                                       // required for proper stackwalking of RuntimeStub frame
+    __ ret(0);
+
+
+    __ BIND(L_key_192_256);
+    // here rax = len in ints of AESCrypt.KLE array (52=192, or 60=256)
+    __ cmpl(rax, 52);
+    __ jcc(Assembler::notEqual, L_key_256);
+
+    // 192-bit code follows here (could be optimized to use parallelism)
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_singleBlock_loopTop_192);
+    __ movdqu(xmm_result, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of cipher input
+    __ pxor  (xmm_result, xmm_key_first);                             // do the aes dec rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      __ aesdec(xmm_result, as_XMMRegister(rnum));
+    }
+    for (int key_offset = FIRST_NON_REG_KEY_offset; key_offset <= 0xc0; key_offset += 0x10) {   // 192-bit runs up to key offset c0
+      aes_dec_key(xmm_result, xmm_temp, key, key_offset);
+    }
+    load_key(xmm_temp, key, 0x00);                                     // final key is stored in java expanded array at offset 0
+    __ aesdeclast(xmm_result, xmm_temp);
+    __ movdqu(xmm_temp, Address(prev_block_cipher_ptr, 0x00));
+    __ pxor  (xmm_result, xmm_temp);                                  // xor with the current r vector
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ lea(prev_block_cipher_ptr, Address(from, pos, Address::times_1, 0));     // set up new ptr
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual,L_singleBlock_loopTop_192);
+    __ jmp(L_exit);
+
+    __ BIND(L_key_256);
+    // 256-bit code follows here (could be optimized to use parallelism)
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_singleBlock_loopTop_256);
+    __ movdqu(xmm_result, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of cipher input
+    __ pxor  (xmm_result, xmm_key_first);                             // do the aes dec rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      __ aesdec(xmm_result, as_XMMRegister(rnum));
+    }
+    for (int key_offset = FIRST_NON_REG_KEY_offset; key_offset <= 0xe0; key_offset += 0x10) {   // 256-bit runs up to key offset e0
+      aes_dec_key(xmm_result, xmm_temp, key, key_offset);
+    }
+    load_key(xmm_temp, key, 0x00);                                     // final key is stored in java expanded array at offset 0
+    __ aesdeclast(xmm_result, xmm_temp);
+    __ movdqu(xmm_temp, Address(prev_block_cipher_ptr, 0x00));
+    __ pxor  (xmm_result, xmm_temp);                                  // xor with the current r vector
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ lea(prev_block_cipher_ptr, Address(from, pos, Address::times_1, 0));     // set up new ptr
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual,L_singleBlock_loopTop_256);
+    __ jmp(L_exit);
+
+    return start;
+  }
+
+
  public:
   // Information about frame layout at time of blocking runtime call.
   // Note that we only have to preserve callee-saved registers since
@@ -2332,6 +2855,16 @@
     generate_arraycopy_stubs();
 
     generate_math_stubs();
+
+    // don't bother generating these AES intrinsic stubs unless global flag is set
+    if (UseAESIntrinsics) {
+      StubRoutines::x86::_key_shuffle_mask_addr = generate_key_shuffle_mask();  // might be needed by the others
+
+      StubRoutines::_aescrypt_encryptBlock = generate_aescrypt_encryptBlock();
+      StubRoutines::_aescrypt_decryptBlock = generate_aescrypt_decryptBlock();
+      StubRoutines::_cipherBlockChaining_encryptAESCrypt = generate_cipherBlockChaining_encryptAESCrypt();
+      StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptAESCrypt();
+    }
   }
 
 
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -2941,6 +2941,548 @@
     }
   }
 
+  // AES intrinsic stubs
+  enum {AESBlockSize = 16};
+
+  address generate_key_shuffle_mask() {
+    __ align(16);
+    StubCodeMark mark(this, "StubRoutines", "key_shuffle_mask");
+    address start = __ pc();
+    __ emit_data64( 0x0405060700010203, relocInfo::none );
+    __ emit_data64( 0x0c0d0e0f08090a0b, relocInfo::none );
+    return start;
+  }
+
+  // Utility routine for loading a 128-bit key word in little endian format
+  // can optionally specify that the shuffle mask is already in an xmmregister
+  void load_key(XMMRegister xmmdst, Register key, int offset, XMMRegister xmm_shuf_mask=NULL) {
+    __ movdqu(xmmdst, Address(key, offset));
+    if (xmm_shuf_mask != NULL) {
+      __ pshufb(xmmdst, xmm_shuf_mask);
+    } else {
+      __ pshufb(xmmdst, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    }
+  }
+
+  // aesenc using specified key+offset
+  // can optionally specify that the shuffle mask is already in an xmmregister
+  void aes_enc_key(XMMRegister xmmdst, XMMRegister xmmtmp, Register key, int offset, XMMRegister xmm_shuf_mask=NULL) {
+    load_key(xmmtmp, key, offset, xmm_shuf_mask);
+    __ aesenc(xmmdst, xmmtmp);
+  }
+
+  // aesdec using specified key+offset
+  // can optionally specify that the shuffle mask is already in an xmmregister
+  void aes_dec_key(XMMRegister xmmdst, XMMRegister xmmtmp, Register key, int offset, XMMRegister xmm_shuf_mask=NULL) {
+    load_key(xmmtmp, key, offset, xmm_shuf_mask);
+    __ aesdec(xmmdst, xmmtmp);
+  }
+
+
+  // Arguments:
+  //
+  // Inputs:
+  //   c_rarg0   - source byte array address
+  //   c_rarg1   - destination byte array address
+  //   c_rarg2   - K (key) in little endian int array
+  //
+  address generate_aescrypt_encryptBlock() {
+    assert(UseAES && (UseAVX > 0), "need AES instructions and misaligned SSE support");
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", "aescrypt_encryptBlock");
+    Label L_doLast;
+    address start = __ pc();
+
+    const Register from        = c_rarg0;  // source array address
+    const Register to          = c_rarg1;  // destination array address
+    const Register key         = c_rarg2;  // key array address
+    const Register keylen      = rax;
+
+    const XMMRegister xmm_result = xmm0;
+    const XMMRegister xmm_temp   = xmm1;
+    const XMMRegister xmm_key_shuf_mask = xmm2;
+
+    __ enter(); // required for proper stackwalking of RuntimeStub frame
+
+    __ movl(keylen, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+    // keylen = # of 32-bit words, convert to 128-bit words
+    __ shrl(keylen, 2);
+    __ subl(keylen, 11);   // every key has at least 11 128-bit words, some have more
+
+    __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    __ movdqu(xmm_result, Address(from, 0));  // get 16 bytes of input
+
+    // For encryption, the java expanded key ordering is just what we need
+    // we don't know if the key is aligned, hence not using load-execute form
+
+    load_key(xmm_temp, key, 0x00, xmm_key_shuf_mask);
+    __ pxor(xmm_result, xmm_temp);
+    for (int offset = 0x10; offset <= 0x90; offset += 0x10) {
+      aes_enc_key(xmm_result, xmm_temp, key, offset, xmm_key_shuf_mask);
+    }
+    load_key  (xmm_temp, key, 0xa0, xmm_key_shuf_mask);
+    __ cmpl(keylen, 0);
+    __ jcc(Assembler::equal, L_doLast);
+    __ aesenc(xmm_result, xmm_temp);                   // only in 192 and 256 bit keys
+    aes_enc_key(xmm_result, xmm_temp, key, 0xb0, xmm_key_shuf_mask);
+    load_key(xmm_temp, key, 0xc0, xmm_key_shuf_mask);
+    __ subl(keylen, 2);
+    __ jcc(Assembler::equal, L_doLast);
+    __ aesenc(xmm_result, xmm_temp);                   // only in 256 bit keys
+    aes_enc_key(xmm_result, xmm_temp, key, 0xd0, xmm_key_shuf_mask);
+    load_key(xmm_temp, key, 0xe0, xmm_key_shuf_mask);
+
+    __ BIND(L_doLast);
+    __ aesenclast(xmm_result, xmm_temp);
+    __ movdqu(Address(to, 0), xmm_result);        // store the result
+    __ xorptr(rax, rax); // return 0
+    __ leave(); // required for proper stackwalking of RuntimeStub frame
+    __ ret(0);
+
+    return start;
+  }
+
+
+  // Arguments:
+  //
+  // Inputs:
+  //   c_rarg0   - source byte array address
+  //   c_rarg1   - destination byte array address
+  //   c_rarg2   - K (key) in little endian int array
+  //
+  address generate_aescrypt_decryptBlock() {
+    assert(UseAES && (UseAVX > 0), "need AES instructions and misaligned SSE support");
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", "aescrypt_decryptBlock");
+    Label L_doLast;
+    address start = __ pc();
+
+    const Register from        = c_rarg0;  // source array address
+    const Register to          = c_rarg1;  // destination array address
+    const Register key         = c_rarg2;  // key array address
+    const Register keylen      = rax;
+
+    const XMMRegister xmm_result = xmm0;
+    const XMMRegister xmm_temp   = xmm1;
+    const XMMRegister xmm_key_shuf_mask = xmm2;
+
+    __ enter(); // required for proper stackwalking of RuntimeStub frame
+
+    __ movl(keylen, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+    // keylen = # of 32-bit words, convert to 128-bit words
+    __ shrl(keylen, 2);
+    __ subl(keylen, 11);   // every key has at least 11 128-bit words, some have more
+
+    __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    __ movdqu(xmm_result, Address(from, 0));
+
+    // for decryption java expanded key ordering is rotated one position from what we want
+    // so we start from 0x10 here and hit 0x00 last
+    // we don't know if the key is aligned, hence not using load-execute form
+    load_key(xmm_temp, key, 0x10, xmm_key_shuf_mask);
+    __ pxor  (xmm_result, xmm_temp);
+    for (int offset = 0x20; offset <= 0xa0; offset += 0x10) {
+      aes_dec_key(xmm_result, xmm_temp, key, offset, xmm_key_shuf_mask);
+    }
+    __ cmpl(keylen, 0);
+    __ jcc(Assembler::equal, L_doLast);
+    // only in 192 and 256 bit keys
+    aes_dec_key(xmm_result, xmm_temp, key, 0xb0, xmm_key_shuf_mask);
+    aes_dec_key(xmm_result, xmm_temp, key, 0xc0, xmm_key_shuf_mask);
+    __ subl(keylen, 2);
+    __ jcc(Assembler::equal, L_doLast);
+    // only in 256 bit keys
+    aes_dec_key(xmm_result, xmm_temp, key, 0xd0, xmm_key_shuf_mask);
+    aes_dec_key(xmm_result, xmm_temp, key, 0xe0, xmm_key_shuf_mask);
+
+    __ BIND(L_doLast);
+    // for decryption the aesdeclast operation is always on key+0x00
+    load_key(xmm_temp, key, 0x00, xmm_key_shuf_mask);
+    __ aesdeclast(xmm_result, xmm_temp);
+
+    __ movdqu(Address(to, 0), xmm_result);  // store the result
+
+    __ xorptr(rax, rax); // return 0
+    __ leave(); // required for proper stackwalking of RuntimeStub frame
+    __ ret(0);
+
+    return start;
+  }
+
+
+  // Arguments:
+  //
+  // Inputs:
+  //   c_rarg0   - source byte array address
+  //   c_rarg1   - destination byte array address
+  //   c_rarg2   - K (key) in little endian int array
+  //   c_rarg3   - r vector byte array address
+  //   c_rarg4   - input length
+  //
+  address generate_cipherBlockChaining_encryptAESCrypt() {
+    assert(UseAES && (UseAVX > 0), "need AES instructions and misaligned SSE support");
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", "cipherBlockChaining_encryptAESCrypt");
+    address start = __ pc();
+
+    Label L_exit, L_key_192_256, L_key_256, L_loopTop_128, L_loopTop_192, L_loopTop_256;
+    const Register from        = c_rarg0;  // source array address
+    const Register to          = c_rarg1;  // destination array address
+    const Register key         = c_rarg2;  // key array address
+    const Register rvec        = c_rarg3;  // r byte array initialized from initvector array address
+                                           // and left with the results of the last encryption block
+#ifndef _WIN64
+    const Register len_reg     = c_rarg4;  // src len (must be multiple of blocksize 16)
+#else
+    const Address  len_mem(rsp, 6 * wordSize);  // length is on stack on Win64
+    const Register len_reg     = r10;      // pick the first volatile windows register
+#endif
+    const Register pos         = rax;
+
+    // xmm register assignments for the loops below
+    const XMMRegister xmm_result = xmm0;
+    const XMMRegister xmm_temp   = xmm1;
+    // keys 0-10 preloaded into xmm2-xmm12
+    const int XMM_REG_NUM_KEY_FIRST = 2;
+    const int XMM_REG_NUM_KEY_LAST  = 12;
+    const XMMRegister xmm_key0   = as_XMMRegister(XMM_REG_NUM_KEY_FIRST);
+    const XMMRegister xmm_key10  = as_XMMRegister(XMM_REG_NUM_KEY_LAST);
+
+    __ enter(); // required for proper stackwalking of RuntimeStub frame
+
+#ifdef _WIN64
+    // on win64, fill len_reg from stack position
+    __ movl(len_reg, len_mem);
+    // save the xmm registers which must be preserved 6-12
+    __ subptr(rsp, -rsp_after_call_off * wordSize);
+    for (int i = 6; i <= XMM_REG_NUM_KEY_LAST; i++) {
+      __ movdqu(xmm_save(i), as_XMMRegister(i));
+    }
+#endif
+
+    const XMMRegister xmm_key_shuf_mask = xmm_temp;  // used temporarily to swap key bytes up front
+    __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    // load up xmm regs 2 thru 12 with key 0x00 - 0xa0
+    for (int rnum = XMM_REG_NUM_KEY_FIRST, offset = 0x00; rnum <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      load_key(as_XMMRegister(rnum), key, offset, xmm_key_shuf_mask);
+      offset += 0x10;
+    }
+
+    __ movdqu(xmm_result, Address(rvec, 0x00));   // initialize xmm_result with r vec
+
+    // now split to different paths depending on the keylen (len in ints of AESCrypt.KLE array (52=192, or 60=256))
+    __ movl(rax, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+    __ cmpl(rax, 44);
+    __ jcc(Assembler::notEqual, L_key_192_256);
+
+    // 128 bit code follows here
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_loopTop_128);
+    __ movdqu(xmm_temp, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of input
+    __ pxor  (xmm_result, xmm_temp);               // xor with the current r vector
+
+    __ pxor  (xmm_result, xmm_key0);               // do the aes rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum <= XMM_REG_NUM_KEY_LAST - 1; rnum++) {
+      __ aesenc(xmm_result, as_XMMRegister(rnum));
+    }
+    __ aesenclast(xmm_result, xmm_key10);
+
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual, L_loopTop_128);
+
+    __ BIND(L_exit);
+    __ movdqu(Address(rvec, 0), xmm_result);     // final value of r stored in rvec of CipherBlockChaining object
+
+#ifdef _WIN64
+    // restore xmm regs belonging to calling function
+    for (int i = 6; i <= XMM_REG_NUM_KEY_LAST; i++) {
+      __ movdqu(as_XMMRegister(i), xmm_save(i));
+    }
+#endif
+    __ movl(rax, 0); // return 0 (why?)
+    __ leave(); // required for proper stackwalking of RuntimeStub frame
+    __ ret(0);
+
+    __ BIND(L_key_192_256);
+    // here rax = len in ints of AESCrypt.KLE array (52=192, or 60=256)
+    __ cmpl(rax, 52);
+    __ jcc(Assembler::notEqual, L_key_256);
+
+    // 192-bit code follows here (could be changed to use more xmm registers)
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_loopTop_192);
+    __ movdqu(xmm_temp, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of input
+    __ pxor  (xmm_result, xmm_temp);               // xor with the current r vector
+
+    __ pxor  (xmm_result, xmm_key0);               // do the aes rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum  <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      __ aesenc(xmm_result, as_XMMRegister(rnum));
+    }
+    aes_enc_key(xmm_result, xmm_temp, key, 0xb0);
+    load_key(xmm_temp, key, 0xc0);
+    __ aesenclast(xmm_result, xmm_temp);
+
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual, L_loopTop_192);
+    __ jmp(L_exit);
+
+    __ BIND(L_key_256);
+    // 256-bit code follows here (could be changed to use more xmm registers)
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_loopTop_256);
+    __ movdqu(xmm_temp, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of input
+    __ pxor  (xmm_result, xmm_temp);               // xor with the current r vector
+
+    __ pxor  (xmm_result, xmm_key0);               // do the aes rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum  <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      __ aesenc(xmm_result, as_XMMRegister(rnum));
+    }
+    aes_enc_key(xmm_result, xmm_temp, key, 0xb0);
+    aes_enc_key(xmm_result, xmm_temp, key, 0xc0);
+    aes_enc_key(xmm_result, xmm_temp, key, 0xd0);
+    load_key(xmm_temp, key, 0xe0);
+    __ aesenclast(xmm_result, xmm_temp);
+
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual, L_loopTop_256);
+    __ jmp(L_exit);
+
+    return start;
+  }
+
+
+
+  // This is a version of CBC/AES Decrypt which does 4 blocks in a loop at a time
+  // to hide instruction latency
+  //
+  // Arguments:
+  //
+  // Inputs:
+  //   c_rarg0   - source byte array address
+  //   c_rarg1   - destination byte array address
+  //   c_rarg2   - K (key) in little endian int array
+  //   c_rarg3   - r vector byte array address
+  //   c_rarg4   - input length
+  //
+
+  address generate_cipherBlockChaining_decryptAESCrypt_Parallel() {
+    assert(UseAES && (UseAVX > 0), "need AES instructions and misaligned SSE support");
+    __ align(CodeEntryAlignment);
+    StubCodeMark mark(this, "StubRoutines", "cipherBlockChaining_decryptAESCrypt");
+    address start = __ pc();
+
+    Label L_exit, L_key_192_256, L_key_256;
+    Label L_singleBlock_loopTop_128, L_multiBlock_loopTop_128;
+    Label L_singleBlock_loopTop_192, L_singleBlock_loopTop_256;
+    const Register from        = c_rarg0;  // source array address
+    const Register to          = c_rarg1;  // destination array address
+    const Register key         = c_rarg2;  // key array address
+    const Register rvec        = c_rarg3;  // r byte array initialized from initvector array address
+                                           // and left with the results of the last encryption block
+#ifndef _WIN64
+    const Register len_reg     = c_rarg4;  // src len (must be multiple of blocksize 16)
+#else
+    const Address  len_mem(rsp, 6 * wordSize);  // length is on stack on Win64
+    const Register len_reg     = r10;      // pick the first volatile windows register
+#endif
+    const Register pos         = rax;
+
+    // xmm register assignments for the loops below
+    const XMMRegister xmm_result = xmm0;
+    // keys 0-10 preloaded into xmm2-xmm12
+    const int XMM_REG_NUM_KEY_FIRST = 5;
+    const int XMM_REG_NUM_KEY_LAST  = 15;
+    const XMMRegister xmm_key_first   = as_XMMRegister(XMM_REG_NUM_KEY_FIRST);
+    const XMMRegister xmm_key_last  = as_XMMRegister(XMM_REG_NUM_KEY_LAST);
+
+    __ enter(); // required for proper stackwalking of RuntimeStub frame
+
+#ifdef _WIN64
+    // on win64, fill len_reg from stack position
+    __ movl(len_reg, len_mem);
+    // save the xmm registers which must be preserved 6-15
+    __ subptr(rsp, -rsp_after_call_off * wordSize);
+    for (int i = 6; i <= XMM_REG_NUM_KEY_LAST; i++) {
+      __ movdqu(xmm_save(i), as_XMMRegister(i));
+    }
+#endif
+    // the java expanded key ordering is rotated one position from what we want
+    // so we start from 0x10 here and hit 0x00 last
+    const XMMRegister xmm_key_shuf_mask = xmm1;  // used temporarily to swap key bytes up front
+    __ movdqu(xmm_key_shuf_mask, ExternalAddress(StubRoutines::x86::key_shuffle_mask_addr()));
+    // load up xmm regs 5 thru 15 with key 0x10 - 0xa0 - 0x00
+    for (int rnum = XMM_REG_NUM_KEY_FIRST, offset = 0x10; rnum <= XMM_REG_NUM_KEY_LAST; rnum++) {
+      if (rnum == XMM_REG_NUM_KEY_LAST) offset = 0x00;
+      load_key(as_XMMRegister(rnum), key, offset, xmm_key_shuf_mask);
+      offset += 0x10;
+    }
+
+    const XMMRegister xmm_prev_block_cipher = xmm1;  // holds cipher of previous block
+    // registers holding the four results in the parallelized loop
+    const XMMRegister xmm_result0 = xmm0;
+    const XMMRegister xmm_result1 = xmm2;
+    const XMMRegister xmm_result2 = xmm3;
+    const XMMRegister xmm_result3 = xmm4;
+
+    __ movdqu(xmm_prev_block_cipher, Address(rvec, 0x00));   // initialize with initial rvec
+
+    // now split to different paths depending on the keylen (len in ints of AESCrypt.KLE array (52=192, or 60=256))
+    __ movl(rax, Address(key, arrayOopDesc::length_offset_in_bytes() - arrayOopDesc::base_offset_in_bytes(T_INT)));
+    __ cmpl(rax, 44);
+    __ jcc(Assembler::notEqual, L_key_192_256);
+
+
+    // 128-bit code follows here, parallelized
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_multiBlock_loopTop_128);
+    __ cmpptr(len_reg, 4*AESBlockSize);           // see if at least 4 blocks left
+    __ jcc(Assembler::less, L_singleBlock_loopTop_128);
+
+    __ movdqu(xmm_result0, Address(from, pos, Address::times_1, 0*AESBlockSize));   // get next 4 blocks into xmmresult registers
+    __ movdqu(xmm_result1, Address(from, pos, Address::times_1, 1*AESBlockSize));
+    __ movdqu(xmm_result2, Address(from, pos, Address::times_1, 2*AESBlockSize));
+    __ movdqu(xmm_result3, Address(from, pos, Address::times_1, 3*AESBlockSize));
+
+#define DoFour(opc, src_reg)                    \
+    __ opc(xmm_result0, src_reg);               \
+    __ opc(xmm_result1, src_reg);               \
+    __ opc(xmm_result2, src_reg);               \
+    __ opc(xmm_result3, src_reg);
+
+    DoFour(pxor, xmm_key_first);
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum  <= XMM_REG_NUM_KEY_LAST - 1; rnum++) {
+      DoFour(aesdec, as_XMMRegister(rnum));
+    }
+    DoFour(aesdeclast, xmm_key_last);
+    // for each result, xor with the r vector of previous cipher block
+    __ pxor(xmm_result0, xmm_prev_block_cipher);
+    __ movdqu(xmm_prev_block_cipher, Address(from, pos, Address::times_1, 0*AESBlockSize));
+    __ pxor(xmm_result1, xmm_prev_block_cipher);
+    __ movdqu(xmm_prev_block_cipher, Address(from, pos, Address::times_1, 1*AESBlockSize));
+    __ pxor(xmm_result2, xmm_prev_block_cipher);
+    __ movdqu(xmm_prev_block_cipher, Address(from, pos, Address::times_1, 2*AESBlockSize));
+    __ pxor(xmm_result3, xmm_prev_block_cipher);
+    __ movdqu(xmm_prev_block_cipher, Address(from, pos, Address::times_1, 3*AESBlockSize));   // this will carry over to next set of blocks
+
+    __ movdqu(Address(to, pos, Address::times_1, 0*AESBlockSize), xmm_result0);     // store 4 results into the next 64 bytes of output
+    __ movdqu(Address(to, pos, Address::times_1, 1*AESBlockSize), xmm_result1);
+    __ movdqu(Address(to, pos, Address::times_1, 2*AESBlockSize), xmm_result2);
+    __ movdqu(Address(to, pos, Address::times_1, 3*AESBlockSize), xmm_result3);
+
+    __ addptr(pos, 4*AESBlockSize);
+    __ subptr(len_reg, 4*AESBlockSize);
+    __ jmp(L_multiBlock_loopTop_128);
+
+    // registers used in the non-parallelized loops
+    const XMMRegister xmm_prev_block_cipher_save = xmm2;
+    const XMMRegister xmm_temp   = xmm3;
+
+    __ align(OptoLoopAlignment);
+    __ BIND(L_singleBlock_loopTop_128);
+    __ cmpptr(len_reg, 0);           // any blocks left??
+    __ jcc(Assembler::equal, L_exit);
+    __ movdqu(xmm_result, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of cipher input
+    __ movdqa(xmm_prev_block_cipher_save, xmm_result);              // save for next r vector
+    __ pxor  (xmm_result, xmm_key_first);               // do the aes dec rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum  <= XMM_REG_NUM_KEY_LAST - 1; rnum++) {
+      __ aesdec(xmm_result, as_XMMRegister(rnum));
+    }
+    __ aesdeclast(xmm_result, xmm_key_last);
+    __ pxor  (xmm_result, xmm_prev_block_cipher);               // xor with the current r vector
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ movdqa(xmm_prev_block_cipher, xmm_prev_block_cipher_save);              // set up next r vector with cipher input from this block
+
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jmp(L_singleBlock_loopTop_128);
+
+
+    __ BIND(L_exit);
+    __ movdqu(Address(rvec, 0), xmm_prev_block_cipher);     // final value of r stored in rvec of CipherBlockChaining object
+#ifdef _WIN64
+    // restore regs belonging to calling function
+    for (int i = 6; i <= XMM_REG_NUM_KEY_LAST; i++) {
+      __ movdqu(as_XMMRegister(i), xmm_save(i));
+    }
+#endif
+    __ movl(rax, 0); // return 0 (why?)
+    __ leave(); // required for proper stackwalking of RuntimeStub frame
+    __ ret(0);
+
+
+    __ BIND(L_key_192_256);
+    // here rax = len in ints of AESCrypt.KLE array (52=192, or 60=256)
+    __ cmpl(rax, 52);
+    __ jcc(Assembler::notEqual, L_key_256);
+
+    // 192-bit code follows here (could be optimized to use parallelism)
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_singleBlock_loopTop_192);
+    __ movdqu(xmm_result, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of cipher input
+    __ movdqa(xmm_prev_block_cipher_save, xmm_result);              // save for next r vector
+    __ pxor  (xmm_result, xmm_key_first);               // do the aes dec rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum <= XMM_REG_NUM_KEY_LAST - 1; rnum++) {
+      __ aesdec(xmm_result, as_XMMRegister(rnum));
+    }
+    aes_dec_key(xmm_result, xmm_temp, key, 0xb0);     // 192-bit key goes up to c0
+    aes_dec_key(xmm_result, xmm_temp, key, 0xc0);
+    __ aesdeclast(xmm_result, xmm_key_last);                    // xmm15 always came from key+0
+    __ pxor  (xmm_result, xmm_prev_block_cipher);               // xor with the current r vector
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ movdqa(xmm_prev_block_cipher, xmm_prev_block_cipher_save);              // set up next r vector with cipher input from this block
+
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual,L_singleBlock_loopTop_192);
+    __ jmp(L_exit);
+
+    __ BIND(L_key_256);
+    // 256-bit code follows here (could be optimized to use parallelism)
+    __ movptr(pos, 0);
+    __ align(OptoLoopAlignment);
+    __ BIND(L_singleBlock_loopTop_256);
+    __ movdqu(xmm_result, Address(from, pos, Address::times_1, 0));   // get next 16 bytes of cipher input
+    __ movdqa(xmm_prev_block_cipher_save, xmm_result);              // save for next r vector
+    __ pxor  (xmm_result, xmm_key_first);               // do the aes dec rounds
+    for (int rnum = XMM_REG_NUM_KEY_FIRST + 1; rnum <= XMM_REG_NUM_KEY_LAST - 1; rnum++) {
+      __ aesdec(xmm_result, as_XMMRegister(rnum));
+    }
+    aes_dec_key(xmm_result, xmm_temp, key, 0xb0);     // 256-bit key goes up to e0
+    aes_dec_key(xmm_result, xmm_temp, key, 0xc0);
+    aes_dec_key(xmm_result, xmm_temp, key, 0xd0);
+    aes_dec_key(xmm_result, xmm_temp, key, 0xe0);
+    __ aesdeclast(xmm_result, xmm_key_last);             // xmm15 came from key+0
+    __ pxor  (xmm_result, xmm_prev_block_cipher);               // xor with the current r vector
+    __ movdqu(Address(to, pos, Address::times_1, 0), xmm_result);     // store into the next 16 bytes of output
+    // no need to store r to memory until we exit
+    __ movdqa(xmm_prev_block_cipher, xmm_prev_block_cipher_save);              // set up next r vector with cipher input from this block
+
+    __ addptr(pos, AESBlockSize);
+    __ subptr(len_reg, AESBlockSize);
+    __ jcc(Assembler::notEqual,L_singleBlock_loopTop_256);
+    __ jmp(L_exit);
+
+    return start;
+  }
+
+
+
 #undef __
 #define __ masm->
 
@@ -3135,6 +3677,16 @@
     generate_arraycopy_stubs();
 
     generate_math_stubs();
+
+    // don't bother generating these AES intrinsic stubs unless global flag is set
+    if (UseAESIntrinsics) {
+      StubRoutines::x86::_key_shuffle_mask_addr = generate_key_shuffle_mask();  // needed by the others
+
+      StubRoutines::_aescrypt_encryptBlock = generate_aescrypt_encryptBlock();
+      StubRoutines::_aescrypt_decryptBlock = generate_aescrypt_decryptBlock();
+      StubRoutines::_cipherBlockChaining_encryptAESCrypt = generate_cipherBlockChaining_encryptAESCrypt();
+      StubRoutines::_cipherBlockChaining_decryptAESCrypt = generate_cipherBlockChaining_decryptAESCrypt_Parallel();
+    }
   }
 
  public:
--- a/hotspot/src/cpu/x86/vm/stubRoutines_x86_32.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/stubRoutines_x86_32.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -44,3 +44,4 @@
 
 address StubRoutines::x86::_verify_mxcsr_entry         = NULL;
 address StubRoutines::x86::_verify_fpu_cntrl_wrd_entry = NULL;
+address StubRoutines::x86::_key_shuffle_mask_addr = NULL;
--- a/hotspot/src/cpu/x86/vm/stubRoutines_x86_32.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/stubRoutines_x86_32.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -41,10 +41,14 @@
  private:
   static address _verify_mxcsr_entry;
   static address _verify_fpu_cntrl_wrd_entry;
+  // shuffle mask for fixing up 128-bit words consisting of big-endian 32-bit integers
+  static address _key_shuffle_mask_addr;
 
  public:
   static address verify_mxcsr_entry()                        { return _verify_mxcsr_entry; }
   static address verify_fpu_cntrl_wrd_entry()                { return _verify_fpu_cntrl_wrd_entry; }
+  static address key_shuffle_mask_addr()                     { return _key_shuffle_mask_addr; }
+
 };
 
   static bool    returns_to_call_stub(address return_pc)     { return return_pc == _call_stub_return_address; }
--- a/hotspot/src/cpu/x86/vm/stubRoutines_x86_64.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/stubRoutines_x86_64.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -56,3 +56,4 @@
 address StubRoutines::x86::_double_sign_mask = NULL;
 address StubRoutines::x86::_double_sign_flip = NULL;
 address StubRoutines::x86::_mxcsr_std = NULL;
+address StubRoutines::x86::_key_shuffle_mask_addr = NULL;
--- a/hotspot/src/cpu/x86/vm/stubRoutines_x86_64.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/stubRoutines_x86_64.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -54,6 +54,8 @@
   static address _double_sign_mask;
   static address _double_sign_flip;
   static address _mxcsr_std;
+  // shuffle mask for fixing up 128-bit words consisting of big-endian 32-bit integers
+  static address _key_shuffle_mask_addr;
 
  public:
 
@@ -116,6 +118,9 @@
   {
     return _mxcsr_std;
   }
+
+  static address key_shuffle_mask_addr()                     { return _key_shuffle_mask_addr; }
+
 };
 
 #endif // CPU_X86_VM_STUBROUTINES_X86_64_HPP
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -419,13 +419,16 @@
   if (UseAVX < 1)
     _cpuFeatures &= ~CPU_AVX;
 
+  if (!UseAES && !FLAG_IS_DEFAULT(UseAES))
+    _cpuFeatures &= ~CPU_AES;
+
   if (logical_processors_per_package() == 1) {
     // HT processor could be installed on a system which doesn't support HT.
     _cpuFeatures &= ~CPU_HT;
   }
 
   char buf[256];
-  jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
+  jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
                cores_per_cpu(), threads_per_core(),
                cpu_family(), _model, _stepping,
                (supports_cmov() ? ", cmov" : ""),
@@ -441,6 +444,7 @@
                (supports_popcnt() ? ", popcnt" : ""),
                (supports_avx()    ? ", avx" : ""),
                (supports_avx2()   ? ", avx2" : ""),
+               (supports_aes()    ? ", aes" : ""),
                (supports_mmx_ext() ? ", mmxext" : ""),
                (supports_3dnow_prefetch() ? ", 3dnowpref" : ""),
                (supports_lzcnt()   ? ", lzcnt": ""),
@@ -472,6 +476,29 @@
   if (!supports_avx ()) // Drop to 0 if no AVX  support
     UseAVX = 0;
 
+  // Use AES instructions if available.
+  if (supports_aes()) {
+    if (FLAG_IS_DEFAULT(UseAES)) {
+      UseAES = true;
+    }
+  } else if (UseAES) {
+    if (!FLAG_IS_DEFAULT(UseAES))
+      warning("AES instructions not available on this CPU");
+    FLAG_SET_DEFAULT(UseAES, false);
+  }
+
+  // The AES intrinsic stubs require AES instruction support (of course)
+  // but also require AVX mode for misaligned SSE access
+  if (UseAES && (UseAVX > 0)) {
+    if (FLAG_IS_DEFAULT(UseAESIntrinsics)) {
+      UseAESIntrinsics = true;
+    }
+  } else if (UseAESIntrinsics) {
+    if (!FLAG_IS_DEFAULT(UseAESIntrinsics))
+      warning("AES intrinsics not available on this CPU");
+    FLAG_SET_DEFAULT(UseAESIntrinsics, false);
+  }
+
 #ifdef COMPILER2
   if (UseFPUForSpilling) {
     if (UseSSE < 2) {
@@ -714,6 +741,9 @@
     if (UseAVX > 0) {
       tty->print("  UseAVX=%d",UseAVX);
     }
+    if (UseAES) {
+      tty->print("  UseAES=1");
+    }
     tty->cr();
     tty->print("Allocation");
     if (AllocatePrefetchStyle <= 0 || UseSSE == 0 && !supports_3dnow_prefetch()) {
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -78,7 +78,9 @@
                sse4_2   : 1,
                         : 2,
                popcnt   : 1,
-                        : 3,
+                        : 1,
+               aes      : 1,
+                        : 1,
                osxsave  : 1,
                avx      : 1,
                         : 3;
@@ -244,7 +246,8 @@
     CPU_TSC    = (1 << 15),
     CPU_TSCINV = (1 << 16),
     CPU_AVX    = (1 << 17),
-    CPU_AVX2   = (1 << 18)
+    CPU_AVX2   = (1 << 18),
+    CPU_AES    = (1 << 19)
   } cpuFeatureFlags;
 
   enum {
@@ -420,6 +423,8 @@
       result |= CPU_TSC;
     if (_cpuid_info.ext_cpuid7_edx.bits.tsc_invariance != 0)
       result |= CPU_TSCINV;
+    if (_cpuid_info.std_cpuid1_ecx.bits.aes != 0)
+      result |= CPU_AES;
 
     // AMD features.
     if (is_amd()) {
@@ -544,6 +549,7 @@
   static bool supports_avx()      { return (_cpuFeatures & CPU_AVX) != 0; }
   static bool supports_avx2()     { return (_cpuFeatures & CPU_AVX2) != 0; }
   static bool supports_tsc()      { return (_cpuFeatures & CPU_TSC)    != 0; }
+  static bool supports_aes()      { return (_cpuFeatures & CPU_AES) != 0; }
 
   // Intel features
   static bool is_intel_family_core() { return is_intel() &&
--- a/hotspot/src/cpu/x86/vm/x86.ad	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/x86.ad	Wed Jul 05 18:27:34 2017 +0200
@@ -4102,9 +4102,158 @@
 
 // ----------------------- LogicalRightShift -----------------------------------
 
-// Shorts/Chars vector logical right shift produces incorrect Java result
+// Shorts vector logical right shift produces incorrect Java result
 // for negative data because java code convert short value into int with
-// sign extension before a shift.
+// sign extension before a shift. But char vectors are fine since chars are
+// unsigned values.
+
+instruct vsrl2S(vecS dst, vecS shift) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (URShiftVS dst shift));
+  format %{ "psrlw   $dst,$shift\t! logical right shift packed2S" %}
+  ins_encode %{
+    __ psrlw($dst$$XMMRegister, $shift$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl2S_imm(vecS dst, immI8 shift) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (URShiftVS dst shift));
+  format %{ "psrlw   $dst,$shift\t! logical right shift packed2S" %}
+  ins_encode %{
+    __ psrlw($dst$$XMMRegister, (int)$shift$$constant);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl2S_reg(vecS dst, vecS src, vecS shift) %{
+  predicate(UseAVX > 0 && n->as_Vector()->length() == 2);
+  match(Set dst (URShiftVS src shift));
+  format %{ "vpsrlw  $dst,$src,$shift\t! logical right shift packed2S" %}
+  ins_encode %{
+    bool vector256 = false;
+    __ vpsrlw($dst$$XMMRegister, $src$$XMMRegister, $shift$$XMMRegister, vector256);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl2S_reg_imm(vecS dst, vecS src, immI8 shift) %{
+  predicate(UseAVX > 0 && n->as_Vector()->length() == 2);
+  match(Set dst (URShiftVS src shift));
+  format %{ "vpsrlw  $dst,$src,$shift\t! logical right shift packed2S" %}
+  ins_encode %{
+    bool vector256 = false;
+    __ vpsrlw($dst$$XMMRegister, $src$$XMMRegister, (int)$shift$$constant, vector256);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl4S(vecD dst, vecS shift) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (URShiftVS dst shift));
+  format %{ "psrlw   $dst,$shift\t! logical right shift packed4S" %}
+  ins_encode %{
+    __ psrlw($dst$$XMMRegister, $shift$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl4S_imm(vecD dst, immI8 shift) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (URShiftVS dst shift));
+  format %{ "psrlw   $dst,$shift\t! logical right shift packed4S" %}
+  ins_encode %{
+    __ psrlw($dst$$XMMRegister, (int)$shift$$constant);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl4S_reg(vecD dst, vecD src, vecS shift) %{
+  predicate(UseAVX > 0 && n->as_Vector()->length() == 4);
+  match(Set dst (URShiftVS src shift));
+  format %{ "vpsrlw  $dst,$src,$shift\t! logical right shift packed4S" %}
+  ins_encode %{
+    bool vector256 = false;
+    __ vpsrlw($dst$$XMMRegister, $src$$XMMRegister, $shift$$XMMRegister, vector256);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl4S_reg_imm(vecD dst, vecD src, immI8 shift) %{
+  predicate(UseAVX > 0 && n->as_Vector()->length() == 4);
+  match(Set dst (URShiftVS src shift));
+  format %{ "vpsrlw  $dst,$src,$shift\t! logical right shift packed4S" %}
+  ins_encode %{
+    bool vector256 = false;
+    __ vpsrlw($dst$$XMMRegister, $src$$XMMRegister, (int)$shift$$constant, vector256);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl8S(vecX dst, vecS shift) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (URShiftVS dst shift));
+  format %{ "psrlw   $dst,$shift\t! logical right shift packed8S" %}
+  ins_encode %{
+    __ psrlw($dst$$XMMRegister, $shift$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl8S_imm(vecX dst, immI8 shift) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (URShiftVS dst shift));
+  format %{ "psrlw   $dst,$shift\t! logical right shift packed8S" %}
+  ins_encode %{
+    __ psrlw($dst$$XMMRegister, (int)$shift$$constant);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl8S_reg(vecX dst, vecX src, vecS shift) %{
+  predicate(UseAVX > 0 && n->as_Vector()->length() == 8);
+  match(Set dst (URShiftVS src shift));
+  format %{ "vpsrlw  $dst,$src,$shift\t! logical right shift packed8S" %}
+  ins_encode %{
+    bool vector256 = false;
+    __ vpsrlw($dst$$XMMRegister, $src$$XMMRegister, $shift$$XMMRegister, vector256);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl8S_reg_imm(vecX dst, vecX src, immI8 shift) %{
+  predicate(UseAVX > 0 && n->as_Vector()->length() == 8);
+  match(Set dst (URShiftVS src shift));
+  format %{ "vpsrlw  $dst,$src,$shift\t! logical right shift packed8S" %}
+  ins_encode %{
+    bool vector256 = false;
+    __ vpsrlw($dst$$XMMRegister, $src$$XMMRegister, (int)$shift$$constant, vector256);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl16S_reg(vecY dst, vecY src, vecS shift) %{
+  predicate(UseAVX > 1 && n->as_Vector()->length() == 16);
+  match(Set dst (URShiftVS src shift));
+  format %{ "vpsrlw  $dst,$src,$shift\t! logical right shift packed16S" %}
+  ins_encode %{
+    bool vector256 = true;
+    __ vpsrlw($dst$$XMMRegister, $src$$XMMRegister, $shift$$XMMRegister, vector256);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct vsrl16S_reg_imm(vecY dst, vecY src, immI8 shift) %{
+  predicate(UseAVX > 1 && n->as_Vector()->length() == 16);
+  match(Set dst (URShiftVS src shift));
+  format %{ "vpsrlw  $dst,$src,$shift\t! logical right shift packed16S" %}
+  ins_encode %{
+    bool vector256 = true;
+    __ vpsrlw($dst$$XMMRegister, $src$$XMMRegister, (int)$shift$$constant, vector256);
+  %}
+  ins_pipe( pipe_slow );
+%}
 
 // Integers vector logical right shift
 instruct vsrl2I(vecD dst, vecS shift) %{
--- a/hotspot/src/os/bsd/vm/perfMemory_bsd.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/os/bsd/vm/perfMemory_bsd.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -30,6 +30,7 @@
 #include "os_bsd.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/perfMemory.hpp"
+#include "services/memTracker.hpp"
 #include "utilities/exceptions.hpp"
 
 // put OS-includes here
@@ -753,6 +754,10 @@
   // clear the shared memory region
   (void)::memset((void*) mapAddress, 0, size);
 
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_reserve((address)mapAddress, size, CURRENT_PC);
+  MemTracker::record_virtual_memory_type((address)mapAddress, mtInternal);
+
   return mapAddress;
 }
 
@@ -912,6 +917,10 @@
               "Could not map PerfMemory");
   }
 
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_reserve((address)mapAddress, size, CURRENT_PC);
+  MemTracker::record_virtual_memory_type((address)mapAddress, mtInternal);
+
   *addr = mapAddress;
   *sizep = size;
 
--- a/hotspot/src/os/linux/vm/perfMemory_linux.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/os/linux/vm/perfMemory_linux.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -30,6 +30,7 @@
 #include "os_linux.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/perfMemory.hpp"
+#include "services/memTracker.hpp"
 #include "utilities/exceptions.hpp"
 
 // put OS-includes here
@@ -753,6 +754,10 @@
   // clear the shared memory region
   (void)::memset((void*) mapAddress, 0, size);
 
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_reserve((address)mapAddress, size, CURRENT_PC);
+  MemTracker::record_virtual_memory_type((address)mapAddress, mtInternal);
+
   return mapAddress;
 }
 
@@ -912,6 +917,10 @@
               "Could not map PerfMemory");
   }
 
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_reserve((address)mapAddress, size, CURRENT_PC);
+  MemTracker::record_virtual_memory_type((address)mapAddress, mtInternal);
+
   *addr = mapAddress;
   *sizep = size;
 
--- a/hotspot/src/os/solaris/vm/os_solaris.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -55,6 +55,7 @@
 #include "runtime/threadCritical.hpp"
 #include "runtime/timer.hpp"
 #include "services/attachListener.hpp"
+#include "services/memTracker.hpp"
 #include "services/runtimeService.hpp"
 #include "thread_solaris.inline.hpp"
 #include "utilities/decoder.hpp"
@@ -3072,11 +3073,12 @@
   // Since snv_84, Solaris attempts to honor the address hint - see 5003415.
   // Give it a try, if the kernel honors the hint we can return immediately.
   char* addr = Solaris::anon_mmap(requested_addr, bytes, 0, false);
+
   volatile int err = errno;
   if (addr == requested_addr) {
     return addr;
   } else if (addr != NULL) {
-    unmap_memory(addr, bytes);
+    pd_unmap_memory(addr, bytes);
   }
 
   if (PrintMiscellaneous && Verbose) {
--- a/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -30,6 +30,7 @@
 #include "os_solaris.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/perfMemory.hpp"
+#include "services/memTracker.hpp"
 #include "utilities/exceptions.hpp"
 
 // put OS-includes here
@@ -768,6 +769,10 @@
   // clear the shared memory region
   (void)::memset((void*) mapAddress, 0, size);
 
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_reserve((address)mapAddress, size, CURRENT_PC);
+  MemTracker::record_virtual_memory_type((address)mapAddress, mtInternal);
+
   return mapAddress;
 }
 
@@ -927,6 +932,10 @@
               "Could not map PerfMemory");
   }
 
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_reserve((address)mapAddress, size, CURRENT_PC);
+  MemTracker::record_virtual_memory_type((address)mapAddress, mtInternal);
+
   *addr = mapAddress;
   *sizep = size;
 
--- a/hotspot/src/os/windows/vm/perfMemory_windows.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/os/windows/vm/perfMemory_windows.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -30,6 +30,7 @@
 #include "os_windows.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/perfMemory.hpp"
+#include "services/memTracker.hpp"
 #include "utilities/exceptions.hpp"
 
 #include <windows.h>
@@ -1496,6 +1497,10 @@
   // clear the shared memory region
   (void)memset(mapAddress, '\0', size);
 
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_reserve((address)mapAddress, size, CURRENT_PC);
+  MemTracker::record_virtual_memory_type((address)mapAddress, mtInternal);
+
   return (char*) mapAddress;
 }
 
@@ -1672,6 +1677,11 @@
               "Could not map PerfMemory");
   }
 
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_reserve((address)mapAddress, size, CURRENT_PC);
+  MemTracker::record_virtual_memory_type((address)mapAddress, mtInternal);
+
+
   *addrp = (char*)mapAddress;
   *sizep = size;
 
@@ -1824,6 +1834,8 @@
   }
 
   remove_file_mapping(addr);
+  // it does not go through os api, the operation has to record from here
+  MemTracker::record_virtual_memory_release((address)addr, bytes);
 }
 
 char* PerfMemory::backing_store_filename() {
--- a/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/c1/c1_GraphBuilder.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -1844,17 +1844,12 @@
         code == Bytecodes::_invokevirtual && target->is_final_method() ||
         code == Bytecodes::_invokedynamic) {
       ciMethod* inline_target = (cha_monomorphic_target != NULL) ? cha_monomorphic_target : target;
-      bool success = false;
-      if (target->is_method_handle_intrinsic()) {
-        // method handle invokes
-        success = try_method_handle_inline(target);
-      } else {
-        // static binding => check if callee is ok
-        success = try_inline(inline_target, (cha_monomorphic_target != NULL) || (exact_target != NULL), code, better_receiver);
-      }
+      // static binding => check if callee is ok
+      bool success = try_inline(inline_target, (cha_monomorphic_target != NULL) || (exact_target != NULL), code, better_receiver);
+
       CHECK_BAILOUT();
-
       clear_inline_bailout();
+
       if (success) {
         // Register dependence if JVMTI has either breakpoint
         // setting or hotswapping of methods capabilities since they may
@@ -3201,6 +3196,11 @@
     return false;
   }
 
+  // method handle invokes
+  if (callee->is_method_handle_intrinsic()) {
+    return try_method_handle_inline(callee);
+  }
+
   // handle intrinsics
   if (callee->intrinsic_id() != vmIntrinsics::_none) {
     if (try_inline_intrinsics(callee)) {
@@ -3885,10 +3885,14 @@
       ValueType* type = state()->stack_at(args_base)->type();
       if (type->is_constant()) {
         ciMethod* target = type->as_ObjectType()->constant_value()->as_method_handle()->get_vmtarget();
-        guarantee(!target->is_method_handle_intrinsic(), "should not happen");  // XXX remove
-        Bytecodes::Code bc = target->is_static() ? Bytecodes::_invokestatic : Bytecodes::_invokevirtual;
-        if (try_inline(target, /*holder_known*/ true, bc)) {
-          return true;
+        // We don't do CHA here so only inline static and statically bindable methods.
+        if (target->is_static() || target->can_be_statically_bound()) {
+          Bytecodes::Code bc = target->is_static() ? Bytecodes::_invokestatic : Bytecodes::_invokevirtual;
+          if (try_inline(target, /*holder_known*/ true, bc)) {
+            return true;
+          }
+        } else {
+          print_inlining(target, "not static or statically bindable", /*success*/ false);
         }
       } else {
         print_inlining(callee, "receiver not constant", /*success*/ false);
@@ -3941,9 +3945,14 @@
             }
             j += t->size();  // long and double take two slots
           }
-          Bytecodes::Code bc = target->is_static() ? Bytecodes::_invokestatic : Bytecodes::_invokevirtual;
-          if (try_inline(target, /*holder_known*/ true, bc)) {
-            return true;
+          // We don't do CHA here so only inline static and statically bindable methods.
+          if (target->is_static() || target->can_be_statically_bound()) {
+            Bytecodes::Code bc = target->is_static() ? Bytecodes::_invokestatic : Bytecodes::_invokevirtual;
+            if (try_inline(target, /*holder_known*/ true, bc)) {
+              return true;
+            }
+          } else {
+            print_inlining(target, "not static or statically bindable", /*success*/ false);
           }
         }
       } else {
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -110,6 +110,7 @@
   template(sun_jkernel_DownloadManager,               "sun/jkernel/DownloadManager")              \
   template(getBootClassPathEntryForClass_name,        "getBootClassPathEntryForClass")            \
   template(sun_misc_PostVMInitHook,                   "sun/misc/PostVMInitHook")                  \
+  template(sun_misc_Launcher_ExtClassLoader,          "sun/misc/Launcher$ExtClassLoader")         \
                                                                                                   \
   /* Java runtime version access */                                                               \
   template(sun_misc_Version,                          "sun/misc/Version")                         \
@@ -723,6 +724,21 @@
   /* java/lang/ref/Reference */                                                                                         \
   do_intrinsic(_Reference_get,            java_lang_ref_Reference, get_name,    void_object_signature, F_R)             \
                                                                                                                         \
+  /* support for com.sum.crypto.provider.AESCrypt and some of its callers */                                            \
+  do_class(com_sun_crypto_provider_aescrypt,      "com/sun/crypto/provider/AESCrypt")                                   \
+  do_intrinsic(_aescrypt_encryptBlock, com_sun_crypto_provider_aescrypt, encryptBlock_name, byteArray_int_byteArray_int_signature, F_R)   \
+  do_intrinsic(_aescrypt_decryptBlock, com_sun_crypto_provider_aescrypt, decryptBlock_name, byteArray_int_byteArray_int_signature, F_R)   \
+   do_name(     encryptBlock_name,                                 "encryptBlock")                                      \
+   do_name(     decryptBlock_name,                                 "decryptBlock")                                      \
+   do_signature(byteArray_int_byteArray_int_signature,             "([BI[BI)V")                                         \
+                                                                                                                        \
+  do_class(com_sun_crypto_provider_cipherBlockChaining,            "com/sun/crypto/provider/CipherBlockChaining")       \
+   do_intrinsic(_cipherBlockChaining_encryptAESCrypt, com_sun_crypto_provider_cipherBlockChaining, encrypt_name, byteArray_int_int_byteArray_int_signature, F_R)   \
+   do_intrinsic(_cipherBlockChaining_decryptAESCrypt, com_sun_crypto_provider_cipherBlockChaining, decrypt_name, byteArray_int_int_byteArray_int_signature, F_R)   \
+   do_name(     encrypt_name,                                      "encrypt")                                           \
+   do_name(     decrypt_name,                                      "decrypt")                                           \
+   do_signature(byteArray_int_int_byteArray_int_signature,         "([BII[BI)V")                                        \
+                                                                                                                        \
   /* support for sun.misc.Unsafe */                                                                                     \
   do_class(sun_misc_Unsafe,               "sun/misc/Unsafe")                                                            \
                                                                                                                         \
--- a/hotspot/src/share/vm/compiler/compilerOracle.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/compiler/compilerOracle.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -574,7 +574,7 @@
   char token[1024];
   int  pos = 0;
   int  c = getc(stream);
-  while(c != EOF) {
+  while(c != EOF && pos < (int)(sizeof(token)-1)) {
     if (c == '\n') {
       token[pos++] = '\0';
       parse_from_line(token);
@@ -595,7 +595,7 @@
   int  pos = 0;
   const char* sp = str;
   int  c = *sp++;
-  while (c != '\0') {
+  while (c != '\0' && pos < (int)(sizeof(token)-1)) {
     if (c == '\n') {
       token[pos++] = '\0';
       parse_line(token);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
+#include "memory/freeBlockDictionary.hpp"
+#include "memory/sharedHeap.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/vmThread.hpp"
+
+template <>
+void AdaptiveFreeList<FreeChunk>::print_on(outputStream* st, const char* c) const {
+  if (c != NULL) {
+    st->print("%16s", c);
+  } else {
+    st->print(SIZE_FORMAT_W(16), size());
+  }
+  st->print("\t"
+           SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t"
+           SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\n",
+           bfr_surp(),             surplus(),             desired(),             prev_sweep(),           before_sweep(),
+           count(),               coal_births(),          coal_deaths(),          split_births(),         split_deaths());
+}
+
+template <class Chunk>
+AdaptiveFreeList<Chunk>::AdaptiveFreeList() : FreeList<Chunk>(), _hint(0) {
+  init_statistics();
+}
+
+template <class Chunk>
+AdaptiveFreeList<Chunk>::AdaptiveFreeList(Chunk* fc) : FreeList<Chunk>(fc), _hint(0) {
+  init_statistics();
+#ifndef PRODUCT
+  _allocation_stats.set_returned_bytes(size() * HeapWordSize);
+#endif
+}
+
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::initialize() {
+  FreeList<Chunk>::initialize();
+  set_hint(0);
+  init_statistics(true /* split_birth */);
+}
+
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::reset(size_t hint) {
+  FreeList<Chunk>::reset();
+  set_hint(hint);
+}
+
+#ifndef PRODUCT
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::assert_proper_lock_protection_work() const {
+  assert(protecting_lock() != NULL, "Don't call this directly");
+  assert(ParallelGCThreads > 0, "Don't call this directly");
+  Thread* thr = Thread::current();
+  if (thr->is_VM_thread() || thr->is_ConcurrentGC_thread()) {
+    // assert that we are holding the freelist lock
+  } else if (thr->is_GC_task_thread()) {
+    assert(protecting_lock()->owned_by_self(), "FreeList RACE DETECTED");
+  } else if (thr->is_Java_thread()) {
+    assert(!SafepointSynchronize::is_at_safepoint(), "Should not be executing");
+  } else {
+    ShouldNotReachHere();  // unaccounted thread type?
+  }
+}
+#endif
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::init_statistics(bool split_birth) {
+  _allocation_stats.initialize(split_birth);
+}
+
+template <class Chunk>
+size_t AdaptiveFreeList<Chunk>::get_better_size() {
+
+  // A candidate chunk has been found.  If it is already under
+  // populated and there is a hinT, REturn the hint().  Else
+  // return the size of this chunk.
+  if (surplus() <= 0) {
+    if (hint() != 0) {
+      return hint();
+    } else {
+      return size();
+    }
+  } else {
+    // This list has a surplus so use it.
+    return size();
+  }
+}
+
+
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::return_chunk_at_head(Chunk* chunk) {
+  assert_proper_lock_protection();
+  return_chunk_at_head(chunk, true);
+}
+
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::return_chunk_at_head(Chunk* chunk, bool record_return) {
+  FreeList<Chunk>::return_chunk_at_head(chunk, record_return);
+#ifdef ASSERT
+  if (record_return) {
+    increment_returned_bytes_by(size()*HeapWordSize);
+  }
+#endif
+}
+
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::return_chunk_at_tail(Chunk* chunk) {
+  return_chunk_at_tail(chunk, true);
+}
+
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::return_chunk_at_tail(Chunk* chunk, bool record_return) {
+  FreeList<Chunk>::return_chunk_at_tail(chunk, record_return);
+#ifdef ASSERT
+  if (record_return) {
+    increment_returned_bytes_by(size()*HeapWordSize);
+  }
+#endif
+}
+
+#ifndef PRODUCT
+template <class Chunk>
+void AdaptiveFreeList<Chunk>::verify_stats() const {
+  // The +1 of the LH comparand is to allow some "looseness" in
+  // checking: we usually call this interface when adding a block
+  // and we'll subsequently update the stats; we cannot update the
+  // stats beforehand because in the case of the large-block BT
+  // dictionary for example, this might be the first block and
+  // in that case there would be no place that we could record
+  // the stats (which are kept in the block itself).
+  assert((_allocation_stats.prev_sweep() + _allocation_stats.split_births()
+          + _allocation_stats.coal_births() + 1)   // Total Production Stock + 1
+         >= (_allocation_stats.split_deaths() + _allocation_stats.coal_deaths()
+             + (ssize_t)count()),                // Total Current Stock + depletion
+         err_msg("FreeList " PTR_FORMAT " of size " SIZE_FORMAT
+                 " violates Conservation Principle: "
+                 "prev_sweep(" SIZE_FORMAT ")"
+                 " + split_births(" SIZE_FORMAT ")"
+                 " + coal_births(" SIZE_FORMAT ") + 1 >= "
+                 " split_deaths(" SIZE_FORMAT ")"
+                 " coal_deaths(" SIZE_FORMAT ")"
+                 " + count(" SSIZE_FORMAT ")",
+                 this, size(), _allocation_stats.prev_sweep(), _allocation_stats.split_births(),
+                 _allocation_stats.split_births(), _allocation_stats.split_deaths(),
+                 _allocation_stats.coal_deaths(), count()));
+}
+#endif
+
+// Needs to be after the definitions have been seen.
+template class AdaptiveFreeList<FreeChunk>;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,232 @@
+/*
+ * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_MEMORY_ADAPTIVEFREELIST_HPP
+#define SHARE_VM_MEMORY_ADAPTIVEFREELIST_HPP
+
+#include "memory/freeList.hpp"
+#include "gc_implementation/shared/allocationStats.hpp"
+
+class CompactibleFreeListSpace;
+
+// A class for maintaining a free list of Chunk's.  The FreeList
+// maintains a the structure of the list (head, tail, etc.) plus
+// statistics for allocations from the list.  The links between items
+// are not part of FreeList.  The statistics are
+// used to make decisions about coalescing Chunk's when they
+// are swept during collection.
+//
+// See the corresponding .cpp file for a description of the specifics
+// for that implementation.
+
+class Mutex;
+
+template <class Chunk>
+class AdaptiveFreeList : public FreeList<Chunk> {
+  friend class CompactibleFreeListSpace;
+  friend class VMStructs;
+  // friend class PrintTreeCensusClosure<Chunk, FreeList_t>;
+
+  size_t        _hint;          // next larger size list with a positive surplus
+
+  AllocationStats _allocation_stats; // allocation-related statistics
+
+ public:
+
+  AdaptiveFreeList();
+  AdaptiveFreeList(Chunk* fc);
+
+  using FreeList<Chunk>::assert_proper_lock_protection;
+#ifdef ASSERT
+  using FreeList<Chunk>::protecting_lock;
+#endif
+  using FreeList<Chunk>::count;
+  using FreeList<Chunk>::size;
+  using FreeList<Chunk>::verify_chunk_in_free_list;
+  using FreeList<Chunk>::getFirstNChunksFromList;
+  using FreeList<Chunk>::print_on;
+  void return_chunk_at_head(Chunk* fc, bool record_return);
+  void return_chunk_at_head(Chunk* fc);
+  void return_chunk_at_tail(Chunk* fc, bool record_return);
+  void return_chunk_at_tail(Chunk* fc);
+  using FreeList<Chunk>::return_chunk_at_tail;
+  using FreeList<Chunk>::remove_chunk;
+  using FreeList<Chunk>::prepend;
+  using FreeList<Chunk>::print_labels_on;
+  using FreeList<Chunk>::get_chunk_at_head;
+
+  // Initialize.
+  void initialize();
+
+  // Reset the head, tail, hint, and count of a free list.
+  void reset(size_t hint);
+
+  void assert_proper_lock_protection_work() const PRODUCT_RETURN;
+
+  void print_on(outputStream* st, const char* c = NULL) const;
+
+  size_t hint() const {
+    return _hint;
+  }
+  void set_hint(size_t v) {
+    assert_proper_lock_protection();
+    assert(v == 0 || size() < v, "Bad hint");
+    _hint = v;
+  }
+
+  size_t get_better_size();
+
+  // Accessors for statistics
+  void init_statistics(bool split_birth = false);
+
+  AllocationStats* allocation_stats() {
+    assert_proper_lock_protection();
+    return &_allocation_stats;
+  }
+
+  ssize_t desired() const {
+    return _allocation_stats.desired();
+  }
+  void set_desired(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_desired(v);
+  }
+  void compute_desired(float inter_sweep_current,
+                       float inter_sweep_estimate,
+                       float intra_sweep_estimate) {
+    assert_proper_lock_protection();
+    _allocation_stats.compute_desired(count(),
+                                      inter_sweep_current,
+                                      inter_sweep_estimate,
+                                      intra_sweep_estimate);
+  }
+  ssize_t coal_desired() const {
+    return _allocation_stats.coal_desired();
+  }
+  void set_coal_desired(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_coal_desired(v);
+  }
+
+  ssize_t surplus() const {
+    return _allocation_stats.surplus();
+  }
+  void set_surplus(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_surplus(v);
+  }
+  void increment_surplus() {
+    assert_proper_lock_protection();
+    _allocation_stats.increment_surplus();
+  }
+  void decrement_surplus() {
+    assert_proper_lock_protection();
+    _allocation_stats.decrement_surplus();
+  }
+
+  ssize_t bfr_surp() const {
+    return _allocation_stats.bfr_surp();
+  }
+  void set_bfr_surp(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_bfr_surp(v);
+  }
+  ssize_t prev_sweep() const {
+    return _allocation_stats.prev_sweep();
+  }
+  void set_prev_sweep(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_prev_sweep(v);
+  }
+  ssize_t before_sweep() const {
+    return _allocation_stats.before_sweep();
+  }
+  void set_before_sweep(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_before_sweep(v);
+  }
+
+  ssize_t coal_births() const {
+    return _allocation_stats.coal_births();
+  }
+  void set_coal_births(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_coal_births(v);
+  }
+  void increment_coal_births() {
+    assert_proper_lock_protection();
+    _allocation_stats.increment_coal_births();
+  }
+
+  ssize_t coal_deaths() const {
+    return _allocation_stats.coal_deaths();
+  }
+  void set_coal_deaths(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_coal_deaths(v);
+  }
+  void increment_coal_deaths() {
+    assert_proper_lock_protection();
+    _allocation_stats.increment_coal_deaths();
+  }
+
+  ssize_t split_births() const {
+    return _allocation_stats.split_births();
+  }
+  void set_split_births(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_split_births(v);
+  }
+  void increment_split_births() {
+    assert_proper_lock_protection();
+    _allocation_stats.increment_split_births();
+  }
+
+  ssize_t split_deaths() const {
+    return _allocation_stats.split_deaths();
+  }
+  void set_split_deaths(ssize_t v) {
+    assert_proper_lock_protection();
+    _allocation_stats.set_split_deaths(v);
+  }
+  void increment_split_deaths() {
+    assert_proper_lock_protection();
+    _allocation_stats.increment_split_deaths();
+  }
+
+#ifndef PRODUCT
+  // For debugging.  The "_returned_bytes" in all the lists are summed
+  // and compared with the total number of bytes swept during a
+  // collection.
+  size_t returned_bytes() const { return _allocation_stats.returned_bytes(); }
+  void set_returned_bytes(size_t v) { _allocation_stats.set_returned_bytes(v); }
+  void increment_returned_bytes_by(size_t v) {
+    _allocation_stats.set_returned_bytes(_allocation_stats.returned_bytes() + v);
+  }
+  // Stats verification
+  void verify_stats() const;
+#endif  // NOT PRODUCT
+};
+
+#endif // SHARE_VM_MEMORY_ADAPTIVEFREELIST_HPP
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -91,7 +91,7 @@
   _collector(NULL)
 {
   assert(sizeof(FreeChunk) / BytesPerWord <= MinChunkSize,
-    "FreeChunk is larger than expected");
+         "FreeChunk is larger than expected");
   _bt.set_space(this);
   initialize(mr, SpaceDecorator::Clear, SpaceDecorator::Mangle);
   // We have all of "mr", all of which we place in the dictionary
@@ -101,14 +101,14 @@
   // implementation, namely, the simple binary tree (splaying
   // temporarily disabled).
   switch (dictionaryChoice) {
+    case FreeBlockDictionary<FreeChunk>::dictionaryBinaryTree:
+      _dictionary = new BinaryTreeDictionary<FreeChunk, AdaptiveFreeList>(mr);
+      break;
     case FreeBlockDictionary<FreeChunk>::dictionarySplayTree:
     case FreeBlockDictionary<FreeChunk>::dictionarySkipList:
     default:
       warning("dictionaryChoice: selected option not understood; using"
               " default BinaryTreeDictionary implementation instead.");
-    case FreeBlockDictionary<FreeChunk>::dictionaryBinaryTree:
-      _dictionary = new BinaryTreeDictionary<FreeChunk>(mr, use_adaptive_freelists);
-      break;
   }
   assert(_dictionary != NULL, "CMS dictionary initialization");
   // The indexed free lists are initially all empty and are lazily
@@ -453,7 +453,7 @@
   reportIndexedFreeListStatistics();
   gclog_or_tty->print_cr("Layout of Indexed Freelists");
   gclog_or_tty->print_cr("---------------------------");
-  FreeList<FreeChunk>::print_labels_on(st, "size");
+  AdaptiveFreeList<FreeChunk>::print_labels_on(st, "size");
   for (size_t i = IndexSetStart; i < IndexSetSize; i += IndexSetStride) {
     _indexedFreeList[i].print_on(gclog_or_tty);
     for (FreeChunk* fc = _indexedFreeList[i].head(); fc != NULL;
@@ -1319,7 +1319,7 @@
   size_t currSize = numWords + MinChunkSize;
   assert(currSize % MinObjAlignment == 0, "currSize should be aligned");
   for (i = currSize; i < IndexSetSize; i += IndexSetStride) {
-    FreeList<FreeChunk>* fl = &_indexedFreeList[i];
+    AdaptiveFreeList<FreeChunk>* fl = &_indexedFreeList[i];
     if (fl->head()) {
       ret = getFromListGreater(fl, numWords);
       assert(ret == NULL || ret->is_free(), "Should be returning a free chunk");
@@ -1702,7 +1702,9 @@
   _dictionary->return_chunk(chunk);
 #ifndef PRODUCT
   if (CMSCollector::abstract_state() != CMSCollector::Sweeping) {
-    TreeChunk<FreeChunk>::as_TreeChunk(chunk)->list()->verify_stats();
+    TreeChunk<FreeChunk, AdaptiveFreeList>* tc = TreeChunk<FreeChunk, AdaptiveFreeList>::as_TreeChunk(chunk);
+    TreeList<FreeChunk, AdaptiveFreeList>* tl = tc->list();
+    tl->verify_stats();
   }
 #endif // PRODUCT
 }
@@ -1745,7 +1747,7 @@
   {
     MutexLockerEx x(lock, Mutex::_no_safepoint_check_flag);
     ec = dictionary()->find_largest_dict();  // get largest block
-    if (ec != NULL && ec->end() == chunk) {
+    if (ec != NULL && ec->end() == (uintptr_t*) chunk) {
       // It's a coterminal block - we can coalesce.
       size_t old_size = ec->size();
       coalDeath(old_size);
@@ -1850,11 +1852,11 @@
      the excess is >= MIN_CHUNK. */
   size_t start = align_object_size(numWords + MinChunkSize);
   if (start < IndexSetSize) {
-    FreeList<FreeChunk>* it   = _indexedFreeList;
+    AdaptiveFreeList<FreeChunk>* it   = _indexedFreeList;
     size_t    hint = _indexedFreeList[start].hint();
     while (hint < IndexSetSize) {
       assert(hint % MinObjAlignment == 0, "hint should be aligned");
-      FreeList<FreeChunk> *fl = &_indexedFreeList[hint];
+      AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[hint];
       if (fl->surplus() > 0 && fl->head() != NULL) {
         // Found a list with surplus, reset original hint
         // and split out a free chunk which is returned.
@@ -1873,7 +1875,7 @@
 }
 
 /* Requires fl->size >= numWords + MinChunkSize */
-FreeChunk* CompactibleFreeListSpace::getFromListGreater(FreeList<FreeChunk>* fl,
+FreeChunk* CompactibleFreeListSpace::getFromListGreater(AdaptiveFreeList<FreeChunk>* fl,
   size_t numWords) {
   FreeChunk *curr = fl->head();
   size_t oldNumWords = curr->size();
@@ -2155,7 +2157,7 @@
   assert_locked();
   size_t i;
   for (i = IndexSetStart; i < IndexSetSize; i += IndexSetStride) {
-    FreeList<FreeChunk>* fl = &_indexedFreeList[i];
+    AdaptiveFreeList<FreeChunk>* fl    = &_indexedFreeList[i];
     if (PrintFLSStatistics > 1) {
       gclog_or_tty->print("size[%d] : ", i);
     }
@@ -2174,7 +2176,7 @@
   assert_locked();
   size_t i;
   for (i = IndexSetStart; i < IndexSetSize; i += IndexSetStride) {
-    FreeList<FreeChunk> *fl = &_indexedFreeList[i];
+    AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[i];
     fl->set_surplus(fl->count() -
                     (ssize_t)((double)fl->desired() * CMSSmallSplitSurplusPercent));
   }
@@ -2185,7 +2187,7 @@
   size_t i;
   size_t h = IndexSetSize;
   for (i = IndexSetSize - 1; i != 0; i -= IndexSetStride) {
-    FreeList<FreeChunk> *fl = &_indexedFreeList[i];
+    AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[i];
     fl->set_hint(h);
     if (fl->surplus() > 0) {
       h = i;
@@ -2197,7 +2199,7 @@
   assert_locked();
   size_t i;
   for (i = IndexSetStart; i < IndexSetSize; i += IndexSetStride) {
-    FreeList<FreeChunk> *fl = &_indexedFreeList[i];
+    AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[i];
     fl->set_prev_sweep(fl->count());
     fl->set_coal_births(0);
     fl->set_coal_deaths(0);
@@ -2224,7 +2226,7 @@
 
 bool CompactibleFreeListSpace::coalOverPopulated(size_t size) {
   if (size < SmallForDictionary) {
-    FreeList<FreeChunk> *fl = &_indexedFreeList[size];
+    AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[size];
     return (fl->coal_desired() < 0) ||
            ((int)fl->count() > fl->coal_desired());
   } else {
@@ -2234,14 +2236,14 @@
 
 void CompactibleFreeListSpace::smallCoalBirth(size_t size) {
   assert(size < SmallForDictionary, "Size too large for indexed list");
-  FreeList<FreeChunk> *fl = &_indexedFreeList[size];
+  AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[size];
   fl->increment_coal_births();
   fl->increment_surplus();
 }
 
 void CompactibleFreeListSpace::smallCoalDeath(size_t size) {
   assert(size < SmallForDictionary, "Size too large for indexed list");
-  FreeList<FreeChunk> *fl = &_indexedFreeList[size];
+  AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[size];
   fl->increment_coal_deaths();
   fl->decrement_surplus();
 }
@@ -2250,7 +2252,7 @@
   if (size  < SmallForDictionary) {
     smallCoalBirth(size);
   } else {
-    dictionary()->dict_census_udpate(size,
+    dictionary()->dict_census_update(size,
                                    false /* split */,
                                    true /* birth */);
   }
@@ -2260,7 +2262,7 @@
   if(size  < SmallForDictionary) {
     smallCoalDeath(size);
   } else {
-    dictionary()->dict_census_udpate(size,
+    dictionary()->dict_census_update(size,
                                    false /* split */,
                                    false /* birth */);
   }
@@ -2268,14 +2270,14 @@
 
 void CompactibleFreeListSpace::smallSplitBirth(size_t size) {
   assert(size < SmallForDictionary, "Size too large for indexed list");
-  FreeList<FreeChunk> *fl = &_indexedFreeList[size];
+  AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[size];
   fl->increment_split_births();
   fl->increment_surplus();
 }
 
 void CompactibleFreeListSpace::smallSplitDeath(size_t size) {
   assert(size < SmallForDictionary, "Size too large for indexed list");
-  FreeList<FreeChunk> *fl = &_indexedFreeList[size];
+  AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[size];
   fl->increment_split_deaths();
   fl->decrement_surplus();
 }
@@ -2284,7 +2286,7 @@
   if (size  < SmallForDictionary) {
     smallSplitBirth(size);
   } else {
-    dictionary()->dict_census_udpate(size,
+    dictionary()->dict_census_update(size,
                                    true /* split */,
                                    true /* birth */);
   }
@@ -2294,7 +2296,7 @@
   if (size  < SmallForDictionary) {
     smallSplitDeath(size);
   } else {
-    dictionary()->dict_census_udpate(size,
+    dictionary()->dict_census_update(size,
                                    true /* split */,
                                    false /* birth */);
   }
@@ -2517,10 +2519,10 @@
 
 #ifndef PRODUCT
 void CompactibleFreeListSpace::check_free_list_consistency() const {
-  assert(_dictionary->min_size() <= IndexSetSize,
+  assert((TreeChunk<FreeChunk, AdaptiveFreeList>::min_size() <= IndexSetSize),
     "Some sizes can't be allocated without recourse to"
     " linear allocation buffers");
-  assert(BinaryTreeDictionary<FreeChunk>::min_tree_chunk_size*HeapWordSize == sizeof(TreeChunk<FreeChunk>),
+  assert((TreeChunk<FreeChunk, AdaptiveFreeList>::min_size()*HeapWordSize == sizeof(TreeChunk<FreeChunk, AdaptiveFreeList>)),
     "else MIN_TREE_CHUNK_SIZE is wrong");
   assert(IndexSetStart != 0, "IndexSetStart not initialized");
   assert(IndexSetStride != 0, "IndexSetStride not initialized");
@@ -2529,15 +2531,15 @@
 
 void CompactibleFreeListSpace::printFLCensus(size_t sweep_count) const {
   assert_lock_strong(&_freelistLock);
-  FreeList<FreeChunk> total;
+  AdaptiveFreeList<FreeChunk> total;
   gclog_or_tty->print("end sweep# " SIZE_FORMAT "\n", sweep_count);
-  FreeList<FreeChunk>::print_labels_on(gclog_or_tty, "size");
+  AdaptiveFreeList<FreeChunk>::print_labels_on(gclog_or_tty, "size");
   size_t total_free = 0;
   for (size_t i = IndexSetStart; i < IndexSetSize; i += IndexSetStride) {
-    const FreeList<FreeChunk> *fl = &_indexedFreeList[i];
+    const AdaptiveFreeList<FreeChunk> *fl = &_indexedFreeList[i];
     total_free += fl->count() * fl->size();
     if (i % (40*IndexSetStride) == 0) {
-      FreeList<FreeChunk>::print_labels_on(gclog_or_tty, "size");
+      AdaptiveFreeList<FreeChunk>::print_labels_on(gclog_or_tty, "size");
     }
     fl->print_on(gclog_or_tty);
     total.set_bfr_surp(    total.bfr_surp()     + fl->bfr_surp()    );
@@ -2620,7 +2622,7 @@
     res = _cfls->getChunkFromDictionaryExact(word_sz);
     if (res == NULL) return NULL;
   } else {
-    FreeList<FreeChunk>* fl = &_indexedFreeList[word_sz];
+    AdaptiveFreeList<FreeChunk>* fl = &_indexedFreeList[word_sz];
     if (fl->count() == 0) {
       // Attempt to refill this local free list.
       get_from_global_pool(word_sz, fl);
@@ -2640,7 +2642,7 @@
 
 // Get a chunk of blocks of the right size and update related
 // book-keeping stats
-void CFLS_LAB::get_from_global_pool(size_t word_sz, FreeList<FreeChunk>* fl) {
+void CFLS_LAB::get_from_global_pool(size_t word_sz, AdaptiveFreeList<FreeChunk>* fl) {
   // Get the #blocks we want to claim
   size_t n_blks = (size_t)_blocks_to_claim[word_sz].average();
   assert(n_blks > 0, "Error");
@@ -2722,7 +2724,7 @@
         if (num_retire > 0) {
           _cfls->_indexedFreeList[i].prepend(&_indexedFreeList[i]);
           // Reset this list.
-          _indexedFreeList[i] = FreeList<FreeChunk>();
+          _indexedFreeList[i] = AdaptiveFreeList<FreeChunk>();
           _indexedFreeList[i].set_size(i);
         }
       }
@@ -2736,7 +2738,7 @@
   }
 }
 
-void CompactibleFreeListSpace:: par_get_chunk_of_blocks(size_t word_sz, size_t n, FreeList<FreeChunk>* fl) {
+void CompactibleFreeListSpace:: par_get_chunk_of_blocks(size_t word_sz, size_t n, AdaptiveFreeList<FreeChunk>* fl) {
   assert(fl->count() == 0, "Precondition.");
   assert(word_sz < CompactibleFreeListSpace::IndexSetSize,
          "Precondition");
@@ -2752,12 +2754,12 @@
          (cur_sz < CompactibleFreeListSpace::IndexSetSize) &&
          (CMSSplitIndexedFreeListBlocks || k <= 1);
          k++, cur_sz = k * word_sz) {
-      FreeList<FreeChunk> fl_for_cur_sz;  // Empty.
+      AdaptiveFreeList<FreeChunk> fl_for_cur_sz;  // Empty.
       fl_for_cur_sz.set_size(cur_sz);
       {
         MutexLockerEx x(_indexedFreeListParLocks[cur_sz],
                         Mutex::_no_safepoint_check_flag);
-        FreeList<FreeChunk>* gfl = &_indexedFreeList[cur_sz];
+        AdaptiveFreeList<FreeChunk>* gfl = &_indexedFreeList[cur_sz];
         if (gfl->count() != 0) {
           // nn is the number of chunks of size cur_sz that
           // we'd need to split k-ways each, in order to create
@@ -2832,12 +2834,11 @@
     MutexLockerEx x(parDictionaryAllocLock(),
                     Mutex::_no_safepoint_check_flag);
     while (n > 0) {
-      fc = dictionary()->get_chunk(MAX2(n * word_sz,
-                                  _dictionary->min_size()),
+      fc = dictionary()->get_chunk(MAX2(n * word_sz, _dictionary->min_size()),
                                   FreeBlockDictionary<FreeChunk>::atLeast);
       if (fc != NULL) {
         _bt.allocated((HeapWord*)fc, fc->size(), true /* reducing */);  // update _unallocated_blk
-        dictionary()->dict_census_udpate(fc->size(),
+        dictionary()->dict_census_update(fc->size(),
                                        true /*split*/,
                                        false /*birth*/);
         break;
@@ -2890,7 +2891,7 @@
       fc->set_size(prefix_size);
       if (rem >= IndexSetSize) {
         returnChunkToDictionary(rem_fc);
-        dictionary()->dict_census_udpate(rem, true /*split*/, true /*birth*/);
+        dictionary()->dict_census_update(rem, true /*split*/, true /*birth*/);
         rem_fc = NULL;
       }
       // Otherwise, return it to the small list below.
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -25,6 +25,7 @@
 #ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_COMPACTIBLEFREELISTSPACE_HPP
 #define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_COMPACTIBLEFREELISTSPACE_HPP
 
+#include "gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp"
 #include "gc_implementation/concurrentMarkSweep/promotionInfo.hpp"
 #include "memory/binaryTreeDictionary.hpp"
 #include "memory/blockOffsetTable.inline.hpp"
@@ -38,6 +39,7 @@
 class CompactibleFreeListSpace;
 class BlkClosure;
 class BlkClosureCareful;
+class FreeChunk;
 class UpwardsObjectClosure;
 class ObjectClosureCareful;
 class Klass;
@@ -131,7 +133,7 @@
   FreeBlockDictionary<FreeChunk>::DictionaryChoice _dictionaryChoice;
   FreeBlockDictionary<FreeChunk>* _dictionary;    // ptr to dictionary for large size blocks
 
-  FreeList<FreeChunk> _indexedFreeList[IndexSetSize];
+  AdaptiveFreeList<FreeChunk> _indexedFreeList[IndexSetSize];
                                        // indexed array for small size blocks
   // allocation stategy
   bool       _fitStrategy;      // Use best fit strategy.
@@ -168,7 +170,7 @@
   // If the count of "fl" is negative, it's absolute value indicates a
   // number of free chunks that had been previously "borrowed" from global
   // list of size "word_sz", and must now be decremented.
-  void par_get_chunk_of_blocks(size_t word_sz, size_t n, FreeList<FreeChunk>* fl);
+  void par_get_chunk_of_blocks(size_t word_sz, size_t n, AdaptiveFreeList<FreeChunk>* fl);
 
   // Allocation helper functions
   // Allocate using a strategy that takes from the indexed free lists
@@ -214,7 +216,7 @@
   // and return it.  The split off remainder is returned to
   // the free lists.  The old name for getFromListGreater
   // was lookInListGreater.
-  FreeChunk* getFromListGreater(FreeList<FreeChunk>* fl, size_t numWords);
+  FreeChunk* getFromListGreater(AdaptiveFreeList<FreeChunk>* fl, size_t numWords);
   // Get a chunk in the indexed free list or dictionary,
   // by considering a larger chunk and splitting it.
   FreeChunk* getChunkFromGreater(size_t numWords);
@@ -621,7 +623,7 @@
   CompactibleFreeListSpace* _cfls;
 
   // Our local free lists.
-  FreeList<FreeChunk> _indexedFreeList[CompactibleFreeListSpace::IndexSetSize];
+  AdaptiveFreeList<FreeChunk> _indexedFreeList[CompactibleFreeListSpace::IndexSetSize];
 
   // Initialized from a command-line arg.
 
@@ -634,7 +636,7 @@
   size_t        _num_blocks        [CompactibleFreeListSpace::IndexSetSize];
 
   // Internal work method
-  void get_from_global_pool(size_t word_sz, FreeList<FreeChunk>* fl);
+  void get_from_global_pool(size_t word_sz, AdaptiveFreeList<FreeChunk>* fl);
 
 public:
   CFLS_LAB(CompactibleFreeListSpace* cfls);
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -9143,7 +9143,7 @@
     size_t shrinkable_size_in_bytes = chunk_at_end->size();
     size_t aligned_shrinkable_size_in_bytes =
       align_size_down(shrinkable_size_in_bytes, os::vm_page_size());
-    assert(unallocated_start <= chunk_at_end->end(),
+    assert(unallocated_start <= (HeapWord*) chunk_at_end->end(),
       "Inconsistent chunk at end of space");
     size_t bytes = MIN2(desired_bytes, aligned_shrinkable_size_in_bytes);
     size_t word_size_before = heap_word_size(_virtual_space.committed_size());
@@ -9210,7 +9210,7 @@
 
     assert(_cmsSpace->unallocated_block() <= _cmsSpace->end(),
       "Inconsistency at end of space");
-    assert(chunk_at_end->end() == _cmsSpace->end(),
+    assert(chunk_at_end->end() == (uintptr_t*) _cmsSpace->end(),
       "Shrinking is inconsistent");
     return;
   }
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -133,7 +133,7 @@
   }
 
   // Return the address past the end of this chunk
-  HeapWord* end() const { return ((HeapWord*) this) + size(); }
+  uintptr_t* end() const { return ((uintptr_t*) this) + size(); }
 
   // debugging
   void verify()             const PRODUCT_RETURN;
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -25,6 +25,8 @@
 #ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMSTRUCTS_CMS_HPP
 #define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMSTRUCTS_CMS_HPP
 
+typedef BinaryTreeDictionary<FreeChunk, AdaptiveFreeList> AFLBinaryTreeDictionary;
+
 #define VM_STRUCTS_CMS(nonstatic_field, \
                    volatile_nonstatic_field, \
                    static_field) \
@@ -38,14 +40,8 @@
   nonstatic_field(CMSCollector,                _markBitMap,                                   CMSBitMap)                             \
   nonstatic_field(ConcurrentMarkSweepGeneration, _cmsSpace,                                   CompactibleFreeListSpace*)             \
      static_field(ConcurrentMarkSweepThread,   _collector,                                    CMSCollector*)                         \
-  volatile_nonstatic_field(FreeChunk,          _size,                                         size_t)                                \
-  nonstatic_field(FreeChunk,                   _next,                                         FreeChunk*)                            \
-  nonstatic_field(FreeChunk,                   _prev,                                         FreeChunk*)                            \
   nonstatic_field(LinearAllocBlock,            _word_size,                                    size_t)                                \
-  nonstatic_field(FreeList<FreeChunk>,         _size,                                         size_t)                                \
-  nonstatic_field(FreeList<FreeChunk>,         _count,                                        ssize_t)                               \
-  nonstatic_field(BinaryTreeDictionary<FreeChunk>,_total_size,                                 size_t)                                \
-  nonstatic_field(CompactibleFreeListSpace,    _dictionary,                                   FreeBlockDictionary<FreeChunk>*)       \
+  nonstatic_field(AFLBinaryTreeDictionary,     _total_size,                                   size_t)                                \
   nonstatic_field(CompactibleFreeListSpace,    _indexedFreeList[0],                           FreeList<FreeChunk>)                   \
   nonstatic_field(CompactibleFreeListSpace,    _smallLinearAllocBlock,                        LinearAllocBlock)
 
@@ -60,19 +56,17 @@
   declare_toplevel_type(CMSCollector)                                     \
   declare_toplevel_type(CMSBitMap)                                        \
   declare_toplevel_type(FreeChunk)                                        \
+  declare_toplevel_type(Metablock)                                        \
   declare_toplevel_type(ConcurrentMarkSweepThread*)                       \
   declare_toplevel_type(ConcurrentMarkSweepGeneration*)                   \
   declare_toplevel_type(SurrogateLockerThread*)                           \
   declare_toplevel_type(CompactibleFreeListSpace*)                        \
   declare_toplevel_type(CMSCollector*)                                    \
-  declare_toplevel_type(FreeChunk*)                                       \
-  declare_toplevel_type(BinaryTreeDictionary<FreeChunk>*)                 \
-  declare_toplevel_type(FreeBlockDictionary<FreeChunk>*)                  \
-  declare_toplevel_type(FreeList<FreeChunk>*)                             \
-  declare_toplevel_type(FreeList<FreeChunk>)                              \
+  declare_toplevel_type(AFLBinaryTreeDictionary*)                         \
   declare_toplevel_type(LinearAllocBlock)                                 \
   declare_toplevel_type(FreeBlockDictionary<FreeChunk>)                   \
-            declare_type(BinaryTreeDictionary<FreeChunk>, FreeBlockDictionary<FreeChunk>)
+  declare_type(AFLBinaryTreeDictionary, FreeBlockDictionary<FreeChunk>)   \
+            declare_type(AFLBinaryTreeDictionary, FreeBlockDictionary<FreeChunk>) \
 
 #define VM_INT_CONSTANTS_CMS(declare_constant)                            \
   declare_constant(Generation::ConcurrentMarkSweep)                       \
--- a/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -191,7 +191,7 @@
 class VM_CollectForMetadataAllocation: public VM_GC_Operation {
  private:
   MetaWord*                _result;
-  size_t      _size;                       // size of object to be allocated
+  size_t                   _size;     // size of object to be allocated
   Metaspace::MetadataType  _mdtype;
   ClassLoaderData*         _loader_data;
  public:
--- a/hotspot/src/share/vm/memory/allocation.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/allocation.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -433,19 +433,18 @@
   NOT_PRODUCT(Atomic::inc(&_instance_count);)
 }
 
-Arena::Arena(Arena *a) : _chunk(a->_chunk), _hwm(a->_hwm), _max(a->_max), _first(a->_first) {
-  set_size_in_bytes(a->size_in_bytes());
-  NOT_PRODUCT(Atomic::inc(&_instance_count);)
-}
-
-
 Arena *Arena::move_contents(Arena *copy) {
   copy->destruct_contents();
   copy->_chunk = _chunk;
   copy->_hwm   = _hwm;
   copy->_max   = _max;
   copy->_first = _first;
-  copy->set_size_in_bytes(size_in_bytes());
+
+  // workaround rare racing condition, which could double count
+  // the arena size by native memory tracking
+  size_t size = size_in_bytes();
+  set_size_in_bytes(0);
+  copy->set_size_in_bytes(size);
   // Destroy original arena
   reset();
   return copy;            // Return Arena with contents
@@ -497,6 +496,9 @@
     char* end = _first->next() ? _first->top() : _hwm;
     free_malloced_objects(_first, _first->bottom(), end, _hwm);
   }
+  // reset size before chop to avoid a rare racing condition
+  // that can have total arena memory exceed total chunk memory
+  set_size_in_bytes(0);
   _first->chop();
   reset();
 }
--- a/hotspot/src/share/vm/memory/allocation.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/allocation.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -144,8 +144,10 @@
   mtNMT               = 0x0A00,  // memory used by native memory tracking
   mtChunk             = 0x0B00,  // chunk that holds content of arenas
   mtJavaHeap          = 0x0C00,  // Java heap
-  mtDontTrack         = 0x0D00,  // memory we donot or cannot track
-  mt_number_of_types  = 0x000C,  // number of memory types
+  mtClassShared       = 0x0D00,  // class data sharing
+  mt_number_of_types  = 0x000D,  // number of memory types (mtDontTrack
+                                 // is not included as validate type)
+  mtDontTrack         = 0x0E00,  // memory we do not or cannot track
   mt_masks            = 0x7F00,
 
   // object type mask
@@ -342,7 +344,6 @@
  public:
   Arena();
   Arena(size_t init_size);
-  Arena(Arena *old);
   ~Arena();
   void  destruct_contents();
   char* hwm() const             { return _hwm; }
--- a/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/binaryTreeDictionary.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -25,9 +25,15 @@
 #include "precompiled.hpp"
 #include "gc_implementation/shared/allocationStats.hpp"
 #include "memory/binaryTreeDictionary.hpp"
+#include "memory/freeList.hpp"
+#include "memory/freeBlockDictionary.hpp"
+#include "memory/metablock.hpp"
+#include "memory/metachunk.hpp"
 #include "runtime/globals.hpp"
 #include "utilities/ostream.hpp"
 #ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp"
+#include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
 #include "gc_implementation/shared/spaceDecorator.hpp"
 #include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
 #endif // SERIALGC
@@ -37,15 +43,18 @@
 // This is currently used in the Concurrent Mark&Sweep implementation.
 ////////////////////////////////////////////////////////////////////////////////
 
-template <class Chunk>
-TreeChunk<Chunk>* TreeChunk<Chunk>::as_TreeChunk(Chunk* fc) {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t TreeChunk<Chunk_t, FreeList_t>::_min_tree_chunk_size = sizeof(TreeChunk<Chunk_t,  FreeList_t>)/HeapWordSize;
+
+template <class Chunk_t, template <class> class FreeList_t>
+TreeChunk<Chunk_t, FreeList_t>* TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(Chunk_t* fc) {
   // Do some assertion checking here.
-  return (TreeChunk<Chunk>*) fc;
+  return (TreeChunk<Chunk_t, FreeList_t>*) fc;
 }
 
-template <class Chunk>
-void TreeChunk<Chunk>::verify_tree_chunk_list() const {
-  TreeChunk<Chunk>* nextTC = (TreeChunk<Chunk>*)next();
+template <class Chunk_t, template <class> class FreeList_t>
+void TreeChunk<Chunk_t, FreeList_t>::verify_tree_chunk_list() const {
+  TreeChunk<Chunk_t, FreeList_t>* nextTC = (TreeChunk<Chunk_t, FreeList_t>*)next();
   if (prev() != NULL) { // interior list node shouldn'r have tree fields
     guarantee(embedded_list()->parent() == NULL && embedded_list()->left() == NULL &&
               embedded_list()->right()  == NULL, "should be clear");
@@ -57,53 +66,113 @@
   }
 }
 
+template <class Chunk_t, template <class> class FreeList_t>
+TreeList<Chunk_t, FreeList_t>::TreeList() {}
 
-template <class Chunk>
-TreeList<Chunk>* TreeList<Chunk>::as_TreeList(TreeChunk<Chunk>* tc) {
+template <class Chunk_t, template <class> class FreeList_t>
+TreeList<Chunk_t, FreeList_t>*
+TreeList<Chunk_t, FreeList_t>::as_TreeList(TreeChunk<Chunk_t,FreeList_t>* tc) {
   // This first free chunk in the list will be the tree list.
-  assert(tc->size() >= BinaryTreeDictionary<Chunk>::min_tree_chunk_size, "Chunk is too small for a TreeChunk");
-  TreeList<Chunk>* tl = tc->embedded_list();
+  assert((tc->size() >= (TreeChunk<Chunk_t, FreeList_t>::min_size())),
+    "Chunk is too small for a TreeChunk");
+  TreeList<Chunk_t, FreeList_t>* tl = tc->embedded_list();
+  tl->initialize();
   tc->set_list(tl);
-#ifdef ASSERT
-  tl->set_protecting_lock(NULL);
-#endif
-  tl->set_hint(0);
   tl->set_size(tc->size());
   tl->link_head(tc);
   tl->link_tail(tc);
   tl->set_count(1);
-  tl->init_statistics(true /* split_birth */);
-  tl->set_parent(NULL);
-  tl->set_left(NULL);
-  tl->set_right(NULL);
+
+  return tl;
+}
+
+
+template <class Chunk_t, template <class> class FreeList_t>
+TreeList<Chunk_t, FreeList_t>*
+get_chunk(size_t size, enum FreeBlockDictionary<Chunk_t>::Dither dither) {
+  FreeBlockDictionary<Chunk_t>::verify_par_locked();
+  Chunk_t* res = get_chunk_from_tree(size, dither);
+  assert(res == NULL || res->is_free(),
+         "Should be returning a free chunk");
+  assert(dither != FreeBlockDictionary<Chunk_t>::exactly ||
+         res->size() == size, "Not correct size");
+  return res;
+}
+
+template <class Chunk_t, template <class> class FreeList_t>
+TreeList<Chunk_t, FreeList_t>*
+TreeList<Chunk_t, FreeList_t>::as_TreeList(HeapWord* addr, size_t size) {
+  TreeChunk<Chunk_t, FreeList_t>* tc = (TreeChunk<Chunk_t, FreeList_t>*) addr;
+  assert((size >= TreeChunk<Chunk_t, FreeList_t>::min_size()),
+    "Chunk is too small for a TreeChunk");
+  // The space will have been mangled initially but
+  // is not remangled when a Chunk_t is returned to the free list
+  // (since it is used to maintain the chunk on the free list).
+  tc->assert_is_mangled();
+  tc->set_size(size);
+  tc->link_prev(NULL);
+  tc->link_next(NULL);
+  TreeList<Chunk_t, FreeList_t>* tl = TreeList<Chunk_t, FreeList_t>::as_TreeList(tc);
   return tl;
 }
 
-template <class Chunk>
-TreeList<Chunk>* TreeList<Chunk>::as_TreeList(HeapWord* addr, size_t size) {
-  TreeChunk<Chunk>* tc = (TreeChunk<Chunk>*) addr;
-  assert(size >= BinaryTreeDictionary<Chunk>::min_tree_chunk_size, "Chunk is too small for a TreeChunk");
-  // The space in the heap will have been mangled initially but
-  // is not remangled when a free chunk is returned to the free list
-  // (since it is used to maintain the chunk on the free list).
-  assert((ZapUnusedHeapArea &&
-          SpaceMangler::is_mangled((HeapWord*) tc->size_addr()) &&
-          SpaceMangler::is_mangled((HeapWord*) tc->prev_addr()) &&
-          SpaceMangler::is_mangled((HeapWord*) tc->next_addr())) ||
-          (tc->size() == 0 && tc->prev() == NULL && tc->next() == NULL),
-    "Space should be clear or mangled");
-  tc->set_size(size);
-  tc->link_prev(NULL);
-  tc->link_next(NULL);
-  TreeList<Chunk>* tl = TreeList<Chunk>::as_TreeList(tc);
-  return tl;
+
+#ifndef SERIALGC
+// Specialize for AdaptiveFreeList which tries to avoid
+// splitting a chunk of a size that is under populated in favor of
+// an over populated size.  The general get_better_list() just returns
+// the current list.
+template <>
+TreeList<FreeChunk, AdaptiveFreeList>*
+TreeList<FreeChunk, AdaptiveFreeList>::get_better_list(
+  BinaryTreeDictionary<FreeChunk, ::AdaptiveFreeList>* dictionary) {
+  // A candidate chunk has been found.  If it is already under
+  // populated, get a chunk associated with the hint for this
+  // chunk.
+
+  TreeList<FreeChunk, ::AdaptiveFreeList>* curTL = this;
+  if (surplus() <= 0) {
+    /* Use the hint to find a size with a surplus, and reset the hint. */
+    TreeList<FreeChunk, ::AdaptiveFreeList>* hintTL = this;
+    while (hintTL->hint() != 0) {
+      assert(hintTL->hint() > hintTL->size(),
+        "hint points in the wrong direction");
+      hintTL = dictionary->find_list(hintTL->hint());
+      assert(curTL != hintTL, "Infinite loop");
+      if (hintTL == NULL ||
+          hintTL == curTL /* Should not happen but protect against it */ ) {
+        // No useful hint.  Set the hint to NULL and go on.
+        curTL->set_hint(0);
+        break;
+      }
+      assert(hintTL->size() > curTL->size(), "hint is inconsistent");
+      if (hintTL->surplus() > 0) {
+        // The hint led to a list that has a surplus.  Use it.
+        // Set the hint for the candidate to an overpopulated
+        // size.
+        curTL->set_hint(hintTL->size());
+        // Change the candidate.
+        curTL = hintTL;
+        break;
+      }
+    }
+  }
+  return curTL;
+}
+#endif // SERIALGC
+
+template <class Chunk_t, template <class> class FreeList_t>
+TreeList<Chunk_t, FreeList_t>*
+TreeList<Chunk_t, FreeList_t>::get_better_list(
+  BinaryTreeDictionary<Chunk_t, FreeList_t>* dictionary) {
+  return this;
 }
 
-template <class Chunk>
-TreeList<Chunk>* TreeList<Chunk>::remove_chunk_replace_if_needed(TreeChunk<Chunk>* tc) {
+template <class Chunk_t, template <class> class FreeList_t>
+TreeList<Chunk_t, FreeList_t>* TreeList<Chunk_t, FreeList_t>::remove_chunk_replace_if_needed(TreeChunk<Chunk_t, FreeList_t>* tc) {
 
-  TreeList<Chunk>* retTL = this;
-  Chunk* list = head();
+  TreeList<Chunk_t, FreeList_t>* retTL = this;
+  Chunk_t* list = head();
   assert(!list || list != list->next(), "Chunk on list twice");
   assert(tc != NULL, "Chunk being removed is NULL");
   assert(parent() == NULL || this == parent()->left() ||
@@ -112,13 +181,13 @@
   assert(head() == NULL || head()->prev() == NULL, "list invariant");
   assert(tail() == NULL || tail()->next() == NULL, "list invariant");
 
-  Chunk* prevFC = tc->prev();
-  TreeChunk<Chunk>* nextTC = TreeChunk<Chunk>::as_TreeChunk(tc->next());
+  Chunk_t* prevFC = tc->prev();
+  TreeChunk<Chunk_t, FreeList_t>* nextTC = TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(tc->next());
   assert(list != NULL, "should have at least the target chunk");
 
   // Is this the first item on the list?
   if (tc == list) {
-    // The "getChunk..." functions for a TreeList<Chunk> will not return the
+    // The "getChunk..." functions for a TreeList<Chunk_t, FreeList_t> will not return the
     // first chunk in the list unless it is the last chunk in the list
     // because the first chunk is also acting as the tree node.
     // When coalescing happens, however, the first chunk in the a tree
@@ -127,8 +196,8 @@
     // allocated when the sweeper yields (giving up the free list lock)
     // to allow mutator activity.  If this chunk is the first in the
     // list and is not the last in the list, do the work to copy the
-    // TreeList<Chunk> from the first chunk to the next chunk and update all
-    // the TreeList<Chunk> pointers in the chunks in the list.
+    // TreeList<Chunk_t, FreeList_t> from the first chunk to the next chunk and update all
+    // the TreeList<Chunk_t, FreeList_t> pointers in the chunks in the list.
     if (nextTC == NULL) {
       assert(prevFC == NULL, "Not last chunk in the list");
       set_tail(NULL);
@@ -141,11 +210,11 @@
       // This can be slow for a long list.  Consider having
       // an option that does not allow the first chunk on the
       // list to be coalesced.
-      for (TreeChunk<Chunk>* curTC = nextTC; curTC != NULL;
-          curTC = TreeChunk<Chunk>::as_TreeChunk(curTC->next())) {
+      for (TreeChunk<Chunk_t, FreeList_t>* curTC = nextTC; curTC != NULL;
+          curTC = TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(curTC->next())) {
         curTC->set_list(retTL);
       }
-      // Fix the parent to point to the new TreeList<Chunk>.
+      // Fix the parent to point to the new TreeList<Chunk_t, FreeList_t>.
       if (retTL->parent() != NULL) {
         if (this == retTL->parent()->left()) {
           retTL->parent()->set_left(retTL);
@@ -176,9 +245,9 @@
     prevFC->link_after(nextTC);
   }
 
-  // Below this point the embeded TreeList<Chunk> being used for the
+  // Below this point the embeded TreeList<Chunk_t, FreeList_t> being used for the
   // tree node may have changed. Don't use "this"
-  // TreeList<Chunk>*.
+  // TreeList<Chunk_t, FreeList_t>*.
   // chunk should still be a free chunk (bit set in _prev)
   assert(!retTL->head() || retTL->size() == retTL->head()->size(),
     "Wrong sized chunk in list");
@@ -188,7 +257,7 @@
     tc->set_list(NULL);
     bool prev_found = false;
     bool next_found = false;
-    for (Chunk* curFC = retTL->head();
+    for (Chunk_t* curFC = retTL->head();
          curFC != NULL; curFC = curFC->next()) {
       assert(curFC != tc, "Chunk is still in list");
       if (curFC == prevFC) {
@@ -215,8 +284,8 @@
   return retTL;
 }
 
-template <class Chunk>
-void TreeList<Chunk>::return_chunk_at_tail(TreeChunk<Chunk>* chunk) {
+template <class Chunk_t, template <class> class FreeList_t>
+void TreeList<Chunk_t, FreeList_t>::return_chunk_at_tail(TreeChunk<Chunk_t, FreeList_t>* chunk) {
   assert(chunk != NULL, "returning NULL chunk");
   assert(chunk->list() == this, "list should be set for chunk");
   assert(tail() != NULL, "The tree list is embedded in the first chunk");
@@ -225,12 +294,12 @@
   assert(head() == NULL || head()->prev() == NULL, "list invariant");
   assert(tail() == NULL || tail()->next() == NULL, "list invariant");
 
-  Chunk* fc = tail();
+  Chunk_t* fc = tail();
   fc->link_after(chunk);
   link_tail(chunk);
 
   assert(!tail() || size() == tail()->size(), "Wrong sized chunk in list");
-  increment_count();
+  FreeList_t<Chunk_t>::increment_count();
   debug_only(increment_returned_bytes_by(chunk->size()*sizeof(HeapWord));)
   assert(head() == NULL || head()->prev() == NULL, "list invariant");
   assert(tail() == NULL || tail()->next() == NULL, "list invariant");
@@ -238,10 +307,10 @@
 
 // Add this chunk at the head of the list.  "At the head of the list"
 // is defined to be after the chunk pointer to by head().  This is
-// because the TreeList<Chunk> is embedded in the first TreeChunk<Chunk> in the
-// list.  See the definition of TreeChunk<Chunk>.
-template <class Chunk>
-void TreeList<Chunk>::return_chunk_at_head(TreeChunk<Chunk>* chunk) {
+// because the TreeList<Chunk_t, FreeList_t> is embedded in the first TreeChunk<Chunk_t, FreeList_t> in the
+// list.  See the definition of TreeChunk<Chunk_t, FreeList_t>.
+template <class Chunk_t, template <class> class FreeList_t>
+void TreeList<Chunk_t, FreeList_t>::return_chunk_at_head(TreeChunk<Chunk_t, FreeList_t>* chunk) {
   assert(chunk->list() == this, "list should be set for chunk");
   assert(head() != NULL, "The tree list is embedded in the first chunk");
   assert(chunk != NULL, "returning NULL chunk");
@@ -249,7 +318,7 @@
   assert(head() == NULL || head()->prev() == NULL, "list invariant");
   assert(tail() == NULL || tail()->next() == NULL, "list invariant");
 
-  Chunk* fc = head()->next();
+  Chunk_t* fc = head()->next();
   if (fc != NULL) {
     chunk->link_after(fc);
   } else {
@@ -258,28 +327,38 @@
   }
   head()->link_after(chunk);
   assert(!head() || size() == head()->size(), "Wrong sized chunk in list");
-  increment_count();
+  FreeList_t<Chunk_t>::increment_count();
   debug_only(increment_returned_bytes_by(chunk->size()*sizeof(HeapWord));)
   assert(head() == NULL || head()->prev() == NULL, "list invariant");
   assert(tail() == NULL || tail()->next() == NULL, "list invariant");
 }
 
-template <class Chunk>
-TreeChunk<Chunk>* TreeList<Chunk>::head_as_TreeChunk() {
-  assert(head() == NULL || TreeChunk<Chunk>::as_TreeChunk(head())->list() == this,
-    "Wrong type of chunk?");
-  return TreeChunk<Chunk>::as_TreeChunk(head());
+template <class Chunk_t, template <class> class FreeList_t>
+void TreeChunk<Chunk_t, FreeList_t>::assert_is_mangled() const {
+  assert((ZapUnusedHeapArea &&
+          SpaceMangler::is_mangled((HeapWord*) Chunk_t::size_addr()) &&
+          SpaceMangler::is_mangled((HeapWord*) Chunk_t::prev_addr()) &&
+          SpaceMangler::is_mangled((HeapWord*) Chunk_t::next_addr())) ||
+          (size() == 0 && prev() == NULL && next() == NULL),
+    "Space should be clear or mangled");
 }
 
-template <class Chunk>
-TreeChunk<Chunk>* TreeList<Chunk>::first_available() {
+template <class Chunk_t, template <class> class FreeList_t>
+TreeChunk<Chunk_t, FreeList_t>* TreeList<Chunk_t, FreeList_t>::head_as_TreeChunk() {
+  assert(head() == NULL || (TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(head())->list() == this),
+    "Wrong type of chunk?");
+  return TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(head());
+}
+
+template <class Chunk_t, template <class> class FreeList_t>
+TreeChunk<Chunk_t, FreeList_t>* TreeList<Chunk_t, FreeList_t>::first_available() {
   assert(head() != NULL, "The head of the list cannot be NULL");
-  Chunk* fc = head()->next();
-  TreeChunk<Chunk>* retTC;
+  Chunk_t* fc = head()->next();
+  TreeChunk<Chunk_t, FreeList_t>* retTC;
   if (fc == NULL) {
     retTC = head_as_TreeChunk();
   } else {
-    retTC = TreeChunk<Chunk>::as_TreeChunk(fc);
+    retTC = TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(fc);
   }
   assert(retTC->list() == this, "Wrong type of chunk.");
   return retTC;
@@ -288,41 +367,32 @@
 // Returns the block with the largest heap address amongst
 // those in the list for this size; potentially slow and expensive,
 // use with caution!
-template <class Chunk>
-TreeChunk<Chunk>* TreeList<Chunk>::largest_address() {
+template <class Chunk_t, template <class> class FreeList_t>
+TreeChunk<Chunk_t, FreeList_t>* TreeList<Chunk_t, FreeList_t>::largest_address() {
   assert(head() != NULL, "The head of the list cannot be NULL");
-  Chunk* fc = head()->next();
-  TreeChunk<Chunk>* retTC;
+  Chunk_t* fc = head()->next();
+  TreeChunk<Chunk_t, FreeList_t>* retTC;
   if (fc == NULL) {
     retTC = head_as_TreeChunk();
   } else {
     // walk down the list and return the one with the highest
     // heap address among chunks of this size.
-    Chunk* last = fc;
+    Chunk_t* last = fc;
     while (fc->next() != NULL) {
       if ((HeapWord*)last < (HeapWord*)fc) {
         last = fc;
       }
       fc = fc->next();
     }
-    retTC = TreeChunk<Chunk>::as_TreeChunk(last);
+    retTC = TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(last);
   }
   assert(retTC->list() == this, "Wrong type of chunk.");
   return retTC;
 }
 
-template <class Chunk>
-BinaryTreeDictionary<Chunk>::BinaryTreeDictionary(bool adaptive_freelists, bool splay) :
-  _splay(splay), _adaptive_freelists(adaptive_freelists),
-  _total_size(0), _total_free_blocks(0), _root(0) {}
-
-template <class Chunk>
-BinaryTreeDictionary<Chunk>::BinaryTreeDictionary(MemRegion mr,
-                                           bool adaptive_freelists,
-                                           bool splay):
-  _adaptive_freelists(adaptive_freelists), _splay(splay)
-{
-  assert(mr.word_size() >= BinaryTreeDictionary<Chunk>::min_tree_chunk_size, "minimum chunk size");
+template <class Chunk_t, template <class> class FreeList_t>
+BinaryTreeDictionary<Chunk_t, FreeList_t>::BinaryTreeDictionary(MemRegion mr) {
+  assert((mr.byte_size() > min_size()), "minimum chunk size");
 
   reset(mr);
   assert(root()->left() == NULL, "reset check failed");
@@ -333,52 +403,48 @@
   assert(total_free_blocks() == 1, "reset check failed");
 }
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::inc_total_size(size_t inc) {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::inc_total_size(size_t inc) {
   _total_size = _total_size + inc;
 }
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::dec_total_size(size_t dec) {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::dec_total_size(size_t dec) {
   _total_size = _total_size - dec;
 }
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::reset(MemRegion mr) {
-  assert(mr.word_size() >= BinaryTreeDictionary<Chunk>::min_tree_chunk_size, "minimum chunk size");
-  set_root(TreeList<Chunk>::as_TreeList(mr.start(), mr.word_size()));
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::reset(MemRegion mr) {
+  assert((mr.byte_size() > min_size()), "minimum chunk size");
+  set_root(TreeList<Chunk_t, FreeList_t>::as_TreeList(mr.start(), mr.word_size()));
   set_total_size(mr.word_size());
   set_total_free_blocks(1);
 }
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::reset(HeapWord* addr, size_t byte_size) {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::reset(HeapWord* addr, size_t byte_size) {
   MemRegion mr(addr, heap_word_size(byte_size));
   reset(mr);
 }
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::reset() {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::reset() {
   set_root(NULL);
   set_total_size(0);
   set_total_free_blocks(0);
 }
 
 // Get a free block of size at least size from tree, or NULL.
-// If a splay step is requested, the removal algorithm (only) incorporates
-// a splay step as follows:
-// . the search proceeds down the tree looking for a possible
-//   match. At the (closest) matching location, an appropriate splay step is applied
-//   (zig, zig-zig or zig-zag). A chunk of the appropriate size is then returned
-//   if available, and if it's the last chunk, the node is deleted. A deteleted
-//   node is replaced in place by its tree successor.
-template <class Chunk>
-TreeChunk<Chunk>*
-BinaryTreeDictionary<Chunk>::get_chunk_from_tree(size_t size, enum FreeBlockDictionary<Chunk>::Dither dither, bool splay)
+template <class Chunk_t, template <class> class FreeList_t>
+TreeChunk<Chunk_t, FreeList_t>*
+BinaryTreeDictionary<Chunk_t, FreeList_t>::get_chunk_from_tree(
+                              size_t size,
+                              enum FreeBlockDictionary<Chunk_t>::Dither dither)
 {
-  TreeList<Chunk> *curTL, *prevTL;
-  TreeChunk<Chunk>* retTC = NULL;
-  assert(size >= BinaryTreeDictionary<Chunk>::min_tree_chunk_size, "minimum chunk size");
+  TreeList<Chunk_t, FreeList_t> *curTL, *prevTL;
+  TreeChunk<Chunk_t, FreeList_t>* retTC = NULL;
+
+  assert((size >= min_size()), "minimum chunk size");
   if (FLSVerifyDictionary) {
     verify_tree();
   }
@@ -398,7 +464,7 @@
   }
   if (curTL == NULL) { // couldn't find exact match
 
-    if (dither == FreeBlockDictionary<Chunk>::exactly) return NULL;
+    if (dither == FreeBlockDictionary<Chunk_t>::exactly) return NULL;
 
     // try and find the next larger size by walking back up the search path
     for (curTL = prevTL; curTL != NULL;) {
@@ -410,46 +476,9 @@
   }
   if (curTL != NULL) {
     assert(curTL->size() >= size, "size inconsistency");
-    if (adaptive_freelists()) {
 
-      // A candidate chunk has been found.  If it is already under
-      // populated, get a chunk associated with the hint for this
-      // chunk.
-      if (curTL->surplus() <= 0) {
-        /* Use the hint to find a size with a surplus, and reset the hint. */
-        TreeList<Chunk>* hintTL = curTL;
-        while (hintTL->hint() != 0) {
-          assert(hintTL->hint() == 0 || hintTL->hint() > hintTL->size(),
-            "hint points in the wrong direction");
-          hintTL = find_list(hintTL->hint());
-          assert(curTL != hintTL, "Infinite loop");
-          if (hintTL == NULL ||
-              hintTL == curTL /* Should not happen but protect against it */ ) {
-            // No useful hint.  Set the hint to NULL and go on.
-            curTL->set_hint(0);
-            break;
-          }
-          assert(hintTL->size() > size, "hint is inconsistent");
-          if (hintTL->surplus() > 0) {
-            // The hint led to a list that has a surplus.  Use it.
-            // Set the hint for the candidate to an overpopulated
-            // size.
-            curTL->set_hint(hintTL->size());
-            // Change the candidate.
-            curTL = hintTL;
-            break;
-          }
-          // The evm code reset the hint of the candidate as
-          // at an interim point.  Why?  Seems like this leaves
-          // the hint pointing to a list that didn't work.
-          // curTL->set_hint(hintTL->size());
-        }
-      }
-    }
-    // don't waste time splaying if chunk's singleton
-    if (splay && curTL->head()->next() != NULL) {
-      semi_splay_step(curTL);
-    }
+    curTL = curTL->get_better_list(this);
+
     retTC = curTL->first_available();
     assert((retTC != NULL) && (curTL->count() > 0),
       "A list in the binary tree should not be NULL");
@@ -465,9 +494,9 @@
   return retTC;
 }
 
-template <class Chunk>
-TreeList<Chunk>* BinaryTreeDictionary<Chunk>::find_list(size_t size) const {
-  TreeList<Chunk>* curTL;
+template <class Chunk_t, template <class> class FreeList_t>
+TreeList<Chunk_t, FreeList_t>* BinaryTreeDictionary<Chunk_t, FreeList_t>::find_list(size_t size) const {
+  TreeList<Chunk_t, FreeList_t>* curTL;
   for (curTL = root(); curTL != NULL;) {
     if (curTL->size() == size) {        // exact match
       break;
@@ -484,10 +513,10 @@
 }
 
 
-template <class Chunk>
-bool BinaryTreeDictionary<Chunk>::verify_chunk_in_free_list(Chunk* tc) const {
+template <class Chunk_t, template <class> class FreeList_t>
+bool BinaryTreeDictionary<Chunk_t, FreeList_t>::verify_chunk_in_free_list(Chunk_t* tc) const {
   size_t size = tc->size();
-  TreeList<Chunk>* tl = find_list(size);
+  TreeList<Chunk_t, FreeList_t>* tl = find_list(size);
   if (tl == NULL) {
     return false;
   } else {
@@ -495,9 +524,9 @@
   }
 }
 
-template <class Chunk>
-Chunk* BinaryTreeDictionary<Chunk>::find_largest_dict() const {
-  TreeList<Chunk> *curTL = root();
+template <class Chunk_t, template <class> class FreeList_t>
+Chunk_t* BinaryTreeDictionary<Chunk_t, FreeList_t>::find_largest_dict() const {
+  TreeList<Chunk_t, FreeList_t> *curTL = root();
   if (curTL != NULL) {
     while(curTL->right() != NULL) curTL = curTL->right();
     return curTL->largest_address();
@@ -510,15 +539,15 @@
 // chunk in a list on a tree node, just unlink it.
 // If it is the last chunk in the list (the next link is NULL),
 // remove the node and repair the tree.
-template <class Chunk>
-TreeChunk<Chunk>*
-BinaryTreeDictionary<Chunk>::remove_chunk_from_tree(TreeChunk<Chunk>* tc) {
+template <class Chunk_t, template <class> class FreeList_t>
+TreeChunk<Chunk_t, FreeList_t>*
+BinaryTreeDictionary<Chunk_t, FreeList_t>::remove_chunk_from_tree(TreeChunk<Chunk_t, FreeList_t>* tc) {
   assert(tc != NULL, "Should not call with a NULL chunk");
   assert(tc->is_free(), "Header is not marked correctly");
 
-  TreeList<Chunk> *newTL, *parentTL;
-  TreeChunk<Chunk>* retTC;
-  TreeList<Chunk>* tl = tc->list();
+  TreeList<Chunk_t, FreeList_t> *newTL, *parentTL;
+  TreeChunk<Chunk_t, FreeList_t>* retTC;
+  TreeList<Chunk_t, FreeList_t>* tl = tc->list();
   debug_only(
     bool removing_only_chunk = false;
     if (tl == _root) {
@@ -538,8 +567,8 @@
 
   retTC = tc;
   // Removing this chunk can have the side effect of changing the node
-  // (TreeList<Chunk>*) in the tree.  If the node is the root, update it.
-  TreeList<Chunk>* replacementTL = tl->remove_chunk_replace_if_needed(tc);
+  // (TreeList<Chunk_t, FreeList_t>*) in the tree.  If the node is the root, update it.
+  TreeList<Chunk_t, FreeList_t>* replacementTL = tl->remove_chunk_replace_if_needed(tc);
   assert(tc->is_free(), "Chunk should still be free");
   assert(replacementTL->parent() == NULL ||
          replacementTL == replacementTL->parent()->left() ||
@@ -549,17 +578,18 @@
     assert(replacementTL->parent() == NULL, "Incorrectly replacing root");
     set_root(replacementTL);
   }
-  debug_only(
+#ifdef ASSERT
     if (tl != replacementTL) {
       assert(replacementTL->head() != NULL,
         "If the tree list was replaced, it should not be a NULL list");
-      TreeList<Chunk>* rhl = replacementTL->head_as_TreeChunk()->list();
-      TreeList<Chunk>* rtl = TreeChunk<Chunk>::as_TreeChunk(replacementTL->tail())->list();
+      TreeList<Chunk_t, FreeList_t>* rhl = replacementTL->head_as_TreeChunk()->list();
+      TreeList<Chunk_t, FreeList_t>* rtl =
+        TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(replacementTL->tail())->list();
       assert(rhl == replacementTL, "Broken head");
       assert(rtl == replacementTL, "Broken tail");
       assert(replacementTL->size() == tc->size(),  "Broken size");
     }
-  )
+#endif
 
   // Does the tree need to be repaired?
   if (replacementTL->count() == 0) {
@@ -574,7 +604,7 @@
     } else if (replacementTL->right() == NULL) {
       // right is NULL
       newTL = replacementTL->left();
-      debug_only(replacementTL->clearLeft();)
+      debug_only(replacementTL->clear_left();)
     } else {  // we have both children, so, by patriarchal convention,
               // my replacement is least node in right sub-tree
       complicated_splice = true;
@@ -623,7 +653,7 @@
       newTL->set_right(replacementTL->right());
       debug_only(
         replacementTL->clear_right();
-        replacementTL->clearLeft();
+        replacementTL->clear_left();
       )
     }
     assert(replacementTL->right() == NULL &&
@@ -644,21 +674,21 @@
     verify_tree();
   }
   assert(!removing_only_chunk || _root == NULL, "root should be NULL");
-  return TreeChunk<Chunk>::as_TreeChunk(retTC);
+  return TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(retTC);
 }
 
 // Remove the leftmost node (lm) in the tree and return it.
 // If lm has a right child, link it to the left node of
 // the parent of lm.
-template <class Chunk>
-TreeList<Chunk>* BinaryTreeDictionary<Chunk>::remove_tree_minimum(TreeList<Chunk>* tl) {
+template <class Chunk_t, template <class> class FreeList_t>
+TreeList<Chunk_t, FreeList_t>* BinaryTreeDictionary<Chunk_t, FreeList_t>::remove_tree_minimum(TreeList<Chunk_t, FreeList_t>* tl) {
   assert(tl != NULL && tl->parent() != NULL, "really need a proper sub-tree");
   // locate the subtree minimum by walking down left branches
-  TreeList<Chunk>* curTL = tl;
+  TreeList<Chunk_t, FreeList_t>* curTL = tl;
   for (; curTL->left() != NULL; curTL = curTL->left());
   // obviously curTL now has at most one child, a right child
   if (curTL != root()) {  // Should this test just be removed?
-    TreeList<Chunk>* parentTL = curTL->parent();
+    TreeList<Chunk_t, FreeList_t>* parentTL = curTL->parent();
     if (parentTL->left() == curTL) { // curTL is a left child
       parentTL->set_left(curTL->right());
     } else {
@@ -685,31 +715,14 @@
   return curTL;
 }
 
-// Based on a simplification of the algorithm by Sleator and Tarjan (JACM 1985).
-// The simplifications are the following:
-// . we splay only when we delete (not when we insert)
-// . we apply a single spay step per deletion/access
-// By doing such partial splaying, we reduce the amount of restructuring,
-// while getting a reasonably efficient search tree (we think).
-// [Measurements will be needed to (in)validate this expectation.]
-
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::semi_splay_step(TreeList<Chunk>* tc) {
-  // apply a semi-splay step at the given node:
-  // . if root, norting needs to be done
-  // . if child of root, splay once
-  // . else zig-zig or sig-zag depending on path from grandparent
-  if (root() == tc) return;
-  warning("*** Splaying not yet implemented; "
-          "tree operations may be inefficient ***");
-}
-
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::insert_chunk_in_tree(Chunk* fc) {
-  TreeList<Chunk> *curTL, *prevTL;
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::insert_chunk_in_tree(Chunk_t* fc) {
+  TreeList<Chunk_t, FreeList_t> *curTL, *prevTL;
   size_t size = fc->size();
 
-  assert(size >= BinaryTreeDictionary<Chunk>::min_tree_chunk_size, "too small to be a TreeList<Chunk>");
+  assert((size >= min_size()),
+    err_msg(SIZE_FORMAT " is too small to be a TreeChunk<Chunk_t, FreeList_t> " SIZE_FORMAT,
+      size, min_size()));
   if (FLSVerifyDictionary) {
     verify_tree();
   }
@@ -729,9 +742,9 @@
       curTL = curTL->right();
     }
   }
-  TreeChunk<Chunk>* tc = TreeChunk<Chunk>::as_TreeChunk(fc);
+  TreeChunk<Chunk_t, FreeList_t>* tc = TreeChunk<Chunk_t, FreeList_t>::as_TreeChunk(fc);
   // This chunk is being returned to the binary tree.  Its embedded
-  // TreeList<Chunk> should be unused at this point.
+  // TreeList<Chunk_t, FreeList_t> should be unused at this point.
   tc->initialize();
   if (curTL != NULL) {          // exact match
     tc->set_list(curTL);
@@ -739,8 +752,8 @@
   } else {                     // need a new node in tree
     tc->clear_next();
     tc->link_prev(NULL);
-    TreeList<Chunk>* newTL = TreeList<Chunk>::as_TreeList(tc);
-    assert(((TreeChunk<Chunk>*)tc)->list() == newTL,
+    TreeList<Chunk_t, FreeList_t>* newTL = TreeList<Chunk_t, FreeList_t>::as_TreeList(tc);
+    assert(((TreeChunk<Chunk_t, FreeList_t>*)tc)->list() == newTL,
       "List was not initialized correctly");
     if (prevTL == NULL) {      // we are the only tree node
       assert(root() == NULL, "control point invariant");
@@ -768,30 +781,30 @@
   }
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::max_chunk_size() const {
-  FreeBlockDictionary<Chunk>::verify_par_locked();
-  TreeList<Chunk>* tc = root();
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::max_chunk_size() const {
+  FreeBlockDictionary<Chunk_t>::verify_par_locked();
+  TreeList<Chunk_t, FreeList_t>* tc = root();
   if (tc == NULL) return 0;
   for (; tc->right() != NULL; tc = tc->right());
   return tc->size();
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::total_list_length(TreeList<Chunk>* tl) const {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::total_list_length(TreeList<Chunk_t, FreeList_t>* tl) const {
   size_t res;
   res = tl->count();
 #ifdef ASSERT
   size_t cnt;
-  Chunk* tc = tl->head();
+  Chunk_t* tc = tl->head();
   for (cnt = 0; tc != NULL; tc = tc->next(), cnt++);
   assert(res == cnt, "The count is not being maintained correctly");
 #endif
   return res;
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::total_size_in_tree(TreeList<Chunk>* tl) const {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::total_size_in_tree(TreeList<Chunk_t, FreeList_t>* tl) const {
   if (tl == NULL)
     return 0;
   return (tl->size() * total_list_length(tl)) +
@@ -799,8 +812,8 @@
          total_size_in_tree(tl->right());
 }
 
-template <class Chunk>
-double BinaryTreeDictionary<Chunk>::sum_of_squared_block_sizes(TreeList<Chunk>* const tl) const {
+template <class Chunk_t, template <class> class FreeList_t>
+double BinaryTreeDictionary<Chunk_t, FreeList_t>::sum_of_squared_block_sizes(TreeList<Chunk_t, FreeList_t>* const tl) const {
   if (tl == NULL) {
     return 0.0;
   }
@@ -811,8 +824,8 @@
   return curr;
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::total_free_blocks_in_tree(TreeList<Chunk>* tl) const {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::total_free_blocks_in_tree(TreeList<Chunk_t, FreeList_t>* tl) const {
   if (tl == NULL)
     return 0;
   return total_list_length(tl) +
@@ -820,28 +833,28 @@
          total_free_blocks_in_tree(tl->right());
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::num_free_blocks() const {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::num_free_blocks() const {
   assert(total_free_blocks_in_tree(root()) == total_free_blocks(),
          "_total_free_blocks inconsistency");
   return total_free_blocks();
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::tree_height_helper(TreeList<Chunk>* tl) const {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::tree_height_helper(TreeList<Chunk_t, FreeList_t>* tl) const {
   if (tl == NULL)
     return 0;
   return 1 + MAX2(tree_height_helper(tl->left()),
                   tree_height_helper(tl->right()));
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::treeHeight() const {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::tree_height() const {
   return tree_height_helper(root());
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::total_nodes_helper(TreeList<Chunk>* tl) const {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::total_nodes_helper(TreeList<Chunk_t, FreeList_t>* tl) const {
   if (tl == NULL) {
     return 0;
   }
@@ -849,14 +862,18 @@
     total_nodes_helper(tl->right());
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::total_nodes_in_tree(TreeList<Chunk>* tl) const {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::total_nodes_in_tree(TreeList<Chunk_t, FreeList_t>* tl) const {
   return total_nodes_helper(root());
 }
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::dict_census_udpate(size_t size, bool split, bool birth){
-  TreeList<Chunk>* nd = find_list(size);
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::dict_census_update(size_t size, bool split, bool birth){}
+
+#ifndef SERIALGC
+template <>
+void BinaryTreeDictionary<FreeChunk, AdaptiveFreeList>::dict_census_update(size_t size, bool split, bool birth){
+  TreeList<FreeChunk, AdaptiveFreeList>* nd = find_list(size);
   if (nd) {
     if (split) {
       if (birth) {
@@ -882,16 +899,26 @@
   //   This is a birth associated with a LinAB.  The chunk
   //     for the LinAB is not in the dictionary.
 }
+#endif // SERIALGC
 
-template <class Chunk>
-bool BinaryTreeDictionary<Chunk>::coal_dict_over_populated(size_t size) {
+template <class Chunk_t, template <class> class FreeList_t>
+bool BinaryTreeDictionary<Chunk_t, FreeList_t>::coal_dict_over_populated(size_t size) {
+  // For the general type of freelists, encourage coalescing by
+  // returning true.
+  return true;
+}
+
+#ifndef SERIALGC
+template <>
+bool BinaryTreeDictionary<FreeChunk, AdaptiveFreeList>::coal_dict_over_populated(size_t size) {
   if (FLSAlwaysCoalesceLarge) return true;
 
-  TreeList<Chunk>* list_of_size = find_list(size);
+  TreeList<FreeChunk, AdaptiveFreeList>* list_of_size = find_list(size);
   // None of requested size implies overpopulated.
   return list_of_size == NULL || list_of_size->coal_desired() <= 0 ||
          list_of_size->count() > list_of_size->coal_desired();
 }
+#endif  // SERIALGC
 
 // Closures for walking the binary tree.
 //   do_list() walks the free list in a node applying the closure
@@ -899,19 +926,18 @@
 //   do_tree() walks the nodes in the binary tree applying do_list()
 //     to each list at each node.
 
-template <class Chunk>
+template <class Chunk_t, template <class> class FreeList_t>
 class TreeCensusClosure : public StackObj {
  protected:
-  virtual void do_list(FreeList<Chunk>* fl) = 0;
+  virtual void do_list(FreeList_t<Chunk_t>* fl) = 0;
  public:
-  virtual void do_tree(TreeList<Chunk>* tl) = 0;
+  virtual void do_tree(TreeList<Chunk_t, FreeList_t>* tl) = 0;
 };
 
-template <class Chunk>
-class AscendTreeCensusClosure : public TreeCensusClosure<Chunk> {
-  using TreeCensusClosure<Chunk>::do_list;
+template <class Chunk_t, template <class> class FreeList_t>
+class AscendTreeCensusClosure : public TreeCensusClosure<Chunk_t, FreeList_t> {
  public:
-  void do_tree(TreeList<Chunk>* tl) {
+  void do_tree(TreeList<Chunk_t, FreeList_t>* tl) {
     if (tl != NULL) {
       do_tree(tl->left());
       do_list(tl);
@@ -920,11 +946,10 @@
   }
 };
 
-template <class Chunk>
-class DescendTreeCensusClosure : public TreeCensusClosure<Chunk> {
-  using TreeCensusClosure<Chunk>::do_list;
+template <class Chunk_t, template <class> class FreeList_t>
+class DescendTreeCensusClosure : public TreeCensusClosure<Chunk_t, FreeList_t> {
  public:
-  void do_tree(TreeList<Chunk>* tl) {
+  void do_tree(TreeList<Chunk_t, FreeList_t>* tl) {
     if (tl != NULL) {
       do_tree(tl->right());
       do_list(tl);
@@ -935,8 +960,8 @@
 
 // For each list in the tree, calculate the desired, desired
 // coalesce, count before sweep, and surplus before sweep.
-template <class Chunk>
-class BeginSweepClosure : public AscendTreeCensusClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class BeginSweepClosure : public AscendTreeCensusClosure<Chunk_t, FreeList_t> {
   double _percentage;
   float _inter_sweep_current;
   float _inter_sweep_estimate;
@@ -951,32 +976,36 @@
    _inter_sweep_estimate(inter_sweep_estimate),
    _intra_sweep_estimate(intra_sweep_estimate) { }
 
-  void do_list(FreeList<Chunk>* fl) {
+  void do_list(FreeList<Chunk_t>* fl) {}
+
+#ifndef SERIALGC
+  void do_list(AdaptiveFreeList<Chunk_t>* fl) {
     double coalSurplusPercent = _percentage;
     fl->compute_desired(_inter_sweep_current, _inter_sweep_estimate, _intra_sweep_estimate);
     fl->set_coal_desired((ssize_t)((double)fl->desired() * coalSurplusPercent));
     fl->set_before_sweep(fl->count());
     fl->set_bfr_surp(fl->surplus());
   }
+#endif // SERIALGC
 };
 
 // Used to search the tree until a condition is met.
 // Similar to TreeCensusClosure but searches the
 // tree and returns promptly when found.
 
-template <class Chunk>
+template <class Chunk_t, template <class> class FreeList_t>
 class TreeSearchClosure : public StackObj {
  protected:
-  virtual bool do_list(FreeList<Chunk>* fl) = 0;
+  virtual bool do_list(FreeList_t<Chunk_t>* fl) = 0;
  public:
-  virtual bool do_tree(TreeList<Chunk>* tl) = 0;
+  virtual bool do_tree(TreeList<Chunk_t, FreeList_t>* tl) = 0;
 };
 
 #if 0 //  Don't need this yet but here for symmetry.
-template <class Chunk>
-class AscendTreeSearchClosure : public TreeSearchClosure {
+template <class Chunk_t, template <class> class FreeList_t>
+class AscendTreeSearchClosure : public TreeSearchClosure<Chunk_t> {
  public:
-  bool do_tree(TreeList<Chunk>* tl) {
+  bool do_tree(TreeList<Chunk_t, FreeList_t>* tl) {
     if (tl != NULL) {
       if (do_tree(tl->left())) return true;
       if (do_list(tl)) return true;
@@ -987,11 +1016,10 @@
 };
 #endif
 
-template <class Chunk>
-class DescendTreeSearchClosure : public TreeSearchClosure<Chunk> {
-  using TreeSearchClosure<Chunk>::do_list;
+template <class Chunk_t, template <class> class FreeList_t>
+class DescendTreeSearchClosure : public TreeSearchClosure<Chunk_t, FreeList_t> {
  public:
-  bool do_tree(TreeList<Chunk>* tl) {
+  bool do_tree(TreeList<Chunk_t, FreeList_t>* tl) {
     if (tl != NULL) {
       if (do_tree(tl->right())) return true;
       if (do_list(tl)) return true;
@@ -1003,17 +1031,17 @@
 
 // Searches the tree for a chunk that ends at the
 // specified address.
-template <class Chunk>
-class EndTreeSearchClosure : public DescendTreeSearchClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class EndTreeSearchClosure : public DescendTreeSearchClosure<Chunk_t, FreeList_t> {
   HeapWord* _target;
-  Chunk* _found;
+  Chunk_t* _found;
 
  public:
   EndTreeSearchClosure(HeapWord* target) : _target(target), _found(NULL) {}
-  bool do_list(FreeList<Chunk>* fl) {
-    Chunk* item = fl->head();
+  bool do_list(FreeList_t<Chunk_t>* fl) {
+    Chunk_t* item = fl->head();
     while (item != NULL) {
-      if (item->end() == _target) {
+      if (item->end() == (uintptr_t*) _target) {
         _found = item;
         return true;
       }
@@ -1021,22 +1049,22 @@
     }
     return false;
   }
-  Chunk* found() { return _found; }
+  Chunk_t* found() { return _found; }
 };
 
-template <class Chunk>
-Chunk* BinaryTreeDictionary<Chunk>::find_chunk_ends_at(HeapWord* target) const {
-  EndTreeSearchClosure<Chunk> etsc(target);
+template <class Chunk_t, template <class> class FreeList_t>
+Chunk_t* BinaryTreeDictionary<Chunk_t, FreeList_t>::find_chunk_ends_at(HeapWord* target) const {
+  EndTreeSearchClosure<Chunk_t, FreeList_t> etsc(target);
   bool found_target = etsc.do_tree(root());
   assert(found_target || etsc.found() == NULL, "Consistency check");
   assert(!found_target || etsc.found() != NULL, "Consistency check");
   return etsc.found();
 }
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::begin_sweep_dict_census(double coalSurplusPercent,
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::begin_sweep_dict_census(double coalSurplusPercent,
   float inter_sweep_current, float inter_sweep_estimate, float intra_sweep_estimate) {
-  BeginSweepClosure<Chunk> bsc(coalSurplusPercent, inter_sweep_current,
+  BeginSweepClosure<Chunk_t, FreeList_t> bsc(coalSurplusPercent, inter_sweep_current,
                                             inter_sweep_estimate,
                                             intra_sweep_estimate);
   bsc.do_tree(root());
@@ -1045,84 +1073,91 @@
 // Closures and methods for calculating total bytes returned to the
 // free lists in the tree.
 #ifndef PRODUCT
-template <class Chunk>
-class InitializeDictReturnedBytesClosure : public AscendTreeCensusClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class InitializeDictReturnedBytesClosure : public AscendTreeCensusClosure<Chunk_t, FreeList_t> {
    public:
-  void do_list(FreeList<Chunk>* fl) {
+  void do_list(FreeList_t<Chunk_t>* fl) {
     fl->set_returned_bytes(0);
   }
 };
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::initialize_dict_returned_bytes() {
-  InitializeDictReturnedBytesClosure<Chunk> idrb;
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::initialize_dict_returned_bytes() {
+  InitializeDictReturnedBytesClosure<Chunk_t, FreeList_t> idrb;
   idrb.do_tree(root());
 }
 
-template <class Chunk>
-class ReturnedBytesClosure : public AscendTreeCensusClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class ReturnedBytesClosure : public AscendTreeCensusClosure<Chunk_t, FreeList_t> {
   size_t _dict_returned_bytes;
  public:
   ReturnedBytesClosure() { _dict_returned_bytes = 0; }
-  void do_list(FreeList<Chunk>* fl) {
+  void do_list(FreeList_t<Chunk_t>* fl) {
     _dict_returned_bytes += fl->returned_bytes();
   }
   size_t dict_returned_bytes() { return _dict_returned_bytes; }
 };
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::sum_dict_returned_bytes() {
-  ReturnedBytesClosure<Chunk> rbc;
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::sum_dict_returned_bytes() {
+  ReturnedBytesClosure<Chunk_t, FreeList_t> rbc;
   rbc.do_tree(root());
 
   return rbc.dict_returned_bytes();
 }
 
 // Count the number of entries in the tree.
-template <class Chunk>
-class treeCountClosure : public DescendTreeCensusClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class treeCountClosure : public DescendTreeCensusClosure<Chunk_t, FreeList_t> {
  public:
   uint count;
   treeCountClosure(uint c) { count = c; }
-  void do_list(FreeList<Chunk>* fl) {
+  void do_list(FreeList_t<Chunk_t>* fl) {
     count++;
   }
 };
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::total_count() {
-  treeCountClosure<Chunk> ctc(0);
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::total_count() {
+  treeCountClosure<Chunk_t, FreeList_t> ctc(0);
   ctc.do_tree(root());
   return ctc.count;
 }
 #endif // PRODUCT
 
 // Calculate surpluses for the lists in the tree.
-template <class Chunk>
-class setTreeSurplusClosure : public AscendTreeCensusClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class setTreeSurplusClosure : public AscendTreeCensusClosure<Chunk_t, FreeList_t> {
   double percentage;
  public:
   setTreeSurplusClosure(double v) { percentage = v; }
-  void do_list(FreeList<Chunk>* fl) {
+  void do_list(FreeList<Chunk_t>* fl) {}
+
+#ifndef SERIALGC
+  void do_list(AdaptiveFreeList<Chunk_t>* fl) {
     double splitSurplusPercent = percentage;
     fl->set_surplus(fl->count() -
                    (ssize_t)((double)fl->desired() * splitSurplusPercent));
   }
+#endif // SERIALGC
 };
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::set_tree_surplus(double splitSurplusPercent) {
-  setTreeSurplusClosure<Chunk> sts(splitSurplusPercent);
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::set_tree_surplus(double splitSurplusPercent) {
+  setTreeSurplusClosure<Chunk_t, FreeList_t> sts(splitSurplusPercent);
   sts.do_tree(root());
 }
 
 // Set hints for the lists in the tree.
-template <class Chunk>
-class setTreeHintsClosure : public DescendTreeCensusClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class setTreeHintsClosure : public DescendTreeCensusClosure<Chunk_t, FreeList_t> {
   size_t hint;
  public:
   setTreeHintsClosure(size_t v) { hint = v; }
-  void do_list(FreeList<Chunk>* fl) {
+  void do_list(FreeList<Chunk_t>* fl) {}
+
+#ifndef SERIALGC
+  void do_list(AdaptiveFreeList<Chunk_t>* fl) {
     fl->set_hint(hint);
     assert(fl->hint() == 0 || fl->hint() > fl->size(),
       "Current hint is inconsistent");
@@ -1130,35 +1165,40 @@
       hint = fl->size();
     }
   }
+#endif // SERIALGC
 };
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::set_tree_hints(void) {
-  setTreeHintsClosure<Chunk> sth(0);
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::set_tree_hints(void) {
+  setTreeHintsClosure<Chunk_t, FreeList_t> sth(0);
   sth.do_tree(root());
 }
 
 // Save count before previous sweep and splits and coalesces.
-template <class Chunk>
-class clearTreeCensusClosure : public AscendTreeCensusClosure<Chunk> {
-  void do_list(FreeList<Chunk>* fl) {
+template <class Chunk_t, template <class> class FreeList_t>
+class clearTreeCensusClosure : public AscendTreeCensusClosure<Chunk_t, FreeList_t> {
+  void do_list(FreeList<Chunk_t>* fl) {}
+
+#ifndef SERIALGC
+  void do_list(AdaptiveFreeList<Chunk_t>* fl) {
     fl->set_prev_sweep(fl->count());
     fl->set_coal_births(0);
     fl->set_coal_deaths(0);
     fl->set_split_births(0);
     fl->set_split_deaths(0);
   }
+#endif  // SERIALGC
 };
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::clear_tree_census(void) {
-  clearTreeCensusClosure<Chunk> ctc;
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::clear_tree_census(void) {
+  clearTreeCensusClosure<Chunk_t, FreeList_t> ctc;
   ctc.do_tree(root());
 }
 
 // Do reporting and post sweep clean up.
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::end_sweep_dict_census(double splitSurplusPercent) {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::end_sweep_dict_census(double splitSurplusPercent) {
   // Does walking the tree 3 times hurt?
   set_tree_surplus(splitSurplusPercent);
   set_tree_hints();
@@ -1169,9 +1209,9 @@
 }
 
 // Print summary statistics
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::report_statistics() const {
-  FreeBlockDictionary<Chunk>::verify_par_locked();
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::report_statistics() const {
+  FreeBlockDictionary<Chunk_t>::verify_par_locked();
   gclog_or_tty->print("Statistics for BinaryTreeDictionary:\n"
          "------------------------------------\n");
   size_t total_size = total_chunk_size(debug_only(NULL));
@@ -1182,36 +1222,47 @@
   if (free_blocks > 0) {
     gclog_or_tty->print("Av.  Block  Size: %d\n", total_size/free_blocks);
   }
-  gclog_or_tty->print("Tree      Height: %d\n", treeHeight());
+  gclog_or_tty->print("Tree      Height: %d\n", tree_height());
 }
 
 // Print census information - counts, births, deaths, etc.
 // for each list in the tree.  Also print some summary
 // information.
-template <class Chunk>
-class PrintTreeCensusClosure : public AscendTreeCensusClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class PrintTreeCensusClosure : public AscendTreeCensusClosure<Chunk_t, FreeList_t> {
   int _print_line;
   size_t _total_free;
-  FreeList<Chunk> _total;
+  FreeList_t<Chunk_t> _total;
 
  public:
   PrintTreeCensusClosure() {
     _print_line = 0;
     _total_free = 0;
   }
-  FreeList<Chunk>* total() { return &_total; }
+  FreeList_t<Chunk_t>* total() { return &_total; }
   size_t total_free() { return _total_free; }
-  void do_list(FreeList<Chunk>* fl) {
+  void do_list(FreeList<Chunk_t>* fl) {
     if (++_print_line >= 40) {
-      FreeList<Chunk>::print_labels_on(gclog_or_tty, "size");
+      FreeList_t<Chunk_t>::print_labels_on(gclog_or_tty, "size");
       _print_line = 0;
     }
     fl->print_on(gclog_or_tty);
     _total_free +=            fl->count()            * fl->size()        ;
     total()->set_count(      total()->count()       + fl->count()      );
-    total()->set_bfr_surp(    total()->bfr_surp()     + fl->bfr_surp()    );
+  }
+
+#ifndef SERIALGC
+  void do_list(AdaptiveFreeList<Chunk_t>* fl) {
+    if (++_print_line >= 40) {
+      FreeList_t<Chunk_t>::print_labels_on(gclog_or_tty, "size");
+      _print_line = 0;
+    }
+    fl->print_on(gclog_or_tty);
+    _total_free +=           fl->count()             * fl->size()        ;
+    total()->set_count(      total()->count()        + fl->count()      );
+    total()->set_bfr_surp(   total()->bfr_surp()     + fl->bfr_surp()    );
     total()->set_surplus(    total()->split_deaths() + fl->surplus()    );
-    total()->set_desired(    total()->desired()     + fl->desired()    );
+    total()->set_desired(    total()->desired()      + fl->desired()    );
     total()->set_prev_sweep(  total()->prev_sweep()   + fl->prev_sweep()  );
     total()->set_before_sweep(total()->before_sweep() + fl->before_sweep());
     total()->set_coal_births( total()->coal_births()  + fl->coal_births() );
@@ -1219,18 +1270,32 @@
     total()->set_split_births(total()->split_births() + fl->split_births());
     total()->set_split_deaths(total()->split_deaths() + fl->split_deaths());
   }
+#endif  // SERIALGC
 };
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::print_dict_census(void) const {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::print_dict_census(void) const {
 
   gclog_or_tty->print("\nBinaryTree\n");
-  FreeList<Chunk>::print_labels_on(gclog_or_tty, "size");
-  PrintTreeCensusClosure<Chunk> ptc;
+  FreeList_t<Chunk_t>::print_labels_on(gclog_or_tty, "size");
+  PrintTreeCensusClosure<Chunk_t, FreeList_t> ptc;
   ptc.do_tree(root());
 
-  FreeList<Chunk>* total = ptc.total();
-  FreeList<Chunk>::print_labels_on(gclog_or_tty, " ");
+  FreeList_t<Chunk_t>* total = ptc.total();
+  FreeList_t<Chunk_t>::print_labels_on(gclog_or_tty, " ");
+}
+
+#ifndef SERIALGC
+template <>
+void BinaryTreeDictionary<FreeChunk, AdaptiveFreeList>::print_dict_census(void) const {
+
+  gclog_or_tty->print("\nBinaryTree\n");
+  AdaptiveFreeList<FreeChunk>::print_labels_on(gclog_or_tty, "size");
+  PrintTreeCensusClosure<FreeChunk, AdaptiveFreeList> ptc;
+  ptc.do_tree(root());
+
+  AdaptiveFreeList<FreeChunk>* total = ptc.total();
+  AdaptiveFreeList<FreeChunk>::print_labels_on(gclog_or_tty, " ");
   total->print_on(gclog_or_tty, "TOTAL\t");
   gclog_or_tty->print(
               "total_free(words): " SIZE_FORMAT_W(16)
@@ -1242,9 +1307,10 @@
              (double)(total->desired() - total->count())
              /(total->desired() != 0 ? (double)total->desired() : 1.0));
 }
+#endif  // SERIALGC
 
-template <class Chunk>
-class PrintFreeListsClosure : public AscendTreeCensusClosure<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class PrintFreeListsClosure : public AscendTreeCensusClosure<Chunk_t, FreeList_t> {
   outputStream* _st;
   int _print_line;
 
@@ -1253,14 +1319,14 @@
     _st = st;
     _print_line = 0;
   }
-  void do_list(FreeList<Chunk>* fl) {
+  void do_list(FreeList_t<Chunk_t>* fl) {
     if (++_print_line >= 40) {
-      FreeList<Chunk>::print_labels_on(_st, "size");
+      FreeList_t<Chunk_t>::print_labels_on(_st, "size");
       _print_line = 0;
     }
     fl->print_on(gclog_or_tty);
     size_t sz = fl->size();
-    for (Chunk* fc = fl->head(); fc != NULL;
+    for (Chunk_t* fc = fl->head(); fc != NULL;
          fc = fc->next()) {
       _st->print_cr("\t[" PTR_FORMAT "," PTR_FORMAT ")  %s",
                     fc, (HeapWord*)fc + sz,
@@ -1269,11 +1335,11 @@
   }
 };
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::print_free_lists(outputStream* st) const {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::print_free_lists(outputStream* st) const {
 
-  FreeList<Chunk>::print_labels_on(st, "size");
-  PrintFreeListsClosure<Chunk> pflc(st);
+  FreeList_t<Chunk_t>::print_labels_on(st, "size");
+  PrintFreeListsClosure<Chunk_t, FreeList_t> pflc(st);
   pflc.do_tree(root());
 }
 
@@ -1281,18 +1347,18 @@
 // . _root has no parent
 // . parent and child point to each other
 // . each node's key correctly related to that of its child(ren)
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::verify_tree() const {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::verify_tree() const {
   guarantee(root() == NULL || total_free_blocks() == 0 ||
     total_size() != 0, "_total_size should't be 0?");
   guarantee(root() == NULL || root()->parent() == NULL, "_root shouldn't have parent");
   verify_tree_helper(root());
 }
 
-template <class Chunk>
-size_t BinaryTreeDictionary<Chunk>::verify_prev_free_ptrs(TreeList<Chunk>* tl) {
+template <class Chunk_t, template <class> class FreeList_t>
+size_t BinaryTreeDictionary<Chunk_t, FreeList_t>::verify_prev_free_ptrs(TreeList<Chunk_t, FreeList_t>* tl) {
   size_t ct = 0;
-  for (Chunk* curFC = tl->head(); curFC != NULL; curFC = curFC->next()) {
+  for (Chunk_t* curFC = tl->head(); curFC != NULL; curFC = curFC->next()) {
     ct++;
     assert(curFC->prev() == NULL || curFC->prev()->is_free(),
       "Chunk should be free");
@@ -1303,8 +1369,8 @@
 // Note: this helper is recursive rather than iterative, so use with
 // caution on very deep trees; and watch out for stack overflow errors;
 // In general, to be used only for debugging.
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::verify_tree_helper(TreeList<Chunk>* tl) const {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::verify_tree_helper(TreeList<Chunk_t, FreeList_t>* tl) const {
   if (tl == NULL)
     return;
   guarantee(tl->size() != 0, "A list must has a size");
@@ -1332,15 +1398,25 @@
   verify_tree_helper(tl->right());
 }
 
-template <class Chunk>
-void BinaryTreeDictionary<Chunk>::verify() const {
+template <class Chunk_t, template <class> class FreeList_t>
+void BinaryTreeDictionary<Chunk_t, FreeList_t>::verify() const {
   verify_tree();
   guarantee(total_size() == total_size_in_tree(root()), "Total Size inconsistency");
 }
 
+template class TreeList<Metablock, FreeList>;
+template class BinaryTreeDictionary<Metablock, FreeList>;
+template class TreeChunk<Metablock, FreeList>;
+
+template class TreeList<Metachunk, FreeList>;
+template class BinaryTreeDictionary<Metachunk, FreeList>;
+template class TreeChunk<Metachunk, FreeList>;
+
+
 #ifndef SERIALGC
 // Explicitly instantiate these types for FreeChunk.
-template class BinaryTreeDictionary<FreeChunk>;
-template class TreeChunk<FreeChunk>;
-template class TreeList<FreeChunk>;
+template class TreeList<FreeChunk, AdaptiveFreeList>;
+template class BinaryTreeDictionary<FreeChunk, AdaptiveFreeList>;
+template class TreeChunk<FreeChunk, AdaptiveFreeList>;
+
 #endif // SERIALGC
--- a/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/binaryTreeDictionary.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -37,77 +37,78 @@
 // A TreeList is a FreeList which can be used to maintain a
 // binary tree of free lists.
 
-template <class Chunk> class TreeChunk;
-template <class Chunk> class BinaryTreeDictionary;
-template <class Chunk> class AscendTreeCensusClosure;
-template <class Chunk> class DescendTreeCensusClosure;
-template <class Chunk> class DescendTreeSearchClosure;
+template <class Chunk_t, template <class> class FreeList_t> class TreeChunk;
+template <class Chunk_t, template <class> class FreeList_t> class BinaryTreeDictionary;
+template <class Chunk_t, template <class> class FreeList_t> class AscendTreeCensusClosure;
+template <class Chunk_t, template <class> class FreeList_t> class DescendTreeCensusClosure;
+template <class Chunk_t, template <class> class FreeList_t> class DescendTreeSearchClosure;
 
-template <class Chunk>
-class TreeList: public FreeList<Chunk> {
-  friend class TreeChunk<Chunk>;
-  friend class BinaryTreeDictionary<Chunk>;
-  friend class AscendTreeCensusClosure<Chunk>;
-  friend class DescendTreeCensusClosure<Chunk>;
-  friend class DescendTreeSearchClosure<Chunk>;
+template <class Chunk_t, template <class> class FreeList_t>
+class TreeList : public FreeList_t<Chunk_t> {
+  friend class TreeChunk<Chunk_t, FreeList_t>;
+  friend class BinaryTreeDictionary<Chunk_t, FreeList_t>;
+  friend class AscendTreeCensusClosure<Chunk_t, FreeList_t>;
+  friend class DescendTreeCensusClosure<Chunk_t, FreeList_t>;
+  friend class DescendTreeSearchClosure<Chunk_t, FreeList_t>;
 
-  TreeList<Chunk>* _parent;
-  TreeList<Chunk>* _left;
-  TreeList<Chunk>* _right;
+  TreeList<Chunk_t, FreeList_t>* _parent;
+  TreeList<Chunk_t, FreeList_t>* _left;
+  TreeList<Chunk_t, FreeList_t>* _right;
 
  protected:
-  TreeList<Chunk>* parent() const { return _parent; }
-  TreeList<Chunk>* left()   const { return _left;   }
-  TreeList<Chunk>* right()  const { return _right;  }
 
-  // Explicitly import these names into our namespace to fix name lookup with templates
-  using FreeList<Chunk>::head;
-  using FreeList<Chunk>::set_head;
+  TreeList<Chunk_t, FreeList_t>* parent() const { return _parent; }
+  TreeList<Chunk_t, FreeList_t>* left()   const { return _left;   }
+  TreeList<Chunk_t, FreeList_t>* right()  const { return _right;  }
 
-  using FreeList<Chunk>::tail;
-  using FreeList<Chunk>::set_tail;
-  using FreeList<Chunk>::link_tail;
+  // Wrapper on call to base class, to get the template to compile.
+  Chunk_t* head() const { return FreeList_t<Chunk_t>::head(); }
+  Chunk_t* tail() const { return FreeList_t<Chunk_t>::tail(); }
+  void set_head(Chunk_t* head) { FreeList_t<Chunk_t>::set_head(head); }
+  void set_tail(Chunk_t* tail) { FreeList_t<Chunk_t>::set_tail(tail); }
 
-  using FreeList<Chunk>::increment_count;
-  NOT_PRODUCT(using FreeList<Chunk>::increment_returned_bytes_by;)
-  using FreeList<Chunk>::verify_chunk_in_free_list;
-  using FreeList<Chunk>::size;
+  size_t size() const { return FreeList_t<Chunk_t>::size(); }
 
   // Accessors for links in tree.
 
-  void set_left(TreeList<Chunk>* tl) {
+  void set_left(TreeList<Chunk_t, FreeList_t>* tl) {
     _left   = tl;
     if (tl != NULL)
       tl->set_parent(this);
   }
-  void set_right(TreeList<Chunk>* tl) {
+  void set_right(TreeList<Chunk_t, FreeList_t>* tl) {
     _right  = tl;
     if (tl != NULL)
       tl->set_parent(this);
   }
-  void set_parent(TreeList<Chunk>* tl)  { _parent = tl;   }
+  void set_parent(TreeList<Chunk_t, FreeList_t>* tl)  { _parent = tl;   }
 
-  void clearLeft()               { _left = NULL;   }
+  void clear_left()               { _left = NULL;   }
   void clear_right()              { _right = NULL;  }
   void clear_parent()             { _parent = NULL; }
-  void initialize()              { clearLeft(); clear_right(), clear_parent(); }
+  void initialize()               { clear_left(); clear_right(), clear_parent(); FreeList_t<Chunk_t>::initialize(); }
 
   // For constructing a TreeList from a Tree chunk or
   // address and size.
-  static TreeList<Chunk>* as_TreeList(TreeChunk<Chunk>* tc);
-  static TreeList<Chunk>* as_TreeList(HeapWord* addr, size_t size);
+  TreeList();
+  static TreeList<Chunk_t, FreeList_t>*
+          as_TreeList(TreeChunk<Chunk_t, FreeList_t>* tc);
+  static TreeList<Chunk_t, FreeList_t>* as_TreeList(HeapWord* addr, size_t size);
 
   // Returns the head of the free list as a pointer to a TreeChunk.
-  TreeChunk<Chunk>* head_as_TreeChunk();
+  TreeChunk<Chunk_t, FreeList_t>* head_as_TreeChunk();
 
   // Returns the first available chunk in the free list as a pointer
   // to a TreeChunk.
-  TreeChunk<Chunk>* first_available();
+  TreeChunk<Chunk_t, FreeList_t>* first_available();
 
   // Returns the block with the largest heap address amongst
   // those in the list for this size; potentially slow and expensive,
   // use with caution!
-  TreeChunk<Chunk>* largest_address();
+  TreeChunk<Chunk_t, FreeList_t>* largest_address();
+
+  TreeList<Chunk_t, FreeList_t>* get_better_list(
+    BinaryTreeDictionary<Chunk_t, FreeList_t>* dictionary);
 
   // remove_chunk_replace_if_needed() removes the given "tc" from the TreeList.
   // If "tc" is the first chunk in the list, it is also the
@@ -115,10 +116,10 @@
   // returns the possibly replaced TreeList* for the node in
   // the tree.  It also updates the parent of the original
   // node to point to the new node.
-  TreeList<Chunk>* remove_chunk_replace_if_needed(TreeChunk<Chunk>* tc);
+  TreeList<Chunk_t, FreeList_t>* remove_chunk_replace_if_needed(TreeChunk<Chunk_t, FreeList_t>* tc);
   // See FreeList.
-  void return_chunk_at_head(TreeChunk<Chunk>* tc);
-  void return_chunk_at_tail(TreeChunk<Chunk>* tc);
+  void return_chunk_at_head(TreeChunk<Chunk_t, FreeList_t>* tc);
+  void return_chunk_at_tail(TreeChunk<Chunk_t, FreeList_t>* tc);
 };
 
 // A TreeChunk is a subclass of a Chunk that additionally
@@ -134,52 +135,54 @@
 // on the free list for a node in the tree and is only removed if
 // it is the last chunk on the free list.
 
-template <class Chunk>
-class TreeChunk : public Chunk {
-  friend class TreeList<Chunk>;
-  TreeList<Chunk>* _list;
-  TreeList<Chunk> _embedded_list;  // if non-null, this chunk is on _list
+template <class Chunk_t, template <class> class FreeList_t>
+class TreeChunk : public Chunk_t {
+  friend class TreeList<Chunk_t, FreeList_t>;
+  TreeList<Chunk_t, FreeList_t>* _list;
+  TreeList<Chunk_t, FreeList_t> _embedded_list;  // if non-null, this chunk is on _list
+
+  static size_t _min_tree_chunk_size;
+
  protected:
-  TreeList<Chunk>* embedded_list() const { return (TreeList<Chunk>*) &_embedded_list; }
-  void set_embedded_list(TreeList<Chunk>* v) { _embedded_list = *v; }
+  TreeList<Chunk_t, FreeList_t>* embedded_list() const { return (TreeList<Chunk_t, FreeList_t>*) &_embedded_list; }
+  void set_embedded_list(TreeList<Chunk_t, FreeList_t>* v) { _embedded_list = *v; }
  public:
-  TreeList<Chunk>* list() { return _list; }
-  void set_list(TreeList<Chunk>* v) { _list = v; }
-  static TreeChunk<Chunk>* as_TreeChunk(Chunk* fc);
+  TreeList<Chunk_t, FreeList_t>* list() { return _list; }
+  void set_list(TreeList<Chunk_t, FreeList_t>* v) { _list = v; }
+  static TreeChunk<Chunk_t, FreeList_t>* as_TreeChunk(Chunk_t* fc);
   // Initialize fields in a TreeChunk that should be
   // initialized when the TreeChunk is being added to
   // a free list in the tree.
   void initialize() { embedded_list()->initialize(); }
 
-  Chunk* next() const { return Chunk::next(); }
-  Chunk* prev() const { return Chunk::prev(); }
-  size_t size() const volatile { return Chunk::size(); }
+  Chunk_t* next() const { return Chunk_t::next(); }
+  Chunk_t* prev() const { return Chunk_t::prev(); }
+  size_t size() const volatile { return Chunk_t::size(); }
+
+  static size_t min_size() {
+    return _min_tree_chunk_size;
+  }
 
   // debugging
   void verify_tree_chunk_list() const;
+  void assert_is_mangled() const;
 };
 
 
-template <class Chunk>
-class BinaryTreeDictionary: public FreeBlockDictionary<Chunk> {
+template <class Chunk_t, template <class> class FreeList_t>
+class BinaryTreeDictionary: public FreeBlockDictionary<Chunk_t> {
   friend class VMStructs;
-  bool       _splay;
-  bool       _adaptive_freelists;
   size_t     _total_size;
   size_t     _total_free_blocks;
-  TreeList<Chunk>* _root;
+  TreeList<Chunk_t, FreeList_t>* _root;
 
   // private accessors
-  bool splay() const { return _splay; }
-  void set_splay(bool v) { _splay = v; }
   void set_total_size(size_t v) { _total_size = v; }
   virtual void inc_total_size(size_t v);
   virtual void dec_total_size(size_t v);
-  size_t total_free_blocks() const { return _total_free_blocks; }
   void set_total_free_blocks(size_t v) { _total_free_blocks = v; }
-  TreeList<Chunk>* root() const { return _root; }
-  void set_root(TreeList<Chunk>* v) { _root = v; }
-  bool adaptive_freelists() { return _adaptive_freelists; }
+  TreeList<Chunk_t, FreeList_t>* root() const { return _root; }
+  void set_root(TreeList<Chunk_t, FreeList_t>* v) { _root = v; }
 
   // This field is added and can be set to point to the
   // the Mutex used to synchronize access to the
@@ -191,54 +194,55 @@
   // return it.  If the chunk
   // is the last chunk of that size, remove the node for that size
   // from the tree.
-  TreeChunk<Chunk>* get_chunk_from_tree(size_t size, enum FreeBlockDictionary<Chunk>::Dither dither, bool splay);
-  // Return a list of the specified size or NULL from the tree.
-  // The list is not removed from the tree.
-  TreeList<Chunk>* find_list (size_t size) const;
+  TreeChunk<Chunk_t, FreeList_t>* get_chunk_from_tree(size_t size, enum FreeBlockDictionary<Chunk_t>::Dither dither);
   // Remove this chunk from the tree.  If the removal results
   // in an empty list in the tree, remove the empty list.
-  TreeChunk<Chunk>* remove_chunk_from_tree(TreeChunk<Chunk>* tc);
+  TreeChunk<Chunk_t, FreeList_t>* remove_chunk_from_tree(TreeChunk<Chunk_t, FreeList_t>* tc);
   // Remove the node in the trees starting at tl that has the
   // minimum value and return it.  Repair the tree as needed.
-  TreeList<Chunk>* remove_tree_minimum(TreeList<Chunk>* tl);
-  void       semi_splay_step(TreeList<Chunk>* tl);
+  TreeList<Chunk_t, FreeList_t>* remove_tree_minimum(TreeList<Chunk_t, FreeList_t>* tl);
   // Add this free chunk to the tree.
-  void       insert_chunk_in_tree(Chunk* freeChunk);
+  void       insert_chunk_in_tree(Chunk_t* freeChunk);
  public:
 
-  static const size_t min_tree_chunk_size  = sizeof(TreeChunk<Chunk>)/HeapWordSize;
+  // Return a list of the specified size or NULL from the tree.
+  // The list is not removed from the tree.
+  TreeList<Chunk_t, FreeList_t>* find_list (size_t size) const;
 
   void       verify_tree() const;
   // verify that the given chunk is in the tree.
-  bool       verify_chunk_in_free_list(Chunk* tc) const;
+  bool       verify_chunk_in_free_list(Chunk_t* tc) const;
  private:
-  void          verify_tree_helper(TreeList<Chunk>* tl) const;
-  static size_t verify_prev_free_ptrs(TreeList<Chunk>* tl);
+  void          verify_tree_helper(TreeList<Chunk_t, FreeList_t>* tl) const;
+  static size_t verify_prev_free_ptrs(TreeList<Chunk_t, FreeList_t>* tl);
 
   // Returns the total number of chunks in the list.
-  size_t     total_list_length(TreeList<Chunk>* tl) const;
+  size_t     total_list_length(TreeList<Chunk_t, FreeList_t>* tl) const;
   // Returns the total number of words in the chunks in the tree
   // starting at "tl".
-  size_t     total_size_in_tree(TreeList<Chunk>* tl) const;
+  size_t     total_size_in_tree(TreeList<Chunk_t, FreeList_t>* tl) const;
   // Returns the sum of the square of the size of each block
   // in the tree starting at "tl".
-  double     sum_of_squared_block_sizes(TreeList<Chunk>* const tl) const;
+  double     sum_of_squared_block_sizes(TreeList<Chunk_t, FreeList_t>* const tl) const;
   // Returns the total number of free blocks in the tree starting
   // at "tl".
-  size_t     total_free_blocks_in_tree(TreeList<Chunk>* tl) const;
-  size_t     num_free_blocks() const;
-  size_t     treeHeight() const;
-  size_t     tree_height_helper(TreeList<Chunk>* tl) const;
-  size_t     total_nodes_in_tree(TreeList<Chunk>* tl) const;
-  size_t     total_nodes_helper(TreeList<Chunk>* tl) const;
+  size_t     total_free_blocks_in_tree(TreeList<Chunk_t, FreeList_t>* tl) const;
+  size_t     num_free_blocks()  const;
+  size_t     tree_height() const;
+  size_t     tree_height_helper(TreeList<Chunk_t, FreeList_t>* tl) const;
+  size_t     total_nodes_in_tree(TreeList<Chunk_t, FreeList_t>* tl) const;
+  size_t     total_nodes_helper(TreeList<Chunk_t, FreeList_t>* tl) const;
 
  public:
   // Constructor
-  BinaryTreeDictionary(bool adaptive_freelists, bool splay = false);
-  BinaryTreeDictionary(MemRegion mr, bool adaptive_freelists, bool splay = false);
+  BinaryTreeDictionary() :
+    _total_size(0), _total_free_blocks(0), _root(0) {}
+
+  BinaryTreeDictionary(MemRegion mr);
 
   // Public accessors
   size_t total_size() const { return _total_size; }
+  size_t total_free_blocks() const { return _total_free_blocks; }
 
   // Reset the dictionary to the initial conditions with
   // a single free chunk.
@@ -249,23 +253,24 @@
 
   // Return a chunk of size "size" or greater from
   // the tree.
-  // want a better dynamic splay strategy for the future.
-  Chunk* get_chunk(size_t size, enum FreeBlockDictionary<Chunk>::Dither dither) {
-    FreeBlockDictionary<Chunk>::verify_par_locked();
-    Chunk* res = get_chunk_from_tree(size, dither, splay());
+  Chunk_t* get_chunk(size_t size, enum FreeBlockDictionary<Chunk_t>::Dither dither) {
+    FreeBlockDictionary<Chunk_t>::verify_par_locked();
+    Chunk_t* res = get_chunk_from_tree(size, dither);
     assert(res == NULL || res->is_free(),
            "Should be returning a free chunk");
+    assert(dither != FreeBlockDictionary<Chunk_t>::exactly ||
+           res == NULL || res->size() == size, "Not correct size");
     return res;
   }
 
-  void return_chunk(Chunk* chunk) {
-    FreeBlockDictionary<Chunk>::verify_par_locked();
+  void return_chunk(Chunk_t* chunk) {
+    FreeBlockDictionary<Chunk_t>::verify_par_locked();
     insert_chunk_in_tree(chunk);
   }
 
-  void remove_chunk(Chunk* chunk) {
-    FreeBlockDictionary<Chunk>::verify_par_locked();
-    remove_chunk_from_tree((TreeChunk<Chunk>*)chunk);
+  void remove_chunk(Chunk_t* chunk) {
+    FreeBlockDictionary<Chunk_t>::verify_par_locked();
+    remove_chunk_from_tree((TreeChunk<Chunk_t, FreeList_t>*)chunk);
     assert(chunk->is_free(), "Should still be a free chunk");
   }
 
@@ -281,19 +286,19 @@
   }
 
   size_t     min_size() const {
-    return min_tree_chunk_size;
+    return TreeChunk<Chunk_t, FreeList_t>::min_size();
   }
 
   double     sum_of_squared_block_sizes() const {
     return sum_of_squared_block_sizes(root());
   }
 
-  Chunk* find_chunk_ends_at(HeapWord* target) const;
+  Chunk_t* find_chunk_ends_at(HeapWord* target) const;
 
   // Find the list with size "size" in the binary tree and update
   // the statistics in the list according to "split" (chunk was
   // split or coalesce) and "birth" (chunk was added or removed).
-  void       dict_census_udpate(size_t size, bool split, bool birth);
+  void       dict_census_update(size_t size, bool split, bool birth);
   // Return true if the dictionary is overpopulated (more chunks of
   // this size than desired) for size "size".
   bool       coal_dict_over_populated(size_t size);
@@ -307,7 +312,7 @@
   // statistics for the sweep.
   void       end_sweep_dict_census(double splitSurplusPercent);
   // Return the largest free chunk in the tree.
-  Chunk* find_largest_dict() const;
+  Chunk_t* find_largest_dict() const;
   // Accessors for statistics
   void       set_tree_surplus(double splitSurplusPercent);
   void       set_tree_hints(void);
--- a/hotspot/src/share/vm/memory/filemap.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/filemap.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -29,6 +29,7 @@
 #include "runtime/arguments.hpp"
 #include "runtime/java.hpp"
 #include "runtime/os.hpp"
+#include "services/memTracker.hpp"
 #include "utilities/defaultStream.hpp"
 
 # include <sys/stat.h>
@@ -344,25 +345,14 @@
     fail_continue(err_msg("Unable to reserved shared space at required address " INTPTR_FORMAT, requested_addr));
     return rs;
   }
+  // the reserved virtual memory is for mapping class data sharing archive
+  if (MemTracker::is_on()) {
+    MemTracker::record_virtual_memory_type((address)rs.base(), mtClassShared);
+  }
   return rs;
 }
 
 // Memory map a region in the address space.
-
-char* FileMapInfo::map_region(int i, ReservedSpace rs) {
-  struct FileMapInfo::FileMapHeader::space_info* si = &_header._space[i];
-  size_t used = si->_used;
-  size_t size = align_size_up(used, os::vm_allocation_granularity());
-
-  ReservedSpace mapped_rs = rs.first_part(size, true, true);
-  ReservedSpace unmapped_rs = rs.last_part(size);
-  mapped_rs.release();
-
-  return map_region(i);
-}
-
-
-// Memory map a region in the address space.
 static const char* shared_region_name[] = { "ReadOnly", "ReadWrite", "MiscData", "MiscCode"};
 
 char* FileMapInfo::map_region(int i) {
--- a/hotspot/src/share/vm/memory/filemap.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/filemap.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -125,7 +125,6 @@
                      size_t capacity, bool read_only, bool allow_exec);
   void  write_bytes(const void* buffer, int count);
   void  write_bytes_aligned(const void* buffer, int count);
-  char* map_region(int i, ReservedSpace rs);
   char* map_region(int i);
   void  unmap_region(int i);
   void  close();
--- a/hotspot/src/share/vm/memory/freeBlockDictionary.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/freeBlockDictionary.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -27,6 +27,8 @@
 #include "gc_implementation/concurrentMarkSweep/freeChunk.hpp"
 #endif // SERIALGC
 #include "memory/freeBlockDictionary.hpp"
+#include "memory/metablock.hpp"
+#include "memory/metachunk.hpp"
 #ifdef TARGET_OS_FAMILY_linux
 # include "thread_linux.inline.hpp"
 #endif
@@ -62,6 +64,9 @@
 }
 #endif
 
+template class FreeBlockDictionary<Metablock>;
+template class FreeBlockDictionary<Metachunk>;
+
 #ifndef SERIALGC
 // Explicitly instantiate for FreeChunk
 template class FreeBlockDictionary<FreeChunk>;
--- a/hotspot/src/share/vm/memory/freeBlockDictionary.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/freeBlockDictionary.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -66,7 +66,7 @@
   virtual void       reset(HeapWord* addr, size_t size) = 0;
   virtual void       reset() = 0;
 
-  virtual void       dict_census_udpate(size_t size, bool split, bool birth) = 0;
+  virtual void       dict_census_update(size_t size, bool split, bool birth) = 0;
   virtual bool       coal_dict_over_populated(size_t size) = 0;
   virtual void       begin_sweep_dict_census(double coalSurplusPercent,
                        float inter_sweep_current, float inter_sweep_estimate,
--- a/hotspot/src/share/vm/memory/freeList.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/freeList.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -25,6 +25,8 @@
 #include "precompiled.hpp"
 #include "memory/freeBlockDictionary.hpp"
 #include "memory/freeList.hpp"
+#include "memory/metablock.hpp"
+#include "memory/metachunk.hpp"
 #include "memory/sharedHeap.hpp"
 #include "runtime/globals.hpp"
 #include "runtime/mutex.hpp"
@@ -49,8 +51,6 @@
 {
   _size         = 0;
   _count        = 0;
-  _hint         = 0;
-  init_statistics();
 }
 
 template <class Chunk>
@@ -62,34 +62,50 @@
 {
   _size         = fc->size();
   _count        = 1;
-  _hint         = 0;
-  init_statistics();
-#ifndef PRODUCT
-  _allocation_stats.set_returned_bytes(size() * HeapWordSize);
-#endif
 }
 
 template <class Chunk>
-void FreeList<Chunk>::reset(size_t hint) {
+void FreeList<Chunk>::link_head(Chunk* v) {
+  assert_proper_lock_protection();
+  set_head(v);
+  // If this method is not used (just set the head instead),
+  // this check can be avoided.
+  if (v != NULL) {
+    v->link_prev(NULL);
+  }
+}
+
+
+
+template <class Chunk>
+void FreeList<Chunk>::reset() {
+  // Don't set the _size to 0 because this method is
+  // used with a existing list that has a size but which has
+  // been emptied.
+  // Don't clear the _protecting_lock of an existing list.
   set_count(0);
   set_head(NULL);
   set_tail(NULL);
-  set_hint(hint);
 }
 
 template <class Chunk>
-void FreeList<Chunk>::init_statistics(bool split_birth) {
-  _allocation_stats.initialize(split_birth);
+void FreeList<Chunk>::initialize() {
+#ifdef ASSERT
+  // Needed early because it might be checked in other initializing code.
+  set_protecting_lock(NULL);
+#endif
+  reset();
+  set_size(0);
 }
 
-template <class Chunk>
-Chunk* FreeList<Chunk>::get_chunk_at_head() {
+template <class Chunk_t>
+Chunk_t* FreeList<Chunk_t>::get_chunk_at_head() {
   assert_proper_lock_protection();
   assert(head() == NULL || head()->prev() == NULL, "list invariant");
   assert(tail() == NULL || tail()->next() == NULL, "list invariant");
-  Chunk* fc = head();
+  Chunk_t* fc = head();
   if (fc != NULL) {
-    Chunk* nextFC = fc->next();
+    Chunk_t* nextFC = fc->next();
     if (nextFC != NULL) {
       // The chunk fc being removed has a "next".  Set the "next" to the
       // "prev" of fc.
@@ -197,11 +213,6 @@
     link_tail(chunk);
   }
   increment_count(); // of # of chunks in list
-  DEBUG_ONLY(
-    if (record_return) {
-      increment_returned_bytes_by(size()*HeapWordSize);
-    }
-  )
   assert(head() == NULL || head()->prev() == NULL, "list invariant");
   assert(tail() == NULL || tail()->next() == NULL, "list invariant");
   assert(head() == NULL || head()->size() == size(), "wrong item on list");
@@ -233,11 +244,6 @@
   }
   link_tail(chunk);
   increment_count();  // of # of chunks in list
-  DEBUG_ONLY(
-    if (record_return) {
-      increment_returned_bytes_by(size()*HeapWordSize);
-    }
-  )
   assert(head() == NULL || head()->prev() == NULL, "list invariant");
   assert(tail() == NULL || tail()->next() == NULL, "list invariant");
   assert(head() == NULL || head()->size() == size(), "wrong item on list");
@@ -273,7 +279,7 @@
   }
 }
 
-// verify_chunk_in_free_list() is used to verify that an item is in this free list.
+// verify_chunk_in_free_lists() is used to verify that an item is in this free list.
 // It is used as a debugging aid.
 template <class Chunk>
 bool FreeList<Chunk>::verify_chunk_in_free_list(Chunk* fc) const {
@@ -294,40 +300,14 @@
 
 #ifndef PRODUCT
 template <class Chunk>
-void FreeList<Chunk>::verify_stats() const {
-  // The +1 of the LH comparand is to allow some "looseness" in
-  // checking: we usually call this interface when adding a block
-  // and we'll subsequently update the stats; we cannot update the
-  // stats beforehand because in the case of the large-block BT
-  // dictionary for example, this might be the first block and
-  // in that case there would be no place that we could record
-  // the stats (which are kept in the block itself).
-  assert((_allocation_stats.prev_sweep() + _allocation_stats.split_births()
-          + _allocation_stats.coal_births() + 1)   // Total Production Stock + 1
-         >= (_allocation_stats.split_deaths() + _allocation_stats.coal_deaths()
-             + (ssize_t)count()),                // Total Current Stock + depletion
-         err_msg("FreeList " PTR_FORMAT " of size " SIZE_FORMAT
-                 " violates Conservation Principle: "
-                 "prev_sweep(" SIZE_FORMAT ")"
-                 " + split_births(" SIZE_FORMAT ")"
-                 " + coal_births(" SIZE_FORMAT ") + 1 >= "
-                 " split_deaths(" SIZE_FORMAT ")"
-                 " coal_deaths(" SIZE_FORMAT ")"
-                 " + count(" SSIZE_FORMAT ")",
-                 this, _size, _allocation_stats.prev_sweep(), _allocation_stats.split_births(),
-                 _allocation_stats.split_births(), _allocation_stats.split_deaths(),
-                 _allocation_stats.coal_deaths(), count()));
-}
-
-template <class Chunk>
 void FreeList<Chunk>::assert_proper_lock_protection_work() const {
-  assert(_protecting_lock != NULL, "Don't call this directly");
+  assert(protecting_lock() != NULL, "Don't call this directly");
   assert(ParallelGCThreads > 0, "Don't call this directly");
   Thread* thr = Thread::current();
   if (thr->is_VM_thread() || thr->is_ConcurrentGC_thread()) {
     // assert that we are holding the freelist lock
   } else if (thr->is_GC_task_thread()) {
-    assert(_protecting_lock->owned_by_self(), "FreeList RACE DETECTED");
+    assert(protecting_lock()->owned_by_self(), "FreeList RACE DETECTED");
   } else if (thr->is_Java_thread()) {
     assert(!SafepointSynchronize::is_at_safepoint(), "Should not be executing");
   } else {
@@ -350,21 +330,17 @@
 // to the call is a non-null string, it is printed in the first column;
 // otherwise, if the argument is null (the default), then the size of the
 // (free list) block is printed in the first column.
-template <class Chunk>
-void FreeList<Chunk>::print_on(outputStream* st, const char* c) const {
+template <class Chunk_t>
+void FreeList<Chunk_t>::print_on(outputStream* st, const char* c) const {
   if (c != NULL) {
     st->print("%16s", c);
   } else {
     st->print(SIZE_FORMAT_W(16), size());
   }
-  st->print("\t"
-           SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t"
-           SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\t" SSIZE_FORMAT_W(14) "\n",
-           bfr_surp(),             surplus(),             desired(),             prev_sweep(),           before_sweep(),
-           count(),               coal_births(),          coal_deaths(),          split_births(),         split_deaths());
 }
 
+template class FreeList<Metablock>;
+template class FreeList<Metachunk>;
 #ifndef SERIALGC
-// Needs to be after the definitions have been seen.
 template class FreeList<FreeChunk>;
 #endif // SERIALGC
--- a/hotspot/src/share/vm/memory/freeList.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/freeList.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -40,23 +40,19 @@
 // for that implementation.
 
 class Mutex;
-template <class Chunk> class TreeList;
-template <class Chunk> class PrintTreeCensusClosure;
 
-template <class Chunk>
+template <class Chunk_t>
 class FreeList VALUE_OBJ_CLASS_SPEC {
   friend class CompactibleFreeListSpace;
   friend class VMStructs;
-  friend class PrintTreeCensusClosure<Chunk>;
 
  private:
-  Chunk*        _head;          // Head of list of free chunks
-  Chunk*        _tail;          // Tail of list of free chunks
+  Chunk_t*      _head;          // Head of list of free chunks
+  Chunk_t*      _tail;          // Tail of list of free chunks
   size_t        _size;          // Size in Heap words of each chunk
   ssize_t       _count;         // Number of entries in list
-  size_t        _hint;          // next larger size list with a positive surplus
 
-  AllocationStats _allocation_stats; // allocation-related statistics
+ protected:
 
 #ifdef ASSERT
   Mutex*        _protecting_lock;
@@ -71,10 +67,6 @@
 #endif
   }
 
-  // Initialize the allocation statistics.
- protected:
-  void init_statistics(bool split_birth = false);
-  void set_count(ssize_t v) { _count = v;}
   void increment_count()    {
     _count++;
   }
@@ -89,52 +81,48 @@
   // Construct a list without any entries.
   FreeList();
   // Construct a list with "fc" as the first (and lone) entry in the list.
-  FreeList(Chunk* fc);
+  FreeList(Chunk_t* fc);
 
-  // Reset the head, tail, hint, and count of a free list.
-  void reset(size_t hint);
+  // Do initialization
+  void initialize();
+
+  // Reset the head, tail, and count of a free list.
+  void reset();
 
   // Declare the current free list to be protected by the given lock.
 #ifdef ASSERT
-  void set_protecting_lock(Mutex* protecting_lock) {
-    _protecting_lock = protecting_lock;
+  Mutex* protecting_lock() const { return _protecting_lock; }
+  void set_protecting_lock(Mutex* v) {
+    _protecting_lock = v;
   }
 #endif
 
   // Accessors.
-  Chunk* head() const {
+  Chunk_t* head() const {
     assert_proper_lock_protection();
     return _head;
   }
-  void set_head(Chunk* v) {
+  void set_head(Chunk_t* v) {
     assert_proper_lock_protection();
     _head = v;
     assert(!_head || _head->size() == _size, "bad chunk size");
   }
   // Set the head of the list and set the prev field of non-null
   // values to NULL.
-  void link_head(Chunk* v) {
-    assert_proper_lock_protection();
-    set_head(v);
-    // If this method is not used (just set the head instead),
-    // this check can be avoided.
-    if (v != NULL) {
-      v->link_prev(NULL);
-    }
-  }
+  void link_head(Chunk_t* v);
 
-  Chunk* tail() const {
+  Chunk_t* tail() const {
     assert_proper_lock_protection();
     return _tail;
   }
-  void set_tail(Chunk* v) {
+  void set_tail(Chunk_t* v) {
     assert_proper_lock_protection();
     _tail = v;
     assert(!_tail || _tail->size() == _size, "bad chunk size");
   }
   // Set the tail of the list and set the next field of non-null
   // values to NULL.
-  void link_tail(Chunk* v) {
+  void link_tail(Chunk_t* v) {
     assert_proper_lock_protection();
     set_tail(v);
     if (v != NULL) {
@@ -152,174 +140,45 @@
     assert_proper_lock_protection();
     _size = v;
   }
-  ssize_t count() const {
-    return _count;
-  }
-  size_t hint() const {
-    return _hint;
-  }
-  void set_hint(size_t v) {
-    assert_proper_lock_protection();
-    assert(v == 0 || _size < v, "Bad hint"); _hint = v;
-  }
-
-  // Accessors for statistics
-  AllocationStats* allocation_stats() {
-    assert_proper_lock_protection();
-    return &_allocation_stats;
-  }
-
-  ssize_t desired() const {
-    return _allocation_stats.desired();
-  }
-  void set_desired(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_desired(v);
-  }
-  void compute_desired(float inter_sweep_current,
-                       float inter_sweep_estimate,
-                       float intra_sweep_estimate) {
-    assert_proper_lock_protection();
-    _allocation_stats.compute_desired(_count,
-                                      inter_sweep_current,
-                                      inter_sweep_estimate,
-                                      intra_sweep_estimate);
-  }
-  ssize_t coal_desired() const {
-    return _allocation_stats.coal_desired();
-  }
-  void set_coal_desired(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_coal_desired(v);
-  }
-
-  ssize_t surplus() const {
-    return _allocation_stats.surplus();
-  }
-  void set_surplus(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_surplus(v);
-  }
-  void increment_surplus() {
-    assert_proper_lock_protection();
-    _allocation_stats.increment_surplus();
-  }
-  void decrement_surplus() {
-    assert_proper_lock_protection();
-    _allocation_stats.decrement_surplus();
-  }
+  ssize_t count() const { return _count; }
+  void set_count(ssize_t v) { _count = v;}
 
-  ssize_t bfr_surp() const {
-    return _allocation_stats.bfr_surp();
-  }
-  void set_bfr_surp(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_bfr_surp(v);
-  }
-  ssize_t prev_sweep() const {
-    return _allocation_stats.prev_sweep();
-  }
-  void set_prev_sweep(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_prev_sweep(v);
-  }
-  ssize_t before_sweep() const {
-    return _allocation_stats.before_sweep();
-  }
-  void set_before_sweep(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_before_sweep(v);
-  }
-
-  ssize_t coal_births() const {
-    return _allocation_stats.coal_births();
-  }
-  void set_coal_births(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_coal_births(v);
-  }
-  void increment_coal_births() {
-    assert_proper_lock_protection();
-    _allocation_stats.increment_coal_births();
-  }
+  size_t get_better_size() { return size(); }
 
-  ssize_t coal_deaths() const {
-    return _allocation_stats.coal_deaths();
-  }
-  void set_coal_deaths(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_coal_deaths(v);
-  }
-  void increment_coal_deaths() {
-    assert_proper_lock_protection();
-    _allocation_stats.increment_coal_deaths();
-  }
-
-  ssize_t split_births() const {
-    return _allocation_stats.split_births();
-  }
-  void set_split_births(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_split_births(v);
-  }
-  void increment_split_births() {
-    assert_proper_lock_protection();
-    _allocation_stats.increment_split_births();
-  }
-
-  ssize_t split_deaths() const {
-    return _allocation_stats.split_deaths();
-  }
-  void set_split_deaths(ssize_t v) {
-    assert_proper_lock_protection();
-    _allocation_stats.set_split_deaths(v);
-  }
-  void increment_split_deaths() {
-    assert_proper_lock_protection();
-    _allocation_stats.increment_split_deaths();
-  }
-
-  NOT_PRODUCT(
-    // For debugging.  The "_returned_bytes" in all the lists are summed
-    // and compared with the total number of bytes swept during a
-    // collection.
-    size_t returned_bytes() const { return _allocation_stats.returned_bytes(); }
-    void set_returned_bytes(size_t v) { _allocation_stats.set_returned_bytes(v); }
-    void increment_returned_bytes_by(size_t v) {
-      _allocation_stats.set_returned_bytes(_allocation_stats.returned_bytes() + v);
-    }
-  )
+  size_t returned_bytes() const { ShouldNotReachHere(); return 0; }
+  void set_returned_bytes(size_t v) {}
+  void increment_returned_bytes_by(size_t v) {}
 
   // Unlink head of list and return it.  Returns NULL if
   // the list is empty.
-  Chunk* get_chunk_at_head();
+  Chunk_t* get_chunk_at_head();
 
   // Remove the first "n" or "count", whichever is smaller, chunks from the
   // list, setting "fl", which is required to be empty, to point to them.
-  void getFirstNChunksFromList(size_t n, FreeList<Chunk>* fl);
+  void getFirstNChunksFromList(size_t n, FreeList<Chunk_t>* fl);
 
   // Unlink this chunk from it's free list
-  void remove_chunk(Chunk* fc);
+  void remove_chunk(Chunk_t* fc);
 
   // Add this chunk to this free list.
-  void return_chunk_at_head(Chunk* fc);
-  void return_chunk_at_tail(Chunk* fc);
+  void return_chunk_at_head(Chunk_t* fc);
+  void return_chunk_at_tail(Chunk_t* fc);
 
   // Similar to returnChunk* but also records some diagnostic
   // information.
-  void return_chunk_at_head(Chunk* fc, bool record_return);
-  void return_chunk_at_tail(Chunk* fc, bool record_return);
+  void return_chunk_at_head(Chunk_t* fc, bool record_return);
+  void return_chunk_at_tail(Chunk_t* fc, bool record_return);
 
   // Prepend "fl" (whose size is required to be the same as that of "this")
   // to the front of "this" list.
-  void prepend(FreeList<Chunk>* fl);
+  void prepend(FreeList<Chunk_t>* fl);
 
   // Verify that the chunk is in the list.
   // found.  Return NULL if "fc" is not found.
-  bool verify_chunk_in_free_list(Chunk* fc) const;
+  bool verify_chunk_in_free_list(Chunk_t* fc) const;
 
   // Stats verification
-  void verify_stats() const PRODUCT_RETURN;
+//  void verify_stats() const { ShouldNotReachHere(); };
 
   // Printing support
   static void print_labels_on(outputStream* st, const char* c);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/memory/metablock.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+#ifndef SHARE_VM_MEMORY_METABLOCK_HPP
+#define SHARE_VM_MEMORY_METABLOCK_HPP
+
+// Metablock are the unit of allocation from a Chunk.  It is initialized
+// with the size of the requested allocation.  That size is overwritten
+// once the allocation returns.
+//
+// A Metablock may be reused by its SpaceManager but are never moved between
+// SpaceManagers.  There is no explicit link to the Metachunk
+// from which it was allocated.  Metablock may be deallocated and
+// put on a freelist but the space is never freed, rather
+// the Metachunk it is a part of will be deallocated when it's
+// associated class loader is collected.
+
+class Metablock VALUE_OBJ_CLASS_SPEC {
+  friend class VMStructs;
+ private:
+  // Used to align the allocation (see below).
+  union block_t {
+    void* _data[3];
+    struct header_t {
+      size_t _word_size;
+      Metablock* _next;
+      Metablock* _prev;
+    } _header;
+  } _block;
+  static size_t _min_block_byte_size;
+  static size_t _overhead;
+
+  typedef union block_t Block;
+  typedef struct header_t Header;
+  const Block* block() const { return &_block; }
+  const Block::header_t* header() const { return &(block()->_header); }
+ public:
+
+  static Metablock* initialize(MetaWord* p, size_t word_size);
+
+  // This places the body of the block at a 2 word boundary
+  // because every block starts on a 2 word boundary.  Work out
+  // how to make the body on a 2 word boundary if the block
+  // starts on a arbitrary boundary.  JJJ
+
+  size_t word_size() const  { return header()->_word_size; }
+  void set_word_size(size_t v) { _block._header._word_size = v; }
+  size_t size() const volatile { return _block._header._word_size; }
+  void set_size(size_t v) { _block._header._word_size = v; }
+  Metablock* next() const { return header()->_next; }
+  void set_next(Metablock* v) { _block._header._next = v; }
+  Metablock* prev() const { return header()->_prev; }
+  void set_prev(Metablock* v) { _block._header._prev = v; }
+
+  static size_t min_block_byte_size() { return _min_block_byte_size; }
+  static size_t overhead() { return _overhead; }
+
+  bool is_free()                 { return header()->_word_size != 0; }
+  void clear_next()              { set_next(NULL); }
+  void link_prev(Metablock* ptr) { set_prev(ptr); }
+  uintptr_t* end()              { return ((uintptr_t*) this) + size(); }
+  bool cantCoalesce() const     { return false; }
+  void link_next(Metablock* ptr) { set_next(ptr); }
+  void link_after(Metablock* ptr){
+    link_next(ptr);
+    if (ptr != NULL) ptr->link_prev(this);
+  }
+
+  // Should not be needed in a free list of Metablocks
+  void markNotFree()            { ShouldNotReachHere(); }
+
+  // Debug support
+#ifdef ASSERT
+  void* prev_addr() const { return (void*)&_block._header._prev; }
+  void* next_addr() const { return (void*)&_block._header._next; }
+  void* size_addr() const { return (void*)&_block._header._word_size; }
+#endif
+  bool verify_chunk_in_free_list(Metablock* tc) const { return true; }
+  bool verify_par_locked() { return true; }
+
+  void assert_is_mangled() const {/* Don't check "\*/}
+};
+#endif // SHARE_VM_MEMORY_METABLOCK_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/memory/metachunk.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+#ifndef SHARE_VM_MEMORY_METACHUNK_HPP
+#define SHARE_VM_MEMORY_METACHUNK_HPP
+
+//  Metachunk - Quantum of allocation from a Virtualspace
+//    Metachunks are reused (when freed are put on a global freelist) and
+//    have no permanent association to a SpaceManager.
+
+//            +--------------+ <- end
+//            |              |          --+       ---+
+//            |              |            | free     |
+//            |              |            |          |
+//            |              |            |          | capacity
+//            |              |            |          |
+//            |              | <- top   --+          |
+//            |              |           ---+        |
+//            |              |              | used   |
+//            |              |              |        |
+//            |              |              |        |
+//            +--------------+ <- bottom ---+     ---+
+
+class Metachunk VALUE_OBJ_CLASS_SPEC {
+  // link to support lists of chunks
+  Metachunk* _next;
+  Metachunk* _prev;
+
+  MetaWord* _bottom;
+  MetaWord* _end;
+  MetaWord* _top;
+  size_t _word_size;
+  // Used in a guarantee() so included in the Product builds
+  // even through it is only for debugging.
+  bool _is_free;
+
+  // Metachunks are allocated out of a MetadataVirtualSpace and
+  // and use some of its space to describe itself (plus alignment
+  // considerations).  Metadata is allocated in the rest of the chunk.
+  // This size is the overhead of maintaining the Metachunk within
+  // the space.
+  static size_t _overhead;
+
+  void set_bottom(MetaWord* v) { _bottom = v; }
+  void set_end(MetaWord* v) { _end = v; }
+  void set_top(MetaWord* v) { _top = v; }
+  void set_word_size(size_t v) { _word_size = v; }
+ public:
+#ifdef ASSERT
+  Metachunk() : _bottom(NULL), _end(NULL), _top(NULL), _is_free(false) {}
+#else
+  Metachunk() : _bottom(NULL), _end(NULL), _top(NULL) {}
+#endif
+
+  // Used to add a Metachunk to a list of Metachunks
+  void set_next(Metachunk* v) { _next = v; assert(v != this, "Boom");}
+  void set_prev(Metachunk* v) { _prev = v; assert(v != this, "Boom");}
+
+  MetaWord* allocate(size_t word_size);
+  static Metachunk* initialize(MetaWord* ptr, size_t word_size);
+
+  // Accessors
+  Metachunk* next() const { return _next; }
+  Metachunk* prev() const { return _prev; }
+  MetaWord* bottom() const { return _bottom; }
+  MetaWord* end() const { return _end; }
+  MetaWord* top() const { return _top; }
+  size_t word_size() const { return _word_size; }
+  size_t size() const volatile { return _word_size; }
+  void set_size(size_t v) { _word_size = v; }
+  bool is_free() { return _is_free; }
+  void set_is_free(bool v) { _is_free = v; }
+  static size_t overhead() { return _overhead; }
+  void clear_next()              { set_next(NULL); }
+  void link_prev(Metachunk* ptr) { set_prev(ptr); }
+  uintptr_t* end()              { return ((uintptr_t*) this) + size(); }
+  bool cantCoalesce() const     { return false; }
+  void link_next(Metachunk* ptr) { set_next(ptr); }
+  void link_after(Metachunk* ptr){
+    link_next(ptr);
+    if (ptr != NULL) ptr->link_prev(this);
+  }
+
+  // Reset top to bottom so chunk can be reused.
+  void reset_empty() { _top = (_bottom + _overhead); }
+  bool is_empty() { return _top == (_bottom + _overhead); }
+
+  // used (has been allocated)
+  // free (available for future allocations)
+  // capacity (total size of chunk)
+  size_t used_word_size();
+  size_t free_word_size();
+  size_t capacity_word_size();
+
+  // Debug support
+#ifdef ASSERT
+  void* prev_addr() const { return (void*)&_prev; }
+  void* next_addr() const { return (void*)&_next; }
+  void* size_addr() const { return (void*)&_word_size; }
+#endif
+  bool verify_chunk_in_free_list(Metachunk* tc) const { return true; }
+  bool verify_par_locked() { return true; }
+
+  void assert_is_mangled() const {/* Don't check "\*/}
+
+#ifdef ASSERT
+  void mangle();
+#endif // ASSERT
+
+  void print_on(outputStream* st) const;
+  void verify();
+};
+#endif  // SHARE_VM_MEMORY_METACHUNK_HPP
--- a/hotspot/src/share/vm/memory/metaspace.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/metaspace.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -24,9 +24,12 @@
 #include "precompiled.hpp"
 #include "gc_interface/collectedHeap.hpp"
 #include "memory/binaryTreeDictionary.hpp"
+#include "memory/freeList.hpp"
 #include "memory/collectorPolicy.hpp"
 #include "memory/filemap.hpp"
 #include "memory/freeList.hpp"
+#include "memory/metablock.hpp"
+#include "memory/metachunk.hpp"
 #include "memory/metaspace.hpp"
 #include "memory/metaspaceShared.hpp"
 #include "memory/resourceArea.hpp"
@@ -37,15 +40,8 @@
 #include "utilities/copy.hpp"
 #include "utilities/debug.hpp"
 
-// Define this macro to deallocate Metablock.  If not defined,
-// blocks are not yet deallocated and are only mangled.
-#undef DEALLOCATE_BLOCKS
-
-// Easily recognizable patterns
-// These patterns can be the same in 32bit or 64bit since
-// they only have to be easily recognizable.
-const void* metaspace_allocation_leader = (void*) 0X11111111;
-const void* metaspace_allocation_trailer = (void*) 0X77777777;
+typedef BinaryTreeDictionary<Metablock, FreeList> BlockTreeDictionary;
+typedef BinaryTreeDictionary<Metachunk, FreeList> ChunkTreeDictionary;
 
 // Parameters for stress mode testing
 const uint metadata_deallocate_a_lot_block = 10;
@@ -53,7 +49,6 @@
 size_t const allocation_from_dictionary_limit = 64 * K;
 const size_t metadata_chunk_initialize = 0xf7f7f7f7;
 const size_t metadata_deallocate = 0xf5f5f5f5;
-const size_t metadata_space_manager_allocate = 0xf3f3f3f3;
 
 MetaWord* last_allocated = 0;
 
@@ -62,11 +57,12 @@
   SmallIndex = 0,
   MediumIndex = 1,
   HumongousIndex = 2,
-  NumberOfFreeLists = 3
+  NumberOfFreeLists = 2,
+  NumberOfInUseLists = 3
 };
 
 static ChunkIndex next_chunk_index(ChunkIndex i) {
-  assert(i < NumberOfFreeLists, "Out of bound");
+  assert(i < NumberOfInUseLists, "Out of bound");
   return (ChunkIndex) (i+1);
 }
 
@@ -100,164 +96,13 @@
 // the Chunk after the header for the Chunk) where as Metachunks
 // point to space in a VirtualSpace.  To replace Metachunks with
 // Chunks, change Chunks so that they can be allocated out of a VirtualSpace.
-//
-
-// Metablock are the unit of allocation from a Chunk.  It contains
-// the size of the requested allocation in a debug build.
-// Also in a debug build it has a marker before and after the
-// body of the block. The address of the body is the address returned
-// by the allocation.
-//
-// Layout in a debug build.  In a product build only the body is present.
-//
-//     +-----------+-----------+------------+     +-----------+
-//     | word size | leader    | body       | ... | trailer   |
-//     +-----------+-----------+------------+     +-----------+
-//
-// A Metablock may be reused by its SpaceManager but are never moved between
-// SpaceManagers.  There is no explicit link to the Metachunk
-// from which it was allocated.  Metablock are not deallocated, rather
-// the Metachunk it is a part of will be deallocated when it's
-// associated class loader is collected.
-//
-// When the word size of a block is passed in to the deallocation
-// call the word size no longer needs to be part of a Metablock.
-
-class Metablock {
-  friend class VMStructs;
- private:
-  // Used to align the allocation (see below) and for debugging.
-#ifdef ASSERT
-  struct {
-    size_t _word_size;
-    void*  _leader;
-  } _header;
-  void* _data[1];
-#endif
-  static size_t _overhead;
-
+size_t Metablock::_min_block_byte_size = sizeof(Metablock);
 #ifdef ASSERT
-  void set_word_size(size_t v) { _header._word_size = v; }
-  void* leader() { return _header._leader; }
-  void* trailer() {
-    jlong index = (jlong) _header._word_size - sizeof(_header)/BytesPerWord - 1;
-    assert(index > 0, err_msg("Bad indexling of trailer %d", index));
-    void** ptr = &_data[index];
-    return *ptr;
-  }
-  void set_leader(void* v) { _header._leader = v; }
-  void set_trailer(void* v) {
-    void** ptr = &_data[_header._word_size - sizeof(_header)/BytesPerWord - 1];
-    *ptr = v;
-  }
- public:
-  size_t word_size() { return _header._word_size; }
-#endif
- public:
-
-  static Metablock* initialize(MetaWord* p, size_t word_size);
-
-  // This places the body of the block at a 2 word boundary
-  // because every block starts on a 2 word boundary.  Work out
-  // how to make the body on a 2 word boundary if the block
-  // starts on a arbitrary boundary.  JJJ
-
-#ifdef ASSERT
-  MetaWord* data() { return (MetaWord*) &_data[0]; }
+  size_t Metablock::_overhead =
+    Chunk::aligned_overhead_size(sizeof(Metablock)) / BytesPerWord;
 #else
-  MetaWord* data() { return (MetaWord*) this; }
-#endif
-  static Metablock* metablock_from_data(MetaWord* p) {
-#ifdef ASSERT
-    size_t word_offset = offset_of(Metablock, _data)/BytesPerWord;
-    Metablock* result = (Metablock*) (p - word_offset);
-    return result;
-#else
-    return (Metablock*) p;
+  size_t Metablock::_overhead = 0;
 #endif
-  }
-
-  static size_t overhead() { return _overhead; }
-  void verify();
-};
-
-//  Metachunk - Quantum of allocation from a Virtualspace
-//    Metachunks are reused (when freed are put on a global freelist) and
-//    have no permanent association to a SpaceManager.
-
-//            +--------------+ <- end
-//            |              |          --+       ---+
-//            |              |            | free     |
-//            |              |            |          |
-//            |              |            |          | capacity
-//            |              |            |          |
-//            |              | <- top   --+          |
-//            |              |           ---+        |
-//            |              |              | used   |
-//            |              |              |        |
-//            |              |              |        |
-//            +--------------+ <- bottom ---+     ---+
-
-class Metachunk VALUE_OBJ_CLASS_SPEC {
-  // link to support lists of chunks
-  Metachunk* _next;
-
-  MetaWord* _bottom;
-  MetaWord* _end;
-  MetaWord* _top;
-  size_t _word_size;
-
-  // Metachunks are allocated out of a MetadataVirtualSpace and
-  // and use some of its space to describe itself (plus alignment
-  // considerations).  Metadata is allocated in the rest of the chunk.
-  // This size is the overhead of maintaining the Metachunk within
-  // the space.
-  static size_t _overhead;
-
-  void set_bottom(MetaWord* v) { _bottom = v; }
-  void set_end(MetaWord* v) { _end = v; }
-  void set_top(MetaWord* v) { _top = v; }
-  void set_word_size(size_t v) { _word_size = v; }
- public:
-
-  // Used to add a Metachunk to a list of Metachunks
-  void set_next(Metachunk* v) { _next = v; assert(v != this, "Boom");}
-
-  Metablock* allocate(size_t word_size);
-  static Metachunk* initialize(MetaWord* ptr, size_t word_size);
-
-  // Accessors
-  Metachunk* next() const { return _next; }
-  MetaWord* bottom() const { return _bottom; }
-  MetaWord* end() const { return _end; }
-  MetaWord* top() const { return _top; }
-  size_t word_size() const { return _word_size; }
-  static size_t overhead() { return _overhead; }
-
-  // Reset top to bottom so chunk can be reused.
-  void reset_empty() { _top = (_bottom + _overhead); }
-  bool is_empty() { return _top == (_bottom + _overhead); }
-
-  // used (has been allocated)
-  // free (available for future allocations)
-  // capacity (total size of chunk)
-  size_t used_word_size();
-  size_t free_word_size();
-  size_t capacity_word_size();
-
-#ifdef ASSERT
-  void mangle() {
-    // Mangle the payload of the chunk and not the links that
-    // maintain list of chunks.
-    HeapWord* start = (HeapWord*)(bottom() + overhead());
-    size_t word_size = capacity_word_size() - overhead();
-    Copy::fill_to_words(start, word_size, metadata_chunk_initialize);
-  }
-#endif // ASSERT
-
-  void print_on(outputStream* st) const;
-  void verify();
-};
 
 
 // Pointer to list of Metachunks.
@@ -292,7 +137,10 @@
   //   SmallChunk
   //   MediumChunk
   //   HumongousChunk
-  ChunkList _free_chunks[3];
+  ChunkList _free_chunks[NumberOfFreeLists];
+
+  //   HumongousChunk
+  ChunkTreeDictionary _humongous_dictionary;
 
   // ChunkManager in all lists of this type
   size_t _free_chunks_total;
@@ -337,7 +185,9 @@
   }
   ChunkList* free_medium_chunks() { return &_free_chunks[1]; }
   ChunkList* free_small_chunks() { return &_free_chunks[0]; }
-  ChunkList* free_humongous_chunks() { return &_free_chunks[2]; }
+  ChunkTreeDictionary* humongous_dictionary() {
+    return &_humongous_dictionary;
+  }
 
   ChunkList* free_chunks(ChunkIndex index);
 
@@ -356,41 +206,35 @@
 
   void locked_print_free_chunks(outputStream* st);
   void locked_print_sum_free_chunks(outputStream* st);
+
+  void print_on(outputStream* st);
 };
 
 
 // Used to manage the free list of Metablocks (a block corresponds
 // to the allocation of a quantum of metadata).
 class BlockFreelist VALUE_OBJ_CLASS_SPEC {
-#ifdef DEALLOCATE_BLOCKS
-  BinaryTreeDictionary<Metablock>* _dictionary;
-#endif
-  static Metablock* initialize_free_chunk(Metablock* block, size_t word_size);
-
-#ifdef DEALLOCATE_BLOCKS
+  BlockTreeDictionary* _dictionary;
+  static Metablock* initialize_free_chunk(MetaWord* p, size_t word_size);
+
   // Accessors
-  BinaryTreeDictionary<Metablock>* dictionary() const { return _dictionary; }
-#endif
+  BlockTreeDictionary* dictionary() const { return _dictionary; }
 
  public:
   BlockFreelist();
   ~BlockFreelist();
 
   // Get and return a block to the free list
-  Metablock* get_block(size_t word_size);
-  void return_block(Metablock* block, size_t word_size);
-
-  size_t totalSize() {
-#ifdef DEALLOCATE_BLOCKS
-    if (dictionary() == NULL) {
-      return 0;
-    } else {
-      return dictionary()->totalSize();
-    }
-#else
+  MetaWord* get_block(size_t word_size);
+  void return_block(MetaWord* p, size_t word_size);
+
+  size_t total_size() {
+  if (dictionary() == NULL) {
     return 0;
-#endif
+  } else {
+    return dictionary()->total_size();
   }
+}
 
   void print_on(outputStream* st) const;
 };
@@ -600,7 +444,6 @@
   };
 };
 
-
 class Metadebug : AllStatic {
   // Debugging support for Metaspaces
   static int _deallocate_block_a_lot_count;
@@ -655,7 +498,7 @@
   // List of chunks in use by this SpaceManager.  Allocations
   // are done from the current chunk.  The list is used for deallocating
   // chunks when the SpaceManager is freed.
-  Metachunk* _chunks_in_use[NumberOfFreeLists];
+  Metachunk* _chunks_in_use[NumberOfInUseLists];
   Metachunk* _current_chunk;
 
   // Virtual space where allocation comes from.
@@ -700,24 +543,6 @@
   // Add chunk to the list of chunks in use
   void add_chunk(Metachunk* v, bool make_current);
 
-  // Debugging support
-  void verify_chunks_in_use_index(ChunkIndex index, Metachunk* v) {
-    switch (index) {
-    case 0:
-      assert(v->word_size() == SmallChunk, "Not a SmallChunk");
-      break;
-    case 1:
-      assert(v->word_size() == MediumChunk, "Not a MediumChunk");
-      break;
-    case 2:
-      assert(v->word_size() > MediumChunk, "Not a HumongousChunk");
-      break;
-    default:
-      assert(false, "Wrong list.");
-    }
-  }
-
- protected:
   Mutex* lock() const { return _lock; }
 
  public:
@@ -751,10 +576,10 @@
   MetaWord* allocate(size_t word_size);
 
   // Helper for allocations
-  Metablock* allocate_work(size_t word_size);
+  MetaWord* allocate_work(size_t word_size);
 
   // Returns a block to the per manager freelist
-  void deallocate(MetaWord* p);
+  void deallocate(MetaWord* p, size_t word_size);
 
   // Based on the allocation size and a minimum chunk size,
   // returned chunk size (for expanding space for chunk allocation).
@@ -763,7 +588,7 @@
   // Called when an allocation from the current chunk fails.
   // Gets a new chunk (may require getting a new virtual space),
   // and allocates from that chunk.
-  Metablock* grow_and_allocate(size_t word_size);
+  MetaWord* grow_and_allocate(size_t word_size);
 
   // debugging support.
 
@@ -780,6 +605,8 @@
 
 uint const SpaceManager::_small_chunk_limit = 4;
 
+
+
 const char* SpaceManager::_expand_lock_name =
   "SpaceManager chunk allocation lock";
 const int SpaceManager::_expand_lock_rank = Monitor::leaf - 1;
@@ -788,39 +615,26 @@
             SpaceManager::_expand_lock_name,
             Mutex::_allow_vm_block_flag);
 
-#ifdef ASSERT
-size_t Metablock::_overhead =
-  Chunk::aligned_overhead_size(sizeof(Metablock)) / BytesPerWord;
-#else
-size_t Metablock::_overhead = 0;
-#endif
 size_t Metachunk::_overhead =
   Chunk::aligned_overhead_size(sizeof(Metachunk)) / BytesPerWord;
 
 // New blocks returned by the Metaspace are zero initialized.
 // We should fix the constructors to not assume this instead.
 Metablock* Metablock::initialize(MetaWord* p, size_t word_size) {
+  if (p == NULL) {
+    return NULL;
+  }
+
   Metablock* result = (Metablock*) p;
 
   // Clear the memory
   Copy::fill_to_aligned_words((HeapWord*)result, word_size);
 #ifdef ASSERT
   result->set_word_size(word_size);
-  // Check after work size is set.
-  result->set_leader((void*) metaspace_allocation_leader);
-  result->set_trailer((void*) metaspace_allocation_trailer);
 #endif
   return result;
 }
 
-void Metablock::verify() {
-#ifdef ASSERT
-  assert(leader() == metaspace_allocation_leader &&
-         trailer() == metaspace_allocation_trailer,
-         "block has been corrupted");
-#endif
-}
-
 // Metachunk methods
 
 Metachunk* Metachunk::initialize(MetaWord* ptr, size_t word_size) {
@@ -843,18 +657,13 @@
 }
 
 
-Metablock* Metachunk::allocate(size_t word_size) {
-  Metablock* result = NULL;
+MetaWord* Metachunk::allocate(size_t word_size) {
+  MetaWord* result = NULL;
   // If available, bump the pointer to allocate.
   if (free_word_size() >= word_size) {
-    result = Metablock::initialize(_top, word_size);
+    result = _top;
     _top = _top + word_size;
   }
-#ifdef ASSERT
-  assert(result == NULL ||
-         result->word_size() == word_size,
-         "Block size is not set correctly");
-#endif
   return result;
 }
 
@@ -878,103 +687,85 @@
                bottom(), top(), end(), word_size());
 }
 
+#ifdef ASSERT
+void Metachunk::mangle() {
+  // Mangle the payload of the chunk and not the links that
+  // maintain list of chunks.
+  HeapWord* start = (HeapWord*)(bottom() + overhead());
+  size_t word_size = capacity_word_size() - overhead();
+  Copy::fill_to_words(start, word_size, metadata_chunk_initialize);
+}
+#endif // ASSERT
 
 void Metachunk::verify() {
 #ifdef ASSERT
   // Cannot walk through the blocks unless the blocks have
   // headers with sizes.
-  MetaWord* curr = bottom() + overhead();
-  while (curr < top()) {
-    Metablock* block = (Metablock*) curr;
-    size_t word_size = block->word_size();
-    block->verify();
-    curr = curr + word_size;
-  }
+  assert(_bottom <= _top &&
+         _top <= _end,
+         "Chunk has been smashed");
+  assert(SpaceManager::is_humongous(_word_size) ||
+         _word_size == SpaceManager::MediumChunk ||
+         _word_size == SpaceManager::SmallChunk,
+         "Chunk size is wrong");
 #endif
   return;
 }
 
 // BlockFreelist methods
 
-#ifdef DEALLOCATE_BLOCKS
 BlockFreelist::BlockFreelist() : _dictionary(NULL) {}
-#else
-BlockFreelist::BlockFreelist() {}
-#endif
 
 BlockFreelist::~BlockFreelist() {
-#ifdef DEALLOCATE_BLOCKS
   if (_dictionary != NULL) {
     if (Verbose && TraceMetadataChunkAllocation) {
       _dictionary->print_free_lists(gclog_or_tty);
     }
     delete _dictionary;
   }
-#endif
 }
 
-Metablock* BlockFreelist::initialize_free_chunk(Metablock* block, size_t word_size) {
-#ifdef DEALLOCATE_BLOCKS
-#ifdef ASSERT
-  assert(word_size = block->word_size(), "Wrong chunk size");
-#endif
-  Metablock* result = block;
-  result->setSize(word_size);
-  result->linkPrev(NULL);
-  result->linkNext(NULL);
-
-  return result;
-#else
-  ShouldNotReachHere();
+Metablock* BlockFreelist::initialize_free_chunk(MetaWord* p, size_t word_size) {
+  Metablock* block = (Metablock*) p;
+  block->set_word_size(word_size);
+  block->set_prev(NULL);
+  block->set_next(NULL);
+
   return block;
-#endif
 }
 
-void BlockFreelist::return_block(Metablock* block, size_t word_size) {
-#ifdef ASSERT
-  assert(word_size = block->word_size(), "Block size is wrong");;
-#endif
-  Metablock* free_chunk = initialize_free_chunk(block, word_size);
-#ifdef DEALLOCATE_BLOCKS
+void BlockFreelist::return_block(MetaWord* p, size_t word_size) {
+  Metablock* free_chunk = initialize_free_chunk(p, word_size);
   if (dictionary() == NULL) {
-   _dictionary = new BinaryTreeDictionary<Metablock>(false /* adaptive_freelists */);
+   _dictionary = new BlockTreeDictionary();
   }
-  dictionary()->returnChunk(free_chunk);
-#endif
+  dictionary()->return_chunk(free_chunk);
 }
 
-Metablock* BlockFreelist::get_block(size_t word_size) {
-#ifdef DEALLOCATE_BLOCKS
+MetaWord* BlockFreelist::get_block(size_t word_size) {
   if (dictionary() == NULL) {
     return NULL;
   }
 
-  Metablock* free_chunk =
-    dictionary()->getChunk(word_size, FreeBlockDictionary<Metablock>::exactly);
-#else
-  Metablock* free_chunk = NULL;
-#endif
-  if (free_chunk == NULL) {
+  if (word_size < TreeChunk<Metablock, FreeList>::min_size()) {
+    // Dark matter.  Too small for dictionary.
     return NULL;
   }
-  assert(free_chunk->word_size() == word_size, "Size of chunk is incorrect");
-  Metablock* block = Metablock::initialize((MetaWord*) free_chunk, word_size);
-#ifdef ASSERT
-  assert(block->word_size() == word_size, "Block size is not set correctly");
-#endif
-
-  return block;
+
+  Metablock* free_block =
+    dictionary()->get_chunk(word_size, FreeBlockDictionary<Metablock>::exactly);
+  if (free_block == NULL) {
+    return NULL;
+  }
+
+  return (MetaWord*) free_block;
 }
 
 void BlockFreelist::print_on(outputStream* st) const {
-#ifdef DEALLOCATE_BLOCKS
   if (dictionary() == NULL) {
     return;
   }
   dictionary()->print_free_lists(st);
-#else
-  return;
-#endif
 }
 
 // VirtualSpaceNode methods
@@ -1597,14 +1388,11 @@
         Metadebug::deallocate_block_a_lot_count() % MetaDataDeallocateALotInterval == 0 ) {
     Metadebug::set_deallocate_block_a_lot_count(0);
     for (uint i = 0; i < metadata_deallocate_a_lot_block; i++) {
-      Metablock* dummy_block = sm->allocate_work(raw_word_size);
+      MetaWord* dummy_block = sm->allocate_work(raw_word_size);
       if (dummy_block == 0) {
         break;
       }
-#ifdef ASSERT
-      assert(dummy_block->word_size() == raw_word_size, "Block size is not set correctly");
-#endif
-      sm->deallocate(dummy_block->data());
+      sm->deallocate(dummy_block, raw_word_size);
     }
   } else {
     Metadebug::inc_deallocate_block_a_lot_count();
@@ -1784,8 +1572,8 @@
 }
 
 void ChunkManager::locked_verify() {
+  locked_verify_free_chunks_count();
   locked_verify_free_chunks_total();
-  locked_verify_free_chunks_count();
 }
 
 void ChunkManager::locked_print_free_chunks(outputStream* st) {
@@ -1803,7 +1591,6 @@
   return &_free_chunks[index];
 }
 
-
 // These methods that sum the free chunk lists are used in printing
 // methods that are used in product builds.
 size_t ChunkManager::sum_free_chunks() {
@@ -1818,6 +1605,7 @@
 
     result = result + list->sum_list_capacity();
   }
+  result = result + humongous_dictionary()->total_size();
   return result;
 }
 
@@ -1831,6 +1619,7 @@
     }
     count = count + list->sum_list_count();
   }
+  count = count + humongous_dictionary()->total_free_blocks();
   return count;
 }
 
@@ -1875,23 +1664,24 @@
   assert_lock_strong(SpaceManager::expand_lock());
 
   locked_verify();
-  ChunkList* free_list = find_free_chunks_list(word_size);
-  assert(free_list != NULL, "Sanity check");
-
-  Metachunk* chunk = free_list->head();
-  debug_only(Metachunk* debug_head = chunk;)
-
-  if (chunk == NULL) {
-    return NULL;
-  }
-
-  Metachunk* prev_chunk = chunk;
-  if (chunk->word_size() == word_size) {
-    // Chunk is being removed from the chunks free list.
-    dec_free_chunks_total(chunk->capacity_word_size());
+
+  Metachunk* chunk = NULL;
+  if (!SpaceManager::is_humongous(word_size)) {
+    ChunkList* free_list = find_free_chunks_list(word_size);
+    assert(free_list != NULL, "Sanity check");
+
+    chunk = free_list->head();
+    debug_only(Metachunk* debug_head = chunk;)
+
+    if (chunk == NULL) {
+      return NULL;
+    }
+
     // Remove the chunk as the head of the list.
     free_list->set_head(chunk->next());
     chunk->set_next(NULL);
+    // Chunk has been removed from the chunks free list.
+    dec_free_chunks_total(chunk->capacity_word_size());
 
     if (TraceMetadataChunkAllocation && Verbose) {
       tty->print_cr("ChunkManager::free_chunks_get: free_list "
@@ -1899,79 +1689,24 @@
                     free_list, chunk, chunk->word_size());
     }
   } else {
-    assert(SpaceManager::is_humongous(word_size),
-      "Should only need to check humongous");
-    // This code to find the best fit is just for purposes of
-    // investigating the loss due to fragmentation on a humongous
-    // chunk.  It will be replace by a binaryTreeDictionary for
-    // the humongous chunks.
-    uint count = 0;
-    Metachunk* best_fit = NULL;
-    Metachunk* best_fit_prev = NULL;
-    while (chunk != NULL) {
-      count++;
-      if (chunk->word_size() < word_size) {
-        prev_chunk = chunk;
-        chunk = chunk->next();
-      } else if (chunk->word_size() == word_size) {
-        break;
-      } else {
-        if (best_fit == NULL ||
-            best_fit->word_size() > chunk->word_size()) {
-          best_fit_prev = prev_chunk;
-          best_fit = chunk;
-        }
-        prev_chunk = chunk;
-        chunk = chunk->next();
-      }
-    }
-      if (chunk == NULL) {
-        prev_chunk = best_fit_prev;
-        chunk = best_fit;
+    chunk = humongous_dictionary()->get_chunk(
+      word_size,
+      FreeBlockDictionary<Metachunk>::atLeast);
+
+    if (chunk != NULL) {
+      if (TraceMetadataHumongousAllocation) {
+        size_t waste = chunk->word_size() - word_size;
+        tty->print_cr("Free list allocate humongous chunk size " SIZE_FORMAT
+                      " for requested size " SIZE_FORMAT
+                      " waste " SIZE_FORMAT,
+                      chunk->word_size(), word_size, waste);
       }
-      if (chunk != NULL) {
-        if (TraceMetadataHumongousAllocation) {
-          size_t waste = chunk->word_size() - word_size;
-          tty->print_cr("Free list allocate humongous chunk size " SIZE_FORMAT
-                        " for requested size " SIZE_FORMAT
-                        " waste " SIZE_FORMAT
-                        " found at " SIZE_FORMAT " of " SIZE_FORMAT,
-                        chunk->word_size(), word_size, waste,
-                        count, free_list->sum_list_count());
-        }
-        // Chunk is being removed from the chunks free list.
-        dec_free_chunks_total(chunk->capacity_word_size());
-        // Remove the chunk if it is at the head of the list.
-        if (chunk == free_list->head()) {
-          free_list->set_head(chunk->next());
-
-          if (TraceMetadataHumongousAllocation) {
-            tty->print_cr("ChunkManager::free_chunks_get: humongous free_list "
-                          PTR_FORMAT " chunk " PTR_FORMAT " size " SIZE_FORMAT
-                          " new head " PTR_FORMAT,
-                          free_list, chunk, chunk->word_size(),
-                          free_list->head());
-          }
-        } else {
-          // Remove a chunk in the interior of the list
-          prev_chunk->set_next(chunk->next());
-
-          if (TraceMetadataHumongousAllocation) {
-            tty->print_cr("ChunkManager::free_chunks_get: humongous free_list "
-                          PTR_FORMAT " chunk " PTR_FORMAT " size " SIZE_FORMAT
-                          PTR_FORMAT "  prev " PTR_FORMAT " next " PTR_FORMAT,
-                          free_list, chunk, chunk->word_size(),
-                          prev_chunk, chunk->next());
-          }
-        }
-        chunk->set_next(NULL);
-      } else {
-        if (TraceMetadataHumongousAllocation) {
-          tty->print_cr("ChunkManager::free_chunks_get: New humongous chunk of size "
-                        SIZE_FORMAT,
-                        word_size);
-        }
-      }
+      // Chunk is being removed from the chunks free list.
+      dec_free_chunks_total(chunk->capacity_word_size());
+#ifdef ASSERT
+      chunk->set_is_free(false);
+#endif
+    }
   }
   locked_verify();
   return chunk;
@@ -2000,12 +1735,18 @@
   return chunk;
 }
 
+void ChunkManager::print_on(outputStream* out) {
+  if (PrintFLSStatistics != 0) {
+    humongous_dictionary()->report_statistics();
+  }
+}
+
 // SpaceManager methods
 
 size_t SpaceManager::sum_free_in_chunks_in_use() const {
   MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
   size_t free = 0;
-  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+  for (ChunkIndex i = SmallIndex; i < NumberOfInUseLists; i = next_chunk_index(i)) {
     Metachunk* chunk = chunks_in_use(i);
     while (chunk != NULL) {
       free += chunk->free_word_size();
@@ -2018,11 +1759,12 @@
 size_t SpaceManager::sum_waste_in_chunks_in_use() const {
   MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
   size_t result = 0;
-  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
-   // Count the free space in all the chunk but not the
-   // current chunk from which allocations are still being done.
+  for (ChunkIndex i = SmallIndex; i < NumberOfInUseLists; i = next_chunk_index(i)) {
+
+
    result += sum_waste_in_chunks_in_use(i);
   }
+
   return result;
 }
 
@@ -2033,10 +1775,10 @@
   // Count the free space in all the chunk but not the
   // current chunk from which allocations are still being done.
   if (chunk != NULL) {
-    while (chunk != NULL) {
-      if (chunk != current_chunk()) {
-        result += chunk->free_word_size();
-      }
+    Metachunk* prev = chunk;
+    while (chunk != NULL && chunk != current_chunk()) {
+      result += chunk->free_word_size();
+      prev = chunk;
       chunk = chunk->next();
       count++;
     }
@@ -2047,7 +1789,7 @@
 size_t SpaceManager::sum_capacity_in_chunks_in_use() const {
   MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
   size_t sum = 0;
-  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+  for (ChunkIndex i = SmallIndex; i < NumberOfInUseLists; i = next_chunk_index(i)) {
     Metachunk* chunk = chunks_in_use(i);
     while (chunk != NULL) {
       // Just changed this sum += chunk->capacity_word_size();
@@ -2061,9 +1803,10 @@
 
 size_t SpaceManager::sum_count_in_chunks_in_use() {
   size_t count = 0;
-  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+  for (ChunkIndex i = SmallIndex; i < NumberOfInUseLists; i = next_chunk_index(i)) {
     count = count + sum_count_in_chunks_in_use(i);
   }
+
   return count;
 }
 
@@ -2081,7 +1824,7 @@
 size_t SpaceManager::sum_used_in_chunks_in_use() const {
   MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
   size_t used = 0;
-  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+  for (ChunkIndex i = SmallIndex; i < NumberOfInUseLists; i = next_chunk_index(i)) {
     Metachunk* chunk = chunks_in_use(i);
     while (chunk != NULL) {
       used += chunk->used_word_size();
@@ -2139,15 +1882,13 @@
     gclog_or_tty->print_cr("  word_size " PTR_FORMAT, word_size);
     gclog_or_tty->print_cr("  chunk_word_size " PTR_FORMAT,
                            chunk_word_size);
-    gclog_or_tty->print_cr("    block overhead " PTR_FORMAT
-                           " chunk overhead " PTR_FORMAT,
-                           Metablock::overhead(),
+    gclog_or_tty->print_cr("    chunk overhead " PTR_FORMAT,
                            Metachunk::overhead());
   }
   return chunk_word_size;
 }
 
-Metablock* SpaceManager::grow_and_allocate(size_t word_size) {
+MetaWord* SpaceManager::grow_and_allocate(size_t word_size) {
   assert(vs_list()->current_virtual_space() != NULL,
          "Should have been set");
   assert(current_chunk() == NULL ||
@@ -2180,7 +1921,7 @@
 void SpaceManager::print_on(outputStream* st) const {
 
   for (ChunkIndex i = SmallIndex;
-       i < NumberOfFreeLists ;
+       i < NumberOfInUseLists ;
        i = next_chunk_index(i) ) {
     st->print_cr("  chunks_in_use " PTR_FORMAT " chunk size " PTR_FORMAT,
                  chunks_in_use(i),
@@ -2191,8 +1932,11 @@
                sum_waste_in_chunks_in_use(SmallIndex),
                sum_waste_in_chunks_in_use(MediumIndex),
                sum_waste_in_chunks_in_use(HumongousIndex));
-  // Nothing in them yet
-  // block_freelists()->print_on(st);
+  // block free lists
+  if (block_freelists() != NULL) {
+    st->print_cr("total in block free lists " SIZE_FORMAT,
+      block_freelists()->total_size());
+  }
 }
 
 SpaceManager::SpaceManager(Mutex* lock, VirtualSpaceList* vs_list) :
@@ -2200,7 +1944,7 @@
   _allocation_total(0),
   _lock(lock) {
   Metadebug::init_allocation_fail_alot_count();
-  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+  for (ChunkIndex i = SmallIndex; i < NumberOfInUseLists; i = next_chunk_index(i)) {
     _chunks_in_use[i] = NULL;
   }
   _current_chunk = NULL;
@@ -2262,22 +2006,24 @@
   // Humongous chunks are never the current chunk.
   Metachunk* humongous_chunks = chunks_in_use(HumongousIndex);
 
-  if (humongous_chunks != NULL) {
-    chunk_manager->free_humongous_chunks()->add_at_head(humongous_chunks);
-    set_chunks_in_use(HumongousIndex, NULL);
+  while (humongous_chunks != NULL) {
+#ifdef ASSERT
+    humongous_chunks->set_is_free(true);
+#endif
+    Metachunk* next_humongous_chunks = humongous_chunks->next();
+    chunk_manager->humongous_dictionary()->return_chunk(humongous_chunks);
+    humongous_chunks = next_humongous_chunks;
   }
+  set_chunks_in_use(HumongousIndex, NULL);
   chunk_manager->locked_verify();
 }
 
-void SpaceManager::deallocate(MetaWord* p) {
+void SpaceManager::deallocate(MetaWord* p, size_t word_size) {
   assert_lock_strong(_lock);
-  ShouldNotReachHere();  // Where is this needed.
-#ifdef DEALLOCATE_BLOCKS
-  Metablock* block = Metablock::metablock_from_data(p);
-  // This is expense but kept it until integration JJJ
-  assert(contains((address)block), "Block does not belong to this metaspace");
-  block_freelists()->return_block(block, word_size);
-#endif
+  size_t min_size = TreeChunk<Metablock, FreeList>::min_size();
+  assert(word_size >= min_size,
+    err_msg("Should not deallocate dark matter " SIZE_FORMAT, word_size));
+  block_freelists()->return_block(p, word_size);
 }
 
 // Adds a chunk to the list of chunks in use.
@@ -2366,50 +2112,40 @@
 MetaWord* SpaceManager::allocate(size_t word_size) {
   MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
 
-  size_t block_overhead = Metablock::overhead();
   // If only the dictionary is going to be used (i.e., no
   // indexed free list), then there is a minimum size requirement.
   // MinChunkSize is a placeholder for the real minimum size JJJ
-  size_t byte_size_with_overhead = (word_size + block_overhead) * BytesPerWord;
-#ifdef DEALLOCATE_BLOCKS
-  size_t raw_bytes_size = MAX2(ARENA_ALIGN(byte_size_with_overhead),
-                               MinChunkSize * BytesPerWord);
-#else
-  size_t raw_bytes_size = ARENA_ALIGN(byte_size_with_overhead);
-#endif
+  size_t byte_size = word_size * BytesPerWord;
+
+  size_t byte_size_with_overhead = byte_size + Metablock::overhead();
+
+  size_t raw_bytes_size = MAX2(byte_size_with_overhead,
+                               Metablock::min_block_byte_size());
+  raw_bytes_size = ARENA_ALIGN(raw_bytes_size);
   size_t raw_word_size = raw_bytes_size / BytesPerWord;
   assert(raw_word_size * BytesPerWord == raw_bytes_size, "Size problem");
 
   BlockFreelist* fl =  block_freelists();
-  Metablock* block = NULL;
+  MetaWord* p = NULL;
   // Allocation from the dictionary is expensive in the sense that
   // the dictionary has to be searched for a size.  Don't allocate
   // from the dictionary until it starts to get fat.  Is this
   // a reasonable policy?  Maybe an skinny dictionary is fast enough
   // for allocations.  Do some profiling.  JJJ
-  if (fl->totalSize() > allocation_from_dictionary_limit) {
-    block = fl->get_block(raw_word_size);
+  if (fl->total_size() > allocation_from_dictionary_limit) {
+    p = fl->get_block(raw_word_size);
   }
-  if (block == NULL) {
-    block = allocate_work(raw_word_size);
-    if (block == NULL) {
-      return NULL;
-    }
+  if (p == NULL) {
+    p = allocate_work(raw_word_size);
   }
   Metadebug::deallocate_block_a_lot(this, raw_word_size);
 
-  // Push the allocation past the word containing the size and leader.
-#ifdef ASSERT
-  MetaWord* result =  block->data();
-  return result;
-#else
-  return (MetaWord*) block;
-#endif
+  return p;
 }
 
 // Returns the address of spaced allocated for "word_size".
 // This methods does not know about blocks (Metablocks)
-Metablock* SpaceManager::allocate_work(size_t word_size) {
+MetaWord* SpaceManager::allocate_work(size_t word_size) {
   assert_lock_strong(_lock);
 #ifdef ASSERT
   if (Metadebug::test_metadata_failure()) {
@@ -2417,7 +2153,7 @@
   }
 #endif
   // Is there space in the current chunk?
-  Metablock* result = NULL;
+  MetaWord* result = NULL;
 
   // For DumpSharedSpaces, only allocate out of the current chunk which is
   // never null because we gave it the size we wanted.   Caller reports out
@@ -2436,8 +2172,8 @@
   }
   if (result > 0) {
     inc_allocation_total(word_size);
-    assert(result != (Metablock*) chunks_in_use(MediumIndex), "Head of the list is being allocated");
-    assert(result->word_size() == word_size, "Size not set correctly");
+    assert(result != (MetaWord*) chunks_in_use(MediumIndex),
+           "Head of the list is being allocated");
   }
 
   return result;
@@ -2447,13 +2183,13 @@
   // If there are blocks in the dictionary, then
   // verfication of chunks does not work since
   // being in the dictionary alters a chunk.
-  if (block_freelists()->totalSize() == 0) {
+  if (block_freelists()->total_size() == 0) {
     // Skip the small chunks because their next link points to
     // medium chunks.  This is because the small chunk is the
     // current chunk (for allocations) until it is full and the
     // the addition of the next chunk does not NULL the next
     // like of the small chunk.
-    for (ChunkIndex i = MediumIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+    for (ChunkIndex i = MediumIndex; i < NumberOfInUseLists; i = next_chunk_index(i)) {
       Metachunk* curr = chunks_in_use(i);
       while (curr != NULL) {
         curr->verify();
@@ -2492,7 +2228,7 @@
 
   // Add up statistics for all chunks in this SpaceManager.
   for (ChunkIndex index = SmallIndex;
-       index < NumberOfFreeLists;
+       index < NumberOfInUseLists;
        index = next_chunk_index(index)) {
     for (Metachunk* curr = chunks_in_use(index);
          curr != NULL;
@@ -2521,7 +2257,7 @@
 #ifdef ASSERT
 void SpaceManager::mangle_freed_chunks() {
   for (ChunkIndex index = SmallIndex;
-       index < NumberOfFreeLists;
+       index < NumberOfInUseLists;
        index = next_chunk_index(index)) {
     for (Metachunk* curr = chunks_in_use(index);
          curr != NULL;
@@ -2833,13 +2569,12 @@
   }
 }
 
-
 MetaWord* Metaspace::allocate(size_t word_size, MetadataType mdtype) {
   // DumpSharedSpaces doesn't use class metadata area (yet)
   if (mdtype == ClassType && !DumpSharedSpaces) {
-    return class_vsm()->allocate(word_size);
+    return  class_vsm()->allocate(word_size);
   } else {
-    return vsm()->allocate(word_size);
+    return  vsm()->allocate(word_size);
   }
 }
 
@@ -2853,6 +2588,7 @@
     gclog_or_tty->print_cr("Increase capacity to GC from " SIZE_FORMAT
       " to " SIZE_FORMAT, before_inc, MetaspaceGC::capacity_until_GC());
   }
+
   result = allocate(word_size, mdtype);
 
   return result;
@@ -2889,37 +2625,39 @@
 void Metaspace::deallocate(MetaWord* ptr, size_t word_size, bool is_class) {
   if (SafepointSynchronize::is_at_safepoint()) {
     assert(Thread::current()->is_VM_thread(), "should be the VM thread");
-    // Don't take lock
-#ifdef DEALLOCATE_BLOCKS
-    if (is_class) {
-      class_vsm()->deallocate(ptr);
-    } else {
-      vsm()->deallocate(ptr);
+    // Don't take Heap_lock
+    MutexLocker ml(vsm()->lock());
+    if (word_size < TreeChunk<Metablock, FreeList>::min_size()) {
+      // Dark matter.  Too small for dictionary.
+#ifdef ASSERT
+      Copy::fill_to_words((HeapWord*)ptr, word_size, 0xf5f5f5f5);
+#endif
+      return;
     }
-#else
-#ifdef ASSERT
-    Copy::fill_to_words((HeapWord*)ptr, word_size, metadata_deallocate);
-#endif
-#endif
-
+    if (is_class) {
+       class_vsm()->deallocate(ptr, word_size);
+    } else {
+      vsm()->deallocate(ptr, word_size);
+    }
   } else {
     MutexLocker ml(vsm()->lock());
 
-#ifdef DEALLOCATE_BLOCKS
-    if (is_class) {
-      class_vsm()->deallocate(ptr);
-    } else {
-      vsm()->deallocate(ptr);
+    if (word_size < TreeChunk<Metablock, FreeList>::min_size()) {
+      // Dark matter.  Too small for dictionary.
+#ifdef ASSERT
+      Copy::fill_to_words((HeapWord*)ptr, word_size, 0xf5f5f5f5);
+#endif
+      return;
     }
-#else
-#ifdef ASSERT
-    Copy::fill_to_words((HeapWord*)ptr, word_size, metadata_deallocate);
-#endif
-#endif
+    if (is_class) {
+      class_vsm()->deallocate(ptr, word_size);
+    } else {
+      vsm()->deallocate(ptr, word_size);
+    }
   }
 }
 
-MetaWord* Metaspace::allocate(ClassLoaderData* loader_data, size_t word_size,
+Metablock* Metaspace::allocate(ClassLoaderData* loader_data, size_t word_size,
                               bool read_only, MetadataType mdtype, TRAPS) {
   if (HAS_PENDING_EXCEPTION) {
     assert(false, "Should not allocate with exception pending");
@@ -2943,7 +2681,7 @@
     if (result == NULL) {
       report_out_of_shared_space(read_only ? SharedReadOnly : SharedReadWrite);
     }
-    return result;
+    return Metablock::initialize(result, word_size);
   }
 
   result = loader_data->metaspace_non_null()->allocate(word_size, mdtype);
@@ -2951,7 +2689,7 @@
   if (result == NULL) {
     // Try to clean out some memory and retry.
     result =
-    Universe::heap()->collector_policy()->satisfy_failed_metadata_allocation(
+      Universe::heap()->collector_policy()->satisfy_failed_metadata_allocation(
         loader_data, word_size, mdtype);
 
     // If result is still null, we are out of memory.
@@ -2967,7 +2705,7 @@
       THROW_OOP_0(Universe::out_of_memory_error_perm_gen());
     }
   }
-  return result;
+  return Metablock::initialize(result, word_size);
 }
 
 void Metaspace::print_on(outputStream* out) const {
--- a/hotspot/src/share/vm/memory/metaspace.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/metaspace.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -57,12 +57,10 @@
 //
 
 class ClassLoaderData;
+class Metablock;
 class MetaWord;
 class Mutex;
 class outputStream;
-class FreeChunk;
-template <class Chunk_t> class FreeList;
-template <class Chunk_t> class BinaryTreeDictionary;
 class SpaceManager;
 
 // Metaspaces each have a  SpaceManager and allocations
@@ -128,7 +126,7 @@
   size_t capacity_words(MetadataType mdtype) const;
   size_t waste_words(MetadataType mdtype) const;
 
-  static MetaWord* allocate(ClassLoaderData* loader_data, size_t size,
+  static Metablock* allocate(ClassLoaderData* loader_data, size_t size,
                             bool read_only, MetadataType mdtype, TRAPS);
   void deallocate(MetaWord* ptr, size_t byte_size, bool is_class);
 
--- a/hotspot/src/share/vm/memory/metaspaceShared.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/metaspaceShared.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -663,8 +663,8 @@
   if (_ro_base == NULL || _rw_base == NULL) {
     return false;
   } else {
-    return ((p > _ro_base && p < (_ro_base + SharedReadOnlySize)) ||
-            (p > _rw_base && p < (_rw_base + SharedReadWriteSize)));
+    return ((p >= _ro_base && p < (_ro_base + SharedReadOnlySize)) ||
+            (p >= _rw_base && p < (_rw_base + SharedReadWriteSize)));
   }
 }
 
@@ -693,14 +693,6 @@
   ReservedSpace shared_rs = mapinfo->reserve_shared_memory();
   if (!shared_rs.is_reserved()) return false;
 
-  // Split reserved memory into pieces (windows needs this)
-  ReservedSpace ro_rs   = shared_rs.first_part(SharedReadOnlySize);
-  ReservedSpace tmp_rs1 = shared_rs.last_part(SharedReadOnlySize);
-  ReservedSpace rw_rs   = tmp_rs1.first_part(SharedReadWriteSize);
-  ReservedSpace tmp_rs2 = tmp_rs1.last_part(SharedReadWriteSize);
-  ReservedSpace md_rs   = tmp_rs2.first_part(SharedMiscDataSize);
-  ReservedSpace mc_rs   = tmp_rs2.last_part(SharedMiscDataSize);
-
   // Map each shared region
   if ((_ro_base = mapinfo->map_region(ro)) != NULL &&
       (_rw_base = mapinfo->map_region(rw)) != NULL &&
--- a/hotspot/src/share/vm/memory/resourceArea.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/memory/resourceArea.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -127,15 +127,21 @@
   void reset_to_mark() {
     if (UseMallocOnly) free_malloced_objects();
 
-    if( _chunk->next() )        // Delete later chunks
+    if( _chunk->next() ) {       // Delete later chunks
+      // reset arena size before delete chunks. Otherwise, the total
+      // arena size could exceed total chunk size
+      assert(_area->size_in_bytes() > size_in_bytes(), "Sanity check");
+      _area->set_size_in_bytes(size_in_bytes());
       _chunk->next_chop();
+    } else {
+      assert(_area->size_in_bytes() == size_in_bytes(), "Sanity check");
+    }
     _area->_chunk = _chunk;     // Roll back arena to saved chunk
     _area->_hwm = _hwm;
     _area->_max = _max;
 
     // clear out this chunk (to detect allocation bugs)
     if (ZapResourceArea) memset(_hwm, badResourceValue, _max - _hwm);
-    _area->set_size_in_bytes(size_in_bytes());
   }
 
   ~ResourceMark() {
@@ -219,15 +225,21 @@
   void reset_to_mark() {
     if (UseMallocOnly) free_malloced_objects();
 
-    if( _chunk->next() )        // Delete later chunks
+    if( _chunk->next() ) {        // Delete later chunks
+      // reset arena size before delete chunks. Otherwise, the total
+      // arena size could exceed total chunk size
+      assert(_area->size_in_bytes() > size_in_bytes(), "Sanity check");
+      _area->set_size_in_bytes(size_in_bytes());
       _chunk->next_chop();
+    } else {
+      assert(_area->size_in_bytes() == size_in_bytes(), "Sanity check");
+    }
     _area->_chunk = _chunk;     // Roll back arena to saved chunk
     _area->_hwm = _hwm;
     _area->_max = _max;
 
     // clear out this chunk (to detect allocation bugs)
     if (ZapResourceArea) memset(_hwm, badResourceValue, _max - _hwm);
-    _area->set_size_in_bytes(size_in_bytes());
   }
 
   ~DeoptResourceMark() {
--- a/hotspot/src/share/vm/oops/method.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/oops/method.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -1155,8 +1155,12 @@
 vmSymbols::SID Method::klass_id_for_intrinsics(Klass* holder) {
   // if loader is not the default loader (i.e., != NULL), we can't know the intrinsics
   // because we are not loading from core libraries
-  if (InstanceKlass::cast(holder)->class_loader() != NULL)
+  // exception: the AES intrinsics come from lib/ext/sunjce_provider.jar
+  // which does not use the class default class loader so we check for its loader here
+  if ((InstanceKlass::cast(holder)->class_loader() != NULL) &&
+       InstanceKlass::cast(holder)->class_loader()->klass()->name() != vmSymbols::sun_misc_Launcher_ExtClassLoader()) {
     return vmSymbols::NO_SID;   // regardless of name, no intrinsics here
+  }
 
   // see if the klass name is well-known:
   Symbol* klass_name = InstanceKlass::cast(holder)->name();
--- a/hotspot/src/share/vm/opto/c2_globals.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -439,6 +439,9 @@
   product(bool, DoEscapeAnalysis, true,                                     \
           "Perform escape analysis")                                        \
                                                                             \
+  develop(bool, ExitEscapeAnalysisOnTimeout, true,                          \
+          "Exit or throw assert in EA when it reaches time limit")          \
+                                                                            \
   notproduct(bool, PrintEscapeAnalysis, false,                              \
           "Print the results of escape analysis")                           \
                                                                             \
--- a/hotspot/src/share/vm/opto/callGenerator.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/callGenerator.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -670,6 +670,129 @@
 }
 
 
+//------------------------PredictedIntrinsicGenerator------------------------------
+// Internal class which handles all predicted Intrinsic calls.
+class PredictedIntrinsicGenerator : public CallGenerator {
+  CallGenerator* _intrinsic;
+  CallGenerator* _cg;
+
+public:
+  PredictedIntrinsicGenerator(CallGenerator* intrinsic,
+                              CallGenerator* cg)
+    : CallGenerator(cg->method())
+  {
+    _intrinsic = intrinsic;
+    _cg        = cg;
+  }
+
+  virtual bool      is_virtual()   const    { return true; }
+  virtual bool      is_inlined()   const    { return true; }
+  virtual bool      is_intrinsic() const    { return true; }
+
+  virtual JVMState* generate(JVMState* jvms);
+};
+
+
+CallGenerator* CallGenerator::for_predicted_intrinsic(CallGenerator* intrinsic,
+                                                      CallGenerator* cg) {
+  return new PredictedIntrinsicGenerator(intrinsic, cg);
+}
+
+
+JVMState* PredictedIntrinsicGenerator::generate(JVMState* jvms) {
+  GraphKit kit(jvms);
+  PhaseGVN& gvn = kit.gvn();
+
+  CompileLog* log = kit.C->log();
+  if (log != NULL) {
+    log->elem("predicted_intrinsic bci='%d' method='%d'",
+              jvms->bci(), log->identify(method()));
+  }
+
+  Node* slow_ctl = _intrinsic->generate_predicate(kit.sync_jvms());
+  if (kit.failing())
+    return NULL;  // might happen because of NodeCountInliningCutoff
+
+  SafePointNode* slow_map = NULL;
+  JVMState* slow_jvms;
+  if (slow_ctl != NULL) {
+    PreserveJVMState pjvms(&kit);
+    kit.set_control(slow_ctl);
+    if (!kit.stopped()) {
+      slow_jvms = _cg->generate(kit.sync_jvms());
+      if (kit.failing())
+        return NULL;  // might happen because of NodeCountInliningCutoff
+      assert(slow_jvms != NULL, "must be");
+      kit.add_exception_states_from(slow_jvms);
+      kit.set_map(slow_jvms->map());
+      if (!kit.stopped())
+        slow_map = kit.stop();
+    }
+  }
+
+  if (kit.stopped()) {
+    // Predicate is always false.
+    kit.set_jvms(slow_jvms);
+    return kit.transfer_exceptions_into_jvms();
+  }
+
+  // Generate intrinsic code:
+  JVMState* new_jvms = _intrinsic->generate(kit.sync_jvms());
+  if (new_jvms == NULL) {
+    // Intrinsic failed, so use slow code or make a direct call.
+    if (slow_map == NULL) {
+      CallGenerator* cg = CallGenerator::for_direct_call(method());
+      new_jvms = cg->generate(kit.sync_jvms());
+    } else {
+      kit.set_jvms(slow_jvms);
+      return kit.transfer_exceptions_into_jvms();
+    }
+  }
+  kit.add_exception_states_from(new_jvms);
+  kit.set_jvms(new_jvms);
+
+  // Need to merge slow and fast?
+  if (slow_map == NULL) {
+    // The fast path is the only path remaining.
+    return kit.transfer_exceptions_into_jvms();
+  }
+
+  if (kit.stopped()) {
+    // Intrinsic method threw an exception, so it's just the slow path after all.
+    kit.set_jvms(slow_jvms);
+    return kit.transfer_exceptions_into_jvms();
+  }
+
+  // Finish the diamond.
+  kit.C->set_has_split_ifs(true); // Has chance for split-if optimization
+  RegionNode* region = new (kit.C) RegionNode(3);
+  region->init_req(1, kit.control());
+  region->init_req(2, slow_map->control());
+  kit.set_control(gvn.transform(region));
+  Node* iophi = PhiNode::make(region, kit.i_o(), Type::ABIO);
+  iophi->set_req(2, slow_map->i_o());
+  kit.set_i_o(gvn.transform(iophi));
+  kit.merge_memory(slow_map->merged_memory(), region, 2);
+  uint tos = kit.jvms()->stkoff() + kit.sp();
+  uint limit = slow_map->req();
+  for (uint i = TypeFunc::Parms; i < limit; i++) {
+    // Skip unused stack slots; fast forward to monoff();
+    if (i == tos) {
+      i = kit.jvms()->monoff();
+      if( i >= limit ) break;
+    }
+    Node* m = kit.map()->in(i);
+    Node* n = slow_map->in(i);
+    if (m != n) {
+      const Type* t = gvn.type(m)->meet(gvn.type(n));
+      Node* phi = PhiNode::make(region, m, t);
+      phi->set_req(2, n);
+      kit.map()->set_req(i, gvn.transform(phi));
+    }
+  }
+  return kit.transfer_exceptions_into_jvms();
+}
+
 //-------------------------UncommonTrapCallGenerator-----------------------------
 // Internal class which handles all out-of-line calls checking receiver type.
 class UncommonTrapCallGenerator : public CallGenerator {
--- a/hotspot/src/share/vm/opto/callGenerator.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/callGenerator.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -143,6 +143,9 @@
   // Registry for intrinsics:
   static CallGenerator* for_intrinsic(ciMethod* m);
   static void register_intrinsic(ciMethod* m, CallGenerator* cg);
+  static CallGenerator* for_predicted_intrinsic(CallGenerator* intrinsic,
+                                                CallGenerator* cg);
+  virtual Node* generate_predicate(JVMState* jvms) { return NULL; };
 
   static void print_inlining(ciMethod* callee, int inline_level, int bci, const char* msg) {
     if (PrintInlining)
--- a/hotspot/src/share/vm/opto/compile.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/compile.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -3047,9 +3047,9 @@
   case T_LONG:
   case T_DOUBLE:  return (_v._value.j == other._v._value.j);
   case T_OBJECT:
-  case T_METADATA: return (_v._metadata == other._v._metadata);
   case T_ADDRESS: return (_v._value.l == other._v._value.l);
   case T_VOID:    return (_v._value.l == other._v._value.l);  // jump-table entries
+  case T_METADATA: return (_v._metadata == other._v._metadata);
   default: ShouldNotReachHere();
   }
   return false;
--- a/hotspot/src/share/vm/opto/compile.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/compile.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -149,7 +149,7 @@
   private:
     BasicType _type;
     union {
-    jvalue    _value;
+      jvalue    _value;
       Metadata* _metadata;
     } _v;
     int       _offset;         // offset of this constant (in bytes) relative to the constant table base.
--- a/hotspot/src/share/vm/opto/doCall.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/doCall.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -107,7 +107,17 @@
   // intrinsics handle strict f.p. correctly.
   if (allow_inline && allow_intrinsics) {
     CallGenerator* cg = find_intrinsic(callee, call_is_virtual);
-    if (cg != NULL)  return cg;
+    if (cg != NULL) {
+      if (cg->is_predicted()) {
+        // Code without intrinsic but, hopefully, inlined.
+        CallGenerator* inline_cg = this->call_generator(callee,
+              vtable_index, call_is_virtual, jvms, allow_inline, prof_factor, false);
+        if (inline_cg != NULL) {
+          cg = CallGenerator::for_predicted_intrinsic(cg, inline_cg);
+        }
+      }
+      return cg;
+    }
   }
 
   // Do method handle calls.
--- a/hotspot/src/share/vm/opto/escape.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/escape.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -893,12 +893,16 @@
                                        arg_has_oops && (i > TypeFunc::Parms);
 #ifdef ASSERT
           if (!(is_arraycopy ||
-                call->as_CallLeaf()->_name != NULL &&
-                (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
-                 strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ))
-          ) {
+                (call->as_CallLeaf()->_name != NULL &&
+                 (strcmp(call->as_CallLeaf()->_name, "g1_wb_pre")  == 0 ||
+                  strcmp(call->as_CallLeaf()->_name, "g1_wb_post") == 0 ||
+                  strcmp(call->as_CallLeaf()->_name, "aescrypt_encryptBlock") == 0 ||
+                  strcmp(call->as_CallLeaf()->_name, "aescrypt_decryptBlock") == 0 ||
+                  strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_encryptAESCrypt") == 0 ||
+                  strcmp(call->as_CallLeaf()->_name, "cipherBlockChaining_decryptAESCrypt") == 0)
+                  ))) {
             call->dump();
-            assert(false, "EA: unexpected CallLeaf");
+            fatal(err_msg_res("EA unexpected CallLeaf %s", call->as_CallLeaf()->_name));
           }
 #endif
           // Always process arraycopy's destination object since
@@ -1080,7 +1084,7 @@
       C->log()->text("%s", (iterations >= CG_BUILD_ITER_LIMIT) ? "iterations" : "time");
       C->log()->end_elem(" limit'");
     }
-    assert(false, err_msg_res("infinite EA connection graph build (%f sec, %d iterations) with %d nodes and worklist size %d",
+    assert(ExitEscapeAnalysisOnTimeout, err_msg_res("infinite EA connection graph build (%f sec, %d iterations) with %d nodes and worklist size %d",
            time.seconds(), iterations, nodes_size(), ptnodes_worklist.length()));
     // Possible infinite build_connection_graph loop,
     // bailout (no changes to ideal graph were made).
--- a/hotspot/src/share/vm/opto/library_call.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -44,18 +44,22 @@
  public:
  private:
   bool             _is_virtual;
+  bool             _is_predicted;
   vmIntrinsics::ID _intrinsic_id;
 
  public:
-  LibraryIntrinsic(ciMethod* m, bool is_virtual, vmIntrinsics::ID id)
+  LibraryIntrinsic(ciMethod* m, bool is_virtual, bool is_predicted, vmIntrinsics::ID id)
     : InlineCallGenerator(m),
       _is_virtual(is_virtual),
+      _is_predicted(is_predicted),
       _intrinsic_id(id)
   {
   }
   virtual bool is_intrinsic() const { return true; }
   virtual bool is_virtual()   const { return _is_virtual; }
+  virtual bool is_predicted()   const { return _is_predicted; }
   virtual JVMState* generate(JVMState* jvms);
+  virtual Node* generate_predicate(JVMState* jvms);
   vmIntrinsics::ID intrinsic_id() const { return _intrinsic_id; }
 };
 
@@ -83,6 +87,7 @@
   int               arg_size()  const    { return callee()->arg_size(); }
 
   bool try_to_inline();
+  Node* try_to_predicate();
 
   // Helper functions to inline natives
   void push_result(RegionNode* region, PhiNode* value);
@@ -148,6 +153,7 @@
   CallJavaNode* generate_method_call_virtual(vmIntrinsics::ID method_id) {
     return generate_method_call(method_id, true, false);
   }
+  Node * load_field_from_object(Node * fromObj, const char * fieldName, const char * fieldTypeString, bool is_exact, bool is_static);
 
   Node* make_string_method_node(int opcode, Node* str1_start, Node* cnt1, Node* str2_start, Node* cnt2);
   Node* make_string_method_node(int opcode, Node* str1, Node* str2);
@@ -253,6 +259,10 @@
   bool inline_reverseBytes(vmIntrinsics::ID id);
 
   bool inline_reference_get();
+  bool inline_aescrypt_Block(vmIntrinsics::ID id);
+  bool inline_cipherBlockChaining_AESCrypt(vmIntrinsics::ID id);
+  Node* inline_cipherBlockChaining_AESCrypt_predicate(bool decrypting);
+  Node* get_key_start_from_aescrypt_object(Node* aescrypt_object);
 };
 
 
@@ -306,6 +316,8 @@
     }
   }
 
+  bool is_predicted = false;
+
   switch (id) {
   case vmIntrinsics::_compareTo:
     if (!SpecialStringCompareTo)  return NULL;
@@ -413,6 +425,18 @@
     break;
 #endif
 
+  case vmIntrinsics::_aescrypt_encryptBlock:
+  case vmIntrinsics::_aescrypt_decryptBlock:
+    if (!UseAESIntrinsics) return NULL;
+    break;
+
+  case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt:
+  case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt:
+    if (!UseAESIntrinsics) return NULL;
+    // these two require the predicated logic
+    is_predicted = true;
+    break;
+
  default:
     assert(id <= vmIntrinsics::LAST_COMPILER_INLINE, "caller responsibility");
     assert(id != vmIntrinsics::_Object_init && id != vmIntrinsics::_invoke, "enum out of order?");
@@ -444,7 +468,7 @@
     if (!InlineUnsafeOps)  return NULL;
   }
 
-  return new LibraryIntrinsic(m, is_virtual, (vmIntrinsics::ID) id);
+  return new LibraryIntrinsic(m, is_virtual, is_predicted, (vmIntrinsics::ID) id);
 }
 
 //----------------------register_library_intrinsics-----------------------
@@ -496,6 +520,47 @@
   return NULL;
 }
 
+Node* LibraryIntrinsic::generate_predicate(JVMState* jvms) {
+  LibraryCallKit kit(jvms, this);
+  Compile* C = kit.C;
+  int nodes = C->unique();
+#ifndef PRODUCT
+  assert(is_predicted(), "sanity");
+  if ((PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) && Verbose) {
+    char buf[1000];
+    const char* str = vmIntrinsics::short_name_as_C_string(intrinsic_id(), buf, sizeof(buf));
+    tty->print_cr("Predicate for intrinsic %s", str);
+  }
+#endif
+
+  Node* slow_ctl = kit.try_to_predicate();
+  if (!kit.failing()) {
+    if (C->log()) {
+      C->log()->elem("predicate_intrinsic id='%s'%s nodes='%d'",
+                     vmIntrinsics::name_at(intrinsic_id()),
+                     (is_virtual() ? " virtual='1'" : ""),
+                     C->unique() - nodes);
+    }
+    return slow_ctl; // Could be NULL if the check folds.
+  }
+
+  // The intrinsic bailed out
+  if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) {
+    if (jvms->has_method()) {
+      // Not a root compile.
+      const char* msg = "failed to generate predicate for intrinsic";
+      CompileTask::print_inlining(kit.callee(), jvms->depth() - 1, kit.bci(), msg);
+    } else {
+      // Root compile
+      tty->print("Did not generate predicate for intrinsic %s%s at bci:%d in",
+               vmIntrinsics::name_at(intrinsic_id()),
+               (is_virtual() ? " (virtual)" : ""), kit.bci());
+    }
+  }
+  C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_failed);
+  return NULL;
+}
+
 bool LibraryCallKit::try_to_inline() {
   // Handle symbolic names for otherwise undistinguished boolean switches:
   const bool is_store       = true;
@@ -767,6 +832,14 @@
   case vmIntrinsics::_Reference_get:
     return inline_reference_get();
 
+  case vmIntrinsics::_aescrypt_encryptBlock:
+  case vmIntrinsics::_aescrypt_decryptBlock:
+    return inline_aescrypt_Block(intrinsic_id());
+
+  case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt:
+  case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt:
+    return inline_cipherBlockChaining_AESCrypt(intrinsic_id());
+
   default:
     // If you get here, it may be that someone has added a new intrinsic
     // to the list in vmSymbols.hpp without implementing it here.
@@ -780,6 +853,36 @@
   }
 }
 
+Node* LibraryCallKit::try_to_predicate() {
+  if (!jvms()->has_method()) {
+    // Root JVMState has a null method.
+    assert(map()->memory()->Opcode() == Op_Parm, "");
+    // Insert the memory aliasing node
+    set_all_memory(reset_memory());
+  }
+  assert(merged_memory(), "");
+
+  switch (intrinsic_id()) {
+  case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt:
+    return inline_cipherBlockChaining_AESCrypt_predicate(false);
+  case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt:
+    return inline_cipherBlockChaining_AESCrypt_predicate(true);
+
+  default:
+    // If you get here, it may be that someone has added a new intrinsic
+    // to the list in vmSymbols.hpp without implementing it here.
+#ifndef PRODUCT
+    if ((PrintMiscellaneous && (Verbose || WizardMode)) || PrintOpto) {
+      tty->print_cr("*** Warning: Unimplemented predicate for intrinsic %s(%d)",
+                    vmIntrinsics::name_at(intrinsic_id()), intrinsic_id());
+    }
+#endif
+    Node* slow_ctl = control();
+    set_control(top()); // No fast path instrinsic
+    return slow_ctl;
+  }
+}
+
 //------------------------------push_result------------------------------
 // Helper function for finishing intrinsics.
 void LibraryCallKit::push_result(RegionNode* region, PhiNode* value) {
@@ -3830,7 +3933,7 @@
                      vtable_index*vtableEntry::size()) * wordSize +
                      vtableEntry::method_offset_in_bytes();
   Node* entry_addr  = basic_plus_adr(obj_klass, entry_offset);
-  Node* target_call = make_load(NULL, entry_addr, TypeInstPtr::NOTNULL, T_OBJECT);
+  Node* target_call = make_load(NULL, entry_addr, TypePtr::NOTNULL, T_ADDRESS);
 
   // Compare the target method with the expected method (e.g., Object.hashCode).
   const TypePtr* native_call_addr = TypeMetadataPtr::make(method);
@@ -5613,3 +5716,265 @@
   push(result);
   return true;
 }
+
+
+Node * LibraryCallKit::load_field_from_object(Node * fromObj, const char * fieldName, const char * fieldTypeString,
+                                              bool is_exact=true, bool is_static=false) {
+
+  const TypeInstPtr* tinst = _gvn.type(fromObj)->isa_instptr();
+  assert(tinst != NULL, "obj is null");
+  assert(tinst->klass()->is_loaded(), "obj is not loaded");
+  assert(!is_exact || tinst->klass_is_exact(), "klass not exact");
+
+  ciField* field = tinst->klass()->as_instance_klass()->get_field_by_name(ciSymbol::make(fieldName),
+                                                                          ciSymbol::make(fieldTypeString),
+                                                                          is_static);
+  if (field == NULL) return (Node *) NULL;
+  assert (field != NULL, "undefined field");
+
+  // Next code  copied from Parse::do_get_xxx():
+
+  // Compute address and memory type.
+  int offset  = field->offset_in_bytes();
+  bool is_vol = field->is_volatile();
+  ciType* field_klass = field->type();
+  assert(field_klass->is_loaded(), "should be loaded");
+  const TypePtr* adr_type = C->alias_type(field)->adr_type();
+  Node *adr = basic_plus_adr(fromObj, fromObj, offset);
+  BasicType bt = field->layout_type();
+
+  // Build the resultant type of the load
+  const Type *type = TypeOopPtr::make_from_klass(field_klass->as_klass());
+
+  // Build the load.
+  Node* loadedField = make_load(NULL, adr, type, bt, adr_type, is_vol);
+  return loadedField;
+}
+
+
+//------------------------------inline_aescrypt_Block-----------------------
+bool LibraryCallKit::inline_aescrypt_Block(vmIntrinsics::ID id) {
+  address stubAddr;
+  const char *stubName;
+  assert(UseAES, "need AES instruction support");
+
+  switch(id) {
+  case vmIntrinsics::_aescrypt_encryptBlock:
+    stubAddr = StubRoutines::aescrypt_encryptBlock();
+    stubName = "aescrypt_encryptBlock";
+    break;
+  case vmIntrinsics::_aescrypt_decryptBlock:
+    stubAddr = StubRoutines::aescrypt_decryptBlock();
+    stubName = "aescrypt_decryptBlock";
+    break;
+  }
+  if (stubAddr == NULL) return false;
+
+  // Restore the stack and pop off the arguments.
+  int nargs = 5;  // this + 2 oop/offset combos
+  assert(callee()->signature()->size() == nargs-1, "encryptBlock has 4 arguments");
+
+  Node *aescrypt_object  = argument(0);
+  Node *src         = argument(1);
+  Node *src_offset  = argument(2);
+  Node *dest        = argument(3);
+  Node *dest_offset = argument(4);
+
+  // (1) src and dest are arrays.
+  const Type* src_type = src->Value(&_gvn);
+  const Type* dest_type = dest->Value(&_gvn);
+  const TypeAryPtr* top_src = src_type->isa_aryptr();
+  const TypeAryPtr* top_dest = dest_type->isa_aryptr();
+  assert (top_src  != NULL && top_src->klass()  != NULL &&  top_dest != NULL && top_dest->klass() != NULL, "args are strange");
+
+  // for the quick and dirty code we will skip all the checks.
+  // we are just trying to get the call to be generated.
+  Node* src_start  = src;
+  Node* dest_start = dest;
+  if (src_offset != NULL || dest_offset != NULL) {
+    assert(src_offset != NULL && dest_offset != NULL, "");
+    src_start  = array_element_address(src,  src_offset,  T_BYTE);
+    dest_start = array_element_address(dest, dest_offset, T_BYTE);
+  }
+
+  // now need to get the start of its expanded key array
+  // this requires a newer class file that has this array as littleEndian ints, otherwise we revert to java
+  Node* k_start = get_key_start_from_aescrypt_object(aescrypt_object);
+  if (k_start == NULL) return false;
+
+  // Call the stub.
+  make_runtime_call(RC_LEAF|RC_NO_FP, OptoRuntime::aescrypt_block_Type(),
+                    stubAddr, stubName, TypePtr::BOTTOM,
+                    src_start, dest_start, k_start);
+
+  return true;
+}
+
+//------------------------------inline_cipherBlockChaining_AESCrypt-----------------------
+bool LibraryCallKit::inline_cipherBlockChaining_AESCrypt(vmIntrinsics::ID id) {
+  address stubAddr;
+  const char *stubName;
+
+  assert(UseAES, "need AES instruction support");
+
+  switch(id) {
+  case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt:
+    stubAddr = StubRoutines::cipherBlockChaining_encryptAESCrypt();
+    stubName = "cipherBlockChaining_encryptAESCrypt";
+    break;
+  case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt:
+    stubAddr = StubRoutines::cipherBlockChaining_decryptAESCrypt();
+    stubName = "cipherBlockChaining_decryptAESCrypt";
+    break;
+  }
+  if (stubAddr == NULL) return false;
+
+
+  // Restore the stack and pop off the arguments.
+  int nargs = 6;  // this + oop/offset + len + oop/offset
+  assert(callee()->signature()->size() == nargs-1, "wrong number of arguments");
+  Node *cipherBlockChaining_object  = argument(0);
+  Node *src         = argument(1);
+  Node *src_offset  = argument(2);
+  Node *len         = argument(3);
+  Node *dest        = argument(4);
+  Node *dest_offset = argument(5);
+
+  // (1) src and dest are arrays.
+  const Type* src_type = src->Value(&_gvn);
+  const Type* dest_type = dest->Value(&_gvn);
+  const TypeAryPtr* top_src = src_type->isa_aryptr();
+  const TypeAryPtr* top_dest = dest_type->isa_aryptr();
+  assert (top_src  != NULL && top_src->klass()  != NULL
+          &&  top_dest != NULL && top_dest->klass() != NULL, "args are strange");
+
+  // checks are the responsibility of the caller
+  Node* src_start  = src;
+  Node* dest_start = dest;
+  if (src_offset != NULL || dest_offset != NULL) {
+    assert(src_offset != NULL && dest_offset != NULL, "");
+    src_start  = array_element_address(src,  src_offset,  T_BYTE);
+    dest_start = array_element_address(dest, dest_offset, T_BYTE);
+  }
+
+  // if we are in this set of code, we "know" the embeddedCipher is an AESCrypt object
+  // (because of the predicated logic executed earlier).
+  // so we cast it here safely.
+  // this requires a newer class file that has this array as littleEndian ints, otherwise we revert to java
+
+  Node* embeddedCipherObj = load_field_from_object(cipherBlockChaining_object, "embeddedCipher", "Lcom/sun/crypto/provider/SymmetricCipher;", /*is_exact*/ false);
+  if (embeddedCipherObj == NULL) return false;
+
+  // cast it to what we know it will be at runtime
+  const TypeInstPtr* tinst = _gvn.type(cipherBlockChaining_object)->isa_instptr();
+  assert(tinst != NULL, "CBC obj is null");
+  assert(tinst->klass()->is_loaded(), "CBC obj is not loaded");
+  ciKlass* klass_AESCrypt = tinst->klass()->as_instance_klass()->find_klass(ciSymbol::make("com/sun/crypto/provider/AESCrypt"));
+  if (!klass_AESCrypt->is_loaded()) return false;
+
+  ciInstanceKlass* instklass_AESCrypt = klass_AESCrypt->as_instance_klass();
+  const TypeKlassPtr* aklass = TypeKlassPtr::make(instklass_AESCrypt);
+  const TypeOopPtr* xtype = aklass->as_instance_type();
+  Node* aescrypt_object = new(C) CheckCastPPNode(control(), embeddedCipherObj, xtype);
+  aescrypt_object = _gvn.transform(aescrypt_object);
+
+  // we need to get the start of the aescrypt_object's expanded key array
+  Node* k_start = get_key_start_from_aescrypt_object(aescrypt_object);
+  if (k_start == NULL) return false;
+
+  // similarly, get the start address of the r vector
+  Node* objRvec = load_field_from_object(cipherBlockChaining_object, "r", "[B", /*is_exact*/ false);
+  if (objRvec == NULL) return false;
+  Node* r_start = array_element_address(objRvec, intcon(0), T_BYTE);
+
+  // Call the stub, passing src_start, dest_start, k_start, r_start and src_len
+  make_runtime_call(RC_LEAF|RC_NO_FP,
+                    OptoRuntime::cipherBlockChaining_aescrypt_Type(),
+                    stubAddr, stubName, TypePtr::BOTTOM,
+                    src_start, dest_start, k_start, r_start, len);
+
+  // return is void so no result needs to be pushed
+
+  return true;
+}
+
+//------------------------------get_key_start_from_aescrypt_object-----------------------
+Node * LibraryCallKit::get_key_start_from_aescrypt_object(Node *aescrypt_object) {
+  Node* objAESCryptKey = load_field_from_object(aescrypt_object, "K", "[I", /*is_exact*/ false);
+  assert (objAESCryptKey != NULL, "wrong version of com.sun.crypto.provider.AESCrypt");
+  if (objAESCryptKey == NULL) return (Node *) NULL;
+
+  // now have the array, need to get the start address of the K array
+  Node* k_start = array_element_address(objAESCryptKey, intcon(0), T_INT);
+  return k_start;
+}
+
+//----------------------------inline_cipherBlockChaining_AESCrypt_predicate----------------------------
+// Return node representing slow path of predicate check.
+// the pseudo code we want to emulate with this predicate is:
+// for encryption:
+//    if (embeddedCipherObj instanceof AESCrypt) do_intrinsic, else do_javapath
+// for decryption:
+//    if ((embeddedCipherObj instanceof AESCrypt) && (cipher!=plain)) do_intrinsic, else do_javapath
+//    note cipher==plain is more conservative than the original java code but that's OK
+//
+Node* LibraryCallKit::inline_cipherBlockChaining_AESCrypt_predicate(bool decrypting) {
+  // First, check receiver for NULL since it is virtual method.
+  int nargs = arg_size();
+  Node* objCBC = argument(0);
+  _sp += nargs;
+  objCBC = do_null_check(objCBC, T_OBJECT);
+  _sp -= nargs;
+
+  if (stopped()) return NULL; // Always NULL
+
+  // Load embeddedCipher field of CipherBlockChaining object.
+  Node* embeddedCipherObj = load_field_from_object(objCBC, "embeddedCipher", "Lcom/sun/crypto/provider/SymmetricCipher;", /*is_exact*/ false);
+
+  // get AESCrypt klass for instanceOf check
+  // AESCrypt might not be loaded yet if some other SymmetricCipher got us to this compile point
+  // will have same classloader as CipherBlockChaining object
+  const TypeInstPtr* tinst = _gvn.type(objCBC)->isa_instptr();
+  assert(tinst != NULL, "CBCobj is null");
+  assert(tinst->klass()->is_loaded(), "CBCobj is not loaded");
+
+  // we want to do an instanceof comparison against the AESCrypt class
+  ciKlass* klass_AESCrypt = tinst->klass()->as_instance_klass()->find_klass(ciSymbol::make("com/sun/crypto/provider/AESCrypt"));
+  if (!klass_AESCrypt->is_loaded()) {
+    // if AESCrypt is not even loaded, we never take the intrinsic fast path
+    Node* ctrl = control();
+    set_control(top()); // no regular fast path
+    return ctrl;
+  }
+  ciInstanceKlass* instklass_AESCrypt = klass_AESCrypt->as_instance_klass();
+
+  _sp += nargs;          // gen_instanceof might do an uncommon trap
+  Node* instof = gen_instanceof(embeddedCipherObj, makecon(TypeKlassPtr::make(instklass_AESCrypt)));
+  _sp -= nargs;
+  Node* cmp_instof  = _gvn.transform(new (C) CmpINode(instof, intcon(1)));
+  Node* bool_instof  = _gvn.transform(new (C) BoolNode(cmp_instof, BoolTest::ne));
+
+  Node* instof_false = generate_guard(bool_instof, NULL, PROB_MIN);
+
+  // for encryption, we are done
+  if (!decrypting)
+    return instof_false;  // even if it is NULL
+
+  // for decryption, we need to add a further check to avoid
+  // taking the intrinsic path when cipher and plain are the same
+  // see the original java code for why.
+  RegionNode* region = new(C) RegionNode(3);
+  region->init_req(1, instof_false);
+  Node* src = argument(1);
+  Node *dest = argument(4);
+  Node* cmp_src_dest = _gvn.transform(new (C) CmpPNode(src, dest));
+  Node* bool_src_dest = _gvn.transform(new (C) BoolNode(cmp_src_dest, BoolTest::eq));
+  Node* src_dest_conjoint = generate_guard(bool_src_dest, NULL, PROB_MIN);
+  region->init_req(2, src_dest_conjoint);
+
+  record_for_igvn(region);
+  return _gvn.transform(region);
+
+}
+
+
--- a/hotspot/src/share/vm/opto/loopTransform.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/loopTransform.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -2715,6 +2715,8 @@
   result_mem = new (C) ProjNode(call,TypeFunc::Memory);
   _igvn.register_new_node_with_optimizer(result_mem);
 
+/* Disable following optimization until proper fix (add missing checks).
+
   // If this fill is tightly coupled to an allocation and overwrites
   // the whole body, allow it to take over the zeroing.
   AllocateNode* alloc = AllocateNode::Ideal_allocation(base, this);
@@ -2738,6 +2740,7 @@
 #endif
     }
   }
+*/
 
   // Redirect the old control and memory edges that are outside the loop.
   Node* exit = head->loopexit()->proj_out(0);
--- a/hotspot/src/share/vm/opto/mulnode.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/mulnode.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -479,24 +479,27 @@
     return new (phase->C) AndINode(load,phase->intcon(mask&0xFFFF));
 
   // Masking bits off of a Short?  Loading a Character does some masking
-  if (lop == Op_LoadS && (mask & 0xFFFF0000) == 0 ) {
-    Node *ldus = new (phase->C) LoadUSNode(load->in(MemNode::Control),
-                                              load->in(MemNode::Memory),
-                                              load->in(MemNode::Address),
-                                              load->adr_type());
-    ldus = phase->transform(ldus);
-    return new (phase->C) AndINode(ldus, phase->intcon(mask & 0xFFFF));
-  }
+  if (can_reshape &&
+      load->outcnt() == 1 && load->unique_out() == this) {
+    if (lop == Op_LoadS && (mask & 0xFFFF0000) == 0 ) {
+      Node *ldus = new (phase->C) LoadUSNode(load->in(MemNode::Control),
+                                             load->in(MemNode::Memory),
+                                             load->in(MemNode::Address),
+                                             load->adr_type());
+      ldus = phase->transform(ldus);
+      return new (phase->C) AndINode(ldus, phase->intcon(mask & 0xFFFF));
+    }
 
-  // Masking sign bits off of a Byte?  Do an unsigned byte load plus
-  // an and.
-  if (lop == Op_LoadB && (mask & 0xFFFFFF00) == 0) {
-    Node* ldub = new (phase->C) LoadUBNode(load->in(MemNode::Control),
-                                              load->in(MemNode::Memory),
-                                              load->in(MemNode::Address),
-                                              load->adr_type());
-    ldub = phase->transform(ldub);
-    return new (phase->C) AndINode(ldub, phase->intcon(mask));
+    // Masking sign bits off of a Byte?  Do an unsigned byte load plus
+    // an and.
+    if (lop == Op_LoadB && (mask & 0xFFFFFF00) == 0) {
+      Node* ldub = new (phase->C) LoadUBNode(load->in(MemNode::Control),
+                                             load->in(MemNode::Memory),
+                                             load->in(MemNode::Address),
+                                             load->adr_type());
+      ldub = phase->transform(ldub);
+      return new (phase->C) AndINode(ldub, phase->intcon(mask));
+    }
   }
 
   // Masking off sign bits?  Dont make them!
@@ -923,7 +926,9 @@
       set_req(2, phase->intcon(0));
       return this;
     }
-    else if( ld->Opcode() == Op_LoadUS )
+    else if( can_reshape &&
+             ld->Opcode() == Op_LoadUS &&
+             ld->outcnt() == 1 && ld->unique_out() == shl)
       // Replace zero-extension-load with sign-extension-load
       return new (phase->C) LoadSNode( ld->in(MemNode::Control),
                                 ld->in(MemNode::Memory),
--- a/hotspot/src/share/vm/opto/runtime.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/runtime.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -811,6 +811,48 @@
   return TypeFunc::make(domain, range);
 }
 
+// for aescrypt encrypt/decrypt operations, just three pointers returning void (length is constant)
+const TypeFunc* OptoRuntime::aescrypt_block_Type() {
+  // create input type (domain)
+  int num_args      = 3;
+  int argcnt = num_args;
+  const Type** fields = TypeTuple::fields(argcnt);
+  int argp = TypeFunc::Parms;
+  fields[argp++] = TypePtr::NOTNULL;    // src
+  fields[argp++] = TypePtr::NOTNULL;    // dest
+  fields[argp++] = TypePtr::NOTNULL;    // k array
+  assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
+  const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
+
+  // no result type needed
+  fields = TypeTuple::fields(1);
+  fields[TypeFunc::Parms+0] = NULL; // void
+  const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
+  return TypeFunc::make(domain, range);
+}
+
+// for cipherBlockChaining calls of aescrypt encrypt/decrypt, four pointers and a length, returning void
+const TypeFunc* OptoRuntime::cipherBlockChaining_aescrypt_Type() {
+  // create input type (domain)
+  int num_args      = 5;
+  int argcnt = num_args;
+  const Type** fields = TypeTuple::fields(argcnt);
+  int argp = TypeFunc::Parms;
+  fields[argp++] = TypePtr::NOTNULL;    // src
+  fields[argp++] = TypePtr::NOTNULL;    // dest
+  fields[argp++] = TypePtr::NOTNULL;    // k array
+  fields[argp++] = TypePtr::NOTNULL;    // r array
+  fields[argp++] = TypeInt::INT;        // src len
+  assert(argp == TypeFunc::Parms+argcnt, "correct decoding");
+  const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields);
+
+  // no result type needed
+  fields = TypeTuple::fields(1);
+  fields[TypeFunc::Parms+0] = NULL; // void
+  const TypeTuple* range = TypeTuple::make(TypeFunc::Parms, fields);
+  return TypeFunc::make(domain, range);
+}
+
 //------------- Interpreter state access for on stack replacement
 const TypeFunc* OptoRuntime::osr_end_Type() {
   // create input type (domain)
--- a/hotspot/src/share/vm/opto/runtime.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/runtime.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -280,6 +280,9 @@
 
   static const TypeFunc* array_fill_Type();
 
+  static const TypeFunc* aescrypt_block_Type();
+  static const TypeFunc* cipherBlockChaining_aescrypt_Type();
+
   // leaf on stack replacement interpreter accessor types
   static const TypeFunc* osr_end_Type();
 
--- a/hotspot/src/share/vm/opto/superword.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/superword.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -1776,16 +1776,15 @@
     set_velt_type(n, container_type(n));
   }
 
-  // Propagate narrowed type backwards through operations
+  // Propagate integer narrowed type backwards through operations
   // that don't depend on higher order bits
   for (int i = _block.length() - 1; i >= 0; i--) {
     Node* n = _block.at(i);
     // Only integer types need be examined
-    const Type* vt = velt_type(n);
-    if (vt->basic_type() == T_INT) {
+    const Type* vtn = velt_type(n);
+    if (vtn->basic_type() == T_INT) {
       uint start, end;
       VectorNode::vector_operands(n, &start, &end);
-      const Type* vt = velt_type(n);
 
       for (uint j = start; j < end; j++) {
         Node* in  = n->in(j);
@@ -1801,6 +1800,24 @@
             }
           }
           if (same_type) {
+            // For right shifts of small integer types (bool, byte, char, short)
+            // we need precise information about sign-ness. Only Load nodes have
+            // this information because Store nodes are the same for signed and
+            // unsigned values. And any arithmetic operation after a load may
+            // expand a value to signed Int so such right shifts can't be used
+            // because vector elements do not have upper bits of Int.
+            const Type* vt = vtn;
+            if (VectorNode::is_shift(in)) {
+              Node* load = in->in(1);
+              if (load->is_Load() && in_bb(load) && (velt_type(load)->basic_type() == T_INT)) {
+                vt = velt_type(load);
+              } else if (in->Opcode() != Op_LShiftI) {
+                // Widen type to Int to avoid creation of right shift vector
+                // (align + data_size(s1) check in stmts_can_pack() will fail).
+                // Note, left shifts work regardless type.
+                vt = TypeInt::INT;
+              }
+            }
             set_velt_type(in, vt);
           }
         }
@@ -1841,7 +1858,20 @@
 // Smallest type containing range of values
 const Type* SuperWord::container_type(Node* n) {
   if (n->is_Mem()) {
-    return Type::get_const_basic_type(n->as_Mem()->memory_type());
+    BasicType bt = n->as_Mem()->memory_type();
+    if (n->is_Store() && (bt == T_CHAR)) {
+      // Use T_SHORT type instead of T_CHAR for stored values because any
+      // preceding arithmetic operation extends values to signed Int.
+      bt = T_SHORT;
+    }
+    if (n->Opcode() == Op_LoadUB) {
+      // Adjust type for unsigned byte loads, it is important for right shifts.
+      // T_BOOLEAN is used because there is no basic type representing type
+      // TypeInt::UBYTE. Use of T_BOOLEAN for vectors is fine because only
+      // size (one byte) and sign is important.
+      bt = T_BOOLEAN;
+    }
+    return Type::get_const_basic_type(bt);
   }
   const Type* t = _igvn.type(n);
   if (t->basic_type() == T_INT) {
--- a/hotspot/src/share/vm/opto/type.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/type.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -61,7 +61,7 @@
   { Bad,             T_ILLEGAL,    "tuple:",        false, Node::NotAMachineReg, relocInfo::none          },  // Tuple
   { Bad,             T_ARRAY,      "array:",        false, Node::NotAMachineReg, relocInfo::none          },  // Array
 
-#if defined(IA32) || defined(AMD64)
+#ifndef SPARC
   { Bad,             T_ILLEGAL,    "vectors:",      false, Op_VecS,              relocInfo::none          },  // VectorS
   { Bad,             T_ILLEGAL,    "vectord:",      false, Op_VecD,              relocInfo::none          },  // VectorD
   { Bad,             T_ILLEGAL,    "vectorx:",      false, Op_VecX,              relocInfo::none          },  // VectorX
--- a/hotspot/src/share/vm/opto/vectornode.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/opto/vectornode.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -29,8 +29,7 @@
 //------------------------------VectorNode--------------------------------------
 
 // Return the vector operator for the specified scalar operation
-// and vector length.  Also used to check if the code generator
-// supports the vector operation.
+// and vector length.
 int VectorNode::opcode(int sopc, BasicType bt) {
   switch (sopc) {
   case Op_AddI:
@@ -75,7 +74,7 @@
     case T_BYTE:   return 0;   // Unimplemented
     case T_CHAR:
     case T_SHORT:  return Op_MulVS;
-    case T_INT:    return Matcher::match_rule_supported(Op_MulVI) ? Op_MulVI : 0; // SSE4_1
+    case T_INT:    return Op_MulVI;
     }
     ShouldNotReachHere();
   case Op_MulF:
@@ -104,9 +103,9 @@
     return Op_LShiftVL;
   case Op_RShiftI:
     switch (bt) {
-    case T_BOOLEAN:
+    case T_BOOLEAN:return Op_URShiftVB; // boolean is unsigned value
+    case T_CHAR:   return Op_URShiftVS; // char is unsigned value
     case T_BYTE:   return Op_RShiftVB;
-    case T_CHAR:
     case T_SHORT:  return Op_RShiftVS;
     case T_INT:    return Op_RShiftVI;
     }
@@ -116,10 +115,14 @@
     return Op_RShiftVL;
   case Op_URShiftI:
     switch (bt) {
-    case T_BOOLEAN:
-    case T_BYTE:   return Op_URShiftVB;
-    case T_CHAR:
-    case T_SHORT:  return Op_URShiftVS;
+    case T_BOOLEAN:return Op_URShiftVB;
+    case T_CHAR:   return Op_URShiftVS;
+    case T_BYTE:
+    case T_SHORT:  return 0; // Vector logical right shift for signed short
+                             // values produces incorrect Java result for
+                             // negative data because java code should convert
+                             // a short value into int value with sign
+                             // extension before a shift.
     case T_INT:    return Op_URShiftVI;
     }
     ShouldNotReachHere();
@@ -157,12 +160,14 @@
   return 0; // Unimplemented
 }
 
+// Also used to check if the code generator
+// supports the vector operation.
 bool VectorNode::implemented(int opc, uint vlen, BasicType bt) {
   if (is_java_primitive(bt) &&
       (vlen > 1) && is_power_of_2(vlen) &&
       Matcher::vector_size_supported(bt, vlen)) {
     int vopc = VectorNode::opcode(opc, bt);
-    return vopc > 0 && Matcher::has_match_rule(vopc);
+    return vopc > 0 && Matcher::match_rule_supported(vopc);
   }
   return false;
 }
--- a/hotspot/src/share/vm/prims/unsafe.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/prims/unsafe.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -124,6 +124,8 @@
       assert((void*)p->obj_field_addr<oop>((jint)byte_offset) == ptr_plus_disp,
              "raw [ptr+disp] must be consistent with oop::field_base");
     }
+    jlong p_size = HeapWordSize * (jlong)(p->size());
+    assert(byte_offset < p_size, err_msg("Unsafe access: offset " INT64_FORMAT " > object's size " INT64_FORMAT, byte_offset, p_size));
   }
 #endif
   if (sizeof(char*) == sizeof(jint))    // (this constant folds!)
--- a/hotspot/src/share/vm/runtime/arguments.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -791,6 +791,10 @@
     st->print("jvm_args: "); print_jvm_args_on(st);
   }
   st->print_cr("java_command: %s", java_command() ? java_command() : "<unknown>");
+  if (_java_class_path != NULL) {
+    char* path = _java_class_path->value();
+    st->print_cr("java_class_path (initial): %s", strlen(path) == 0 ? "<not set>" : path );
+  }
   st->print_cr("Launcher Type: %s", _sun_java_launcher);
 }
 
@@ -873,7 +877,7 @@
   bool result         = true;
 
   int c = getc(stream);
-  while(c != EOF) {
+  while(c != EOF && pos < (int)(sizeof(token)-1)) {
     if (in_white_space) {
       if (in_comment) {
         if (c == '\n') in_comment = false;
@@ -2771,6 +2775,11 @@
         return JNI_EINVAL;
       }
       FLAG_SET_CMDLINE(uintx, MaxDirectMemorySize, max_direct_memory_size);
+    } else if (match_option(option, "-XX:+UseVMInterruptibleIO", &tail)) {
+      // NOTE! In JDK 9, the UseVMInterruptibleIO flag will completely go
+      //       away and will cause VM initialization failures!
+      warning("-XX:+UseVMInterruptibleIO is obsolete and will be removed in a future release.");
+      FLAG_SET_CMDLINE(bool, UseVMInterruptibleIO, true);
     } else if (match_option(option, "-XX:", &tail)) { // -XX:xxxx
       // Skip -XX:Flags= since that case has already been handled
       if (strncmp(tail, "Flags=", strlen("Flags=")) != 0) {
@@ -2786,10 +2795,6 @@
 
   // Change the default value for flags  which have different default values
   // when working with older JDKs.
-  if (JDK_Version::current().compare_major(6) <= 0 &&
-      FLAG_IS_DEFAULT(UseVMInterruptibleIO)) {
-    FLAG_SET_DEFAULT(UseVMInterruptibleIO, true);
-  }
 #ifdef LINUX
  if (JDK_Version::current().compare_major(6) <= 0 &&
       FLAG_IS_DEFAULT(UseLinuxPosixThreadCPUClocks)) {
--- a/hotspot/src/share/vm/runtime/globals.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -533,6 +533,9 @@
   product(intx, UseSSE, 99,                                                 \
           "Highest supported SSE instructions set on x86/x64")              \
                                                                             \
+  product(bool, UseAES, false,                                               \
+          "Control whether AES instructions can be used on x86/x64")        \
+                                                                            \
   product(uintx, LargePageSizeInBytes, 0,                                   \
           "Large page size (0 to let VM choose the page size")              \
                                                                             \
@@ -635,6 +638,9 @@
   product(bool, UseSSE42Intrinsics, false,                                  \
           "SSE4.2 versions of intrinsics")                                  \
                                                                             \
+  product(bool, UseAESIntrinsics, false,                                    \
+          "use intrinsics for AES versions of crypto")                      \
+                                                                            \
   develop(bool, TraceCallFixup, false,                                      \
           "traces all call fixups")                                         \
                                                                             \
--- a/hotspot/src/share/vm/runtime/handles.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/handles.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -158,13 +158,18 @@
 
   // Delete later chunks
   if( _chunk->next() ) {
+    // reset arena size before delete chunks. Otherwise, the total
+    // arena size could exceed total chunk size
+    assert(area->size_in_bytes() > size_in_bytes(), "Sanity check");
+    area->set_size_in_bytes(size_in_bytes());
     _chunk->next_chop();
+  } else {
+    assert(area->size_in_bytes() == size_in_bytes(), "Sanity check");
   }
   // Roll back arena to saved top markers
   area->_chunk = _chunk;
   area->_hwm = _hwm;
   area->_max = _max;
-  area->set_size_in_bytes(_size_in_bytes);
 #ifdef ASSERT
   // clear out first chunk (to detect allocation bugs)
   if (ZapVMHandleArea) {
--- a/hotspot/src/share/vm/runtime/handles.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/handles.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -297,6 +297,7 @@
   void set_previous_handle_mark(HandleMark* mark) { _previous_handle_mark = mark; }
   HandleMark* previous_handle_mark() const        { return _previous_handle_mark; }
 
+  size_t size_in_bytes() const { return _size_in_bytes; }
  public:
   HandleMark();                            // see handles_inline.hpp
   HandleMark(Thread* thread)                      { initialize(thread); }
--- a/hotspot/src/share/vm/runtime/handles.inline.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/handles.inline.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -136,13 +136,18 @@
   HandleArea* area = _area;   // help compilers with poor alias analysis
   // Delete later chunks
   if( _chunk->next() ) {
+    // reset arena size before delete chunks. Otherwise, the total
+    // arena size could exceed total chunk size
+    assert(area->size_in_bytes() > size_in_bytes(), "Sanity check");
+    area->set_size_in_bytes(size_in_bytes());
     _chunk->next_chop();
+  } else {
+    assert(area->size_in_bytes() == size_in_bytes(), "Sanity check");
   }
   // Roll back arena to saved top markers
   area->_chunk = _chunk;
   area->_hwm = _hwm;
   area->_max = _max;
-  area->set_size_in_bytes(_size_in_bytes);
   debug_only(area->_handle_mark_nesting--);
 }
 
--- a/hotspot/src/share/vm/runtime/os.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/os.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -600,9 +600,7 @@
   if (PrintMalloc && tty != NULL) tty->print_cr("os::malloc " SIZE_FORMAT " bytes --> " PTR_FORMAT, size, memblock);
 
   // we do not track MallocCushion memory
-  if (MemTracker::is_on()) {
     MemTracker::record_malloc((address)memblock, size, memflags, caller == 0 ? CALLER_PC : caller);
-  }
 
   return memblock;
 }
@@ -613,7 +611,7 @@
   NOT_PRODUCT(inc_stat_counter(&num_mallocs, 1));
   NOT_PRODUCT(inc_stat_counter(&alloc_bytes, size));
   void* ptr = ::realloc(memblock, size);
-  if (ptr != NULL && MemTracker::is_on()) {
+  if (ptr != NULL) {
     MemTracker::record_realloc((address)memblock, (address)ptr, size, memflags,
      caller == 0 ? CALLER_PC : caller);
   }
@@ -1401,7 +1399,7 @@
 
 char* os::reserve_memory(size_t bytes, char* addr, size_t alignment_hint) {
   char* result = pd_reserve_memory(bytes, addr, alignment_hint);
-  if (result != NULL && MemTracker::is_on()) {
+  if (result != NULL) {
     MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC);
   }
 
@@ -1409,7 +1407,7 @@
 }
 char* os::attempt_reserve_memory_at(size_t bytes, char* addr) {
   char* result = pd_attempt_reserve_memory_at(bytes, addr);
-  if (result != NULL && MemTracker::is_on()) {
+  if (result != NULL) {
     MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC);
   }
   return result;
@@ -1422,7 +1420,7 @@
 
 bool os::commit_memory(char* addr, size_t bytes, bool executable) {
   bool res = pd_commit_memory(addr, bytes, executable);
-  if (res && MemTracker::is_on()) {
+  if (res) {
     MemTracker::record_virtual_memory_commit((address)addr, bytes, CALLER_PC);
   }
   return res;
@@ -1431,7 +1429,7 @@
 bool os::commit_memory(char* addr, size_t size, size_t alignment_hint,
                               bool executable) {
   bool res = os::pd_commit_memory(addr, size, alignment_hint, executable);
-  if (res && MemTracker::is_on()) {
+  if (res) {
     MemTracker::record_virtual_memory_commit((address)addr, size, CALLER_PC);
   }
   return res;
@@ -1458,8 +1456,9 @@
                            char *addr, size_t bytes, bool read_only,
                            bool allow_exec) {
   char* result = pd_map_memory(fd, file_name, file_offset, addr, bytes, read_only, allow_exec);
-  if (result != NULL && MemTracker::is_on()) {
+  if (result != NULL) {
     MemTracker::record_virtual_memory_reserve((address)result, bytes, CALLER_PC);
+    MemTracker::record_virtual_memory_commit((address)result, bytes, CALLER_PC);
   }
   return result;
 }
@@ -1474,6 +1473,7 @@
 bool os::unmap_memory(char *addr, size_t bytes) {
   bool result = pd_unmap_memory(addr, bytes);
   if (result) {
+    MemTracker::record_virtual_memory_uncommit((address)addr, bytes);
     MemTracker::record_virtual_memory_release((address)addr, bytes);
   }
   return result;
--- a/hotspot/src/share/vm/runtime/stubRoutines.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/stubRoutines.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -120,6 +120,10 @@
 address StubRoutines::_arrayof_jshort_fill;
 address StubRoutines::_arrayof_jint_fill;
 
+address StubRoutines::_aescrypt_encryptBlock               = NULL;
+address StubRoutines::_aescrypt_decryptBlock               = NULL;
+address StubRoutines::_cipherBlockChaining_encryptAESCrypt = NULL;
+address StubRoutines::_cipherBlockChaining_decryptAESCrypt = NULL;
 
 double (* StubRoutines::_intrinsic_log   )(double) = NULL;
 double (* StubRoutines::_intrinsic_log10 )(double) = NULL;
--- a/hotspot/src/share/vm/runtime/stubRoutines.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/stubRoutines.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -199,6 +199,11 @@
   // zero heap space aligned to jlong (8 bytes)
   static address _zero_aligned_words;
 
+  static address _aescrypt_encryptBlock;
+  static address _aescrypt_decryptBlock;
+  static address _cipherBlockChaining_encryptAESCrypt;
+  static address _cipherBlockChaining_decryptAESCrypt;
+
   // These are versions of the java.lang.Math methods which perform
   // the same operations as the intrinsic version.  They are used for
   // constant folding in the compiler to ensure equivalence.  If the
@@ -330,6 +335,11 @@
   static address arrayof_jshort_fill() { return _arrayof_jshort_fill; }
   static address arrayof_jint_fill()   { return _arrayof_jint_fill; }
 
+  static address aescrypt_encryptBlock()                { return _aescrypt_encryptBlock; }
+  static address aescrypt_decryptBlock()                { return _aescrypt_decryptBlock; }
+  static address cipherBlockChaining_encryptAESCrypt()  { return _cipherBlockChaining_encryptAESCrypt; }
+  static address cipherBlockChaining_decryptAESCrypt()  { return _cipherBlockChaining_decryptAESCrypt; }
+
   static address select_fill_function(BasicType t, bool aligned, const char* &name);
 
   static address zero_aligned_words()   { return _zero_aligned_words; }
--- a/hotspot/src/share/vm/runtime/thread.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/thread.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -323,12 +323,10 @@
   os::initialize_thread(this);
 
 #if INCLUDE_NMT
-   // record thread's native stack, stack grows downward
-  if (MemTracker::is_on()) {
-    address stack_low_addr = stack_base() - stack_size();
-    MemTracker::record_thread_stack(stack_low_addr, stack_size(), this,
+  // record thread's native stack, stack grows downward
+  address stack_low_addr = stack_base() - stack_size();
+  MemTracker::record_thread_stack(stack_low_addr, stack_size(), this,
       CURRENT_PC);
-  }
 #endif // INCLUDE_NMT
 }
 
@@ -345,6 +343,9 @@
   if (_stack_base != NULL) {
     address low_stack_addr = stack_base() - stack_size();
     MemTracker::release_thread_stack(low_stack_addr, stack_size(), this);
+#ifdef ASSERT
+    set_stack_base(NULL);
+#endif
   }
 #endif // INCLUDE_NMT
 
@@ -1521,10 +1522,12 @@
       tty->print_cr("terminate thread %p", this);
   }
 
-  // Info NMT that this JavaThread is exiting, its memory
-  // recorder should be collected
+  // By now, this thread should already be invisible to safepoint,
+  // and its per-thread recorder also collected.
   assert(!is_safepoint_visible(), "wrong state");
-  MemTracker::thread_exiting(this);
+#if INCLUDE_NMT
+  assert(get_recorder() == NULL, "Already collected");
+#endif // INCLUDE_NMT
 
   // JSR166 -- return the parker to the free list
   Parker::Release(_parker);
@@ -2425,6 +2428,7 @@
 }
 
 void JavaThread::remove_stack_guard_pages() {
+  assert(Thread::current() == this, "from different thread");
   if (_stack_guard_state == stack_guard_unused) return;
   address low_addr = stack_base() - stack_size();
   size_t len = (StackYellowPages + StackRedPages) * os::vm_page_size();
@@ -4093,7 +4097,10 @@
 
     // Now, this thread is not visible to safepoint
     p->set_safepoint_visible(false);
-
+    // once the thread becomes safepoint invisible, we can not use its per-thread
+    // recorder. And Threads::do_threads() no longer walks this thread, so we have
+    // to release its per-thread recorder here.
+    MemTracker::thread_exiting(p);
   } // unlock Threads_lock
 
   // Since Events::log uses a lock, we grab it outside the Threads_lock
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -59,6 +59,7 @@
 #include "memory/generation.hpp"
 #include "memory/generationSpec.hpp"
 #include "memory/heap.hpp"
+#include "memory/metablock.hpp"
 #include "memory/space.hpp"
 #include "memory/tenuredGeneration.hpp"
 #include "memory/universe.hpp"
@@ -249,6 +250,7 @@
 typedef Hashtable<Klass*, mtClass>            KlassHashtable;
 typedef HashtableEntry<Klass*, mtClass>       KlassHashtableEntry;
 typedef TwoOopHashtable<Symbol*, mtClass>     SymbolTwoOopHashtable;
+typedef BinaryTreeDictionary<Metablock, FreeList> MetablockTreeDictionary;
 
 //--------------------------------------------------------------------------------
 // VM_STRUCTS
@@ -1237,7 +1239,15 @@
   nonstatic_field(AccessFlags,                 _flags,                                       jint)                                   \
   nonstatic_field(elapsedTimer,                _counter,                                     jlong)                                  \
   nonstatic_field(elapsedTimer,                _active,                                      bool)                                   \
-  nonstatic_field(InvocationCounter,           _counter,                                     unsigned int)
+  nonstatic_field(InvocationCounter,           _counter,                                     unsigned int)                           \
+  volatile_nonstatic_field(FreeChunk,          _size,                                        size_t)                                 \
+  nonstatic_field(FreeChunk,                   _next,                                        FreeChunk*)                             \
+  nonstatic_field(FreeChunk,                   _prev,                                        FreeChunk*)                             \
+  nonstatic_field(FreeList<FreeChunk>,         _size,                                        size_t)                                 \
+  nonstatic_field(FreeList<Metablock>,         _size,                                        size_t)                                 \
+  nonstatic_field(FreeList<FreeChunk>,         _count,                                       ssize_t)                                \
+  nonstatic_field(FreeList<Metablock>,         _count,                                       ssize_t)                                \
+  nonstatic_field(MetablockTreeDictionary,     _total_size,                                  size_t)
 
   /* NOTE that we do not use the last_entry() macro here; it is used  */
   /* in vmStructs_<os>_<cpu>.hpp's VM_STRUCTS_OS_CPU macro (and must  */
@@ -2080,7 +2090,24 @@
   declare_toplevel_type(Universe)                                         \
   declare_toplevel_type(vframeArray)                                      \
   declare_toplevel_type(vframeArrayElement)                               \
-  declare_toplevel_type(Annotations*)
+  declare_toplevel_type(Annotations*)                                     \
+                                                                          \
+  /***************/                                                       \
+  /* Miscellaneous types */                                               \
+  /***************/                                                       \
+                                                                          \
+  /* freelist */                                                          \
+  declare_toplevel_type(FreeChunk*)                                       \
+  declare_toplevel_type(Metablock*)                                       \
+  declare_toplevel_type(FreeBlockDictionary<FreeChunk>*)                  \
+  declare_toplevel_type(FreeList<FreeChunk>*)                             \
+  declare_toplevel_type(FreeList<FreeChunk>)                              \
+  declare_toplevel_type(FreeBlockDictionary<Metablock>*)                  \
+  declare_toplevel_type(FreeList<Metablock>*)                             \
+  declare_toplevel_type(FreeList<Metablock>)                              \
+  declare_toplevel_type(MetablockTreeDictionary*)                         \
+  declare_type(MetablockTreeDictionary, FreeBlockDictionary<Metablock>)   \
+              declare_type(MetablockTreeDictionary, FreeBlockDictionary<Metablock>)
 
 
   /* NOTE that we do not use the last_entry() macro here; it is used  */
--- a/hotspot/src/share/vm/services/attachListener.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/attachListener.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -404,6 +404,8 @@
 static void attach_listener_thread_entry(JavaThread* thread, TRAPS) {
   os::set_priority(thread, NearMaxPriority);
 
+  thread->record_stack_base_and_size();
+
   if (AttachListener::pd_init() != 0) {
     return;
   }
--- a/hotspot/src/share/vm/services/memBaseline.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memBaseline.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -40,6 +40,7 @@
   {mtSymbol,     "Symbol"},
   {mtNMT,        "Memory Tracking"},
   {mtChunk,      "Pooled Free Chunks"},
+  {mtClassShared,"Shared spaces for classes"},
   {mtNone,       "Unknown"}  // It can happen when type tagging records are lagging
                              // behind
 };
@@ -55,6 +56,7 @@
 
   _malloc_cs = NULL;
   _vm_cs = NULL;
+  _vm_map = NULL;
 
   _number_of_classes = 0;
   _number_of_threads = 0;
@@ -72,6 +74,11 @@
     _vm_cs = NULL;
   }
 
+  if (_vm_map != NULL) {
+    delete _vm_map;
+    _vm_map = NULL;
+  }
+
   reset();
 }
 
@@ -85,6 +92,7 @@
 
   if (_malloc_cs != NULL) _malloc_cs->clear();
   if (_vm_cs != NULL) _vm_cs->clear();
+  if (_vm_map != NULL) _vm_map->clear();
 
   for (int index = 0; index < NUMBER_OF_MEMORY_TYPE; index ++) {
     _malloc_data[index].clear();
@@ -94,39 +102,33 @@
 }
 
 MemBaseline::~MemBaseline() {
-  if (_malloc_cs != NULL) {
-    delete _malloc_cs;
-  }
-
-  if (_vm_cs != NULL) {
-    delete _vm_cs;
-  }
+  clear();
 }
 
 // baseline malloc'd memory records, generate overall summary and summaries by
 // memory types
 bool MemBaseline::baseline_malloc_summary(const MemPointerArray* malloc_records) {
-  MemPointerArrayIteratorImpl mItr((MemPointerArray*)malloc_records);
-  MemPointerRecord* mptr = (MemPointerRecord*)mItr.current();
+  MemPointerArrayIteratorImpl malloc_itr((MemPointerArray*)malloc_records);
+  MemPointerRecord* malloc_ptr = (MemPointerRecord*)malloc_itr.current();
   size_t used_arena_size = 0;
   int index;
-  while (mptr != NULL) {
-    index = flag2index(FLAGS_TO_MEMORY_TYPE(mptr->flags()));
-    size_t size = mptr->size();
+  while (malloc_ptr != NULL) {
+    index = flag2index(FLAGS_TO_MEMORY_TYPE(malloc_ptr->flags()));
+    size_t size = malloc_ptr->size();
     _total_malloced += size;
     _malloc_data[index].inc(size);
-    if (MemPointerRecord::is_arena_record(mptr->flags())) {
+    if (MemPointerRecord::is_arena_record(malloc_ptr->flags())) {
       // see if arena size record present
-      MemPointerRecord* next_p = (MemPointerRecordEx*)mItr.peek_next();
-      if (MemPointerRecord::is_arena_size_record(next_p->flags())) {
-        assert(next_p->is_size_record_of_arena(mptr), "arena records do not match");
-        size = next_p->size();
+      MemPointerRecord* next_malloc_ptr = (MemPointerRecordEx*)malloc_itr.peek_next();
+      if (MemPointerRecord::is_arena_size_record(next_malloc_ptr->flags())) {
+        assert(next_malloc_ptr->is_size_record_of_arena(malloc_ptr), "arena records do not match");
+        size = next_malloc_ptr->size();
         _arena_data[index].inc(size);
         used_arena_size += size;
-        mItr.next();
+        malloc_itr.next();
       }
     }
-    mptr = (MemPointerRecordEx*)mItr.next();
+    malloc_ptr = (MemPointerRecordEx*)malloc_itr.next();
   }
 
   // substract used arena size to get size of arena chunk in free list
@@ -142,20 +144,23 @@
 // baseline mmap'd memory records, generate overall summary and summaries by
 // memory types
 bool MemBaseline::baseline_vm_summary(const MemPointerArray* vm_records) {
-  MemPointerArrayIteratorImpl vItr((MemPointerArray*)vm_records);
-  VMMemRegion* vptr = (VMMemRegion*)vItr.current();
+  MemPointerArrayIteratorImpl vm_itr((MemPointerArray*)vm_records);
+  VMMemRegion* vm_ptr = (VMMemRegion*)vm_itr.current();
   int index;
-  while (vptr != NULL) {
-    index = flag2index(FLAGS_TO_MEMORY_TYPE(vptr->flags()));
-
+  while (vm_ptr != NULL) {
+    if (vm_ptr->is_reserved_region()) {
+      index = flag2index(FLAGS_TO_MEMORY_TYPE(vm_ptr->flags()));
     // we use the number of thread stack to count threads
-    if (IS_MEMORY_TYPE(vptr->flags(), mtThreadStack)) {
+      if (IS_MEMORY_TYPE(vm_ptr->flags(), mtThreadStack)) {
       _number_of_threads ++;
     }
-    _total_vm_reserved += vptr->reserved_size();
-    _total_vm_committed += vptr->committed_size();
-    _vm_data[index].inc(vptr->reserved_size(), vptr->committed_size());
-    vptr = (VMMemRegion*)vItr.next();
+      _total_vm_reserved += vm_ptr->size();
+      _vm_data[index].inc(vm_ptr->size(), 0);
+    } else {
+      _total_vm_committed += vm_ptr->size();
+      _vm_data[index].inc(0, vm_ptr->size());
+    }
+    vm_ptr = (VMMemRegion*)vm_itr.next();
   }
   return true;
 }
@@ -165,41 +170,57 @@
 bool MemBaseline::baseline_malloc_details(const MemPointerArray* malloc_records) {
   assert(MemTracker::track_callsite(), "detail tracking is off");
 
-  MemPointerArrayIteratorImpl mItr((MemPointerArray*)malloc_records);
-  MemPointerRecordEx* mptr = (MemPointerRecordEx*)mItr.current();
-  MallocCallsitePointer mp;
+  MemPointerArrayIteratorImpl malloc_itr(const_cast<MemPointerArray*>(malloc_records));
+  MemPointerRecordEx* malloc_ptr = (MemPointerRecordEx*)malloc_itr.current();
+  MallocCallsitePointer malloc_callsite;
 
+  // initailize malloc callsite array
   if (_malloc_cs == NULL) {
     _malloc_cs = new (std::nothrow) MemPointerArrayImpl<MallocCallsitePointer>(64);
     // out of native memory
-    if (_malloc_cs == NULL) {
+    if (_malloc_cs == NULL || _malloc_cs->out_of_memory()) {
       return false;
     }
   } else {
     _malloc_cs->clear();
   }
 
+  MemPointerArray* malloc_data = const_cast<MemPointerArray*>(malloc_records);
+
+  // sort into callsite pc order. Details are aggregated by callsites
+  malloc_data->sort((FN_SORT)malloc_sort_by_pc);
+  bool ret = true;
+
   // baseline memory that is totaled over 1 KB
-  while (mptr != NULL) {
-    if (!MemPointerRecord::is_arena_size_record(mptr->flags())) {
+  while (malloc_ptr != NULL) {
+    if (!MemPointerRecord::is_arena_size_record(malloc_ptr->flags())) {
       // skip thread stacks
-      if (!IS_MEMORY_TYPE(mptr->flags(), mtThreadStack)) {
-        if (mp.addr() != mptr->pc()) {
-          if ((mp.amount()/K) > 0) {
-            if (!_malloc_cs->append(&mp)) {
-              return false;
+      if (!IS_MEMORY_TYPE(malloc_ptr->flags(), mtThreadStack)) {
+        if (malloc_callsite.addr() != malloc_ptr->pc()) {
+          if ((malloc_callsite.amount()/K) > 0) {
+            if (!_malloc_cs->append(&malloc_callsite)) {
+              ret = false;
+              break;
             }
           }
-          mp = MallocCallsitePointer(mptr->pc());
+          malloc_callsite = MallocCallsitePointer(malloc_ptr->pc());
         }
-        mp.inc(mptr->size());
+        malloc_callsite.inc(malloc_ptr->size());
       }
     }
-    mptr = (MemPointerRecordEx*)mItr.next();
+    malloc_ptr = (MemPointerRecordEx*)malloc_itr.next();
   }
 
-  if (mp.addr() != 0 && (mp.amount()/K) > 0) {
-    if (!_malloc_cs->append(&mp)) {
+  // restore to address order. Snapshot malloc data is maintained in memory
+  // address order.
+  malloc_data->sort((FN_SORT)malloc_sort_by_addr);
+
+  if (!ret) {
+              return false;
+            }
+  // deal with last record
+  if (malloc_callsite.addr() != 0 && (malloc_callsite.amount()/K) > 0) {
+    if (!_malloc_cs->append(&malloc_callsite)) {
       return false;
     }
   }
@@ -210,34 +231,106 @@
 bool MemBaseline::baseline_vm_details(const MemPointerArray* vm_records) {
   assert(MemTracker::track_callsite(), "detail tracking is off");
 
-  VMCallsitePointer vp;
-  MemPointerArrayIteratorImpl vItr((MemPointerArray*)vm_records);
-  VMMemRegionEx* vptr = (VMMemRegionEx*)vItr.current();
+  VMCallsitePointer  vm_callsite;
+  VMCallsitePointer* cur_callsite = NULL;
+  MemPointerArrayIteratorImpl vm_itr((MemPointerArray*)vm_records);
+  VMMemRegionEx* vm_ptr = (VMMemRegionEx*)vm_itr.current();
 
+  // initialize virtual memory map array
+  if (_vm_map == NULL) {
+    _vm_map = new (std::nothrow) MemPointerArrayImpl<VMMemRegionEx>(vm_records->length());
+   if (_vm_map == NULL || _vm_map->out_of_memory()) {
+     return false;
+   }
+  } else {
+    _vm_map->clear();
+  }
+
+  // initialize virtual memory callsite array
   if (_vm_cs == NULL) {
     _vm_cs = new (std::nothrow) MemPointerArrayImpl<VMCallsitePointer>(64);
-    if (_vm_cs == NULL) {
+    if (_vm_cs == NULL || _vm_cs->out_of_memory()) {
       return false;
     }
   } else {
     _vm_cs->clear();
   }
 
-  while (vptr != NULL) {
-    if (vp.addr() != vptr->pc()) {
-      if (!_vm_cs->append(&vp)) {
+  // consolidate virtual memory data
+  VMMemRegionEx*     reserved_rec = NULL;
+  VMMemRegionEx*     committed_rec = NULL;
+
+  // vm_ptr is coming in increasing base address order
+  while (vm_ptr != NULL) {
+    if (vm_ptr->is_reserved_region()) {
+      // consolidate reserved memory regions for virtual memory map.
+      // The criteria for consolidation is:
+      // 1. two adjacent reserved memory regions
+      // 2. belong to the same memory type
+      // 3. reserved from the same callsite
+      if (reserved_rec == NULL ||
+        reserved_rec->base() + reserved_rec->size() != vm_ptr->addr() ||
+        FLAGS_TO_MEMORY_TYPE(reserved_rec->flags()) != FLAGS_TO_MEMORY_TYPE(vm_ptr->flags()) ||
+        reserved_rec->pc() != vm_ptr->pc()) {
+        if (!_vm_map->append(vm_ptr)) {
         return false;
       }
-      vp = VMCallsitePointer(vptr->pc());
+        // inserted reserved region, we need the pointer to the element in virtual
+        // memory map array.
+        reserved_rec = (VMMemRegionEx*)_vm_map->at(_vm_map->length() - 1);
+      } else {
+        reserved_rec->expand_region(vm_ptr->addr(), vm_ptr->size());
     }
-    vp.inc(vptr->size(), vptr->committed_size());
-    vptr = (VMMemRegionEx*)vItr.next();
-  }
-  if (vp.addr() != 0) {
-    if (!_vm_cs->append(&vp)) {
+
+      if (cur_callsite != NULL && !_vm_cs->append(cur_callsite)) {
       return false;
     }
+      vm_callsite = VMCallsitePointer(vm_ptr->pc());
+      cur_callsite = &vm_callsite;
+      vm_callsite.inc(vm_ptr->size(), 0);
+    } else {
+      // consolidate committed memory regions for virtual memory map
+      // The criterial is:
+      // 1. two adjacent committed memory regions
+      // 2. committed from the same callsite
+      if (committed_rec == NULL ||
+        committed_rec->base() + committed_rec->size() != vm_ptr->addr() ||
+        committed_rec->pc() != vm_ptr->pc()) {
+        if (!_vm_map->append(vm_ptr)) {
+          return false;
   }
+        committed_rec = (VMMemRegionEx*)_vm_map->at(_vm_map->length() - 1);
+    } else {
+        committed_rec->expand_region(vm_ptr->addr(), vm_ptr->size());
+      }
+      vm_callsite.inc(0, vm_ptr->size());
+    }
+    vm_ptr = (VMMemRegionEx*)vm_itr.next();
+  }
+  // deal with last record
+  if (cur_callsite != NULL && !_vm_cs->append(cur_callsite)) {
+    return false;
+  }
+
+  // sort it into callsite pc order. Details are aggregated by callsites
+  _vm_cs->sort((FN_SORT)bl_vm_sort_by_pc);
+
+  // walk the array to consolidate record by pc
+  MemPointerArrayIteratorImpl itr(_vm_cs);
+  VMCallsitePointer* callsite_rec = (VMCallsitePointer*)itr.current();
+  VMCallsitePointer* next_rec = (VMCallsitePointer*)itr.next();
+  while (next_rec != NULL) {
+    assert(callsite_rec != NULL, "Sanity check");
+    if (next_rec->addr() == callsite_rec->addr()) {
+      callsite_rec->inc(next_rec->reserved_amount(), next_rec->committed_amount());
+      itr.remove();
+      next_rec = (VMCallsitePointer*)itr.current();
+    } else {
+      callsite_rec = next_rec;
+      next_rec = (VMCallsitePointer*)itr.next();
+    }
+  }
+
   return true;
 }
 
@@ -251,12 +344,8 @@
   _number_of_classes = SystemDictionary::number_of_classes();
 
   if (!summary_only && MemTracker::track_callsite() && _baselined) {
-    ((MemPointerArray*)snapshot._alloc_ptrs)->sort((FN_SORT)malloc_sort_by_pc);
-    ((MemPointerArray*)snapshot._vm_ptrs)->sort((FN_SORT)vm_sort_by_pc);
     _baselined =  baseline_malloc_details(snapshot._alloc_ptrs) &&
       baseline_vm_details(snapshot._vm_ptrs);
-    ((MemPointerArray*)snapshot._alloc_ptrs)->sort((FN_SORT)malloc_sort_by_addr);
-    ((MemPointerArray*)snapshot._vm_ptrs)->sort((FN_SORT)vm_sort_by_addr);
   }
   return _baselined;
 }
@@ -278,7 +367,7 @@
       return MemType2NameMap[index]._name;
     }
   }
-  assert(false, "no type");
+  assert(false, err_msg("bad type %x", type));
   return NULL;
 }
 
@@ -341,13 +430,6 @@
   return UNSIGNED_COMPARE(mp1->addr(), mp2->addr());
 }
 
-// sort snapshot mmap'd records in callsite pc order
-int MemBaseline::vm_sort_by_pc(const void* p1, const void* p2) {
-  assert(MemTracker::track_callsite(),"Just check");
-  const VMMemRegionEx* mp1 = (const VMMemRegionEx*)p1;
-  const VMMemRegionEx* mp2 = (const VMMemRegionEx*)p2;
-  return UNSIGNED_COMPARE(mp1->pc(), mp2->pc());
-}
 
 // sort baselined mmap'd records in size (reserved size) order
 int MemBaseline::bl_vm_sort_by_size(const void* p1, const void* p2) {
@@ -376,12 +458,3 @@
   return delta;
 }
 
-// sort snapshot mmap'd records in memory block address order
-int MemBaseline::vm_sort_by_addr(const void* p1, const void* p2) {
-  assert(MemTracker::is_on(), "Just check");
-  const VMMemRegion* mp1 = (const VMMemRegion*)p1;
-  const VMMemRegion* mp2 = (const VMMemRegion*)p2;
-  int delta = UNSIGNED_COMPARE(mp1->addr(), mp2->addr());
-  assert(delta != 0, "dup pointer");
-  return delta;
-}
--- a/hotspot/src/share/vm/services/memBaseline.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memBaseline.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -320,6 +320,8 @@
   // only available when detail tracking is on.
   MemPointerArray*  _malloc_cs;
   MemPointerArray*  _vm_cs;
+  // virtual memory map
+  MemPointerArray*  _vm_map;
 
  private:
   static MemType2Name  MemType2NameMap[NUMBER_OF_MEMORY_TYPE];
@@ -432,9 +434,6 @@
   static int malloc_sort_by_pc(const void* p1, const void* p2);
   static int malloc_sort_by_addr(const void* p1, const void* p2);
 
-  static int vm_sort_by_pc(const void* p1, const void* p2);
-  static int vm_sort_by_addr(const void* p1, const void* p2);
-
  private:
   // sorting functions for baselined records
   static int bl_malloc_sort_by_size(const void* p1, const void* p2);
--- a/hotspot/src/share/vm/services/memPtr.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memPtr.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -40,35 +40,3 @@
   return seq;
 }
 
-
-
-bool VMMemRegion::contains(const VMMemRegion* mr) const {
-  assert(base() != 0, "Sanity check");
-  assert(size() != 0 || committed_size() != 0,
-    "Sanity check");
-  address base_addr = base();
-  address end_addr = base_addr +
-    (is_reserve_record()? reserved_size(): committed_size());
-  if (mr->is_reserve_record()) {
-    if (mr->base() == base_addr && mr->size() == size()) {
-      // the same range
-      return true;
-    }
-    return false;
-  } else if (mr->is_commit_record() || mr->is_uncommit_record()) {
-    assert(mr->base() != 0 && mr->committed_size() > 0,
-      "bad record");
-    return (mr->base() >= base_addr &&
-      (mr->base() + mr->committed_size()) <= end_addr);
-  } else if (mr->is_type_tagging_record()) {
-    assert(mr->base() != NULL, "Sanity check");
-    return (mr->base() >= base_addr && mr->base() < end_addr);
-  } else if (mr->is_release_record()) {
-    assert(mr->base() != 0 && mr->size() > 0,
-      "bad record");
-    return (mr->base() == base_addr && mr->size() == size());
-  } else {
-    ShouldNotReachHere();
-    return false;
-  }
-}
--- a/hotspot/src/share/vm/services/memPtr.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memPtr.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -291,6 +291,26 @@
   inline bool is_type_tagging_record() const {
     return is_virtual_memory_type_record(_flags);
   }
+
+  // if the two memory pointer records actually represent the same
+  // memory block
+  inline bool is_same_region(const MemPointerRecord* other) const {
+    return (addr() == other->addr() && size() == other->size());
+  }
+
+  // if this memory region fully contains another one
+  inline bool contains_region(const MemPointerRecord* other) const {
+    return contains_region(other->addr(), other->size());
+  }
+
+  // if this memory region fully contains specified memory range
+  inline bool contains_region(address add, size_t sz) const {
+    return (addr() <= add && addr() + size() >= add + sz);
+  }
+
+  inline bool contains_address(address add) const {
+    return (addr() <= add && addr() + size() > add);
+  }
 };
 
 // MemPointerRecordEx also records callsite pc, from where
@@ -321,66 +341,32 @@
   }
 };
 
-// a virtual memory region
+// a virtual memory region. The region can represent a reserved
+// virtual memory region or a committed memory region
 class VMMemRegion : public MemPointerRecord {
- private:
-  // committed size
-  size_t       _committed_size;
-
 public:
-  VMMemRegion(): _committed_size(0) { }
+  VMMemRegion() { }
 
   void init(const MemPointerRecord* mp) {
-    assert(mp->is_vm_pointer(), "not virtual memory pointer");
+    assert(mp->is_vm_pointer(), "Sanity check");
     _addr = mp->addr();
-    if (mp->is_commit_record() || mp->is_uncommit_record()) {
-      _committed_size = mp->size();
-      set_size(_committed_size);
-    } else {
       set_size(mp->size());
-      _committed_size = 0;
-    }
     set_flags(mp->flags());
   }
 
   VMMemRegion& operator=(const VMMemRegion& other) {
     MemPointerRecord::operator=(other);
-    _committed_size = other.committed_size();
     return *this;
   }
 
-  inline bool is_reserve_record() const {
-    return is_virtual_memory_reserve_record(flags());
-  }
-
-  inline bool is_release_record() const {
-    return is_virtual_memory_release_record(flags());
-  }
-
-  // resize reserved VM range
-  inline void set_reserved_size(size_t new_size) {
-    assert(new_size >= committed_size(), "resize");
-    set_size(new_size);
+  inline bool is_reserved_region() const {
+    return is_allocation_record();
   }
 
-  inline void commit(size_t size) {
-    _committed_size += size;
+  inline bool is_committed_region() const {
+    return is_commit_record();
   }
 
-  inline void uncommit(size_t size) {
-    if (_committed_size >= size) {
-      _committed_size -= size;
-    } else {
-      _committed_size = 0;
-    }
-  }
-
-  /*
-   * if this virtual memory range covers whole range of
-   * the other VMMemRegion
-   */
-  bool contains(const VMMemRegion* mr) const;
-
   /* base address of this virtual memory range */
   inline address base() const {
     return addr();
@@ -391,13 +377,28 @@
     set_flags(flags() | (f & mt_masks));
   }
 
-  // release part of memory range
-  inline void partial_release(address add, size_t sz) {
-    assert(add >= addr() && add < addr() + size(), "not valid address");
-    // for now, it can partially release from the both ends,
-    // but not in the middle
+  // expand this region to also cover specified range.
+  // The range has to be on either end of the memory region.
+  void expand_region(address addr, size_t sz) {
+    if (addr < base()) {
+      assert(addr + sz == base(), "Sanity check");
+      _addr = addr;
+      set_size(size() + sz);
+    } else {
+      assert(base() + size() == addr, "Sanity check");
+      set_size(size() + sz);
+    }
+  }
+
+  // exclude the specified address range from this region.
+  // The excluded memory range has to be on either end of this memory
+  // region.
+  inline void exclude_region(address add, size_t sz) {
+    assert(is_reserved_region() || is_committed_region(), "Sanity check");
+    assert(addr() != NULL && size() != 0, "Sanity check");
+    assert(add >= addr() && add < addr() + size(), "Sanity check");
     assert(add == addr() || (add + sz) == (addr() + size()),
-      "release in the middle");
+      "exclude in the middle");
     if (add == addr()) {
       set_addr(add + sz);
       set_size(size() - sz);
@@ -405,16 +406,6 @@
       set_size(size() - sz);
     }
   }
-
-  // the committed size of the virtual memory block
-  inline size_t committed_size() const {
-    return _committed_size;
-  }
-
-  // the reserved size of the virtual memory block
-  inline size_t reserved_size() const {
-    return size();
-  }
 };
 
 class VMMemRegionEx : public VMMemRegion {
--- a/hotspot/src/share/vm/services/memRecorder.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memRecorder.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -31,14 +31,19 @@
 #include "services/memTracker.hpp"
 
 MemPointer* SequencedRecordIterator::next_record() {
-  MemPointer* itr_cur = _itr.current();
-  if (itr_cur == NULL) return NULL;
-  MemPointer* itr_next = _itr.next();
+  MemPointerRecord* itr_cur = (MemPointerRecord*)_itr.current();
+  if (itr_cur == NULL)  {
+    return itr_cur;
+  }
+
+  MemPointerRecord* itr_next = (MemPointerRecord*)_itr.next();
 
-  while (itr_next != NULL &&
-    same_kind((MemPointerRecord*)itr_cur, (MemPointerRecord*)itr_next)) {
+  // don't collapse virtual memory records
+  while (itr_next != NULL && !itr_cur->is_vm_pointer() &&
+    !itr_next->is_vm_pointer() &&
+    same_kind(itr_cur, itr_next)) {
     itr_cur = itr_next;
-    itr_next = _itr.next();
+    itr_next = (MemPointerRecord*)_itr.next();
   }
 
   return itr_cur;
--- a/hotspot/src/share/vm/services/memRecorder.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memRecorder.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -188,6 +188,7 @@
   // Test if the two records are the same kind: the same memory block and allocation
   // type.
   inline bool same_kind(const MemPointerRecord* p1, const MemPointerRecord* p2) const {
+    assert(!p1->is_vm_pointer() && !p2->is_vm_pointer(), "malloc pointer only");
     return (p1->addr() == p2->addr() &&
       (p1->flags() &MemPointerRecord::tag_masks) ==
       (p2->flags() & MemPointerRecord::tag_masks));
--- a/hotspot/src/share/vm/services/memReporter.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memReporter.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -51,6 +51,7 @@
 
   report_summaries(baseline);
   if (!summary_only && MemTracker::track_callsite()) {
+    report_virtual_memory_map(baseline);
     report_callsites(baseline);
   }
   _outputer.done();
@@ -74,6 +75,25 @@
   _outputer.done_category_summary();
 }
 
+void BaselineReporter::report_virtual_memory_map(const MemBaseline& baseline) {
+  _outputer.start_virtual_memory_map();
+  MemBaseline* pBL = const_cast<MemBaseline*>(&baseline);
+  MemPointerArrayIteratorImpl itr = MemPointerArrayIteratorImpl(pBL->_vm_map);
+  VMMemRegionEx* rgn = (VMMemRegionEx*)itr.current();
+  while (rgn != NULL) {
+    if (rgn->is_reserved_region()) {
+      _outputer.reserved_memory_region(FLAGS_TO_MEMORY_TYPE(rgn->flags()),
+        rgn->base(), rgn->base() + rgn->size(), amount_in_current_scale(rgn->size()), rgn->pc());
+    } else {
+      _outputer.committed_memory_region(rgn->base(), rgn->base() + rgn->size(),
+        amount_in_current_scale(rgn->size()), rgn->pc());
+    }
+    rgn = (VMMemRegionEx*)itr.next();
+  }
+
+  _outputer.done_virtual_memory_map();
+}
+
 void BaselineReporter::report_callsites(const MemBaseline& baseline) {
   _outputer.start_callsite();
   MemBaseline* pBL = const_cast<MemBaseline*>(&baseline);
@@ -324,6 +344,40 @@
   _output->print_cr(" ");
 }
 
+
+void BaselineTTYOutputer::start_virtual_memory_map() {
+  _output->print_cr("Virtual memory map:");
+}
+
+void BaselineTTYOutputer::reserved_memory_region(MEMFLAGS type, address base, address end,
+                                                 size_t size, address pc) {
+  const char* unit = memory_unit(_scale);
+  char buf[128];
+  int  offset;
+  _output->print_cr(" ");
+  _output->print_cr("[" PTR_FORMAT " - " PTR_FORMAT "] reserved %d%s for %s", base, end, size, unit,
+            MemBaseline::type2name(type));
+  if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) {
+      _output->print_cr("\t\tfrom [%s+0x%x]", buf, offset);
+  }
+}
+
+void BaselineTTYOutputer::committed_memory_region(address base, address end, size_t size, address pc) {
+  const char* unit = memory_unit(_scale);
+  char buf[128];
+  int  offset;
+  _output->print("\t[" PTR_FORMAT " - " PTR_FORMAT "] committed %d%s", base, end, size, unit);
+  if (os::dll_address_to_function_name(pc, buf, sizeof(buf), &offset)) {
+      _output->print_cr(" from [%s+0x%x]", buf, offset);
+  }
+}
+
+void BaselineTTYOutputer::done_virtual_memory_map() {
+  _output->print_cr(" ");
+}
+
+
+
 void BaselineTTYOutputer::start_callsite() {
   _output->print_cr("Details:");
   _output->print_cr(" ");
@@ -337,7 +391,7 @@
   size_t malloc_count) {
   if (malloc_amt > 0) {
     const char* unit = memory_unit(_scale);
-    char buf[64];
+    char buf[128];
     int  offset;
     if (pc == 0) {
       _output->print("[BOOTSTRAP]%18s", " ");
@@ -357,7 +411,7 @@
   size_t committed_amt) {
   if (reserved_amt > 0) {
     const char* unit = memory_unit(_scale);
-    char buf[64];
+    char buf[128];
     int  offset;
     if (pc == 0) {
       _output->print("[BOOTSTRAP]%18s", " ");
@@ -502,7 +556,7 @@
     int malloc_diff, int malloc_count_diff) {
   if (malloc_diff != 0) {
     const char* unit = memory_unit(_scale);
-    char buf[64];
+    char buf[128];
     int  offset;
     if (pc == 0) {
       _output->print_cr("[BOOTSTRAP]%18s", " ");
--- a/hotspot/src/share/vm/services/memReporter.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memReporter.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -93,6 +93,11 @@
 
   virtual void done_category_summary() = 0;
 
+  virtual void start_virtual_memory_map() = 0;
+  virtual void reserved_memory_region(MEMFLAGS type, address base, address end, size_t size, address pc) = 0;
+  virtual void committed_memory_region(address base, address end, size_t size, address pc) = 0;
+  virtual void done_virtual_memory_map() = 0;
+
   /*
    *  Report callsite information
    */
@@ -136,6 +141,7 @@
 
  private:
   void report_summaries(const MemBaseline& baseline);
+  void report_virtual_memory_map(const MemBaseline& baseline);
   void report_callsites(const MemBaseline& baseline);
 
   void diff_summaries(const MemBaseline& cur, const MemBaseline& prev);
@@ -251,6 +257,13 @@
 
   void done_category_summary();
 
+  // virtual memory map
+  void start_virtual_memory_map();
+  void reserved_memory_region(MEMFLAGS type, address base, address end, size_t size, address pc);
+  void committed_memory_region(address base, address end, size_t size, address pc);
+  void done_virtual_memory_map();
+
+
   /*
    *  Report callsite information
    */
--- a/hotspot/src/share/vm/services/memSnapshot.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memSnapshot.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -31,6 +31,220 @@
 #include "services/memSnapshot.hpp"
 #include "services/memTracker.hpp"
 
+
+bool VMMemPointerIterator::insert_record(MemPointerRecord* rec) {
+  VMMemRegionEx new_rec;
+  assert(rec->is_allocation_record() || rec->is_commit_record(),
+    "Sanity check");
+  if (MemTracker::track_callsite()) {
+    new_rec.init((MemPointerRecordEx*)rec);
+  } else {
+    new_rec.init(rec);
+  }
+  return insert(&new_rec);
+}
+
+bool VMMemPointerIterator::insert_record_after(MemPointerRecord* rec) {
+  VMMemRegionEx new_rec;
+  assert(rec->is_allocation_record() || rec->is_commit_record(),
+    "Sanity check");
+  if (MemTracker::track_callsite()) {
+    new_rec.init((MemPointerRecordEx*)rec);
+  } else {
+    new_rec.init(rec);
+  }
+  return insert_after(&new_rec);
+}
+
+// we don't consolidate reserved regions, since they may be categorized
+// in different types.
+bool VMMemPointerIterator::add_reserved_region(MemPointerRecord* rec) {
+  assert(rec->is_allocation_record(), "Sanity check");
+  VMMemRegion* cur = (VMMemRegion*)current();
+
+  // we don't have anything yet
+  if (cur == NULL) {
+    return insert_record(rec);
+  }
+
+  assert(cur->is_reserved_region(), "Sanity check");
+  // duplicated records
+  if (cur->is_same_region(rec)) {
+    return true;
+  }
+  assert(cur->base() > rec->addr(), "Just check: locate()");
+  assert(rec->addr() + rec->size() <= cur->base(), "Can not overlap");
+  return insert_record(rec);
+}
+
+// we do consolidate committed regions
+bool VMMemPointerIterator::add_committed_region(MemPointerRecord* rec) {
+  assert(rec->is_commit_record(), "Sanity check");
+  VMMemRegion* cur;
+  cur = (VMMemRegion*)current();
+  assert(cur->is_reserved_region() && cur->contains_region(rec),
+    "Sanity check");
+
+  // thread's native stack is always marked as "committed", ignore
+  // the "commit" operation for creating stack guard pages
+  if (FLAGS_TO_MEMORY_TYPE(cur->flags()) == mtThreadStack &&
+      FLAGS_TO_MEMORY_TYPE(rec->flags()) != mtThreadStack) {
+    return true;
+  }
+
+  cur = (VMMemRegion*)next();
+  while (cur != NULL && cur->is_committed_region()) {
+    // duplicated commit records
+    if(cur->contains_region(rec)) {
+      return true;
+    }
+    if (cur->base() > rec->addr()) {
+      // committed regions can not overlap
+      assert(rec->addr() + rec->size() <= cur->base(), "Can not overlap");
+      if (rec->addr() + rec->size() == cur->base()) {
+        cur->expand_region(rec->addr(), rec->size());
+        return true;
+      } else {
+        return insert_record(rec);
+      }
+    } else if (cur->base() + cur->size() == rec->addr()) {
+      cur->expand_region(rec->addr(), rec->size());
+      VMMemRegion* next_reg = (VMMemRegion*)next();
+      // see if we can consolidate next committed region
+      if (next_reg != NULL && next_reg->is_committed_region() &&
+        next_reg->base() == cur->base() + cur->size()) {
+          cur->expand_region(next_reg->base(), next_reg->size());
+          remove();
+      }
+      return true;
+    }
+    cur = (VMMemRegion*)next();
+  }
+  return insert_record(rec);
+}
+
+bool VMMemPointerIterator::remove_uncommitted_region(MemPointerRecord* rec) {
+  assert(rec->is_uncommit_record(), "sanity check");
+  VMMemRegion* cur;
+  cur = (VMMemRegion*)current();
+  assert(cur->is_reserved_region() && cur->contains_region(rec),
+    "Sanity check");
+  // thread's native stack is always marked as "committed", ignore
+  // the "commit" operation for creating stack guard pages
+  if (FLAGS_TO_MEMORY_TYPE(cur->flags()) == mtThreadStack &&
+      FLAGS_TO_MEMORY_TYPE(rec->flags()) != mtThreadStack) {
+    return true;
+  }
+
+  cur = (VMMemRegion*)next();
+  while (cur != NULL && cur->is_committed_region()) {
+    // region already uncommitted, must be due to duplicated record
+    if (cur->addr() >= rec->addr() + rec->size()) {
+      break;
+    } else if (cur->contains_region(rec)) {
+      // uncommit whole region
+      if (cur->is_same_region(rec)) {
+        remove();
+        break;
+      } else if (rec->addr() == cur->addr() ||
+        rec->addr() + rec->size() == cur->addr() + cur->size()) {
+        // uncommitted from either end of current memory region.
+        cur->exclude_region(rec->addr(), rec->size());
+        break;
+      } else { // split the committed region and release the middle
+        address high_addr = cur->addr() + cur->size();
+        size_t sz = high_addr - rec->addr();
+        cur->exclude_region(rec->addr(), sz);
+        sz = high_addr - (rec->addr() + rec->size());
+        if (MemTracker::track_callsite()) {
+          MemPointerRecordEx tmp(rec->addr() + rec->size(), cur->flags(), sz,
+             ((VMMemRegionEx*)cur)->pc());
+          return insert_record_after(&tmp);
+        } else {
+          MemPointerRecord tmp(rec->addr() + rec->size(), cur->flags(), sz);
+          return insert_record_after(&tmp);
+        }
+      }
+    }
+    cur = (VMMemRegion*)next();
+  }
+
+  // we may not find committed record due to duplicated records
+  return true;
+}
+
+bool VMMemPointerIterator::remove_released_region(MemPointerRecord* rec) {
+  assert(rec->is_deallocation_record(), "Sanity check");
+  VMMemRegion* cur = (VMMemRegion*)current();
+  assert(cur->is_reserved_region() && cur->contains_region(rec),
+    "Sanity check");
+#ifdef ASSERT
+  VMMemRegion* next_reg = (VMMemRegion*)peek_next();
+  // should not have any committed memory in this reserved region
+  assert(next_reg == NULL || !next_reg->is_committed_region(), "Sanity check");
+#endif
+  if (rec->is_same_region(cur)) {
+    remove();
+  } else if (rec->addr() == cur->addr() ||
+    rec->addr() + rec->size() == cur->addr() + cur->size()) {
+    // released region is at either end of this region
+    cur->exclude_region(rec->addr(), rec->size());
+  } else { // split the reserved region and release the middle
+    address high_addr = cur->addr() + cur->size();
+    size_t sz = high_addr - rec->addr();
+    cur->exclude_region(rec->addr(), sz);
+    sz = high_addr - rec->addr() - rec->size();
+    if (MemTracker::track_callsite()) {
+      MemPointerRecordEx tmp(rec->addr() + rec->size(), cur->flags(), sz,
+        ((VMMemRegionEx*)cur)->pc());
+      return insert_reserved_region(&tmp);
+    } else {
+      MemPointerRecord tmp(rec->addr() + rec->size(), cur->flags(), sz);
+      return insert_reserved_region(&tmp);
+    }
+  }
+  return true;
+}
+
+bool VMMemPointerIterator::insert_reserved_region(MemPointerRecord* rec) {
+  // skip all 'commit' records associated with previous reserved region
+  VMMemRegion* p = (VMMemRegion*)next();
+  while (p != NULL && p->is_committed_region() &&
+         p->base() + p->size() < rec->addr()) {
+    p = (VMMemRegion*)next();
+  }
+  return insert_record(rec);
+}
+
+bool VMMemPointerIterator::split_reserved_region(VMMemRegion* rgn, address new_rgn_addr, size_t new_rgn_size) {
+  assert(rgn->contains_region(new_rgn_addr, new_rgn_size), "Not fully contained");
+  address pc = (MemTracker::track_callsite() ? ((VMMemRegionEx*)rgn)->pc() : NULL);
+  if (rgn->base() == new_rgn_addr) { // new region is at the beginning of the region
+    size_t sz = rgn->size() - new_rgn_size;
+    // the original region becomes 'new' region
+    rgn->exclude_region(new_rgn_addr + new_rgn_size, sz);
+     // remaining becomes next region
+    MemPointerRecordEx next_rgn(new_rgn_addr + new_rgn_size, rgn->flags(), sz, pc);
+    return insert_reserved_region(&next_rgn);
+  } else if (rgn->base() + rgn->size() == new_rgn_addr + new_rgn_size) {
+    rgn->exclude_region(new_rgn_addr, new_rgn_size);
+    MemPointerRecordEx next_rgn(new_rgn_addr, rgn->flags(), new_rgn_size, pc);
+    return insert_reserved_region(&next_rgn);
+  } else {
+    // the orginal region will be split into three
+    address rgn_high_addr = rgn->base() + rgn->size();
+    // first region
+    rgn->exclude_region(new_rgn_addr, (rgn_high_addr - new_rgn_addr));
+    // the second region is the new region
+    MemPointerRecordEx new_rgn(new_rgn_addr, rgn->flags(), new_rgn_size, pc);
+    if (!insert_reserved_region(&new_rgn)) return false;
+    // the remaining region
+    MemPointerRecordEx rem_rgn(new_rgn_addr + new_rgn_size, rgn->flags(),
+      rgn_high_addr - (new_rgn_addr + new_rgn_size), pc);
+    return insert_reserved_region(&rem_rgn);
+  }
+}
+
 static int sort_in_seq_order(const void* p1, const void* p2) {
   assert(p1 != NULL && p2 != NULL, "Sanity check");
   const MemPointerRecord* mp1 = (MemPointerRecord*)p1;
@@ -61,11 +275,11 @@
 }
 
 
-MemPointerArrayIteratorImpl StagingArea::virtual_memory_record_walker() {
+VMRecordIterator StagingArea::virtual_memory_record_walker() {
   MemPointerArray* arr = vm_data();
   // sort into seq number order
   arr->sort((FN_SORT)sort_in_seq_order);
-  return MemPointerArrayIteratorImpl(arr);
+  return VMRecordIterator(arr);
 }
 
 
@@ -135,6 +349,8 @@
         return false;
       }
     } else {
+      // locate matched record and/or also position the iterator to proper
+      // location for this incoming record.
       p2 = (MemPointerRecord*)malloc_staging_itr.locate(p1->addr());
       // we have not seen this memory block, so just add to staging area
       if (p2 == NULL) {
@@ -199,7 +415,7 @@
   MallocRecordIterator  malloc_itr = _staging_area.malloc_record_walker();
   bool promoted = false;
   if (promote_malloc_records(&malloc_itr)) {
-    MemPointerArrayIteratorImpl vm_itr = _staging_area.virtual_memory_record_walker();
+    VMRecordIterator vm_itr = _staging_area.virtual_memory_record_walker();
     if (promote_virtual_memory_records(&vm_itr)) {
       promoted = true;
     }
@@ -218,7 +434,7 @@
     matched_rec = (MemPointerRecord*)malloc_snapshot_itr.locate(new_rec->addr());
     // found matched memory block
     if (matched_rec != NULL && new_rec->addr() == matched_rec->addr()) {
-      // snapshot already contains 'lived' records
+      // snapshot already contains 'live' records
       assert(matched_rec->is_allocation_record() || matched_rec->is_arena_size_record(),
              "Sanity check");
       // update block states
@@ -277,87 +493,60 @@
 bool MemSnapshot::promote_virtual_memory_records(MemPointerArrayIterator* itr) {
   VMMemPointerIterator vm_snapshot_itr(_vm_ptrs);
   MemPointerRecord* new_rec = (MemPointerRecord*)itr->current();
-  VMMemRegionEx new_vm_rec;
-  VMMemRegion*  matched_rec;
+  VMMemRegion*  reserved_rec;
   while (new_rec != NULL) {
     assert(new_rec->is_vm_pointer(), "Sanity check");
-    if (MemTracker::track_callsite()) {
-      new_vm_rec.init((MemPointerRecordEx*)new_rec);
-    } else {
-      new_vm_rec.init(new_rec);
-    }
-    matched_rec = (VMMemRegion*)vm_snapshot_itr.locate(new_rec->addr());
-    if (matched_rec != NULL &&
-        (matched_rec->contains(&new_vm_rec) || matched_rec->base() == new_vm_rec.base())) {
+
+    // locate a reserved region that contains the specified address, or
+    // the nearest reserved region has base address just above the specified
+    // address
+    reserved_rec = (VMMemRegion*)vm_snapshot_itr.locate(new_rec->addr());
+    if (reserved_rec != NULL && reserved_rec->contains_region(new_rec)) {
       // snapshot can only have 'live' records
-      assert(matched_rec->is_reserve_record(), "Sanity check");
-      if (new_vm_rec.is_reserve_record() && matched_rec->base() == new_vm_rec.base()) {
-        // resize reserved virtual memory range
-        // resize has to cover committed area
-        assert(new_vm_rec.size() >= matched_rec->committed_size(), "Sanity check");
-        matched_rec->set_reserved_size(new_vm_rec.size());
-      } else if (new_vm_rec.is_commit_record()) {
-        // commit memory inside reserved memory range
-        assert(new_vm_rec.committed_size() <= matched_rec->reserved_size(), "Sanity check");
-        // thread stacks are marked committed, so we ignore 'commit' record for creating
-        // stack guard pages
-        if (FLAGS_TO_MEMORY_TYPE(matched_rec->flags()) != mtThreadStack) {
-          matched_rec->commit(new_vm_rec.committed_size());
-        }
-      } else if (new_vm_rec.is_uncommit_record()) {
-        if (FLAGS_TO_MEMORY_TYPE(matched_rec->flags()) == mtThreadStack) {
-          // ignore 'uncommit' record from removing stack guard pages, uncommit
-          // thread stack as whole
-          if (matched_rec->committed_size() == new_vm_rec.committed_size()) {
-            matched_rec->uncommit(new_vm_rec.committed_size());
-          }
-        } else {
-          // uncommit memory inside reserved memory range
-          assert(new_vm_rec.committed_size() <= matched_rec->committed_size(),
-                "Sanity check");
-          matched_rec->uncommit(new_vm_rec.committed_size());
-        }
-      } else if (new_vm_rec.is_type_tagging_record()) {
-        // tag this virtual memory range to a memory type
-        // can not re-tag a memory range to different type
-        assert(FLAGS_TO_MEMORY_TYPE(matched_rec->flags()) == mtNone ||
-               FLAGS_TO_MEMORY_TYPE(matched_rec->flags()) == FLAGS_TO_MEMORY_TYPE(new_vm_rec.flags()),
-               "Sanity check");
-        matched_rec->tag(new_vm_rec.flags());
-      } else if (new_vm_rec.is_release_record()) {
-        // release part or whole memory range
-        if (new_vm_rec.base() == matched_rec->base() &&
-            new_vm_rec.size() == matched_rec->size()) {
-          // release whole virtual memory range
-          assert(matched_rec->committed_size() == 0, "Sanity check");
-          vm_snapshot_itr.remove();
-        } else {
-          // partial release
-          matched_rec->partial_release(new_vm_rec.base(), new_vm_rec.size());
-        }
-      } else {
-        // multiple reserve/commit on the same virtual memory range
-        assert((new_vm_rec.is_reserve_record() || new_vm_rec.is_commit_record()) &&
-          (new_vm_rec.base() == matched_rec->base() && new_vm_rec.size() == matched_rec->size()),
-          "Sanity check");
-        matched_rec->tag(new_vm_rec.flags());
-      }
-    } else {
-      // no matched record
-      if (new_vm_rec.is_reserve_record()) {
-        if (matched_rec == NULL || matched_rec->base() > new_vm_rec.base()) {
-          if (!vm_snapshot_itr.insert(&new_vm_rec)) {
-            return false;
-          }
-        } else {
-          if (!vm_snapshot_itr.insert_after(&new_vm_rec)) {
+      assert(reserved_rec->is_reserved_region(), "Sanity check");
+      if (new_rec->is_allocation_record()) {
+        if (!reserved_rec->is_same_region(new_rec)) {
+          // only deal with split a bigger reserved region into smaller regions.
+          // So far, CDS is the only use case.
+          if (!vm_snapshot_itr.split_reserved_region(reserved_rec, new_rec->addr(), new_rec->size())) {
             return false;
           }
         }
-      } else {
-        // throw out obsolete records, which are the commit/uncommit/release/tag records
-        // on memory regions that are already released.
-      }
+      } else if (new_rec->is_uncommit_record()) {
+        if (!vm_snapshot_itr.remove_uncommitted_region(new_rec)) {
+          return false;
+        }
+      } else if (new_rec->is_commit_record()) {
+        // insert or expand existing committed region to cover this
+        // newly committed region
+        if (!vm_snapshot_itr.add_committed_region(new_rec)) {
+          return false;
+        }
+      } else if (new_rec->is_deallocation_record()) {
+        // release part or all memory region
+        if (!vm_snapshot_itr.remove_released_region(new_rec)) {
+          return false;
+        }
+      } else if (new_rec->is_type_tagging_record()) {
+        // tag this reserved virtual memory range to a memory type. Can not re-tag a memory range
+        // to different type.
+        assert(FLAGS_TO_MEMORY_TYPE(reserved_rec->flags()) == mtNone ||
+               FLAGS_TO_MEMORY_TYPE(reserved_rec->flags()) == FLAGS_TO_MEMORY_TYPE(new_rec->flags()),
+               "Sanity check");
+        reserved_rec->tag(new_rec->flags());
+    } else {
+        ShouldNotReachHere();
+          }
+        } else {
+      /*
+       * The assertion failure indicates mis-matched virtual memory records. The likely
+       * scenario is, that some virtual memory operations are not going through os::xxxx_memory()
+       * api, which have to be tracked manually. (perfMemory is an example).
+      */
+      assert(new_rec->is_allocation_record(), "Sanity check");
+      if (!vm_snapshot_itr.add_reserved_region(new_rec)) {
+            return false;
+          }
   }
     new_rec = (MemPointerRecord*)itr->next();
   }
@@ -433,5 +622,33 @@
     cur = (MemPointerRecord*)vm_itr.next();
   }
 }
+
+void MemSnapshot::dump_all_vm_pointers() {
+  MemPointerArrayIteratorImpl itr(_vm_ptrs);
+  VMMemRegion* ptr = (VMMemRegion*)itr.current();
+  tty->print_cr("dump virtual memory pointers:");
+  while (ptr != NULL) {
+    if (ptr->is_committed_region()) {
+      tty->print("\t");
+    }
+    tty->print("[" PTR_FORMAT " - " PTR_FORMAT "] [%x]", ptr->addr(),
+      (ptr->addr() + ptr->size()), ptr->flags());
+
+    if (MemTracker::track_callsite()) {
+      VMMemRegionEx* ex = (VMMemRegionEx*)ptr;
+      if (ex->pc() != NULL) {
+        char buf[1024];
+        if (os::dll_address_to_function_name(ex->pc(), buf, sizeof(buf), NULL)) {
+          tty->print_cr("\t%s", buf);
+        } else {
+          tty->print_cr("");
+        }
+      }
+    }
+
+    ptr = (VMMemRegion*)itr.next();
+  }
+  tty->flush();
+}
 #endif // ASSERT
 
--- a/hotspot/src/share/vm/services/memSnapshot.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memSnapshot.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -111,33 +111,41 @@
       MemPointerIterator(arr) {
   }
 
-  // locate an existing record that contains specified address, or
-  // the record, where the record with specified address, should
-  // be inserted.
-  // virtual memory record array is sorted in address order, so
-  // binary search is performed
+  // locate an existing reserved memory region that contains specified address,
+  // or the reserved region just above this address, where the incoming
+  // reserved region should be inserted.
   virtual MemPointer* locate(address addr) {
-    int index_low = 0;
-    int index_high = _array->length();
-    int index_mid = (index_high + index_low) / 2;
-    int r = 1;
-    while (index_low < index_high && (r = compare(index_mid, addr)) != 0) {
-      if (r > 0) {
-        index_high = index_mid;
-      } else {
-        index_low = index_mid;
+    reset();
+    VMMemRegion* reg = (VMMemRegion*)current();
+    while (reg != NULL) {
+      if (reg->is_reserved_region()) {
+        if (reg->contains_address(addr) || addr < reg->base()) {
+          return reg;
       }
-      index_mid = (index_high + index_low) / 2;
     }
-    if (r == 0) {
-      // update current location
-      _pos = index_mid;
-      return _array->at(index_mid);
-    } else {
+      reg = (VMMemRegion*)next();
+    }
       return NULL;
     }
-  }
+
+  // following methods update virtual memory in the context
+  // of 'current' position, which is properly positioned by
+  // callers via locate method.
+  bool add_reserved_region(MemPointerRecord* rec);
+  bool add_committed_region(MemPointerRecord* rec);
+  bool remove_uncommitted_region(MemPointerRecord* rec);
+  bool remove_released_region(MemPointerRecord* rec);
 
+  // split a reserved region to create a new memory region with specified base and size
+  bool split_reserved_region(VMMemRegion* rgn, address new_rgn_addr, size_t new_rgn_size);
+ private:
+  bool insert_record(MemPointerRecord* rec);
+  bool insert_record_after(MemPointerRecord* rec);
+
+  bool insert_reserved_region(MemPointerRecord* rec);
+
+  // reset current position
+  inline void reset() { _pos = 0; }
 #ifdef ASSERT
   virtual bool is_dup_pointer(const MemPointer* ptr1,
     const MemPointer* ptr2) const {
@@ -154,32 +162,17 @@
            (p1->flags() & MemPointerRecord::tag_masks) == MemPointerRecord::tag_release;
   }
 #endif
-  // compare if an address falls into a memory region,
-  // return 0, if the address falls into a memory region at specified index
-  // return 1, if memory region pointed by specified index is higher than the address
-  // return -1, if memory region pointed by specified index is lower than the address
-  int compare(int index, address addr) const {
-    VMMemRegion* r = (VMMemRegion*)_array->at(index);
-    assert(r->is_reserve_record(), "Sanity check");
-    if (r->addr() > addr) {
-      return 1;
-    } else if (r->addr() + r->reserved_size() <= addr) {
-      return -1;
-    } else {
-      return 0;
-    }
-  }
 };
 
 class MallocRecordIterator : public MemPointerArrayIterator {
- private:
+ protected:
   MemPointerArrayIteratorImpl  _itr;
 
  public:
   MallocRecordIterator(MemPointerArray* arr) : _itr(arr) {
   }
 
-  MemPointer* current() const {
+  virtual MemPointer* current() const {
     MemPointerRecord* cur = (MemPointerRecord*)_itr.current();
     assert(cur == NULL || !cur->is_vm_pointer(), "seek error");
     MemPointerRecord* next = (MemPointerRecord*)_itr.peek_next();
@@ -194,7 +187,7 @@
     }
   }
 
-  MemPointer* next() {
+  virtual MemPointer* next() {
     MemPointerRecord* cur = (MemPointerRecord*)_itr.current();
     assert(cur == NULL || !cur->is_vm_pointer(), "Sanity check");
     MemPointerRecord* next = (MemPointerRecord*)_itr.next();
@@ -214,6 +207,63 @@
   bool insert_after(MemPointer* ptr) { ShouldNotReachHere(); return false; }
 };
 
+// collapse duplicated records. Eliminating duplicated records here, is much
+// cheaper than during promotion phase. However, it does have limitation - it
+// can only eliminate duplicated records within the generation, there are
+// still chances seeing duplicated records during promotion.
+// We want to use the record with higher sequence number, because it has
+// more accurate callsite pc.
+class VMRecordIterator : public MallocRecordIterator {
+ public:
+  VMRecordIterator(MemPointerArray* arr) : MallocRecordIterator(arr) {
+    MemPointerRecord* cur = (MemPointerRecord*)_itr.current();
+    MemPointerRecord* next = (MemPointerRecord*)_itr.peek_next();
+    while (next != NULL) {
+      assert(cur != NULL, "Sanity check");
+      assert(((SeqMemPointerRecord*)next)->seq() > ((SeqMemPointerRecord*)cur)->seq(),
+        "pre-sort order");
+
+      if (is_duplicated_record(cur, next)) {
+        _itr.next();
+        next = (MemPointerRecord*)_itr.peek_next();
+      } else {
+        break;
+      }
+    }
+  }
+
+  virtual MemPointer* current() const {
+    return _itr.current();
+  }
+
+  // get next record, but skip the duplicated records
+  virtual MemPointer* next() {
+    MemPointerRecord* cur = (MemPointerRecord*)_itr.next();
+    MemPointerRecord* next = (MemPointerRecord*)_itr.peek_next();
+    while (next != NULL) {
+      assert(cur != NULL, "Sanity check");
+      assert(((SeqMemPointerRecord*)next)->seq() > ((SeqMemPointerRecord*)cur)->seq(),
+        "pre-sort order");
+
+      if (is_duplicated_record(cur, next)) {
+        _itr.next();
+        cur = next;
+        next = (MemPointerRecord*)_itr.peek_next();
+      } else {
+        break;
+      }
+    }
+    return cur;
+  }
+
+ private:
+  bool is_duplicated_record(MemPointerRecord* p1, MemPointerRecord* p2) const {
+    bool ret = (p1->addr() == p2->addr() && p1->size() == p2->size() && p1->flags() == p2->flags());
+    assert(!(ret && FLAGS_TO_MEMORY_TYPE(p1->flags()) == mtThreadStack), "dup on stack record");
+    return ret;
+  }
+};
+
 class StagingArea : public _ValueObj {
  private:
   MemPointerArray*   _malloc_data;
@@ -233,7 +283,8 @@
     return MallocRecordIterator(malloc_data());
   }
 
-  MemPointerArrayIteratorImpl virtual_memory_record_walker();
+  VMRecordIterator virtual_memory_record_walker();
+
   bool init();
   void clear() {
     assert(_malloc_data != NULL && _vm_data != NULL, "Just check");
@@ -293,6 +344,8 @@
   NOT_PRODUCT(void check_staging_data();)
   NOT_PRODUCT(void check_malloc_pointers();)
   NOT_PRODUCT(bool has_allocation_record(address addr);)
+  // dump all virtual memory pointers in snapshot
+  DEBUG_ONLY( void dump_all_vm_pointers();)
 
  private:
    // copy pointer data from src to dest
@@ -302,5 +355,4 @@
    bool promote_virtual_memory_records(MemPointerArrayIterator* itr);
 };
 
-
 #endif // SHARE_VM_SERVICES_MEM_SNAPSHOT_HPP
--- a/hotspot/src/share/vm/services/memTracker.cpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memTracker.cpp	Wed Jul 05 18:27:34 2017 +0200
@@ -364,7 +364,7 @@
 
     if (thread != NULL) {
       if (thread->is_Java_thread() && ((JavaThread*)thread)->is_safepoint_visible()) {
-        JavaThread*      java_thread = static_cast<JavaThread*>(thread);
+        JavaThread*      java_thread = (JavaThread*)thread;
         JavaThreadState  state = java_thread->thread_state();
         if (SafepointSynchronize::safepoint_safe(java_thread, state)) {
           // JavaThreads that are safepoint safe, can run through safepoint,
@@ -472,6 +472,8 @@
       // it should guarantee that NMT is fully sync-ed.
       ThreadCritical tc;
 
+      SequenceGenerator::reset();
+
       // walk all JavaThreads to collect recorders
       SyncThreadRecorderClosure stc;
       Threads::threads_do(&stc);
@@ -484,11 +486,12 @@
         pending_recorders = _global_recorder;
         _global_recorder = NULL;
       }
-      SequenceGenerator::reset();
       // check _worker_thread with lock to avoid racing condition
       if (_worker_thread != NULL) {
         _worker_thread->at_sync_point(pending_recorders);
       }
+
+      assert(SequenceGenerator::peek() == 1, "Should not have memory activities during sync-point");
     }
   }
 
--- a/hotspot/src/share/vm/services/memTracker.hpp	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/src/share/vm/services/memTracker.hpp	Wed Jul 05 18:27:34 2017 +0200
@@ -113,8 +113,10 @@
 #include "thread_solaris.inline.hpp"
 #endif
 
-#ifdef _DEBUG
-  #define DEBUG_CALLER_PC  os::get_caller_pc(3)
+extern bool NMT_track_callsite;
+
+#ifdef ASSERT
+  #define DEBUG_CALLER_PC  (NMT_track_callsite ? os::get_caller_pc(2) : 0)
 #else
   #define DEBUG_CALLER_PC  0
 #endif
@@ -261,7 +263,7 @@
   // record a 'malloc' call
   static inline void record_malloc(address addr, size_t size, MEMFLAGS flags,
                             address pc = 0, Thread* thread = NULL) {
-    if (NMT_CAN_TRACK(flags)) {
+    if (is_on() && NMT_CAN_TRACK(flags)) {
       assert(size > 0, "Sanity check");
       create_memory_record(addr, (flags|MemPointerRecord::malloc_tag()), size, pc, thread);
     }
@@ -275,7 +277,7 @@
   // record a 'realloc' call
   static inline void record_realloc(address old_addr, address new_addr, size_t size,
        MEMFLAGS flags, address pc = 0, Thread* thread = NULL) {
-    if (is_on()) {
+    if (is_on() && NMT_CAN_TRACK(flags)) {
       assert(size > 0, "Sanity check");
       record_free(old_addr, flags, thread);
       record_malloc(new_addr, size, flags, pc, thread);
@@ -317,6 +319,7 @@
   static inline void release_thread_stack(address addr, size_t size, Thread* thr) {
     if (is_on()) {
       assert(size > 0 && thr != NULL, "Sanity check");
+      assert(!thr->is_Java_thread(), "too early");
       create_memory_record(addr, MemPointerRecord::virtual_memory_uncommit_tag() | mtThreadStack,
                           size, DEBUG_CALLER_PC, thr);
       create_memory_record(addr, MemPointerRecord::virtual_memory_release_tag() | mtThreadStack,
@@ -326,11 +329,11 @@
 
   // record a virtual memory 'commit' call
   static inline void record_virtual_memory_commit(address addr, size_t size,
-                            address pc = 0, Thread* thread = NULL) {
+                            address pc, Thread* thread = NULL) {
     if (is_on()) {
       assert(size > 0, "Sanity check");
       create_memory_record(addr, MemPointerRecord::virtual_memory_commit_tag(),
-                           size, DEBUG_CALLER_PC, thread);
+                           size, pc, thread);
     }
   }
 
--- a/hotspot/test/compiler/6340864/TestByteVect.java	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/test/compiler/6340864/TestByteVect.java	Wed Jul 05 18:27:34 2017 +0200
@@ -33,7 +33,7 @@
 public class TestByteVect {
   private static final int ARRLEN = 997;
   private static final int ITERS  = 11000;
-  private static final int ADD_INIT = 0;
+  private static final int ADD_INIT = 63;
   private static final int BIT_MASK = 0xB7;
   private static final int VALUE = 3;
   private static final int SHIFT = 8;
@@ -76,6 +76,7 @@
       test_subc(a0, a1);
       test_subv(a0, a1, (byte)VALUE);
       test_suba(a0, a1, a2);
+
       test_mulc(a0, a1);
       test_mulv(a0, a1, (byte)VALUE);
       test_mula(a0, a1, a2);
@@ -88,6 +89,7 @@
       test_divc_n(a0, a1);
       test_divv(a0, a1, (byte)-VALUE);
       test_diva(a0, a1, a3);
+
       test_andc(a0, a1);
       test_andv(a0, a1, (byte)BIT_MASK);
       test_anda(a0, a1, a4);
@@ -97,30 +99,49 @@
       test_xorc(a0, a1);
       test_xorv(a0, a1, (byte)BIT_MASK);
       test_xora(a0, a1, a4);
+
       test_sllc(a0, a1);
       test_sllv(a0, a1, VALUE);
       test_srlc(a0, a1);
       test_srlv(a0, a1, VALUE);
       test_srac(a0, a1);
       test_srav(a0, a1, VALUE);
+
       test_sllc_n(a0, a1);
       test_sllv(a0, a1, -VALUE);
       test_srlc_n(a0, a1);
       test_srlv(a0, a1, -VALUE);
       test_srac_n(a0, a1);
       test_srav(a0, a1, -VALUE);
+
       test_sllc_o(a0, a1);
       test_sllv(a0, a1, SHIFT);
       test_srlc_o(a0, a1);
       test_srlv(a0, a1, SHIFT);
       test_srac_o(a0, a1);
       test_srav(a0, a1, SHIFT);
+
       test_sllc_on(a0, a1);
       test_sllv(a0, a1, -SHIFT);
       test_srlc_on(a0, a1);
       test_srlv(a0, a1, -SHIFT);
       test_srac_on(a0, a1);
       test_srav(a0, a1, -SHIFT);
+
+      test_sllc_add(a0, a1);
+      test_sllv_add(a0, a1, ADD_INIT);
+      test_srlc_add(a0, a1);
+      test_srlv_add(a0, a1, ADD_INIT);
+      test_srac_add(a0, a1);
+      test_srav_add(a0, a1, ADD_INIT);
+
+      test_sllc_and(a0, a1);
+      test_sllv_and(a0, a1, BIT_MASK);
+      test_srlc_and(a0, a1);
+      test_srlv_and(a0, a1, BIT_MASK);
+      test_srac_and(a0, a1);
+      test_srav_and(a0, a1, BIT_MASK);
+
       test_pack2(p2, a1);
       test_unpack2(a0, p2);
       test_pack2_swap(p2, a1);
@@ -369,6 +390,60 @@
         errn += verify("test_srav_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-SHIFT)));
       }
 
+      test_sllc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+      test_sllv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+
+      test_srlc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+      test_srlv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+
+      test_srac_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+      test_srav_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+
+      test_sllc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+      test_sllv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+
+      test_srlc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+      test_srlv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+
+      test_srac_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+      test_srav_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+
       test_pack2(p2, a1);
       for (int i=0; i<ARRLEN/2; i++) {
         errn += verify("test_pack2: ", i, p2[i], (short)(((short)(ADD_INIT+2*i) & 0xFF) | ((short)(ADD_INIT+2*i+1) << 8)));
@@ -805,6 +880,84 @@
 
     start = System.currentTimeMillis();
     for (int i=0; i<ITERS; i++) {
+      test_sllc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
       test_pack2(p2, a1);
     }
     end = System.currentTimeMillis();
@@ -1036,6 +1189,26 @@
       a0[i] = (byte)(a1[i]<<b);
     }
   }
+  static void test_sllc_add(byte[] a0, byte[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] + ADD_INIT)<<VALUE);
+    }
+  }
+  static void test_sllv_add(byte[] a0, byte[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] + b)<<VALUE);
+    }
+  }
+  static void test_sllc_and(byte[] a0, byte[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] & BIT_MASK)<<VALUE);
+    }
+  }
+  static void test_sllv_and(byte[] a0, byte[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] & b)<<VALUE);
+    }
+  }
 
   static void test_srlc(byte[] a0, byte[] a1) {
     for (int i = 0; i < a0.length; i+=1) {
@@ -1062,6 +1235,26 @@
       a0[i] = (byte)(a1[i]>>>b);
     }
   }
+  static void test_srlc_add(byte[] a0, byte[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] + ADD_INIT)>>>VALUE);
+    }
+  }
+  static void test_srlv_add(byte[] a0, byte[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] + b)>>>VALUE);
+    }
+  }
+  static void test_srlc_and(byte[] a0, byte[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] & BIT_MASK)>>>VALUE);
+    }
+  }
+  static void test_srlv_and(byte[] a0, byte[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] & b)>>>VALUE);
+    }
+  }
 
   static void test_srac(byte[] a0, byte[] a1) {
     for (int i = 0; i < a0.length; i+=1) {
@@ -1088,6 +1281,26 @@
       a0[i] = (byte)(a1[i]>>b);
     }
   }
+  static void test_srac_add(byte[] a0, byte[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] + ADD_INIT)>>VALUE);
+    }
+  }
+  static void test_srav_add(byte[] a0, byte[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] + b)>>VALUE);
+    }
+  }
+  static void test_srac_and(byte[] a0, byte[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] & BIT_MASK)>>VALUE);
+    }
+  }
+  static void test_srav_and(byte[] a0, byte[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (byte)((a1[i] & b)>>VALUE);
+    }
+  }
 
   static void test_pack2(short[] p2, byte[] a1) {
     if (p2.length*2 > a1.length) return;
--- a/hotspot/test/compiler/6340864/TestIntVect.java	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/test/compiler/6340864/TestIntVect.java	Wed Jul 05 18:27:34 2017 +0200
@@ -74,6 +74,7 @@
       test_subc(a0, a1);
       test_subv(a0, a1, (int)VALUE);
       test_suba(a0, a1, a2);
+
       test_mulc(a0, a1);
       test_mulv(a0, a1, (int)VALUE);
       test_mula(a0, a1, a2);
@@ -86,6 +87,7 @@
       test_divc_n(a0, a1);
       test_divv(a0, a1, (int)-VALUE);
       test_diva(a0, a1, a3);
+
       test_andc(a0, a1);
       test_andv(a0, a1, (int)BIT_MASK);
       test_anda(a0, a1, a4);
@@ -95,30 +97,49 @@
       test_xorc(a0, a1);
       test_xorv(a0, a1, (int)BIT_MASK);
       test_xora(a0, a1, a4);
+
       test_sllc(a0, a1);
       test_sllv(a0, a1, VALUE);
       test_srlc(a0, a1);
       test_srlv(a0, a1, VALUE);
       test_srac(a0, a1);
       test_srav(a0, a1, VALUE);
+
       test_sllc_n(a0, a1);
       test_sllv(a0, a1, -VALUE);
       test_srlc_n(a0, a1);
       test_srlv(a0, a1, -VALUE);
       test_srac_n(a0, a1);
       test_srav(a0, a1, -VALUE);
+
       test_sllc_o(a0, a1);
       test_sllv(a0, a1, SHIFT);
       test_srlc_o(a0, a1);
       test_srlv(a0, a1, SHIFT);
       test_srac_o(a0, a1);
       test_srav(a0, a1, SHIFT);
+
       test_sllc_on(a0, a1);
       test_sllv(a0, a1, -SHIFT);
       test_srlc_on(a0, a1);
       test_srlv(a0, a1, -SHIFT);
       test_srac_on(a0, a1);
       test_srav(a0, a1, -SHIFT);
+
+      test_sllc_add(a0, a1);
+      test_sllv_add(a0, a1, ADD_INIT);
+      test_srlc_add(a0, a1);
+      test_srlv_add(a0, a1, ADD_INIT);
+      test_srac_add(a0, a1);
+      test_srav_add(a0, a1, ADD_INIT);
+
+      test_sllc_and(a0, a1);
+      test_sllv_and(a0, a1, BIT_MASK);
+      test_srlc_and(a0, a1);
+      test_srlv_and(a0, a1, BIT_MASK);
+      test_srac_and(a0, a1);
+      test_srav_and(a0, a1, BIT_MASK);
+
       test_pack2(p2, a1);
       test_unpack2(a0, p2);
       test_pack2_swap(p2, a1);
@@ -359,6 +380,60 @@
         errn += verify("test_srav_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-SHIFT)));
       }
 
+      test_sllc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+      test_sllv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+
+      test_srlc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+      test_srlv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+
+      test_srac_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+      test_srav_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+
+      test_sllc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+      test_sllv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+
+      test_srlc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+      test_srlv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+
+      test_srac_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+      test_srav_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+
       test_pack2(p2, a1);
       for (int i=0; i<ARRLEN/2; i++) {
         errn += verify("test_pack2: ", i, p2[i], ((long)(ADD_INIT+2*i) & 0xFFFFFFFFl) | ((long)(ADD_INIT+2*i+1) << 32));
@@ -727,6 +802,84 @@
 
     start = System.currentTimeMillis();
     for (int i=0; i<ITERS; i++) {
+      test_sllc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
       test_pack2(p2, a1);
     }
     end = System.currentTimeMillis();
@@ -908,6 +1061,26 @@
       a0[i] = (int)(a1[i]<<b);
     }
   }
+  static void test_sllc_add(int[] a0, int[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] + ADD_INIT)<<VALUE);
+    }
+  }
+  static void test_sllv_add(int[] a0, int[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] + b)<<VALUE);
+    }
+  }
+  static void test_sllc_and(int[] a0, int[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] & BIT_MASK)<<VALUE);
+    }
+  }
+  static void test_sllv_and(int[] a0, int[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] & b)<<VALUE);
+    }
+  }
 
   static void test_srlc(int[] a0, int[] a1) {
     for (int i = 0; i < a0.length; i+=1) {
@@ -934,6 +1107,26 @@
       a0[i] = (int)(a1[i]>>>b);
     }
   }
+  static void test_srlc_add(int[] a0, int[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] + ADD_INIT)>>>VALUE);
+    }
+  }
+  static void test_srlv_add(int[] a0, int[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] + b)>>>VALUE);
+    }
+  }
+  static void test_srlc_and(int[] a0, int[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] & BIT_MASK)>>>VALUE);
+    }
+  }
+  static void test_srlv_and(int[] a0, int[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] & b)>>>VALUE);
+    }
+  }
 
   static void test_srac(int[] a0, int[] a1) {
     for (int i = 0; i < a0.length; i+=1) {
@@ -960,6 +1153,26 @@
       a0[i] = (int)(a1[i]>>b);
     }
   }
+  static void test_srac_add(int[] a0, int[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] + ADD_INIT)>>VALUE);
+    }
+  }
+  static void test_srav_add(int[] a0, int[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] + b)>>VALUE);
+    }
+  }
+  static void test_srac_and(int[] a0, int[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] & BIT_MASK)>>VALUE);
+    }
+  }
+  static void test_srav_and(int[] a0, int[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (int)((a1[i] & b)>>VALUE);
+    }
+  }
 
   static void test_pack2(long[] p2, int[] a1) {
     if (p2.length*2 > a1.length) return;
--- a/hotspot/test/compiler/6340864/TestLongVect.java	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/test/compiler/6340864/TestLongVect.java	Wed Jul 05 18:27:34 2017 +0200
@@ -73,6 +73,7 @@
       test_subc(a0, a1);
       test_subv(a0, a1, (long)VALUE);
       test_suba(a0, a1, a2);
+
       test_mulc(a0, a1);
       test_mulv(a0, a1, (long)VALUE);
       test_mula(a0, a1, a2);
@@ -85,6 +86,7 @@
       test_divc_n(a0, a1);
       test_divv(a0, a1, (long)-VALUE);
       test_diva(a0, a1, a3);
+
       test_andc(a0, a1);
       test_andv(a0, a1, (long)BIT_MASK);
       test_anda(a0, a1, a4);
@@ -94,30 +96,48 @@
       test_xorc(a0, a1);
       test_xorv(a0, a1, (long)BIT_MASK);
       test_xora(a0, a1, a4);
+
       test_sllc(a0, a1);
       test_sllv(a0, a1, VALUE);
       test_srlc(a0, a1);
       test_srlv(a0, a1, VALUE);
       test_srac(a0, a1);
       test_srav(a0, a1, VALUE);
+
       test_sllc_n(a0, a1);
       test_sllv(a0, a1, -VALUE);
       test_srlc_n(a0, a1);
       test_srlv(a0, a1, -VALUE);
       test_srac_n(a0, a1);
       test_srav(a0, a1, -VALUE);
+
       test_sllc_o(a0, a1);
       test_sllv(a0, a1, SHIFT);
       test_srlc_o(a0, a1);
       test_srlv(a0, a1, SHIFT);
       test_srac_o(a0, a1);
       test_srav(a0, a1, SHIFT);
+
       test_sllc_on(a0, a1);
       test_sllv(a0, a1, -SHIFT);
       test_srlc_on(a0, a1);
       test_srlv(a0, a1, -SHIFT);
       test_srac_on(a0, a1);
       test_srav(a0, a1, -SHIFT);
+
+      test_sllc_add(a0, a1);
+      test_sllv_add(a0, a1, ADD_INIT);
+      test_srlc_add(a0, a1);
+      test_srlv_add(a0, a1, ADD_INIT);
+      test_srac_add(a0, a1);
+      test_srav_add(a0, a1, ADD_INIT);
+
+      test_sllc_and(a0, a1);
+      test_sllv_and(a0, a1, BIT_MASK);
+      test_srlc_and(a0, a1);
+      test_srlv_and(a0, a1, BIT_MASK);
+      test_srac_and(a0, a1);
+      test_srav_and(a0, a1, BIT_MASK);
     }
     // Test and verify results
     System.out.println("Verification");
@@ -354,6 +374,60 @@
         errn += verify("test_srav_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-SHIFT)));
       }
 
+      test_sllc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+      test_sllv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+
+      test_srlc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+      test_srlv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+
+      test_srac_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+      test_srav_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+
+      test_sllc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+      test_sllv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+
+      test_srlc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+      test_srlv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+
+      test_srac_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+      test_srav_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+
     }
 
     if (errn > 0)
@@ -696,6 +770,84 @@
     end = System.currentTimeMillis();
     System.out.println("test_srav_on: " + (end - start));
 
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_and: " + (end - start));
+
     return errn;
   }
 
@@ -854,6 +1006,26 @@
       a0[i] = (long)(a1[i]<<b);
     }
   }
+  static void test_sllc_add(long[] a0, long[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] + ADD_INIT)<<VALUE);
+    }
+  }
+  static void test_sllv_add(long[] a0, long[] a1, long b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] + b)<<VALUE);
+    }
+  }
+  static void test_sllc_and(long[] a0, long[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] & BIT_MASK)<<VALUE);
+    }
+  }
+  static void test_sllv_and(long[] a0, long[] a1, long b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] & b)<<VALUE);
+    }
+  }
 
   static void test_srlc(long[] a0, long[] a1) {
     for (int i = 0; i < a0.length; i+=1) {
@@ -880,6 +1052,26 @@
       a0[i] = (long)(a1[i]>>>b);
     }
   }
+  static void test_srlc_add(long[] a0, long[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] + ADD_INIT)>>>VALUE);
+    }
+  }
+  static void test_srlv_add(long[] a0, long[] a1, long b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] + b)>>>VALUE);
+    }
+  }
+  static void test_srlc_and(long[] a0, long[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] & BIT_MASK)>>>VALUE);
+    }
+  }
+  static void test_srlv_and(long[] a0, long[] a1, long b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] & b)>>>VALUE);
+    }
+  }
 
   static void test_srac(long[] a0, long[] a1) {
     for (int i = 0; i < a0.length; i+=1) {
@@ -906,6 +1098,26 @@
       a0[i] = (long)(a1[i]>>b);
     }
   }
+  static void test_srac_add(long[] a0, long[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] + ADD_INIT)>>VALUE);
+    }
+  }
+  static void test_srav_add(long[] a0, long[] a1, long b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] + b)>>VALUE);
+    }
+  }
+  static void test_srac_and(long[] a0, long[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] & BIT_MASK)>>VALUE);
+    }
+  }
+  static void test_srav_and(long[] a0, long[] a1, long b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (long)((a1[i] & b)>>VALUE);
+    }
+  }
 
   static int verify(String text, int i, long elem, long val) {
     if (elem != val) {
--- a/hotspot/test/compiler/6340864/TestShortVect.java	Wed Oct 31 18:35:56 2012 -0700
+++ b/hotspot/test/compiler/6340864/TestShortVect.java	Wed Jul 05 18:27:34 2017 +0200
@@ -75,6 +75,7 @@
       test_subc(a0, a1);
       test_subv(a0, a1, (short)VALUE);
       test_suba(a0, a1, a2);
+
       test_mulc(a0, a1);
       test_mulv(a0, a1, (short)VALUE);
       test_mula(a0, a1, a2);
@@ -87,6 +88,7 @@
       test_divc_n(a0, a1);
       test_divv(a0, a1, (short)-VALUE);
       test_diva(a0, a1, a3);
+
       test_andc(a0, a1);
       test_andv(a0, a1, (short)BIT_MASK);
       test_anda(a0, a1, a4);
@@ -96,30 +98,49 @@
       test_xorc(a0, a1);
       test_xorv(a0, a1, (short)BIT_MASK);
       test_xora(a0, a1, a4);
+
       test_sllc(a0, a1);
       test_sllv(a0, a1, VALUE);
       test_srlc(a0, a1);
       test_srlv(a0, a1, VALUE);
       test_srac(a0, a1);
       test_srav(a0, a1, VALUE);
+
       test_sllc_n(a0, a1);
       test_sllv(a0, a1, -VALUE);
       test_srlc_n(a0, a1);
       test_srlv(a0, a1, -VALUE);
       test_srac_n(a0, a1);
       test_srav(a0, a1, -VALUE);
+
       test_sllc_o(a0, a1);
       test_sllv(a0, a1, SHIFT);
       test_srlc_o(a0, a1);
       test_srlv(a0, a1, SHIFT);
       test_srac_o(a0, a1);
       test_srav(a0, a1, SHIFT);
+
       test_sllc_on(a0, a1);
       test_sllv(a0, a1, -SHIFT);
       test_srlc_on(a0, a1);
       test_srlv(a0, a1, -SHIFT);
       test_srac_on(a0, a1);
       test_srav(a0, a1, -SHIFT);
+
+      test_sllc_add(a0, a1);
+      test_sllv_add(a0, a1, ADD_INIT);
+      test_srlc_add(a0, a1);
+      test_srlv_add(a0, a1, ADD_INIT);
+      test_srac_add(a0, a1);
+      test_srav_add(a0, a1, ADD_INIT);
+
+      test_sllc_and(a0, a1);
+      test_sllv_and(a0, a1, BIT_MASK);
+      test_srlc_and(a0, a1);
+      test_srlv_and(a0, a1, BIT_MASK);
+      test_srac_and(a0, a1);
+      test_srav_and(a0, a1, BIT_MASK);
+
       test_pack2(p2, a1);
       test_unpack2(a0, p2);
       test_pack2_swap(p2, a1);
@@ -364,6 +385,60 @@
         errn += verify("test_srav_on: ", i, a0[i], (short)((short)(ADD_INIT+i)>>(-SHIFT)));
       }
 
+      test_sllc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_add: ", i, a0[i], (short)(((short)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+      test_sllv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_add: ", i, a0[i], (short)(((short)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+
+      test_srlc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_add: ", i, a0[i], (short)(((short)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+      test_srlv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_add: ", i, a0[i], (short)(((short)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+
+      test_srac_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_add: ", i, a0[i], (short)(((short)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+      test_srav_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_add: ", i, a0[i], (short)(((short)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+
+      test_sllc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_and: ", i, a0[i], (short)(((short)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+      test_sllv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_and: ", i, a0[i], (short)(((short)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+
+      test_srlc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_and: ", i, a0[i], (short)(((short)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+      test_srlv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_and: ", i, a0[i], (short)(((short)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+
+      test_srac_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_and: ", i, a0[i], (short)(((short)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+      test_srav_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_and: ", i, a0[i], (short)(((short)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+
       test_pack2(p2, a1);
       for (int i=0; i<ARRLEN/2; i++) {
         errn += verify("test_pack2: ", i, p2[i], ((int)(ADD_INIT+2*i) & 0xFFFF) | ((int)(ADD_INIT+2*i+1) << 16));
@@ -762,6 +837,84 @@
 
     start = System.currentTimeMillis();
     for (int i=0; i<ITERS; i++) {
+      test_sllc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
       test_pack2(p2, a1);
     }
     end = System.currentTimeMillis();
@@ -968,6 +1121,26 @@
       a0[i] = (short)(a1[i]<<b);
     }
   }
+  static void test_sllc_add(short[] a0, short[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] + ADD_INIT)<<VALUE);
+    }
+  }
+  static void test_sllv_add(short[] a0, short[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] + b)<<VALUE);
+    }
+  }
+  static void test_sllc_and(short[] a0, short[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] & BIT_MASK)<<VALUE);
+    }
+  }
+  static void test_sllv_and(short[] a0, short[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] & b)<<VALUE);
+    }
+  }
 
   static void test_srlc(short[] a0, short[] a1) {
     for (int i = 0; i < a0.length; i+=1) {
@@ -994,6 +1167,26 @@
       a0[i] = (short)(a1[i]>>>b);
     }
   }
+  static void test_srlc_add(short[] a0, short[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] + ADD_INIT)>>>VALUE);
+    }
+  }
+  static void test_srlv_add(short[] a0, short[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] + b)>>>VALUE);
+    }
+  }
+  static void test_srlc_and(short[] a0, short[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] & BIT_MASK)>>>VALUE);
+    }
+  }
+  static void test_srlv_and(short[] a0, short[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] & b)>>>VALUE);
+    }
+  }
 
   static void test_srac(short[] a0, short[] a1) {
     for (int i = 0; i < a0.length; i+=1) {
@@ -1020,6 +1213,26 @@
       a0[i] = (short)(a1[i]>>b);
     }
   }
+  static void test_srac_add(short[] a0, short[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] + ADD_INIT)>>VALUE);
+    }
+  }
+  static void test_srav_add(short[] a0, short[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] + b)>>VALUE);
+    }
+  }
+  static void test_srac_and(short[] a0, short[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] & BIT_MASK)>>VALUE);
+    }
+  }
+  static void test_srav_and(short[] a0, short[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (short)((a1[i] & b)>>VALUE);
+    }
+  }
 
   static void test_pack2(int[] p2, short[] a1) {
     if (p2.length*2 > a1.length) return;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7184394/TestAESBase.java	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @author Tom Deneau
+ */
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.AlgorithmParameters;
+
+import java.util.Random;
+import java.util.Arrays;
+
+abstract public class TestAESBase {
+  int msgSize = Integer.getInteger("msgSize", 646);
+  boolean checkOutput = Boolean.getBoolean("checkOutput");
+  boolean noReinit = Boolean.getBoolean("noReinit");
+  int keySize = Integer.getInteger("keySize", 128);
+  String algorithm = System.getProperty("algorithm", "AES");
+  String mode = System.getProperty("mode", "CBC");
+  byte[] input;
+  byte[] encode;
+  byte[] expectedEncode;
+  byte[] decode;
+  byte[] expectedDecode;
+  Random random = new Random(0);
+  Cipher cipher;
+  Cipher dCipher;
+  String paddingStr = "PKCS5Padding";
+  AlgorithmParameters algParams;
+  SecretKey key;
+  int ivLen;
+
+  static int numThreads = 0;
+  int  threadId;
+  static synchronized int getThreadId() {
+    int id = numThreads;
+    numThreads++;
+    return id;
+  }
+
+  abstract public void run();
+
+  public void prepare() {
+    try {
+    System.out.println("\nmsgSize=" + msgSize + ", key size=" + keySize + ", reInit=" + !noReinit + ", checkOutput=" + checkOutput);
+
+      int keyLenBytes = (keySize == 0 ? 16 : keySize/8);
+      byte keyBytes[] = new byte[keyLenBytes];
+      if (keySize == 128)
+        keyBytes = new byte[] {-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7};
+      else
+        random.nextBytes(keyBytes);
+
+      key = new SecretKeySpec(keyBytes, algorithm);
+      if (threadId == 0) {
+        System.out.println("Algorithm: " + key.getAlgorithm() + "("
+                           + key.getEncoded().length * 8 + "bit)");
+      }
+      input = new byte[msgSize];
+      for (int i=0; i<input.length; i++) {
+        input[i] = (byte) (i & 0xff);
+      }
+
+      cipher = Cipher.getInstance(algorithm + "/" + mode + "/" + paddingStr, "SunJCE");
+      dCipher = Cipher.getInstance(algorithm + "/" + mode + "/" + paddingStr, "SunJCE");
+
+      ivLen = (algorithm.equals("AES") ? 16 : algorithm.equals("DES") ? 8 : 0);
+      IvParameterSpec initVector = new IvParameterSpec(new byte[ivLen]);
+
+      cipher.init(Cipher.ENCRYPT_MODE, key, initVector);
+      algParams = cipher.getParameters();
+      dCipher.init(Cipher.DECRYPT_MODE, key, algParams);
+      if (threadId == 0) {
+        childShowCipher();
+      }
+
+      // do one encode and decode in preparation
+      // this will also create the encode buffer and decode buffer
+      encode = cipher.doFinal(input);
+      decode = dCipher.doFinal(encode);
+      if (checkOutput) {
+        expectedEncode = (byte[]) encode.clone();
+        expectedDecode = (byte[]) decode.clone();
+        showArray(key.getEncoded()  ,  "key:    ");
+        showArray(input,  "input:  ");
+        showArray(encode, "encode: ");
+        showArray(decode, "decode: ");
+      }
+    }
+    catch (Exception e) {
+      e.printStackTrace();
+      System.exit(1);
+    }
+  }
+
+  void showArray(byte b[], String name) {
+    System.out.format("%s [%d]: ", name, b.length);
+    for (int i=0; i<Math.min(b.length, 32); i++) {
+      System.out.format("%02x ", b[i] & 0xff);
+    }
+    System.out.println();
+  }
+
+  void compareArrays(byte b[], byte exp[]) {
+    if (b.length != exp.length) {
+      System.out.format("different lengths for actual and expected output arrays\n");
+      showArray(b, "test: ");
+      showArray(exp, "exp : ");
+      System.exit(1);
+    }
+    for (int i=0; i< exp.length; i++) {
+      if (b[i] != exp[i]) {
+        System.out.format("output error at index %d: got %02x, expected %02x\n", i, b[i] & 0xff, exp[i] & 0xff);
+        showArray(b, "test: ");
+        showArray(exp, "exp : ");
+        System.exit(1);
+      }
+    }
+  }
+
+
+  void showCipher(Cipher c, String kind) {
+    System.out.println(kind + " cipher provider: " + cipher.getProvider());
+    System.out.println(kind + " cipher algorithm: " + cipher.getAlgorithm());
+  }
+
+  abstract void childShowCipher();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7184394/TestAESDecode.java	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @author Tom Deneau
+ */
+
+import javax.crypto.Cipher;
+
+public class TestAESDecode extends TestAESBase {
+  @Override
+  public void run() {
+    try {
+      if (!noReinit) dCipher.init(Cipher.DECRYPT_MODE, key, algParams);
+      if (checkOutput) {
+        // checked version creates new output buffer each time
+        decode = dCipher.doFinal(encode, 0, encode.length);
+        compareArrays(decode, expectedDecode);
+      } else {
+        // non-checked version outputs to existing encode buffer for maximum speed
+        decode = new byte[dCipher.getOutputSize(encode.length)];
+        dCipher.doFinal(encode, 0, encode.length, decode);
+      }
+    }
+    catch (Exception e) {
+      e.printStackTrace();
+      System.exit(1);
+    }
+  }
+
+  @Override
+  void childShowCipher() {
+    showCipher(dCipher, "Decryption");
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7184394/TestAESEncode.java	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @author Tom Deneau
+ */
+
+import javax.crypto.Cipher;
+
+public class TestAESEncode extends TestAESBase {
+  @Override
+  public void run() {
+    try {
+      if (!noReinit) cipher.init(Cipher.ENCRYPT_MODE, key, algParams);
+      if (checkOutput) {
+        // checked version creates new output buffer each time
+        encode = cipher.doFinal(input, 0, msgSize);
+        compareArrays(encode, expectedEncode);
+      } else {
+        // non-checked version outputs to existing encode buffer for maximum speed
+        encode = new byte[cipher.getOutputSize(msgSize)];
+        cipher.doFinal(input, 0, msgSize, encode);
+      }
+    }
+    catch (Exception e) {
+      e.printStackTrace();
+      System.exit(1);
+    }
+  }
+
+  @Override
+  void childShowCipher() {
+    showCipher(cipher, "Encryption");
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7184394/TestAESMain.java	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7184394
+ * @summary add intrinsics to use AES instructions
+ *
+ * @run main/othervm/timeout=600 -Xbatch -DcheckOutput=true TestAESMain
+ *
+ * @author Tom Deneau
+ */
+
+public class TestAESMain {
+  public static void main(String[] args) {
+    int iters = (args.length > 0 ? Integer.valueOf(args[0]) : 1000000);
+    System.out.println(iters + " iterations");
+    TestAESEncode etest = new TestAESEncode();
+    etest.prepare();
+    long start = System.nanoTime();
+    for (int i=0; i<iters; i++) {
+      etest.run();
+    }
+    long end = System.nanoTime();
+    System.out.println("TestAESEncode runtime was " + (double)((end - start)/1000000000.0) + " ms");
+
+    TestAESDecode dtest = new TestAESDecode();
+    dtest.prepare();
+    start = System.nanoTime();
+    for (int i=0; i<iters; i++) {
+      dtest.run();
+    }
+    end = System.nanoTime();
+    System.out.println("TestAESDecode runtime was " + (double)((end - start)/1000000000.0) + " ms");
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/8000805/Test8000805.java	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8000805
+ * @summary JMM issue: short loads are non-atomic
+ *
+ * @run main/othervm -server -XX:-TieredCompilation -Xcomp -XX:+PrintCompilation -XX:CompileOnly=Test8000805.loadS2LmaskFF,Test8000805.loadS2Lmask16,Test8000805.loadS2Lmask13,Test8000805.loadUS_signExt,Test8000805.loadB2L_mask8 Test8000805
+ */
+
+public class Test8000805 {
+    static long loadS2LmaskFF   (short[] sa) { return sa[0] & 0xFF; }
+    static long loadS2LmaskFF_1 (short[] sa) { return sa[0] & 0xFF; }
+
+    static long loadS2Lmask16   (short[] sa) { return sa[0] & 0xFFFE; }
+    static long loadS2Lmask16_1 (short[] sa) { return sa[0] & 0xFFFE; }
+
+    static long loadS2Lmask13   (short[] sa) { return sa[0] & 0x0FFF; }
+    static long loadS2Lmask13_1 (short[] sa) { return sa[0] & 0x0FFF; }
+
+    static int loadUS_signExt   (char[] ca) { return (ca[0] << 16) >> 16; }
+    static int loadUS_signExt_1 (char[] ca) { return (ca[0] << 16) >> 16; }
+
+    static long loadB2L_mask8   (byte[] ba) { return ba[0] & 0x55; }
+    static long loadB2L_mask8_1 (byte[] ba) { return ba[0] & 0x55; }
+
+    public static void main(String[] args) {
+        for (int i = Byte.MIN_VALUE; i < Byte.MAX_VALUE; i++) {
+            byte[] ba = new byte[]  { (byte) i};
+
+            { long v1 = loadB2L_mask8(ba);
+              long v2 = loadB2L_mask8_1(ba);
+              if (v1 != v2)
+              throw new InternalError(String.format("loadB2L_mask8 failed: %x != %x", v1, v2)); }
+        }
+
+        for (int i = Short.MIN_VALUE; i < Short.MAX_VALUE; i++) {
+            short[] sa = new short[] { (short)i };
+            char[] ca = new char[] { (char)i };
+
+            { long v1 = loadS2LmaskFF(sa);
+              long v2 = loadS2LmaskFF_1(sa);
+              if (v1 != v2)
+              throw new InternalError(String.format("loadS2LmaskFF failed: %x != %x", v1, v2)); }
+
+            { long v1 = loadS2Lmask16(sa);
+              long v2 = loadS2Lmask16_1(sa);
+              if (v1 != v2)
+              throw new InternalError(String.format("loadS2Lmask16 failed: %x != %x", v1, v2)); }
+
+            { long v1 = loadS2Lmask13(sa);
+              long v2 = loadS2Lmask13_1(sa);
+              if (v1 != v2)
+              throw new InternalError(String.format("loadS2Lmask13 failed: %x != %x", v1, v2)); }
+
+            { int v1 = loadUS_signExt(ca);
+              int v2 = loadUS_signExt_1(ca);
+              if (v1 != v2)
+                throw new InternalError(String.format("loadUS_signExt failed: %x != %x", v1, v2)); }
+        }
+
+        System.out.println("TEST PASSED.");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/8001183/TestCharVect.java	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,1332 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 8001183
+ * @summary incorrect results of char vectors right shift operaiton
+ *
+ * @run main/othervm/timeout=400 -Xbatch -Xmx64m TestCharVect
+ */
+
+public class TestCharVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int ADD_INIT = Character.MAX_VALUE-500;
+  private static final int BIT_MASK = 0xB731;
+  private static final int VALUE = 7;
+  private static final int SHIFT = 16;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Char vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    char[] a0 = new char[ARRLEN];
+    char[] a1 = new char[ARRLEN];
+    short[] a2 = new short[ARRLEN];
+    short[] a3 = new short[ARRLEN];
+    short[] a4 = new short[ARRLEN];
+     int[] p2 = new  int[ARRLEN/2];
+    long[] p4 = new long[ARRLEN/4];
+    // Initialize
+    int gold_sum = 0;
+    for (int i=0; i<ARRLEN; i++) {
+      char val = (char)(ADD_INIT+i);
+      gold_sum += val;
+      a1[i] = val;
+      a2[i] = VALUE;
+      a3[i] = -VALUE;
+      a4[i] = (short)BIT_MASK;
+    }
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_sum(a1);
+      test_addc(a0, a1);
+      test_addv(a0, a1, (char)VALUE);
+      test_adda(a0, a1, a2);
+      test_subc(a0, a1);
+      test_subv(a0, a1, (char)VALUE);
+      test_suba(a0, a1, a2);
+
+      test_mulc(a0, a1);
+      test_mulv(a0, a1, (char)VALUE);
+      test_mula(a0, a1, a2);
+      test_divc(a0, a1);
+      test_divv(a0, a1, VALUE);
+      test_diva(a0, a1, a2);
+      test_mulc_n(a0, a1);
+      test_mulv(a0, a1, (char)-VALUE);
+      test_mula(a0, a1, a3);
+      test_divc_n(a0, a1);
+      test_divv(a0, a1, -VALUE);
+      test_diva(a0, a1, a3);
+
+      test_andc(a0, a1);
+      test_andv(a0, a1, (short)BIT_MASK);
+      test_anda(a0, a1, a4);
+      test_orc(a0, a1);
+      test_orv(a0, a1, (short)BIT_MASK);
+      test_ora(a0, a1, a4);
+      test_xorc(a0, a1);
+      test_xorv(a0, a1, (short)BIT_MASK);
+      test_xora(a0, a1, a4);
+
+      test_sllc(a0, a1);
+      test_sllv(a0, a1, VALUE);
+      test_srlc(a0, a1);
+      test_srlv(a0, a1, VALUE);
+      test_srac(a0, a1);
+      test_srav(a0, a1, VALUE);
+
+      test_sllc_n(a0, a1);
+      test_sllv(a0, a1, -VALUE);
+      test_srlc_n(a0, a1);
+      test_srlv(a0, a1, -VALUE);
+      test_srac_n(a0, a1);
+      test_srav(a0, a1, -VALUE);
+
+      test_sllc_o(a0, a1);
+      test_sllv(a0, a1, SHIFT);
+      test_srlc_o(a0, a1);
+      test_srlv(a0, a1, SHIFT);
+      test_srac_o(a0, a1);
+      test_srav(a0, a1, SHIFT);
+
+      test_sllc_on(a0, a1);
+      test_sllv(a0, a1, -SHIFT);
+      test_srlc_on(a0, a1);
+      test_srlv(a0, a1, -SHIFT);
+      test_srac_on(a0, a1);
+      test_srav(a0, a1, -SHIFT);
+
+      test_sllc_add(a0, a1);
+      test_sllv_add(a0, a1, ADD_INIT);
+      test_srlc_add(a0, a1);
+      test_srlv_add(a0, a1, ADD_INIT);
+      test_srac_add(a0, a1);
+      test_srav_add(a0, a1, ADD_INIT);
+
+      test_sllc_and(a0, a1);
+      test_sllv_and(a0, a1, BIT_MASK);
+      test_srlc_and(a0, a1);
+      test_srlv_and(a0, a1, BIT_MASK);
+      test_srac_and(a0, a1);
+      test_srav_and(a0, a1, BIT_MASK);
+
+      test_pack2(p2, a1);
+      test_unpack2(a0, p2);
+      test_pack2_swap(p2, a1);
+      test_unpack2_swap(a0, p2);
+      test_pack4(p4, a1);
+      test_unpack4(a0, p4);
+      test_pack4_swap(p4, a1);
+      test_unpack4_swap(a0, p4);
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      int sum = test_sum(a1);
+      if (sum != gold_sum) {
+        System.err.println("test_sum:  " + sum + " != " + gold_sum);
+        errn++;
+      }
+
+      test_addc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_addc: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));
+      }
+      test_addv(a0, a1, (char)VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_addv: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));
+      }
+      test_adda(a0, a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_adda: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));
+      }
+
+      test_subc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_subc: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));
+      }
+      test_subv(a0, a1, (char)VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_subv: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));
+      }
+      test_suba(a0, a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_suba: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));
+      }
+
+      test_mulc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_mulc: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));
+      }
+      test_mulv(a0, a1, (char)VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_mulv: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));
+      }
+      test_mula(a0, a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_mula: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));
+      }
+
+      test_divc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_divc: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));
+      }
+      test_divv(a0, a1, VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_divv: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));
+      }
+      test_diva(a0, a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_diva: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));
+      }
+
+      test_mulc_n(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_mulc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));
+      }
+      test_mulv(a0, a1, (char)-VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_mulv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));
+      }
+      test_mula(a0, a1, a3);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_mula_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));
+      }
+
+      test_divc_n(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_divc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));
+      }
+      test_divv(a0, a1, -VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_divv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));
+      }
+      test_diva(a0, a1, a3);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_diva_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));
+      }
+
+      test_andc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_andc: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));
+      }
+      test_andv(a0, a1, (short)BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_andv: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));
+      }
+      test_anda(a0, a1, a4);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_anda: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));
+      }
+
+      test_orc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_orc: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));
+      }
+      test_orv(a0, a1, (short)BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_orv: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));
+      }
+      test_ora(a0, a1, a4);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ora: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));
+      }
+
+      test_xorc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_xorc: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));
+      }
+      test_xorv(a0, a1, (short)BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_xorv: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));
+      }
+      test_xora(a0, a1, a4);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_xora: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));
+      }
+
+      test_sllc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc: ", i, a0[i], (char)((char)(ADD_INIT+i)<<VALUE));
+      }
+      test_sllv(a0, a1, VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv: ", i, a0[i], (char)((char)(ADD_INIT+i)<<VALUE));
+      }
+
+      test_srlc(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>VALUE));
+      }
+      test_srlv(a0, a1, VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>VALUE));
+      }
+
+      test_srac(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac: ", i, a0[i], (char)((char)(ADD_INIT+i)>>VALUE));
+      }
+      test_srav(a0, a1, VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav: ", i, a0[i], (char)((char)(ADD_INIT+i)>>VALUE));
+      }
+
+      test_sllc_n(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-VALUE)));
+      }
+      test_sllv(a0, a1, -VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-VALUE)));
+      }
+
+      test_srlc_n(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-VALUE)));
+      }
+      test_srlv(a0, a1, -VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-VALUE)));
+      }
+
+      test_srac_n(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-VALUE)));
+      }
+      test_srav(a0, a1, -VALUE);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-VALUE)));
+      }
+
+      test_sllc_o(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_o: ", i, a0[i], (char)((char)(ADD_INIT+i)<<SHIFT));
+      }
+      test_sllv(a0, a1, SHIFT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_o: ", i, a0[i], (char)((char)(ADD_INIT+i)<<SHIFT));
+      }
+
+      test_srlc_o(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>SHIFT));
+      }
+      test_srlv(a0, a1, SHIFT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>SHIFT));
+      }
+
+      test_srac_o(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>SHIFT));
+      }
+      test_srav(a0, a1, SHIFT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>SHIFT));
+      }
+
+      test_sllc_on(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_on: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-SHIFT)));
+      }
+      test_sllv(a0, a1, -SHIFT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_on: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-SHIFT)));
+      }
+
+      test_srlc_on(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-SHIFT)));
+      }
+      test_srlv(a0, a1, -SHIFT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-SHIFT)));
+      }
+
+      test_srac_on(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-SHIFT)));
+      }
+      test_srav(a0, a1, -SHIFT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-SHIFT)));
+      }
+
+      test_sllc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+      test_sllv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)<<VALUE));
+      }
+
+      test_srlc_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+      test_srlv_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
+      }
+
+      test_srac_add(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+      test_srav_add(a0, a1, ADD_INIT);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>VALUE));
+      }
+
+      test_sllc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllc_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+      test_sllv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_sllv_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)<<VALUE));
+      }
+
+      test_srlc_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlc_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+      test_srlv_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srlv_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
+      }
+
+      test_srac_and(a0, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srac_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+      test_srav_and(a0, a1, BIT_MASK);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_srav_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>VALUE));
+      }
+
+      test_pack2(p2, a1);
+      for (int i=0; i<ARRLEN/2; i++) {
+        errn += verify("test_pack2: ", i, p2[i], ((int)(ADD_INIT+2*i) & 0xFFFF) | ((int)(ADD_INIT+2*i+1) << 16));
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a0[i] = (char)-1;
+      }
+      test_unpack2(a0, p2);
+      for (int i=0; i<(ARRLEN&(-2)); i++) {
+        errn += verify("test_unpack2: ", i, a0[i], (char)(ADD_INIT+i));
+      }
+
+      test_pack2_swap(p2, a1);
+      for (int i=0; i<ARRLEN/2; i++) {
+        errn += verify("test_pack2_swap: ", i, p2[i], ((int)(ADD_INIT+2*i+1) & 0xFFFF) | ((int)(ADD_INIT+2*i) << 16));
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a0[i] = (char)-1;
+      }
+      test_unpack2_swap(a0, p2);
+      for (int i=0; i<(ARRLEN&(-2)); i++) {
+        errn += verify("test_unpack2_swap: ", i, a0[i], (char)(ADD_INIT+i));
+      }
+
+      test_pack4(p4, a1);
+      for (int i=0; i<ARRLEN/4; i++) {
+        errn += verify("test_pack4: ", i, p4[i],  ((long)(ADD_INIT+4*i+0) & 0xFFFFl) |
+                                                 (((long)(ADD_INIT+4*i+1) & 0xFFFFl) << 16)  |
+                                                 (((long)(ADD_INIT+4*i+2) & 0xFFFFl) << 32)  |
+                                                 (((long)(ADD_INIT+4*i+3) & 0xFFFFl) << 48));
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a0[i] = (char)-1;
+      }
+      test_unpack4(a0, p4);
+      for (int i=0; i<(ARRLEN&(-4)); i++) {
+        errn += verify("test_unpack4: ", i, a0[i], (char)(ADD_INIT+i));
+      }
+
+      test_pack4_swap(p4, a1);
+      for (int i=0; i<ARRLEN/4; i++) {
+        errn += verify("test_pack4_swap: ", i, p4[i],  ((long)(ADD_INIT+4*i+3) & 0xFFFFl) |
+                                                      (((long)(ADD_INIT+4*i+2) & 0xFFFFl) << 16)  |
+                                                      (((long)(ADD_INIT+4*i+1) & 0xFFFFl) << 32)  |
+                                                      (((long)(ADD_INIT+4*i+0) & 0xFFFFl) << 48));
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a0[i] = (char)-1;
+      }
+      test_unpack4_swap(a0, p4);
+      for (int i=0; i<(ARRLEN&(-4)); i++) {
+        errn += verify("test_unpack4_swap: ", i, a0[i], (char)(ADD_INIT+i));
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sum(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sum: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_addc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_addc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_addv(a0, a1, (char)VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_addv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_adda(a0, a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_adda: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_subc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_subc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_subv(a0, a1, (char)VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_subv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_suba(a0, a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_suba: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_mulc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_mulc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_mulv(a0, a1, (char)VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_mulv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_mula(a0, a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_mula: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_divc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_divc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_divv(a0, a1, VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_divv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_diva(a0, a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_diva: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_mulc_n(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_mulc_n: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_mulv(a0, a1, (char)-VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_mulv_n: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_mula(a0, a1, a3);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_mula_n: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_divc_n(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_divc_n: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_divv(a0, a1, -VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_divv_n: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_diva(a0, a1, a3);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_diva_n: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_andc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_andc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_andv(a0, a1, (short)BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_andv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_anda(a0, a1, a4);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_anda: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_orc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_orc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_orv(a0, a1, (short)BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_orv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ora(a0, a1, a4);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ora: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_xorc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_xorc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_xorv(a0, a1, (short)BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_xorv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_xora(a0, a1, a4);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_xora: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv(a0, a1, VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv(a0, a1, VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav(a0, a1, VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_n(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_n: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv(a0, a1, -VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_n: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_n(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_n: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv(a0, a1, -VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_n: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_n(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_n: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav(a0, a1, -VALUE);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_n: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_o(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_o: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv(a0, a1, SHIFT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_o: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_o(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_o: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv(a0, a1, SHIFT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_o: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_o(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_o: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav(a0, a1, SHIFT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_o: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_on(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_on: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv(a0, a1, -SHIFT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_on: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_on(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_on: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv(a0, a1, -SHIFT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_on: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_on(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_on: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav(a0, a1, -SHIFT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_on: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_add(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_add: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_add(a0, a1, ADD_INIT);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_add: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_sllv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_sllv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlc_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlc_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srlv_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srlv_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srac_and(a0, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srac_and: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_srav_and(a0, a1, BIT_MASK);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_srav_and: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_pack2(p2, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_pack2: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_unpack2(a0, p2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_unpack2: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_pack2_swap(p2, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_pack2_swap: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_unpack2_swap(a0, p2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_unpack2_swap: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_pack4(p4, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_pack4: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_unpack4(a0, p4);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_unpack4: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_pack4_swap(p4, a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_pack4_swap: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_unpack4_swap(a0, p4);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_unpack4_swap: " + (end - start));
+
+    return errn;
+  }
+
+  static int test_sum(char[] a1) {
+    int sum = 0;
+    for (int i = 0; i < a1.length; i+=1) {
+      sum += a1[i];
+    }
+    return sum;
+  }
+
+  static void test_addc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]+VALUE);
+    }
+  }
+  static void test_addv(char[] a0, char[] a1, char b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]+b);
+    }
+  }
+  static void test_adda(char[] a0, char[] a1, short[] a2) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]+a2[i]);
+    }
+  }
+
+  static void test_subc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]-VALUE);
+    }
+  }
+  static void test_subv(char[] a0, char[] a1, char b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]-b);
+    }
+  }
+  static void test_suba(char[] a0, char[] a1, short[] a2) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]-a2[i]);
+    }
+  }
+
+  static void test_mulc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]*VALUE);
+    }
+  }
+  static void test_mulc_n(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]*(-VALUE));
+    }
+  }
+  static void test_mulv(char[] a0, char[] a1, char b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]*b);
+    }
+  }
+  static void test_mula(char[] a0, char[] a1, short[] a2) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]*a2[i]);
+    }
+  }
+
+  static void test_divc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]/VALUE);
+    }
+  }
+  static void test_divc_n(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]/(-VALUE));
+    }
+  }
+  static void test_divv(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]/b);
+    }
+  }
+  static void test_diva(char[] a0, char[] a1, short[] a2) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]/a2[i]);
+    }
+  }
+
+  static void test_andc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]&BIT_MASK);
+    }
+  }
+  static void test_andv(char[] a0, char[] a1, short b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]&b);
+    }
+  }
+  static void test_anda(char[] a0, char[] a1, short[] a2) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]&a2[i]);
+    }
+  }
+
+  static void test_orc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]|BIT_MASK);
+    }
+  }
+  static void test_orv(char[] a0, char[] a1, short b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]|b);
+    }
+  }
+  static void test_ora(char[] a0, char[] a1, short[] a2) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]|a2[i]);
+    }
+  }
+
+  static void test_xorc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]^BIT_MASK);
+    }
+  }
+  static void test_xorv(char[] a0, char[] a1, short b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]^b);
+    }
+  }
+  static void test_xora(char[] a0, char[] a1, short[] a2) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]^a2[i]);
+    }
+  }
+
+  static void test_sllc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]<<VALUE);
+    }
+  }
+  static void test_sllc_n(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]<<(-VALUE));
+    }
+  }
+  static void test_sllc_o(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]<<SHIFT);
+    }
+  }
+  static void test_sllc_on(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]<<(-SHIFT));
+    }
+  }
+  static void test_sllv(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]<<b);
+    }
+  }
+  static void test_sllc_add(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] + ADD_INIT)<<VALUE);
+    }
+  }
+  static void test_sllv_add(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] + b)<<VALUE);
+    }
+  }
+  static void test_sllc_and(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] & BIT_MASK)<<VALUE);
+    }
+  }
+  static void test_sllv_and(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] & b)<<VALUE);
+    }
+  }
+
+  static void test_srlc(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>>VALUE);
+    }
+  }
+  static void test_srlc_n(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>>(-VALUE));
+    }
+  }
+  static void test_srlc_o(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>>SHIFT);
+    }
+  }
+  static void test_srlc_on(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>>(-SHIFT));
+    }
+  }
+  static void test_srlv(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>>b);
+    }
+  }
+  static void test_srlc_add(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] + ADD_INIT)>>>VALUE);
+    }
+  }
+  static void test_srlv_add(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] + b)>>>VALUE);
+    }
+  }
+  static void test_srlc_and(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] & BIT_MASK)>>>VALUE);
+    }
+  }
+  static void test_srlv_and(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] & b)>>>VALUE);
+    }
+  }
+
+  static void test_srac(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>VALUE);
+    }
+  }
+  static void test_srac_n(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>(-VALUE));
+    }
+  }
+  static void test_srac_o(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>SHIFT);
+    }
+  }
+  static void test_srac_on(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>(-SHIFT));
+    }
+  }
+  static void test_srav(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)(a1[i]>>b);
+    }
+  }
+  static void test_srac_add(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] + ADD_INIT)>>VALUE);
+    }
+  }
+  static void test_srav_add(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] + b)>>VALUE);
+    }
+  }
+  static void test_srac_and(char[] a0, char[] a1) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] & BIT_MASK)>>VALUE);
+    }
+  }
+  static void test_srav_and(char[] a0, char[] a1, int b) {
+    for (int i = 0; i < a0.length; i+=1) {
+      a0[i] = (char)((a1[i] & b)>>VALUE);
+    }
+  }
+
+  static void test_pack2(int[] p2, char[] a1) {
+    if (p2.length*2 > a1.length) return;
+    for (int i = 0; i < p2.length; i+=1) {
+      int l0 = (int)a1[i*2+0];
+      int l1 = (int)a1[i*2+1];
+      p2[i] = (l1 << 16) | (l0 & 0xFFFF);
+    }
+  }
+  static void test_unpack2(char[] a0, int[] p2) {
+    if (p2.length*2 > a0.length) return;
+    for (int i = 0; i < p2.length; i+=1) {
+      int l = p2[i];
+      a0[i*2+0] = (char)(l & 0xFFFF);
+      a0[i*2+1] = (char)(l >> 16);
+    }
+  }
+  static void test_pack2_swap(int[] p2, char[] a1) {
+    if (p2.length*2 > a1.length) return;
+    for (int i = 0; i < p2.length; i+=1) {
+      int l0 = (int)a1[i*2+0];
+      int l1 = (int)a1[i*2+1];
+      p2[i] = (l0 << 16) | (l1 & 0xFFFF);
+    }
+  }
+  static void test_unpack2_swap(char[] a0, int[] p2) {
+    if (p2.length*2 > a0.length) return;
+    for (int i = 0; i < p2.length; i+=1) {
+      int l = p2[i];
+      a0[i*2+0] = (char)(l >> 16);
+      a0[i*2+1] = (char)(l & 0xFFFF);
+    }
+  }
+
+  static void test_pack4(long[] p4, char[] a1) {
+    if (p4.length*4 > a1.length) return;
+    for (int i = 0; i < p4.length; i+=1) {
+      long l0 = (long)a1[i*4+0];
+      long l1 = (long)a1[i*4+1];
+      long l2 = (long)a1[i*4+2];
+      long l3 = (long)a1[i*4+3];
+      p4[i] = (l0 & 0xFFFFl) |
+             ((l1 & 0xFFFFl) << 16) |
+             ((l2 & 0xFFFFl) << 32) |
+             ((l3 & 0xFFFFl) << 48);
+    }
+  }
+  static void test_unpack4(char[] a0, long[] p4) {
+    if (p4.length*4 > a0.length) return;
+    for (int i = 0; i < p4.length; i+=1) {
+      long l = p4[i];
+      a0[i*4+0] = (char)(l & 0xFFFFl);
+      a0[i*4+1] = (char)(l >> 16);
+      a0[i*4+2] = (char)(l >> 32);
+      a0[i*4+3] = (char)(l >> 48);
+    }
+  }
+  static void test_pack4_swap(long[] p4, char[] a1) {
+    if (p4.length*4 > a1.length) return;
+    for (int i = 0; i < p4.length; i+=1) {
+      long l0 = (long)a1[i*4+0];
+      long l1 = (long)a1[i*4+1];
+      long l2 = (long)a1[i*4+2];
+      long l3 = (long)a1[i*4+3];
+      p4[i] = (l3 & 0xFFFFl) |
+             ((l2 & 0xFFFFl) << 16) |
+             ((l1 & 0xFFFFl) << 32) |
+             ((l0 & 0xFFFFl) << 48);
+    }
+  }
+  static void test_unpack4_swap(char[] a0, long[] p4) {
+    if (p4.length*4 > a0.length) return;
+    for (int i = 0; i < p4.length; i+=1) {
+      long l = p4[i];
+      a0[i*4+0] = (char)(l >> 48);
+      a0[i*4+1] = (char)(l >> 32);
+      a0[i*4+2] = (char)(l >> 16);
+      a0[i*4+3] = (char)(l & 0xFFFFl);
+    }
+  }
+
+  static int verify(String text, int i, int elem, int val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+
+  static int verify(String text, int i, long elem, long val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + Long.toHexString(elem) + " != " + Long.toHexString(val));
+      return 1;
+    }
+    return 0;
+  }
+}
--- a/hotspot/test/runtime/7158800/BadUtf8.java	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1254 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 7158800
- * @summary Test that 1200 symbols that hash to the same value triggers
- * the symbol table alternate hashing mechanism.  There isn't actually a
- * way to verify this.
- */
-//
-// Generate large number of strings that hash to the same value
-// to slow down symbol table lookup.
-
-import java.io.BufferedOutputStream;
-import java.io.FileOutputStream;
-
-public class BadUtf8 {
-static String[] strings = {
-    "EOcLKvbddZyPxYpb",
-    "DncLKvbdPxmAGrqj",
-    "DoCjjvbdpxoIHQdY",
-    "EPCkKvbdqYoHfqEY",
-    "DnbkKvbdezvYdiUX",
-    "DnbjjvbdeEoRbXCj",
-    "EObkKvbdbsCkUEKB",
-    "EOcLKvbdnUtyjiqf",
-    "DncLKvbdRWnDcMHc",
-    "DoCkKvbdrSUkOLAm",
-    "DncLKvbdfNFwGmJk",
-    "EPDLKvbdvAdYroFI",
-    "DoDLKvbdiGibyViu",
-    "DncLKvbdYqNEhmFR",
-    "DoCkKvbdEARhlzXX",
-    "DncLKvbdSZjHsCvA",
-    "DncKjvbdqTsgRqkU",
-    "DnbjjvbdqAiFAXHd",
-    "EPDKjvbdGcjvJaij",
-    "DnbkKvbdwtldpxkn",
-    "DoDKjvbdYkrETnMN",
-    "EPCjjvbdbBWEfQQX",
-    "EPCjjvbduMXwAtBX",
-    "DncLKvbdbsCkTcia",
-    "DoCjjvbdczYpYZRC",
-    "EOcKjvbdFeiqmhsq",
-    "DoCkKvbdKCicQibx",
-    "EOcKjvbdZLrEUOLm",
-    "DoCjjvbdaNKbStmH",
-    "DoDKjvbdJbjDQjDY",
-    "EPCkKvbdemFwGmKL",
-    "EPDKjvbdZQleImEq",
-    "DncKjvbdZjShPfbG",
-    "DnbjjvbdqYnhHREY",
-    "DoCkKvbdaRfDIUGL",
-    "DoDKjvbdLrWlyuQz",
-    "DnbjjvbdZisHofaf",
-    "EObjjvbdhtydvrUb",
-    "DnbjjvbdRotHKGEX",
-    "EObjjvbdNeEThhkE",
-    "EPCjjvbdZtJJZESn",
-    "DoDKjvbdnPyxvLYb",
-    "EPDKjvbdeEoRbWbj",
-    "EOcLKvbdFxttaEXb",
-    "EObjjvbddwystRez",
-    "EPCjjvbdJpzEnenF",
-    "DnbkKvbdTppntuIN",
-    "EPCkKvbdTukpKUBR",
-    "DnbkKvbdhlFEOUcZ",
-    "EObkKvbdlhdUQuRa",
-    "DnbjjvbdkClKqHUg",
-    "EOcKjvbdqTtGqqkU",
-    "DncKjvbdtkwvaUBX",
-    "DoDKjvbdsQWOjCuf",
-    "DncLKvbdEKIJuwjA",
-    "DncKjvbdGLErcIMu",
-    "EOcLKvbdNPwpumfs",
-    "EObkKvbdnVUzLJrG",
-    "DoCkKvbdcTDKsdKB",
-    "DncKjvbdKRZdoFme",
-    "EOcLKvbdemFvgNKL",
-    "EPCkKvbdznopdblY",
-    "EPDLKvbdOYPVzdOU",
-    "DnbjjvbdsZlPsAhO",
-    "DoDLKvbdKCjDRKDY",
-    "DoCkKvbdhuZeXSVC",
-    "EPDKjvbdOStVgEtp",
-    "DncLKvbdvwMAvBWV",
-    "EPDKjvbdBcoaWJlf",
-    "EOcKjvbdZxdKODMS",
-    "DoCjjvbdbsCkTcjB",
-    "EOcLKvbdwWlAuaWV",
-    "DnbjjvbdFejRnJUR",
-    "DnbjjvbdmIdTqVSB",
-    "DnbkKvbdqBIeAWhE",
-    "DncKjvbdrMzJyMIJ",
-    "DoCkKvbdZGvdAOsJ",
-    "DncLKvbdjggLfFnL",
-    "DoCjjvbdYqNFJMdq",
-    "DoCkKvbdqZPHfqDx",
-    "DncLKvbdOEdThiLE",
-    "DoCkKvbdZirgpGaf",
-    "EPDLKvbdziuQPdSt",
-    "EObkKvbdKQyeOenF",
-    "DoDLKvbduaDySndh",
-    "DoCjjvbdVUNUGLvK",
-    "DncKjvbdAMhYrvzY",
-    "DnbkKvbdnQZxvKxb",
-    "EPCjjvbdBhjakJFj",
-    "DncLKvbdmfeYNNfy",
-    "DoDLKvbdjlbLydfo",
-    "DoDLKvbdpyPIGpcx",
-    "EOcLKvbdnVUzLJqf",
-    "DoCjjvbdmJETqVSB",
-    "DoDLKvbdJTZAsMxM",
-    "DoCkKvbdnQZxvLZC",
-    "DoDKjvbdACqwizJQ",
-    "DncKjvbdvBEZSoFI",
-    "DncKjvbdGckVjCJj",
-    "DncLKvbdiMFENtcZ",
-    "Dnbjjvbdjuvmcaww",
-    "DnbkKvbdZyEKNblS",
-    "DoCjjvbduMYXBUBX",
-    "DnbjjvbdFWYopNJe",
-    "DoDKjvbdelfXGljL",
-    "DnbjjvbdakLenmcA",
-    "EPDKjvbdfILWRmpg",
-    "EObjjvbdSLYeuHLT",
-    "DoCjjvbdMfbolotk",
-    "EPDLKvbdrRuKnKaN",
-    "EOcKjvbdyzdnRhIh",
-    "DoDLKvbdGAoRZJzm",
-    "DoCjjvbdhlFDnUcZ",
-    "EPDLKvbdmpZyVkYb",
-    "DncKjvbdTpqPUuIN",
-    "DncLKvbdHDjvJaij",
-    "EPDLKvbdYlRcsmkm",
-    "EPDLKvbdvlvAMdFN",
-    "DncKjvbdIsZArmYM",
-    "EOcLKvbdegjuqnQg",
-    "EOcLKvbdZQmFJNFR",
-    "DoCjjvbdZxdJmcMS",
-    "EPCkKvbdlZTSTYgU",
-    "DoDKjvbdqceJPnWB",
-    "DncLKvbdVgwuxGxz",
-    "DncKjvbdDnbkLXDE",
-    "EPDLKvbdatbHYKsh",
-    "DncKjvbdEzsqFLbi",
-    "EPDLKvbdnVVZkKRf",
-    "EOcKjvbdKeegbBQu",
-    "EPCkKvbdKfGHaaRV",
-    "EPDKjvbdmIctRVRa",
-    "EPCjjvbdRMxBxnUz",
-    "DnbjjvbdJYTbILpp",
-    "EPCkKvbdTAEiHbPE",
-    "EOcLKvbdfelZnGgA",
-    "DoCjjvbdOStWGeUp",
-    "EOcLKvbdemGXHNJk",
-    "DoDKjvbdYTMAmUOx",
-    "EPCkKvbdpyOhGpcx",
-    "EPCkKvbdAMgxsWzY",
-    "DnbjjvbdYkrETnMN",
-    "EPDLKvbdUQqPUtgm",
-    "DncKjvbdehKurNqH",
-    "DoCjjvbdZMSETnLm",
-    "DoDKjvbdIHGyyXwg",
-    "EObjjvbdXGYzUAPT",
-    "DoCjjvbdhbPCeWqR",
-    "DoCkKvbdKNADzGuB",
-    "DnbjjvbdFeirOJTq",
-    "DncLKvbdaRecHtFk",
-    "DnbkKvbdzoPpeClY",
-    "EObkKvbdZRMeJMeR",
-    "DnbjjvbdYfvdAPSi",
-    "DncLKvbdJcKCqJcY",
-    "EOcLKvbdqvokbhyR",
-    "DoDLKvbdrRuLNjaN",
-    "DoCjjvbdTlWPBWOi",
-    "DoCkKvbdjvWnEBxX",
-    "DoDLKvbdTkunaVoJ",
-    "DoCkKvbdQZNAHTSK",
-    "EObjjvbdqwPkbhyR",
-    "EOcLKvbdNHDPlpUk",
-    "DncLKvbdIHHZxxYH",
-    "DncLKvbdtkxXAtAw",
-    "DncLKvbdSCEFMJZL",
-    "DnbjjvbdZQmEhldq",
-    "DoCjjvbdNGbolotk",
-    "DnbjjvbdnCKWwnmu",
-    "DncLKvbdzHZMANEw",
-    "DoDKjvbdmttykJrG",
-    "DnbkKvbdlrZUzSci",
-    "EPDKjvbdSKyGVHKs",
-    "DoCjjvbdKVuGEFGi",
-    "EPCjjvbdCIkBkIej",
-    "DncLKvbdzHZMAMeX",
-    "DnbkKvbdaSFbgsek",
-    "DncLKvbdHDjujBij",
-    "DoDKjvbdGZVUaDwb",
-    "DnbjjvbdZnnJFEzK",
-    "DoCkKvbdtcDUwWOo",
-    "DoCkKvbdlBMoNALA",
-    "EOcKjvbdNsUWHFUp",
-    "DoDLKvbdVUNUFlVj",
-    "DnbkKvbdhkdcnUcZ",
-    "DncLKvbdLiBkqYAS",
-    "EOcKjvbdzoPpdcLx",
-    "EPDKjvbdijGIJmXr",
-    "EOcKjvbdZisHofaf",
-    "DoDLKvbdeOdrkUUS",
-    "DoDLKvbdnPyxvKxb",
-    "EPDKjvbdIxUBhMRQ",
-    "DncLKvbdlhctRUqa",
-    "DoDLKvbdmgFXlnGy",
-    "DncKjvbdCJKbKiGK",
-    "EOcLKvbddndrjtUS",
-    "DnbjjvbdkDLjqGuH",
-    "DncKjvbdmIcsptqa",
-    "DoCkKvbdvvlAvBWV",
-    "EObjjvbdjblLQftg",
-    "DnbjjvbdCEQBWKMf",
-    "DnbjjvbdBdPaVilf",
-    "DoCkKvbdZxcjODLr",
-    "DoCkKvbdEObjjwCd",
-    "EPDKjvbdyTNhlqbH",
-    "EPCkKvbdUMVoAvPJ",
-    "DncKjvbdUxhUZjoO",
-    "DncKjvbdqqtjmkAm",
-    "DncKjvbdKfGICBRV",
-    "EPCjjvbdVrOXaeLc",
-    "EPDLKvbdwXLaWBWV",
-    "EPCkKvbdjblKqHUg",
-    "DnbjjvbduDCuWuoP",
-    "EPDKjvbdNGbpMouL",
-    "EObjjvbdBcoaVjNG",
-    "DncLKvbdrWpMDIxq",
-    "DncLKvbdhaoCdwRR",
-    "DnbkKvbdFxtuBDwb",
-    "DncKjvbdIjEAKPgE",
-    "EOcLKvbduCbuXVoP",
-    "DoDKjvbdZtIiZDsO",
-    "DnbjjvbdEztRElCi",
-    "DncLKvbdxmsHwsJD",
-    "DnbjjvbdRbEElIxk",
-    "DoDKjvbdWHwvXgYz",
-    "EOcKjvbdQlwbYnUz",
-    "EOcLKvbdVTltFkuj",
-    "DncKjvbdliETptqa",
-    "DnbkKvbddoErjtTr",
-    "DoCkKvbdgPazvdXh",
-    "DncKjvbdySmhlqag",
-    "DoCjjvbdbPgHDkzd",
-    "DoCkKvbdFWZPomKF",
-    "EObjjvbdssSSxydc",
-    "EObjjvbdzQnliJwA",
-    "EObkKvbdKCjCpibx",
-    "EPCjjvbdpyOhHREY",
-    "DncLKvbddjJqutzn",
-    "EObkKvbdBdQAujMf",
-    "EPCkKvbdLAjflbXq",
-    "DncLKvbdLBLGlaxR",
-    "DoDLKvbdrpWPJbuf",
-    "DoCjjvbdEKHiuxKA",
-    "DoCjjvbdXsMAlsnx",
-    "EObkKvbdptTgSSLU",
-    "DoDKjvbdnHFXmNfy",
-    "DncKjvbdCJKbKhej",
-    "EPCjjvbdhlEdOUby",
-    "EOcKjvbdKWUfEFGi",
-    "DoDKjvbdZQmFJMdq",
-    "EPCjjvbdiGjDZWKV",
-    "EObkKvbdVAbQrprZ",
-    "DoDKjvbdfekzNgHA",
-    "DoDLKvbdnHEwlmgZ",
-    "DncKjvbdwzHeexEr",
-    "DoCjjvbdmpZxujyC",
-    "EPDKjvbdwMvAMcdm",
-    "DoCjjvbdfHkVrNqH",
-    "EPCkKvbdYzbfRiuy",
-    "EPCkKvbdZtIiZDrn",
-    "DnbjjvbdjvWnDbYX",
-    "DoCjjvbdOStVgEtp",
-    "EPDLKvbdZMSETmlN",
-    "EPDKjvbdBhjajhej",
-    "EPCjjvbddoFTLUUS",
-    "DnbkKvbdsQVoJcWG",
-    "EPCjjvbdrEFJQNvB",
-    "DoCjjvbdMpYRWOGs",
-    "EOcLKvbdZirgpHBf",
-    "EPDLKvbdyOTIXsJD",
-    "DoCkKvbdKRZdnfNe",
-    "DnbjjvbdbBWFFoow",
-    "EPCjjvbdgFlZnHHA",
-    "DnbkKvbdGGJrOIsq",
-    "DoDLKvbduDCtwWPP",
-    "EObjjvbdNddUIhjd",
-    "DnbjjvbdxsNiMqag",
-    "EObjjvbddeOrCWbj",
-    "EObjjvbdPxmAGsRj",
-    "EOcLKvbddeOrCXDK",
-    "DoDLKvbddeOrBwCj",
-    "DoCjjvbdVqnYCElD",
-    "DnbkKvbdUyIUZjoO",
-    "EObjjvbdeFOrCXDK",
-    "EObkKvbdVrNxCFLc",
-    "EObjjvbdTfzmkwWF",
-    "EOcKjvbdIHGzZYYH",
-    "EPDKjvbdtbbuXWPP",
-    "DoCjjvbdZisIQHBf",
-    "EObjjvbdbsCkUDjB",
-    "EPCkKvbdVwJXudFH",
-    "EPDKjvbdrouoKDVf",
-    "EPCkKvbdFyVVBEYC",
-    "DncLKvbdZnnIeEzK",
-    "EPDLKvbdxVNFQxkn",
-    "DoDKjvbdpxnggRDx",
-    "DoDLKvbdqZOgfpcx",
-    "DncKjvbdCIjakJGK",
-    "EPCkKvbdCJLBjhej",
-    "DoDLKvbdnPzYvKxb",
-    "EOcKjvbdqTsgSRkU",
-    "EOcLKvbdLBLGlaxR",
-    "DoDLKvbdcbTMrAUN",
-    "DncLKvbdzitoodSt",
-    "DoDKjvbdJvUfDdfi",
-    "EOcLKvbdHDjvKCJj",
-    "EPCkKvbdeOeTKssr",
-    "DnbkKvbdlYrqsYft",
-    "DncLKvbdiiehKMxS",
-    "DncKjvbdURQoVUhN",
-    "DnbkKvbduMYXBUAw",
-    "DoDLKvbdSPtHJfEX",
-    "EObkKvbdqBJFAWgd",
-    "EOcKjvbdFpATWgFy",
-    "DoDLKvbdBsBDTfXS",
-    "DncKjvbdjhHLfFmk",
-    "DoCjjvbdCJKakIfK",
-    "DnbkKvbddoFSjtTr",
-    "EObkKvbdANIYsWzY",
-    "EObjjvbdCTAbtFvr",
-    "EObjjvbdrRtkOLAm",
-    "DnbkKvbdkxsSTYgU",
-    "DoCjjvbdnBiwXnmu",
-    "EObjjvbdwtmEqYlO",
-    "EPDKjvbdrylQTAhO",
-    "DoDLKvbdtbbtvvOo",
-    "EPCjjvbdZLrETmlN",
-    "EPDLKvbdWXJYWDdg",
-    "DoCkKvbdKQzFOfOF",
-    "EPCjjvbdwzIFfXeS",
-    "DncKjvbdRjyFuHLT",
-    "EPDLKvbdULunaWPJ",
-    "DncKjvbdUxhTykOn",
-    "DnbkKvbdJcKCqKDY",
-    "EPDLKvbdcbSmSATm",
-    "DnbkKvbdegjurNqH",
-    "EPDKjvbdZjTIQGbG",
-    "EPCjjvbdiLddNuCy",
-    "DoCjjvbdZQldiNEq",
-    "EOcLKvbdakMGPODA",
-    "EObjjvbdnHEwlmgZ",
-    "EOcLKvbdBsAcUGXS",
-    "EPCkKvbdiVZdwSUb",
-    "EOcLKvbddCTNSAUN",
-    "DnbkKvbdEXxMUUUM",
-    "DncKjvbdYpldiMeR",
-    "DoDKjvbdNddTiIjd",
-    "DoDLKvbdZLqdUNlN",
-    "EPCkKvbdiBncFWpq",
-    "DncLKvbdiCPDEvqR",
-    "EOcKjvbdUyHszKoO",
-    "DncKjvbdhtydvqtb",
-    "EPCjjvbdpxoHgQcx",
-    "EObkKvbdkWWnDaxX",
-    "DnbjjvbdBhkBkJFj",
-    "DoCkKvbdRacdkhyL",
-    "EOcLKvbdZjTHpHCG",
-    "EPCkKvbdMowqWOGs",
-    "DncLKvbdegjurNpg",
-    "EObjjvbdfMfWfmKL",
-    "EPDLKvbdZirgpGaf",
-    "DoDLKvbdiZuFlQnG",
-    "DncLKvbdFxuVAcxC",
-    "EObkKvbdZisHofaf",
-    "EOcKjvbdJSyBSmYM",
-    "EPDLKvbdVYgtZkPO",
-    "EOcKjvbdRbEFMJYk",
-    "DncLKvbdrEFIonWB",
-    "DncKjvbdKDJbqJcY",
-    "EOcLKvbdhfjCxuiu",
-    "EObjjvbdLLAhWAKZ",
-    "DoCkKvbdRXNcblID",
-    "DoDLKvbdcbSmSATm",
-    "EOcLKvbdwWlAvAuu",
-    "EObkKvbdiBnbdvpq",
-    "DoCkKvbdNQXpumgT",
-    "DncLKvbdkVwOECYX",
-    "DnbkKvbdfoazwDxI",
-    "DoDLKvbdbBWFFpPw",
-    "DoDLKvbdvBDxsPEh",
-    "EPDKjvbdJqZdoFme",
-    "DoDLKvbdIryArmXl",
-    "EPCjjvbdANIZSwZx",
-    "EPCkKvbdVhYVxGxz",
-    "DncKjvbdLAjgNCYR",
-    "DncKjvbdxxIjCQZk",
-    "DncKjvbdbiNKKewY",
-    "EPCjjvbdlrZVZsEJ",
-    "EPDKjvbdIryAsMwl",
-    "DoCkKvbdtAHRIAAr",
-    "EPDKjvbdJmAEZfuB",
-    "EPCkKvbdZjSgogBf",
-    "DoDLKvbdOXnuzcnU",
-    "DnbkKvbdehKvRnQg",
-    "EObjjvbdZyDimbkr",
-    "DoDKjvbdmajWwoOV",
-    "EOcKjvbdkMalZeHP",
-    "EOcKjvbdIjEAJpHE",
-    "EPCkKvbdDihKVxKA",
-    "DncKjvbdNddUIiKd",
-    "EObjjvbdqdFIpOWB",
-    "DoCkKvbdxnShXsJD",
-    "DoDLKvbdjmBkzEfo",
-    "EOcLKvbdatagYLTh",
-    "DoCjjvbdVhYVxHYz",
-    "DnbjjvbdJbjDRKDY",
-    "EPCjjvbdLBLHNCYR",
-    "DnbjjvbdnGeYNOGy",
-    "EOcLKvbdUsmTekvK",
-    "EPCjjvbdtkxXBTaX",
-    "EPCjjvbdzoPqFCkx",
-    "DncKjvbdCIjbKhej",
-    "DncKjvbdZLqdTmkm",
-    "DoDKjvbdsPunicVf",
-    "EOcKjvbdmgFXmNgZ",
-    "EObkKvbdiMFENuCy",
-    "DoDKjvbdhanbeXRR",
-    "EObkKvbdACqwiyhp",
-    "DncKjvbdZisIQHBf",
-    "EPCjjvbdgQBzwDwh",
-    "DnbjjvbdyYJJaoyk",
-    "DoDKjvbdxUldqZMO",
-    "EObkKvbdkClLQgVH",
-    "EPCjjvbdZQldiMeR",
-    "EPDLKvbdZyEKOClS",
-    "EPDLKvbdcIlikFvx",
-    "DoDKjvbdrzMQTBHn",
-    "DnbjjvbdVYgtZkPO",
-    "DoDLKvbdHEKuiajK",
-    "EPCkKvbdczZQXxqC",
-    "DoDKjvbdrDdiQNua",
-    "DncLKvbdcImKLGWx",
-    "DoCjjvbdVYgtZkPO",
-    "EPDLKvbdZnnIeFZj",
-    "EPDKjvbdMIakqYAS",
-    "DoCkKvbdSLYfUgLT",
-    "EPDLKvbdiCObdvpq",
-    "DnbjjvbdRpUHKFcw",
-    "DoDLKvbdIHHZyYXg",
-    "EPCjjvbdypoMhiwA",
-    "DnbkKvbdCEPaVjMf",
-    "DnbkKvbderAvzlDP",
-    "DnbkKvbdZQleImFR",
-    "EOcKjvbdKRZdneme",
-    "DoDLKvbdiBnbeXQq",
-    "DncLKvbdEPDKjvcE",
-    "EOcLKvbdauCGwkTh",
-    "DncLKvbdEvZQPmJe",
-    "EPCkKvbdURQnuVIN",
-    "DncLKvbdegjvSOQg",
-    "EPCjjvbdKaKgMawq",
-    "DnbkKvbdRzKISbvA",
-    "DncLKvbdiLdcnUcZ",
-    "EPDLKvbdkDMKpfuH",
-    "DoDLKvbdRbDdkhyL",
-    "DnbjjvbdDwxMUUTl",
-    "DnbkKvbdrpWPKCuf",
-    "DnbkKvbdNVSqjmAX",
-    "DoDKjvbdRbDeMIxk",
-    "EOcLKvbdcyxpXyRC",
-    "DncLKvbdRMwbYnUz",
-    "EObjjvbdqlzJxlHi",
-    "DoCkKvbdJYUCIMQp",
-    "DncLKvbdLZQjSzuG",
-    "EOcKjvbdxVNEqYkn",
-    "DnbkKvbdZoOIeFZj",
-    "DoCjjvbdBraCtFwS",
-    "EOcLKvbdliDsqVSB",
-    "EPCkKvbdeATqNXif",
-    "DncLKvbdkMbLydgP",
-    "EObjjvbdZxdJmbkr",
-    "DoCjjvbdraellHLZ",
-    "EObkKvbduDCuWvPP",
-    "DoCkKvbdpstGrSLU",
-    "DoCjjvbdLGFgbBQu",
-    "DnbkKvbdhtzFWquC",
-    "EObjjvbdoAKztHdO",
-    "EPDLKvbdatafxKtI",
-    "EPDKjvbdkWXNcaww",
-    "DoCkKvbdwkXEHzzG",
-    "EObkKvbdmgEwmNgZ",
-    "DncKjvbdBiLCLJFj",
-    "DoCjjvbdeOdsKssr",
-    "EOcLKvbdfILWSORH",
-    "EObkKvbdCDpAujMf",
-    "EPDKjvbdKDKDQibx",
-    "DoDKjvbdVUMtGLuj",
-    "EObkKvbdrXQMCiYq",
-    "DncKjvbdePEsLTtS",
-    "DncLKvbdDxYLtUTl",
-    "EPCkKvbdGYuVBEYC",
-    "DncLKvbdNeEUIiKd",
-    "EPCkKvbdpxoIHRDx",
-    "EObjjvbdFkEsDHlu",
-    "EObjjvbdssSSxzFD",
-    "DoCkKvbdUtNTfMVj",
-    "DnbjjvbdJcKDRKDY",
-    "DncKjvbdqiAKEmOe",
-    "DoDKjvbdtlXwAtBX",
-    "DnbkKvbdxmsIYTIc",
-    "EObkKvbdLrXMzUpz",
-    "DoCjjvbdkxsSSxft",
-    "DncKjvbdQlwaxnUz",
-    "EObkKvbdjhGlFfNk",
-    "EPCkKvbdxsNhmRag",
-    "DoDLKvbdMfcPmQUk",
-    "DoDKjvbdQvnEDLhD",
-    "EObjjvbdVgxVxHYz",
-    "DoDLKvbdlrYtyrdJ",
-    "DoCjjvbdezvYeIsw",
-    "DncLKvbdNddTiIjd",
-    "EPDLKvbdGGJrNiUR",
-    "EPDLKvbdRzJhTDWA",
-    "EPCjjvbdvvkaWBVu",
-    "EOcKjvbdRXNdCkgc",
-    "EOcKjvbdQZNAHTSK",
-    "EPCkKvbdsCGNLfkZ",
-    "EOcLKvbdDwwktTsl",
-    "EOcLKvbdqlzJyLgi",
-    "EOcLKvbdxsNiMqag",
-    "EOcLKvbdhzVFlROG",
-    "EOcKjvbdEztRFMCi",
-    "DnbkKvbdqiAJdmPF",
-    "EPDLKvbdjcMKqGtg",
-    "EObkKvbdTlWOaWOi",
-    "EPDLKvbdURRPUuHm",
-    "DoDKjvbdelfWgNKL",
-    "EOcLKvbdGAnqZJzm",
-    "EObjjvbdGZUuAdXb",
-    "DoDLKvbduLwwAtAw",
-    "DoCjjvbdZjTIQGbG",
-    "EPCjjvbdRNXbYnUz",
-    "EPDLKvbdiLeENtby",
-    "EObjjvbdMowpunGs",
-    "EOcKjvbdbiNJjevx",
-    "DoDKjvbdEYYLstTl",
-    "DoDLKvbdqUTfrRjt",
-    "DoDKjvbdbsCkUEJa",
-    "DoDKjvbdXsMBNUPY",
-    "EPCjjvbdRNXaxnUz",
-    "DoDLKvbdNGcQNQUk",
-    "DnbjjvbdEARiMywX",
-    "EPDKjvbdSKxfUfkT",
-    "DncKjvbdhtyeXRtb",
-    "DncKjvbdZLqcsnLm",
-    "EObkKvbdZnmheEzK",
-    "EObjjvbdtbcUvuno",
-    "DnbjjvbdrzMQTBHn",
-    "DnbjjvbdDwwktTsl",
-    "EPDKjvbdkxsSTYgU",
-    "DoDKjvbdIryArlxM",
-    "DoDKjvbdnBivxOnV",
-    "DoDKjvbdeATplwif",
-    "EOcLKvbdKeegbApu",
-    "EPCjjvbdMgDQMotk",
-    "DoCjjvbduCbtwWOo",
-    "DnbkKvbdyNsHwrhc",
-    "DnbkKvbdtvNxJpsA",
-    "EOcLKvbdqAheAWgd",
-    "DoCkKvbdURQoUtgm",
-    "EOcKjvbdqceIpOWB",
-    "DoCkKvbdVwIwudFH",
-    "DnbkKvbdbLMFnmcA",
-    "EOcLKvbdZjTHpHBf",
-    "EOcKjvbdRXNdCkhD",
-    "EPDLKvbdiHJcZViu",
-    "DoCjjvbdxxIjCPzL",
-    "DnbkKvbdBcpBWJmG",
-    "EPCkKvbdZyEKOCkr",
-    "EPDKjvbdOTUWHFVQ",
-    "DoCjjvbdIGgZxwwg",
-    "EPDLKvbdFjeSbhMu",
-    "EPDLKvbdhgKCxvJu",
-    "EOcLKvbdNsUWGdtp",
-    "EPDKjvbduVnXipsA",
-    "DncLKvbdGYuVBEXb",
-    "EPDLKvbdZtIhyESn",
-    "DoDKjvbdZxdJmcLr",
-    "DoCjjvbdUsltGLuj",
-    "DoDKjvbdDoDLKvbd",
-    "DncLKvbdrDdhpNvB",
-    "EPDLKvbdKCjDRJbx",
-    "DoDLKvbdxLWdHzyf",
-    "EObkKvbdrzMQTAhO",
-    "EOcLKvbdOFDtJJKd",
-    "EPCkKvbdrSVKmjaN",
-    "EOcKjvbdWWiYVdEg",
-    "EOcKjvbdWWhwvDdg",
-    "DncKjvbdpstHRqjt",
-    "EPCkKvbdKWVFceGi",
-    "DoCkKvbdZjShPfbG",
-    "DoCkKvbdSxKlNzkY",
-    "EPDLKvbdIwtCHkqQ",
-    "EOcKjvbdsCGNLgLZ",
-    "DncKjvbdzaAOfgCM",
-    "DoDLKvbdxmrhYSiD",
-    "DncLKvbdfMfWgMjL",
-    "EPDKjvbdqFdEsuaI",
-    "EOcLKvbdiLeDnUcZ",
-    "DoCjjvbdKVuFceHJ",
-    "DoCjjvbdfekzNgHA",
-    "EOcKjvbdOFEThiLE",
-    "EPDLKvbdqceJPnWB",
-    "DoDLKvbduCbtwWOo",
-    "DncKjvbdTqROtuIN",
-    "DncKjvbdpedFUWBI",
-    "DoDLKvbdrEFJQNua",
-    "DoDLKvbdyXhjCPyk",
-    "EPCkKvbdJYUBhLqQ",
-    "EPCkKvbdtcCuXVno",
-    "DoDLKvbdZLrEUOLm",
-    "EPCkKvbdpstGrRjt",
-    "DncLKvbddePSCXCj",
-    "EObkKvbdauCHXjsh",
-    "DoDLKvbdkHfkefNk",
-    "EObjjvbdMRwMzUpz",
-    "EObjjvbdaMkCTVNH",
-    "DoCkKvbdGGJrNhtR",
-    "EPDLKvbdvBDxrneI",
-    "EPDLKvbdIHHZxwxH",
-    "EOcLKvbdrJAJdmPF",
-    "EOcKjvbdGZUuAdXb",
-    "EOcLKvbdbUbHYLUI",
-    "DnbjjvbdJzofYEAN",
-    "EPDKjvbdFxtuBDxC",
-    "DnbkKvbdQvnDbkgc",
-    "EPDKjvbdJmADzGta",
-    "DoDKjvbdZRMdhleR",
-    "DnbkKvbdsrqsZZeD",
-    "EObkKvbdrovPJbuf",
-    "EPCjjvbddeOqbXCj",
-    "EObjjvbdtcDVXVoP",
-    "DncKjvbdMfbpNQVL",
-    "DoCkKvbdhbPCeXQq",
-    "DoCkKvbdNHComQVL",
-    "EObjjvbdvBDxroFI",
-    "EPCjjvbdnBivwoNu",
-    "EObjjvbdbhljKewY",
-    "EPDKjvbdZyDimcMS",
-    "EObkKvbdWSOXbElD",
-    "EOcKjvbdTfznMXVe",
-    "EPCjjvbdZtJJYcsO",
-    "DoCjjvbdRjxfVHLT",
-    "DoCkKvbdVTltGMVj",
-    "DncKjvbdYfwEAOri",
-    "DncKjvbdYkrEUOMN",
-    "EObkKvbdqGEEsuaI",
-    "DncLKvbdjJfHimXr",
-    "EPDLKvbddndsLUTr",
-    "DnbkKvbdqBJFAWhE",
-    "EPDLKvbdEOcKjwDE",
-    "EPCkKvbdtvOYJqTA",
-    "DncLKvbdkyTRsZHU",
-    "DoCjjvbdTppnuVIN",
-    "DncLKvbdwyhFeweS",
-    "DncKjvbdsBelkgKy",
-    "DoCjjvbdKDKCqJcY",
-    "DoCjjvbdkClKqHVH",
-    "DoCjjvbdcTCjtDia",
-    "EPDLKvbdUVkpJtAq",
-    "EPDLKvbdRyjITCvA",
-    "DnbjjvbdJuuFcdgJ",
-    "DoDKjvbdrJAJdmOe",
-    "DncKjvbdJcJbqKCx",
-    "DoDLKvbdJcJbqJcY",
-    "DoDKjvbdeEoSCXDK",
-    "DoDLKvbdSwjlNzkY",
-    "EObjjvbdzitopDrt",
-    "DoCkKvbdKWVGEEgJ",
-    "DncKjvbdpssfqrKt",
-    "EOcLKvbdUMWPBVoJ",
-    "DncKjvbdyzdmrIIh",
-    "EPCjjvbdxUldqZLn",
-    "DoDLKvbdySnImRbH",
-    "DoCjjvbdGdKvJaij",
-    "DoCkKvbdxZgeewdr",
-    "EObkKvbdiLddNuDZ",
-    "DnbjjvbdSCDdkiZL",
-    "DncKjvbdznpREcMY",
-    "EOcLKvbdaRebhTfL",
-    "DnbjjvbdZQldiMdq",
-    "EPCjjvbdbrbjtEKB",
-    "EOcKjvbdEARiMzXX",
-    "DoDLKvbdXrkaNTnx",
-    "EPCkKvbdQZNAHTRj",
-    "DoDLKvbdEzspeLcJ",
-    "EPCjjvbduVnYKRTA",
-    "EObjjvbdJXtBhMQp",
-    "EPDKjvbdeOdrjssr",
-    "EPCjjvbdLqwMytpz",
-    "EPDKjvbdUMVoBVoJ",
-    "DncKjvbdRpUGifDw",
-    "EPDLKvbdZyDinDLr",
-    "DnbkKvbdNrsufeVQ",
-    "EPCkKvbdZMSDtNlN",
-    "EPCkKvbdySnJNSCH",
-    "EPCjjvbdfMevfljL",
-    "DncLKvbdXsMBNTnx",
-    "DnbkKvbdpxoHfqDx",
-    "DncLKvbdUQpntthN",
-    "DncKjvbdIsZArlwl",
-    "DoDLKvbdZGwEAOsJ",
-    "EOcKjvbdVvhwvDdg",
-    "EOcLKvbduWNxJqTA",
-    "EPCjjvbdHEKvJaij",
-    "DoDKjvbdrpWOjCuf",
-    "DncLKvbdrpWOjDVf",
-    "DoCjjvbdIHGzYwwg",
-    "DoDLKvbdpxoIGqEY",
-    "DoDLKvbdJcJbqKDY",
-    "DoCjjvbdRWmdClHc",
-    "EPCjjvbdFWYopNJe",
-    "DncKjvbdmfdwlmfy",
-    "DoCkKvbdxUleQxlO",
-    "EObjjvbdnGdxMnGy",
-    "EPCjjvbdvvlAvBVu",
-    "DncLKvbddndsKssr",
-    "EObjjvbdZMRcsnLm",
-    "EOcKjvbdFxttaEXb",
-    "DncKjvbdVUNTfMVj",
-    "EOcLKvbdNrtWHFUp",
-    "DoDKjvbdwuMdqYlO",
-    "EPDLKvbdrXPkbhxq",
-    "EObjjvbdrEFIpNua",
-    "EObjjvbdziuQQDrt",
-    "EOcLKvbdqYoIGpcx",
-    "DnbjjvbdsQVoJcVf",
-    "EObkKvbdkDMKpgUg",
-    "EObjjvbdvBDyTPFI",
-    "DncKjvbduCbuWvOo",
-    "EPCjjvbdkVvnECYX",
-    "DncLKvbdZGvdAOri",
-    "DoCkKvbdrXPlDJZR",
-    "EOcLKvbduCcVWvOo",
-    "DoDKjvbdCEPaWJlf",
-    "EPDKjvbddoErjssr",
-    "DncKjvbdACqxKZiQ",
-    "EPCjjvbdUVlPitAq",
-    "EPDKjvbdjJfHjMxS",
-    "EObkKvbdAMhYsWzY",
-    "DoDKjvbdnBivxOmu",
-    "EOcLKvbdbiNKKfXY",
-    "EPDKjvbdYqMeIleR",
-    "EObkKvbdJmADygUa",
-    "EObjjvbdEPDLLWcE",
-    "EPCjjvbdrXPkcIxq",
-    "EOcLKvbdliDtQtqa",
-    "DoCjjvbdmoyxujyC",
-    "EPDLKvbddoFTLTsr",
-    "EOcLKvbdCWzdJEpW",
-    "DnbjjvbdrEEhpOWB",
-    "DoDKjvbdZLrDtNkm",
-    "EOcLKvbdLFfHbAqV",
-    "EOcKjvbdmttzLKSG",
-    "EOcLKvbdmbJvwoOV",
-    "EOcKjvbdUaCQrqSZ",
-    "DnbjjvbdmgExMnGy",
-    "EPDKjvbddndrkUUS",
-    "EObkKvbdDwwkstTl",
-    "DoCkKvbdcJMjLFwY",
-    "DnbjjvbdaNLBruMg",
-    "DoDLKvbdQYmAHTRj",
-    "DnbkKvbdsQWOicWG",
-    "EObkKvbdMRwMzUpz",
-    "DoDLKvbdZshiZDrn",
-    "EPDLKvbdnPzYujxb",
-    "EOcKjvbdCEQAujMf",
-    "EPDLKvbdKefHbApu",
-    "DoDLKvbdYpldiNFR",
-    "DoCkKvbdFWZQQNJe",
-    "DncLKvbdznpQeCkx",
-    "EOcKjvbdnQZxvKxb",
-    "DoCkKvbdVBBprpqy",
-    "DnbkKvbdZirhPfaf",
-    "DnbkKvbdegjvSNqH",
-    "EOcLKvbdqdEiPnWB",
-    "EObjjvbdBhkCKiGK",
-    "EObjjvbdxZgfGYFS",
-    "DnbjjvbdNQYQumgT",
-    "EPCjjvbdxsNhlrBg",
-    "DoCkKvbdQdDApRDr",
-    "DoCkKvbdxxIiaoyk",
-    "EPDKjvbdFeirNhtR",
-    "DoCjjvbdegjvSOQg",
-    "EObkKvbdqcdiQNvB",
-    "DncLKvbdiMEdNtcZ",
-    "DncLKvbdTqRPUthN",
-    "EPCkKvbdwygeexFS",
-    "DoDKjvbdyTOJMrBg",
-    "DncLKvbdeEoRavbj",
-    "EPCjjvbdtbcUvvOo",
-    "EObjjvbdKCicRJcY",
-    "EObjjvbdZyEKODMS",
-    "DnbjjvbdmJDtQtrB",
-    "DncLKvbdEARhlyvw",
-    "DnbjjvbdIxTbILqQ",
-    "EOcLKvbdwygefYFS",
-    "DoCjjvbdznoqFCkx",
-    "DoCjjvbdRpUGjGDw",
-    "DncKjvbdhzVGMQnG",
-    "EPCjjvbdhkeDnVCy",
-    "EObkKvbdOEdUIiKd",
-    "DncKjvbdrDeIomua",
-    "DncLKvbdiHJbxuiu",
-    "EPDKjvbddxZstRez",
-    "EPDLKvbdmSYuZrdJ",
-    "EObkKvbdVUNUFkvK",
-    "EPDLKvbdNeEUJIjd",
-    "DoCkKvbdiMEdNuCy",
-    "DoDLKvbdRDcApQcr",
-    "EPCjjvbdTlVoBVoJ",
-    "EObjjvbdLBKgNBwq",
-    "EPCkKvbdsCFllHKy",
-    "EObjjvbdnVUzLJqf",
-    "DoDKjvbdqrVLNkBN",
-    "DoCkKvbdqFcdtWBI",
-    "DncLKvbdbVCGxLTh",
-    "EOcLKvbdeFPSCXCj",
-    "EOcLKvbdRpTgKFdX",
-    "EObjjvbdznpQeDLx",
-    "EOcKjvbdjvXNcaxX",
-    "DnbjjvbdHDkWJbJj",
-    "DncKjvbdhkeENuDZ",
-    "DnbkKvbdnUtyjjSG",
-    "DoDKjvbdSQUHJfDw",
-    "DncKjvbdbUbHYLUI",
-    "EOcLKvbdNsTvGduQ",
-    "EPDLKvbdSZigsCvA",
-    "DncKjvbdMfcPlpUk",
-    "DoDLKvbdxrnIlrBg",
-    "DncKjvbdiLdcnVCy",
-    "EPCjjvbdmfeYNOHZ",
-    "DoCkKvbdjvWmcaxX",
-    "DoDKjvbdbUbHXkUI",
-    "DncKjvbdBhkBjiFj",
-    "DoDLKvbdNHColpVL",
-    "EOcKjvbdrykosAhO",
-    "DncLKvbdqGDeUVaI",
-    "DnbkKvbdhgJcZViu",
-    "DnbjjvbduLxXAtBX",
-    "EPCjjvbdYpleJNFR",
-    "EPDLKvbdQvmdClHc",
-    "DnbjjvbdJYTbIMRQ",
-    "DncLKvbdznpRFDMY",
-    "EOcLKvbdZnmiFEyj",
-    "DnbkKvbdrRuLOLAm",
-    "EObkKvbdhkeEOUby",
-    "DncLKvbdYlSEUOLm",
-    "DoCjjvbdhkdcmtby",
-    "DncLKvbdddnrCXDK",
-    "DoDLKvbdKaLHNCYR",
-    "EOcKjvbdcyxpYZQb",
-    "EPDLKvbdACqwjZhp",
-    "DoCkKvbdBsBDTevr",
-    "EObkKvbdeKJqvUzn",
-    "EObkKvbdcImJkGWx",
-    "DncLKvbdYSlAltOx",
-    "DncLKvbdlrYtyrdJ",
-    "EObkKvbdKxqJrztf",
-    "EOcKjvbdsQWPJcVf",
-    "DoDKjvbdkySqrxgU",
-    "EObjjvbdeEoRbXCj",
-    "EOcKjvbdHDkVjBij",
-    "DoDLKvbdCTBCsfXS",
-    "DoCjjvbdKCjDQibx",
-    "DoCjjvbdlhdTqUrB",
-    "DoDKjvbdTulQKTaR",
-    "DoCkKvbdRjxetfkT",
-    "EPCjjvbdEuyQQNKF",
-    "EPCjjvbdDoDKkXDE",
-    "DoCjjvbdsQWPJbuf",
-    "DoDKjvbdhuZdvqtb",
-    "EPDLKvbdiHKCyWJu",
-    "EPDLKvbdLFegaaQu",
-    "DoCjjvbdqZPHgRDx",
-    "DncKjvbdUWMPjUAq",
-    "DoDLKvbdTYKkmzjx",
-    "DoDKjvbdegjvSOQg",
-    "DnbkKvbdUtNTekvK",
-    "EObkKvbdNsTvGeVQ",
-    "DoDLKvbdfNFvgMjL",
-    "EOcLKvbdZQmEiNEq",
-    "EPDKjvbdBraDTfWr",
-    "EPDKjvbdNGcQNQVL",
-    "EPDLKvbdZyEKODMS",
-    "EOcKjvbdBvzdIdpW",
-    "EPCjjvbdACqwiyiQ",
-    "DoCjjvbddePRawCj",
-    "EPDKjvbdWWiXucdg",
-    "DoDKjvbdWexzUAPT",
-    "DnbjjvbdwXMBWBWV",
-    "EOcLKvbdUyHszLOn",
-    "EPCkKvbdOYOuzcnU",
-    "EPCkKvbdhancEwQq",
-    "DnbkKvbdjggLefOL",
-    "EPCkKvbdFjdsDIMu",
-    "DoDKjvbdrSUjmkBN",
-    "DoDLKvbdZjTIQGaf",
-    "DoDKjvbdMgDPmPtk",
-    "EPDLKvbdWRmwbFMD",
-    "DoCkKvbdzROmJKXA",
-    "DnbkKvbdrDdiQNvB",
-    "DnbjjvbduDCtwVoP",
-    "EOcLKvbdCIjbLJFj",
-    "EPDKjvbdXrkaMsnx",
-    "EPDKjvbdVhXvXfxz",
-    "DncKjvbdhbPDEwRR",
-    "DoCkKvbdpxoHgQcx",
-    "DoCkKvbduMXwBUBX",
-    "EObjjvbdNeEThhjd",
-    "DoCjjvbdirzhrkJz",
-    "DoDLKvbdaMkCTUlg",
-    "DncLKvbdWRnYBeLc",
-    "DnbjjvbdGBPRZJzm",
-    "EOcLKvbdeOeSjstS",
-    "DoDLKvbdmIctRVSB",
-    "DoCjjvbdZxdJnDMS",
-    "DoCkKvbdRpTgKFcw",
-    "DncLKvbdTukojTaR",
-    "DnbjjvbdKRZdoFme",
-    "DnbkKvbdURQoVUhN",
-    "DoDLKvbdyYJKBozL",
-    "EObkKvbdfNFwHMjL",
-    "DoDLKvbdZisIQHBf",
-    "EObkKvbdqFcdsuaI",
-    "DncLKvbdzoPqFDLx",
-    "DoDKjvbdSKxeuHLT",
-    "EPDKjvbdsBemLfjy",
-    "DoCjjvbdJbjCqJcY",
-    "DoCjjvbdNPxRVnGs",
-    "DncLKvbdGcjvJbKK",
-    "EOcKjvbdrWpMDIxq",
-    "EOcLKvbdQdDApQcr",
-    "DoDKjvbdZMRdTnLm",
-    "EOcLKvbddxZssrFz",
-    "EObjjvbdUtNTfLuj",
-    "EPCjjvbdLLBIWAKZ",
-    "DoCkKvbdgFlZmfgA",
-    "EPCjjvbdUVkoitAq",
-    "DoDKjvbdDncKjvcE",
-    "DoDLKvbdRpUHJfEX",
-    "EPDKjvbdLqvlzVQz",
-    "EPDKjvbdZMRdUOLm",
-    "EOcLKvbdCJLBkIfK",
-    "DncKjvbdaSFbhUFk",
-    "EPDLKvbdZoNheEzK",
-    "DncKjvbdUVlPjUAq",
-    "DnbkKvbdKNADyfuB",
-    "EObkKvbdZdwfzghb",
-    "EPDLKvbdZtIhxcrn",
-    "EObkKvbdGckViajK",
-    "DncLKvbdFfJqmiUR",
-    "DncKjvbdKWUfDdgJ",
-    "DoDKjvbdMtrqjmAX",
-    "EOcLKvbdsQWPKDVf",
-    "DoCjjvbdwtleRZMO",
-    "EObjjvbduaDxsPEh",
-    "EPDLKvbdKxqJrzuG",
-    "EOcKjvbdVAaprprZ",
-    "EObjjvbdEuxopMjF",
-    "DnbjjvbdyOTHwriD",
-    "EPDLKvbdrpVnibvG",
-    "EPDKjvbdkWWnDaww",
-    "DncLKvbdrXPkbiYq",
-    "DoDLKvbddxZssqez",
-    "EOcLKvbdHDkWJbJj",
-    "DncLKvbdEPCkLWcE",
-    "DnbkKvbdEXwkstTl",
-    "EObjjvbdqiAKEmOe",
-    "DncLKvbdjAQGaQGj",
-    "EPCjjvbdNeDtJJKd",
-    "EPCjjvbdvwMBWBVu",
-    "EPDKjvbdFejSOItR",
-    "EOcLKvbdNPwqWOHT",
-    "EPDKjvbdbsCjscia",
-    "EObkKvbdyYIiaoyk",
-    "DoDKjvbdLZQirzuG",
-    "EObjjvbdSLZGVGjs",
-    "DoCjjvbdAMgxsWzY",
-    "DoDLKvbdEObjjwCd",
-    "DnbkKvbdsPvOicWG",
-    "EPCkKvbdrJAKElne",
-    "EPCkKvbdauCGwjsh",
-    "DncLKvbdegkWRnQg",
-    "EPCkKvbdYpmEiNFR",
-    "DoDKjvbduaDxsPFI",
-    "DoCjjvbdcyxoxYqC",
-    "DoCkKvbdkMakzFHP",
-    "DnbjjvbdJbibqJbx",
-    "DnbkKvbdWWhxWDeH",
-    "DoCjjvbdssRsYzFD",
-    "DoDKjvbdpyPIHRDx",
-    "DncLKvbdwNWANDeN",
-    "DoDKjvbdJYUBglRQ",
-    "EObkKvbdXnRAYVVt",
-    "DoCjjvbdUWLpKTaR",
-    "DoDKjvbdTqROttgm",
-    "EPCkKvbdVqnXaeMD",
-    "EObjjvbdADRwiyiQ",
-    "DoDKjvbdlrZUyrci",
-    "EPDKjvbdvAdZSndh",
-    "DoCkKvbdzoQQeDLx",
-    "DnbkKvbdSQUGjFdX",
-    "EOcLKvbdqBJFAXIE",
-    "EObkKvbdSCEFLiZL",
-    "DnbjjvbdzoQQdcMY",
-    "DnbkKvbdpxngfqEY",
-    "DncLKvbdbsDLUEKB",
-    "DoCjjvbdXrlBMtOx",
-    "EObjjvbdKCjDQicY",
-    "DncLKvbdLrWlzUpz",
-    "EObjjvbdaaWEfQQX",
-    "EObjjvbdtlYWaTaX",
-    "DnbkKvbdMowpunGs",
-    "EObkKvbdSLYeuHKs",
-    "EObkKvbdTAEhhCOd",
-    "EPCkKvbdmSYtyrci",
-    "DncLKvbdYkqcsnLm",
-    "DoDLKvbdrylQTAgn",
-    "DncLKvbdJXtCIMRQ",
-    "EObkKvbdSBdElIyL",
-    "DoDLKvbdwygefYFS",
-    "DncKjvbdyXhibPzL",
-    "EPCjjvbduaDxsPFI",
-    "EObjjvbdZoNiFEzK",
-    "EPCjjvbdkNBkyeHP",
-    "EPCkKvbdWRnXadlD",
-    "DncLKvbdRWmdDLhD",
-    "DnbkKvbdmSYtzTDi",
-    "EOcKjvbdkVwODbXw",
-    "DncLKvbdQlxCZOUz",
-    "EObjjvbdbhlijfXY",
-    "EOcLKvbdXmqAXtut",
-    "EOcLKvbdmbKXXnnV",
-    "DoDKjvbdkHgMFfOL",
-    "EPCkKvbdfekymgHA",
-    "DoCjjvbdeKKRvUzn",
-    "DoDKjvbdkHfkefNk",
-    "DoCjjvbdyqPMiKXA",
-    "DnbjjvbdUQqOtuIN",
-    "EOcKjvbdEPCkKwDE",
-    "DoDLKvbdZRNFIleR",
-    "DnbjjvbdRacdlJZL",
-    "EOcLKvbdTukoitAq",
-    "EOcLKvbdZLrDtOMN",
-    "EOcLKvbdgKfzcGAE",
-    "EObjjvbdzjVQQESt",
-    "EOcLKvbdcIlijevx",
-    "EOcKjvbdGKdsDHmV",
-    "DncLKvbdKkBHvAJy",
-    "EOcKjvbdZMRctOLm",
-    "EPCkKvbdADRxKZiQ",
-    "EObjjvbdDwxLsssl",
-    "EPDLKvbdUxgszLPO",
-    "EPCkKvbdSQTfiedX",
-    "EPCjjvbdNeEUJIkE",
-    "DoDLKvbdpyPHfqDx",
-    "DnbkKvbdyOShXsJD",
-    "DncLKvbdLiBkpxAS",
-    "DoDKjvbdaaWEepQX",
-    "DoCjjvbdWSOYBeLc",
-    "EOcKjvbdLFegbAqV",
-    "EPDKjvbdffLzOGgA",
-    "EObkKvbdFkErbglu",
-    "DncLKvbdiZuFlROG",
-    "DncKjvbdegkWRnQg",
-    "DoDLKvbdQdDApRDr",
-    "EOcLKvbdeYZtURez",
-    "EObjjvbdrXQLcIxq",
-    "DoDLKvbdxZhGGXeS",
-    "DoDLKvbdGGKSOItR",
-    "EObjjvbdjhHLfFnL",
-    "EOcLKvbdUQpoUuHm",
-    "DoCkKvbdXrlBNUPY",
-    "DoDKjvbdJXtCIMRQ",
-    "DnbkKvbdZMSDsnLm",
-    "DncKjvbdCTBDUGWr",
-    "DncKjvbdbhlikGXY",
-    "DoDKjvbdXmqAYVWU",
-    "DnbjjvbdliDsqVRa",
-    "DnbkKvbdmajXYOnV",
-    "EObjjvbdJpyePGNe",
-    "DnbkKvbdCTAcUGXS",
-    "DoDLKvbdCDpBVjNG",
-    "EOcLKvbdxwhiaoyk",
-    "DoDKjvbdxVNFQyMO",
-    "EPCkKvbdVvhwvEEg",
-    "DnbkKvbdFWYoomJe",
-    "EOcKjvbdlrZUysEJ",
-    "EPDKjvbdqquKnKaN",
-    "DoCkKvbdTkunaVoJ",
-    "EOcLKvbdfHkVrOQg",
-    "EPDLKvbdiUzFWrUb",
-    "DoDLKvbdtAGqIABS",
-    "DoCkKvbdZRMdhmEq",
-    "DnbkKvbdNsUVfeVQ",
-    "EPDLKvbdqwPkbiZR",
-    "DoCkKvbdNUsSLNAX",
-    "DncKjvbdmpZxvKyC",
-    "EPCkKvbdLYqKSztf",
-    "EPDKjvbdZyEKODMS",
-    "EPDKjvbdNGbomPuL",
-    "DncKjvbdZMSDtNlN",
-    "EPCjjvbdTXjkmzjx",
-    "EObkKvbdBdQAvKMf",
-    "EOcLKvbdkySrTYgU",
-    "DnbkKvbdZoOIddzK",
-    "DoCkKvbdZMSDsmkm",
-    "EPCkKvbdCWzdIdpW",
-    "DncLKvbdBvzdIdov",
-    "DoCjjvbdaRfDHtFk",
-    "DnbkKvbdWeyZtAOs",
-    "DoDLKvbdnCJwYPOV",
-    "DoCjjvbdEYYLstUM",
-    "EOcLKvbdwtldqZMO",
-    "EPCjjvbdFVxoomKF",
-    "EObkKvbdyqPMhiwA",
-    "DoDLKvbdkxrrSxgU",
-    "DoCjjvbdeATqNYKG",
-    "DncLKvbdJKEAJpHE",
-    "DoCkKvbddndsLUTr",
-    "DnbjjvbdqFceUWBI",
-    "DoDLKvbdhkddOUby",
-    "DncKjvbdGKdrcIMu",
-    "EPCkKvbdelevflik",
-    "DoDKjvbdhaoDFWqR",
-    "DoCjjvbdYlSDsmlN",
-    "EPCjjvbdiZuGLpmf",
-    "EObkKvbdnCJvxPNu",
-    "DnbkKvbdhzUelRNf",
-    "DnbkKvbdZeYGzgiC",
-    "DoCkKvbdDnbkLWbd",
-    "DnbkKvbdnHFYMmfy",
-    "DoCjjvbdePEsKtTr",
-    "DnbjjvbdZQmEhleR",
-    "DnbkKvbdTkunaVoJ",
-    "DnbkKvbdFWZPpMjF",
-    "DoDKjvbdSwkMNzkY",
-    "EOcLKvbdwtldpyMO",
-    "EOcKjvbdhkdcmtby",
-    "DoCjjvbdNQXqWNfs",
-    "EPDKjvbdzjUpPdTU",
-    "DnbjjvbdqceJPnWB",
-    "EPDKjvbdUyHsyjoO",
-    "EPCkKvbdZshhxcsO",
-    "DncKjvbdqAiFAWgd",
-    "EObkKvbdgFkzOGgA",
-    "DncKjvbdmgFYNNgZ",
-    "DoDLKvbdDjHjWYKA",
-    "DnbjjvbdJbicRKCx",
-    "DnbkKvbdfNFwHMjL",
-    "EPCkKvbdWSNxBdlD",
-    "EPDLKvbdCJKbLJFj",
-    "EPDKjvbdEOcKkXDE",
-    "EPCkKvbdVrOYCElD",
-    "DnbjjvbdCIkBjhej",
-    "DoDLKvbddoFTKstS",
-    "DnbjjvbduDDVXVoP",
-    "EObkKvbdxwiKCPzL",
-    "DnbkKvbdZGvdAPTJ",
-    "DoDLKvbdBdPaVjNG",
-    "EOcKjvbdIHGzYwxH",
-    "DoCjjvbdGFjSNhsq",
-    "DnbjjvbdlYsSSxgU",
-    "EPCjjvbdqrUjnKaN",
-    "EOcLKvbdtvOXipsA",
-    "DoDLKvbdrounjCuf",
-    "DoCkKvbdFVyPomKF",
-    "EOcKjvbdNHCpNPtk",
-    "EPDLKvbdWeyZtAPT",
-    "EPDKjvbdjcLkQfuH",
-    "EOcLKvbdzHZMAMeX",
-    "DoCjjvbdUMWPBVni",
-    "EOcKjvbdHELWKBjK",
-    "DoDKjvbdMgComQUk",
-    "DnbkKvbdiGjDZWJu",
-    "DncKjvbdyqOmJKXA",
-    "DoDKjvbdVZITyjoO",
-    "DoCjjvbdzQoNJJwA",
-    "EOcLKvbdGAoQxizm",
-    "DoDKjvbdatagYKsh",
-    "EPDKjvbdSBceMJYk",
-    "DoDLKvbdMpYQvOHT",
-    "DncKjvbdiCOcFWpq",
-    "DoCjjvbdUGznLvvF",
-    "EPDLKvbdANIYrvyx",
-    "EPCjjvbdIwtCHkpp",
-    "EObkKvbdJSyBSmYM",
-    "EObkKvbdwuMdqYlO",
-    "EObjjvbdmuVZkKSG",
-    "DncLKvbdSPsfjFdX",
-    "DoDLKvbdSQUHJedX",
-    "DoDKjvbdiVZdwSUb",
-    "EPDLKvbdRjxfVGkT",
-    "EObjjvbdmpZyVkZC",
-    "DncLKvbdhzUelROG",
-    "EPCkKvbdxVMeRZMO",
-    "EOcKjvbdxxIiapZk",
-    "EOcKjvbdJSyBTNYM",
-    "EPDKjvbdMSXMzUpz",
-    "EObkKvbdJmADzHVB" };
-
-  public static void main(java.lang.String[] unused) {
-    try {
-      BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("bad.out"));
-      for (int i = 0; i < strings.length; i++) {
-        out.write(strings[i].getBytes());
-        out.write("\n".getBytes());
-      }
-      out.close();
-    } catch (Exception e) {
-      System.out.println("Some exception occurred");
-    }
-  }
-}
--- a/hotspot/test/runtime/7158800/InternTest.java	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*
- * @test
- * @bug 7158800
- * @run shell/timeout=400 Test7158800.sh
- * @summary This test performs poorly if alternate hashing isn't used for
- * string table.
- * The timeout is handled by the shell file (which kills the process)
- */
-import java.util.*;
-import java.io.*;
-
-public class InternTest {
-    public static void main (String args[]) throws Exception {
-        final String badStringsFilename = "badstrings.txt";
-
-        if (args.length == 0 || (!args[0].equals("bad") && !args[0].equals("normal"))) {
-            System.out.println("Usage:  java InternTest [normal|bad]");
-            System.exit(1);
-        }
-
-        FileInputStream fstream = new FileInputStream(badStringsFilename);
-        DataInputStream in = new DataInputStream(fstream);
-        BufferedReader br = new BufferedReader(new InputStreamReader(in));
-        String toIntern, toDiscard;
-        int count = 0;
-        long current = 0L;
-        long last = System.currentTimeMillis();
-
-        if (args[0].equals("bad")) {
-            while ((toIntern = br.readLine()) != null) {
-                toDiscard = new String((new Integer((int)(Math.random() * Integer.MAX_VALUE))).toString());
-                toIntern.intern();
-                count++;
-                if (count % 10000 == 0 && count != 0) {
-                    current = System.currentTimeMillis();
-                    System.out.println(new Date(current) + ": interned " + count + " 0-hash strings - last 10000 took " + ((float)(current - last))/1000 + "s (" + ((float)(current - last))/10000000 + "s per String)");
-                    last = current;
-                }
-            }
-        }
-        if (args[0].equals("normal")) {
-            while ((toDiscard = br.readLine()) != null) { // do the same read from the file to try and make the test fair
-                toIntern = new String((new Integer((int)(Math.random() * Integer.MAX_VALUE))).toString());
-                toIntern.intern();
-                count++;
-                if (count % 10000 == 0 && count != 0) {
-                    current = System.currentTimeMillis();
-                    System.out.println(new Date(current) + ": interned " + count + " normal strings - last 10000 took " + ((float)(current - last))/1000 + "s (" + ((float)(current - last))/10000000 + "s per String)");
-                    last = current;
-                }
-            }
-        }
-        in.close();
-    }
-}
-
-
--- a/hotspot/test/runtime/7158800/Test7158800.sh	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-#!/bin/sh
-# 
-#  Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
-#  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-# 
-#  This code is free software; you can redistribute 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-#  or visit www.oracle.com if you need additional information or have any
-#  questions.
-# 
-#
-#   Run test for InternTest.java
-#
-
-if [ "${TESTSRC}" = "" ]
-then TESTSRC=.
-fi
-
-if [ "${TESTJAVA}" = "" ]
-then
-  PARENT=`dirname \`which java\``
-  TESTJAVA=`dirname ${PARENT}`
-  echo "TESTJAVA not set, selecting " ${TESTJAVA}
-  echo "If this is incorrect, try setting the variable manually."
-fi
-
-if [ "${TESTCLASSES}" = "" ]
-then
-  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
-  exit 1
-fi
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
-  SunOS | Linux | Darwin )
-    NULL=/dev/null
-    PS=":"
-    FS="/"
-    ;;
-  Windows_* )
-    NULL=NUL
-    PS=";"
-    FS="\\"
-    ;;
-  CYGWIN_* )
-    NULL=/dev/null
-    PS=";"
-    FS="/"
-    ;;
-  * )
-    echo "Unrecognized system!"
-    exit 1;
-    ;;
-esac
-
-JEMMYPATH=${CPAPPEND}
-CLASSPATH=.${PS}${TESTCLASSES}${PS}${JEMMYPATH} ; export CLASSPATH
-
-THIS_DIR=`pwd`
-
-${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -fullversion
-
-${TESTJAVA}${FS}bin${FS}javac -d . ${TESTSRC}${FS}InternTest.java
-
-cp ${TESTSRC}${FS}badstrings.txt .
-
-${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -XX:+PrintStringTableStatistics -XX:+TraceSafepointCleanupTime InternTest bad > test.out 2>&1 &
-C_PID=$!
-
-sleep 60
-
-ps | grep ${C_PID} | grep -v grep
-
-if [ $? = 0 ]
-then
-    kill -9 ${C_PID}
-    echo "Test Failed"
-    exit 1
-else
-    echo "Test Passed"
-    exit 0
-fi
--- a/hotspot/test/runtime/7158800/badstrings.txt	Wed Oct 31 18:35:56 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30001 +0,0 @@
-EOcLKvbddZyPxYpb
-DncLKvbdPxmAGrqj
-DoCjjvbdpxoIHQdY
-EPCkKvbdqYoHfqEY
-DnbkKvbdezvYdiUX
-DnbjjvbdeEoRbXCj
-EObkKvbdbsCkUEKB
-EOcLKvbdnUtyjiqf
-DncLKvbdRWnDcMHc
-DoCkKvbdrSUkOLAm
-DncLKvbdfNFwGmJk
-EPDLKvbdvAdYroFI
-DoDLKvbdiGibyViu
-DncLKvbdYqNEhmFR
-DoCkKvbdEARhlzXX
-DncLKvbdSZjHsCvA
-DncKjvbdqTsgRqkU
-DnbjjvbdqAiFAXHd
-EPDKjvbdGcjvJaij
-DnbkKvbdwtldpxkn
-DoDKjvbdYkrETnMN
-EPCjjvbdbBWEfQQX
-EPCjjvbduMXwAtBX
-DncLKvbdbsCkTcia
-DoCjjvbdczYpYZRC
-EOcKjvbdFeiqmhsq
-DoCkKvbdKCicQibx
-EOcKjvbdZLrEUOLm
-DoCjjvbdaNKbStmH
-DoDKjvbdJbjDQjDY
-EPCkKvbdemFwGmKL
-EPDKjvbdZQleImEq
-DncKjvbdZjShPfbG
-DnbjjvbdqYnhHREY
-DoCkKvbdaRfDIUGL
-DoDKjvbdLrWlyuQz
-DnbjjvbdZisHofaf
-EObjjvbdhtydvrUb
-DnbjjvbdRotHKGEX
-EObjjvbdNeEThhkE
-EPCjjvbdZtJJZESn
-DoDKjvbdnPyxvLYb
-EPDKjvbdeEoRbWbj
-EOcLKvbdFxttaEXb
-EObjjvbddwystRez
-EPCjjvbdJpzEnenF
-DnbkKvbdTppntuIN
-EPCkKvbdTukpKUBR
-DnbkKvbdhlFEOUcZ
-EObkKvbdlhdUQuRa
-DnbjjvbdkClKqHUg
-EOcKjvbdqTtGqqkU
-DncKjvbdtkwvaUBX
-DoDKjvbdsQWOjCuf
-DncLKvbdEKIJuwjA
-DncKjvbdGLErcIMu
-EOcLKvbdNPwpumfs
-EObkKvbdnVUzLJrG
-DoCkKvbdcTDKsdKB
-DncKjvbdKRZdoFme
-EOcLKvbdemFvgNKL
-EPCkKvbdznopdblY
-EPDLKvbdOYPVzdOU
-DnbjjvbdsZlPsAhO
-DoDLKvbdKCjDRKDY
-DoCkKvbdhuZeXSVC
-EPDKjvbdOStVgEtp
-DncLKvbdvwMAvBWV
-EPDKjvbdBcoaWJlf
-EOcKjvbdZxdKODMS
-DoCjjvbdbsCkTcjB
-EOcLKvbdwWlAuaWV
-DnbjjvbdFejRnJUR
-DnbjjvbdmIdTqVSB
-DnbkKvbdqBIeAWhE
-DncKjvbdrMzJyMIJ
-DoCkKvbdZGvdAOsJ
-DncLKvbdjggLfFnL
-DoCjjvbdYqNFJMdq
-DoCkKvbdqZPHfqDx
-DncLKvbdOEdThiLE
-DoCkKvbdZirgpGaf
-EPDLKvbdziuQPdSt
-EObkKvbdKQyeOenF
-DoDLKvbduaDySndh
-DoCjjvbdVUNUGLvK
-DncKjvbdAMhYrvzY
-DnbkKvbdnQZxvKxb
-EPCjjvbdBhjakJFj
-DncLKvbdmfeYNNfy
-DoDLKvbdjlbLydfo
-DoDLKvbdpyPIGpcx
-EOcLKvbdnVUzLJqf
-DoCjjvbdmJETqVSB
-DoDLKvbdJTZAsMxM
-DoCkKvbdnQZxvLZC
-DoDKjvbdACqwizJQ
-DncKjvbdvBEZSoFI
-DncKjvbdGckVjCJj
-DncLKvbdiMFENtcZ
-Dnbjjvbdjuvmcaww
-DnbkKvbdZyEKNblS
-DoCjjvbduMYXBUBX
-DnbjjvbdFWYopNJe
-DoDKjvbdelfXGljL
-DnbjjvbdakLenmcA
-EPDKjvbdfILWRmpg
-EObjjvbdSLYeuHLT
-DoCjjvbdMfbolotk
-EPDLKvbdrRuKnKaN
-EOcKjvbdyzdnRhIh
-DoDLKvbdGAoRZJzm
-DoCjjvbdhlFDnUcZ
-EPDLKvbdmpZyVkYb
-DncKjvbdTpqPUuIN
-DncLKvbdHDjvJaij
-EPDLKvbdYlRcsmkm
-EPDLKvbdvlvAMdFN
-DncKjvbdIsZArmYM
-EOcLKvbdegjuqnQg
-EOcLKvbdZQmFJNFR
-DoCjjvbdZxdJmcMS
-EPCkKvbdlZTSTYgU
-DoDKjvbdqceJPnWB
-DncLKvbdVgwuxGxz
-DncKjvbdDnbkLXDE
-EPDLKvbdatbHYKsh
-DncKjvbdEzsqFLbi
-EPDLKvbdnVVZkKRf
-EOcKjvbdKeegbBQu
-EPCkKvbdKfGHaaRV
-EPDKjvbdmIctRVRa
-EPCjjvbdRMxBxnUz
-DnbjjvbdJYTbILpp
-EPCkKvbdTAEiHbPE
-EOcLKvbdfelZnGgA
-DoCjjvbdOStWGeUp
-EOcLKvbdemGXHNJk
-DoDKjvbdYTMAmUOx
-EPCkKvbdpyOhGpcx
-EPCkKvbdAMgxsWzY
-DnbjjvbdYkrETnMN
-EPDLKvbdUQqPUtgm
-DncKjvbdehKurNqH
-DoCjjvbdZMSETnLm
-DoDKjvbdIHGyyXwg
-EObjjvbdXGYzUAPT
-DoCjjvbdhbPCeWqR
-DoCkKvbdKNADzGuB
-DnbjjvbdFeirOJTq
-DncLKvbdaRecHtFk
-DnbkKvbdzoPpeClY
-EObkKvbdZRMeJMeR
-DnbjjvbdYfvdAPSi
-DncLKvbdJcKCqJcY
-EOcLKvbdqvokbhyR
-DoDLKvbdrRuLNjaN
-DoCjjvbdTlWPBWOi
-DoCkKvbdjvWnEBxX
-DoDLKvbdTkunaVoJ
-DoCkKvbdQZNAHTSK
-EObjjvbdqwPkbhyR
-EOcLKvbdNHDPlpUk
-DncLKvbdIHHZxxYH
-DncLKvbdtkxXAtAw
-DncLKvbdSCEFMJZL
-DnbjjvbdZQmEhldq
-DoCjjvbdNGbolotk
-DnbjjvbdnCKWwnmu
-DncLKvbdzHZMANEw
-DoDKjvbdmttykJrG
-DnbkKvbdlrZUzSci
-EPDKjvbdSKyGVHKs
-DoCjjvbdKVuGEFGi
-EPCjjvbdCIkBkIej
-DncLKvbdzHZMAMeX
-DnbkKvbdaSFbgsek
-DncLKvbdHDjujBij
-DoDKjvbdGZVUaDwb
-DnbjjvbdZnnJFEzK
-DoCkKvbdtcDUwWOo
-DoCkKvbdlBMoNALA
-EOcKjvbdNsUWHFUp
-DoDLKvbdVUNUFlVj
-DnbkKvbdhkdcnUcZ
-DncLKvbdLiBkqYAS
-EOcKjvbdzoPpdcLx
-EPDKjvbdijGIJmXr
-EOcKjvbdZisHofaf
-DoDLKvbdeOdrkUUS
-DoDLKvbdnPyxvKxb
-EPDKjvbdIxUBhMRQ
-DncLKvbdlhctRUqa
-DoDLKvbdmgFXlnGy
-DncKjvbdCJKbKiGK
-EOcLKvbddndrjtUS
-DnbjjvbdkDLjqGuH
-DncKjvbdmIcsptqa
-DoCkKvbdvvlAvBWV
-EObjjvbdjblLQftg
-DnbjjvbdCEQBWKMf
-DnbjjvbdBdPaVilf
-DoCkKvbdZxcjODLr
-DoCkKvbdEObjjwCd
-EPDKjvbdyTNhlqbH
-EPCkKvbdUMVoAvPJ
-DncKjvbdUxhUZjoO
-DncKjvbdqqtjmkAm
-DncKjvbdKfGICBRV
-EPCjjvbdVrOXaeLc
-EPDLKvbdwXLaWBWV
-EPCkKvbdjblKqHUg
-DnbjjvbduDCuWuoP
-EPDKjvbdNGbpMouL
-EObjjvbdBcoaVjNG
-DncLKvbdrWpMDIxq
-DncLKvbdhaoCdwRR
-DnbkKvbdFxtuBDwb
-DncKjvbdIjEAKPgE
-EOcLKvbduCbuXVoP
-DoDKjvbdZtIiZDsO
-DnbjjvbdEztRElCi
-DncLKvbdxmsHwsJD
-DnbjjvbdRbEElIxk
-DoDKjvbdWHwvXgYz
-EOcKjvbdQlwbYnUz
-EOcLKvbdVTltFkuj
-DncKjvbdliETptqa
-DnbkKvbddoErjtTr
-DoCkKvbdgPazvdXh
-DncKjvbdySmhlqag
-DoCjjvbdbPgHDkzd
-DoCkKvbdFWZPomKF
-EObjjvbdssSSxydc
-EObjjvbdzQnliJwA
-EObkKvbdKCjCpibx
-EPCjjvbdpyOhHREY
-DncLKvbddjJqutzn
-EObkKvbdBdQAujMf
-EPCkKvbdLAjflbXq
-DncLKvbdLBLGlaxR
-DoDLKvbdrpWPJbuf
-DoCjjvbdEKHiuxKA
-DoCjjvbdXsMAlsnx
-EObkKvbdptTgSSLU
-DoDKjvbdnHFXmNfy
-DncKjvbdCJKbKhej
-EPCjjvbdhlEdOUby
-EOcKjvbdKWUfEFGi
-DoDKjvbdZQmFJMdq
-EPCjjvbdiGjDZWKV
-EObkKvbdVAbQrprZ
-DoDKjvbdfekzNgHA
-DoDLKvbdnHEwlmgZ
-DncKjvbdwzHeexEr
-DoCjjvbdmpZxujyC
-EPDKjvbdwMvAMcdm
-DoCjjvbdfHkVrNqH
-EPCkKvbdYzbfRiuy
-EPCkKvbdZtIiZDrn
-DnbjjvbdjvWnDbYX
-DoCjjvbdOStVgEtp
-EPDLKvbdZMSETmlN
-EPDKjvbdBhjajhej
-EPCjjvbddoFTLUUS
-DnbkKvbdsQVoJcWG
-EPCjjvbdrEFJQNvB
-DoCjjvbdMpYRWOGs
-EOcLKvbdZirgpHBf
-EPDLKvbdyOTIXsJD
-DoCkKvbdKRZdnfNe
-DnbjjvbdbBWFFoow
-EPCjjvbdgFlZnHHA
-DnbkKvbdGGJrOIsq
-DoDLKvbduDCtwWPP
-EObjjvbdNddUIhjd
-DnbjjvbdxsNiMqag
-EObjjvbddeOrCWbj
-EObjjvbdPxmAGsRj
-EOcLKvbddeOrCXDK
-DoDLKvbddeOrBwCj
-DoCjjvbdVqnYCElD
-DnbkKvbdUyIUZjoO
-EObjjvbdeFOrCXDK
-EObkKvbdVrNxCFLc
-EObjjvbdTfzmkwWF
-EOcKjvbdIHGzZYYH
-EPDKjvbdtbbuXWPP
-DoCjjvbdZisIQHBf
-EObjjvbdbsCkUDjB
-EPCkKvbdVwJXudFH
-EPDKjvbdrouoKDVf
-EPCkKvbdFyVVBEYC
-DncLKvbdZnnIeEzK
-EPDLKvbdxVNFQxkn
-DoDKjvbdpxnggRDx
-DoDLKvbdqZOgfpcx
-DncKjvbdCIjakJGK
-EPCkKvbdCJLBjhej
-DoDLKvbdnPzYvKxb
-EOcKjvbdqTsgSRkU
-EOcLKvbdLBLGlaxR
-DoDLKvbdcbTMrAUN
-DncLKvbdzitoodSt
-DoDKjvbdJvUfDdfi
-EOcLKvbdHDjvKCJj
-EPCkKvbdeOeTKssr
-DnbkKvbdlYrqsYft
-DncLKvbdiiehKMxS
-DncKjvbdURQoVUhN
-DnbkKvbduMYXBUAw
-DoDLKvbdSPtHJfEX
-EObkKvbdqBJFAWgd
-EOcKjvbdFpATWgFy
-DoDLKvbdBsBDTfXS
-DncKjvbdjhHLfFmk
-DoCjjvbdCJKakIfK
-DnbkKvbddoFSjtTr
-EObkKvbdANIYsWzY
-EObjjvbdCTAbtFvr
-EObjjvbdrRtkOLAm
-DnbkKvbdkxsSTYgU
-DoCjjvbdnBiwXnmu
-EObjjvbdwtmEqYlO
-EPDKjvbdrylQTAhO
-DoDLKvbdtbbtvvOo
-EPCjjvbdZLrETmlN
-EPDLKvbdWXJYWDdg
-DoCkKvbdKQzFOfOF
-EPCjjvbdwzIFfXeS
-DncKjvbdRjyFuHLT
-EPDLKvbdULunaWPJ
-DncKjvbdUxhTykOn
-DnbkKvbdJcKCqKDY
-EPDLKvbdcbSmSATm
-DnbkKvbdegjurNqH
-EPDKjvbdZjTIQGbG
-EPCjjvbdiLddNuCy
-DoCjjvbdZQldiNEq
-EOcLKvbdakMGPODA
-EObjjvbdnHEwlmgZ
-EOcLKvbdBsAcUGXS
-EPCkKvbdiVZdwSUb
-EOcLKvbddCTNSAUN
-DnbkKvbdEXxMUUUM
-DncKjvbdYpldiMeR
-DoDKjvbdNddTiIjd
-DoDLKvbdZLqdUNlN
-EPCkKvbdiBncFWpq
-DncLKvbdiCPDEvqR
-EOcKjvbdUyHszKoO
-DncKjvbdhtydvqtb
-EPCjjvbdpxoHgQcx
-EObkKvbdkWWnDaxX
-DnbjjvbdBhkBkJFj
-DoCkKvbdRacdkhyL
-EOcLKvbdZjTHpHCG
-EPCkKvbdMowqWOGs
-DncLKvbdegjurNpg
-EObjjvbdfMfWfmKL
-EPDLKvbdZirgpGaf
-DoDLKvbdiZuFlQnG
-DncLKvbdFxuVAcxC
-EObkKvbdZisHofaf
-EOcKjvbdJSyBSmYM
-EPDLKvbdVYgtZkPO
-EOcKjvbdRbEFMJYk
-DncLKvbdrEFIonWB
-DncKjvbdKDJbqJcY
-EOcLKvbdhfjCxuiu
-EObjjvbdLLAhWAKZ
-DoCkKvbdRXNcblID
-DoDLKvbdcbSmSATm
-EOcLKvbdwWlAvAuu
-EObkKvbdiBnbdvpq
-DoCkKvbdNQXpumgT
-DncLKvbdkVwOECYX
-DnbkKvbdfoazwDxI
-DoDLKvbdbBWFFpPw
-DoDLKvbdvBDxsPEh
-EPDKjvbdJqZdoFme
-DoDLKvbdIryArmXl
-EPCjjvbdANIZSwZx
-EPCkKvbdVhYVxGxz
-DncKjvbdLAjgNCYR
-DncKjvbdxxIjCQZk
-DncKjvbdbiNKKewY
-EPCjjvbdlrZVZsEJ
-EPDKjvbdIryAsMwl
-DoCkKvbdtAHRIAAr
-EPDKjvbdJmAEZfuB
-EPCkKvbdZjSgogBf
-DoDLKvbdOXnuzcnU
-DnbkKvbdehKvRnQg
-EObjjvbdZyDimbkr
-DoDKjvbdmajWwoOV
-EOcKjvbdkMalZeHP
-EOcKjvbdIjEAJpHE
-EPCkKvbdDihKVxKA
-DncKjvbdNddUIiKd
-EObjjvbdqdFIpOWB
-DoCkKvbdxnShXsJD
-DoDLKvbdjmBkzEfo
-EOcLKvbdatagYLTh
-DoCjjvbdVhYVxHYz
-DnbjjvbdJbjDRKDY
-EPCjjvbdLBLHNCYR
-DnbjjvbdnGeYNOGy
-EOcLKvbdUsmTekvK
-EPCjjvbdtkxXBTaX
-EPCjjvbdzoPqFCkx
-DncKjvbdCIjbKhej
-DncKjvbdZLqdTmkm
-DoDKjvbdsPunicVf
-EOcKjvbdmgFXmNgZ
-EObkKvbdiMFENuCy
-DoDKjvbdhanbeXRR
-EObkKvbdACqwiyhp
-DncKjvbdZisIQHBf
-EPCjjvbdgQBzwDwh
-DnbjjvbdyYJJaoyk
-DoDKjvbdxUldqZMO
-EObkKvbdkClLQgVH
-EPCjjvbdZQldiMeR
-EPDLKvbdZyEKOClS
-EPDLKvbdcIlikFvx
-DoDKjvbdrzMQTBHn
-DnbjjvbdVYgtZkPO
-DoDLKvbdHEKuiajK
-EPCkKvbdczZQXxqC
-DoDKjvbdrDdiQNua
-DncLKvbdcImKLGWx
-DoCjjvbdVYgtZkPO
-EPDLKvbdZnnIeFZj
-EPDKjvbdMIakqYAS
-DoCkKvbdSLYfUgLT
-EPDLKvbdiCObdvpq
-DnbjjvbdRpUHKFcw
-DoDLKvbdIHHZyYXg
-EPCjjvbdypoMhiwA
-DnbkKvbdCEPaVjMf
-DnbkKvbderAvzlDP
-DnbkKvbdZQleImFR
-EOcKjvbdKRZdneme
-DoDLKvbdiBnbeXQq
-DncLKvbdEPDKjvcE
-EOcLKvbdauCGwkTh
-DncLKvbdEvZQPmJe
-EPCkKvbdURQnuVIN
-DncLKvbdegjvSOQg
-EPCjjvbdKaKgMawq
-DnbkKvbdRzKISbvA
-DncLKvbdiLdcnUcZ
-EPDLKvbdkDMKpfuH
-DoDLKvbdRbDdkhyL
-DnbjjvbdDwxMUUTl
-DnbkKvbdrpWPKCuf
-DnbkKvbdNVSqjmAX
-DoDKjvbdRbDeMIxk
-EOcLKvbdcyxpXyRC
-DncLKvbdRMwbYnUz
-EObjjvbdqlzJxlHi
-DoCkKvbdJYUCIMQp
-DncLKvbdLZQjSzuG
-EOcKjvbdxVNEqYkn
-DnbkKvbdZoOIeFZj
-DoCjjvbdBraCtFwS
-EOcLKvbdliDsqVSB
-EPCkKvbdeATqNXif
-DncLKvbdkMbLydgP
-EObjjvbdZxdJmbkr
-DoCjjvbdraellHLZ
-EObkKvbduDCuWvPP
-DoCkKvbdpstGrSLU
-DoCjjvbdLGFgbBQu
-DnbkKvbdhtzFWquC
-EObjjvbdoAKztHdO
-EPDLKvbdatafxKtI
-EPDKjvbdkWXNcaww
-DoCkKvbdwkXEHzzG
-EObkKvbdmgEwmNgZ
-DncKjvbdBiLCLJFj
-DoCjjvbdeOdsKssr
-EOcLKvbdfILWSORH
-EObkKvbdCDpAujMf
-EPDKjvbdKDKDQibx
-DoDKjvbdVUMtGLuj
-EObkKvbdrXQMCiYq
-DncKjvbdePEsLTtS
-DncLKvbdDxYLtUTl
-EPCkKvbdGYuVBEYC
-DncLKvbdNeEUIiKd
-EPCkKvbdpxoIHRDx
-EObjjvbdFkEsDHlu
-EObjjvbdssSSxzFD
-DoCkKvbdUtNTfMVj
-DnbjjvbdJcKDRKDY
-DncKjvbdqiAKEmOe
-DoDKjvbdtlXwAtBX
-DnbkKvbdxmsIYTIc
-EObkKvbdLrXMzUpz
-DoCjjvbdkxsSSxft
-DncKjvbdQlwaxnUz
-EObkKvbdjhGlFfNk
-EPCkKvbdxsNhmRag
-DoDLKvbdMfcPmQUk
-DoDKjvbdQvnEDLhD
-EObjjvbdVgxVxHYz
-DoDLKvbdlrYtyrdJ
-DoCjjvbdezvYeIsw
-DncLKvbdNddTiIjd
-EPDLKvbdGGJrNiUR
-EPDLKvbdRzJhTDWA
-EPCjjvbdvvkaWBVu
-EOcKjvbdRXNdCkgc
-EOcKjvbdQZNAHTSK
-EPCkKvbdsCGNLfkZ
-EOcLKvbdDwwktTsl
-EOcLKvbdqlzJyLgi
-EOcLKvbdxsNiMqag
-EOcLKvbdhzVFlROG
-EOcKjvbdEztRFMCi
-DnbkKvbdqiAJdmPF
-EPDLKvbdjcMKqGtg
-EObkKvbdTlWOaWOi
-EPDLKvbdURRPUuHm
-DoDKjvbdelfWgNKL
-EOcLKvbdGAnqZJzm
-EObjjvbdGZUuAdXb
-DoDLKvbduLwwAtAw
-DoCjjvbdZjTIQGbG
-EPCjjvbdRNXbYnUz
-EPDLKvbdiLeENtby
-EObjjvbdMowpunGs
-EOcKjvbdbiNJjevx
-DoDKjvbdEYYLstTl
-DoDLKvbdqUTfrRjt
-DoDKjvbdbsCkUEJa
-DoDKjvbdXsMBNUPY
-EPCjjvbdRNXaxnUz
-DoDLKvbdNGcQNQUk
-DnbjjvbdEARiMywX
-EPDKjvbdSKxfUfkT
-DncKjvbdhtyeXRtb
-DncKjvbdZLqcsnLm
-EObkKvbdZnmheEzK
-EObjjvbdtbcUvuno
-DnbjjvbdrzMQTBHn
-DnbjjvbdDwwktTsl
-EPDKjvbdkxsSTYgU
-DoDKjvbdIryArlxM
-DoDKjvbdnBivxOnV
-DoDKjvbdeATplwif
-EOcLKvbdKeegbApu
-EPCjjvbdMgDQMotk
-DoCjjvbduCbtwWOo
-DnbkKvbdyNsHwrhc
-DnbkKvbdtvNxJpsA
-EOcLKvbdqAheAWgd
-DoCkKvbdURQoUtgm
-EOcKjvbdqceIpOWB
-DoCkKvbdVwIwudFH
-DnbkKvbdbLMFnmcA
-EOcLKvbdZjTHpHBf
-EOcKjvbdRXNdCkhD
-EPDLKvbdiHJcZViu
-DoCjjvbdxxIjCPzL
-DnbkKvbdBcpBWJmG
-EPCkKvbdZyEKOCkr
-EPDKjvbdOTUWHFVQ
-DoCjjvbdIGgZxwwg
-EPDLKvbdFjeSbhMu
-EPDLKvbdhgKCxvJu
-EOcLKvbdNsUWGdtp
-EPDKjvbduVnXipsA
-DncLKvbdGYuVBEXb
-EPDLKvbdZtIhyESn
-DoDKjvbdZxdJmcLr
-DoCjjvbdUsltGLuj
-DoDKjvbdDoDLKvbd
-DncLKvbdrDdhpNvB
-EPDLKvbdKCjDRJbx
-DoDLKvbdxLWdHzyf
-EObkKvbdrzMQTAhO
-EOcLKvbdOFDtJJKd
-EPCkKvbdrSVKmjaN
-EOcKjvbdWWiYVdEg
-EOcKjvbdWWhwvDdg
-DncKjvbdpstHRqjt
-EPCkKvbdKWVFceGi
-DoCkKvbdZjShPfbG
-DoCkKvbdSxKlNzkY
-EPDLKvbdIwtCHkqQ
-EOcKjvbdsCGNLgLZ
-DncKjvbdzaAOfgCM
-DoDLKvbdxmrhYSiD
-DncLKvbdfMfWgMjL
-EPDKjvbdqFdEsuaI
-EOcLKvbdiLeDnUcZ
-DoCjjvbdKVuFceHJ
-DoCjjvbdfekzNgHA
-EOcKjvbdOFEThiLE
-EPDLKvbdqceJPnWB
-DoDLKvbduCbtwWOo
-DncKjvbdTqROtuIN
-DncKjvbdpedFUWBI
-DoDLKvbdrEFJQNua
-DoDLKvbdyXhjCPyk
-EPCkKvbdJYUBhLqQ
-EPCkKvbdtcCuXVno
-DoDLKvbdZLrEUOLm
-EPCkKvbdpstGrRjt
-DncLKvbddePSCXCj
-EObkKvbdauCHXjsh
-DoDLKvbdkHfkefNk
-EObjjvbdMRwMzUpz
-EObjjvbdaMkCTVNH
-DoCkKvbdGGJrNhtR
-EPDLKvbdvBDxrneI
-EPDLKvbdIHHZxwxH
-EOcLKvbdrJAJdmPF
-EOcKjvbdGZUuAdXb
-EOcLKvbdbUbHYLUI
-DnbjjvbdJzofYEAN
-EPDKjvbdFxtuBDxC
-DnbkKvbdQvnDbkgc
-EPDKjvbdJmADzGta
-DoDKjvbdZRMdhleR
-DnbkKvbdsrqsZZeD
-EObkKvbdrovPJbuf
-EPCjjvbddeOqbXCj
-EObjjvbdtcDVXVoP
-DncKjvbdMfbpNQVL
-DoCkKvbdhbPCeXQq
-DoCkKvbdNHComQVL
-EObjjvbdvBDxroFI
-EPCjjvbdnBivwoNu
-EObjjvbdbhljKewY
-EPDKjvbdZyDimcMS
-EObkKvbdWSOXbElD
-EOcKjvbdTfznMXVe
-EPCjjvbdZtJJYcsO
-DoCjjvbdRjxfVHLT
-DoCkKvbdVTltGMVj
-DncKjvbdYfwEAOri
-DncKjvbdYkrEUOMN
-EObkKvbdqGEEsuaI
-DncLKvbdjJfHimXr
-EPDLKvbddndsLUTr
-DnbkKvbdqBJFAWhE
-EPDLKvbdEOcKjwDE
-EPCkKvbdtvOYJqTA
-DncLKvbdkyTRsZHU
-DoCjjvbdTppnuVIN
-DncLKvbdwyhFeweS
-DncKjvbdsBelkgKy
-DoCjjvbdKDKCqJcY
-DoCjjvbdkClKqHVH
-DoCjjvbdcTCjtDia
-EPDLKvbdUVkpJtAq
-EPDLKvbdRyjITCvA
-DnbjjvbdJuuFcdgJ
-DoDKjvbdrJAJdmOe
-DncKjvbdJcJbqKCx
-DoDLKvbdJcJbqJcY
-DoDKjvbdeEoSCXDK
-DoDLKvbdSwjlNzkY
-EObjjvbdzitopDrt
-DoCkKvbdKWVGEEgJ
-DncKjvbdpssfqrKt
-EOcLKvbdUMWPBVoJ
-DncKjvbdyzdmrIIh
-EPCjjvbdxUldqZLn
-DoDLKvbdySnImRbH
-DoCjjvbdGdKvJaij
-DoCkKvbdxZgeewdr
-EObkKvbdiLddNuDZ
-DnbjjvbdSCDdkiZL
-DncKjvbdznpREcMY
-EOcLKvbdaRebhTfL
-DnbjjvbdZQldiMdq
-EPCjjvbdbrbjtEKB
-EOcKjvbdEARiMzXX
-DoDLKvbdXrkaNTnx
-EPCkKvbdQZNAHTRj
-DoDLKvbdEzspeLcJ
-EPCjjvbduVnYKRTA
-EObjjvbdJXtBhMQp
-EPDKjvbdeOdrjssr
-EPCjjvbdLqwMytpz
-EPDKjvbdUMVoBVoJ
-DncKjvbdRpUGifDw
-EPDLKvbdZyDinDLr
-DnbkKvbdNrsufeVQ
-EPCkKvbdZMSDtNlN
-EPCkKvbdySnJNSCH
-EPCjjvbdfMevfljL
-DncLKvbdXsMBNTnx
-DnbkKvbdpxoHfqDx
-DncLKvbdUQpntthN
-DncKjvbdIsZArlwl
-DoDLKvbdZGwEAOsJ
-EOcKjvbdVvhwvDdg
-EOcLKvbduWNxJqTA
-EPCjjvbdHEKvJaij
-DoDKjvbdrpWOjCuf
-DncLKvbdrpWOjDVf
-DoCjjvbdIHGzYwwg
-DoDLKvbdpxoIGqEY
-DoDLKvbdJcJbqKDY
-DoCjjvbdRWmdClHc
-EPCjjvbdFWYopNJe
-DncKjvbdmfdwlmfy
-DoCkKvbdxUleQxlO
-EObjjvbdnGdxMnGy
-EPCjjvbdvvlAvBVu
-DncLKvbddndsKssr
-EObjjvbdZMRcsnLm
-EOcKjvbdFxttaEXb
-DncKjvbdVUNTfMVj
-EOcLKvbdNrtWHFUp
-DoDKjvbdwuMdqYlO
-EPDLKvbdrXPkbhxq
-EObjjvbdrEFIpNua
-EObjjvbdziuQQDrt
-EOcLKvbdqYoIGpcx
-DnbjjvbdsQVoJcVf
-EObkKvbdkDMKpgUg
-EObjjvbdvBDyTPFI
-DncKjvbduCbuWvOo
-EPCjjvbdkVvnECYX
-DncLKvbdZGvdAOri
-DoCkKvbdrXPlDJZR
-EOcLKvbduCcVWvOo
-DoDKjvbdCEPaWJlf
-EPDKjvbddoErjssr
-DncKjvbdACqxKZiQ
-EPCjjvbdUVlPitAq
-EPDKjvbdjJfHjMxS
-EObkKvbdAMhYsWzY
-DoDKjvbdnBivxOmu
-EOcLKvbdbiNKKfXY
-EPDKjvbdYqMeIleR
-EObkKvbdJmADygUa
-EObjjvbdEPDLLWcE
-EPCjjvbdrXPkcIxq
-EOcLKvbdliDtQtqa
-DoCjjvbdmoyxujyC
-EPDLKvbddoFTLTsr
-EOcLKvbdCWzdJEpW
-DnbjjvbdrEEhpOWB
-DoDKjvbdZLrDtNkm
-EOcLKvbdLFfHbAqV
-EOcKjvbdmttzLKSG
-EOcLKvbdmbJvwoOV
-EOcKjvbdUaCQrqSZ
-DnbjjvbdmgExMnGy
-EPDKjvbddndrkUUS
-EObkKvbdDwwkstTl
-DoCkKvbdcJMjLFwY
-DnbjjvbdaNLBruMg
-DoDLKvbdQYmAHTRj
-DnbkKvbdsQWOicWG
-EObkKvbdMRwMzUpz
-DoDLKvbdZshiZDrn
-EPDLKvbdnPzYujxb
-EOcKjvbdCEQAujMf
-EPDLKvbdKefHbApu
-DoDLKvbdYpldiNFR
-DoCkKvbdFWZQQNJe
-DncLKvbdznpQeCkx
-EOcKjvbdnQZxvKxb
-DoCkKvbdVBBprpqy
-DnbkKvbdZirhPfaf
-DnbkKvbdegjvSNqH
-EOcLKvbdqdEiPnWB
-EObjjvbdBhkCKiGK
-EObjjvbdxZgfGYFS
-DnbjjvbdNQYQumgT
-EPCjjvbdxsNhlrBg
-DoCkKvbdQdDApRDr
-DoCkKvbdxxIiaoyk
-EPDKjvbdFeirNhtR
-DoCjjvbdegjvSOQg
-EObkKvbdqcdiQNvB
-DncLKvbdiMEdNtcZ
-DncLKvbdTqRPUthN
-EPCkKvbdwygeexFS
-DoDKjvbdyTOJMrBg
-DncLKvbdeEoRavbj
-EPCjjvbdtbcUvvOo
-EObjjvbdKCicRJcY
-EObjjvbdZyEKODMS
-DnbjjvbdmJDtQtrB
-DncLKvbdEARhlyvw
-DnbjjvbdIxTbILqQ
-EOcLKvbdwygefYFS
-DoCjjvbdznoqFCkx
-DoCjjvbdRpUGjGDw
-DncKjvbdhzVGMQnG
-EPCjjvbdhkeDnVCy
-EObkKvbdOEdUIiKd
-DncKjvbdrDeIomua
-DncLKvbdiHJbxuiu
-EPDKjvbddxZstRez
-EPDLKvbdmSYuZrdJ
-EObkKvbdVUNUFkvK
-EPDLKvbdNeEUJIjd
-DoCkKvbdiMEdNuCy
-DoDLKvbdRDcApQcr
-EPCjjvbdTlVoBVoJ
-EObjjvbdLBKgNBwq
-EPCkKvbdsCFllHKy
-EObjjvbdnVUzLJqf
-DoDKjvbdqrVLNkBN
-DoCkKvbdqFcdtWBI
-DncLKvbdbVCGxLTh
-EOcLKvbdeFPSCXCj
-EOcLKvbdRpTgKFdX
-EObjjvbdznpQeDLx
-EOcKjvbdjvXNcaxX
-DnbjjvbdHDkWJbJj
-DncKjvbdhkeENuDZ
-DnbkKvbdnUtyjjSG
-DoDKjvbdSQUHJfDw
-DncKjvbdbUbHYLUI
-EOcLKvbdNsTvGduQ
-EPDLKvbdSZigsCvA
-DncKjvbdMfcPlpUk
-DoDLKvbdxrnIlrBg
-DncKjvbdiLdcnVCy
-EPCjjvbdmfeYNOHZ
-DoCkKvbdjvWmcaxX
-DoDKjvbdbUbHXkUI
-DncKjvbdBhkBjiFj
-DoDLKvbdNHColpVL
-EOcKjvbdrykosAhO
-DncLKvbdqGDeUVaI
-DnbkKvbdhgJcZViu
-DnbjjvbduLxXAtBX
-EPCjjvbdYpleJNFR
-EPDLKvbdQvmdClHc
-DnbjjvbdJYTbIMRQ
-DncLKvbdznpRFDMY
-EOcLKvbdZnmiFEyj
-DnbkKvbdrRuLOLAm
-EObkKvbdhkeEOUby
-DncLKvbdYlSEUOLm
-DoCjjvbdhkdcmtby
-DncLKvbdddnrCXDK
-DoDLKvbdKaLHNCYR
-EOcKjvbdcyxpYZQb
-EPDLKvbdACqwjZhp
-DoCkKvbdBsBDTevr
-EObkKvbdeKJqvUzn
-EObkKvbdcImJkGWx
-DncLKvbdYSlAltOx
-DncLKvbdlrYtyrdJ
-EObkKvbdKxqJrztf
-EOcKjvbdsQWPJcVf
-DoDKjvbdkySqrxgU
-EObjjvbdeEoRbXCj
-EOcKjvbdHDkVjBij
-DoDLKvbdCTBCsfXS
-DoCjjvbdKCjDQibx
-DoCjjvbdlhdTqUrB
-DoDKjvbdTulQKTaR
-DoCkKvbdRjxetfkT
-EPCjjvbdEuyQQNKF
-EPCjjvbdDoDKkXDE
-DoCjjvbdsQWPJbuf
-DoDKjvbdhuZdvqtb
-EPDLKvbdiHKCyWJu
-EPDLKvbdLFegaaQu
-DoCjjvbdqZPHgRDx
-DncKjvbdUWMPjUAq
-DoDLKvbdTYKkmzjx
-DoDKjvbdegjvSOQg
-DnbkKvbdUtNTekvK
-EObkKvbdNsTvGeVQ
-DoDLKvbdfNFvgMjL
-EOcLKvbdZQmEiNEq
-EPDKjvbdBraDTfWr
-EPDKjvbdNGcQNQVL
-EPDLKvbdZyEKODMS
-EOcKjvbdBvzdIdpW
-EPCjjvbdACqwiyiQ
-DoCjjvbddePRawCj
-EPDKjvbdWWiXucdg
-DoDKjvbdWexzUAPT
-DnbjjvbdwXMBWBWV
-EOcLKvbdUyHszLOn
-EPCkKvbdOYOuzcnU
-EPCkKvbdhancEwQq
-DnbkKvbdjggLefOL
-EPCkKvbdFjdsDIMu
-DoDKjvbdrSUjmkBN
-DoDLKvbdZjTIQGaf
-DoDKjvbdMgDPmPtk
-EPDLKvbdWRmwbFMD
-DoCkKvbdzROmJKXA
-DnbkKvbdrDdiQNvB
-DnbjjvbduDCtwVoP
-EOcLKvbdCIjbLJFj
-EPDKjvbdXrkaMsnx
-EPDKjvbdVhXvXfxz
-DncKjvbdhbPDEwRR
-DoCkKvbdpxoHgQcx
-DoCkKvbduMXwBUBX
-EObjjvbdNeEThhjd
-DoCjjvbdirzhrkJz
-DoDLKvbdaMkCTUlg
-DncLKvbdWRnYBeLc
-DnbjjvbdGBPRZJzm
-EOcLKvbdeOeSjstS
-DoDLKvbdmIctRVSB
-DoCjjvbdZxdJnDMS
-DoCkKvbdRpTgKFcw
-DncLKvbdTukojTaR
-DnbjjvbdKRZdoFme
-DnbkKvbdURQoVUhN
-DoDLKvbdyYJKBozL
-EObkKvbdfNFwHMjL
-DoDLKvbdZisIQHBf
-EObkKvbdqFcdsuaI
-DncLKvbdzoPqFDLx
-DoDKjvbdSKxeuHLT
-EPDKjvbdsBemLfjy
-DoCjjvbdJbjCqJcY
-DoCjjvbdNPxRVnGs
-DncLKvbdGcjvJbKK
-EOcKjvbdrWpMDIxq
-EOcLKvbdQdDApQcr
-DoDKjvbdZMRdTnLm
-EOcLKvbddxZssrFz
-EObjjvbdUtNTfLuj
-EPCjjvbdLLBIWAKZ
-DoCkKvbdgFlZmfgA
-EPCjjvbdUVkoitAq
-DoDKjvbdDncKjvcE
-DoDLKvbdRpUHJfEX
-EPDKjvbdLqvlzVQz
-EPDKjvbdZMRdUOLm
-EOcLKvbdCJLBkIfK
-DncKjvbdaSFbhUFk
-EPDLKvbdZoNheEzK
-DncKjvbdUVlPjUAq
-DnbkKvbdKNADyfuB
-EObkKvbdZdwfzghb
-EPDLKvbdZtIhxcrn
-EObkKvbdGckViajK
-DncLKvbdFfJqmiUR
-DncKjvbdKWUfDdgJ
-DoDKjvbdMtrqjmAX
-EOcLKvbdsQWPKDVf
-DoCjjvbdwtleRZMO
-EObjjvbduaDxsPEh
-EPDLKvbdKxqJrzuG
-EOcKjvbdVAaprprZ
-EObjjvbdEuxopMjF
-DnbjjvbdyOTHwriD
-EPDLKvbdrpVnibvG
-EPDKjvbdkWWnDaww
-DncLKvbdrXPkbiYq
-DoDLKvbddxZssqez
-EOcLKvbdHDkWJbJj
-DncLKvbdEPCkLWcE
-DnbkKvbdEXwkstTl
-EObjjvbdqiAKEmOe
-DncLKvbdjAQGaQGj
-EPCjjvbdNeDtJJKd
-EPCjjvbdvwMBWBVu
-EPDKjvbdFejSOItR
-EOcLKvbdNPwqWOHT
-EPDKjvbdbsCjscia
-EObkKvbdyYIiaoyk
-DoDKjvbdLZQirzuG
-EObjjvbdSLZGVGjs
-DoCjjvbdAMgxsWzY
-DoDLKvbdEObjjwCd
-DnbkKvbdsPvOicWG
-EPCkKvbdrJAKElne
-EPCkKvbdauCGwjsh
-DncLKvbdegkWRnQg
-EPCkKvbdYpmEiNFR
-DoDKjvbduaDxsPFI
-DoCjjvbdcyxoxYqC
-DoCkKvbdkMakzFHP
-DnbjjvbdJbibqJbx
-DnbkKvbdWWhxWDeH
-DoCjjvbdssRsYzFD
-DoDKjvbdpyPIHRDx
-DncLKvbdwNWANDeN
-DoDKjvbdJYUBglRQ
-EObkKvbdXnRAYVVt
-DoCjjvbdUWLpKTaR
-DoDKjvbdTqROttgm
-EPCkKvbdVqnXaeMD
-EObjjvbdADRwiyiQ
-DoDKjvbdlrZUyrci
-EPDKjvbdvAdZSndh
-DoCkKvbdzoQQeDLx
-DnbkKvbdSQUGjFdX
-EOcLKvbdqBJFAXIE
-EObkKvbdSCEFLiZL
-DnbjjvbdzoQQdcMY
-DnbkKvbdpxngfqEY
-DncLKvbdbsDLUEKB
-DoCjjvbdXrlBMtOx
-EObjjvbdKCjDQicY
-DncLKvbdLrWlzUpz
-EObjjvbdaaWEfQQX
-EObjjvbdtlYWaTaX
-DnbkKvbdMowpunGs
-EObkKvbdSLYeuHKs
-EObkKvbdTAEhhCOd
-EPCkKvbdmSYtyrci
-DncLKvbdYkqcsnLm
-DoDLKvbdrylQTAgn
-DncLKvbdJXtCIMRQ
-EObkKvbdSBdElIyL
-DoDLKvbdwygefYFS
-DncKjvbdyXhibPzL
-EPCjjvbduaDxsPFI
-EObjjvbdZoNiFEzK
-EPCjjvbdkNBkyeHP
-EPCkKvbdWRnXadlD
-DncLKvbdRWmdDLhD
-DnbkKvbdmSYtzTDi
-EOcKjvbdkVwODbXw
-DncLKvbdQlxCZOUz
-EObjjvbdbhlijfXY
-EOcLKvbdXmqAXtut
-EOcLKvbdmbKXXnnV
-DoDKjvbdkHgMFfOL
-EPCkKvbdfekymgHA
-DoCjjvbdeKKRvUzn
-DoDKjvbdkHfkefNk
-DoCjjvbdyqPMiKXA
-DnbjjvbdUQqOtuIN
-EOcKjvbdEPCkKwDE
-DoDLKvbdZRNFIleR
-DnbjjvbdRacdlJZL
-EOcLKvbdTukoitAq
-EOcLKvbdZLrDtOMN
-EOcLKvbdgKfzcGAE
-EObjjvbdzjVQQESt
-EOcLKvbdcIlijevx
-EOcKjvbdGKdsDHmV
-DncLKvbdKkBHvAJy
-EOcKjvbdZMRctOLm
-EPCkKvbdADRxKZiQ
-EObjjvbdDwxLsssl
-EPDLKvbdUxgszLPO
-EPCkKvbdSQTfiedX
-EPCjjvbdNeEUJIkE
-DoDLKvbdpyPHfqDx
-DnbkKvbdyOShXsJD
-DncLKvbdLiBkpxAS
-DoDKjvbdaaWEepQX
-DoCjjvbdWSOYBeLc
-EOcKjvbdLFegbAqV
-EPDKjvbdffLzOGgA
-EObkKvbdFkErbglu
-DncLKvbdiZuFlROG
-DncKjvbdegkWRnQg
-DoDLKvbdQdDApRDr
-EOcLKvbdeYZtURez
-EObjjvbdrXQLcIxq
-DoDLKvbdxZhGGXeS
-DoDLKvbdGGKSOItR
-EObjjvbdjhHLfFnL
-EOcLKvbdUQpoUuHm
-DoCkKvbdXrlBNUPY
-DoDKjvbdJXtCIMRQ
-DnbkKvbdZMSDsnLm
-DncKjvbdCTBDUGWr
-DncKjvbdbhlikGXY
-DoDKjvbdXmqAYVWU
-DnbjjvbdliDsqVRa
-DnbkKvbdmajXYOnV
-EObjjvbdJpyePGNe
-DnbkKvbdCTAcUGXS
-DoDLKvbdCDpBVjNG
-EOcLKvbdxwhiaoyk
-DoDKjvbdxVNFQyMO
-EPCkKvbdVvhwvEEg
-DnbkKvbdFWYoomJe
-EOcKjvbdlrZUysEJ
-EPDKjvbdqquKnKaN
-DoCkKvbdTkunaVoJ
-EOcLKvbdfHkVrOQg
-EPDLKvbdiUzFWrUb
-DoDLKvbdtAGqIABS
-DoCkKvbdZRMdhmEq
-DnbkKvbdNsUVfeVQ
-EPDLKvbdqwPkbiZR
-DoCkKvbdNUsSLNAX
-DncKjvbdmpZxvKyC
-EPCkKvbdLYqKSztf
-EPDKjvbdZyEKODMS
-EPDKjvbdNGbomPuL
-DncKjvbdZMSDtNlN
-EPCjjvbdTXjkmzjx
-EObkKvbdBdQAvKMf
-EOcLKvbdkySrTYgU
-DnbkKvbdZoOIddzK
-DoCkKvbdZMSDsmkm
-EPCkKvbdCWzdIdpW
-DncLKvbdBvzdIdov
-DoCjjvbdaRfDHtFk
-DnbkKvbdWeyZtAOs
-DoDLKvbdnCJwYPOV
-DoCjjvbdEYYLstUM
-EOcLKvbdwtldqZMO
-EPCjjvbdFVxoomKF
-EObkKvbdyqPMhiwA
-DoDLKvbdkxrrSxgU
-DoCjjvbdeATqNYKG
-DncLKvbdJKEAJpHE
-DoCkKvbddndsLUTr
-DnbjjvbdqFceUWBI
-DoDLKvbdhkddOUby
-DncKjvbdGKdrcIMu
-EPCkKvbdelevflik
-DoDKjvbdhaoDFWqR
-DoCjjvbdYlSDsmlN
-EPCjjvbdiZuGLpmf
-EObkKvbdnCJvxPNu
-DnbkKvbdhzUelRNf
-DnbkKvbdZeYGzgiC
-DoCkKvbdDnbkLWbd
-DnbkKvbdnHFYMmfy
-DoCjjvbdePEsKtTr
-DnbjjvbdZQmEhleR
-DnbkKvbdTkunaVoJ
-DnbkKvbdFWZPpMjF
-DoDKjvbdSwkMNzkY
-EOcLKvbdwtldpyMO
-EOcKjvbdhkdcmtby
-DoCjjvbdNQXqWNfs
-EPDKjvbdzjUpPdTU
-DnbjjvbdqceJPnWB
-EPDKjvbdUyHsyjoO
-EPCkKvbdZshhxcsO
-DncKjvbdqAiFAWgd
-EObkKvbdgFkzOGgA
-DncKjvbdmgFYNNgZ
-DoDLKvbdDjHjWYKA
-DnbjjvbdJbicRKCx
-DnbkKvbdfNFwHMjL
-EPCkKvbdWSNxBdlD
-EPDLKvbdCJKbLJFj
-EPDKjvbdEOcKkXDE
-EPCkKvbdVrOYCElD
-DnbjjvbdCIkBjhej
-DoDLKvbddoFTKstS
-DnbjjvbduDDVXVoP
-EObkKvbdxwiKCPzL
-DnbkKvbdZGvdAPTJ
-DoDLKvbdBdPaVjNG
-EOcKjvbdIHGzYwxH
-DoCjjvbdGFjSNhsq
-DnbjjvbdlYsSSxgU
-EPCjjvbdqrUjnKaN
-EOcLKvbdtvOXipsA
-DoDLKvbdrounjCuf
-DoCkKvbdFVyPomKF
-EOcKjvbdNHCpNPtk
-EPDLKvbdWeyZtAPT
-EPDKjvbdjcLkQfuH
-EOcLKvbdzHZMAMeX
-DoCjjvbdUMWPBVni
-EOcKjvbdHELWKBjK
-DoDKjvbdMgComQUk
-DnbkKvbdiGjDZWJu
-DncKjvbdyqOmJKXA
-DoDKjvbdVZITyjoO
-DoCjjvbdzQoNJJwA
-EOcLKvbdGAoQxizm
-DoDKjvbdatagYKsh
-EPDKjvbdSBceMJYk
-DoDLKvbdMpYQvOHT
-DncKjvbdiCOcFWpq
-DoCjjvbdUGznLvvF
-EPDLKvbdANIYrvyx
-EPCjjvbdIwtCHkpp
-EObkKvbdJSyBSmYM
-EObkKvbdwuMdqYlO
-EObjjvbdmuVZkKSG
-DncLKvbdSPsfjFdX
-DoDLKvbdSQUHJedX
-DoDKjvbdiVZdwSUb
-EPDLKvbdRjxfVGkT
-EObjjvbdmpZyVkZC
-DncLKvbdhzUelROG
-EPCkKvbdxVMeRZMO
-EOcKjvbdxxIiapZk
-EOcKjvbdJSyBTNYM
-EPDKjvbdMSXMzUpz
-EPCkKvbdNddThhjd
-DoDKjvbdznpREcLx
-DncLKvbdqYoHgREY
-DnbjjvbdiCPCdvqR
-DoCjjvbdsQVoKDVf
-DoCjjvbdqFcdtWBI
-EPCkKvbdFkFTDIMu
-DnbkKvbdQvmdCkgc
-DnbjjvbduCbtwWOo
-DoCjjvbdaNKaruNH
-EOcLKvbdrpWPKCvG
-DoCjjvbdEKHiuwjA
-DoDLKvbdsBfMlHKy
-EObjjvbduCcVWuno
-DoCkKvbdNddUIiLE
-DoDLKvbdVrNwbElD
-EPCkKvbdTqQoUuHm
-DoCjjvbdcJMikFvx
-EOcKjvbdijGIJmYS
-DncKjvbdtvNwipsA
-EPDKjvbdGQASwGey
-DoCkKvbdmJEUQtqa
-DncKjvbdpxnggQcx
-EOcLKvbdDnbjjwDE
-DnbjjvbdxVMdqZLn
-EPCkKvbdTkvPAvOi
-DnbkKvbddijRvUzn
-DnbjjvbdJuuFceGi
-DoDLKvbdeATplxJf
-EObjjvbdiLeDmuDZ
-EObkKvbdzHYlANFX
-EObkKvbdSBdFLiYk
-DncLKvbdMgCpNPuL
-DncLKvbdNsTufeVQ
-EPCjjvbdUQqOtuIN
-EPCkKvbdKDJcQicY
-DnbkKvbdsCFmLfjy
-DnbjjvbdNdctJIjd
-DoDLKvbdzjUpPdSt
-EPDLKvbdMoxRVmgT
-EOcKjvbdbsCjscia
-DoCjjvbdrDeIpOWB
-EPDKjvbdOTUVgFVQ
-EOcLKvbduWNwipsA
-DoDKjvbdJcJcRKCx
-DncKjvbdGZUtaDwb
-EPCjjvbdZtJJYdSn
-DoDLKvbdtcDVWuoP
-EObjjvbdKaLGmCXq
-DoCjjvbddZxoxYpb
-DnbkKvbdWRmxCEkc
-EOcLKvbdNrsufduQ
-DoDLKvbdqlzJxlIJ
-DoCkKvbdFVyPoljF
-DnbkKvbdjggMGGOL
-DoDLKvbdLAkHMawq
-DncLKvbdwuMdpxlO
-DoDKjvbdtSqrxydc
-DoCjjvbdSLZGVHKs
-DnbjjvbdrMzKYlIJ
-DnbjjvbdTAFIhBnd
-EPDLKvbdIxTbIMRQ
-DoDLKvbdbBVeGQPw
-DnbkKvbdvlvANEEm
-EPDLKvbdEOcKkXCd
-DoCkKvbdYqMdhmFR
-EObjjvbdnUtzKiqf
-EPCkKvbdtunXjQsA
-DnbkKvbdddoSBwDK
-DnbjjvbdTqROttgm
-EPCkKvbdzQnmJJwA
-EObjjvbdfpBzwDwh
-DncKjvbdRotHJecw
-EPCjjvbdhtzFWrVC
-DncLKvbdqdEhpNvB
-DnbjjvbdkWWmcbYX
-EOcLKvbdYSkaMsoY
-EObjjvbdDjIKVxKA
-DnbkKvbdrounjDVf
-EObkKvbdJzpFwdAN
-DoDLKvbdsBelkgLZ
-DoDLKvbdwtmEqZMO
-DncKjvbdxmrgwriD
-EOcKjvbdDoDLLWbd
-EPDKjvbdIwtBhLpp
-EPDLKvbdUaBqTRRy
-DoCjjvbdjKFhJlwr
-DoCkKvbdGLFTDIMu
-EPCjjvbdrbFmMHKy
-DoDLKvbdehKurOQg
-DncKjvbdijFhJlwr
-DoCjjvbdjvXOEBww
-EPCjjvbdTXjkmzkY
-EOcKjvbdaSFcHtGL
-EPDLKvbdpyPIHQcx
-EOcKjvbdmaiwXoNu
-DoDKjvbdSBdFMJZL
-DoDKjvbdjKGIKMwr
-DncLKvbdyXiKBozL
-DoCkKvbdqlzJxkhJ
-EObkKvbdrNZiyLhJ
-DoCkKvbdrpWPKCvG
-DncLKvbdVrOXbEkc
-DnbkKvbdOAIrtJrA
-DnbkKvbdrXQMChyR
-EOcLKvbdDnbjjwCd
-EPCjjvbdjvXOECXw
-EPCkKvbdMgDPmPtk
-DoDLKvbdYfwEAPSi
-EPCjjvbdzGxlANEw
-DoDKjvbdmbKWwoNu
-EOcLKvbddZxpXxqC
-DoDLKvbdLGGHbApu
-DoCjjvbdVTltGLuj
-EPCjjvbdOEdThiKd
-DoCjjvbdUyHtZkPO
-DncLKvbdHELWJajK
-EOcKjvbdcarmSAUN
-EObjjvbdqiAJdmOe
-EObkKvbdZQleImFR
-EObkKvbdQccBQRDr
-DoCkKvbdLAjfmBwq
-DncKjvbdSKxeuHKs
-DncLKvbdmJDsqUrB
-EOcLKvbdGFirNhtR
-DncLKvbdEARiMywX
-DnbjjvbdZxcjNblS
-DncLKvbdWXIwudEg
-DoDLKvbdhkeDmuCy
-EObkKvbdUslselWK
-DoCkKvbdLhakqYAS
-DoCjjvbdIMBzmvpk
-EPCjjvbdKaKgMbXq
-EPCjjvbdiLeDmtcZ
-DnbjjvbdsPvPKCvG
-DncLKvbdnVUzLKRf
-DoDLKvbdiUyeWrVC
-EOcLKvbdjblLRGuH
-DnbkKvbdhtydvqtb
-EOcKjvbdTqQnuVIN
-DoCjjvbdMtsRkNAX
-EPCjjvbdGKdrbglu
-DncKjvbdMoxQvOGs
-DoDKjvbdiHKDZWKV
-DoDKjvbdULvPAvPJ
-DnbkKvbdEvZQPmKF
-EObjjvbdkxrrTZGt
-EObjjvbdKCicQibx
-DoCjjvbdKkAgvAKZ
-EOcKjvbdNxOuzcmt
-EPDLKvbdbsCjsdJa
-EObjjvbdHDkVjBjK
-EPCjjvbdYqMdiMeR
-EPCkKvbdczYoxZRC
-DncKjvbdnPzYujxb
-DnbjjvbdMpYRWOHT
-DncLKvbdLFegbBRV
-DncKjvbdxVMdqYlO
-DoDKjvbdFkErbhNV
-DncKjvbdLLBHvAJy
-DoDKjvbdTfzmkwWF
-EPCjjvbdyXiKCQZk
-DoDKjvbdqUUGrSLU
-EObjjvbdGcjuiaij
-EOcLKvbdZRMdhmFR
-DoCjjvbdZoNiEdzK
-DoCjjvbdEARiNZwX
-DoCkKvbdwXMBVaWV
-EPCjjvbdVZHsyjoO
-DoDKjvbdyXhjBpZk
-EObkKvbdtkxWaUAw
-DnbkKvbdLrWmZuQz
-DncLKvbdySnJNRbH
-EPCjjvbdezvYdhsw
-DoDLKvbdhancFWqR
-EObjjvbdyzeORgiI
-EPCjjvbdyXiJbPyk
-EObjjvbduVnXiqTA
-DnbjjvbdZjTHofaf
-EPDLKvbdLrXMyuQz
-DnbjjvbdHffyxxXg
-DoDLKvbdOStWGdtp
-DnbjjvbddijRvUzn
-DoCjjvbdYNqAXtut
-EPCjjvbdUQpntuHm
-DoDKjvbduWOXjQsA
-DoDLKvbdtTRsYydc
-DncKjvbdpfDeUVaI
-DoDLKvbdULuoAvOi
-DnbjjvbdqmZjYkhJ
-EPDKjvbdZMSETmkm
-DoDLKvbdZshhyETO
-DncLKvbdQdCaQQcr
-DncKjvbdQccBQRES
-EOcKjvbdrNZjYlIJ
-EPDKjvbdjAQHBPgK
-DoCjjvbdnUuZkJqf
-DoDKjvbdLAjfmBxR
-EObjjvbdUsltFkuj
-DoDLKvbdZQleJMeR
-DnbjjvbdBraCtGXS
-DoDLKvbdaSFbhUGL
-EObjjvbdrbGMkgLZ
-EPCkKvbdJYUCHlRQ
-EOcKjvbdgFkzNfgA
-DoCjjvbdaRecHtFk
-EPDKjvbdnUuZkKSG
-EPDLKvbdkWWmdBww
-EObkKvbdypoNJKXA
-EOcKjvbdZxdJmblS
-DncLKvbdZirhPgCG
-DoDLKvbddeOrCXCj
-DoCjjvbdOXoVzcnU
-DncLKvbdSBdFMJZL
-DncKjvbdrzMPraHn
-DncLKvbdqZPHfpcx
-DncKjvbdVAbQsQqy
-DoDKjvbdySnJNSCH
-EPDLKvbdtSqsZZeD
-DncLKvbdtvOYKRTA
-DncLKvbdLGGICBQu
-DoDLKvbdDncLKwDE
-EObjjvbdNrtVgEtp
-EOcKjvbdUQqOtthN
-EObjjvbdZtIiYcrn
-EOcKjvbdmuVZjjRf
-DnbjjvbdcJNKKevx
-DoCkKvbdDxXlTtUM
-DncLKvbdqZOhHQcx
-EPDKjvbdIsZBSlwl
-EOcKjvbdNUsRkNAX
-DoDLKvbdRbEFMJYk
-DnbjjvbdiBncFWqR
-EOcLKvbdRzKIScWA
-EOcKjvbdRbEFMIyL
-EPDKjvbdsPunjDVf
-DoCjjvbdhzVFkpmf
-EOcKjvbddxZtUSFz
-DncKjvbdnVUykJrG
-EOcLKvbdEPCkKvbd
-EPCjjvbdnUuZkKSG
-DnbjjvbdnCKWxOmu
-DnbkKvbdYzcFrKVy
-DoDKjvbdvmWAMcdm
-EObkKvbdhkdcmuDZ
-DncKjvbdNsUVgFVQ
-EPDLKvbdYzbeqiuy
-EOcLKvbdUxgszLOn
-DnbjjvbdZQmEiMeR
-DoCjjvbdkHflFemk
-EPDLKvbdhbPCdwRR
-DoDLKvbdWXIwucdg
-DoCjjvbdOYOuzcnU
-DoDLKvbdcSbkTdJa
-EOcKjvbdEvYpQMjF
-EPDLKvbdrykosAhO
-EObkKvbdrovPJbvG
-DoDLKvbdkHflGGNk
-DoCjjvbdZtIiYcsO
-DoDLKvbdZnmiEdzK
-EObjjvbdZMSDsnLm
-EPCjjvbdLAjfmBxR
-DncLKvbdptUGrRjt
-EOcLKvbdNQXqVmgT
-DoDLKvbdCIkCLIfK
-EPDLKvbduVmxKRTA
-EPDKjvbdHbLzEzAD
-EPCjjvbdbUbGxKsh
-DoCkKvbdjlbLzEgP
-EPCkKvbdXGYzUAPT
-DnbkKvbduLxXAsaX
-EObkKvbdJvUfEFHJ
-EOcKjvbdmbKXXoNu
-EPDKjvbdQvnDbkgc
-DoDLKvbdiUzFWrVC
-EObkKvbdZyEKNcLr
-DoDKjvbdrEEhpNua
-DnbkKvbdzitoocsU
-EPCjjvbdmbJvxOnV
-EOcLKvbdNddTiIjd
-DncKjvbdfpBzvdYI
-EObkKvbdBhjbLIfK
-DoCjjvbdFjeTDHmV
-EOcKjvbdRjyGVGkT
-DoCkKvbdZQldhmFR
-EPDKjvbdqlzKZLhJ
-DnbkKvbdZoOIeEyj
-DncKjvbdBdPaVjNG
-EPCkKvbdTulPjUBR
-EPDLKvbdGGJqmiTq
-DoDLKvbdGGJqmhsq
-EOcKjvbdIryBTNXl
-EPDLKvbdIsYaSmXl
-DoCjjvbdVwJXudEg
-EPCkKvbduDCtvuoP
-EOcLKvbddBsMrAUN
-DncLKvbdrouoJcWG
-DoDKjvbdCgLfHAzc
-DncLKvbdhtzEvqtb
-DoDKjvbdZtIiYcsO
-DncKjvbdMfbomPtk
-DncKjvbdYqNEiMdq
-DnbkKvbdCTBCtFvr
-DncLKvbdhtzEvquC
-DoCjjvbdAMhZSvyx
-DoDKjvbdjlbLzEfo
-EOcKjvbdZLrETmkm
-DncKjvbdULvPAuni
-DoCjjvbdtcCtvuoP
-EPCkKvbdOTTugEtp
-EObjjvbdhtzEvquC
-DoCjjvbdkHgLfFmk
-DncKjvbdmoyyVkZC
-DnbkKvbdsBemLgKy
-DoDKjvbddCTMrAUN
-DoCjjvbdmuUykJqf
-DnbjjvbdbQHGckzd
-DoDLKvbdyOShXriD
-EPDLKvbdZRNFImFR
-EOcLKvbdDoDKkWcE
-EPCkKvbdwMvAMcdm
-DnbjjvbdbKlFoNcA
-DoCkKvbdMfbpMpVL
-DncLKvbdhkeDnUby
-DoDKjvbdMSWmZtpz
-EPCjjvbdmfeYMmgZ
-DnbjjvbdqiAKFMoF
-DoCkKvbdSBdElIxk
-EOcLKvbduoTzpkPU
-DncLKvbdDoCjjwCd
-EObjjvbdLGGHbBQu
-DnbkKvbdQcbaQRDr
-EPDLKvbdyNrgxTJD
-EObjjvbdtSqryZdc
-DoDLKvbdegkWSNpg
-EOcKjvbdZLrDsnLm
-EObjjvbdFkEsCgmV
-DoDKjvbdatagXjtI
-DncLKvbdGZUuBDwb
-DoDLKvbduDDUvuno
-EObjjvbdURROtuIN
-DnbkKvbdyXhjBpZk
-DoDLKvbdKaLGlaxR
-DoCkKvbdlZTRrxgU
-EPDLKvbdUsltFlWK
-DncLKvbdGGKRnIsq
-DnbkKvbdijFhKNXr
-DoDKjvbdrWokbiYq
-EObjjvbdUaCRSqRy
-EObjjvbdRkYfVHKs
-DnbkKvbdQvnDcMID
-EObjjvbdvBEYrneI
-DnbkKvbdySmiNRbH
-EPDKjvbdjuvmcaxX
-DoCjjvbdVTmUGLuj
-EPDLKvbdxVMeRYlO
-DnbjjvbdNPwpvNgT
-DoDKjvbdJTZArlxM
-EPDLKvbdjbkkRHUg
-DnbkKvbdSBdFMIyL
-EPDKjvbdMgColpUk
-DncLKvbdVAbQsQrZ
-DncLKvbdyTOJNRag
-DnbjjvbdmgFYMmgZ
-EPDKjvbdTAFIgbOd
-EObkKvbdFWYoomJe
-DoDKjvbdIxUBhMRQ
-DoCjjvbdFWYopNKF
-DoDKjvbdNdcshiLE
-EOcLKvbdwWlBWAuu
-EPCkKvbdYpldiNFR
-EPDLKvbdQwODbkgc
-EPCkKvbdqZOhHQcx
-EObjjvbdHDjujCKK
-DoDLKvbdnBjWwnmu
-EPDLKvbdUQqPUuHm
-DnbkKvbdIryBSlxM
-DnbkKvbdjhGlFfNk
-DnbkKvbdqlyiyMHi
-EPDLKvbdxmsIYTIc
-EPCjjvbdNrsufduQ
-DncLKvbdaaWEepPw
-DnbjjvbdkVvnDaxX
-EOcKjvbdUQpntuIN
-EOcKjvbdQdDAopcr
-DoCkKvbduMXvaUAw
-DnbkKvbdMRwNZuQz
-DoCkKvbdNGcQMotk
-EPDLKvbduWOYJpsA
-DncKjvbdZtJIxcrn
-DnbjjvbdwyhFfXeS
-EOcLKvbdIryAsNYM
-EObjjvbdyTNiNRag
-EPCkKvbdiZuGLqOG
-DncKjvbdHELWJbKK
-DoDKjvbdIGfyxwxH
-EPCkKvbdeOdrkTsr
-DoDKjvbdpstGrRjt
-EOcKjvbdZtJIxdSn
-EObjjvbdZtIiZDrn
-DnbjjvbdOEctIhkE
-DncLKvbdKDJbqJbx
-DncKjvbdEOcLKvcE
-EOcLKvbdgLGzcGAE
-DoCjjvbdGBPQxizm
-EPCjjvbdeFOqbXDK
-EObkKvbdehKuqnQg
-DncKjvbdRosgKFcw
-EOcLKvbdUsmUGLuj
-EOcLKvbdrXQMCiZR
-DoDKjvbdjcMLQftg
-EPDLKvbdHEKvKBjK
-EPDKjvbdbVCHYLUI
-DncKjvbdFfKSOItR
-DncKjvbdYSkaNToY
-DncLKvbdQvmccLhD
-EOcKjvbdnVUykKSG
-DoCkKvbdbsDKsdJa
-EObkKvbdGLFTChMu
-DoCkKvbdqGEFTuaI
-EPCkKvbdddoRbXCj
-EPCjjvbdMfbpNQVL
-DoDKjvbdFjdrbgmV
-EPCkKvbdmRxuZsDi
-DncKjvbdaRfChUGL
-DncLKvbdMJBkqYAS
-EObkKvbdxUmEqYlO
-EPDLKvbdtbbtvuoP
-DoDKjvbdxsOJNSBg
-EPDKjvbdZtIhyDrn
-DncLKvbdKCicRKDY
-EPDLKvbdUtNUFlVj
-EPCjjvbdeATqMxJf
-EOcLKvbdaNLBsUmH
-DoDKjvbdJcJcQjDY
-EPCkKvbdiMEdNtby
-DoCjjvbdiGibyWJu
-DncKjvbdeEnrCXDK
-EPCjjvbdUVlPisaR
-DncLKvbdXGZZtAPT
-DoDKjvbdddoRbXDK
-DoDLKvbdSBdElIyL
-DoCjjvbdRNXbZOUz
-DnbjjvbdTAEhhCPE
-EObjjvbdUMVoBWOi
-DnbkKvbdFjdrcHmV
-DoCjjvbdfIKurORH
-DoDLKvbdVBCRTQrZ
-EOcLKvbdZoNhddzK
-DoCkKvbdULvOaVoJ
-DnbjjvbdZirhPgCG
-EOcKjvbdVBBprqSZ
-DoDLKvbdaSFcIUGL
-DoDLKvbdfIKuqnRH
-DncKjvbdijGIKNXr
-EPDLKvbdrzMPsAgn
-EPDKjvbdNUsSKmAX
-EPCkKvbdLLAhWAKZ
-DncKjvbdkWWnDaww
-DnbkKvbdJYUCHlQp
-EPDLKvbdNwoVzdNt
-DoCjjvbdSLYetfjs
-DoDLKvbdptTgSSLU
-DncKjvbdxVMdqZLn
-DncKjvbdZyDinDMS
-DnbkKvbdnPyxujxb
-EPCkKvbdSiZjRABM
-EPDKjvbdPyNAHSqj
-DncLKvbdqwPlChyR
-EPDKjvbdGckWJbKK
-DoDLKvbdbBWFFoow
-DoCkKvbdkCkkRGuH
-DncLKvbdmJDtQuSB
-EObkKvbdQdCaQQdS
-DncKjvbdKfFhBaQu
-DncKjvbdaNKaruMg
-EOcKjvbdnPzZWLYb
-EObjjvbdxUldqZMO
-DnbkKvbdGckWJaij
-DncKjvbdkVwODaww
-EObjjvbdGKdsDHlu
-EObkKvbdKQyeOfOF
-EPCkKvbdGdKvKCJj
-DnbkKvbdGdKuibKK
-DoDKjvbdOFDtJJKd
-DoCkKvbdwuMdpxkn
-EObjjvbdZjShPgBf
-DoDKjvbdcyxpYZQb
-DnbjjvbdrbGMkgLZ
-DnbjjvbdxsNiMqbH
-DoDKjvbdWSOXbFLc
-EPCjjvbdrDeIomvB
-EOcKjvbdEuxopNJe
-DoDKjvbdKDKCqKCx
-DoCkKvbdkIHLfGNk
-EOcKjvbdnUuZjirG
-DncKjvbdIryArmXl
-DoDKjvbdraemMGkZ
-DncKjvbdEJgivYKA
-DoDLKvbdbhmJkGWx
-DnbjjvbdZyDimcMS
-EOcKjvbdhuZeWrVC
-DnbkKvbdRbEFMJZL
-EPCkKvbdeOdrkUTr
-DoCkKvbdlhdUQuRa
-DnbjjvbdZtIiZDsO
-EPCjjvbdZyEJmcMS
-DnbjjvbdFpATWgGZ
-EOcLKvbduaDxroEh
-DnbkKvbdpeceUWBI
-EOcKjvbdjcMLQftg
-DncLKvbdnPzZWLZC
-DnbjjvbdZyEKNcMS
-DoDKjvbdZMSDsnLm
-DnbjjvbdOAIsTjSA
-DoCjjvbdWSNxCFLc
-DoDKjvbdkClLRHVH
-DncKjvbdZxdJmcLr
-EPCjjvbdOYOuzdOU
-DncKjvbdWHxVxHYz
-DoDLKvbdwXMBWBVu
-EObjjvbdZxdJmcMS
-EOcKjvbdrEFJPmvB
-EOcKjvbdQcbaQQcr
-EPCkKvbdfHkWRnRH
-EOcKjvbdrEEiQNvB
-EObkKvbdcTCjtDia
-DoCkKvbdnCJvwoOV
-DoDLKvbdxnTIYSiD
-EOcKjvbdGQASvfey
-DoDKjvbdUtNTekvK
-DoDLKvbdbUbHXkTh
-DncKjvbdaNLBsVNH
-EPCkKvbdmtuZjirG
-EPDKjvbdvlvANEEm
-DnbkKvbdcIljLGWx
-EOcKjvbdJSyArmYM
-EObjjvbdVTltFlVj
-DncKjvbdTAFIgbOd
-EOcLKvbdUsltGLuj
-EObjjvbdZRNEhmFR
-EOcKjvbdUGznMXVe
-DnbjjvbdTqQoUthN
-DncLKvbdZRNEhmEq
-EObkKvbdKxpirzuG
-EOcKjvbdiVZdvqtb
-EOcLKvbdatbGxKtI
-DnbkKvbdpfDdsvBI
-DnbjjvbdpyPIGqDx
-DoCkKvbdqUUGrRjt
-DoCjjvbdfHjuqmqH
-EPDKjvbdqlzJyLgi
-DoCjjvbdznpREcMY
-EObjjvbdjuvnEBww
-DoCkKvbdQwNdCkgc
-DoCjjvbdxsNhlqag
-EOcKjvbdbsDKtEJa
-EPDLKvbdfIKuqnQg
-DncLKvbdJXsbILqQ
-DoDLKvbdiUydwRuC
-EOcLKvbdUtMsfMVj
-DnbkKvbdfNGWflik
-DoDLKvbdqwQLcJZR
-DncLKvbdYqMeIleR
-DoCjjvbdzaAPGgBl
-EPCkKvbdauBgYLUI
-EPDLKvbdiUydvqtb
-DnbjjvbdRyjITCvA
-DncLKvbdIwsahLqQ
-EPCjjvbdRacdkiYk
-EOcKjvbdRbEFMJZL
-DoCjjvbdrzLoraHn
-EObkKvbdxxIiaozL
-EOcLKvbdJcJbqJbx
-EPCjjvbdZisHogBf
-EOcKjvbdVTmUGMWK
-EPDKjvbdrylQSaIO
-DncLKvbdSCEEkiYk
-DoDLKvbdhtyeXRuC
-EObjjvbdQvmcblID
-DoDKjvbdauCGwjtI
-DnbkKvbdGYtuBEYC
-DoCkKvbdkyTSSxft
-EPDLKvbdIGfyyYYH
-EObjjvbdjlbLzEgP
-EPCjjvbdIwsbHkpp
-EPDKjvbdmuUyjjSG
-DoCkKvbdUQpoUtgm
-EObkKvbdUQqPVVIN
-DncLKvbdXrkaMsnx
-DncLKvbdaMjbTUlg
-DncLKvbdhgJbyVjV
-DnbkKvbdURQoUuIN
-DnbjjvbdFWZQQMie
-EPCjjvbdnCJwYPNu
-EOcLKvbdBcpBVimG
-DoCkKvbdyqPMiKXA
-EObkKvbdnVUzKjRf
-DnbkKvbdVgwvXgYz
-EObkKvbdZsiJZDsO
-EPDKjvbdiCPCdwRR
-EObkKvbdGYuUaEYC
-DnbkKvbdpyPIHREY
-DnbjjvbdiZtfLpnG
-EPCkKvbdVUNTelWK
-DnbkKvbdTppoVUhN
-DnbjjvbdxrnIlrBg
-EPDKjvbdmIdUQtrB
-EObjjvbdkNBkzFGo
-DncKjvbdhbOcFXQq
-DoDLKvbdNGcPmQVL
-EPDKjvbdZoNheEyj
-DnbkKvbdjlbLzEfo
-DoCjjvbdZRMdiNEq
-EObjjvbdczYoxYqC
-EPDKjvbdLAkHMaxR
-DoDLKvbdsPunibuf
-DoDLKvbdNdcshhkE
-EPDKjvbdhkdcnVCy
-EPCkKvbdVZHtZkOn
-DnbjjvbdsrrTYzFD
-DoCjjvbdatbGxKtI
-EOcLKvbdnGdxMnHZ
-EPDLKvbdmaivwoOV
-EObkKvbdjJegjMwr
-EPDKjvbdYfwEAOri
-EOcKjvbdpxngfpcx
-DnbjjvbdEPCjkXCd
-EPDKjvbdxsOImRag
-EObjjvbdEPDKjwDE
-DnbjjvbdYlSETnLm
-DncLKvbdBiLBjhej
-DoDKjvbdrpWPJcVf
-DncKjvbdRpTfiedX
-DoDKjvbdakMGOnDA
-DnbjjvbduVmxKQsA
-DncKjvbdKfFhCBRV
-DnbkKvbdpfEFTvBI
-DncLKvbdqwQLcIyR
-EOcKjvbdlhdTpuSB
-DncKjvbdqwQLbhxq
-DnbkKvbdnHEwlmgZ
-EPDKjvbdDoCjkWbd
-EObkKvbdANIYsWyx
-EObjjvbdpfEEsvBI
-EPDKjvbdCJLCKiFj
-DoDKjvbdqcdhonVa
-EPCjjvbdzjUpQESt
-DncLKvbdZQleImEq
-EPCjjvbdEPCkLXCd
-EPDKjvbdYlRdUNlN
-EObkKvbdxwiKBozL
-DnbjjvbdFjdsChNV
-EObjjvbdwtleRYlO
-DoDLKvbdeOdsLUUS
-EPDKjvbdZLqctOLm
-DoDLKvbdjlbLyeHP
-DoCkKvbdaNLCTVMg
-DnbkKvbdEKHjWXjA
-DnbkKvbdZshhyDsO
-DnbjjvbdsPunibuf
-EPCkKvbdwWkaWBVu
-EPDLKvbdFpATWfey
-EObjjvbdzoQQdcMY
-EPDLKvbdpxngfpcx
-DnbjjvbdgPazwDwh
-EPDKjvbdKVtfEEfi
-EOcLKvbdhkeENuDZ
-EObkKvbdIwtCILqQ
-EPCjjvbdyNrhXsJD
-DnbkKvbdMSWmZuQz
-EOcLKvbdsPunicWG
-DncLKvbdULvPBWPJ
-DoCkKvbdKfFhCApu
-EOcLKvbdTAEhhCOd
-DnbkKvbdSKxetfjs
-DoCjjvbdUtNTfLuj
-EObjjvbdhzVGMROG
-DoCkKvbdxsNhmRag
-DnbjjvbddZyPwxpb
-EObjjvbdEuxooljF
-DncLKvbdVTlsfLuj
-DoCkKvbdZjShQGaf
-EPDKjvbdrSVKnKaN
-DnbkKvbdFxuVBDwb
-DoCkKvbdJXtBhLpp
-EPCjjvbdHffzZXxH
-DoCjjvbdqZOgfqDx
-DncLKvbdqwQMChyR
-EObjjvbdaSGDIUFk
-EPDLKvbdZxdKNcMS
-EObjjvbdhuZdwSUb
-EPDLKvbdfMfWgMik
-DncLKvbdZRNFJMdq
-EOcKjvbdJKEAKPfd
-EPCkKvbdcyxoxYqC
-EOcKjvbdCSaCsevr
-DoDLKvbdKQzEoGNe
-DoDLKvbdjhHLefOL
-DoCjjvbdRjxeuGjs
-DncKjvbdyOTIXsIc
-DnbkKvbdBdQBWKMf
-EOcKjvbduLxXBUBX
-EObkKvbdrSUkNkAm
-DoDKjvbdKfFhBaRV
-EPCjjvbdddoSBvcK
-DncKjvbdyOTHxTJD
-EOcLKvbdiLeENuDZ
-DoCjjvbdJbjDRKCx
-EPDKjvbddoErkUUS
-DoCkKvbdBiKakJGK
-DnbkKvbdCIjbKiFj
-DoCjjvbdIsZBSmXl
-EOcLKvbdBhjajiFj
-DnbjjvbdrzMQTBIO
-EObjjvbdrWolChyR
-EPCkKvbdEARiMzXX
-DoDLKvbdrWpMDJYq
-EOcLKvbdKRZdoGOF
-DoCjjvbdBsAcUFvr
-DoCjjvbdBraDUGXS
-DoCkKvbdIwtBhMQp
-EObjjvbdeATqMxKG
-EPDKjvbdYzbfRjWZ
-EOcLKvbdsCGNLgKy
-DoDKjvbdhficZWKV
-EObjjvbdZQldhldq
-EPDKjvbdsQVoJbvG
-EPDKjvbdsQVnicWG
-DoDLKvbdVZITyjoO
-EPCjjvbdILazmvpk
-EPCkKvbdZMSDsmlN
-DoCjjvbdZGvdAOri
-DoDKjvbdwuMeRYkn
-DnbjjvbdZyEJmblS
-EPDKjvbdhkeENuDZ
-EPDLKvbdGdKvKCKK
-EPCjjvbdjuwOECXw
-EObkKvbdZeXfzghb
-EObjjvbdJmAEZgUa
-EOcLKvbdtcCuWvOo
-EPCkKvbdiiehJlwr
-DoDLKvbdwtldpyMO
-DoCjjvbdjblLQfuH
-DncKjvbdNPwpunGs
-DnbjjvbdSLZFtgLT
-EPDKjvbdyXhjCPyk
-EObjjvbdliETpuSB
-Dnbjjvbdqlyixkgi
-DoDLKvbdmbJvxOnV
-DoCjjvbdZjSgpGaf
-DoCjjvbdqdEhpNua
-DoDLKvbdelfXGmKL
-EPDKjvbdIGgZyYYH
-DncLKvbdfMfXHMik
-DoCjjvbdZoNheEyj
-EPCkKvbdsZlPsBIO
-EOcKjvbdLAjgMbXq
-DncKjvbdVZITykOn
-DnbjjvbdpyOgfqEY
-EPDKjvbdbUagYKtI
-EObkKvbdrSUjnLBN
-DncKjvbdQwNdDLhD
-EOcLKvbdrykosBIO
-EPDKjvbdsPunicWG
-EPCjjvbdliDtQuRa
-EOcKjvbdcSbkTdKB
-EOcLKvbdKaKgNCXq
-DnbjjvbdZshhxcrn
-DnbkKvbdcbTMrAUN
-EPCkKvbdsQWPKDVf
-DncKjvbdijGHjMwr
-EOcLKvbdULvPBVni
-EPCjjvbdffLynHHA
-DoCjjvbdTqQntuHm
-DoDLKvbdjuwNdCXw
-DoCkKvbdVZITzLOn
-EPDLKvbdqrUkOLAm
-EPDLKvbdZQmEhmFR
-DoDKjvbdwjvdHzyf
-EPDKjvbdePErjtTr
-EObjjvbdmozYvLZC
-DnbjjvbdACrXizIp
-EOcLKvbdTvMQJtAq
-DncLKvbdssSTZZeD
-DnbjjvbdmozZVjxb
-EOcLKvbdtSrSxzFD
-EPDLKvbdZyDjOCkr
-DnbkKvbdbBWEeopX
-EOcLKvbdkWWmcbXw
-DoCkKvbdkVwNdBww
-DncKjvbdEzsqFMCi
-DncLKvbdACqxJyhp
-DoDKjvbdYpmFIleR
-DncKjvbdGKdsCglu
-DoCkKvbdZnnJFEzK
-DoDKjvbdBsBCtGWr
-EPDKjvbdBcpAuimG
-DnbjjvbdIGfzYxXg
-DnbkKvbdGLEsCgmV
-EPCkKvbdySnJNSBg
-DoCkKvbdPyNAGrqj
-EPDKjvbdmaivxPNu
-DnbjjvbddoFSkUUS
-DoCkKvbdySmiNRag
-DoDLKvbdEYXlUUUM
-EObkKvbdCTBCtFwS
-DoDLKvbdoznDkXoA
-EOcLKvbdBvzciEov
-DoCjjvbdSPtHJfEX
-EPDLKvbdtvOYJqTA
-EPDKjvbdZisHpHBf
-EPDKjvbdILazmvqL
-EOcKjvbdRpUHKGDw
-DncKjvbdWXJYWDdg
-EPDLKvbdIwtCHlQp
-EPDKjvbdUtNTfLvK
-DncLKvbddZxpXxqC
-EOcLKvbdkNBlZdgP
-EObkKvbdqYnhGqEY
-EPDLKvbdfpBzwDwh
-DncLKvbdTkuoBVoJ
-DnbkKvbdvvlBWAvV
-DoCjjvbdrXQMCiYq
-EPCjjvbdFeiqmiUR
-DncLKvbdzjUopDsU
-DncKjvbdhkeDmuCy
-EPCjjvbdVqnYBdlD
-EOcLKvbdSCDeLiYk
-DoCjjvbdJvUeceHJ
-EPCjjvbdjgfkfFnL
-DnbjjvbdkVwNdBww
-EObkKvbdczYowyRC
-EPCjjvbdZoNhddyj
-EPCjjvbdOSsugEuQ
-EObkKvbdZMRcsnLm
-EObjjvbdrMzJyLgi
-EPDKjvbdrSUjnKaN
-EPDKjvbdSLYfUfkT
-EPDKjvbdUVlQKUAq
-DoDLKvbdJcKCqJbx
-DnbjjvbdeFPRbWcK
-DoCkKvbdVAbQsQqy
-DncLKvbdpeceTvBI
-DoDLKvbdcIlikFwY
-DoDLKvbdbsDLTdJa
-EPCkKvbdRXOEClHc
-DnbjjvbdbKkennDA
-DncLKvbdEzsqEkcJ
-EPCjjvbdJvUedEgJ
-EOcLKvbdzitpQDsU
-DncLKvbdQvnDblHc
-EOcKjvbdbQGgDkzd
-DnbkKvbddZyPxYpb
-EPDLKvbdLrXNZuQz
-DoDKjvbdDjIJvYKA
-EPCjjvbdbVCHXjsh
-EOcLKvbdsPunicVf
-EOcLKvbdEzspdlCi
-DoDLKvbdmRxtzSdJ
-DnbjjvbdsBfNLfjy
-DoCjjvbdcTDLUDia
-EPDLKvbdidjgVPAO
-DoCkKvbduVmxKQsA
-EObjjvbdxLXDgzzG
-EPCkKvbduaEZSoFI
-EOcLKvbddneSjssr
-DoCkKvbdWXJYVdFH
-DncLKvbdHkaznWqL
-DncKjvbdbVCGxKsh
-DnbjjvbdiMEcmtcZ
-DoDKjvbdqAheAXHd
-EPCkKvbdMIalQxAS
-DnbjjvbdVviXucdg
-DnbjjvbdMpXpumgT
-EObkKvbdMJCLqYAS
-EObjjvbdczZQYYqC
-DncLKvbdUxgtZjoO
-EOcLKvbdjuwNdCYX
-DncKjvbdSwjlNzkY
-EPDLKvbdrWpLbhxq
-DoDKjvbdnBjWwoOV
-EPCjjvbdmSYtyrdJ
-DoDLKvbdzeZnzdzQ
-DncLKvbdMowqWOGs
-EPCkKvbdqTsfqrLU
-EObkKvbdraemMHKy
-EOcLKvbdJcJbpjCx
-DnbjjvbdmuUzKjRf
-DncKjvbdNeEThhkE
-DoDKjvbdHakydzAD
-EOcKjvbdXsLaNUPY
-EObjjvbdLFfHbBQu
-DncLKvbdbKlFoODA
-DoCjjvbdRpTfiecw
-DnbkKvbdRkYetgLT
-DoCjjvbdegkVrOQg
-DoDLKvbdhlFEOUby
-DoCkKvbdFyUtaEXb
-DnbjjvbdAMgxsXZx
-EOcLKvbdUQqOtuHm
-EPDKjvbdxrmiMrCH
-EOcLKvbdREDApQdS
-DoDLKvbdWRmxBdlD
-DnbjjvbdiHKCyVjV
-EPCkKvbdxwhjCPyk
-EObjjvbdLKaHvAJy
-EPDLKvbdZtJJYcsO
-DoCjjvbdbPfgDkzd
-EObkKvbdUaBqTRRy
-EPDKjvbdGYtuAcwb
-DnbjjvbdQcbaQRDr
-EPCjjvbdsBfNMHKy
-EPDKjvbdZyDimblS
-DoDKjvbdJXtBglRQ
-EObkKvbdpssfrSLU
-EOcLKvbdMRwMytpz
-DoCjjvbdEYYMUTtM
-DoCkKvbdeAUQmXif
-DncLKvbdUaBqSpqy
-EObkKvbdVAbQrqRy
-EObkKvbdwXMAuaWV
-DncLKvbdCIjakIfK
-DncLKvbdjmBkzEfo
-EOcLKvbdKVtfDeGi
-EObkKvbdnQZyVjxb
-DncLKvbdzRPMhiwA
-DncKjvbdJpydnfOF
-EPDKjvbdqTsfrRkU
-EPDLKvbdEuyQPlie
-DnbjjvbdfSBWzlCo
-DnbkKvbdqiAKFMne
-EPCjjvbdatbHYLUI
-EOcKjvbdNsTugEtp
-EPCkKvbdmgFXmNgZ
-EPDLKvbdMSXNZtpz
-DoDKjvbdUaBprqRy
-DnbjjvbdXmqAXtvU
-EOcKjvbdHlBznWpk
-EOcKjvbdVqmwbElD
-DoCkKvbdqrVLOLAm
-DnbkKvbdZshiYcrn
-DoCkKvbdZoNhddyj
-EOcLKvbdEuxooljF
-DnbkKvbduCcVXVoP
-EPCkKvbdmuVZjirG
-DncKjvbdRzKHrbvA
-EObkKvbdeKJqutzn
-EObkKvbdyOShXsIc
-EPCjjvbdRbDdlJZL
-DoDKjvbdSBdFMIxk
-DncLKvbdKaKgMawq
-EObkKvbdCDpAuilf
-DnbkKvbdRWnDcLgc
-DncLKvbdqlzJxkhJ
-EPCjjvbdNHDQMpUk
-EOcLKvbdRMwbZNtz
-EPDKjvbdOEdThiLE
-DoDLKvbdUyHszKoO
-DnbkKvbdZisIPgCG
-DncKjvbdwzHeeweS
-DncKjvbdQwODcLhD
-DoDLKvbdqdFJPmua
-EOcLKvbdvwMAvBVu
-EPDLKvbdbVBfwjsh
-DoCkKvbdRyjHrcWA
-DoDLKvbdWIYVxGxz
-DnbkKvbdbiMjLGXY
-EOcLKvbdBhjbKiFj
-EObjjvbdCDpAvJmG
-EPDKjvbdLBKfmCYR
-DoCkKvbdbiMijevx
-DnbkKvbdyOSgwriD
-EPDLKvbdlYrqsZHU
-EOcLKvbdwyhGFxFS
-EPDLKvbdRyjHsCvA
-EPCkKvbdHgGzYxYH
-DoDLKvbdGFjRmhtR
-EPDKjvbdFyUtaEYC
-DncLKvbdeFOrCWbj
-DoDLKvbdJSyArlwl
-EOcKjvbdZyEKODLr
-EOcLKvbdemGXGmJk
-DnbjjvbdSCDeLhyL
-DoDLKvbdYTLaMsnx
-DoCjjvbdxKwEHzyf
-EOcLKvbdiVZdvquC
-DnbkKvbdUaBqTQqy
-EPCjjvbdGZVVBEXb
-DoDLKvbdCEQAvKMf
-DoDLKvbdRWmdCkhD
-EPDKjvbdRotHJecw
-DoCjjvbdZxcimblS
-EOcLKvbdtbcUvvOo
-DnbjjvbdZsiJZDsO
-EOcKjvbdRyjHsCvA
-EOcKjvbdxLWdHzzG
-DoCjjvbdFjdrbhMu
-EPCkKvbdxVNFRYlO
-DoCkKvbdmIcsqUqa
-EPDLKvbdfMfWgMjL
-EPDKjvbdTqQoUthN
-EOcKjvbdtkwvaUAw
-DoDKjvbdBdPaVilf
-DoDLKvbdZMRdTmkm
-EPDLKvbdelewGlik
-DoCkKvbdwzHfFxEr
-EPCkKvbdvAcyTPFI
-EObjjvbdQdDBPqES
-DoDKjvbdZtIiYcrn
-EOcKjvbdypnlhiwA
-DoCkKvbdNrtWGduQ
-DncKjvbdxsOIlqbH
-EPCjjvbdANIYrvyx
-DnbjjvbdNwnuzdOU
-EPCkKvbdFyUuBEXb
-EOcLKvbdaaWFGQQX
-DncLKvbdraelkfkZ
-EPCjjvbdTpqPVUhN
-DncKjvbdySmiNSBg
-EPDKjvbdrpWPJbvG
-EObjjvbdwNWANEFN
-EObjjvbdZeYGzhJC
-DoCjjvbddndsKstS
-EPDLKvbdegkWSORH
-EPCjjvbdvwMAvBVu
-EPCjjvbdkySqrxgU
-EPCkKvbdHkaznWqL
-EPCjjvbdqlzKYkhJ
-DncLKvbdZxdJmcMS
-EPCjjvbdqGEFTvAh
-EObjjvbdTYKkmzkY
-EPCkKvbdZisHofbG
-EOcLKvbdzoPpdcLx
-EPDKjvbdZjTHpHCG
-EOcKjvbdKWVGEFHJ
-EPCjjvbdhyuFlROG
-EPCkKvbdFjeTDIMu
-DncLKvbdOYPVzcnU
-DoCjjvbdSZjISbvA
-DoCkKvbdZoNiEdyj
-EPCjjvbdrWpMDJZR
-EObkKvbdkVvnDaxX
-EObjjvbdcSbjtDia
-DnbjjvbdLGGICBRV
-EPDLKvbdkWWmcbXw
-EObjjvbdnHExNOHZ
-DncKjvbdUtNUFlVj
-EObkKvbdEvZPomKF
-DoCkKvbduoTzpjnt
-EOcLKvbdURQoVVHm
-DnbkKvbdTAEiIBnd
-DncKjvbdQwOECkgc
-DnbjjvbdRbDdkiZL
-DoCjjvbdEPCkLWcE
-EPDKjvbdzjUpPdSt
-EPDKjvbdZMSDsmkm
-DoDLKvbdBdPaWJmG
-EPCkKvbdwjwEHzyf
-DnbjjvbdhuZeXSUb
-DoCkKvbdlYrqsYft
-DoCjjvbdEXxMTssl
-DoDKjvbdzoPpdbkx
-DncKjvbdWRnXbFMD
-DoDLKvbddijRutzn
-DncKjvbdnCKWwnmu
-EOcLKvbdZMSDsmkm
-EOcLKvbdUaCRTRSZ
-EObkKvbdkCkjpgVH
-DnbkKvbdirziTKiz
-DoDLKvbdJpyeOenF
-EObkKvbdGKdsDHmV
-EObjjvbdoAKzshDn
-EPDLKvbdlrZVZrci
-DncLKvbdRzKHsDWA
-EObkKvbdKkAhWAKZ
-EPDLKvbdVAaqSqRy
-DoCkKvbdjAPgApHK
-EPCkKvbdBcpBWJmG
-DncKjvbduCbuXWOo
-EOcLKvbdqiAKEmOe
-EPDKjvbdYpldhleR
-DnbjjvbdEPCjjwCd
-DnbjjvbdbsDKtEJa
-EObjjvbdKfGICBRV
-DoDLKvbdRadFMIxk
-DoDKjvbdGGJqmhsq
-EPCjjvbdJbicQjDY
-DncKjvbdbiNKKfWx
-EOcLKvbduLxXAsaX
-EPCjjvbdEKIJuwjA
-EPCjjvbdWRmwadlD
-DnbjjvbdfMewGmJk
-EOcLKvbdNxOuzdOU
-DnbkKvbdfIKvSOQg
-DncLKvbdQZNAHSqj
-DnbjjvbdZLqdUNlN
-EPCjjvbdSLYetgLT
-DncKjvbdeEoSCWbj
-EPDLKvbdsCFmMGjy
-EPDLKvbdLGGHaaRV
-DncLKvbdEuxpQMjF
-EObjjvbdVYhTzLPO
-EPCkKvbdaSFbhTek
-DnbkKvbdDihJuwjA
-EObjjvbdFjeTDIMu
-EObjjvbdhkeDnUby
-DoDKjvbdxUmEpyLn
-DncLKvbdiVZdvqtb
-DoCkKvbdunszqLPU
-DnbkKvbdSBcdkiYk
-EObjjvbdbhmKKevx
-DnbjjvbdVZHtZkOn
-DoDLKvbdZirgogCG
-DoDLKvbdqBIeAWhE
-EPCjjvbdwtmEqYkn
-DncKjvbdKCjDRJbx
-EOcKjvbdTvLpJsaR
-DoDKjvbdyXhjBozL
-DnbjjvbduDDUwVoP
-DoDKjvbdzaAOfgBl
-DoCjjvbdWSOYCElD
-EOcLKvbdqwQMDJYq
-DoCkKvbdNHColpUk
-EPCkKvbdCEPaVimG
-EOcKjvbdjKFhJlxS
-EOcLKvbdxUleRYkn
-DnbkKvbdrNZjZMHi
-DoDKjvbdmuUzLKSG
-EObjjvbdfIKurOQg
-EPDKjvbdQlwbZNtz
-DncKjvbdhkeDnUby
-EObjjvbdwuMdqZMO
-DncKjvbdliDtQtrB
-EPCjjvbdNPwqWNgT
-DncKjvbdjAPgApGj
-EObkKvbdMpYRVmfs
-DnbkKvbdGKeTChNV
-DoDLKvbdHbMZdzAD
-EObjjvbdQlwayOUz
-EPDKjvbdVqnYCFLc
-DoCkKvbdmpZyVjyC
-EObkKvbdUslsfLuj
-DoDLKvbdlhdURVSB
-EOcLKvbdmSZVZrci
-DoCjjvbdYzberJuy
-EPDLKvbdhzVGLpnG
-EPCjjvbdsPvOicVf
-EObkKvbdeOeTLUUS
-DncLKvbdmfdxMnHZ
-EPDKjvbdHffzYwxH
-EPDLKvbdrylPsAgn
-EOcKjvbdwWlBWAvV
-EPDKjvbdVAbQsQqy
-DnbkKvbdsZlPsBIO
-DncLKvbdEzspdkbi
-DncLKvbdhyuGMROG
-DoCkKvbdFaOpxizm
-DoCkKvbdZsiIxcrn
-DoCkKvbdijGHjMwr
-DnbkKvbdcyxpYZQb
-DnbjjvbdEzspdkbi
-DncLKvbdNQYRVnGs
-EObkKvbdkClKpgVH
-EOcLKvbdkClKqHVH
-EOcKjvbdhanbdvqR
-EPCkKvbdmfdwmNfy
-EObkKvbdYTMAmUPY
-DoCkKvbdIGgZxxXg
-EOcKjvbdnHEwlnHZ
-DncLKvbdCDpAuilf
-EPCjjvbdmbKXXoOV
-EObkKvbdapGfdLzd
-EPCkKvbdRjyGVHLT
-DoCkKvbddoFTLTtS
-EPCjjvbdGLFTCglu
-DoCjjvbdiLeENtcZ
-DoCkKvbdKCicQjCx
-EPCkKvbduoTzqLPU
-EPCjjvbduVmwiqTA
-EPCjjvbdWIXuxGxz
-EPCjjvbdpxngfqDx
-EOcKjvbdeOdrkTsr
-DoDLKvbdNrsufduQ
-EOcKjvbdIHHZyXwg
-DoCjjvbdpfEEsvBI
-EOcKjvbdhgKDYvKV
-DnbjjvbdmbJvxOmu
-EPDKjvbdGdKujCKK
-DoDLKvbdfkGzcGAE
-EPCkKvbdZoNiEeZj
-EPDLKvbdaMjbTUlg
-EPCkKvbdSPsgJfEX
-EPDKjvbdDxYLstUM
-EPCjjvbdKVtfDeGi
-EOcLKvbdpeceTvAh
-EObjjvbdHffzYwxH
-DnbjjvbdffMZnHHA
-EOcLKvbdsQVnibvG
-EOcKjvbdZirgpGbG
-EObjjvbdJSxaTMxM
-EOcLKvbdbrcLUEKB
-EPCjjvbdGZUuAcwb
-DnbkKvbdpssgRrLU
-DnbkKvbdKVteceHJ
-EPDKjvbdmajXYOmu
-EPDKjvbdNwoVzdOU
-DnbjjvbdrpVnicWG
-DoDKjvbdjhGlFfNk
-EObjjvbdEXwlTtTl
-DoDLKvbdkCkkQftg
-DncKjvbdDxYLtUTl
-DncKjvbdNQYQunGs
-DoDLKvbdZQleImFR
-DoDKjvbduVmxKRTA
-DoDLKvbdsrqsZZdc
-DoDLKvbdZLqctNlN
-EPDLKvbdNsUVfeVQ
-DncLKvbdhuZeXRuC
-EPCkKvbdiCObdwRR
-DoDKjvbdIwsbIMQp
-EObjjvbdtcCtvvPP
-EOcLKvbdpyOhHRDx
-EObjjvbdmgEwmOHZ
-DoCkKvbdelevgNJk
-DoCjjvbduLwwBTaX
-DoCkKvbdXrlBNTnx
-EPDLKvbduCcUvuoP
-EPDKjvbdURRPVUgm
-EObkKvbdBsBCsfXS
-DoDLKvbdZjSgogCG
-EObkKvbdhgKDZViu
-EPCkKvbdEYXkstUM
-DncLKvbdrMzJyLgi
-DnbjjvbdaSFcIUFk
-EPDLKvbdnBjWxOnV
-EPDLKvbdssRryZeD
-EOcKjvbderAvzkbo
-DoCjjvbdZirhQHCG
-DnbkKvbdBraCtFvr
-EOcLKvbdxZgfFxFS
-DoDKjvbdJuuFdFGi
-EPDKjvbdUQqPUtgm
-EPDLKvbdNHCpMpUk
-EPDKjvbdnCKXYOnV
-DoCkKvbddZyQXyQb
-DnbjjvbdpxoHgREY
-EPCkKvbdfNFwHNJk
-DncLKvbdVBCQsQqy
-EPCkKvbdUxhTzLOn
-EObjjvbdSQTgJfEX
-DoCkKvbdrWpLbiZR
-DoDLKvbdtcDUwWOo
-DoCkKvbdwzHfGXeS
-EPDLKvbdrzMPraHn
-EPCkKvbdDoCjjvcE
-DoDLKvbdbhlijewY
-EObkKvbdUxgsyjoO
-DoDLKvbdbUafxKsh
-DoCjjvbdULuoBWOi
-EPCkKvbdVBBqSqRy
-DoCjjvbdhkeENtcZ
-EPCjjvbdqYnggRDx
-DncLKvbdjhHMFfOL
-EOcKjvbdZxcinDMS
-DoDLKvbdvBDySndh
-DncKjvbdirziTKiz
-DncKjvbdJXsaglRQ
-DncKjvbdhfjDYvJu
-DncLKvbdjuvnDbYX
-EOcKjvbdKaLHMaxR
-DoCjjvbdiGjDZWKV
-DnbjjvbdEObjkWbd
-DnbkKvbdJmADygVB
-EPDKjvbdJvVFdEfi
-EPDLKvbdnGeXmOGy
-DoCjjvbdpssgSSKt
-EPDKjvbdwtldqYlO
-EPDKjvbdmfeXmNgZ
-DoCjjvbdqvokbiZR
-DoDLKvbdqUUHSRjt
-EObkKvbdmbKXYOnV
-EOcKjvbdaSGChTfL
-EPCkKvbdWWiYWDdg
-DoCjjvbduoTzqKnt
-DnbjjvbdHDkVjBjK
-EOcKjvbdbVBfwjtI
-EOcKjvbdjvXOEBxX
-DncKjvbdZLrETnMN
-EObkKvbdfNGXHMjL
-EPCkKvbdkDLkRHUg
-EObjjvbdZjTIQGbG
-DoDKjvbdZsiIyDsO
-DnbkKvbdbrbjscjB
-EPCjjvbdmbJwYPOV
-DoCkKvbdKDJcQicY
-DoDLKvbdZxcinCkr
-DoDKjvbduoTzqLPU
-EOcKjvbddndsKstS
-DnbjjvbdNQXqWNfs
-EOcKjvbdIidAKQGd
-DoDLKvbdTkvOaVni
-DoCjjvbdsPvPJcVf
-DoDKjvbdVqnXbElD
-EOcKjvbdIHGyyXxH
-DnbkKvbdUxgszLOn
-EPDLKvbdwuMdpxkn
-DnbkKvbdqrVLNkBN
-DncKjvbdijFgjMwr
-EPCkKvbdSQUGjFcw
-EObjjvbdRWmdCkgc
-DnbkKvbdVTltFkvK
-EOcLKvbdJbjCqKDY
-EObkKvbdfMfXGmKL
-EObjjvbdzRPNJKXA
-EPCjjvbdBsAbtGWr
-DoDKjvbdJXsahLqQ
-DnbkKvbdlBNOmALA
-DoDLKvbdlrYtzTDi
-EPDLKvbdZtJIxdTO
-DncKjvbdmbJvxPOV
-EPDLKvbdaMkBsUmH
-EPCkKvbdNsUVgFUp
-DoCjjvbdWfYytAPT
-EObjjvbdNHCpMpVL
-EPCjjvbdMgComPtk
-EOcLKvbdeqaWzlDP
-DoCkKvbdFVxopNKF
-EOcKjvbdYkrDsmlN
-DncKjvbdWWiYWEFH
-DoDKjvbdSLYfUfkT
-DnbjjvbdhkeEOVCy
-DoDKjvbdJXsagkpp
-DoDLKvbdZoOIdeZj
-DncLKvbdLiCMRYAS
-DncKjvbdyOTHwsJD
-DncKjvbdvmWANDeN
-DoDLKvbdtTSTYydc
-DoCkKvbddneSjtTr
-EObkKvbdkDMKpftg
-DnbjjvbdbhljKewY
-EPCkKvbdIsZBSlwl
-EPCjjvbdlqxuZsDi
-DnbjjvbdNrtWGeVQ
-EOcLKvbdvBEZSndh
-EOcKjvbdrJAJdmOe
-DoCjjvbdyOTHxTIc
-DoCjjvbdmfdwlnGy
-EOcLKvbdkDMKpgVH
-DoCkKvbdRECaQQdS
-DncKjvbdaMjartlg
-EPCjjvbdVviXuceH
-DnbkKvbdNsUVgFVQ
-DoDKjvbdFkEsDIMu
-EOcKjvbddZyPwyQb
-DoDKjvbdqmZixlIJ
-DoDKjvbdrEEhomvB
-EOcLKvbdlZSqsZHU
-EPCkKvbdehKuqmqH
-DoDLKvbdFxtuBDwb
-EPCjjvbdKjaHvAJy
-DncLKvbdBcpAujMf
-DoCjjvbdNQYRWOHT
-DoCjjvbdHakzEzAD
-EPCkKvbdJTYaSlwl
-DoCjjvbdzitpQETU
-DoDKjvbdvBEZSoFI
-DncLKvbdnBjXXoOV
-DoDLKvbdiZuGMROG
-DoDKjvbdKVtecdfi
-DnbjjvbddjJqvUzn
-EPCkKvbdaMjbStlg
-EOcKjvbdSZjHsDWA
-DnbkKvbdUaCRSqSZ
-DoDLKvbdxZgefXeS
-DncKjvbdjhGkfFnL
-DncKjvbdIjEAJogE
-EPCkKvbdNGcPlpVL
-DncKjvbdUMWPAvOi
-DnbkKvbdatafxKsh
-EObkKvbdjcMLQgUg
-DoDKjvbddeOqavcK
-EOcLKvbdoznELXoA
-EPDLKvbdeOdrjtUS
-DnbkKvbdjKFhJmXr
-EPCkKvbdpxoHfpdY
-DoCjjvbdZLrDsnMN
-EPCkKvbdwyhFexFS
-EOcKjvbdkClKpftg
-DoDKjvbdxnTIYSiD
-DncKjvbdxnShYSiD
-DoCkKvbdFxtuBDwb
-EObjjvbdYkrEUNkm
-DnbjjvbdNQYQvNfs
-EPCkKvbdhlFDnUby
-EOcLKvbdiCObdwRR
-DoCjjvbdVwJXvEFH
-DnbkKvbdBvzchePv
-EObkKvbdZHWdAPSi
-DncKjvbdHgGzYxXg
-DoCkKvbdMJCMQxAS
-EPCkKvbdZLqdTmkm
-DoDLKvbdnCJwYPNu
-EPCjjvbdOSsvGdtp
-DncKjvbdlYrqsZGt
-EOcLKvbdJYUBhLqQ
-DoCjjvbdZisHpGaf
-DnbjjvbdVgxWXfxz
-EPDKjvbdkWXNdBxX
-DoCkKvbdlZTSSyHU
-DncKjvbdjggLeenL
-DnbjjvbdKNAEZfuB
-DoCjjvbdLAkHMaxR
-EOcLKvbdZRNFJNFR
-DoDLKvbdjAQGaPfj
-EObjjvbdjggMGFmk
-DoDLKvbdyfyMAMeX
-DncLKvbdjbkkRHVH
-EOcLKvbdOTTugFVQ
-EOcKjvbdWHxWXfxz
-EPCkKvbdvwMBWBVu
-EPCjjvbdnHEwlnHZ
-DoDKjvbdHEKuiaij
-DoCjjvbdVwIwvEEg
-EPDLKvbdehKvRnRH
-DncLKvbdnVUyjirG
-EObjjvbdfMevgNJk
-EPDKjvbdjbkjqHVH
-DncLKvbdrJAKEloF
-DoCkKvbdGckWJaij
-DnbjjvbdTvMQJtAq
-EPCkKvbdhkddNtcZ
-DnbkKvbdrzMQTBIO
-DncKjvbdsZlQTAgn
-EPDLKvbdOFDtJIjd
-EOcLKvbdnBivwoOV
-DncKjvbdJXtBhLpp
-EPCkKvbdJTYaSmXl
-EOcLKvbdLGFgbBQu
-DncKjvbdnHEwlmgZ
-DoCjjvbdACrYJzJQ
-EPCkKvbdiZuGLqNf
-DnbjjvbdnGdxMmfy
-DnbkKvbdRkZGUgKs
-DoDLKvbdZisHofaf
-EPDLKvbdJKEAJpGd
-DnbkKvbdBsBDUFwS
-EObjjvbdtcDVWuno
-EOcKjvbdBsAbsfWr
-EPDKjvbdrWpMChyR
-DoDLKvbdVTltFkuj
-EPDKjvbdGFjSOJUR
-EOcKjvbdBsAcUGXS
-EPCkKvbdcJNKKfWx
-EPDLKvbdnQZyWKxb
-EPCkKvbdqTtGrSKt
-EObkKvbdjJfIKNXr
-EOcLKvbdVqmxBdkc
-EOcKjvbdFWYopMjF
-DnbjjvbdqdFJPnWB
-DoCjjvbdehKvRnRH
-EPDKjvbdkyTRsZGt
-EObjjvbdozmckYPA
-DnbjjvbdbrcLUDjB
-DoDLKvbdrMyixkhJ
-DoDLKvbdrpWOjCvG
-DoDKjvbdLFehCAqV
-DncKjvbdrWpMCiYq
-EOcKjvbdVTmUFkvK
-EObkKvbdhficZVjV
-EPCkKvbdIsZAsNXl
-DoCjjvbdmfdxNOHZ
-EPDKjvbdznopdblY
-DnbjjvbdLiCMRYAS
-DncLKvbdePEsKstS
-DoDLKvbdUMVoBVni
-DncKjvbdWRnXaeLc
-EObjjvbdrDdiPmvB
-DoDKjvbdDoDKkXDE
-DncKjvbdOAIrtJrA
-EPCkKvbdwzIGGXdr
-EOcLKvbdUQqPUtgm
-EPDLKvbdhlFEOUby
-DncKjvbdZirhPfbG
-EOcLKvbdKVuGEEgJ
-DoDKjvbddePSBvbj
-EPDLKvbdfHjuqmqH
-EPDKjvbdZjSgpHBf
-DncLKvbdunszpjoU
-EPCkKvbdqTtHRrKt
-EObjjvbdfNGXGljL
-EObjjvbdUGznMWue
-DnbkKvbdsPuoJbvG
-EObjjvbdnQZxujxb
-EPDLKvbdczZPwyQb
-DoCkKvbdWXIwvDdg
-EOcKjvbdQvmdDLhD
-DncLKvbdCIkBjiFj
-EObjjvbdjJegjNXr
-DncLKvbdcIlikFvx
-EPDLKvbdRkZFtfjs
-DoCjjvbdczYoxZRC
-EOcLKvbdatagXjsh
-DncLKvbdjcLjqGuH
-DoCjjvbdMSWlyuQz
-DoCkKvbdjuvnDbYX
-DnbjjvbdiMEdOUcZ
-EPCjjvbdcTDKtEKB
-DnbjjvbdwzHeexEr
-EPDLKvbdemGWgNJk
-EObjjvbdakLfOnDA
-EPDLKvbdTfznLvvF
-DoDKjvbdaNLBsUmH
-EOcLKvbdhzVFkqNf
-DoDKjvbdZRNFIldq
-DoDKjvbdlrZVZsEJ
-EObkKvbdbUagXjtI
-DoDLKvbdUyHsykPO
-EObjjvbdkVwNdCYX
-EPDLKvbdUVkpJtBR
-EPDKjvbdrMzJxkgi
-EOcKjvbdSLYfUgLT
-DoCjjvbdMRwNZtpz
-EPDLKvbdIxTaglRQ
-EPDLKvbdJqZdnenF
-DoDLKvbdZMRdTmkm
-DnbkKvbdANHxrvyx
-EPCjjvbdFkErbhNV
-EOcLKvbdWSNxCEkc
-EPCjjvbdiCPCdwQq
-DnbkKvbdbAvEeoow
-EOcKjvbdeFOrBvcK
-DnbkKvbdaRecHtGL
-DnbkKvbdZshhxcrn
-EOcKjvbdqTtHRrKt
-EObjjvbdauBgXjtI
-EOcKjvbdQdCaQRDr
-DoCjjvbdFVxopMjF
-EPDLKvbdIGgZyXwg
-DoDLKvbdRpTfjFdX
-DnbkKvbdSQUGifEX
-DnbjjvbdpxoIHREY
-DoDLKvbdqiAJeMne
-EOcLKvbdCIkBkJFj
-DncLKvbdFfKSNhsq
-DoDKjvbdwWkaVaVu
-EPDLKvbdNeETiJKd
-DnbjjvbdhbOcEvpq
-DoCkKvbdrbGMlHLZ
-DnbjjvbdLAjgMawq
-DncLKvbdlqyUzSdJ
-DncLKvbdYkqdTnLm
-EOcKjvbdYkrDsnMN
-EOcLKvbdnCKXXnnV
-DoCjjvbdDncLLWbd
-DoDKjvbdYpmFJMdq
-EPDLKvbdFpATXHFy
-DoDKjvbdJvUfEEfi
-EPDLKvbdmJEURVSB
-DncLKvbdtbcVWuno
-EOcLKvbdbUagYKtI
-EObkKvbdcJMjKevx
-DnbjjvbdKVuGEFGi
-DoCkKvbdZMRctNkm
-EOcLKvbdYpmEiMdq
-DoDKjvbdYpmEhmEq
-DncKjvbdzjVQQDrt
-EPCjjvbdzHYlAMdw
-EPDLKvbdYkqcsnMN
-EObkKvbdiiehJmYS
-DnbjjvbdDwwktUUM
-EObkKvbdrounjCuf
-DnbjjvbdGGKRmiUR
-EOcLKvbdwzIGFxEr
-EPDKjvbdOEdUJJLE
-DoCkKvbdfNFvgMjL
-DoDLKvbdOEdThhjd
-DnbkKvbdyTOImSCH
-EOcLKvbdzitpQESt
-DoDKjvbduDCuWvPP
-DoCjjvbdTppnuUhN
-DoCkKvbdIBlZdzAD
-DoCjjvbdZQmFJMeR
-DnbkKvbdJXsaglQp
-DoCkKvbdSZigrcWA
-EObjjvbdZsiIyETO
-EPDKjvbdZLqctOLm
-DncKjvbdwyhGFxFS
-DncLKvbdqwPkcIyR
-EPDKjvbdRkYfUgLT
-DoCkKvbdxxIjBpZk
-DncLKvbdqlyjYlIJ
-EPCjjvbdRaceLiYk
-EPDKjvbdjlbLyeHP
-EPDKjvbdrbFmLfkZ
-EPCkKvbdvBEYsPFI
-DncKjvbdSBdElJYk
-EPDKjvbdpxoIHREY
-EPCkKvbdjhHMFfNk
-EPCkKvbdANIYsXZx
-EObjjvbdnGdxNOHZ
-EObjjvbdKQzFPGOF
-DoCjjvbdtunYKRTA
-DnbjjvbdLFfHbBRV
-EOcKjvbdpedEsuaI
-DnbjjvbdYkqcsmkm
-EPCkKvbdbrcLUEKB
-DnbkKvbdNQYQunGs
-DoDLKvbdJcJbqKCx
-EPDLKvbdIxTbHlRQ
-DnbkKvbdvwMAvBWV
-EOcKjvbdfHkVqnQg
-EOcLKvbdbKkfPNcA
-EPDLKvbdVAbQrpqy
-DncLKvbdWRnXaeLc
-EPCkKvbdFpATXGey
-DoDLKvbdyfxlANFX
-DoCkKvbdFVyQQMjF
-EOcLKvbdxnShXrhc
-DoCjjvbdmaivwoOV
-DnbkKvbdbsDLTdJa
-DoCkKvbdUtMtGMVj
-DnbjjvbdNVSqkNAX
-EPDLKvbdWfYytAOs
-EPCkKvbdZyEJnDLr
-EObkKvbdyXhjCQZk
-EObkKvbddoFSkUTr
-EOcKjvbdeATqMxKG
-DnbkKvbdnPyyWKyC
-DncKjvbdkySrTZHU
-DnbjjvbdmfdxNNfy
-EPCkKvbdHlBznXQk
-EPDKjvbdZisIPgCG
-DncLKvbdrEEhonVa
-DoDLKvbdrykosBHn
-EObkKvbdqvpLbiZR
-DoCjjvbdhkeDnUcZ
-DoCkKvbdVwIwudEg
-DncLKvbdyXiJaozL
-DoCkKvbdyzeOSIIh
-EPCjjvbdkVwNcbYX
-DncLKvbdTkuoAuoJ
-EPCjjvbdijFgimYS
-DncLKvbdliEURUrB
-DoDKjvbdURQoUuIN
-DoDKjvbdrMzJxkhJ
-EPCkKvbdqYngfqEY
-EPDLKvbddwzUTrFz
-DoCkKvbdyYIjBpZk
-EPCjjvbdssSSxzEc
-EObkKvbdFejSNiUR
-EPCkKvbdrEFJPmua
-DnbkKvbdiifIJmXr
-EPDLKvbdZLrEUOLm
-EObjjvbdGFiqnItR
-DoCkKvbdjuwNcaww
-DncKjvbdmpZxukYb
-DoDLKvbdqdFJQNua
-EPDKjvbdNQYRWOGs
-DoCjjvbdZeYGzhIb
-EObjjvbdZjSgpHCG
-EObjjvbdhfjDYvKV
-EPCkKvbdJpzFOeme
-DnbkKvbdlhcsptrB
-DncLKvbdFeiqnJTq
-EObjjvbdZxcinCkr
-EPDLKvbdFVyQPmKF
-EObkKvbdelfWfljL
-EOcKjvbdJpydnenF
-DnbkKvbdbVCGwkUI
-EObkKvbdemFwGmJk
-DoCkKvbdBsAbsfWr
-EPDLKvbdJYTbHkqQ
-DncKjvbdyNrgxTIc
-DoDKjvbdGQASvfey
-EOcLKvbdRNYCZOUz
-EOcKjvbdyzeORgiI
-EOcLKvbdZQmEhleR
-EPCjjvbdmttyjjRf
-DnbjjvbdLBLGmBwq
-EOcLKvbdKVuFdFGi
-EPCkKvbdxmsHwsJD
-DoDLKvbdyOTIXriD
-EPDLKvbdZsiJYcsO
-EPCjjvbdjvXOEBxX
-DoCkKvbdlZSqsZGt
-DoDKjvbdADRxKZiQ
-EOcKjvbdzoQREcMY
-EObkKvbdGGKRmhsq
-EObjjvbdJutfDdgJ
-DoDLKvbdUsltFkvK
-EObkKvbdHDkWKBjK
-DncKjvbdLqwMzVQz
-EObjjvbdaRecITfL
-DoDKjvbdakMGPNcA
-DnbjjvbdwXMBWAvV
-EOcKjvbdQwOEDLhD
-EOcKjvbdAMgxrwZx
-DnbjjvbdqqtkNkAm
-DoDLKvbdbhmKKewY
-DoCjjvbdQmYBxnUz
-DnbkKvbdvPTzqKnt
-EPCkKvbdJqZePGOF
-DoDLKvbdTfznMXVe
-DoCkKvbdFyVUaDwb
-DncLKvbdFxuUaDwb
-EObkKvbdhlEcnUby
-DnbjjvbdCJLCKhfK
-DoCkKvbdPyNAGrrK
-EOcKjvbdVgxVxGxz
-EObkKvbdSxKkmzjx
-EOcLKvbdemFwHMjL
-EObjjvbdrEEiPnVa
-DoCkKvbdDjIJvXjA
-EPCjjvbdYTMAmToY
-DoCjjvbdbLMFnmcA
-DoCkKvbdrounjCuf
-EPDKjvbdrJAJeNOe
-DncLKvbdJbicQjDY
-EPCjjvbdmpZxvLZC
-DncLKvbdVrNxCElD
-DnbkKvbdDoDLKwCd
-DoDKjvbdsZkpSaIO
-EPCjjvbdNQYRVnGs
-DoCkKvbdVrOXbFMD
-DoCjjvbdlYrqryHU
-DoDLKvbdVTltGMVj
-DncLKvbdwzHfGXeS
-EPCkKvbdmajXYOnV
-EOcLKvbdZLqdTmlN
-DoDLKvbdqdFJQOWB
-EObkKvbdVgwvXgYz
-EPDKjvbdkMakzFHP
-DoDKjvbdakLfPNcA
-EObjjvbdyYJJbQZk
-DoDLKvbdDigivXjA
-DoDLKvbdHELWJajK
-EObjjvbdZGvdAPTJ
-EOcKjvbdUGzmkvue
-DncLKvbdSZigsCvA
-DoDLKvbddBsMrATm
-EObkKvbdmSZUzSdJ
-DncKjvbdjAPfaQGj
-DoDKjvbdlBMoNALA
-DnbkKvbdJTZArlxM
-EObjjvbdHgHZyXwg
-EPDLKvbdhzUekpnG
-EPDKjvbdEOcKjvbd
-DoCkKvbdjcLkRHUg
-EObjjvbdBiLBkIej
-DnbjjvbdZMSEUNkm
-DoCkKvbdzRPNJJwA
-EPCjjvbdGdKuiajK
-EPDLKvbdrEFIpOVa
-EPCkKvbdKfGHbApu
-EPDKjvbdUtMsfMVj
-DoDLKvbdbVCHYKsh
-EPDLKvbdEztRFMCi
-EOcLKvbdJmADzGta
-DnbjjvbdtSrSxydc
-DoCjjvbdACrYKZiQ
-EPDKjvbdsrqsYzEc
-DoCjjvbduLxXAtAw
-DoCjjvbdEztQdkbi
-DoDLKvbdkClKpgVH
-DoDLKvbdSCDeMJYk
-DoDLKvbdpxoIGqDx
-DoCkKvbdDigjVxKA
-EPDKjvbdGGKSOJUR
-EOcLKvbdiLeDnVDZ
-DnbjjvbdyOSgxShc
-EPDLKvbdNsUWHEuQ
-EOcLKvbdYpmFImEq
-DoDKjvbdZLrDtOLm
-DncKjvbdJvVGEFHJ
-EOcKjvbdZirgogCG
-EPCkKvbdKCjCqJbx
-EObjjvbdgKfzcGAE
-DncKjvbdZjTIQHBf
-DoDKjvbdRDcBQQcr
-DnbkKvbdZQmEiNFR
-EObkKvbdSiZjRABM
-EObkKvbdURROttgm
-EObjjvbdlZSrSxft
-DoCjjvbdNxPVzdOU
-EPCjjvbdqAheAWhE
-EPCkKvbdwXLaWBWV
-DoCkKvbdKDKDQjCx
-EOcKjvbdehLVqnQg
-DoCkKvbdZxdJmcMS
-DncLKvbdDjHjVxKA
-EObkKvbdXrlAmToY
-EOcLKvbdwtleRYlO
-EPCjjvbdtlYWaUBX
-EPCkKvbdiUzFXSVC
-DoCjjvbdcJNJkFwY
-EObkKvbdaRebhUGL
-EOcKjvbdNHDQMotk
-DoDLKvbdyTNhlqbH
-EOcLKvbdKfGIBaRV
-EObkKvbdKaLHMawq
-DoCkKvbdnCKWwoNu
-EPDLKvbdHffzYwxH
-DncKjvbdnGdxMmgZ
-EPCjjvbdNPwpvNgT
-DoDLKvbdYkrEUOMN
-DoDKjvbdTqROuUgm
-DoDKjvbdvBDyTPEh
-DnbkKvbdJKEAKQHE
-EObjjvbdiBoCeWqR
-DnbkKvbdmRyUyrci
-DnbkKvbdJuuGEFGi
-EOcLKvbdFyVVBEXb
-EObkKvbdwyhGFwdr
-EObkKvbdCTBDTevr
-DoDKjvbdjbkkQftg
-EOcKjvbdVAbQrqRy
-EObjjvbdLAkHMawq
-EObjjvbdEztQeLcJ
-EPCjjvbdcIlikFvx
-DncKjvbdZyEJmcLr
-EObjjvbdqceJPmua
-DncKjvbdZnmiEdyj
-EOcLKvbdiGicYujV
-DoCkKvbdFeirNhtR
-DoCkKvbdDjHjVxKA
-DnbkKvbdqFdEsvBI
-EOcKjvbdcImKKevx
-EPDLKvbdQmXbZOUz
-DncKjvbdqcdhpNvB
-EObkKvbdsPvOjCvG
-DoDKjvbdFVyQPmKF
-EOcKjvbdqYnhGpcx
-EPDKjvbdKfGIBaRV
-EPCkKvbdnGeXmNgZ
-DncKjvbdKVtedEgJ
-EObjjvbdCTAbsewS
-DnbjjvbdeEoRavcK
-EPCkKvbdNsUVfeVQ
-EPDLKvbdGdLWKCKK
-DnbjjvbdKfFhCBRV
-DoCjjvbdZLrDtOLm
-EPDLKvbdhtydvrVC
-DoDLKvbdZjTIPfaf
-DoCjjvbdbrcLTdKB
-DncKjvbdzoQRFClY
-DnbjjvbdSKyFuHKs
-EOcKjvbdZQldiMeR
-DncLKvbdkySrTYft
-DnbkKvbdSLZGUgKs
-EPCkKvbduCbuWvOo
-DoDKjvbdsCFlkgLZ
-DoCjjvbdrDdiPmvB
-EPDLKvbdySnJNRbH
-EPDLKvbdDoDKkXDE
-EPCjjvbdijGHjMwr
-EOcLKvbdeJjSWUzn
-EPCkKvbdKWVFdEgJ
-DoDLKvbdVYhTykPO
-EObkKvbdeJiqutzn
-DoCjjvbdRjyFuGkT
-DoDKjvbdHDkWJajK
-EPCkKvbdbKlFnnDA
-EPDKjvbdQwOEDMHc
-DoDLKvbdZshiZESn
-EObjjvbdkyTSSyGt
-DoCkKvbdxUmEpyLn
-EObjjvbdMuSqkNAX
-DncLKvbdbiNJkGWx
-DoCjjvbdWIYVwfxz
-DncLKvbdkVwNcaww
-DoDLKvbdOFEThhjd
-DoDLKvbddndrkUTr
-DnbkKvbdyzeNrHiI
-EPCjjvbdZRNEhldq
-DncKjvbdhlEdNuDZ
-DoCjjvbdqquKmkAm
-DoDKjvbdFyVVBDxC
-EPCkKvbdJuteceHJ
-DnbkKvbdiBoDEvqR
-DoDLKvbdLqvlzUpz
-EPCjjvbdrRuKnLBN
-DnbkKvbdZjShQHCG
-DnbkKvbdcScLTcjB
-EOcKjvbdyNrgxSiD
-EOcKjvbdZirhPfbG
-DoDLKvbdkIGkefOL
-EPDLKvbdkCkkRGtg
-EPDKjvbdbUafxLTh
-EObkKvbdhfjDYvKV
-DoCjjvbdpecdsvAh
-EOcKjvbdpfDeUWAh
-DnbkKvbdPxmAGsRj
-DnbjjvbdZMSEUNlN
-EOcLKvbdqFdFTvAh
-DoCjjvbdWXJXvDeH
-DoCjjvbdqUTfqrLU
-EPCjjvbdvOszqLPU
-EObkKvbdmtuZkJqf
-EOcLKvbdjgfkefNk
-DoCjjvbdhaoCeWqR
-EObjjvbdKaLHMbXq
-DoCjjvbdSLZFtfjs
-DoCjjvbdFfKSOItR
-DnbkKvbdqUUHSSKt
-EPCkKvbdHEKujBjK
-EObkKvbdIsZBSmXl
-EOcKjvbdRDcApQcr
-DoDKjvbduDDVWvPP
-EOcKjvbdLBLGlaxR
-DoDLKvbdIxTbHlQp
-EPDLKvbdrRtkOKaN
-DoCjjvbdRjyFtfkT
-EPDKjvbdGQASwHGZ
-EPDKjvbdMgDPlouL
-EObkKvbdJXtCILqQ
-EObkKvbdrEFJQNvB
-DoCkKvbdeOeTKtUS
-EObkKvbdSQTgJfDw
-EPCjjvbdSQUGiedX
-DoCjjvbdqUUGrRjt
-EPDKjvbdTqRPVUgm
-EPCkKvbdIMBznWqL
-EObkKvbdhancEwRR
-EOcKjvbdrMzJxkgi
-EPCjjvbdhbPDEvqR
-EPDKjvbdZHXEAOsJ
-EPDLKvbdxnShXriD
-DoCkKvbdLLAgvAKZ
-DoCkKvbdhficYvJu
-EObjjvbdZRMeIleR
-DncLKvbdYfwEAOri
-DoDLKvbdDwxMTtUM
-DoCkKvbdWRmwbFLc
-DnbkKvbdNQYRVnHT
-DnbjjvbdjmCMZeHP
-EPDKjvbdaNKbTUlg
-EPCkKvbdidkHVPAO
-DoCjjvbdHfgZxwxH
-EObjjvbdxwhibPyk
-EPDKjvbdFjeTDHmV
-DoDKjvbdiCOcFWqR
-DoCkKvbdJmADyfuB
-EOcLKvbdhficYujV
-DncLKvbdYzbfSJuy
-DoCjjvbdbUagXjtI
-DoDKjvbdjKFhKNYS
-EOcLKvbdCIkCLJGK
-DoDKjvbdZshiZESn
-EPCkKvbdSQTfjFcw
-EObkKvbdiMEcnUcZ
-EPDLKvbdyOTHxSiD
-EPCjjvbdFjeTDHmV
-DnbjjvbdJuuGEFGi
-EPDKjvbdhkeDnVCy
-EPCkKvbdVAaqSprZ
-DncLKvbdVUNTelVj
-DoCkKvbdfILVrNpg
-DncKjvbdNHDQNPuL
-EOcLKvbdLZQirztf
-EObjjvbdGckWKCJj
-EObkKvbdIHGyyXwg
-DncLKvbdiUydwSVC
-DoDLKvbdpecdtWBI
-EOcLKvbdLGFgaaRV
-EOcLKvbdezuxeJUX
-EObkKvbdgGLymgHA
-DnbjjvbdEvZQQNJe
-DncKjvbdJcJbpjDY
-DoDKjvbdIxTahLqQ
-DncKjvbdBcpAvJlf
-EObjjvbdnPyyVkYb
-EObjjvbdfNGWfljL
-DnbjjvbdieLHVPAO
-EOcKjvbdRNYCYmtz
-EPDKjvbdiHJcYuiu
-EObkKvbdMowqVnHT
-DoCjjvbdiUydvrUb
-EObjjvbdZMRcsnLm
-DnbkKvbdaSFcIUFk
-DnbjjvbdZyEKNcLr
-DnbkKvbdZnnJFEzK
-DncLKvbdJSyBSlxM
-DoCkKvbdXsMAmUOx
-EPCjjvbddneSkTtS
-EOcLKvbdVwIxWEEg
-EPCjjvbdxsOJMrBg
-DncKjvbdkIHMGGOL
-DncLKvbdGFjRmhsq
-DnbkKvbdySmiNRag
-EPDKjvbdpyPHgREY
-DnbjjvbdGZUuAcxC
-DnbjjvbdiHKDYvJu
-DoCjjvbdtlXwBUBX
-EObkKvbdTkvPAvPJ
-EOcKjvbdSxLLmzkY
-DncKjvbdhgJcZVjV
-EOcLKvbdZirgogBf
-EOcKjvbdTukpKUBR
-EPDLKvbdQlwaxmtz
-DoCkKvbdNxOuzdNt
-EPDLKvbduCbuXWPP
-EPCkKvbdmbJvwoNu
-EObkKvbdKDKCqJbx
-EPCjjvbdyNsIXrhc
-EPCkKvbdSCEEkiYk
-EObkKvbdOFDshiLE
-DoDKjvbdZnmiFEzK
-EObkKvbdJbjDRKDY
-EObkKvbdYfvdAOri
-DncKjvbdkDLjpfuH
-DoCkKvbdsrqsZZdc
-DoDKjvbdLBLHNBwq
-DncLKvbdDjHjWYKA
-DoDKjvbdZQleIldq
-DoDKjvbdatbGxKtI
-EObjjvbdUWMQKUAq
-EOcLKvbdlhdUQtrB
-EPCjjvbdAMhZTWyx
-DoCjjvbdjhGlGFmk
-DoDLKvbdHgGzZXxH
-EOcKjvbdrykoraIO
-DoDKjvbdjJehJlwr
-EObkKvbdrEEhonWB
-EPCjjvbdiUyeWrUb
-DnbkKvbdNQYRVmgT
-EPCjjvbdVUNUFkuj
-DnbjjvbdEYYMTtUM
-DoDKjvbdYpldhldq
-EPCjjvbdtlYWaTaX
-DoCjjvbdozmdLXoA
-DnbjjvbdZnnJFFZj
-EObjjvbdZshiZDrn
-EPDLKvbdZjShPfaf
-DoCkKvbdrpVnibvG
-DoCkKvbdQwNcblHc
-EObkKvbdxZgefXdr
-DoDKjvbdNddUIhkE
-DncKjvbdcImJkFwY
-DoDKjvbdZirhQGaf
-DoDKjvbdqwPkcJZR
-EPDLKvbdkHgLfFnL
-DncKjvbdlqxuZrci
-DncKjvbdRadFLiYk
-EPDKjvbdIHGyxxXg
-EObkKvbdmpZyVjyC
-EPCkKvbdUaBqSpqy
-EOcKjvbdqZOgfqDx
-EObkKvbdkNBlZeGo
-EObjjvbdOAIrsjSA
-EPDLKvbdEvZPpNKF
-DnbjjvbdczYoxZRC
-DoDKjvbdvAdZTPEh
-DncKjvbdqUTfqrKt
-EPCkKvbdZGwEAPTJ
-EPDLKvbdZMSEUNkm
-EPCjjvbdYkqctNlN
-DnbkKvbdeEnqawDK
-DoCjjvbdKVuGEFHJ
-EOcKjvbdzitopDsU
-DnbjjvbdsBfNLgLZ
-DnbjjvbdcImJkFvx
-EPCkKvbdMgCpNQUk
-EOcLKvbdZQmEhleR
-EPDLKvbdtTRrxzEc
-DncLKvbdKVuFceHJ
-EPCkKvbdyfxlAMdw
-DnbkKvbdsZkosBHn
-EPDLKvbdwWlAvBVu
-DoDLKvbdlqxuZrdJ
-EPDLKvbdMRwMzUpz
-EObjjvbdFkFTCgmV
-EObkKvbdHEKvJbKK
-DncLKvbdkNCMZdfo
-DoCjjvbddoFSkTtS
-EPCkKvbdRpTfjFdX
-DoDKjvbdIGgZyYXg
-EPCkKvbdBiLCLIfK
-DoCjjvbdKQydnfNe
-EPCjjvbdHgGzZYYH
-DnbjjvbdYNqAYUvU
-DncKjvbdGckVjBjK
-DoCjjvbdjhHMFemk
-DnbkKvbdkIGkeenL
-DncLKvbdmaivwnmu
-EPDLKvbdmuVZkJqf
-EPDKjvbdNddUIhjd
-DoCkKvbdRDbaQRES
-DncLKvbdTvLojUBR
-DncLKvbdtSrSxyeD
-DncKjvbdjgflGFmk
-DoCkKvbdQwNdDLgc
-DoCkKvbdEXwksssl
-DoDKjvbdtAHRIAAr
-DoDLKvbdSPsgJecw
-EObkKvbdjggLfGOL
-DoCjjvbdSBdFLhxk
-DoCkKvbdiMEdNuDZ
-DoCjjvbdhtzFWrUb
-EPCjjvbdSKxetgKs
-DoDLKvbddndsLTtS
-DncKjvbdtcCtwVno
-DoDLKvbdACrYJzJQ
-EOcLKvbdyOShXrhc
-EObjjvbdqquKnKaN
-DoCkKvbdnCJvxOnV
-EPDLKvbdFWYpQMjF
-DnbjjvbdnCJvwoNu
-EObkKvbdhfjCyWKV
-DoDKjvbdrNZjZLhJ
-DnbkKvbdyNrgwsIc
-EPCkKvbdSZjITDWA
-DncLKvbdqiAJeNOe
-DoCkKvbdhaoDEvpq
-EOcLKvbdtkwwAtAw
-DncKjvbdsPvOicWG
-DoCjjvbdWXJYVcdg
-DoDLKvbdmIdUQuSB
-DnbkKvbdauBgYKtI
-EOcLKvbdJbicRKCx
-DoDLKvbdsPuoJcVf
-EPCkKvbdfILWRnRH
-EPCkKvbdAMhYrvzY
-DoCjjvbdKWUedEfi
-EPCkKvbdhaoDEvqR
-EObjjvbdxVMeRZMO
-DncKjvbdFaOqZJzm
-DncKjvbdIryArlwl
-EObkKvbdRWmccLgc
-EPCkKvbdsPunibvG
-EOcKjvbdQccBPpcr
-EPDKjvbdssRsYzFD
-DncLKvbdySmiMqbH
-EObkKvbdZLqdTmlN
-EPDLKvbdVAaqTQqy
-DncLKvbdFWZPomJe
-DoDKjvbdUVkojTaR
-DncKjvbdULvPBWPJ
-EObjjvbdUslsfLuj
-DoDKjvbdsBfMlHKy
-DoCjjvbdkySrTYgU
-EPDKjvbdYgXEAPTJ
-EOcLKvbdrzMPsAhO
-DoCkKvbdcyxpXyRC
-DncLKvbdkIGkeemk
-EObkKvbdVqnXbElD
-EObkKvbdMuSqkNAX
-DncLKvbdkNCLydfo
-EOcLKvbdUVlQJsaR
-EOcKjvbdczZPxYqC
-EObkKvbdWIXvXfxz
-DoCkKvbddndsLTtS
-DnbkKvbdFfJqmiUR
-DncKjvbdURROuVIN
-EObkKvbdddnrCXDK
-DncLKvbdZyEJmcLr
-EPCkKvbdVgxVxHYz
-DoDKjvbdFfKRmiTq
-EPDKjvbddCTNSAUN
-DoDLKvbdUxgsykOn
-DoDLKvbdBhjbLIfK
-DoCkKvbdFejRmiTq
-EPDLKvbdmuUykJqf
-DoCkKvbdVTmTfLuj
-DoCjjvbdkNCLydgP
-DnbjjvbdHffzYxYH
-EObkKvbdpxngfpcx
-EPCjjvbdKQzFOfOF
-DncLKvbdOEdThiKd
-EOcKjvbdJSyBTNXl
-DncLKvbdyNsIXriD
-EOcLKvbdJYTagkpp
-DoCjjvbdkMakzEfo
-DoDLKvbdZjSgpGbG
-DnbjjvbdSQUHJfDw
-DncKjvbdRpTgJedX
-DncKjvbdrykosBIO
-EObkKvbdGYttaEYC
-DoCkKvbdZxcjNcMS
-DoCjjvbdRadElIyL
-DoDKjvbdkySqryGt
-EPDKjvbdiHJbyWJu
-EPCjjvbdwzHeewdr
-EPDKjvbdQwNccLhD
-DoCjjvbdbBVeGPow
-EOcKjvbdddnrCWcK
-EPCjjvbdJXtCHkqQ
-EObkKvbdrbFllHLZ
-DncKjvbdACqxKZhp
-DoCkKvbdJXtCILpp
-DncKjvbdEYYMTssl
-EOcKjvbdwjvdHzzG
-EPDLKvbdemGWgMik
-EPCjjvbdqvokcIyR
-DnbkKvbdUaCQrprZ
-DoCjjvbdKCjCqKDY
-EPDKjvbdYSlBMtOx
-EPDLKvbdyXiKBozL
-EObkKvbdZxdKNcMS
-EObkKvbdCDpBVjNG
-DncKjvbdmgExMmgZ
-EObjjvbdHkaznWqL
-EObjjvbdkNCLzEfo
-EPDLKvbdyNrgwsIc
-DncKjvbdnHFYNNfy
-DoCkKvbdDwwktTsl
-EPDLKvbdTlWOaWPJ
-DoDKjvbdmIctRVRa
-EPCkKvbdeEnqbWbj
-EPDKjvbdTYLMNzkY
-DncKjvbdkHgLfGNk
-DncLKvbdnPyxvLZC
-EOcLKvbdjKGHjMxS
-DoCjjvbdiZtfMROG
-EPDKjvbdFeiqmhsq
-EPDKjvbdDoDKjvbd
-EOcLKvbdKRZeOfOF
-DoDKjvbdzoQQeCkx
-EObjjvbdEOcLKwDE
-DoCkKvbdrafNLgLZ
-EObjjvbdMfbomPuL
-DncKjvbdUQqPUthN
-EOcLKvbddjJrWUzn
-DoDLKvbdvBDySoEh
-DnbjjvbdVUMselVj
-DoCkKvbddndrkUUS
-EObkKvbdmpZxvKxb
-EPCkKvbdmbJvxPNu
-EPCkKvbdmfdwlnHZ
-DnbkKvbdZRMdhmFR
-DnbjjvbdYSlBNToY
-DncLKvbdzoQRFClY
-EPCkKvbdVZITzLOn
-DncKjvbdZtIiZDrn
-DncKjvbdFVxopNKF
-EOcKjvbdtTSSxydc
-EObjjvbdUVlQKTaR
-EPDLKvbdkMbLzEgP
-DoDLKvbdKDJcQicY
-DoDLKvbdJmAEZgVB
-EOcKjvbdCWzdJFPv
-DncLKvbddneTLUUS
-EObjjvbdBcoaWJlf
-EPDKjvbdGcjvJbJj
-DoCjjvbdddoRavcK
-EOcLKvbdAMhZSvyx
-DnbjjvbdajlGOmcA
-DoCkKvbdCIkCLJFj
-DnbjjvbdMSWmZtpz
-EOcKjvbdNGcQMpUk
-EOcKjvbdTqROuUhN
-DoCkKvbdFVxoolie
-DoDKjvbdUQpnuUgm
-EPDKjvbdnBiwXnmu
-DnbjjvbdJuuGDdgJ
-EPCjjvbdZLqcsnLm
-EObkKvbdZnmheEzK
-DoDKjvbdXsMAltOx
-EObkKvbdiMEdOUcZ
-DoDKjvbdZRNEhleR
-DoDLKvbdMIbLpxAS
-DoDLKvbdVwIwucdg
-DoCjjvbdRbDeLiZL
-DncLKvbdZMRctNlN
-DoCkKvbdGcjvJbJj
-DnbjjvbdSZihScWA
-EPDLKvbdkDLjqHUg
-DnbjjvbdZisIPfaf
-EObjjvbdmpZyWLZC
-EOcLKvbdrbGNLgLZ
-DnbkKvbdkVvmdBww
-EObjjvbddoFSjstS
-EObjjvbdxwiJbPyk
-EPDKjvbdTvLoitAq
-DoCkKvbdZLrDsnMN
-DoDKjvbdOAJTUJrA
-EObkKvbdURQntuHm
-EObkKvbdkIGkefOL
-DncLKvbdsCFllHKy
-EPCkKvbdatafxKtI
-DoCjjvbdiifHjMxS
-DnbkKvbdZsiIyDsO
-DncKjvbdieKgUoAO
-EPCjjvbdBhkCLIej
-DnbjjvbdDxXktTsl
-EObkKvbdKCjCqKCx
-EOcLKvbdIwsahLqQ
-EPDLKvbdhzUfLpnG
-EObjjvbdbAvEepPw
-EOcLKvbdSLZFuHKs
-DnbkKvbdIidAJogE
-DnbjjvbdJbjDQicY
-EPDLKvbdQwODblID
-EObkKvbdqZOgfqEY
-EObjjvbdkWWnDbXw
-DncLKvbdEvZPpMjF
-EPDLKvbdKQydnfNe
-EObjjvbdUWMQJtAq
-EOcLKvbdqrUjmkBN
-DoDLKvbdJmAEZfuB
-DoCkKvbdhtydvqtb
-DoCkKvbdtAHQhABS
-EPDLKvbdxZhGGXdr
-EPDKjvbdmSZVZrci
-DnbkKvbdZjTHogCG
-EObkKvbdYqMdiMeR
-DoDKjvbddwzUURez
-DoDLKvbdbKlFnnDA
-EPCkKvbdGGKSOJTq
-EObkKvbdLGFgbBRV
-DoCkKvbdKyQjSzuG
-DncKjvbdJcJcRJcY
-EOcLKvbdnBiwYPOV
-EOcLKvbdLGGHaaRV
-EObjjvbddneSkTtS
-DoDKjvbdiLddOUcZ
-EObkKvbdsPvOjCuf
-DnbkKvbdZyEKOClS
-DoCjjvbdyzeORhIh
-DnbkKvbdhkeDmuCy
-EObkKvbdvvkaWAvV
-EOcKjvbdzeZnzdzQ
-DoCjjvbdVAaprqSZ
-EObjjvbdjhGkefNk
-DncLKvbdSKxfVHLT
-EPCjjvbdZRMeImFR
-DncLKvbdFeirOJTq
-DncLKvbdFfJrOItR
-DoDLKvbdmoyyVkYb
-DncLKvbdddoRavcK
-DoDLKvbdauBfxKtI
-EObjjvbdSPtHJfDw
-EPCjjvbdCEQBWJmG
-DoCjjvbdDnbkLWcE
-EPDLKvbdVUNUGMVj
-DnbkKvbdnQZyVjyC
-DnbkKvbdgFkymfgA
-DoDKjvbdRDcBQQdS
-EOcKjvbdtcCuWvOo
-EObkKvbdlrYuZrdJ
-DoCjjvbdZirgogBf
-DoDLKvbdMfcPmPuL
-EOcKjvbdDwwlTtTl
-DncLKvbdwXLaWAuu
-EPDKjvbdUaBqSpqy
-EObkKvbdHlBznXRL
-EPCkKvbdkMakzFHP
-DnbkKvbdqZOgfpcx
-DnbkKvbdUMWOaWPJ
-DncLKvbdMfbolpVL
-EObjjvbdfekynGgA
-EPCkKvbdWWiXvEFH
-DoCjjvbdpxnhGqDx
-DoDKjvbdsQVnjDWG
-EObkKvbdYNqAXtut
-DncLKvbdDnbkLXCd
-EObkKvbdKaLGmBwq
-DoCkKvbdBvzciFPv
-DoDLKvbdjKFgilwr
-EPCkKvbdUaBqTQqy
-DoDLKvbdVgwvYHYz
-EPDKjvbdIHGyyXwg
-EPDKjvbdEXxMTstM
-DnbkKvbdQccBPpcr
-DnbkKvbdMgCpNPuL
-EPDKjvbdSPtHKFcw
-DoDKjvbdkIHMGFnL
-DncLKvbdnGeXmNgZ
-DoDLKvbdhtyeWquC
-EObjjvbdqGEFUVaI
-EOcLKvbdNPwpumgT
-DnbkKvbdZshiYdTO
-DoDKjvbdZMSETmkm
-DncLKvbdRbDdkhyL
-EPCjjvbdTvMQJtBR
-EObkKvbdjvXOEBww
-DncLKvbdrXPkbiZR
-EOcLKvbdFejSOJTq
-EOcKjvbdegjvRnRH
-EPDLKvbdJvVGDeHJ
-EObjjvbdXrlBMtOx
-DncKjvbdFejSNhsq
-EPDKjvbdBiLBjiGK
-EOcKjvbddiirVtzn
-EPDLKvbdVBBqTRRy
-DoCkKvbdeqaWzkcP
-EObjjvbdqYnggREY
-EPDKjvbdEARiNZwX
-EObjjvbdSQTfifEX
-EObjjvbdLBLHNBxR
-EPCkKvbdNHCpMpUk
-EPCkKvbdKVuGDdfi
-EPCkKvbdxrnImRbH
-EOcLKvbdZRNEiNFR
-EOcLKvbdtbcUvuno
-EPCjjvbdJTZAsNXl
-EPDLKvbdFVyQPljF
-DoCkKvbdieKftoAO
-EObkKvbdZMSETnMN
-DoCjjvbddePSBvcK
-DncLKvbdqUUHSSLU
-DoDLKvbdZQldhmEq
-DoDKjvbdOTTugFUp
-DncLKvbdZsiJZESn
-DnbjjvbdtbcUwWPP
-EPDLKvbddwzTtRez
-DnbjjvbdZoNheFZj
-EPCkKvbdKfFgbApu
-DoDLKvbdhytfMQmf
-DnbkKvbdnGeXlnGy
-EPCjjvbdSBcdlIyL
-DncKjvbdbAvFFpPw
-EObjjvbdzoPpeClY
-EOcLKvbdqwQMDIyR
-EPCjjvbdmaivxOmu
-EPCjjvbdIwsahLqQ
-DncLKvbdddoSBwCj
-EOcLKvbdrEEhpNvB
-DoCjjvbdEPCkKvcE
-DncKjvbdePEsLTsr
-DncKjvbdmRyVZsEJ
-DnbjjvbdZLqdTnMN
-EPDKjvbdRbEFMIxk
-EObjjvbdJXsbHlRQ
-DncKjvbdkDMLQftg
-EOcKjvbdOEctJIjd
-DnbkKvbdqTsfrRkU
-EPDKjvbdkIGkeenL
-DoDLKvbdUxhUZjnn
-DncLKvbdwyhFexFS
-EPDKjvbdbLLfOmcA
-DnbkKvbdtbbuXWPP
-EOcLKvbdYpmEhmFR
-DnbkKvbdxmsHxTIc
-DoDKjvbdznoqFDLx
-EObjjvbdmfdxMnHZ
-EObjjvbdYTMBNUOx
-EObjjvbdADRwizJQ
-EOcLKvbdMoxQvOGs
-EOcLKvbdrWolDJYq
-EPCjjvbdeFPRbXDK
-DoDKjvbdrDdhpNvB
-EPDKjvbdZxdKODLr
-EOcLKvbdWSNwadlD
-EOcKjvbdxrmhlqbH
-DoDLKvbdzoPqEblY
-DncKjvbdTkuoBWPJ
-DnbjjvbdrykpSaHn
-EOcKjvbdKWUfDdgJ
-DnbkKvbdZMSEUOMN
-EObkKvbdSBcdkhxk
-DnbjjvbdIGfyyYXg
-EPCkKvbdnBjWwoOV
-EOcKjvbdzaAPGgBl
-DnbjjvbdkVvmdCXw
-DoDLKvbdkDLkQfuH
-DoCkKvbdVqnXbFMD
-DncKjvbdWWiXuceH
-DoCjjvbdBvzdIePv
-DncKjvbdLFfICBQu
-DncLKvbdeFPRawDK
-DncKjvbdjmBkydgP
-EObjjvbdVUMtFkuj
-EPDLKvbdrSUjmkBN
-DoDLKvbdSPsgKFdX
-DoDKjvbduDDVXVno
-DoCjjvbdMuSqjmAX
-EPCkKvbdZyEJmcLr
-DnbkKvbdMfcQMouL
-DoDLKvbdUMWPAuni
-DnbjjvbddZxpYZRC
-EPDKjvbdbAvEeopX
-DnbkKvbddoErkUUS
-DoCjjvbdePErjstS
-EOcKjvbdGKeTDHlu
-EObjjvbdfIKvSORH
-EPCjjvbdUsmTelWK
-EObkKvbdaMkBsVMg
-DoCkKvbdRjxfVHKs
-DnbkKvbdMpYQumgT
-DncLKvbdVwIxWEFH
-DncKjvbdaMkCTUmH
-DoDLKvbdhlFENuDZ
-EPCjjvbdZisIPgCG
-EPCjjvbdZnnJEdzK
-EPDKjvbdGLEsDINV
-EObjjvbdYzcFrKVy
-EPDKjvbdZirhPgBf
-EPDLKvbdKaLGmCXq
-EObkKvbddoErkTsr
-DoCkKvbdRXNdCkgc
-DoDLKvbdEvZQQNKF
-DoCkKvbdZoNhdeZj
-EPCkKvbdhkddNtby
-EPDLKvbdZLrDtNlN
-DncKjvbdRbDdlIxk
-EPCkKvbdEOcKjwCd
-DncKjvbdlqyUyrdJ
-DoDLKvbdNddThhkE
-EOcKjvbdwyhFewdr
-EPDLKvbdiUydwSVC
-DnbkKvbdYzcFqjWZ
-DnbkKvbdiBoCdwRR
-EOcLKvbdpecdsuaI
-EPCkKvbdQlxCYnUz
-EPDLKvbdVvhxWEEg
-EOcLKvbdlZSqryGt
-EPCkKvbdUaCQsQqy
-DoCkKvbdvAdZSndh
-DnbjjvbdmttykKRf
-EPCkKvbdYgWdAPTJ
-DoCkKvbdlYrqsZGt
-DnbkKvbdZsiIxcrn
-DoCjjvbddeOqavbj
-EObkKvbdbVBfwjsh
-EObjjvbdMoxQvOHT
-EPCkKvbdRbEFLiYk
-DoCkKvbdlhdTqUqa
-EOcLKvbdMIbMRYAS
-EObkKvbdDncKkWbd
-DncLKvbdfSAvzkcP
-DnbkKvbdxsOIlqbH
-DoCkKvbdADSYKZhp
-EPCjjvbdZshiZESn
-DoCjjvbdieLGuPAO
-EPCjjvbdkHgMFenL
-EPDKjvbddBrlrAUN
-DncKjvbdddoSCXCj
-EPCjjvbdsQWOibvG
-EObkKvbdKkBHvAKZ
-EObjjvbdkWWmdBww
-EObjjvbdnGeXmNgZ
-EOcLKvbdyNrgwrhc
-DnbkKvbdNddThiLE
-DncKjvbdDjHivYKA
-EObjjvbdWXIxWDdg
-EObjjvbdrMyixlIJ
-EOcKjvbdcyyPxYpb
-DncKjvbdcyxowxpb
-EOcLKvbdhbOcFXQq
-EOcKjvbdHDjuibKK
-DoDKjvbdiVZeXRuC
-EOcKjvbdnBjXYOnV
-DnbkKvbdOTTufdtp
-DoDKjvbdVAbRTRSZ
-DnbjjvbdRXOEDLgc
-EOcLKvbdznopdcLx
-DncLKvbdRNXayOUz
-DncLKvbdSPtHKFdX
-EPDKjvbdxUldqYkn
-DoCkKvbdZRNEiNEq
-EPDKjvbdrbFllGjy
-EPCjjvbdUyHszLPO
-DncLKvbdxwhibQZk
-EOcKjvbdFWYopMie
-EOcKjvbdaNKbTVMg
-DnbjjvbdliETqUrB
-EObjjvbdRXODbkgc
-DnbkKvbdTlWPBWPJ
-EOcKjvbdOFEThiKd
-EObjjvbdMSXMzVQz
-EObjjvbdHDkVjCKK
-EPDLKvbdqFceTuaI
-EOcKjvbdFyUtaDxC
-EOcLKvbdmgExMnGy
-DncKjvbdtlYWaUBX
-DoDKjvbdCDoaWJlf
-EPDKjvbdkyTSTYgU
-DoCjjvbdqqtjnLAm
-DnbjjvbdGYtuAdXb
-DoCkKvbdBhjbLIfK
-EPDKjvbdNPwqVmfs
-DoCjjvbdsrqsYzFD
-EPDKjvbdSPsfjFdX
-EPCjjvbdZyDjNbkr
-EPDKjvbdqZOgfpcx
-EPCkKvbdqGDeUVaI
-DoDKjvbdUVkpKUAq
-DoCjjvbdRpUGjGEX
-DoDLKvbdmgFYMmfy
-EPDLKvbdRpUHKFcw
-DoDLKvbdEvZQPmKF
-DoDKjvbdZshhxdTO
-DoCjjvbdiZuGMROG
-DoDKjvbdfpBzvdYI
-EPCjjvbdmgFYNOGy
-EOcKjvbdNrtWGdtp
-DnbjjvbdWHxVwgYz
-EPCkKvbdJbjDRKDY
-EPCjjvbduWOYJpsA
-DncKjvbdehLVrORH
-DoCjjvbdGFjSOItR
-DoCkKvbdjuwODbYX
-EObjjvbdJTZBSmXl
-DnbkKvbdzQoNIiwA
-EObjjvbdjJfHilwr
-EOcKjvbdJpyeOfOF
-DnbjjvbdqFdEsuaI
-EPDLKvbdUxhTzKoO
-EPDKjvbdBraCsfXS
-DoCjjvbdLAjgNBxR
-EObkKvbdlhdTqUrB
-EPCjjvbdZoOIeFZj
-DnbjjvbdrDdhpNua
-EPCjjvbdIHHZxxYH
-EPCkKvbdiMEdOVCy
-DoDKjvbdhgJbxvKV
-DoDLKvbdUyHsyjoO
-DoDKjvbdGQATXGfZ
-DnbjjvbdvAdYroEh
-EPCkKvbdhtydvrUb
-DoCjjvbdsQWOicWG
-DncLKvbdcJMjLGWx
-DoCkKvbdIwsaglQp
-DoCkKvbdYkrEUOLm
-EObkKvbdVvhxWDeH
-EPDLKvbdZMRdTnLm
-DoCjjvbdADRwizJQ
-DoDKjvbdSwjkmzjx
-DnbkKvbdBiKbLIfK
-EPCjjvbdRyigsDWA
-EPDKjvbdRXOECkhD
-EObjjvbddxZtTqez
-EObjjvbdbBVdfPow
-DncLKvbdMfcQNQVL
-EPDKjvbdVBBqTQrZ
-DncKjvbdZMRctOLm
-DncKjvbdGGJrOIsq
-EPCjjvbdZMSETmlN
-DoDLKvbdhlEdOVDZ
-EOcLKvbdOhAXyAZB
-DoCkKvbdyOTIYSiD
-DoCjjvbdUtNUGMVj
-EObkKvbdWXJYWDdg
-EOcLKvbdBhjbKhej
-EObkKvbdVwIwvDdg
-EPDLKvbdzjUpQDsU
-EOcKjvbdqAiFAXHd
-DoDLKvbdqrUkNjaN
-EOcKjvbdYORAYUvU
-EOcLKvbdcIljLFwY
-DnbkKvbdVwJXvDdg
-DoDKjvbdVBCQsRSZ
-DoDLKvbdmuUzKiqf
-EObkKvbdJYUCILpp
-EPDKjvbdsQVoKCvG
-EPDLKvbdmoyyVkZC
-EPDLKvbdsCGNLfjy
-EOcKjvbdbiNKLGWx
-DoCjjvbdrpVnjDWG
-EObkKvbdfVzxPizs
-DnbkKvbdRXODcLgc
-EPCjjvbdjJfIJlxS
-DoCjjvbdZLqcsnLm
-DncKjvbdjuvnECXw
-DoDLKvbdEPDKkXCd
-DnbjjvbdOSsvGduQ
-DoDKjvbdIMBzmvpk
-EPCjjvbdqrUkOLAm
-EPCjjvbdTkvOaVoJ
-EObjjvbdozmdKwoA
-DncLKvbdDxXkstTl
-EOcKjvbdfMewHMik
-DoDLKvbdGKeTCgmV
-EObjjvbdxnSgwsIc
-EPCkKvbdaaVdepPw
-EObkKvbdqGEFUVaI
-DncLKvbdjblKpgUg
-DoDLKvbdRWnEDLhD
-DnbjjvbdFxuVAcxC
-DncKjvbdqZOhGpcx
-DoCkKvbdfHjvRnQg
-DnbkKvbdwMvANDeN
-EObkKvbdFfKSOIsq
-DoCjjvbdmajXYPNu
-EObkKvbdANHyTXZx
-EPCjjvbdLFfHbAqV
-DoCjjvbdVgwuxHYz
-EPCjjvbdQvmcblHc
-DoDKjvbdaSFbhUGL
-DncLKvbdzHZMANFX
-DncKjvbdySnJNRbH
-DoCjjvbdMpYRVnHT
-EObkKvbddePSBwDK
-EPCkKvbdMfcPmQUk
-EObjjvbdMgCpNQVL
-DoDKjvbdrEFIonWB
-DoDLKvbdFjdsCgmV
-EObjjvbdwtmFRYlO
-DnbjjvbdIwtBgkqQ
-EPCjjvbduaDxrndh
-EPDLKvbdShzKRABM
-DnbjjvbdfHjvRnRH
-EOcKjvbdBiLBjiGK
-EPCjjvbdCEPaWKNG
-DoDKjvbdtbbuWuoP
-DoDKjvbdegkWRmqH
-DnbjjvbdNeETiJLE
-EPCkKvbdjcLkRHUg
-DnbjjvbdjvXOEBww
-EOcLKvbdTlWPAvOi
-DoCjjvbdrMyixkhJ
-EObkKvbdqGEEtWAh
-DncKjvbdbBVeGQPw
-DoDLKvbdpssfqqjt
-DnbkKvbdFWZPomJe
-DoDKjvbdSBcdkiYk
-DoCkKvbdvBEZSoFI
-EOcKjvbdRaceLhxk
-EOcKjvbdJKEAKQHE
-DoDLKvbddZyQYYpb
-EObjjvbdeXzTsqez
-DncLKvbdCSaCtGXS
-EPCkKvbdlZSrSyHU
-EOcLKvbdTJZiqABM
-DncLKvbdvAdYsOdh
-DnbkKvbdcyxoxZQb
-DnbkKvbdhanbdwRR
-EPCjjvbdbBVeFopX
-DncKjvbdGLFTDHmV
-DoCjjvbdiZuGLpmf
-EOcLKvbdJbjCqJbx
-EObkKvbdGdLWJbKK
-DoCjjvbdRkZGVHKs
-DoCjjvbdGckWJajK
-DncKjvbdAMgxrvyx
-EPCjjvbdEPDKjvbd
-EOcLKvbdkDLjqGtg
-DoDLKvbdNPxRVnGs
-DoDKjvbdySmhmRag
-EPCjjvbdVqnXadkc
-EPDKjvbdTulPitAq
-EObjjvbdGLErcHlu
-DoDLKvbdHELWKCJj
-EObjjvbdbVCHYLUI
-DncKjvbdqvpLbiZR
-EPCjjvbdvAdZSoFI
-EOcLKvbdfjfzcGAE
-DnbjjvbdaNKartmH
-EOcLKvbdcTDKsdJa
-DncLKvbdOSsufduQ
-DnbkKvbdyYIiapZk
-DoCjjvbdunszqKoU
-DoCkKvbddndsLTsr
-DoDKjvbdxxJKBoyk
-DoDLKvbdrovOibvG
-EPCkKvbdiLddOVDZ
-EPCkKvbdiBncFWqR
-EOcLKvbdZQldiNFR
-DoCkKvbdOEctJJKd
-DoCkKvbdrMzKZMIJ
-DnbkKvbdVhYVwgYz
-EOcLKvbdQvnDblHc
-DoDLKvbdmJEURVRa
-DoDLKvbdCTBDUFwS
-EPCkKvbdNrsvHEuQ
-DnbkKvbdegkVqnRH
-DoCjjvbddBrlrATm
-DoCkKvbdCJLCLJFj
-EOcKjvbdxZgefXeS
-EPDKjvbdZtJJZDsO
-DoCkKvbdQvmdDMID
-DoDLKvbdRaceLhxk
-DnbkKvbdSBdFLhxk
-DoDKjvbdOTTufdtp
-DoDLKvbdnQZxujyC
-DnbjjvbdZshhyETO
-DoCjjvbdtvOYJqTA
-DncLKvbdRMxBxmtz
-DnbjjvbdEzsqElCi
-EObjjvbdKefHbAqV
-DnbkKvbdmpZyWKyC
-DncLKvbdNQXqWOGs
-EPDLKvbdVTlsekuj
-EPCkKvbdGcjvJajK
-EPDLKvbdIryArlxM
-DoDLKvbdwyhGFwdr
-EPCkKvbdzaAOgGal
-DncLKvbdiHKCxvJu
-EOcKjvbdLBKgMbXq
-DoCjjvbdTppoVVIN
-EPDKjvbdNPxQvOHT
-DnbjjvbdTvLpJsaR
-DncKjvbdnVUyjiqf
-EPCjjvbdVUNTfLvK
-EOcLKvbdDxYLtTtM
-DnbkKvbddePSCXCj
-EPDLKvbdgGLzOHHA
-DoCkKvbdTukpKTaR
-DncLKvbdVUMtGMWK
-EObkKvbdXnRAYVWU
-DncLKvbdyqOmJJwA
-DoDKjvbdFVyQQNKF
-DncKjvbdvOszqLOt
-EPCkKvbdZRMdhmFR
-EPDLKvbdhlFDmuCy
-EOcKjvbdkIHLeenL
-DnbjjvbdqceJQOWB
-DoCkKvbdzitpPdSt
-EPCjjvbdFeiqmhtR
-DoDLKvbdsQVoJcVf
-EPDLKvbdUQpnuVIN
-DoDLKvbdWSNxBdlD
-EPCjjvbdpyPHgQcx
-EOcKjvbdUyHsyjoO
-DoCjjvbdxrnJNSCH
-DoCjjvbdKDKCpjCx
-EPDLKvbdxsOIlrBg
-DoCkKvbdnGdxMnHZ
-EPDLKvbdfHkWSNpg
-DnbjjvbdkHgMGFnL
-EOcLKvbdxmsIYSiD
-DoDLKvbdEXxLsssl
-DoDKjvbdjFLGuPAO
-EOcLKvbdeEoRawCj
-DoDKjvbdyOTIYSiD
-DnbjjvbdIHGyyXxH
-DncKjvbdTqQoUuHm
-EOcKjvbdMfcQNPuL
-DnbkKvbdatbGxKsh
-DoDKjvbdOTUWHEtp
-EPCkKvbdGLFTCgmV
-DoDKjvbdkHfkfGNk
-EObjjvbdJXtBhMRQ
-EObkKvbdRpUHKGEX
-DnbjjvbdiUzFWrVC
-EPCkKvbdliETqUrB
-DnbkKvbdZjTIQHBf
-DoCjjvbdZMSETnLm
-EPDLKvbdFWYoomKF
-EPDLKvbdRaceLhxk
-DoDLKvbdEASJNZwX
-EPDLKvbdGZUtaEXb
-DncLKvbdyNrgxSiD
-EOcKjvbdbVBgXkTh
-EPCkKvbdvOszpkOt
-EObkKvbdKfGHbBRV
-DncLKvbdjvXOEBxX
-EPDLKvbdvAcyTPFI
-EObjjvbdNsUWGeUp
-EPCjjvbdZtIiZDrn
-DoDLKvbdrRtkOLBN
-DncKjvbdptUHSSLU
-DncLKvbdWSOXaeLc
-EPCkKvbdiLeDmuCy
-DoCjjvbdhyuFkqNf
-DnbkKvbdzoPqFDMY
-DoCkKvbdGFirOItR
-DoCjjvbdEObjkXCd
-DnbkKvbdjKFgilwr
-EPDLKvbdVwIwvEFH
-DoDKjvbdfIKvRmpg
-EPDLKvbdOFDsiIkE
-EPDLKvbdGKdrcIMu
-EPDKjvbdZnmiEeZj
-DoDKjvbdKWVFceHJ
-DncKjvbdvBDySneI
-DncKjvbddeOqawCj
-DoCkKvbdEztRFLbi
-EPDKjvbdMpXpumgT
-EPDKjvbdtunYJqTA
-EPCjjvbdegkVqmpg
-EObjjvbdlYsRsZHU
-EOcKjvbdbUagXkUI
-EPDLKvbdANHySvyx
-DnbkKvbdmJEUQtqa
-EPDKjvbdVUNUFlVj
-EPCkKvbdvvlBVaVu
-DoCjjvbdmozZWLYb
-DoDKjvbdwzIFfXeS
-DoDLKvbdNQXpvOGs
-DncLKvbdEYXlTstM
-EPCkKvbdbUbGwkUI
-EOcLKvbdLBLHNBxR
-DnbkKvbdePErkUUS
-EObjjvbdyXiJaoyk
-DncLKvbdVrNxBeLc
-DoCjjvbdaRebhUGL
-EOcKjvbdxsNhmSBg
-EOcKjvbdXrkaMsoY
-EObjjvbdhuZdwSVC
-DoCkKvbdqGEFUWAh
-DoDKjvbdegkVrNpg
-DoCkKvbdtcCtvuoP
-EOcKjvbdmJEUQtrB
-EOcKjvbdWXIwucdg
-DoDLKvbdhgKCyWJu
-EPCjjvbdcSbkUDjB
-EPDKjvbdLrWmZuQz
-EPDLKvbdXrlAlsnx
-DnbkKvbdKNADygUa
-EPDKjvbdyNrhXsJD
-EOcLKvbdIsZBSlxM
-EPCkKvbddndrkTsr
-DnbjjvbdFyUuBEYC
-EPCkKvbdJcKCpjCx
-EObkKvbdbBWFGQPw
-EOcLKvbdFjdrbhNV
-EPDLKvbdrDdiQNvB
-EObkKvbdkHgMGGOL
-EPCkKvbdkySrSyHU
-DncLKvbdaaWEfQQX
-EObkKvbdehKvRmpg
-DnbkKvbdmIdURVRa
-DoDLKvbdvBEZSneI
-DoCkKvbdNdcshhjd
-DncLKvbdZyEKOCkr
-DoCkKvbdVrNwbFMD
-DnbkKvbdnCKXXoNu
-EPDKjvbdSQTgKGDw
-EObkKvbdaRfCgtFk
-EObjjvbdkWXNcaww
-EObkKvbdDihJuxKA
-DncLKvbdnVVZkKSG
-EPCkKvbdVBBqSpqy
-DncLKvbdqGEFUWAh
-DoCkKvbdsPvOjDWG
-DncKjvbdySmiNRbH
-DoDKjvbdraemLfjy
-DoDLKvbdnPzZWKxb
-DnbjjvbdRjxfVGkT
-DoDKjvbdGLEsDHlu
-DnbjjvbdRotHKFdX
-DoCkKvbdRpUGiecw
-DnbjjvbdZjTHogBf
-EPDKjvbdcTCjtDia
-EOcKjvbdrounibuf
-EOcKjvbdVBCRSqRy
-EPDKjvbdEvZPolie
-DnbkKvbdzRPNJKXA
-DncLKvbdBhjbKiGK
-DnbkKvbdqrVKmkBN
-DnbjjvbdBraDTewS
-DnbkKvbdJcKDRJbx
-DoCjjvbdbUbHYLUI
-DoDKjvbdUyITykOn
-DoCkKvbdYlSEUOMN
-EPCkKvbdRpUHKGEX
-EObkKvbdTAFJICPE
-EPDKjvbdrpWPJcVf
-DoCkKvbdZnnJFFZj
-EPCkKvbdkVvmcaxX
-EOcKjvbdyzdnRgiI
-EObjjvbdqAiFAXIE
-DncLKvbdWWiYWDeH
-EPCjjvbdqlzKZLgi
-EObjjvbdauCGwkUI
-DoDLKvbdtTSSxydc
-EObkKvbdbVCGxLTh
-EObkKvbdkWWmdBxX
-EObjjvbdRNXaxnUz
-EOcKjvbdwXLaVaVu
-DncKjvbdqTtGqrKt
-DncKjvbdIjEAJpGd
-EPDKjvbdHffyyXwg
-EObkKvbdSCEFLiYk
-DncKjvbdiVZeXRuC
-DoDLKvbdWWhwudFH
-EPDLKvbdrRuKmkAm
-EObjjvbdxsNhlqag
-EPDKjvbdcJMikFwY
-DoDKjvbdpyPHfpdY
-DncKjvbdwyhGGXdr
-DoCkKvbdkVwODbXw
-DncLKvbdJcJbpibx
-EPCkKvbdsQWPJcVf
-EOcKjvbdZRNEiMdq
-EObkKvbdjvXOECXw
-EObjjvbdZxcjODLr
-DncKjvbdRWmdDMID
-DncKjvbdjvWmcbYX
-DoCjjvbdnBjXXoOV
-DncKjvbdiBnbdwQq
-EPDKjvbdDoDKjwCd
-EPCkKvbdFxuVBEYC
-DncKjvbdFVxopMie
-EOcLKvbdKWUfEEfi
-EPCkKvbdNrtVgEtp
-DoDLKvbdfoazwDxI
-DoDKjvbdqquKmkAm
-EPDKjvbdhbPCeXRR
-DncKjvbdZtIhyETO
-EPCkKvbdQwNdCkhD
-EPDKjvbdhzUfMROG
-DnbjjvbdrpVoKCuf
-EPDLKvbdtlYWaUAw
-EOcLKvbddoErjstS
-DnbkKvbdyzeORghh
-EPDLKvbdZnmhdeZj
-DoCjjvbdcIlikGXY
-EOcLKvbdLAkHNBxR
-DoCjjvbdtkwwBUAw
-DoCjjvbdgGMZnHHA
-DnbkKvbdUsmTfLuj
-EOcLKvbdqZPHgQcx
-EPDLKvbdLqvlytpz
-DoDLKvbdqdFIomvB
-EObjjvbdBhjbKhfK
-EOcLKvbdrMyjYlIJ
-DncKjvbdDncKkXCd
-DnbkKvbdNQXpunHT
-EPDKjvbdZjSgofbG
-DnbjjvbdBiKbLIej
-DoCjjvbdGAoQxizm
-EOcLKvbdwtldqZLn
-DoDLKvbdIrxaSmXl
-DoCjjvbdNHDQMpUk
-EOcLKvbdTkunaWOi
-DncLKvbdNHCpMpVL
-DoDKjvbdelfXHNKL
-EObjjvbdcyxpYYqC
-DoDLKvbdZGwEAOri
-DoDLKvbdIxUCHkqQ
-DoCjjvbdoznEKxPA
-EOcKjvbdbLMGPNcA
-EObjjvbdiiegilxS
-DoDKjvbdZRNFImFR
-DncLKvbdRbDeLhxk
-EPCkKvbdqlzJxlHi
-EOcLKvbdhkeDnUby
-EPCjjvbdhaoDEwQq
-EPCkKvbdFkFScHlu
-EPCjjvbdJKEAKQGd
-DoCkKvbdpxngfqDx
-EObjjvbdUGznLwWF
-EObjjvbdVZHsykPO
-DncLKvbdYlRdUNlN
-EPCkKvbdHDkWKBjK
-DncLKvbdjKFhKMxS
-DnbjjvbdnBjWxPOV
-EObkKvbdtcCtvvOo
-DnbjjvbdTpqPUthN
-DncLKvbdMoxQvOGs
-DnbjjvbdfNGXHMjL
-EPDKjvbdhgJcZVjV
-DoDLKvbdNGbolpVL
-EPDKjvbdatbHYLUI
-DncLKvbdczZPwxqC
-DnbjjvbdZxcimblS
-EPDLKvbdKaKgMbXq
-EOcLKvbdtbcUwWOo
-DnbkKvbdJutfEEfi
-DoCjjvbdmIdURUqa
-EPCjjvbddBrmSATm
-EPCkKvbdXsLaNUPY
-DnbkKvbdNPwpvOGs
-EOcKjvbdIwsaglQp
-DoCkKvbdlhdUQtrB
-DoDLKvbdGdLWJaij
-DoCjjvbdwXMAvAvV
-DnbkKvbdbrbkTdJa
-EPDKjvbdFVxpQNJe
-DoCjjvbdHDkWJbKK
-DnbkKvbdjvXODbYX
-DoCjjvbdemFwGmJk
-DoCjjvbdQdCaPpcr
-EOcKjvbdqcdiQNvB
-DncLKvbdbBWFFoow
-EOcKjvbdKaKgMawq
-EObkKvbdLBKgMawq
-DncKjvbdcbSmSAUN
-DoCjjvbdyOTHwsJD
-EOcLKvbdOStVfeUp
-EObkKvbdHffyyYXg
-EPCjjvbdmuUykJrG
-DoDLKvbdJYTbILpp
-DncKjvbdnGdwlmgZ
-EPDKjvbdZQldhldq
-EObjjvbdUaBpsRSZ
-EOcKjvbdrzLpSaIO
-DnbjjvbdLGFgbAqV
-EPDKjvbdXrlAmUOx
-EPDLKvbdtSqryZeD
-DoDKjvbdtlXwAtAw
-DoDKjvbdaRebgsfL
-EObjjvbdUWLpKUAq
-EObjjvbdQvmccLgc
-EOcLKvbdznopeDMY
-EOcLKvbdIwsbHkpp
-EPDLKvbdziuQPcsU
-EPDLKvbdelevgMik
-DoDKjvbdTAFIgbOd
-DoDLKvbdbBWFGPow
-DoDKjvbdYqNEiMeR
-EOcLKvbdhficYuiu
-EOcKjvbdyTOImRbH
-DncKjvbdiLeDmtby
-EPDLKvbdUsmTekvK
-DoCkKvbdkCkkQftg
-DoCkKvbdVTmUFlVj
-DoCkKvbdTIyjRAAl
-EOcKjvbdbUafxKtI
-EOcKjvbdZsiIxdSn
-DoDKjvbdSCEElIyL
-DnbjjvbdBsAbsfXS
-DoCkKvbdBcpAuimG
-DoCkKvbdVwIwvEEg
-DnbjjvbdajlFoNcA
-EPCkKvbdtSrTYzFD
-DnbkKvbdGFirNhsq
-EOcKjvbdapHHELzd
-DoDLKvbdiUyeXSUb
-DnbjjvbdtAGqIABS
-DnbkKvbdXsLaMsnx
-DoCkKvbdeEnqawDK
-EOcKjvbdDxXkstUM
-DnbjjvbdcyxoxZQb
-DoDLKvbdlrZVZrci
-DoCkKvbdTAEiICPE
-EOcLKvbdpyPHfpcx
-EPDLKvbdVBCRTQqy
-DnbjjvbdmJEUQtqa
-DnbjjvbdkClKqHVH
-EObkKvbdCJKajiGK
-EObkKvbdeAURMxJf
-EPDLKvbdcSbkUDjB
-DncLKvbdsCFmLfjy
-EPCkKvbdIwsahLqQ
-DoCkKvbdrJAJeMne
-DoDLKvbdIHGzYwxH
-DoCjjvbdGckVjBjK
-EObjjvbdegkVqmqH
-DoDLKvbdLKaIWAKZ
-EPDLKvbdaRfChUGL
-DoDLKvbdyYJJaozL
-DoCkKvbdrWpLbhyR
-DoCkKvbdLGGIBaRV
-DoDKjvbdKyRJrztf
-DoCkKvbdjuvnEBxX
-EObkKvbdNeEThhkE
-EPCjjvbdQwNcbkhD
-DoCkKvbdJqZePGOF
-EObjjvbdNGbomQUk
-EObkKvbdkxrqsZHU
-EOcLKvbdrounjDVf
-DoDLKvbdkClLRGtg
-EOcLKvbdbKkfOnDA
-EPCkKvbdRDbaPpcr
-EPDLKvbdkHgLefNk
-EOcLKvbdFVxpPmKF
-EObkKvbdsrrSxzEc
-DnbkKvbdFeirOIsq
-DncLKvbdzitopDrt
-DoCjjvbduWOXjQsA
-EPCkKvbdyXhjCPyk
-DoDKjvbdaaWEfPow
-DncLKvbdvAcySneI
-EObjjvbdADRwjZhp
-EObkKvbdnPyxvLYb
-DncKjvbdijGIJlwr
-EPCjjvbdJcJbqJcY
-DnbkKvbdkMbLydgP
-DoCkKvbdRDbaQQcr
-DoCjjvbdxsOIlrCH
-DnbjjvbdKQydnfOF
-EPDKjvbdcImKKfWx
-DnbjjvbdcImKKewY
-EObkKvbdqdFJPmua
-EObjjvbdajkennDA
-DnbjjvbdZyEKNcLr
-DoCjjvbdKWVFdEgJ
-EPDKjvbdWXIwuceH
-DnbjjvbdqiAJdlne
-EOcLKvbdkyTRryGt
-EPCjjvbdpaJFAWgd
-EPCjjvbdmJDsqVSB
-EPCjjvbdREDAopdS
-DoCjjvbdRpUHKFdX
-DncKjvbdptUHSSKt
-EPCjjvbdiCObdvpq
-DncLKvbdNwnuzcmt
-DncKjvbdqdFIpOWB
-DoDKjvbdjggLefNk
-EObkKvbdrNZiyLgi
-EPCkKvbdaSFcITfL
-DnbjjvbdGLFTDINV
-EPCkKvbdiLeENuDZ
-DncLKvbdZyEJmcLr
-EObjjvbduDCuWvOo
-DoDKjvbdNQXqWNgT
-DncKjvbdVBCRTRRy
-EPCjjvbdSQUGifEX
-EOcLKvbdANIZSvyx
-DoDKjvbdvBDyTPFI
-DnbkKvbdEPCkLWbd
-DoCkKvbdyYIjCPyk
-DnbkKvbdelewGmKL
-EPDLKvbdatbGxLUI
-EPDLKvbdTvLojTaR
-DoCjjvbdhtyeWrVC
-DoDKjvbdzeZnzdzQ
-DnbjjvbdyzdnRhJI
-EPCjjvbduLxWaUBX
-EOcLKvbdkyTRsYgU
-DnbjjvbdCTBCsewS
-EObjjvbdjAPgApHK
-EPDLKvbdwkWdHzyf
-EObjjvbdsPvOicWG
-DoCkKvbdTulPisaR
-DnbkKvbduCcUvuoP
-EObkKvbdZRMdiMeR
-DoCkKvbdSPtHJfDw
-DncLKvbdKaLGlaxR
-DnbkKvbdRpTgKGDw
-DoCjjvbdWXJYWEEg
-EObjjvbdWXJYWDdg
-EOcKjvbdKCjCqKCx
-DnbkKvbdakMGPNcA
-DoDKjvbdwkXDgzzG
-EObkKvbdNHDPlotk
-DncLKvbdyzdmrIJI
-EObkKvbdFkErbhMu
-EPCkKvbdNeDsiIjd
-DoDKjvbdIGfyyXxH
-DoCjjvbdZyDinDLr
-EPCjjvbdemFvfmJk
-EObjjvbdJYTbILqQ
-DnbjjvbdWXIwucdg
-DoCjjvbdiHKCxvJu
-EPDKjvbdfpBzwDxI
-DoCjjvbdaNLCStlg
-EPCkKvbdnVUykJqf
-DoCjjvbdyYIjBozL
-EPCjjvbdzjUpQDsU
-DoDLKvbdZxcjOCkr
-EPCkKvbdeFOrBvcK
-EPDKjvbdKaKflaxR
-EOcLKvbdfMevgMjL
-EPDKjvbdGckWKCKK
-DoCjjvbdKVuFdEgJ
-EObjjvbdfMfWfmJk
-DoDLKvbdMfbomQVL
-EPDLKvbdRkYeuGjs
-EOcLKvbdKfGHaaQu
-EObkKvbdoznDjwoA
-EOcKjvbdUMWPBVoJ
-DoCkKvbdFjeSbgmV
-EPCjjvbdrEFJQOWB
-EOcLKvbdvAcyTOdh
-DnbjjvbdWfYzUAOs
-EObkKvbdTkuoBWPJ
-DnbkKvbdFpASvgFy
-DoCjjvbdczZQXyRC
-DoCjjvbdRDcBQQdS
-DoDKjvbdqYngfqDx
-EObkKvbdWRmwbElD
-EPCjjvbdFyVVBDwb
-EObjjvbdBhjbKhej
-DncLKvbdzaAPGgBl
-EObkKvbdTppoVUgm
-DoCjjvbdbrcLTcjB
-EPCkKvbdGLFTCglu
-DoDLKvbdDwxMUUUM
-EPCjjvbdNQYQumgT
-DncKjvbdmfeXmOGy
-EPCjjvbdwtmFRYkn
-DoCkKvbdsBfMlGjy
-DncLKvbdRpUHKGDw
-EObjjvbdjblLQfuH
-EObjjvbdJYTbHlRQ
-DoCkKvbdmttyjiqf
-DoCkKvbdZQldiMdq
-EPDKjvbdFejSNiUR
-EOcLKvbdjgfkfFnL
-DnbjjvbdMpYQvNgT
-DnbkKvbdUyIUZjnn
-DnbkKvbdJbjDRKDY
-EPCjjvbdeEnrBvcK
-EOcKjvbdyzdnSIIh
-DoDKjvbdDoDKjwCd
-DoDLKvbdCSaDUFwS
-DoDLKvbdIrxaTMwl
-DnbkKvbdRNXayNtz
-DoCkKvbdxxJKBoyk
-DncLKvbdnGdxNOGy
-DnbjjvbdySmhlqbH
-DoCkKvbdxwhjBoyk
-EPCjjvbdZQleIleR
-EPCjjvbdaRfChTek
-EOcKjvbdYTMBNUPY
-DoCjjvbdegkWSNpg
-EObkKvbdziuQPdTU
-EOcKjvbdnCKXYOmu
-DoCkKvbdZnmhddzK
-EObjjvbdzaAPGgBl
-DoDLKvbdePFSjtTr
-EPCkKvbdNrtWGeVQ
-EPCjjvbdelfWfmKL
-DoDKjvbdKxpjSztf
-EPDKjvbdxmsIXsIc
-EPCjjvbddZyPxYqC
-DoDKjvbdvOszqLOt
-DncKjvbdatbGxLTh
-EObjjvbdzoQQdbkx
-DoCjjvbdZRMeImEq
-EOcKjvbdqTtGqqjt
-EOcKjvbdqAheAWgd
-DnbjjvbdySmhmRag
-DncKjvbdjKFhJlwr
-EPDKjvbdqFceUWBI
-DoDKjvbdsBemLgLZ
-EPDLKvbdKQzEoFnF
-EOcKjvbdFjdsCgmV
-EObjjvbdpfEEtWBI
-EPDKjvbdZxcjOClS
-EPDKjvbdnBivwoOV
-EPCjjvbdrylQTAhO
-EPDKjvbdKaLGmBxR
-EPDKjvbdHgGzYwxH
-EObjjvbdkHflGFmk
-DnbjjvbdqGDeUVaI
-EPDKjvbdMgDQNQUk
-DncLKvbdSKyGVHKs
-EOcKjvbdqFdEsvAh
-EOcKjvbdYkrETnLm
-DnbkKvbdqBIeAXHd
-DncLKvbdZQldhmFR
-DncLKvbdFjeSbhMu
-EPCkKvbddePRavcK
-EPCkKvbdssRsYzEc
-EPCkKvbdRadFLhxk
-DnbkKvbdVvhxWEEg
-EOcLKvbdIryArmYM
-EPCkKvbdKfGHbAqV
-DncKjvbdEKIJuxKA
-EPDKjvbdIwsbIMRQ
-EObkKvbdzaAOfgBl
-DncLKvbdeUAUASlv
-DnbjjvbdlqxuZsDi
-DnbjjvbdUWMQKTaR
-EOcLKvbdNGbpNPtk
-EPDKjvbdWSOYCEkc
-DoCkKvbdjggMGGOL
-DoCjjvbdSQUHJecw
-DncLKvbdZyDjODMS
-EObjjvbdfpBzvcxI
-EOcLKvbdTlVoAvPJ
-DnbjjvbdVviYWEFH
-EPCkKvbdZnmiFFZj
-EObjjvbdNGbpNQUk
-DoDLKvbdrbGMkfjy
-DoDLKvbdxnShYSiD
-EObkKvbdJYTahMRQ
-DoDLKvbdoAKzshEO
-DoCkKvbdZxcjOCkr
-EPDLKvbdRWmdCkgc
-EPCkKvbdGFiqnJUR
-DoDKjvbdRzJgsDWA
-DncLKvbdptTfqqjt
-EPDKjvbdmIctRUqa
-EObkKvbdnBiwXoOV
-DnbjjvbdfMevfljL
-EObkKvbdBraDUGWr
-DncKjvbdUxhTzKnn
-DoCjjvbdmfdxMmfy
-DnbjjvbdhuZeWrVC
-DnbkKvbdLiCLpxAS
-DnbjjvbdKfFgbApu
-DnbjjvbdziuPpETU
-DoCjjvbdwuNEqZLn
-EPCkKvbdEXwksssl
-EPCjjvbdhgKCxujV
-DoDKjvbdhlEdOVDZ
-DncKjvbdLAjgMbXq
-DncKjvbdOFEThhkE
-DoCkKvbdANHxrvzY
-EPCjjvbdZtIiZDrn
-DoCjjvbdYpldhmEq
-DncLKvbdqwPlDIyR
-DncLKvbdUtNUFlWK
-EObkKvbdkWXODbYX
-DnbjjvbdRzJhSbvA
-DoCkKvbdEJgjVxKA
-DncKjvbdxnSgxShc
-EObjjvbdbUbHYKsh
-DncLKvbdZoNiFEzK
-EPDKjvbdbiMjKevx
-DnbkKvbdIwsbHlRQ
-EObjjvbdhWyAzzAJ
-EObkKvbdqvpLcIyR
-EObjjvbdGGKSOIsq
-EObkKvbdTpqPUthN
-DncKjvbduaEZTOdh
-EObkKvbdJJdAJofd
-DoCkKvbdEKIJuwjA
-DncLKvbdDnbjkXDE
-DnbjjvbdhbObdwQq
-EObjjvbdunszpkPU
-EPCjjvbdwNWANDdm
-EPDLKvbdozmcjxPA
-EObjjvbdZnmiFFZj
-DnbjjvbduDDUwVno
-EOcKjvbdZjShPfbG
-DncLKvbdADSXiyhp
-DoCjjvbduCcVXWPP
-DnbkKvbdffLzOHHA
-DncLKvbdBdPaWJlf
-EPDLKvbdJvVGEFGi
-EPCkKvbdvwMBWBWV
-EObjjvbdijGHjMxS
-EPCkKvbdaNLCTVNH
-EPCjjvbdbAudeopX
-DoDKjvbdozmcjwoA
-EPCjjvbdYlRctOMN
-DoCjjvbdDoDLKvcE
-EObkKvbdVqmwaeMD
-DnbjjvbdqvolChyR
-EPCkKvbdRkZGVGjs
-DoDKjvbdjvXOEBxX
-DoCjjvbdIHHZyXwg
-DnbkKvbdLBKgNCYR
-EPDKjvbdyNsHxShc
-EOcKjvbdyzdmqhJI
-DnbjjvbdqFcdtVaI
-EObjjvbdrJAKElne
-DncKjvbdTvLpJtAq
-EObkKvbdDoDKjvbd
-EPCjjvbdYlRcsnLm
-DoDKjvbdegkVqmqH
-EPDLKvbdZHXEAPSi
-DoDKjvbdakLennDA
-DncLKvbdrDdiPmua
-DoCjjvbdhbPDEwRR
-EPDLKvbdtcDUvuno
-DnbjjvbdEKHjVxKA
-EOcLKvbdYqMdhmFR
-EPDLKvbdmttzKiqf
-EPDLKvbdTkvPAuoJ
-DncLKvbdVAbRTQqy
-DncLKvbdLBKflbYR
-DoCjjvbdZyDimcMS
-EOcKjvbdFpATXHFy
-EObkKvbdnCJwYOmu
-EPCkKvbdVZHszLPO
-EPCkKvbdCSaDTfXS
-DncKjvbdNVSqjmAX
-EPCkKvbdFjdrbhMu
-EPCkKvbdbsCkUDjB
-EObjjvbdMowpumfs
-DoDLKvbdRotHJecw
-DnbjjvbdTfzmkwWF
-EObjjvbdBcpAvKNG
-DoDLKvbdWHxWXfxz
-EPCjjvbdqUUGrSKt
-DncLKvbdliDsqVSB
-DnbkKvbdBdQAujMf
-DnbkKvbdWXIxVcdg
-DoCkKvbddePSCXCj
-DnbjjvbdZirhPfbG
-DnbjjvbdyXiKBozL
-DnbjjvbdznpREcMY
-DncKjvbdJcKCqKCx
-EPCkKvbdJbibpjDY
-EPDLKvbdkClLRHVH
-EPDKjvbdTvLoisaR
-EOcKjvbdZGwEAPSi
-EPCkKvbdKRZdnenF
-DncKjvbdfMfXGmJk
-EPCkKvbdhfibyWJu
-EOcKjvbdMIbLqYAS
-EPDLKvbdbUbHXjtI
-EObkKvbdCSaDUFwS
-EPDLKvbdGGJqnJUR
-EOcLKvbdDoDKjvbd
-DnbjjvbdFkFTDIMu
-DnbjjvbdgFlZnGgA
-DoCkKvbdakLfPODA
-EPDLKvbdDwwlTstM
-DoCjjvbdMJBkqYAS
-DnbjjvbdiGjCxujV
-EPDLKvbdVwIwuceH
-EPDLKvbdZyEKOCkr
-EPDKjvbddoFTLTtS
-DoCkKvbdXrlAlsnx
-EOcLKvbdZoOIeEzK
-DnbjjvbdaMjbTVMg
-EPDKjvbdeOeTKssr
-DncKjvbdSKxetfjs
-DoCjjvbdpxnhGpcx
-EPDLKvbdmtuZkJrG
-DoCjjvbdYkqdTmlN
-EOcLKvbdJuuGEEfi
-DoCjjvbdhzUfMROG
-DncLKvbdddnrBvbj
-EOcLKvbdWSNwbFMD
-DoDLKvbdtSrTYydc
-EPCjjvbdRjxetgKs
-DncKjvbdFxttaEYC
-EPDLKvbdiBncFWpq
-DnbjjvbdyTOImSCH
-DoDKjvbdcyyQXyRC
-EOcLKvbdZLrEUOLm
-DoCjjvbdXmqAYVWU
-EPCjjvbdUsltFkvK
-DncKjvbdLqvmZuQz
-DnbjjvbdZjTIQGaf
-DoDKjvbdzoPpeCkx
-EPDKjvbdGGKSNhsq
-DncKjvbdtSrSxzFD
-EPCkKvbdyOTHxShc
-DnbkKvbdehKvSORH
-DoDLKvbdWIXvYHYz
-EObkKvbdDoCkLXCd
-DoDLKvbdLBKflaxR
-EPDLKvbdKQzFOenF
-EObjjvbdjFLHVPAO
-EObkKvbdFeiqmhsq
-DoDKjvbdRotHKFdX
-DnbkKvbddZxpYZQb
-DncKjvbdqqtkNkBN
-EPDKjvbdZjShPgBf
-DoCkKvbdNHCpMouL
-EObjjvbdxZgefYFS
-DoCjjvbdNrsvHEuQ
-DoCjjvbdwzHeewdr
-EObjjvbdvPTzpkPU
-EPDKjvbdrounibvG
-DnbkKvbdpstGqqjt
-EPDLKvbdeFOrCXDK
-EOcLKvbdGBPRYizm
-DoDLKvbdNwnuzdOU
-DnbkKvbdRMwaxnUz
-EOcLKvbdDihKWXjA
-EObkKvbdFeirOJTq
-DoDLKvbdSKxeuGjs
-EOcLKvbddndsKssr
-DnbjjvbdiCPDEvpq
-EOcKjvbdMoxQumfs
-DnbkKvbdfNGWfljL
-DnbkKvbdIHGzZXwg
-EObjjvbdTlWPAvOi
-DoDLKvbdnPyyVkZC
-EOcKjvbdkWWmdBxX
-EObkKvbdEJgjWXjA
-DnbjjvbdkMalZdgP
-DnbkKvbdsCGNLfjy
-DnbjjvbdYqMeIleR
-DncLKvbdMgComPtk
-DoCkKvbdMfbolouL
-DncKjvbderAvzlDP
-DnbjjvbdqwQLcIyR
-EObjjvbdcImJkFwY
-EPCjjvbdYzberKVy
-DoCjjvbdEzsqElCi
-EObkKvbdRotGiecw
-EPCkKvbdGLErcINV
-DoCkKvbdYpmEiMdq
-DoDKjvbdJXsaglRQ
-DnbkKvbdFVxpPmJe
-DnbkKvbdxUmEpyLn
-EPCjjvbdLrXMytpz
-DnbkKvbdhtzEvqtb
-EPDKjvbdDxYLstTl
-EPCkKvbdiBoDFXQq
-EPCkKvbdZoOJEeZj
-DoCjjvbduDCuWuoP
-EObkKvbdjcLkQfuH
-DoCkKvbdcImKLGWx
-EPDLKvbdEYXlUUTl
-EOcLKvbdZLqdTnMN
-EOcKjvbdmozYujyC
-DncLKvbdJpzEnfOF
-EOcLKvbdiCPCdvpq
-DncKjvbdADRxKZhp
-DoDLKvbdmJDsqVSB
-EObkKvbdnBiwYPOV
-EObkKvbdqwQMDIxq
-DncKjvbdeFOqbWbj
-EPDKjvbdmfeYMmfy
-DnbkKvbdGLFSbhNV
-DoDLKvbdwkXDgzzG
-EObkKvbdbAvFFpQX
-EPDLKvbdyXhjBoyk
-DoCjjvbdMfbpMouL
-DoCjjvbdREDApRES
-DncLKvbdmajWwnmu
-DoDLKvbdIidAJofd
-DoCjjvbdSZihTCvA
-DoCkKvbduLwvaUBX
-EPCkKvbdiHJbyVjV
-EObkKvbdGYtuAdXb
-DoDLKvbdCTBCtFwS
-EOcLKvbdhlFENtby
-DoCkKvbdySnIlrBg
-EPDLKvbdwuNFQyMO
-DncKjvbdlqxtzTDi
-DoDKjvbdWWhxWEFH
-DoCkKvbdiHJcZVjV
-EPDKjvbdCflGHAzc
-DncLKvbdzROmJKXA
-EPDLKvbdCJLBjhej
-EOcKjvbdVrNwbEkc
-DnbkKvbdUtNUFlWK
-DoDKjvbdLBKflbYR
-EPCjjvbdauBfwkTh
-EPCkKvbdrXQMDJZR
-DnbjjvbdnVUyjjSG
-DncKjvbdiMEdOUby
-DoDKjvbdqiAKFNPF
-EOcLKvbdQdDBQQcr
-DoDKjvbdpxnggQdY
-DncKjvbdtSrTYydc
-DnbjjvbdwzHefXeS
-DoCjjvbdRosfjGEX
-EPCkKvbdnPyxujyC
-EObjjvbdZyEJnCkr
-DnbkKvbdhytelRNf
-EPDLKvbdeYZstSFz
-EObjjvbdTfzmlXVe
-EOcKjvbdbKkenmcA
-DncLKvbdvwMAuaVu
-EObkKvbdwMvAMdEm
-EOcLKvbdkHflFfNk
-EPCjjvbdzoPpeDMY
-DoCjjvbdiLeDmuCy
-EOcKjvbdRpUGjGDw
-DnbkKvbdUslsekuj
-EPCjjvbdmJEURVRa
-DncLKvbdZjSgofaf
-EOcLKvbdaMjasUlg
-DoCjjvbdREDBPpdS
-DnbjjvbdIwsaglQp
-DoCkKvbdkNCLzFHP
-DoDLKvbdaRfChUFk
-EPCjjvbdrRtjnKaN
-EPCkKvbduoTzpkOt
-EOcKjvbdnHFYMmfy
-EOcKjvbdHDkVjBjK
-EObjjvbdEXxMTssl
-DnbjjvbdNPxRWOHT
-EObjjvbdiZtfLpmf
-EObjjvbdTvLojTaR
-DoDKjvbdKkBIWAKZ
-DoDLKvbduCbtwVno
-DncLKvbdmttzKjSG
-DncLKvbdbBVdfQQX
-EObkKvbdyXiKBpZk
-DncLKvbdzGxlAMdw
-DoCkKvbdMpXpvNfs
-DoCkKvbdKQydoGOF
-EPDLKvbdTfzmlXVe
-EPDKjvbdQccBPqES
-EPCjjvbdZtJIyESn
-DoCjjvbdVrOXbElD
-DnbjjvbdbLMGOmcA
-DnbkKvbdnPzZWKyC
-EPDLKvbdmajWwoOV
-EObjjvbdQwOEDMHc
-EPCkKvbdTvMQKUBR
-DoCjjvbdOTUVgEtp
-DoCkKvbdIHHZyXxH
-EPDLKvbdDoDLKwDE
-EObjjvbdiZtfMQmf
-EObjjvbdijGHimXr
-DoDKjvbdVrNxCElD
-EPDLKvbdJutedFGi
-DnbjjvbdmSZVZsEJ
-DncKjvbdqlzKYlIJ
-EOcKjvbdfelZnGgA
-EOcKjvbdYlRctOLm
-DoDKjvbdPxmAHSrK
-EPCjjvbdWWiYWEEg
-DoCjjvbdbAvFFoow
-EOcKjvbdFjeSbglu
-EPDLKvbdlqyVZsEJ
-EOcKjvbdddoRbXDK
-EPCkKvbdaRecHtFk
-DncLKvbdSKyGUgKs
-DoDLKvbdcyyPwyQb
-DoDLKvbdnVUzKjRf
-EObjjvbdYkqdUOLm
-EObkKvbdRbEEkhyL
-DncKjvbdtAHQhAAr
-DnbkKvbdVqmwbFMD
-EOcLKvbdznoqFDLx
-EOcLKvbdEXxLtTsl
-DnbkKvbdtumwipsA
-EObjjvbdmJEUQtqa
-DncKjvbdxwhjCPyk
-DnbkKvbdyfyMANFX
-DncLKvbdiVZeXRtb
-EObkKvbddtAUATMv
-EOcKjvbdxnSgwriD
-EObjjvbdlrZVZrdJ
-EPCkKvbdsBelkfkZ
-DoDKjvbdFVyPomJe
-EPCkKvbdQmYBxnUz
-EOcKjvbdSBdFLhyL
-DncLKvbdmJETpuSB
-DoDLKvbdRECaPpcr
-DncLKvbdIxUBglRQ
-DoCjjvbdpssfrSLU
-DnbkKvbdSQUHJedX
-EObjjvbdkySrTZHU
-EObkKvbdZtIiZETO
-DoCjjvbdtumwipsA
-DoCjjvbddBrlrAUN
-EPCjjvbdKCjDQibx
-DoCjjvbdQccAopdS
-DoDLKvbdSBceLiYk
-EPDKjvbdREDAoqDr
-EOcKjvbdZQleJMeR
-DoCkKvbdEARiMywX
-EPDKjvbdkDLkQgUg
-DncLKvbdFjdsDIMu
-EPCjjvbdlrYtysDi
-EPCkKvbdezuxeIsw
-EObkKvbdyNsHxTJD
-DnbkKvbdemGWgMik
-DoDLKvbdBhkCKhej
-EOcLKvbdjvWmcaww
-EPDLKvbdqTsgRrLU
-EObkKvbdZyDimcLr
-EPCjjvbdlrYtzTEJ
-DoCkKvbdHgGyyYXg
-DoCkKvbdZoNhddyj
-EPDKjvbdhtzFWquC
-EPCkKvbdDoCkKwDE
-DoDLKvbdsrqsZZeD
-EPCkKvbdiHJbxuiu
-DoCjjvbdhlFEOUcZ
-EPDKjvbdDigiuwjA
-EPDKjvbdQdDBPqES
-DoCjjvbdcTCjsdKB
-DncLKvbdUsmUFkuj
-EPDLKvbdnHEwlnGy
-EOcLKvbdxVNEqYkn
-DoDKjvbdEuxopNJe
-EObkKvbdkClLQfuH
-EPCjjvbdcTDLUEKB
-EOcKjvbdEPDKkXDE
-EPCjjvbdXsLaNUOx
-DoDKjvbdFWZQQNKF
-EPDLKvbdUtMtFlVj
-EOcKjvbdzaAPGfal
-DnbkKvbdHlBznXRL
-DoDLKvbdTlVoBWPJ
-EPCkKvbdDoCjkXDE
-EOcKjvbdrzMQTAhO
-EOcLKvbdozmdLXoA
-DoDLKvbdzQnmIjXA
-DoCkKvbdmgExMmgZ
-EPCkKvbdzjUoocrt
-EOcLKvbdwyhGFweS
-EOcLKvbdWWhxVceH
-DncLKvbdqqtkOKaN
-DoCkKvbdOTTvHEuQ
-DoDLKvbdjJehKMwr
-DoCjjvbduDCtvuoP
-DnbjjvbdqdEiPmvB
-DnbjjvbdhtzEwRuC
-DnbkKvbdRkYetfkT
-DoDKjvbdCDpBVjNG
-DoCkKvbdcSbjscjB
-EPDLKvbdYpldiMdq
-DoCjjvbdaaWEfPow
-EOcKjvbdqZPHgQdY
-DoCkKvbdeOdrjtUS
-DoDLKvbdFaPRZJzm
-DnbjjvbdRECaPqES
-DncKjvbdaMjaruMg
-EObjjvbduVnYJpsA
-DnbkKvbdqTsfrSLU
-DncKjvbdYqMeJMdq
-EOcKjvbdvvlBWAuu
-DnbjjvbdUxgtZkOn
-EOcKjvbdOSsufduQ
-EOcLKvbdtumxJqTA
-DncKjvbdIryAsNXl
-DoDKjvbdMuTRkNAX
-DoDLKvbdxnSgwrhc
-EOcKjvbdiHKCxujV
-EObkKvbdeKJrVtzn
-EPDLKvbdjhHMGGNk
-EOcLKvbdkVwNdBww
-EOcLKvbdygZMANEw
-EPDLKvbdRXODcLhD
-EPCjjvbdSPsfjFcw
-DoDKjvbdYpleIldq
-DoDLKvbdOEcsiIjd
-DnbjjvbdddoRavbj
-DncLKvbdHDkWKBjK
-DoCjjvbdxxJKBoyk
-EPDKjvbdYkqdUNkm
-DoDLKvbdDnbjjvcE
-DoCkKvbdVvhxVceH
-EPDLKvbdWRnXbFMD
-EObkKvbdliEUQtqa
-EPCkKvbdNQXqVmfs
-EOcLKvbdIGfyyYYH
-DncKjvbdxUldpxlO
-DoDKjvbdznopdcLx
-DncKjvbdHDkVibKK
-EPDLKvbdjlbLydgP
-DoDKjvbdYTMAltOx
-DoDKjvbdcSbkUEKB
-EPCjjvbdzoQREblY
-EOcKjvbdZxcinDMS
-DoDKjvbdZyDjODMS
-DoCjjvbdxZgfFwdr
-EPDLKvbdaMkBsVMg
-EPCkKvbduDDUvuno
-DncKjvbdsCFmLgKy
-DoDLKvbddeOrCWcK
-DncLKvbdNddThhjd
-EOcKjvbdBvzcheQW
-EPDLKvbdeEnqbXCj
-DoCjjvbdNrtVfduQ
-EOcKjvbdZQmEiNFR
-EPCkKvbdGFjSNiTq
-EPDKjvbdZxcinCkr
-DoCjjvbdkNBlZdgP
-DoCkKvbdEYXkstTl
-DncLKvbdYpmEhmEq
-EOcLKvbdePFSkTsr
-DoCjjvbdemFvfmKL
-DnbkKvbdemFwGljL
-EPDLKvbdmbJvxOnV
-EPCjjvbdtbcVXVoP
-EOcKjvbdFkErcHmV
-DoDKjvbdVUMtFlWK
-EOcLKvbdkMakydfo
-DnbjjvbdIMBznWqL
-EObkKvbdptUHRrLU
-DnbkKvbdjJfHilwr
-EPCjjvbdGYuUaDxC
-EObjjvbdmtuZjjRf
-DncLKvbdkCkkQfuH
-DoDLKvbdtlXwBUBX
-DncLKvbdCWzchePv
-EObkKvbdrEEiPmua
-EOcLKvbdYqNFIldq
-DoDLKvbdfILWRnQg
-DoDLKvbdqUUGrRkU
-DoCjjvbdfMfWflik
-EOcLKvbdOTTugEuQ
-DncLKvbdjvWnDaww
-EOcLKvbdsPuoKDVf
-EPDLKvbdZirhPfaf
-DoCjjvbdDwxLsstM
-DnbjjvbdfHkWRmpg
-DncLKvbdrpWOibuf
-EPDLKvbdZtIhyESn
-DncLKvbdwygfGYEr
-EPCjjvbdeEoSCWcK
-EPCjjvbdjuvmdBww
-EObjjvbdqUTfqqjt
-EOcLKvbdZjSgogBf
-DoDKjvbdYqMdiMeR
-DoCjjvbdKefICApu
-DoDLKvbdMfcQNQVL
-EPCkKvbdjggMGGNk
-EObkKvbdCDoaVjMf
-EObkKvbdWWiXuceH
-EOcLKvbdURROuVHm
-DnbjjvbdpssfrSLU
-DncKjvbdgFkzNgHA
-DnbjjvbdaSFbgtFk
-DncLKvbdIxTahMQp
-EPDLKvbdKWVFceGi
-DncKjvbdFVyPomKF
-DoDKjvbdZirgpHBf
-EObjjvbdVqmwadkc
-EPCkKvbdieLHVPAO
-DncKjvbdZLqdUOMN
-DoDKjvbdWWiYWDeH
-EObkKvbdQwNdClID
-DnbjjvbdMoxRVnGs
-DncLKvbdrDdiPmvB
-DnbjjvbdZQleJNFR
-EOcLKvbdrDdhpOVa
-EPDLKvbdYqNFImFR
-DoDKjvbdEYXlTtUM
-DoCjjvbdhuZeWqtb
-EPDKjvbdMfcPlpVL
-EOcKjvbdNQYQvNfs
-DoDKjvbdiUzFXSVC
-DoCkKvbdmRxtzSci
-DnbjjvbdbiMikGXY
-DoCjjvbdQdDBQQdS
-EObjjvbdqZPIGqDx
-DoCkKvbdkWWmdBxX
-DoDKjvbdKxpirzuG
-DoCjjvbdlBNPNALA
-DoCjjvbdhzVGMROG
-DoCjjvbdzoQREcMY
-EPDKjvbdlAlnmALA
-EPDLKvbdwuMeRZLn
-EOcLKvbdYqMdiNFR
-EObkKvbdOTTugEuQ
-EOcKjvbdYTMAmUOx
-DnbjjvbdRDcBQRES
-DoDLKvbdidkHVPAO
-EPCkKvbdSKyFtfjs
-DoCjjvbdhytelQmf
-DncLKvbdEztRElCi
-EPDLKvbdRWnEDLgc
-DoDKjvbdwuNFQyLn
-EObkKvbdGLFTDHmV
-DnbkKvbdShyiqABM
-EObkKvbdUaCQsRSZ
-EOcKjvbdjuwNcbXw
-DnbkKvbdmfeXlnHZ
-DncKjvbdsPuoKDVf
-EOcKjvbdNGbomPtk
-DoDKjvbdvPTzpkOt
-EPDKjvbdJqZdneme
-DncKjvbdqTtGqqkU
-DnbkKvbdjggLeemk
-DoCjjvbdVZIUZkOn
-EPCkKvbdzjVPodTU
-DncKjvbdnBjXYOnV
-DoDKjvbdHgGzYxYH
-EPCkKvbdSZigsCvA
-EPCjjvbdtbbtvuno
-DoDKjvbdPIAXyAZB
-EObjjvbdRNXaxmtz
-DoCkKvbdUyITykPO
-EPCkKvbdssRryZeD
-EObkKvbdJuuGEFGi
-DoDLKvbdxZgfGXeS
-EObjjvbduoTzqLOt
-DoDKjvbdbrbkTcjB
-DncLKvbdxxIiaoyk
-DoCjjvbdFxtuBDxC
-EPDLKvbdzaAPGgBl
-EPDLKvbdpxnhGqDx
-EOcKjvbdtSqsZZeD
-EOcLKvbdMowpvOGs
-EObkKvbdVBCRSpqy
-DoCkKvbdZRNEiMeR
-EPCjjvbdczYowyQb
-DncKjvbdjgfkfGNk
-DnbkKvbdssSTYzFD
-EOcLKvbdVhYWYGxz
-DncKjvbdKDJcQibx
-DncKjvbdZHWdAPTJ
-EPCkKvbdFjdsChNV
-DoDLKvbdJcJcRJcY
-EPCjjvbdRjyGVHLT
-DnbkKvbdBcpBWKMf
-DoCjjvbdxUmEpyMO
-EPDKjvbdZoNiFEzK
-DoCjjvbdPIAYZAZB
-EOcLKvbdFejSOIsq
-DoDKjvbdjggMGFmk
-EObkKvbdWRnXadlD
-EObkKvbdnGdxMmfy
-DoDLKvbdLBKgNBxR
-DoCjjvbdaSGChTek
-EPCkKvbdSCEElIxk
-EObjjvbdIxTbHlQp
-EPCkKvbdOEcshhkE
-EOcLKvbdbsCjsdKB
-DncLKvbdCSaDUGXS
-EPCjjvbdRzJgsDWA
-EPDLKvbduCbuXVno
-EOcLKvbdGdLViajK
-DncKjvbdCWzdJEpW
-DncKjvbdjuwODbXw
-DncLKvbdqUTfqqjt
-EOcKjvbdxUmFRYkn
-DoCjjvbdVAaqSqRy
-EPDLKvbdaMkBsUlg
-EOcKjvbdGLFTCgmV
-EPCkKvbdZeYGzgiC
-DoCjjvbdwXLaWBVu
-DoCjjvbdelevgMik
-EPDKjvbdkHgMGGOL
-DoCjjvbdcJMjKewY
-EOcLKvbdwzHfGYEr
-DncLKvbdlZTRryGt
-EOcLKvbdfVzwoizs
-EPDKjvbdhzUelRNf
-EPCkKvbdiHKCxvKV
-EOcKjvbdGFjRmhtR
-EPDLKvbdGLEsChNV
-DoDKjvbdYORAXuWU
-DnbjjvbdpstHSSKt
-EObkKvbdegkVqmpg
-EPDLKvbdhyuGMQmf
-EObkKvbdliDtQtqa
-DoCkKvbdfNGXGlik
-DoCkKvbdHfgZyXwg
-DoCjjvbddndsKssr
-EPCjjvbdZMSDsnLm
-EObkKvbdEXxMTstM
-EPDKjvbdJvUecdfi
-DnbkKvbdVUMsekuj
-EPCjjvbdPyNAGsSK
-DoCjjvbdMSWmZuQz
-EObkKvbdBcpBVjNG
-DnbjjvbdezuxdiUX
-EPCjjvbdBdQAvJlf
-DncKjvbdOTUWHFVQ
-DoDKjvbdaSGDIUFk
-EOcKjvbdUGzmlWvF
-EOcLKvbdjlakydfo
-DoCkKvbdWSOXaeLc
-DoDKjvbdznpRFDLx
-DoCkKvbdwtldpxlO
-DoDLKvbdGdLVjBjK
-EObjjvbdmttykKSG
-DoDKjvbdZjShQGaf
-DoDKjvbdrDdhomvB
-EPDLKvbdiUyeXSVC
-DncKjvbdIsYaSmXl
-DnbjjvbdVhXvYHYz
-EPDKjvbdwzHfGXdr
-EOcKjvbdxsOJMqbH
-DoCjjvbdehKuqmqH
-EPCjjvbdZdxGzhJC
-EOcKjvbdsCGMlHLZ
-DoCjjvbdOEcshhkE
-DoCjjvbdEzsqElDJ
-DncLKvbdURRPVVIN
-EPCkKvbdZoOJFEzK
-DnbjjvbdBiKajhfK
-EOcLKvbdbUafwkTh
-EOcLKvbdVZHszKoO
-DnbkKvbdGKdsDIMu
-DnbkKvbddoFSkUUS
-DnbjjvbdPxmAGrqj
-EPCjjvbdKNADzHVB
-EPCjjvbdcyxpXxqC
-DnbkKvbdLBLGmBxR
-EPDKjvbdFWYopNJe
-EPCkKvbdcJNKKewY
-DoCjjvbdGLErcHmV
-EPCjjvbdWXIxWDdg
-DnbkKvbdQvmcbkhD
-EOcLKvbdbVCGwjtI
-DoCjjvbdmgFYMmfy
-EPDLKvbdQdDApRES
-DnbkKvbdWWhwvEFH
-DnbjjvbdxZhFexFS
-EPCkKvbdCIjakJGK
-EPCkKvbdKQyeOfOF
-DncKjvbdEObjkXDE
-DnbjjvbdNGcPlotk
-DoCjjvbdVUMtGMVj
-EPDLKvbdelfWgNKL
-DnbkKvbdqwPlDJZR
-DncLKvbdbiMikFwY
-EObkKvbdkNBkzEgP
-DoCkKvbdmuUyjiqf
-DncKjvbddneSjtTr
-EPCkKvbdRkZFtgLT
-EObkKvbdRjyGUgLT
-EPCkKvbdKaKgMaxR
-DnbkKvbdZMRdTnMN
-EPCkKvbdqZOhGpcx
-EPCkKvbdxwhjBozL
-DncKjvbdGckViajK
-EPCkKvbdiifHilxS
-EOcLKvbdqUUGrRjt
-EPCjjvbdbhljLGWx
-DnbkKvbdhgKCxujV
-DoDLKvbdJSyAsNXl
-DoDLKvbdjgflFenL
-EPCkKvbdMJBlQxAS
-DncLKvbdUMVoAvPJ
-DoCkKvbdkCkjpgVH
-EPDKjvbdqGEEsvAh
-EObkKvbdmRxuZrci
-EObjjvbdNdctIhjd
-EPCkKvbdCSaDTevr
-EPCjjvbdRDcAopcr
-EObkKvbdwtmEpyMO
-EOcKjvbdqZPHfqDx
-EOcLKvbdaNKbStmH
-EOcLKvbdaSFcHsfL
-DnbkKvbdRosgJecw
-EObkKvbdkySrSyGt
-EOcLKvbdwuMdqYkn
-EPCjjvbdrDdhonWB
-EPCkKvbdiBoDEwRR
-EPCkKvbdEztQdlCi
-EObkKvbdFyUuBEXb
-EPDKjvbdOAIsUJrA
-EPDKjvbdKCicRKCx
-EObjjvbdSZihSbvA
-DncLKvbdvAdYsPEh
-DncKjvbdySnImSCH
-EObkKvbdiVZeXRtb
-EOcKjvbdsCFllHLZ
-EPDKjvbdZeXfzgiC
-DnbjjvbdMpXpvNgT
-DoDLKvbdsCFllHKy
-DoCkKvbdqYoHfpdY
-DnbjjvbdRzKHrbvA
-EOcKjvbdNHComPtk
-EOcLKvbdCJLBjiGK
-EPDLKvbdsZlPsAhO
-DnbkKvbdemFvgMik
-DoCjjvbdFyUuBDwb
-DnbjjvbdrafMlGkZ
-DncKjvbddZyPxYpb
-EObjjvbdxZhGFwdr
-EPCkKvbdEXwlTssl
-DnbkKvbdANIYrvyx
-EObjjvbddePRawCj
-EPDKjvbdyNsIXrhc
-EPCkKvbdhkeEOVDZ
-DoDLKvbdAMgxrwZx
-EPDLKvbdsQWPJbvG
-DoCkKvbdkVvmcbXw
-EPDKjvbdJYTbIMQp
-DncLKvbdBsAcTewS
-DncLKvbdxrnJNRag
-EOcLKvbdmSYtzSdJ
-EObkKvbdqdFJQNua
-DoCjjvbdZyEKOCkr
-DoCkKvbdZLrEUOLm
-EPCkKvbdRNXaxnUz
-EPDLKvbdnUuZjjRf
-EObkKvbdmbKXYOmu
-DnbkKvbdlZTSTYgU
-EPDKjvbdGYuUaDxC
-DncLKvbdFyVVAcxC
-DoDKjvbdEvZPpMjF
-EPDLKvbdSwjlNzjx
-EPCjjvbdbKkeoNcA
-DoCkKvbdMfcQMotk
-DnbkKvbdyTNiNRbH
-DncLKvbdFWYpQMjF
-EPCkKvbdEvYopMjF
-DncKjvbdeKJrWUzn
-EOcKjvbdpssfrSLU
-EObjjvbdKCjDRJbx
-DnbkKvbdeUAUATMv
-EPDLKvbdjKGIJlxS
-DnbkKvbdpssfqrLU
-EPDKjvbdqZPHgQdY
-EPDLKvbdeAURNXif
-DoCjjvbdypoMhiwA
-EPDLKvbdGYtuAdXb
-EObkKvbdRaceLiYk
-DoCjjvbdXsMBNTnx
-EOcLKvbdKCjCqKCx
-DoCjjvbdYSlAmUPY
-EPDLKvbdpstGrSKt
-EPDKjvbdhtyeXRuC
-EObjjvbdtlYXBUBX
-EObjjvbdRMxByNtz
-EObjjvbdhanbeWqR
-EOcKjvbdpyPIHQcx
-EPDLKvbdrRtjnLBN
-DoDKjvbdNQYQvNgT
-DnbjjvbdbsDKsdJa
-DnbjjvbdDxYMTssl
-EPDLKvbdnCKWxOmu
-DncKjvbdILazmwQk
-DoDKjvbdhgJcYuiu
-DoCjjvbdlYrrSyHU
-EOcKjvbdVUNUFkvK
-EObjjvbdRyjHrbvA
-DoDLKvbdDnbkKvbd
-EOcKjvbdaNKbStmH
-DnbkKvbdjblLRGtg
-DncKjvbdxUleQyLn
-EPDKjvbdLGFhBaQu
-EObkKvbdqmZiyLgi
-DoCjjvbdJuuGEFGi
-EPDKjvbdqmZixlIJ
-DoCjjvbdXnRAYVVt
-EOcLKvbdWIYVxGxz
-EPCkKvbdxZgfGYEr
-EPDKjvbdfNGWfmKL
-EPDKjvbdbrbjscjB
-DoDKjvbdsPunjCvG
-DoDKjvbdziuQQDsU
-DoDLKvbdbhlijfWx
-EPCkKvbdhgKCyWKV
-EPDLKvbdGLEsCgmV
-EOcKjvbdmIcspuSB
-EPDKjvbdIwsbILqQ
-DoDLKvbdpedEsvBI
-DncLKvbdsPunjDVf
-DncLKvbdIxTbHkqQ
-DncLKvbdcSbkTdJa
-DncKjvbdUWLpJsaR
-DnbkKvbdsQVnjCvG
-EPDKjvbdyXiJapZk
-EPCkKvbdrzLosAgn
-DncLKvbdNsTugEuQ
-DoDLKvbdrykoraHn
-EObjjvbduaDySoFI
-DncKjvbdZHWdAOri
-EPCjjvbdlqxtysEJ
-DnbkKvbdOSsvHEtp
-DoDKjvbdRotGjGDw
-DoDKjvbdYfvdAOsJ
-DoCkKvbdBhjajiGK
-EObjjvbdCgLegAzc
-DoDLKvbdhtyeWrVC
-EOcKjvbdzitoocrt
-EOcKjvbdNVTSKmAX
-EPCjjvbdVYgsyjnn
-EObkKvbdliEUQuRa
-DoCkKvbdqFceUWAh
-EPDKjvbdIsZAsMxM
-DnbkKvbdUVlPjUBR
-DoDKjvbdbUafwjsh
-EObjjvbdQlxCZOUz
-DoCkKvbdQvnEDLhD
-EOcKjvbdUVlQKUBR
-EPDKjvbdehKvRnQg
-DoDLKvbdxmsIYTIc
-EObjjvbdsCGNLfkZ
-EObjjvbdmSYtzSdJ
-DoCjjvbdiMEcnVDZ
-EPCjjvbdypnlhiwA
-DoCjjvbdRyihTDWA
-DoCjjvbdZoOJEdzK
-DoCjjvbdJpzEoGOF
-DoCkKvbdYpmEiMeR
-EPCkKvbdbhljKfWx
-EPDLKvbdqYnggQcx
-EOcLKvbdwjwEHzyf
-EPCjjvbdLFegbAqV
-DoCjjvbdMoxQvNgT
-EPCjjvbdZsiIyETO
-DoDLKvbdZQmFImEq
-DnbjjvbdYkrDtOMN
-EPCjjvbdjggMGGOL
-DncLKvbdDwwlTstM
-EOcKjvbdCWzciFQW
-DoCkKvbdyYIiaozL
-DnbkKvbdNsTufeVQ
-DoDKjvbdjlakydfo
-EObjjvbdUGznLvue
-DoCjjvbdeFOqawDK
-DoCjjvbdZnmiFEyj
-EOcKjvbdVBCQrprZ
-EOcLKvbdrovOjCvG
-DncKjvbdrovPKCuf
-EOcLKvbdlYrqryHU
-EObkKvbdcyyPxZQb
-EObjjvbdnBivwnnV
-EObjjvbdjJehJlwr
-DnbkKvbdOFDtJIjd
-DnbjjvbdVAaqSqSZ
-EObkKvbdrXPkbiZR
-DoCjjvbdzaAPGfal
-DncKjvbdZQldhmEq
-EObjjvbdmoyxvLZC
-DnbkKvbdmpZxujyC
-DoCjjvbdvwLaWBWV
-DncLKvbdiVZdvquC
-DnbjjvbderBWzlDP
-EPCjjvbdjbkjpfuH
-DncLKvbdrafNLfkZ
-DncKjvbdrWokbhxq
-EPCkKvbdsZkosBHn
-EOcKjvbdidjfuPAO
-DnbjjvbdNGcPmQUk
-EPCjjvbdrJAKFNOe
-DnbjjvbdTukoitBR
-DnbkKvbdySmhlrCH
-EObkKvbdrXPkcIxq
-EOcLKvbdFejSOItR
-EObkKvbdmgExMnGy
-EPDKjvbdqrVLOLBN
-DoDKjvbdLAkHNCYR
-EObkKvbdVrOXbEkc
-DnbjjvbdEXwlUTsl
-EPCkKvbdyXhjBpZk
-EObkKvbdiifHjMxS
-EOcKjvbdEKHiuxKA
-EObkKvbdZLqdTmlN
-EObkKvbdWRnXaeLc
-DnbjjvbdWSNwaeMD
-DnbjjvbdfNGWgNKL
-DoDKjvbdoAKztIDn
-DncLKvbdmaivxOmu
-DnbjjvbdZLqcsnMN
-EObjjvbdcTDKscia
-EPCjjvbdOTTufeUp
-DoDKjvbdGdLVjBjK
-DncKjvbdcJNKLFvx
-EOcLKvbdTYKkmzjx
-EOcKjvbdZRMeImEq
-DoDLKvbdKQyePFnF
-DnbkKvbdNrtWGduQ
-EPCjjvbdatbHXjtI
-EPCjjvbdvwMAuaVu
-EPDLKvbdnQZxvLZC
-EObjjvbdtlYXAsaX
-DnbkKvbduDDVWvPP
-EPDLKvbdqTtGrSKt
-EObjjvbdxnSgwsJD
-EObjjvbdbKkenmcA
-EPCkKvbdFaOqYizm
-EOcKjvbdLGGHbBRV
-DoDLKvbdRzJhTCvA
-EPCjjvbdiMFDmtcZ
-DnbjjvbdWWhwvEEg
-EPCjjvbdJmAEZgVB
-DoCjjvbdmuVZjirG
-DoCjjvbdliEURUqa
-DoDLKvbdnCKWwnnV
-EPDLKvbdhgJbyViu
-DnbkKvbdjggMFfNk
-EObkKvbdEuxopMie
-EPDKjvbdssRsYydc
-DncLKvbdliDsqVRa
-EOcLKvbdLBKflbYR
-DncKjvbdzoPpeClY
-DncKjvbdqFdEsvBI
-DoCjjvbdZMRctOMN
-DncKjvbdDnbkLWcE
-EObkKvbdMfcQNPuL
-DoDKjvbdUWMPjTaR
-DnbjjvbdxmsHwsIc
-EObkKvbdrDdhonWB
-EPCkKvbdhgJcYvJu
-DoCkKvbdlYsSSyHU
-EPCjjvbdNdcsiJLE
-DoDKjvbdhlEcmuCy
-EObjjvbdJTZAsNXl
-EPCjjvbdznpQeClY
-DncLKvbdDxYMTssl
-DoCjjvbdkVwNcbXw
-EOcLKvbdMgDPlpUk
-EObkKvbdXsMAlsnx
-DnbkKvbdiBncEvqR
-EPCjjvbdeFPSCWcK
-DoDKjvbdmuUzKjSG
-EPDKjvbdqrUkNjaN
-DoDKjvbdhyuFlQnG
-EOcKjvbdDigivYKA
-DoDLKvbdJYUCHkqQ
-DncKjvbdACqwiyiQ
-EPDKjvbdEYXkstUM
-DoDLKvbdKDKCpicY
-DncLKvbdCDoaVjNG
-EObkKvbdxZhFexFS
-EPCkKvbdKDJcQjCx
-DoDLKvbdEPCkKwCd
-EPCkKvbdTfzmkwVe
-DnbjjvbduWOYJqTA
-DoCjjvbdcJMijfXY
-EPCkKvbdmaiwYPOV
-EOcKjvbddjJrVtzn
-EObkKvbdpstHSRjt
-EOcKjvbdyXiKCQZk
-DnbkKvbdIsYaSmYM
-DnbjjvbdwtmFQxlO
-DnbkKvbdYpleJMdq
-DoCjjvbdkNBkzFGo
-EOcKjvbdbsCkUEKB
-DoDKjvbdYlRctOMN
-DnbkKvbdjuwOECXw
-EPDKjvbdWRnXaeMD
-DncLKvbdkDLkQgVH
-DoDLKvbdFeiqnJTq
-EOcKjvbdzHYlAMeX
-EPCjjvbdJbjCpjDY
-EPDLKvbdzitopDsU
-DnbkKvbdziuPpDrt
-DncLKvbdySnImSCH
-DnbjjvbdySnImRbH
-DoCjjvbdKjaIWAJy
-DnbjjvbdTqRPUthN
-DoCjjvbdURQntuIN
-EObjjvbdQlxCYmtz
-EPDKjvbdMtsSLNAX
-EObjjvbdJbjDQicY
-DoDKjvbdEPCkKwDE
-EObkKvbdKQydoGNe
-DoDLKvbdVwJXuceH
-EObjjvbdnUtykJrG
-DncLKvbdwMvANEEm
-EPDKjvbdpyPHgQdY
-DnbjjvbdUVkpKUBR
-EOcLKvbdhfjCyVjV
-EPDKjvbddoFTKstS
-EPCkKvbdANHyTXZx
-EPCkKvbdUxhTyjoO
-EObjjvbdkVwNdBxX
-EPDKjvbdDoCjjvbd
-DnbkKvbdWWhwudEg
-DnbkKvbdyTNiMrCH
-DoDLKvbdelewGljL
-DncLKvbdUGznMWue
-DncKjvbdwygfFwdr
-EPCkKvbdJqZePFnF
-DnbjjvbdNsTugEuQ
-DoDKjvbdQcbaPqDr
-DncLKvbdfMevgNJk
-DncLKvbdlrZVZrdJ
-DoCjjvbdFjeTCglu
-DnbjjvbdYqNFImEq
-DoCjjvbdsCGMkfkZ
-DncLKvbdhuZdwSUb
-DoCkKvbdrXPkbiZR
-DoCjjvbdZRMdiMdq
-DoDKjvbdemFvgMjL
-DoCjjvbdygZMANEw
-EOcKjvbdZRMeIldq
-EObkKvbdiHJcZWKV
-DncKjvbdCJKbKiFj
-EObjjvbdzROlhjXA
-DnbjjvbdDoDLKvbd
-EPDLKvbdVYgtZjnn
-EObkKvbdDoCjjwDE
-DnbkKvbdrouoJbuf
-DoCkKvbdyTOImRag
-EPDKjvbdBcpBVilf
-DoCjjvbdCWzdJFQW
-EPCkKvbdbrbjscjB
-EOcLKvbdwkWdHzzG
-EPDKjvbdnGeXlnGy
-EPCkKvbdznpREcLx
-EPCkKvbdZMRcsnLm
-EOcKjvbdJSyArmXl
-DnbkKvbdZMSDtNkm
-EPDKjvbdAMgySvzY
-DoDLKvbdyYJJbPzL
-DoCkKvbdLAjgMaxR
-DoDLKvbdWIXuxGxz
-DoCjjvbdqwQLbiYq
-DnbkKvbdpyPIHQcx
-EOcKjvbdfNGXHNJk
-DncKjvbdqYnhHQdY
-DncKjvbdeEnrBvcK
-EPDKjvbdZjTHpGaf
-DoDLKvbduoTzqLPU
-DnbkKvbdIjEAJofd
-DnbkKvbdxnSgxTJD
-DoDLKvbdXsLaMsnx
-DnbjjvbdaRfDHsek
-DoCkKvbduLwwAtBX
-DnbkKvbdrpWPJcVf
-DoDKjvbdrbFlkgLZ
-DoCkKvbdlqxtyrdJ
-EObkKvbdRyihSbvA
-EObkKvbdWRnYCFLc
-DoCkKvbdOEcshhjd
-DnbkKvbdZjTHpHBf
-DnbjjvbdcyyPwxpb
-DncLKvbdkVvmdCXw
-DncLKvbdcScKtEJa
-DnbjjvbdrSVLOLBN
-EObkKvbdiGjDYvKV
-EPCkKvbdEJgjVwjA
-DnbkKvbdRosgKFdX
-EPDLKvbdcScKtDia
-DoCjjvbdtbcVXVno
-DncKjvbdhgJbyViu
-EPCjjvbdjJehKNYS
-EObkKvbdyOTIYTJD
-DnbkKvbdRaceMJYk
-DoCkKvbdqiAKEmOe
-DoDLKvbdEKHiuwjA
-EObkKvbdxUldpxkn
-EObkKvbdFejRmhtR
-DncLKvbdSBcdlIyL
-EPCkKvbdxZhFexFS
-EObjjvbdwjwEHzzG
-EPCjjvbdmRxtzSdJ
-EPDLKvbdEvYooljF
-DoCkKvbdmgFXlmfy
-DoCjjvbdtkxXBTaX
-EObkKvbdmgExMnHZ
-DncLKvbdjvXODaww
-DoCkKvbdSCEFMIyL
-EPDKjvbdVYhTykOn
-DoDLKvbdNsUVgFUp
-DncKjvbdRXOEClID
-DoDKjvbdnVVZkKSG
-DoDKjvbdWWhxVcdg
-EPCkKvbdwuNFQxlO
-DncLKvbdKeegbBRV
-DncLKvbdUWLpJsaR
-EOcLKvbdNxOuzcmt
-EObjjvbddwzUUSFz
-DoCjjvbdJXtBhMQp
-DoCkKvbdLGFgbBRV
-EOcLKvbdcJMjKewY
-DnbjjvbdxUmEqYkn
-DnbkKvbdjbkjqGtg
-EPCkKvbdIHGzYwwg
-DnbjjvbdrpWOjCvG
-DoDKjvbdZMRctNkm
-DnbkKvbddZyPwxqC
-DoCjjvbdtcDVWuno
-DoCkKvbdJcKDRJcY
-EOcLKvbdmbKWwnnV
-EPDKjvbdcasNSAUN
-EPCkKvbdUaBpsQqy
-EObkKvbdJutedFHJ
-DoDLKvbdBhjakJFj
-DnbkKvbdnUuZjiqf
-EPDKjvbdpxoHgQcx
-DnbjjvbdZjTHofbG
-EObkKvbdkxsSSxgU
-DnbjjvbdWRmwbElD
-DoCkKvbdRkZFuGjs
-EPCkKvbdwNWANDdm
-EObjjvbdTkvPBVni
-DoDKjvbddndrkTtS
-DncLKvbdZtJIxdSn
-EOcLKvbduaDyTOeI
-EOcKjvbdxZgfGXdr
-EOcLKvbdkySrTZGt
-EPDKjvbdVwJXucdg
-EPDLKvbdatagYLUI
-DoCjjvbddZxpYZQb
-EPDKjvbdtunXjRTA
-DoDLKvbdWSOYBeMD
-DoCjjvbdHlBznXRL
-EPDLKvbdcyxpXxpb
-DnbjjvbdAMhYsWzY
-EObjjvbdraemLgKy
-EPDKjvbdJpzFOenF
-DoCjjvbdZnnIeEyj
-DoCjjvbdrWpLbiZR
-EOcKjvbdLqwMytpz
-DncKjvbdKQzEoFme
-EPDKjvbdZRMeJMeR
-DncKjvbdEuxpPlie
-EOcLKvbdFWYpPlie
-EOcLKvbdjblKpgUg
-EOcLKvbdiBnbdwQq
-DoDLKvbdOTTufeVQ
-EPDKjvbdpyOggQdY
-DnbkKvbdGBOqYizm
-EObjjvbdRjxfUfkT
-EPCjjvbdUMVoAuoJ
-DoDLKvbdVwJXvEEg
-EObkKvbdnCKXXoOV
-DoDKjvbdNPxRVmgT
-DncLKvbdZsiIxdSn
-EPDKjvbdjlalZeHP
-DoDLKvbdeFPSBvbj
-DoDKjvbdVqnXbFMD
-DncKjvbdHffyyYYH
-EOcLKvbdBhjbLJFj
-EPDKjvbdJvVGEFHJ
-EOcKjvbdgQBzvdYI
-EPDLKvbdpyOggRDx
-EObjjvbdKQyeOfNe
-EPCjjvbdtcCtwVno
-EPCjjvbdQvmdClHc
-DnbkKvbdyXiKBoyk
-DncKjvbdqTsgSSLU
-EObjjvbdyNrgxShc
-DnbjjvbdRkZFuGjs
-EObjjvbdYfvdAOri
-DoDKjvbdkMbMZeGo
-EPDLKvbdCIjbLIej
-DoDKjvbdHffyxwwg
-EPCkKvbdGdLVibJj
-DoCkKvbdaaVdepQX
-DnbkKvbdSQUGifDw
-EPCkKvbdqYngfpdY
-DnbkKvbdxUleQyLn
-DoCjjvbdqlyixkgi
-EPCkKvbdjgfkfGNk
-EObjjvbdeFOqavbj
-DoDLKvbdYkrDtNlN
-DoCkKvbdjhGlFenL
-EPCjjvbdijFhJmXr
-EObjjvbdnGeYMmfy
-EOcLKvbdbhmJjfXY
-EOcLKvbdLBKfmCYR
-DncLKvbdJSxaSmXl
-EPCjjvbdsQVnicWG
-DoDKjvbdjhHLfFnL
-EObkKvbdjuwOEBww
-DoCjjvbdiBncEvpq
-EOcLKvbduLxWaUAw
-DncLKvbdhuZdwRtb
-EOcKjvbdjvWnECXw
-EObkKvbdZeYGzghb
-DoDLKvbdNQYQumgT
-DoDKjvbdJpydoFnF
-EPCkKvbdRjyFuGkT
-DnbjjvbdraelkgKy
-EObjjvbdfNGXHMjL
-DoDLKvbduWNwiqTA
-DncKjvbdnVUzLJrG
-DoDLKvbdehKvSOQg
-EPDLKvbdwtmFRYkn
-DoDKjvbdKfFgaaQu
-DncKjvbdCTBDTfXS
-EObjjvbdDoCjjwCd
-EPCjjvbdYTMAmUOx
-EOcKjvbdiMFDnVCy
-EObkKvbdjlalZeHP
-DnbjjvbdCJLCLIfK
-DoDLKvbdZMRdUNkm
-DnbjjvbdURRPVUgm
-EObjjvbdJcJbpibx
-EObkKvbdrWpMDJZR
-EObjjvbdjuwNdBxX
-EPCjjvbdbBVdfQQX
-EPCjjvbdKRZeOfOF
-DoCkKvbdKDKCqKCx
-DoCjjvbdkVvmdBxX
-EPDKjvbdvAdYroEh
-EOcLKvbdtcCuXWPP
-EPCjjvbdczZQXxpb
-DncKjvbdUxhUZkPO
-EObjjvbdlrYtysEJ
-DncLKvbdcScLUDia
-EPDKjvbdBsAbsevr
-DoDLKvbdqTtGqrLU
-DoDKjvbdSCEFLiYk
-EPCjjvbdRWmccLgc
-DncLKvbdNQYQunGs
-EObkKvbdmbKXYPNu
-EPCjjvbdfMewGmKL
-EObjjvbdzROmIiwA
-DnbkKvbdliETptqa
-EPDKjvbdHlBznWpk
-DoCkKvbdUaBpsQqy
-DoCkKvbdWSOYCFMD
-DoDLKvbdxmrhYTIc
-DncLKvbdLAkGlbYR
-DncKjvbdlhctRUqa
-DoCjjvbduDCtwVno
-DnbkKvbdIjEAKQHE
-DnbjjvbdiLddNuCy
-EPDKjvbdEXwktUTl
-EPCjjvbdyNrgwsJD
-EObkKvbdnPzYujxb
-EPDKjvbdznoqEcMY
-EPDKjvbdZRNEhleR
-DoCjjvbdGQATXHFy
-EPCjjvbdyqPNIiwA
-EOcKjvbdkxrrTYgU
-EOcKjvbdcImKLFvx
-DoCkKvbduoTzpkPU
-EPCjjvbdJXtCIMQp
-EOcKjvbdrpVoJbvG
-DncLKvbdqZPIHRDx
-DnbjjvbdTAFJHand
-EOcKjvbdtcCuWuno
-DncLKvbdfIKurNqH
-DncKjvbdLrWmZtpz
-DoDLKvbdMtsRjmAX
-EObjjvbdLGGHbBRV
-EObkKvbdCWzchePv
-EOcKjvbdZxcjODMS
-EObkKvbdzaAPGgBl
-DoDLKvbdKVtecdgJ
-DnbjjvbdHDjvJbJj
-EPCjjvbdLiCLqYAS
-EPDLKvbdFVxpPmKF
-DoDLKvbdZisIPgBf
-DncLKvbdTppoUtgm
-DnbjjvbdpyPIGpdY
-DoDLKvbdEztRElCi
-DncLKvbdHgGzZYYH
-DnbjjvbdZLqctOMN
-DnbkKvbdqTtGqqkU
-DnbjjvbdiMEcnVCy
-EPDKjvbdvBDxrneI
-DoDKjvbdemGXHNJk
-DoDKjvbdhficYvKV
-EObjjvbdegkWSOQg
-DoDLKvbdOFDtIiKd
-EPCjjvbdBdQAuimG
-DoCjjvbdpyPHgREY
-DncKjvbdJXsbHkpp
-DoDKjvbdRbEElIxk
-DoDKjvbdsQWPJcWG
-EObkKvbdsCGNLfkZ
-EOcLKvbdzaAPGgCM
-EObkKvbdzjUoodSt
-DnbkKvbdemFvgMjL
-DnbkKvbdWWhxVcdg
-DncLKvbdxrmiMqag
-EPCkKvbdMSWlytpz
-EObjjvbdwNWAMdFN
-EPDLKvbdlrYtzTEJ
-DnbjjvbdVqnYBeLc
-DncKjvbdnHEwmOGy
-DnbjjvbdtbbuWvPP
-DncKjvbdmIcspuSB
-EObkKvbdEOcKkXCd
-EOcKjvbdDncKkXCd
-EPDLKvbduaDxrndh
-DoCjjvbdOFDshhkE
-DnbkKvbdRaceLhyL
-EPCkKvbdZshhyDrn
-DoCjjvbdCSaDTfWr
-EOcKjvbdqUTfrSLU
-EPDLKvbdtTRryZdc
-DoDLKvbdkyTRsZGt
-EPDKjvbdyqPNIjXA
-DoCkKvbdNUrrKmAX
-DoCjjvbdSCDeMIxk
-EObkKvbdkMbLzEgP
-DncKjvbdEvZPpMie
-DoCkKvbdyYIibQZk
-EObkKvbdNPxQumfs
-EOcLKvbdDncKjvbd
-EPCkKvbdozmcjxPA
-EPDKjvbdCIkCLIfK
-DncKjvbdcyxoxZRC
-DoCkKvbdeOdrkUUS
-DoCjjvbdhzVFlQnG
-EObjjvbdOFETiJLE
-DncKjvbdhyuGLqNf
-EObkKvbdRWmdClID
-DoCjjvbdFpATWgFy
-DnbkKvbdlqxtysDi
-EObjjvbdqmZjYkhJ
-DoDKjvbdZyDjODMS
-DoCjjvbdEJhJvYKA
-EOcKjvbdqTsgRrLU
-EOcKjvbdZsiIxcrn
-EObkKvbdIHGzZYYH
-EPDKjvbdHgGyxxXg
-EObkKvbdxmrgwriD
-EPCkKvbdxrnJNSBg
-DnbkKvbdjhGkefOL
-EPCjjvbdKQydoGNe
-EOcKjvbdqvpMDJZR
-EObjjvbdQdDBQQdS
-DoDKjvbdSKxfVHKs
-DoDKjvbdbLLeoODA
-DoDLKvbdBsAcUGWr
-DoCjjvbdRzKHrbvA
-EObjjvbdfMfXGljL
-EObkKvbddeOrCWbj
-DoDKjvbddjJrVtzn
-DoDLKvbdhtydvqtb
-DnbjjvbdRNXayOUz
-EPDLKvbdRjyFtgKs
-EObkKvbdsPuoKCvG
-EPCkKvbdYqNEiNFR
-DncKjvbdUxgsyjnn
-EPCjjvbdZRMdhldq
-DoDLKvbdEJhKWXjA
-DoCkKvbdQwODblID
-EPCkKvbdssRrxzFD
-DnbjjvbdZxdKOCkr
-EObjjvbduCcUwVno
-EOcKjvbdmuUzLKRf
-EPCjjvbdfpBzvcwh
-DnbjjvbdMowpvNfs
-EPDKjvbdGLErcHmV
-EPDLKvbdZoOIeEyj
-DncLKvbdSLZGUgKs
-DncLKvbdlqyUzTEJ
-EPCjjvbddePRawDK
-DncKjvbdHEKvKCJj
-DoDKjvbdeEnqavcK
-DoDLKvbdtSrTYzFD
-EPDLKvbdxUmFQxlO
-DnbjjvbdLLBIWAJy
-EOcLKvbdMowqWNfs
-EPDKjvbdptUGrSKt
-DoDLKvbdHEKvKCKK
-EPCjjvbdJcJbpjDY
-DnbjjvbdMuTRkNAX
-DnbkKvbdEzspdlDJ
-DncLKvbdVUMsekvK
-EPDKjvbdOTUVgEtp
-DncKjvbdAMgySwZx
-DoCkKvbdwtmFRYkn
-EObjjvbdIjEAKPgE
-EPDKjvbdRpTfjGEX
-DncKjvbdFjeSbglu
-EObkKvbdjFLGtoAO
-DoCkKvbduWOYJqTA
-EPCkKvbdVAapsQrZ
-DnbjjvbdVwJXudEg
-DoDLKvbdUtMsfLvK
-EPCjjvbdHELVjBij
-DncKjvbdRWnECkhD
-EPDLKvbdZsiJZDsO
-DncLKvbdnPzZWLYb
-EPCjjvbdznoqEcMY
-EOcKjvbdzoQQeDMY
-DnbjjvbdznpQdbkx
-EPDKjvbdeYZtTrFz
-DoCkKvbdkySrTZHU
-DncKjvbdCSaDUGXS
-DoCkKvbdcJNJjfXY
-EOcLKvbdCEQAvJlf
-EPDKjvbdyzdmqhJI
-DncLKvbdNPwpvNgT
-DoDKjvbdqmZixkgi
-EOcKjvbdVYhUZkPO
-EObkKvbdhgJbxvJu
-DoDKjvbdUQqPUuHm
-DncLKvbdqvolChyR
-EPCkKvbdEXxMTssl
-DnbkKvbdHgGzYwxH
-DoDLKvbdIidAJpGd
-DnbkKvbdZLqdUOMN
-DnbkKvbdGckViaij
-DoCkKvbdFVxopNJe
-EOcLKvbdRbEFMIyL
-EObkKvbdLAjflawq
-EObjjvbdziuPodTU
-EPDLKvbdQwNdCkhD
-EPCjjvbdZxdJmcLr
-EPDLKvbdxrmhlqag
-DoCkKvbdSPsgJfDw
-EPCjjvbdkDLjpgUg
-DnbjjvbdtbcUwWOo
-DnbkKvbdWIXuxHYz
-EObjjvbdEvYpQMie
-DoDLKvbdIHGzZXxH
-EPDLKvbdVYgszKoO
-DncKjvbdhancEvpq
-EPCjjvbdcJNKKewY
-EPDKjvbdWWhwvEEg
-EOcLKvbdvAdYsOdh
-EObkKvbdcyyPwxqC
-EObjjvbdSPtGifDw
-EOcLKvbdkMalZeHP
-EPDKjvbdYlRctNlN
-DoDLKvbdKWVGEFGi
-DncLKvbdMgColouL
-DncLKvbdhbPCeXRR
-DncLKvbdDwxMTstM
-DoDKjvbdvAcySndh
-EObkKvbdXGYytAPT
-DoCjjvbdmuVZjjRf
-EOcLKvbdDGlFgAzc
-DoDKjvbdiBncFXRR
-DoDKjvbdkaMnmALA
-DncKjvbdVBCQrqSZ
-DoCkKvbdVviYWEFH
-EObkKvbdAMhZSwZx
-DoDLKvbdeAUQlwjG
-DoDLKvbdZxcjODMS
-EOcLKvbdrpWPKDVf
-EPCkKvbdWRnYCFLc
-DnbkKvbdKeehBaRV
-DoDKjvbdMSXMzUpz
-EOcKjvbdRkZGVGjs
-DoDLKvbdFkFScIMu
-DoCjjvbdZjTHogBf
-DnbkKvbdnBivwnmu
-EOcKjvbdCTAcTevr
-EOcKjvbdVviXvDeH
-DoDLKvbdliDsptqa
-EPDLKvbdZirgpGaf
-EPCjjvbdaRfChUFk
-EPCjjvbdkClKqGtg
-DoCjjvbdKQyeOfOF
-EPCkKvbdqvpLbiYq
-DnbjjvbdCTBDTfXS
-DoCjjvbdOEctIhkE
-EObjjvbdbVCHXkUI
-DncKjvbdxnTIXrhc
-DnbjjvbdezvYdhsw
-EPCjjvbdDwwkstUM
-EPCkKvbdaaVdepQX
-DoDLKvbdjlbMZeHP
-DoDLKvbdqAiFAXHd
-EPDLKvbdGLEsCglu
-EPCjjvbdZyDinClS
-EPCkKvbdSLYeuGkT
-EPDKjvbdwyhGFweS
-EOcLKvbdjJfIKNYS
-DoCjjvbddeOrCXCj
-DoDKjvbdkxrqsZHU
-EOcKjvbdGYuVBEYC
-DncKjvbdHkazmvqL
-DnbkKvbdZsiIxdSn
-EObkKvbdhanbeXQq
-EOcLKvbdMpXqWNfs
-DnbkKvbdEztQdkcJ
-EPCjjvbdDjHjWXjA
-EOcKjvbdNQYQvNgT
-EPCkKvbdNHCpNPtk
-DoCjjvbdbsCkUDjB
-EObkKvbdOStWGeUp
-EOcKjvbdVqnYBdlD
-DoCkKvbdvlvANDeN
-DoDKjvbdnQZyWKyC
-EOcLKvbdkyTRsYft
-EOcKjvbdnVUyjiqf
-EPCjjvbdXnRAXtut
-EPDKjvbddZxpXxpb
-EPDLKvbdfHjvSOQg
-DncKjvbdXsMBNTnx
-DncKjvbdEARiMzXX
-EPCjjvbdOStVgEuQ
-DnbjjvbdHELWKCKK
-EOcLKvbdehLWSOQg
-DncLKvbdYkqctOLm
-DoDLKvbdxsOJMqbH
-DoCjjvbdzGyMANFX
-DoCjjvbdSCEElJZL
-DoDKjvbdRkYeuHLT
-EOcKjvbdXsLaMsnx
-DnbjjvbdePFSkUUS
-DncKjvbdGZUuAdXb
-EOcLKvbdlZSqsZGt
-DncKjvbdiCPCdwRR
-EObjjvbdjvXOEBxX
-EPDLKvbdRXOEDMHc
-EPCkKvbdZisIQHCG
-EPDKjvbdjKGIKNYS
-DncLKvbdWWiYVdEg
-DnbjjvbdaMkBruNH
-EOcLKvbdOFEThiKd
-DoCkKvbdVZHszLPO
-DoDKjvbdiHJcYvJu
-EPCkKvbdwuNFRZLn
-EObkKvbdJqZdoGNe
-EOcKjvbddndsLUUS
-EOcLKvbdBraCtGWr
-DncLKvbdxrnJNRbH
-DoDLKvbdCWzciFPv
-EPCkKvbdtlXvaUAw
-DoCjjvbdMfbomQUk
-DoCjjvbdfoazwDxI
-DoCkKvbdauCHXkUI
-DnbjjvbdaogHELzd
-EPCjjvbdTulPisaR
-EPCkKvbdOSsvHEtp
-DoDLKvbdTkuoBVni
-EPDKjvbdVBBqTRSZ
-DnbjjvbdEJgivYKA
-DncKjvbdJXtBgkqQ
-DnbkKvbdbsCjsdJa
-EPCjjvbdhlEcnUby
-EObjjvbdssSSyZdc
-EObkKvbdhgKCyWJu
-EObkKvbddeOqbWcK
-DoCkKvbdqvpLcJYq
-EPDKjvbdxZgefXeS
-EOcLKvbdkVwOEBww
-EPDKjvbdemFvfljL
-EPCjjvbdFkErcIMu
-EOcKjvbdZyEKNcMS
-EPDKjvbdqlzJxlHi
-EPCjjvbdmbJwXnmu
-EOcLKvbdcTDLTcia
-DoCkKvbdyzdmqhJI
-DnbjjvbdGdLWKBij
-DoDKjvbduaDxsPEh
-DoDKjvbdZshhxdTO
-DncKjvbdptUGqrKt
-EPCjjvbdJvVFceGi
-EOcKjvbdddoRawDK
-DoCkKvbdfMfXHMik
-EObjjvbdVAbRSpqy
-EObkKvbddZyPxYpb
-DnbkKvbdVYgszKnn
-DoCkKvbdZMRdUNkm
-EObjjvbdTvMPitBR
-EObkKvbdIxTaglQp
-EObkKvbdGGKSNiUR
-DoCkKvbdGBOpyJzm
-EPCjjvbdqrUjmjaN
-DncKjvbdIMBzmvpk
-EPCjjvbdcyxoxYpb
-EOcKjvbdmIcsqUrB
-DoCkKvbdqvolChyR
-EPCjjvbdkHgMGGOL
-EPDLKvbdpaIeAWgd
-DncLKvbdqvokcIxq
-EOcKjvbdZsiJYcrn
-EObkKvbdyYJKBpZk
-DoCkKvbdKDKDQicY
-EObkKvbdlhdTptqa
-EObkKvbdyXhjBpZk
-EObkKvbdKNAEZfta
-EOcLKvbdRyihTCvA
-DncLKvbdtcCtwVno
-DnbjjvbdVZITykOn
-DoCjjvbdJSyArlwl
-EPDKjvbdDxYLtUUM
-EPDKjvbdvlvANEFN
-DoDKjvbdrykpTAgn
-DnbjjvbdeYZtUSFz
-DoDKjvbdzjVQQETU
-EObjjvbdiHJbyVjV
-DoCjjvbdcScLTcjB
-DncLKvbdhaoDEwQq
-DnbkKvbdQlwbZNtz
-EPCjjvbdEARiMzXX
-EPCjjvbdGFjSOIsq
-DoDKjvbdrXPlChxq
-DoDLKvbdYqMeImEq
-DoDKjvbdOFETiJKd
-EPCjjvbdCTBDUFvr
-DoCkKvbdZoOIdeZj
-DncLKvbdHgHZyYXg
-EOcLKvbdCSaCsevr
-DoCjjvbdsQWOjCuf
-DoDKjvbdKWUfDeGi
-EOcKjvbdzitpPcrt
-EPDKjvbdZyDimcMS
-EPCjjvbdBcpAuilf
-EOcKjvbdqwQMCiYq
-EOcLKvbdsrrTZZdc
-EObjjvbdSQUHKGEX
-DoDLKvbdcyxoxZRC
-EObkKvbdWXJYWEFH
-DnbkKvbdhgKDYuiu
-DoDKjvbdrSVLOKaN
-EPCjjvbdMoxQumgT
-EPDKjvbdcbTMrATm
-EPDKjvbdznopdcMY
-DnbjjvbdzdzOzdyp
-EObjjvbdGYuVBEXb
-EPDKjvbdiZtekpnG
-DoDLKvbdvvlAuaVu
-DoDKjvbdEYXkstTl
-EPCjjvbdauCHYKsh
-DoCjjvbdDjIJuwjA
-EObjjvbdkNCLzFGo
-EPDLKvbdiGicZWKV
-EPCkKvbdtlXvaTaX
-DoCkKvbdpyOggQcx
-EObjjvbdtTSSyZdc
-DoDLKvbdiZtelROG
-EOcLKvbdWRnYCFMD
-EPDLKvbdNddUIhjd
-DncLKvbdEObjjvbd
-EPDLKvbdVUNTelVj
-EPCjjvbdVhXvYGxz
-DoCkKvbdfRaWzkbo
-DoCjjvbdRjyGVHKs
-DoCjjvbdSKxfUfkT
-EOcKjvbdaRecITek
-DoCkKvbdEJhKVwjA
-DoDLKvbdwXLaWBVu
-EPDLKvbdLYqJrztf
-DncKjvbdUMVoAuoJ
-DnbjjvbdvmWAMcdm
-EObjjvbdpssfqrKt
-DnbjjvbdhlEcnVDZ
-EOcKjvbdNsUWGeVQ
-EObjjvbdVUNTekuj
-DnbkKvbdVYgsykOn
-EObkKvbdpssgSRjt
-DncKjvbdVZITzLOn
-DoDKjvbdGGJrNiTq
-DoDLKvbdACqwizJQ
-DoDKjvbdIryArmXl
-DoCkKvbdZMRdTmlN
-DnbkKvbdrovPKDVf
-EObkKvbdrounjDWG
-DnbjjvbdCSaDTevr
-DnbjjvbdUyITyjnn
-DnbkKvbdKRZeOfOF
-DoCkKvbdDigiuxKA
-EOcKjvbdxsNhlrCH
-EOcLKvbdDjHiuxKA
-DncKjvbdXmqAXtvU
-DnbjjvbdqFdFTvAh
-EObkKvbdxrmhmSBg
-DoCjjvbdIidAKPfd
-EOcKjvbdKQydoGOF
-DnbjjvbdlqyUzSdJ
-EPDKjvbdtvOYKQsA
-EPCkKvbdcIljLFvx
-DoCjjvbdYqNEhldq
-EPDKjvbdczYpYZRC
-DoDLKvbdiBoCeXQq
-EOcLKvbdiCPDFXRR
-EPDLKvbdZisHofaf
-EPDKjvbdmIdURVSB
-EPDKjvbdZRNFIldq
-DoDKjvbdJpydoFme
-DoDLKvbdWWhwudEg
-DncLKvbdDnbjjwDE
-DncKjvbdqTsfqqkU
-DncKjvbdKDKDRKDY
-DoDKjvbdTulQJsaR
-DoCjjvbdSBdFMIyL
-DncLKvbdqTtHSSKt
-EOcKjvbdBcoaVjMf
-EObjjvbdiiehKNXr
-EObjjvbdCWzciFQW
-EPDLKvbdWSNwadlD
-EPDKjvbdKVuGEFHJ
-DoCkKvbdZMRdUNlN
-EPDKjvbdZRMdiMdq
-EPCkKvbdxUmEpyMO
-DoDLKvbdRkYfVHKs
-EObjjvbdIwtCIMQp
-EPDKjvbdmJDsqUqa
-EPDKjvbdrDeJPmvB
-EOcKjvbdTvMPisaR
-DncKjvbdMtsRjmAX
-DnbjjvbdlqyUysDi
-EPDKjvbdQwNdClID
-DncLKvbdRjxfVGjs
-EObkKvbdauBfxKtI
-DoDLKvbdiZtfLpnG
-DoDKjvbdhancFXRR
-DoDKjvbdREDBQQdS
-EObjjvbdrzMQTBIO
-EOcKjvbdcImKKfXY
-DoDLKvbdijGIKNXr
-DncLKvbdgGMZmfgA
-EPCjjvbdZnmheFZj
-EPDKjvbdmuVZjiqf
-EObjjvbdeFPRawDK
-EPDLKvbdrNZiyLhJ
-EOcKjvbdlhdURUrB
-EPDLKvbdGGJrNhtR
-EOcKjvbdiGibyWKV
-EOcKjvbdQlwbZNtz
-DncLKvbdnVUzKiqf
-EOcKjvbdbsDKscjB
-EPDLKvbdDnbjjvcE
-DoCkKvbdySmhmRag
-DncKjvbdkyTSTYft
-DoDLKvbdEYXkstUM
-EOcKjvbdiHJbyVjV
-EOcKjvbdsQVnicWG
-DoCkKvbdoznDkYPA
-EObkKvbdURQoVVHm
-EPDLKvbdFfKSNiTq
-DnbjjvbdVgxVwgYz
-DnbkKvbdmfeYNOHZ
-DoDKjvbdyqPNIiwA
-EObjjvbdFVyQPlie
-EOcLKvbdGdKvKBij
-EPCjjvbdDwxMUTtM
-DoCkKvbdKVtfEEfi
-DoCkKvbddjKRvUzn
-EObkKvbdliEURVSB
-EPDLKvbdWSNwaeMD
-EOcLKvbdJqZdoFnF
-DnbjjvbdKxqJrzuG
-DnbjjvbdmuUyjjSG
-EPDLKvbdADRxKZhp
-EPCkKvbdiCPDEwRR
-EObjjvbdTXkMNzkY
-DnbjjvbdMgDPlouL
-EPCjjvbdyzeNqghh
-EOcKjvbdmuUyjjSG
-EPDKjvbdDoDLKvcE
-EPDLKvbdNxPVzdNt
-DoDKjvbdBhjbKhfK
-DnbjjvbdZLrETmlN
-DoCkKvbdHffyxwwg
-EOcKjvbdYSlAmUPY
-EPCjjvbdtTSTYzFD
-DoCjjvbdFjeTCgmV
-EObjjvbdNwnuzcnU
-DoDLKvbdSPsfiecw
-DoDKjvbdKVtedFGi
-EObjjvbdUaCQsRRy
-EObkKvbdbsDLUDjB
-EObkKvbdEOcKjvcE
-EPCjjvbdyNsIYShc
-EOcLKvbdbVCGxKsh
-DoDKjvbdlZSqsYft
-DoCjjvbdUslselWK
-DncLKvbdbUbHXkUI
-DnbkKvbdYkqcsmkm
-DncKjvbdXsMAmUOx
-DoDKjvbdJuuFcdgJ
-EOcLKvbdGLFTChNV
-DoCkKvbdaaWEfQQX
-DncKjvbdVqnXbFMD
-EOcKjvbdZyEJnClS
-DoCkKvbdNdctJIjd
-DoDLKvbdmaiwYOmu
-EPCkKvbdmbJvxPOV
-DncLKvbdTqRPUuIN
-EPDLKvbdGGKSNiUR
-EPCjjvbdIwtCIMQp
-EOcKjvbdHDjvJajK
-EOcLKvbdZyEJnDMS
-DnbkKvbdrWpMDJZR
-EOcLKvbdbUagXjtI
-EOcLKvbdLGFgbBRV
-EOcKjvbdqvpMDIxq
-EPDKjvbdOAJSsjSA
-DncKjvbdsrqsYyeD
-DnbjjvbdtkwvaUBX
-DnbjjvbdGQASwGfZ
-EObkKvbdURROtuIN
-EObkKvbdiUydwRtb
-EOcLKvbdqlyixkhJ
-EPCkKvbduaEYroFI
-DoCkKvbdnUtyjiqf
-DoCkKvbdssSTYzFD
-DncLKvbdeATqMwjG
-DnbkKvbdqlyjYlHi
-DncLKvbdTAEhhCOd
-EOcLKvbdpxoIHQdY
-EPDKjvbdEXxLsstM
-DncLKvbdbLLfPNcA
-DoDLKvbdCWzdIeQW
-DnbjjvbdWSNwbElD
-DoDKjvbdGFjSOJUR
-DoCjjvbdmttzKjRf
-EPCjjvbdqmZjZMHi
-DncLKvbddwzUTqez
-EObkKvbdrEFIpOVa
-DnbjjvbduMYWaTaX
-EPDKjvbdTAEiIBoE
-EOcKjvbdVrNwaeMD
-DoCjjvbdSwkMNzjx
-DoDKjvbdZoNheEyj
-EObjjvbdFpASvgGZ
-DnbkKvbdvBDxsPEh
-DoDKjvbdIHGzYxYH
-EOcLKvbdhanbeXQq
-EObkKvbdACqxJyhp
-DoDLKvbdgQBzwDxI
-EObjjvbdOYOuzdNt
-DnbjjvbdRWmdDMHc
-EPCkKvbdePFTLUUS
-DnbkKvbdHlBznWpk
-EPCkKvbdqlyixlIJ
-DnbjjvbdIHHZyYXg
-EObjjvbdBcoaVimG
-EOcLKvbdZnnIddzK
-DnbjjvbdBiLBjhfK
-EPDLKvbdeOeTKtTr
-EObkKvbdYlRcsnLm
-DoDKjvbdnHExNOGy
-DoCkKvbdnCJwXoNu
-EOcKjvbdwWlBWBWV
-DnbjjvbdGYuVAdXb
-EObkKvbdLGGHbBQu
-EPCkKvbdEJgjVxKA
-EObkKvbdlqyVZrdJ
-EObkKvbdaNLBsUmH
-EPCkKvbdGQASwHGZ
-DncLKvbdnBjWwnnV
-DnbjjvbdUslsekuj
-DncLKvbdeATqNYJf
-EOcLKvbdIwtCHlQp
-EOcLKvbdGLErcIMu
-DnbkKvbdjvXOECXw
-EPCkKvbdfSAvzkbo
-DnbjjvbdsCGNMHKy
-DoDLKvbdURQnuVHm
-EObjjvbdQvmdCkgc
-EPCjjvbdSPsgKFcw
-EPDLKvbdYpmEhleR
-EPCjjvbdFjdsDHlu
-EPDLKvbdqdFIpOWB
-EObjjvbdnQZyVkZC
-EPCjjvbdQdCaQRES
-DnbjjvbdADRwiyiQ
-DnbjjvbdiiehKNYS
-DoCkKvbdHkaznWqL
-EObjjvbdmoyxujxb
-EOcLKvbdxxIibQZk
-EObjjvbdsPuoKCvG
-EObjjvbdjcMKpftg
-EOcKjvbdZisHofbG
-DncLKvbdUGznLwWF
-DoDLKvbdFfJqnJUR
-DnbjjvbdsBelkgLZ
-DoCkKvbdrbGNLfkZ
-DncKjvbdeYZssqez
-EPCkKvbdyNsHwsIc
-DnbkKvbdrafMkfjy
-EPCjjvbdZyEJnDMS
-DnbjjvbdFpASwGey
-DnbkKvbdLGGIBaQu
-DncLKvbddiiqutzn
-DncKjvbdWIXuwfxz
-DoCjjvbdNPxRVnHT
-DncKjvbdwygefXeS
-EPDLKvbdmJEUQtrB
-EPCjjvbdQwOECkhD
-DoDLKvbdNGbpMotk
-DncLKvbdRyjIScWA
-DncLKvbdVrOXaeMD
-DncLKvbdQmYBxnUz
-DnbjjvbdVBCRSqSZ
-EPCkKvbdRosfifEX
-EPDLKvbdlYrqrxgU
-EPDLKvbdKVuGDeHJ
-DncLKvbdDncLLWcE
-EOcLKvbdfNGXGmKL
-EOcLKvbdQvmdDMHc
-EOcLKvbdEARiMyvw
-DoCjjvbdnHFXlnGy
-EOcKjvbdhtyeXRtb
-DncKjvbdMgDQNQVL
-EObjjvbdpedFUWBI
-EPDKjvbdkHfkfFnL
-DoDKjvbdrXQMChyR
-EObkKvbdREDAoqES
-DoDKjvbdBdQAvKMf
-DoCkKvbdjvWnDaxX
-DnbkKvbdePEsKstS
-EPDKjvbdyOTHwsJD
-DnbkKvbdrSVKnKaN
-EPCkKvbdZirgpHBf
-DoCkKvbdsQVnjDVf
-DnbjjvbdGLEsCgmV
-EPDLKvbdelewHMjL
-EObjjvbdjlbMZeGo
-DoDLKvbdxrmhlrCH
-DoCkKvbdczZQXyQb
-EObjjvbdRDcBQRDr
-DoCjjvbdxLXEHzyf
-DoCkKvbdkySrTZGt
-DoCjjvbdDoDKjwCd
-EObkKvbdKWVGEEfi
-DoDKjvbdTqQoUuIN
-EObjjvbdZRNEiMeR
-DoDKjvbdxUmEpyMO
-EPDLKvbdxxJJaozL
-EObkKvbdraemLfkZ
-EPCjjvbdbiNKLFvx
-DnbjjvbdZjSgpHCG
-EObjjvbdqBIeAXHd
-EObjjvbdVUNUGMWK
-EPDKjvbdliDsqUqa
-EOcLKvbdxZgfGYFS
-DnbjjvbdYpmFJMdq
-EPCkKvbdcTCjtEKB
-DncLKvbdVUMtFlVj
-EPDKjvbdcIlijevx
-DoCjjvbdpstHSSKt
-EOcKjvbdLAjgMaxR
-DoDKjvbdHkaznXQk
-EPDLKvbdrovPJcVf
-EObjjvbdjblLRHVH
-EPCkKvbdfSAvzlCo
-EPDLKvbdkHfkefOL
-DoCjjvbdbiNKKfXY
-EPDLKvbdjJfHilwr
-EOcKjvbdxVMeQxkn
-DncKjvbdqlzJyMIJ
-DoDLKvbdffMZnGgA
-EPDLKvbdrpWPJcVf
-DnbkKvbdNsTvGeVQ
-DncKjvbdZshiZETO
-DoCjjvbdWRnXaeLc
-EPDLKvbdUaCRTQqy
-EOcKjvbdKDKDQjCx
-EPCkKvbdLKaIWAJy
-DoDKjvbdjblKpftg
-EPDKjvbdfHkWSNqH
-EObjjvbdSCEEkiZL
-EPDKjvbdcyxpYZQb
-EPDLKvbdVUMtFkuj
-DnbjjvbdVBCQrprZ
-EObjjvbddoEsLUUS
-DnbkKvbdiHKDZVjV
-EOcKjvbdpyPHgRDx
-EObjjvbdYpleJNFR
-DncLKvbdrDdhpOWB
-DncLKvbdcbSmSAUN
-DncLKvbdQwODcLgc
-EPCjjvbdKVuFcdgJ
-EPDLKvbdJvUecdfi
-EObkKvbddjJqvUzn
-EPCkKvbdLrXNZuQz
-DnbkKvbdDihJuxKA
-DoCjjvbdegkWSORH
-DncKjvbdFyVUaEYC
-DoDLKvbdNHDPlpVL
-DoDLKvbddneTKtUS
-DoCjjvbdEARhlywX
-DncKjvbdmbJwYPOV
-DnbjjvbddeOrBvbj
-EPDKjvbdAMhZTXZx
-DnbjjvbdULuoBVoJ
-DoCkKvbdMfbomQVL
-EObjjvbdyTNhlqbH
-EPDLKvbdcyxowxpb
-DoCkKvbdEPDLLXCd
-DncLKvbdSCEFLiZL
-DnbjjvbdBiLCKiFj
-EPCjjvbdmgExNNgZ
-EOcLKvbdsPvPKDVf
-DoCkKvbdbKkfOmcA
-DncLKvbdIxTaglRQ
-DnbkKvbdFVyQQNJe
-EPDLKvbdbsCjtEKB
-EPDKjvbdakMFnnDA
-EObjjvbdWWiYVcdg
-DnbkKvbdfSAvzkcP
-EOcLKvbdbKkennDA
-EPCjjvbdTppoVUhN
-EPDLKvbdemGWgMjL
-DnbjjvbdJvUedFHJ
-DoDLKvbdqvokbiZR
-EPCjjvbdZMRctOMN
-DoCjjvbdNPwpunGs
-DoCkKvbdZtJIyDrn
-EPCjjvbdFejRnIsq
-EPDLKvbdZshhxdTO
-DncLKvbdxZhGGXeS
-DoDLKvbdKyRKSztf
-EPDKjvbdCflFgAzc
-EPDKjvbdOEdThiKd
-DoDLKvbdTAFIgaoE
-EObjjvbdEARiNZvw
-EOcLKvbdjhHLefOL
-DncKjvbdbVCHXjtI
-EPDKjvbdeFPRawCj
-DoDLKvbdtcCuWuoP
-DoDLKvbdUVkpJtAq
-EPCjjvbdaSFcHsfL
-EPDKjvbdPxmAGrrK
-EPCkKvbdDjHjWXjA
-DnbkKvbdpssfqrKt
-DoDKjvbdePEsKtTr
-EObkKvbdDwxMUTtM
-DnbkKvbdZRMdiNEq
-EPCjjvbdhuZdvquC
-DoCjjvbdGLEsChMu
-EPDKjvbdRDbaQQdS
-EOcKjvbdEJhJvYKA
-DncKjvbdkxsSSxft
-EObjjvbdKRZdnfOF
-EOcLKvbdZQmFIleR
-DnbkKvbdjcLjpfuH
-DnbkKvbdYzbfSKWZ
-EPDLKvbdbUafxLTh
-EPCjjvbdJuuFcdgJ
-DoCkKvbdJcKCqJcY
-DoCjjvbdSKyGVGkT
-DoCjjvbdemFvflik
-DoCjjvbdvBEYsPEh
-EOcKjvbdCWzdJEov
-DncLKvbdqTsgSSKt
-DnbkKvbdUMVoBWOi
-EPCkKvbdOEcsiIjd
-DncLKvbdaSFbhUFk
-DoCkKvbdhtzEwRuC
-DoCkKvbdiCOcEvqR
-DoCkKvbdfILVqnRH
-DnbkKvbdCJLCKhej
-EPCkKvbdakLeoODA
-DnbkKvbdUaCRTQrZ
-DoDKjvbdRacdkhyL
-EPCjjvbdYNqAXtut
-DncKjvbdwzHfFwdr
-DncLKvbdNrsvGeUp
-EPDKjvbdDoCkKvbd
-EPCjjvbdrafNLfkZ
-EObjjvbdmajXXoOV
-DncLKvbdVAbRTQrZ
-EObkKvbdkySrTZHU
-DoDKjvbdZeXfzghb
-EPDLKvbdiCOcFWpq
-EOcKjvbdUQpnuUhN
-DncLKvbdijGIKMwr
-DncKjvbdHgHZxwwg
-DncLKvbdVTmUFlWK
-DoDKjvbdeYZtUSFz
-EPDKjvbdHffyyYXg
-DncKjvbdXsLaMtOx
-DncKjvbdzitoocrt
-DoDKjvbdhtyeWquC
-EPDKjvbdEuyPpNKF
-DnbkKvbdtvOYKRTA
-DncKjvbdZnnJFEzK
-EPCkKvbdqZPIGpcx
-DnbkKvbdVgxWYGxz
-EPCjjvbdOStWHEuQ
-EObkKvbdNddTiIjd
-DoDKjvbdwXMBWAuu
-EPDLKvbdsPvPKDVf
-DncLKvbdQvnDbkhD
-DncKjvbdEKHjWYKA
-EPCkKvbdCgMFgAzc
-EOcLKvbdQvnDbkgc
-EPCjjvbdDoCkLWbd
-DnbkKvbdKCibpicY
-EOcLKvbdhfibyViu
-EOcLKvbdzQnliJwA
-DncKjvbdEASImZwX
-EPDLKvbdFkFTChNV
-DnbjjvbdEuxoomKF
-EOcKjvbdYqMeJMeR
-DnbjjvbdgQBzvdYI
-DoCjjvbdkxrrSxft
-DnbjjvbdjuwNdCYX
-EOcLKvbdfpBzwEXh
-DoCkKvbdnHFYMmgZ
-EOcKjvbdjlbMZeHP
-DoCkKvbdmttzKjSG
-EPDLKvbdzjUopDsU
-EPDLKvbdsZlPraIO
-EOcLKvbdLBLHMbYR
-EPDLKvbdtbcVXVno
-DoDLKvbdaaVeGQQX
-EPCjjvbdWSOYCEkc
-EObjjvbdxUmFQyMO
-DoDLKvbdRbDdkiZL
-DoCjjvbdhlFDnVCy
-EPDKjvbdcTDKscia
-EPCkKvbdjlbMZeGo
-DncLKvbdCIkCKiGK
-DoCjjvbdrbFmMGkZ
-EObkKvbdQccAoqDr
-DnbjjvbdTqRPVUgm
-EPCkKvbdNrsufeUp
-EOcLKvbdrMyjZLhJ
-EPDLKvbdiifHimXr
-DnbkKvbdpstHSRjt
-EOcKjvbdZtIhxdSn
-DnbkKvbdbhmKLGXY
-DnbkKvbdkxsSSxft
-DoCjjvbdTAFIhBnd
-EObkKvbdUtMtGLvK
-EPCjjvbdpstGrSLU
-DncKjvbdxLXDgzyf
-EOcKjvbdSCDdlIxk
-EObkKvbdOFEUIiLE
-DnbkKvbdjggLefNk
-DncKjvbdliEUQtqa
-EOcLKvbdFjdsDHlu
-DncLKvbdeEnqavcK
-EOcLKvbdnPyyVjyC
-DoDKjvbdliDsptrB
-DoCkKvbdrXQLbiZR
-DncLKvbdFkErbhNV
-DoDKjvbdTqROtthN
-DoCkKvbdYSlAmUOx
-DnbkKvbdKVuGDdgJ
-EOcKjvbdvwLaWAvV
-DoDLKvbdEObjjvbd
-DnbkKvbdwXLaWBVu
-DnbkKvbdmtuZjiqf
-DoDKjvbdegkWRnRH
-DoCkKvbdeXzUUSFz
-DncLKvbdfNGXGmJk
-DoCjjvbdEztQdlCi
-EPCkKvbdEuyQPljF
-EPCjjvbdrEEiQNvB
-DnbkKvbdLqwNZtpz
-EObkKvbdKeegbBQu
-EObkKvbdvBEZSoFI
-DoDLKvbdrXQLbhyR
-DnbkKvbdbKlGPODA
-DncLKvbdnCKXYOnV
-EOcKjvbdjcMKpfuH
-DoCkKvbdQdCaQRES
-EPCkKvbdDncKjwCd
-DoDLKvbdYlSDtNkm
-EObkKvbdmbKXXnmu
-EPCkKvbdjgfkfGOL
-DnbkKvbdZyDjNcMS
-EOcLKvbdkNCLyeHP
-DncLKvbdVUMtGLuj
-EOcKjvbdKVtedFGi
-EPCjjvbdKRZeOenF
-DoCjjvbdUQqPUthN
-EPDKjvbdkMbLydgP
-EObjjvbdVqmxBdlD
-EPDKjvbdjAQGaPgK
-DoCkKvbdTlVnaWPJ
-EPCjjvbdwjvdHzzG
-EObjjvbdBsBCtGWr
-EPCjjvbdwuNEqZMO
-DncLKvbdbrcKtEKB
-EPCkKvbdFyVVAcxC
-EPCkKvbdaSGCgsfL
-EPDKjvbdrylQTBIO
-DncKjvbdfSBWzlCo
-EObjjvbdfRaWzlCo
-DnbkKvbdsPvOjDWG
-EPCjjvbdcbSlrAUN
-EObkKvbdrWpLbhxq
-EPCjjvbdhgKDZVjV
-EOcKjvbdhlFDnUby
-DoCkKvbdddoSBvcK
-DoCkKvbdpssfrRkU
-DoDLKvbdJutfEFGi
-EObkKvbdEPDKkWcE
-EOcKjvbdcJNJjevx
-EPCjjvbdcTDKscia
-DncKjvbdYlRcsmlN
-EPDLKvbdkHgMFfNk
-DoCkKvbdjbkjqGuH
-EPDKjvbdTvMPjUAq
-DnbkKvbdQYmAGsRj
-EPCkKvbdKeegbApu
-EPDKjvbdiLdcmtcZ
-DoCkKvbdNeDshhjd
-EOcLKvbdxnShXsIc
-EPDLKvbdyOShXrhc
-EObkKvbdbPgHELzd
-DoCjjvbdDoCkKwDE
-EOcLKvbdmbJvxPOV
-DnbjjvbdkNBlZeHP
-DnbkKvbdRXNdDMID
-DncLKvbdXnRAYUvU
-EObkKvbdBcpAuilf
-EPDKjvbdSLYeuGkT
-DoCjjvbdRaceLiYk
-DncLKvbdZoNiFEzK
-EOcLKvbdGLEsDIMu
-DnbjjvbdnUuZkJqf
-DoCkKvbdlqyUyrci
-DoCkKvbdLGGHaaRV
-DnbkKvbdmoyyWLYb
-DncKjvbdMpYRWOGs
-DnbjjvbdkyTRsYft
-EObkKvbdjKFhJmXr
-DnbjjvbdxLWcgzzG
-DoCkKvbdxnShXrhc
-DnbjjvbdRbEEkiZL
-EOcLKvbdWWiXudEg
-DoDLKvbdDjIKVxKA
-DoDKjvbdgFkzNgHA
-EPDLKvbdvvlAuaVu
-EPDLKvbdauBfwkTh
-DncLKvbdmIctQtrB
-EPDKjvbdCDpBWJmG
-DoDKjvbdvAcxsPEh
-EOcKjvbdrJAKFNOe
-EOcLKvbdbsDKscia
-DncLKvbdAMhYsWzY
-DncKjvbdddnrCXDK
-EOcLKvbdkHflGGOL
-DoDKjvbdbUafxKsh
-DnbkKvbdNdctIiLE
-EOcLKvbdvBDyTPEh
-DoCjjvbdFejSOJUR
-DnbkKvbdUQpntuHm
-EObjjvbdTpqOttgm
-DoDLKvbdddoSCXCj
-DncLKvbdbVCHXkUI
-EPCjjvbdKNAEZgVB
-EPDKjvbdFjdsDIMu
-DnbjjvbdpaIeAXHd
-EOcLKvbdrDdhpOWB
-EPDKjvbdIxUBhLpp
-EPDKjvbdhkddOVCy
-EPCkKvbdTkuoAuni
-EPDLKvbdnPyxujxb
-EObjjvbdfSBWzlCo
-EPDKjvbdMuSrKmAX
-EPDLKvbdmozYvKyC
-DnbkKvbdZirhPfaf
-EPCjjvbdNQXqWOHT
-DncKjvbdZsiIyESn
-DnbkKvbdURQnuUgm
-DoCjjvbdkIHMFfOL
-EPDKjvbdKfGHaaRV
-DncLKvbdtcDUwVoP
-EOcLKvbdxrnImRbH
-EPDLKvbdozmdLYPA
-DoDKjvbdUVkojUBR
-DnbjjvbdqUUHRrLU
-DoDLKvbdEARhmZvw
-EOcLKvbdZHWdAOri
-DoCjjvbdVUMtGLuj
-EOcLKvbdmfeYNNfy
-EPDKjvbdZirgogCG
-DnbjjvbdEJhKVwjA
-DnbkKvbdkVvmdBxX
-DnbjjvbdvBEYsOeI
-EPCkKvbdDoCjjwDE
-DoCjjvbdRXNdClID
-EPDKjvbdkxrrTZGt
-EOcLKvbdZdxGzhJC
-DoDLKvbdxnSgxSiD
-DoDKjvbdIryAsMxM
-DnbkKvbdTYKlNzjx
-DncLKvbdIGfzZYXg
-DncLKvbdQvnEClHc
-DnbkKvbdqUTfrRkU
-DoDKjvbdRDcAopdS
-DoDKjvbdTfznMXWF
-EOcLKvbdauCHYKtI
-EObkKvbdNrsvHEtp
-DoDLKvbdDihJvXjA
-DnbjjvbdliDtRVRa
-DncKjvbdgFlZmfgA
-DncLKvbdmJDsptqa
-DncKjvbdfoazvdXh
-EOcKjvbdJXtBgkpp
-EPCkKvbdqUUGrSKt
-EPDKjvbdrMzJyLgi
-EPCjjvbdiGjDYuiu
-EOcLKvbdkWXNcaww
-EOcLKvbdxxIjBoyk
-DnbkKvbdePErjssr
-DnbjjvbdIryArmYM
-EOcLKvbdRMwayNtz
-EOcLKvbdRkZGUgKs
-DoDKjvbdZLrEUOMN
-DnbkKvbdDHMFgAzc
-DnbkKvbdwXMBVaVu
-DnbjjvbddeOrCXDK
-EPDLKvbdwuMeQyLn
-EPCjjvbdBhjbLIej
-EPDKjvbdaNLCSuMg
-EPCjjvbdBhkCKhej
-EPCkKvbdptUGrSKt
-EObkKvbdVTmTfLvK
-DoCkKvbdDoDKkXDE
-DnbjjvbdfoazvdYI
-DnbkKvbdatbHYKtI
-DnbkKvbdVUMtGLuj
-EPDKjvbdeEoRavbj
-DoCkKvbdJpzFPGNe
-DnbjjvbdNHDQNQUk
-DncKjvbdYNqAXuWU
-EPCkKvbdZnnIddzK
-EObkKvbdYlRdTnMN
-EPDKjvbdEzspdkcJ
-DoDLKvbdCIkBjhfK
-EObjjvbdTkuoAvOi
-DoCkKvbdhkdcnUby
-EPCjjvbdHfgZyYXg
-DncLKvbdbsCkTdKB
-DoCjjvbdLqwMzVQz
-DoDLKvbdRkYfUgLT
-EOcLKvbdbQHHELzd
-EPCkKvbdbVCGxLTh
-EObjjvbdmSYuZsEJ
-DoDKjvbdssRsYyeD
-EPDKjvbdLrWlytpz
-DncKjvbdJTZBSlxM
-DnbkKvbdxrnJMrBg
-EPCjjvbdxZgfFxFS
-EObkKvbdUQpnuVIN
-EObkKvbdzjUpQESt
-EObjjvbduaDxsPFI
-DoDLKvbdkyTRsYft
-DoDKjvbdyTOImRbH
-EObkKvbdegkWRnQg
-DoCjjvbdaSFbgsek
-DoDKjvbdrylPsAhO
-DoCjjvbdgGMZnGgA
-EPCkKvbdlqyUzSdJ
-DncKjvbdwNWAMdFN
-EPDKjvbdTlWPAuoJ
-EOcLKvbdUMWPAuoJ
-DnbjjvbddZxowxqC
-EPCkKvbdEuyQPlie
-DoDKjvbdVAaqSqSZ
-EPDLKvbdwtldpxlO
-EOcLKvbdrRtkNkBN
-DncKjvbdJqZeOenF
-DncKjvbdfHkWSNqH
-DoCkKvbdnUuZjirG
-EOcKjvbdsCFmMGkZ
-DoDLKvbdwzIFfYEr
-EOcLKvbdqqtjmjaN
-DoCjjvbdrbGNLgKy
-EPDKjvbdNHComQUk
-DnbkKvbdIMBznWqL
-EPCjjvbdEKHivXjA
-EPDLKvbdVhYWYGxz
-EPDLKvbdZxcjNblS
-DnbjjvbdJpzEoFme
-EPDKjvbderBWzkcP
-DoDLKvbdpssgRrKt
-EObkKvbdtbbtvuoP
-EOcLKvbdqGDeUWAh
-DoDKjvbdlZSrTYft
-EOcKjvbdFfKRmhtR
-DnbkKvbdNPxRVnGs
-EPDLKvbdZshhxcsO
-EPCjjvbdMoxQvNgT
-EPCjjvbdKaKfmBxR
-EPDLKvbdSwjkmzjx
-DoCkKvbdjbkkRGtg
-DoDKjvbdfoazwDxI
-DoDKjvbdqwQLbhxq
-EPCkKvbdZtIhyETO
-DncLKvbdmpZxukYb
-EOcKjvbdMoxQumgT
-DoCjjvbdLYqJrzuG
-EObjjvbdnGeXlmfy
-EPDLKvbdyzeOSHhh
-EOcLKvbdiZuGMQmf
-EPCkKvbdWSNwadkc
-DncKjvbdhfibyVjV
-EOcKjvbdQmXbZOUz
-DoCjjvbdSKxeuGkT
-DnbjjvbdbrbkUDjB
-EPDLKvbdJcKCqJbx
-DnbjjvbdjSziTLJz
-EOcKjvbdZxdKNcMS
-DoCkKvbdelfWfmJk
-DoCjjvbdFjeScHlu
-EPDLKvbdnCJvwnnV
-EPDKjvbdNrsufduQ
-DnbkKvbdjcLjqGuH
-EObjjvbdmbKXYOnV
-DoCjjvbdRacdkiYk
-EObkKvbdaaVdfQQX
-DoCkKvbdJpydnfOF
-DoCkKvbduCbtwVoP
-DoDKjvbdpxnhHRDx
-EOcKjvbdmJEUQtqa
-EPDLKvbdRkZGVGjs
-EPDKjvbdEObjkXCd
-EObjjvbdCTAbtGWr
-DoCkKvbdqTsfrSKt
-DncLKvbdaMkBsUmH
-DncLKvbdqlyixlIJ
-EPCkKvbdvwMAuaVu
-DncKjvbdiUzEwRuC
-DoDKjvbdiUzFWrVC
-DnbkKvbdkDMKpfuH
-EObkKvbdZnnJFEzK
-EObkKvbdWWhwudEg
-DoCjjvbdypoNIiwA
-DoCjjvbdShyiqABM
-DnbjjvbdOFEThhkE
-DnbjjvbdRXNcbkgc
-DoCkKvbdqUTfrSKt
-EPDLKvbdfNGWgMjL
-EPDLKvbdGFirOJUR
-EOcKjvbdSCEFMJYk
-EOcKjvbdmpZxukYb
-EPDLKvbdrafNLgKy
-DnbkKvbdmJDsqUrB
-DnbjjvbdjKFgimXr
-EOcLKvbdVYgtZjoO
-EObkKvbdTvMPjUBR
-EOcLKvbdSxKkmzjx
-DoDKjvbdnPzYvKxb
-EPCjjvbdaRfDITek
-EObkKvbdjKGIJmXr
-DoCjjvbdliEURVSB
-EObkKvbdFaOqYizm
-EOcLKvbdqGEEsuaI
-DoCjjvbdZQleJNEq
-DoCjjvbdbKlFnnDA
-DnbjjvbdWIXuwfxz
-EPDLKvbdNGcPmPuL
-DoCjjvbdBsBDTevr
-DnbkKvbdczYoxYpb
-EObjjvbdJutedEfi
-DncLKvbdGFirNhsq
-EPDKjvbdUaCQrqRy
-EPCjjvbdQwNdDMID
-EPDLKvbdtSrSyZeD
-DnbkKvbdNHDQMpUk
-DoDKjvbdZirgofaf
-EObkKvbdrpWOibuf
-DoCkKvbdwygfFxEr
-EPCjjvbdSwjlNzjx
-DnbkKvbdjKGHjMxS
-DncLKvbdijFhKNXr
-EOcKjvbdddoRavbj
-EPDLKvbdmIdTpuSB
-DncLKvbdiiehJmYS
-EObkKvbdjcLkQgUg
-DoDKjvbdsQVoJbuf
-EObjjvbdhzUfMQmf
-DnbkKvbdcImKKfWx
-EObkKvbdbQHHELzd
-DnbjjvbdWWiXuceH
-EPDKjvbdjJegjNXr
-EPCjjvbdZyEKNblS
-DoDKjvbdLqvlzVQz
-EPDLKvbdZRNEhmFR
-DnbkKvbdGcjuibJj
-EOcLKvbdGAnpxizm
-EPCjjvbdkVvnDaww
-EOcKjvbdHffzZXwg
-DoCkKvbdKeehCAqV
-EPCjjvbdHEKuiajK
-EOcKjvbdUtMselWK
-EPDKjvbdEXwlTstM
-EPDKjvbdsrrSxzFD
-EOcKjvbdEztQeMDJ
-EPCkKvbddoFSjstS
-DoCkKvbdSCEElIyL
-DncKjvbdFVxpQNJe
-DnbjjvbdXmqAYUut
-DoCjjvbdiZtfLpmf
-DoDKjvbdwygeexEr
-EOcLKvbdiUyeXSUb
-DncKjvbdsZkoraIO
-EOcLKvbdACrYJyhp
-EOcLKvbdTlVoBVoJ
-EPCkKvbdqZPHfqDx
-DnbkKvbdmJDsptqa
-DncKjvbdhkeDnUcZ
-EPDKjvbdURQoUtgm
-EPDKjvbdjAQHAogK
-EObjjvbdCIkCKhfK
-EOcKjvbdYzbfRjWZ
-DnbkKvbdWRnYCEkc
-DncKjvbdyzeORgiI
-EObjjvbdEPCkLWbd
-DoDLKvbdNHComPuL
-DnbkKvbdaRebhUFk
-DnbkKvbdhlEcmtby
-EOcLKvbdliETqUrB
-EPDKjvbdIxTbHkqQ
-DncLKvbdCEPaVjNG
-EOcLKvbdIjEAJogE
-DoCkKvbdsZkpSaHn
-EPDLKvbdEXxLtTtM
-DncKjvbdwXMAvAuu
-EPDKjvbdakMGPODA
-EPCkKvbdauBfxKsh
-EOcKjvbdCJKakJFj
-EPCkKvbdyXhjBozL
-DoDLKvbdkWWnDbYX
-DncKjvbdEPCjkXDE
-DoDKjvbdlqxtzTDi
-EPCjjvbdyTOJNSBg
-DoCkKvbdnGeYMmgZ
-EPCkKvbdaSFbhUFk
-EObjjvbdnCKWxPNu
-DoCjjvbdrWpLbhyR
-EPDLKvbdmRxtyrci
-DnbjjvbdSBdElJZL
-DnbkKvbdrXQLbiYq
-DoDLKvbdWHwuwfxz
-DoCjjvbdZRNFJNEq
-DncKjvbdUVkpJsaR
-DoCjjvbdbiMijfXY
-EPDKjvbdVTmTekvK
-DoCjjvbdeXytTrFz
-DoDLKvbdyYJKCQZk
-DoDLKvbdczZQYZQb
-EObjjvbdRadFMJZL
-DncLKvbdkVvnECYX
-DncKjvbduaDySneI
-DnbjjvbdwuNFQyMO
-DncLKvbdsrqrxzEc
-DoDLKvbdcSbjtEKB
-EPCjjvbdZtJIyETO
-DoDLKvbdJvUfDdgJ
-DnbjjvbdhbPDFWqR
-DncKjvbdcyyQYYpb
-DoDKjvbdWSNwbFMD
-DoCjjvbdmajXXoNu
-EPCkKvbdxZgeexEr
-EOcKjvbdxsOIlrBg
-DoDKjvbdZyEJmbkr
-DncLKvbdTkunaVni
-EOcLKvbdUQpoUthN
-DoDLKvbdyNsHxTJD
-DncKjvbdEztRElCi
-DnbkKvbdXnRAYVVt
-DnbjjvbdqAheAWgd
-DnbkKvbdCJLBkIfK
-EPDKjvbdUGzmkwWF
-EPCkKvbdSiZiqABM
-EPDLKvbdidkGtoAO
-EOcLKvbdYlSDsnLm
-EPDKjvbdMSWmZtpz
-DoDKjvbdlhdURVRa
-EOcLKvbdOYOuzdOU
-DncLKvbdrafMlGkZ
-EObjjvbdrylPraHn
-DnbjjvbdDncLKwCd
-DoCkKvbdoznELXoA
-DoCkKvbdmttykJrG
-DoDLKvbdBvzciEov
-EPCjjvbdeXzUUSFz
-DoDKjvbdtunYKQsA
-EObjjvbdqceJQNvB
-EOcLKvbdqTtGqqkU
-DoCkKvbdiGjDYujV
-EPCkKvbdRWnEDLhD
-EOcLKvbdcSbjtDia
-DncLKvbdTqROuVHm
-EOcKjvbdiifIKMxS
-EObkKvbdlYrqsZGt
-DoDKjvbdSBdFLhxk
-DnbkKvbdVUNUFkuj
-DoCjjvbdrzLpSaIO
-DoDKjvbdzGxlANFX
-DoDLKvbdfHjuqmpg
-EPDKjvbdZRMeIldq
-DncKjvbdMfcPlpVL
-DncKjvbdxKwDgzzG
-EOcLKvbdYzbfRjVy
-EObkKvbdWSNwbElD
-DoCkKvbdeFOrCXCj
-EObjjvbdbKlGOmcA
-EOcKjvbdDxXktUTl
-EPCjjvbdvBDySneI
-EPDKjvbdLFehCBRV
-DoDLKvbdiZuFlROG
-EPDKjvbdDoDLKvbd
-DoCjjvbdQwNdCkhD
-DoCjjvbdCJLBkIfK
-DnbjjvbdlqyUzSci
-DncLKvbdNHCpMpUk
-EOcKjvbdiMFEOVCy
-DoCkKvbdnGeYNOGy
-DnbkKvbdZoOIddzK
-EOcKjvbdFpATWffZ
-DoDKjvbdeOeTKtTr
-DnbjjvbdGGKSNhsq
-EOcKjvbdyXiKCPyk
-DoCjjvbdeAURNYKG
-DoDKjvbdpssfrRjt
-EPDKjvbdnVVZjjRf
-EOcKjvbdiZuGMQmf
-EOcLKvbdNHDPlotk
-DnbjjvbduCbtwVoP
-EOcKjvbdxUleQxlO
-DoDKjvbdnHFYMnGy
-DnbjjvbdUVlPitAq
-EPCkKvbdjAPgAofj
-DoCkKvbdTlVoAuoJ
-EPCkKvbdmSYtyrdJ
-EPDKjvbdBsAcTevr
-EPCkKvbdUyITzKnn
-DnbjjvbdbQHGdLzd
-EOcLKvbdezuyFIsw
-DoDLKvbdEXwlTtUM
-EOcKjvbdKyRJrztf
-DnbjjvbdtTSSxzEc
-DnbjjvbdHDjujBij
-DoCjjvbdsQVnicWG
-EObkKvbdZsiJYcrn
-EPDLKvbdUtNUFkuj
-DoDKjvbdNPwpumfs
-EOcKjvbdSBcdlJZL
-EPDLKvbdmfeXlmfy
-DncKjvbdIsZAsNXl
-DncLKvbdmJDsptrB
-DncKjvbdGYuUaEXb
-DncLKvbdyYJJbPzL
-DnbkKvbdrpVnicWG
-EPCjjvbdTqQoVUgm
-DoDLKvbdFVyPpMjF
-EObkKvbdZnnIeEyj
-EObkKvbdbUagYKtI
-DoCkKvbdqGDdtWBI
-EPDLKvbdFVxpQNKF
-DncLKvbdkWXNdCYX
-EPDKjvbddwystRez
-EOcKjvbdaNKasUlg
-DnbkKvbdNdctIhjd
-EPCkKvbdatagYKsh
-DoCkKvbdfNFvgMik
-EObjjvbdJYTbIMQp
-DoCjjvbdEYYMTtTl
-DncKjvbdWRmxCElD
-EPCkKvbdbsCjsdKB
-EOcLKvbdFVxpQMie
-EObkKvbdpaJFAWgd
-EPDLKvbdijGHimXr
-EPCjjvbdlhctQtqa
-EObjjvbdFVxoolie
-DncKjvbdrJAKEmOe
-DnbkKvbdzQnmIiwA
-EPCkKvbdkHfkeemk
-DnbjjvbdLGGHaaQu
-DnbkKvbdOSsugEtp
-DnbkKvbdZtIiYcrn
-DoCjjvbdQZNAGsSK
-EObjjvbdNPxRWOGs
-DoCkKvbdVUMsfLuj
-DnbjjvbdmJETqUqa
-EPDLKvbdBsAcUFvr
-EOcLKvbdIsZArlwl
-EPCjjvbdNddTiJKd
-DoDKjvbdyXhiaozL
-DncLKvbdjmCLzEfo
-EOcLKvbdRadElJYk
-DncLKvbdjbkkQfuH
-EObkKvbdXFxzUAOs
-DncLKvbdxZhGFwdr
-DoCjjvbdNsTugEuQ
-EObjjvbdRbDdlIyL
-DoCkKvbdePEsLUUS
-DoCjjvbdOStVgFVQ
-EPDLKvbdUtMtGLuj
-EObjjvbdFjdrbhMu
-EOcKjvbddeOrBwCj
-DnbjjvbdxUmFRYkn
-DnbjjvbdCEQBVimG
-EOcLKvbdvAdZTPEh
-EPCkKvbdGcjvJaij
-EPCjjvbdOFETiIjd
-EOcLKvbdemGWgNKL
-DoCkKvbdqTsfrRkU
-DncLKvbdbrcKsdKB
-EPDLKvbdTAFIhBoE
-DoCjjvbdKCjCqJbx
-DnbjjvbdNsUWHFUp
-EPDKjvbdkWWmcaxX
-EPDLKvbdbKlFoNcA
-DoCjjvbdkIGkefNk
-EPCkKvbdXFyZtAPT
-EPDKjvbdpxnhGpcx
-DoDLKvbdhanbeWqR
-EOcKjvbdliEUQtqa
-EObjjvbdbBVeFpPw
-EObkKvbdQdDApQdS
-EPDLKvbdnQZyVkZC
-EObjjvbdhbOcEwQq
-DnbjjvbdBdPaWKMf
-DoCjjvbdCTAbtGWr
-EPCjjvbdEvYpQMie
-EObjjvbdDxYLtUTl
-EObkKvbdCTBDTfXS
-EPCjjvbdmpZxvKyC
-EPCkKvbdRzKITDWA
-EObkKvbdemGXGmJk
-EOcLKvbdIryAsNXl
-DoDKjvbdkWXNcaww
-EObkKvbddCTNSAUN
-DncKjvbdvBDxroEh
-DncLKvbdiCPDEwRR
-EObjjvbdRkZGVHLT
-DoCjjvbdFkFSbhNV
-EPDLKvbdwjvdHzzG
-DoDLKvbdqquKmkBN
-EOcKjvbdsQVoJcVf
-EPCjjvbdYlSEUOMN
-EObkKvbdjKGIKMxS
-DncLKvbdRpUGifDw
-EObkKvbdEuxooljF
-EPDLKvbdzitpQETU
-EOcKjvbdTvLpKUAq
-DoCjjvbdrSVKmkAm
-EOcLKvbdEvZQPmJe
-EPCkKvbdfelZnHHA
-EOcLKvbdjhGlGGNk
-DncKjvbdCEPaWJmG
-DncLKvbdrpVnjDWG
-DoDLKvbdeOeTKtUS
-DoCkKvbdtbbuXVno
-EObkKvbdYpleJMeR
-DnbjjvbdiCPDEvqR
-DoDLKvbdUslsekuj
-DnbkKvbdGBPQyJzm
-EPCkKvbdtbcUwVoP
-DoDKjvbddxZssrFz
-DncLKvbdkIGlGFmk
-EPCkKvbdhuZdwRtb
-EObkKvbdehLWSOQg
-DoCkKvbdatafwjsh
-DoDKjvbdhfjCyViu
-DoCjjvbdFyUuAcxC
-EObkKvbdUMWPAvPJ
-EPDLKvbdxxIjBoyk
-DnbjjvbdMRvlytpz
-EPCkKvbdDxYLtUTl
-DnbjjvbdiVZeXSUb
-DoCjjvbdffMZmgHA
-EPDLKvbdnPyyVkYb
-EPCkKvbdZtIhyETO
-DncKjvbdRECaPqDr
-EPDKjvbdVrNxBeMD
-DnbkKvbdKVuFdFGi
-EOcLKvbdrzLosAgn
-EPDKjvbdLLAgvAKZ
-EOcLKvbdLYpirztf
-DncKjvbdnGeXlnHZ
-EOcLKvbdQdDAopdS
-DnbkKvbdptTfrRkU
-DoCjjvbdqGEFUVaI
-DncLKvbdrDeIomvB
-DoDLKvbdyOTHxSiD
-EOcLKvbdRpTfjGDw
-DoDLKvbdzitpPdTU
-DnbjjvbdUxhTykOn
-EOcKjvbdGFjSNhtR
-EObkKvbdidkGuPAO
-EObjjvbdVAapsQrZ
-EPDLKvbdQccAopdS
-EObjjvbdmozYukZC
-EOcKjvbdGFjSOIsq
-EPCkKvbdyzeNrHiI
-DncLKvbdEOcKjvcE
-DncLKvbdLFfIBaQu
-DoDKjvbdtlXwBUBX
-DoCjjvbdeOeTLTsr
-DncKjvbdiZuGLpnG
-DoCkKvbdWRnYBdkc
-DncLKvbduCbtvvOo
-DnbkKvbdGGKRnIsq
-EOcLKvbdVTmUFkuj
-EOcKjvbdFkEsDHlu
-DoDKjvbdQwNcbkgc
-DncLKvbdWRmwbFLc
-DnbjjvbdHlBzmwRL
-EPDKjvbdDncKjwCd
-EObkKvbdGBPRYizm
-EOcKjvbdqrVLNjaN
-EObjjvbdqFceUVaI
-DoCkKvbdZQmFImFR
-EPDLKvbdmIctRVSB
-EObkKvbdjAQHBPfj
-EObjjvbdrEFIonWB
-DnbjjvbdsPuoKCuf
-DoDKjvbdtbbuXWPP
-EPDLKvbdOStWGduQ
-DoCkKvbdUQqPUuIN
-EPDLKvbdwyhFewdr
-EObkKvbdShyiqAAl
-EPDLKvbdGZUuBEXb
-EPCkKvbdHffyyXwg
-EObjjvbdGBOpyJzm
-EObkKvbdZirgpGaf
-EObkKvbdRjxfUfkT
-EPDKjvbdZHWdAPSi
-DnbjjvbdVrOYBdkc
-DoCjjvbdGGKSNhsq
-EOcKjvbdJqZeOenF
-EOcLKvbddBsNSAUN
-DncKjvbdZtJJYcsO
-EPDKjvbdBraDTevr
-DoCkKvbdRDcApQdS
-EObjjvbdGGJrNiTq
-DoCjjvbdGLFTCgmV
-DoCjjvbdtlXwBUAw
-DncLKvbdQwNdClHc
-DoDLKvbdygYlAMeX
-EPDLKvbdTvMQKTaR
-EPCjjvbdiMFDnVDZ
-DoCjjvbdiBoDFXRR
-EObkKvbdUQqOuUgm
-EOcKjvbdaMkBsVNH
-EObkKvbdwuNEqZMO
-EObjjvbdLAkGlbXq
-EObkKvbdkCkkQgUg
-DncLKvbdVqnYCFLc
-EPCkKvbdxVMeRZLn
-DncLKvbdRXOEClHc
-EObjjvbdvwMAvBWV
-EObjjvbdIwsahLpp
-EObjjvbdKDKCpicY
-DoDKjvbdlrZUzTEJ
-EOcLKvbdyYIjBpZk
-DncLKvbdxsNhlqag
-EPDKjvbdgPazvdXh
-EPDLKvbdbKlGPNcA
-DoCjjvbdqUUHSRjt
-DnbkKvbdNeDsiJKd
-DnbjjvbdqGEFTvAh
-DoDKjvbdnUtykKRf
-EPDKjvbdZtJJZDrn
-DoCjjvbdmRxtysEJ
-EOcKjvbdQmXbYnUz
-EPDKjvbdjmCLzFGo
-DncKjvbdsBfMkfkZ
-EPCkKvbdFVxpPlie
-DnbkKvbdZLrEUOMN
-DoCkKvbdEOcKkXDE
-EObkKvbdvBEYsPEh
-EPDKjvbdcJMjLGXY
-EOcLKvbdOYPVzcnU
-DnbkKvbdsQWOjDWG
-EOcLKvbdfHjvRnRH
-DoDLKvbdmbKXYPOV
-DncKjvbdrpWPJcVf
-EOcKjvbdURROuUgm
-DnbkKvbdrovOicWG
-EObjjvbdLYpirzuG
-DnbjjvbdGQASvgGZ
-DnbkKvbdYzcFqjVy
-DncKjvbdBsBCtFvr
-DoDLKvbdYgXEAOri
-EOcLKvbdqTsfqqjt
-DncKjvbdPIAYZAYa
-EOcLKvbdypnliJwA
-DnbkKvbdhyuGLqNf
-EOcLKvbdjhGkfGOL
-DncKjvbdjblLRGuH
-EPCjjvbdxwhibPyk
-EOcKjvbdBhkCLIfK
-DnbjjvbdJTZArlxM
-DoCkKvbdRjxetgKs
-EObkKvbdiUyeWrVC
-EOcKjvbdwXLaWAuu
-EPDLKvbdssSTZZdc
-EObkKvbdcSbjtDia
-DncKjvbdgGMZnHHA
-DoCkKvbdatafwkUI
-DncLKvbdnCKWxPNu
-EObjjvbdyOShXrhc
-EPCjjvbdpyPHfqEY
-DoDKjvbdbUbGxKsh
-EOcKjvbdypoNJKXA
-EObkKvbdyTOJMrBg
-DoDLKvbdiZtfLpmf
-EPCkKvbdLGFgbBQu
-EOcLKvbdCJLBkJFj
-DnbkKvbdUxgszLPO
-DoDKjvbdUQqPVVHm
-EPCjjvbdijGIKNYS
-EPDKjvbdCJKajhej
-EPDLKvbduoTzqLPU
-DnbjjvbdJTZBTMwl
-EOcLKvbdLAjfmBwq
-DoDLKvbdQwOECkhD
-DoCjjvbdQYmAHTSK
-DoDKjvbdEuyQQMjF
-DoDKjvbdZdwfzhIb
-EOcKjvbdyTOJNRag
-DoDLKvbdbBVdfQPw
-DoCkKvbdbVBfxLUI
-DncKjvbdcIljKevx
-EOcLKvbdhgKDZViu
-EObjjvbdOTUWHEtp
-DncKjvbdZRMeIldq
-DnbjjvbdkHgMGGNk
-EOcLKvbdZMSETmlN
-EPCkKvbdjcMKpfuH
-EPDLKvbdiBncFXQq
-EObjjvbdJcKCqKDY
-DoDKjvbdQwOEClID
-EPCkKvbdRpUHJecw
-DoDKjvbdZjSgogBf
-DoCkKvbdEObkKvbd
-DoDLKvbdDwwktUTl
-DoCkKvbdSKyGVHKs
-DnbkKvbdZMSETnMN
-DncLKvbdiZuGLpmf
-EObjjvbdjcLjpgVH
-EOcLKvbdYzcFqjVy
-EPCjjvbdQvnDcLhD
-DoCkKvbdDihJvYKA
-EPDLKvbdJqZeOenF
-EOcKjvbdWXJXvDdg
-DoCjjvbdznpQeCkx
-EPCjjvbdjJehJmXr
-DoDKjvbdmSYuZsDi
-DoDKjvbdFVyPolie
-DnbjjvbdULvPAvOi
-DncKjvbdwzIGFwdr
-DnbkKvbdOEcsiJKd
-EPCkKvbdEJhJuwjA
-EObkKvbdYSkaNUOx
-EObkKvbddoFSkTtS
-DoDLKvbdFkFTDHlu
-DoCjjvbddwzTtRez
-EOcLKvbdDwwlUTtM
-DoDKjvbdHDjvJaij
-EObkKvbdyTOIlrBg
-EOcLKvbdtSqsYzFD
-EObkKvbduVmwjQsA
-EPDKjvbdbiMjKfXY
-DncLKvbdsQWPKDWG
-DncLKvbdRbEElIyL
-DnbjjvbdGKeTDHlu
-EPCkKvbdrpWOjDWG
-EObjjvbdVwJYWEFH
-EPCjjvbdvBDySoFI
-EPCkKvbdZMSDsmkm
-EObkKvbdqYnhHREY
-EObjjvbdyqPMiJwA
-DncLKvbdCTBCtGXS
-EPCkKvbdfekynGgA
-EPCkKvbdvvkaWBVu
-DoCjjvbdGZUuAdYC
-DoDKjvbdpyOgfqDx
-EPCjjvbdePFTKstS
-EOcLKvbdVviXudFH
-EPCkKvbddZyQYZQb
-DnbkKvbdUaCQrqRy
-EPDLKvbdQwNdDMID
-DncKjvbdUaCRTQrZ
-DnbjjvbdHDkWJbKK
-EOcKjvbdOTTvGduQ
-DnbjjvbdssRrxzEc
-EObjjvbdezuxdiTw
-EOcLKvbdGLFTCgmV
-EPDLKvbdUxgtZkOn
-EOcLKvbdbrbjscia
-DnbjjvbdjJfHimXr
-EOcKjvbdjcMLQgUg
-DoDKjvbdlYrqrxft
-EPDKjvbdGYttaEXb
-EOcLKvbdhbPDEwQq
-EOcKjvbdvAcxroEh
-DoDKjvbdVgxVxHYz
-DoCkKvbdTqQnuVIN
-DoCjjvbdrXQMCiZR
-EOcKjvbdMSWlytpz
-DoCjjvbdBiLCLJFj
-EObkKvbdUyHtZkPO
-DoDLKvbdGcjujCJj
-EPCjjvbdfkGzbfAE
-DoCjjvbdDoCjjwDE
-DnbkKvbdqGDdsvAh
-DoDLKvbdjvXNdBww
-EOcKjvbdANHySvyx
-DoCjjvbdeJjRvUzn
-DncKjvbdqUTgRqkU
-DncLKvbdEvZQPljF
-DnbjjvbdSPsgKFdX
-EOcKjvbdGLFScHmV
-EPCjjvbdqUTgRqkU
-EPCkKvbdNxOuzdOU
-DoCkKvbdpfEEtWBI
-EOcLKvbdDwwlTtTl
-EPCjjvbdSZjITDWA
-DncKjvbdQwNcblID
-DnbjjvbdijGIKMwr
-DnbjjvbdYpldiMdq
-DncLKvbdemGXHNKL
-EPCkKvbdEKHjWYKA
-DoDLKvbdwXMBWAvV
-DnbjjvbdQwOEClHc
-DnbkKvbdbUbHYKtI
-DncLKvbdCSaCtFvr
-DncLKvbdEuyPpNJe
-EPDKjvbdFVyPolie
-DncKjvbddneSkTtS
-EOcKjvbdZtJIxcsO
-EOcKjvbdiGicZWJu
-DncLKvbdOFDtIiLE
-DoDLKvbdOSsufduQ
-DnbkKvbdMfcPmQVL
-EObjjvbdiUzEwSVC
-DoCkKvbdCIkBkJFj
-DncLKvbdYkrETmlN
-EObjjvbdqZOggREY
-EPCkKvbdHDkViajK
-DnbkKvbdbsDLTdKB
-EPDLKvbdlqxtzTDi
-DncKjvbdLGFgbAqV
-EObjjvbdoAKztHcn
-EPDLKvbdRXODblID
-DoCjjvbdIHGzYwxH
-EObkKvbdNPwqVnHT
-EOcKjvbdxrnImRag
-EOcLKvbdiLddNuCy
-DoCkKvbdkMakzEfo
-EObkKvbdnPyxukYb
-EPCjjvbdZdwfzgiC
-EPCkKvbdnHEwmNfy
-EObjjvbdySmiNRag
-EOcKjvbdzeZnzdyp
-EPCjjvbdJvVFdEgJ
-EOcKjvbdZQldiMeR
-EOcKjvbdFyVVAdYC
-DncKjvbdJXsahMRQ
-DnbjjvbdfNGXGljL
-EOcLKvbdwWlAvAvV
-DncLKvbdkIHLefNk
-DncLKvbdliDtQtrB
-DoCkKvbdxZgefXdr
-DncKjvbdCWzchdpW
-EPCkKvbdpyPHfpdY
-EOcKjvbdhbOcFWqR
-DnbjjvbdzjUpPdSt
-DoDLKvbdZMRdUOLm
-DncLKvbdVwJXucdg
-EPCjjvbdWXIxVcdg
-DnbkKvbdMpXpvOHT
-DncLKvbdRkZGVHKs
-DoDKjvbdmpZyWKxb
-DoCjjvbdegkWRmpg
-DncLKvbdyzeOSHhh
-EPDLKvbdRECaPpdS
-EPDKjvbdqvpLcJZR
-DoCjjvbdRDbaPqDr
-EObjjvbdRECaPqDr
-EOcLKvbdsBfNLgLZ
-DncKjvbdZyEKOCkr
-DnbkKvbdSPsgJfEX
-EPDKjvbdZRMdiMeR
-EPDLKvbdDwwktTsl
-EPDLKvbdLhbLpxAS
-EPDKjvbdZirgpHBf
-DoCkKvbdmtuZkJqf
-DnbjjvbdwWkaWAuu
-DnbjjvbdRDcBPqES
-DnbkKvbdyzeNqgiI
-EObjjvbdYkrEUOLm
-DoCkKvbdmtuZkKRf
-DoCkKvbdNdctIhkE
-DnbjjvbdhytfLqOG
-EOcLKvbddZyPwxpb
-EPCjjvbdYzbeqivZ
-EOcKjvbdwygfGXeS
-EOcLKvbdRosfifEX
-EPCkKvbdznopdbkx
-EObkKvbdVBBqSqSZ
-EObjjvbdQlxCZNtz
-EPCkKvbdhlFDmtby
-DoDLKvbdCDpAvJmG
-EPDKjvbddeOrCXDK
-EOcLKvbdrovOjDWG
-DnbkKvbdIGfyyYYH
-EObkKvbdmbKWwnmu
-EOcLKvbdkDLjqGuH
-EPDLKvbdqrUkNjaN
-EPDKjvbduDDVXWPP
-EObjjvbdZnnJFEzK
-DnbjjvbdaRfCgtGL
-DoCkKvbdGKdsDHlu
-DncKjvbdqlyiyMHi
-DoDLKvbdSLYetgLT
-DnbkKvbdZQleJNEq
-EOcLKvbdZLrETnMN
-DnbjjvbdiUydwRuC
-EObjjvbdnPzYvLYb
-EPCjjvbdGYuUaEYC
-EObjjvbdACqwiyiQ
-DncKjvbdIHGzZYXg
-DncKjvbdxrnIlqag
-DnbjjvbdySmhlqag
-DoCjjvbdSCEFMJZL
-EObjjvbdSKxfUfjs
-DnbjjvbdnUtyjjRf
-DncLKvbdkyTRsZGt
-DoDLKvbdWRnXbElD
-EOcKjvbdjvXNcbYX
-EOcKjvbddjKSWUzn
-DoDKjvbdvBDxrneI
-EOcLKvbddndsKtTr
-DoDLKvbdZjTHpGbG
-DnbkKvbdpfDdsuaI
-EPCkKvbdfMfWgNJk
-DoCkKvbdjJegjNXr
-DoDKjvbdcTDLTdKB
-EPDLKvbdwzHfFxEr
-DncKjvbdfMfWgMik
-DnbkKvbdrbFllGkZ
-EPCkKvbdCIkCLJGK
-EObjjvbduDDUvvOo
-EOcKjvbdDxYMUTsl
-EOcLKvbdsPvOibuf
-DncKjvbdUsltGLvK
-EPCjjvbdyOShYTIc
-DoDKjvbduaEZSoEh
-DncKjvbdLrXMzUpz
-DoCkKvbdNsTufeUp
-EObkKvbdLGGIBaQu
-EPCjjvbdmSZVZsEJ
-DncLKvbdQdDAoqDr
-DoCkKvbdKCicRJbx
-EPCkKvbdxwhibQZk
-DoDKjvbdTvMQJsaR
-DoCkKvbdYzcGSJuy
-DnbkKvbdwyhGFwdr
-DoCjjvbdEOcLKwDE
-DoCkKvbdGGKRmhtR
-EOcLKvbdrzMQTAgn
-DoDLKvbdJvVFceHJ
-DnbkKvbdfMfWfmJk
-EPCkKvbdmajWwnmu
-EPCjjvbdxrmiMqag
-EOcKjvbdqUTfqqkU
-EObkKvbdoAKztHcn
-EObkKvbdkyTSTZHU
-EPCjjvbdiCOcEwRR
-DnbkKvbdGZUtaDwb
-EPCjjvbdYORAXuWU
-DoCkKvbdULvPAuoJ
-DnbjjvbdcSbjscjB
-DoDKjvbdLrXMytpz
-DncKjvbdIryBTNYM
-DoCjjvbdZyDinCkr
-EPDLKvbdZoOJFEyj
-DncLKvbdajkfOmcA
-EPDLKvbdRNYCYmtz
-DoCkKvbddePRawDK
-EOcKjvbdbUbHYKtI
-EPCjjvbdbrbjscjB
-EPDKjvbdKDJcRKCx
-EObjjvbdqcdiQOVa
-EPDKjvbdZjTIPgBf
-DnbjjvbdrSUjmjaN
-DnbjjvbdEXxLsstM
-EPCkKvbdFjeSbglu
-DnbkKvbdLqwMytpz
-DoDKjvbdUGznMXVe
-EObkKvbdpstHRrLU
-DoDKjvbdYTLaNUPY
-DnbkKvbdGKdrbhNV
-EObjjvbdRMxCZNtz
-DncLKvbdDihJuwjA
-EPCjjvbdOFDtJIkE
-DnbkKvbdliEUQuSB
-DoDKjvbdkCkkQftg
-EPCkKvbdGZVVAcwb
-EObjjvbdkyTSSxgU
-EPDKjvbdIryBSlxM
-EOcKjvbdWIXvXfxz
-DoDLKvbdhfjCyWKV
-DoDKjvbdNQXpumfs
-DncKjvbdiMEcnVCy
-EPDLKvbdxVMeRZLn
-EPCkKvbdDoDKjwDE
-DnbkKvbdSCEFLiZL
-DoCjjvbdqYoHgQcx
-EObjjvbdxZhFexFS
-EOcLKvbdkDMLRGuH
-EPCkKvbdVwJXvDdg
-DoCjjvbdjhHLefOL
-EOcLKvbdiCOcFWpq
-DnbjjvbdrovOjCvG
-DncLKvbdRzKHsCvA
-EPCkKvbdDoDLKwDE
-EOcKjvbdrNZjZLhJ
-EObjjvbdTAFIhBoE
-DncKjvbdlqyVZsDi
-DncLKvbdjggMFenL
-EPDLKvbdUsltGMWK
-DoCjjvbdkyTRsZGt
-EOcLKvbdrzMPsBHn
-EPCkKvbddZxpYYpb
-DncLKvbdGKdsCgmV
-DnbkKvbdvAdYsPEh
-DoDLKvbdqUUGrSKt
-EPCjjvbdxnTHxTIc
-EOcKjvbdZisIQGaf
-DncLKvbdBhjbLJFj
-DoCkKvbdJSyBTNYM
-DnbjjvbdmfdwlmgZ
-EOcLKvbdJcJcRJbx
-DncLKvbdmoyyWLYb
-EObjjvbdSKxfUfkT
-EObjjvbdlAlnmALA
-DoDLKvbdTlVnaVoJ
-EOcKjvbdnCKWwnnV
-EPCjjvbdjbkkRGtg
-EPCjjvbdULuoBVoJ
-EPDKjvbdwMvAMceN
-DnbkKvbdznopdcLx
-EPCkKvbdeuzwoizs
-EPCjjvbdpssfrRjt
-EOcKjvbdiGibyWJu
-DnbkKvbdYSlBNToY
-EPDKjvbdkVwNcbYX
-DoCjjvbdsPuoJcVf
-DnbkKvbdrbGNLgLZ
-DnbkKvbdRbEFMJYk
-EObjjvbdqceIonVa
-DnbkKvbdTpqPUuHm
-EOcLKvbdVviXvEEg
-EOcLKvbdvAcxrndh
-DnbjjvbdTYKkmzkY
-EOcLKvbduDCuXVno
-EPCkKvbdEvYpPlie
-DncLKvbdaSGCgtFk
-DoCjjvbdpfDdtWBI
-DncLKvbdHDkWJbJj
-DncLKvbdqZOgfpdY
-EPCkKvbdFxuVBEXb
-DoDKjvbdnBivwnnV
-EPCkKvbdRWmcbkhD
-EObjjvbdfIKvSOQg
-DnbkKvbdcIlikGWx
-EOcKjvbdQdDBQQdS
-EPCjjvbdnPzZWKyC
-DnbkKvbdZxcimbkr
-DncLKvbdLFfHaaRV
-DoCjjvbdYSlBNToY
-DnbjjvbdKCicRKDY
-EPCkKvbddneSjtUS
-EObjjvbdmIctRUqa
-DncKjvbdYqMdiNFR
-DnbjjvbduaDyTPFI
-EPCkKvbdePEsLTtS
-EPCkKvbdbUagYKsh
-DoDLKvbdssSSxzFD
-EObkKvbdMuSrLNAX
-EPDLKvbdddnqbWbj
-DnbkKvbdvAcySneI
-EPDKjvbdatbGxLUI
-EOcLKvbddePRbWbj
-DoDLKvbdijGIKNYS
-EPCjjvbdNrsugEtp
-EOcLKvbdxZhGGYEr
-DnbkKvbdTkvPAvPJ
-DoCjjvbdFyUuAcwb
-DnbjjvbdJTZBTMxM
-EPDLKvbdaMkCStmH
-EPDLKvbdjKGHimYS
-DnbkKvbdelewGlik
-EObjjvbdkHgMGGOL
-EObkKvbdURRPUuHm
-EOcLKvbdjKFhKNYS
-EPDLKvbdhyuFkpnG
-EOcLKvbdRosgJecw
-DoCjjvbdczYoxYqC
-DncLKvbdzaAPGgCM
-EPDKjvbdiUzEwSUb
-DoCjjvbdKQzEneme
-EObjjvbdatagXkTh
-DoCjjvbdwtldqYkn
-EOcKjvbdUxgszLOn
-EPCkKvbdUaBprprZ
-EOcLKvbdYNqAYVVt
-EObjjvbdbUafwkTh
-EPDLKvbdcIljLGWx
-DnbjjvbdNHDPlotk
-EOcLKvbdkIHMFfOL
-EPDKjvbddePSCXDK
-EOcLKvbdbUafxLTh
-DoDKjvbdQlwaxmtz
-DoCkKvbdbQHHELzd
-EPDLKvbdhficZWKV
-DoDKjvbdqrVLOLAm
-DoCjjvbduDDUvvPP
-EPCjjvbdCEQAuilf
-EOcLKvbdEASIlywX
-DncLKvbdRNXayNtz
-EOcKjvbdVrOXaeMD
-EPCjjvbdFWYopNKF
-DnbkKvbdSQTfjFcw
-DoDLKvbdJTZAsMwl
-DoCjjvbdiCPDEvpq
-DncKjvbdVwIwuceH
-EPDLKvbdJvVFcdfi
-EPCjjvbdcbSlrATm
-DnbjjvbdqBJFAXIE
-EPCkKvbdTAFJHbOd
-EPCjjvbdcTCkUEKB
-EPCkKvbdxwhibPzL
-EPCkKvbdRpTfifEX
-EPDLKvbdvAdYsOeI
-DncKjvbdpxngfpdY
-EPCjjvbdEXwksstM
-DnbkKvbdNrsufeUp
-DnbkKvbdJKEAJogE
-DoCkKvbdNsUWGduQ
-DoCkKvbdbrcLTcjB
-EOcKjvbdiHJcZViu
-EObkKvbdEztQdkcJ
-DoCjjvbdliETptqa
-EOcLKvbdOEdUIhjd
-DoCkKvbdSKxfVGkT
-EPCjjvbdIsZAsMxM
-EOcKjvbdZsiIyDsO
-DncLKvbduDCtwWOo
-DnbkKvbdEztQdlCi
-DnbjjvbdLZQjSztf
-DoDLKvbdXmqAXuVt
-EPCjjvbdxsOJNSCH
-DoDLKvbdRadElJZL
-EOcLKvbdWRnXbEkc
-DncKjvbdSCEFLiYk
-EPDLKvbdidkHVPAO
-DoCjjvbdkClKqGtg
-EPDKjvbduLxXBUAw
-DncLKvbdqUTfqqkU
-EObjjvbdcImKKevx
-DoDLKvbdMgCpMpVL
-DnbjjvbdtTRsYydc
-DnbkKvbdKefHbBQu
-EOcKjvbduoTzpjnt
-DoCjjvbdjuwNcaww
-DncKjvbdTkvPBVni
-EPDLKvbdapGfdLzd
-EPDKjvbdvAdZTPEh
-EPCkKvbdwXLaVaWV
-EOcKjvbdZoNhddyj
-DncKjvbdqceIonVa
-DnbjjvbdIwsbHkqQ
-DoDKjvbdjFKfuPAO
-EOcLKvbdbhmJkFvx
-DncKjvbdDxYMUUTl
-DnbjjvbdMfbpNQVL
-DoDLKvbdZeXfzhIb
-EOcLKvbdVAbRSpqy
-DncLKvbdZxcjOCkr
-EOcKjvbdyTNiNSCH
-EObkKvbdiLddOUcZ
-DoCjjvbddwystRez
-DoDKjvbdUsmTelWK
-EPDLKvbdEPCjkWcE
-DoDKjvbdIwsaglQp
-EObkKvbdGcjvJbKK
-DoCkKvbdRzJgrbvA
-EObkKvbdkxsSSxft
-DncLKvbdfHjvSNpg
-DnbkKvbdxsNiMqag
-DoDLKvbdcImKKevx
-EOcLKvbdJutfDdgJ
-DoDLKvbdhancEwRR
-EObkKvbdnPzYvKyC
-DoDKjvbdNHDPlouL
-EPCkKvbdKaKgMbXq
-EOcLKvbdqUTgSRkU
-EPCkKvbdZjSgpHBf
-DncLKvbdHffzYxXg
-DoCkKvbdFkErbhMu
-EObjjvbdhancEwQq
-EPDKjvbdJYUCHkpp
-EPDKjvbdtkwwBUAw
-EOcLKvbdiZuGMRNf
-EObkKvbdrJAKElne
-DnbjjvbdIHHZxwwg
-EPDKjvbdkHgMGGNk
-DoCjjvbdeOeSjtUS
-DoDLKvbdJbicQjCx
-DncKjvbdnGeXlnGy
-EPDKjvbdKVtecdfi
-EOcKjvbdULuoBVni
-DnbkKvbdmJDtRVRa
-DncLKvbdJTZAsMxM
-EPDKjvbdVgxVxHYz
-EPCjjvbdVBCRSqSZ
-EPCjjvbdJqZdnfOF
-DncKjvbdqdEiQOVa
-DnbkKvbdZLqdTnLm
-EOcKjvbdzHZMANFX
-DncKjvbdVrNxBdkc
-DnbjjvbdKkAgvAKZ
-DnbjjvbdmbKWxOnV
-DoDKjvbdYqMeImEq
-EObjjvbdbUagYKtI
-DncKjvbdQZNAHSqj
-DoDLKvbdfoazvcwh
-DnbkKvbdVvhwvDdg
-DoDKjvbdURQoUthN
-EPDLKvbdvBDyTOeI
-DnbjjvbdrRuKmkBN
-DnbkKvbdRbDdlIxk
-EObjjvbdSCDdkhyL
-DoDKjvbdSBceMJYk
-DoDLKvbdwyhGGYFS
-EPDKjvbdQvmcblID
-DoDLKvbdaaWFGQQX
-DoDKjvbdEASImZvw
-EPDLKvbdnQZyWLYb
-EPDKjvbdbrcLUEJa
-EOcLKvbdKCicQjDY
-EPCjjvbdVBCQsQqy
-EPCkKvbdkaNPNALA
-DncLKvbdaNKartmH
-DoDLKvbdCTAbtFvr
-EObjjvbddZxowxpb
-EObkKvbdTpqOuUgm
-DncLKvbdZQleJNFR
-DnbjjvbdUVlPisaR
-EObjjvbdBsBCtFvr
-EPCjjvbdJutecdgJ
-EOcKjvbdfNFvgNKL
-DncKjvbddneSjtUS
-DoDKjvbdjcMKqGtg
-EOcLKvbdGdLWKCKK
-EOcKjvbdRDcBPpdS
-DoCkKvbdauCGwkTh
-EPCjjvbdaNLCStmH
-EOcKjvbdelfWgMjL
-DoDLKvbdtSrSxyeD
-EPCjjvbdemGXGmKL
-EOcLKvbduDCuXWOo
-DncKjvbdauBfxLUI
-DnbjjvbdIHGyyXwg
-EPCjjvbdEvYooljF
-EObjjvbddneTLUTr
-DoCjjvbdySmiNRag
-DoDKjvbdqUUHSRjt
-EObjjvbdczYpXxpb
-EObkKvbdaMkBrtlg
-EPDLKvbdnUuZkKRf
-DoDKjvbdcScKsdJa
-EPCjjvbdsrrTYydc
-EObjjvbdZoNiFEyj
-EPDLKvbdmttyjirG
-EOcLKvbdYqMeIleR
-DoDKjvbdKWUfEFGi
-EOcLKvbdcyxoxYqC
-EObkKvbdNeETiJLE
-EPCkKvbdUMWOaVoJ
-EPCjjvbdWSOXbElD
-EPCkKvbdNHCpNPuL
-EObkKvbdEuyQQNJe
-DoCkKvbdmgExNOGy
-EOcKjvbdZtJJYcsO
-EOcLKvbdMpXqVnGs
-EObjjvbdbsDLTcjB
-EPCjjvbddoFTLUTr
-EOcLKvbdaNKbTVNH
-DoCjjvbdJcKCpicY
-DoDLKvbdsBfMlGjy
-EPDKjvbdqiAJdlne
-EObkKvbdKefHaaRV
-DoDLKvbdbiNJjewY
-EPCkKvbdVTltFlWK
-DoDLKvbdbBWFGPpX
-DncLKvbdVZITzKoO
-EPCjjvbdnUtzLKSG
-EPCkKvbdBraDTevr
-EPDLKvbdTkunaWPJ
-EObjjvbdZRNFJNEq
-DnbkKvbdxUldqYkn
-EPDLKvbdtvOYJpsA
-EOcLKvbdJvUfEEgJ
-DoDKjvbdlYrqsZGt
-DncKjvbdePFSjstS
-EPDLKvbdqquLOLAm
-DoCkKvbdSPtHKFdX
-DoCjjvbdZyDjNcMS
-EPDKjvbdTlVnaWPJ
-EPCjjvbdZirgpHCG
-EObkKvbdNQYQvNfs
-DncKjvbdqqtjnLBN
-DoDKjvbdjJehJmYS
-DncLKvbdrNZixlHi
-EPDLKvbdMfcPlpVL
-EPCjjvbdUWMQJtBR
-DoCkKvbdfMfWfljL
-DnbjjvbdaRfDHtFk
-DncLKvbdiMFDnVDZ
-DoCkKvbdXrkaNToY
-DoCjjvbdZLqdUNlN
-EObkKvbdRjxetfkT
-EOcLKvbdmgFXmOGy
-EPDKjvbdUQpntuHm
-DoDKjvbdpstHRrKt
-DncLKvbdHkazmwRL
-EObjjvbdpfEFUWAh
-DoDKjvbdZyEJnDMS
-EObkKvbdiBoCeXQq
-DoCkKvbdeATplxKG
-DncLKvbdWRmwadkc
-EPDKjvbdUQqPUthN
-DoCjjvbdnBjXXnmu
-EPDLKvbdZjTIPfbG
-EPCkKvbdWHwuxGxz
-DncKjvbdYpmFJMdq
-DoDKjvbdhbPDFXRR
-DnbkKvbdBdQBVimG
-DoCjjvbdmIctRUqa
-EPDKjvbdZyDjNbkr
-EOcLKvbdQYmAHSrK
-DnbjjvbdqYoHgQcx
-DncKjvbdqiAKFMoF
-DncKjvbdOTUWHEuQ
-DoCjjvbdVTmTfLuj
-DoCkKvbdddoRbWcK
-EPDKjvbdIsYaTNYM
-EObkKvbdRosfiedX
-EOcKjvbdcTDLUEKB
-EOcLKvbdmozYujxb
-DnbjjvbdZirgogBf
-EPCjjvbdKWUeceHJ
-DnbjjvbdZoOJEdzK
-EPDKjvbdEJhKVwjA
-DoCkKvbdfpBzvcxI
-DoDKjvbdlrYtysDi
-DoDLKvbdZjSgofbG
-DoCjjvbdUtMtGMVj
-EPCjjvbdGGKRmiTq
-EPCkKvbdQvnDcMID
-DnbkKvbdKCjCqJbx
-EPCkKvbdYpleImEq
-DoDLKvbdjKFgjNXr
-DoDLKvbdZshhxcrn
-EPDLKvbdnVVZjjRf
-EOcKjvbdqdFIpNua
-DnbjjvbdVwIxVdEg
-DoCkKvbduaEZSneI
-DnbkKvbdznoqFClY
-DoCjjvbdoAKzsgcn
-EOcKjvbdSLZGVGkT
-DncKjvbdiCObeWqR
-EPCjjvbdWRnXbEkc
-EObjjvbdRotGiecw
-EObkKvbdKDKDQibx
-DnbjjvbdlYsRsYft
-EOcKjvbdUaBqSprZ
-DoCjjvbdhkdcmuDZ
-EOcKjvbdjgflFfNk
-DoCjjvbdGKdrcINV
-EOcLKvbdEJgjVxKA
-EObkKvbdSxKkmzkY
-DnbjjvbdsZkosBIO
-DoCjjvbdBvzchePv
-EObkKvbdGYtuBEXb
-EPDKjvbdiLeENtby
-EPCkKvbdRNXbYnUz
-EObjjvbdfHkWRnQg
-EObkKvbduDDVXWOo
-DoCkKvbdJbjCqJbx
-EPDLKvbdpedFTvBI
-DncLKvbdjJegjMwr
-EPCjjvbdUxgszLPO
-EObkKvbdxmrhXsJD
-EOcKjvbdJSxaSmXl
-EPDLKvbdfNFwGmJk
-EPDKjvbdsrrTYydc
-DncKjvbdhgKDZVjV
-EPCkKvbdZMRctNkm
-DoDKjvbdezuyEhtX
-EPCkKvbdEXwlUTsl
-EPDLKvbdeAUQlxKG
-DoDKjvbdZnmiEdyj
-EObkKvbdrzMPraIO
-EPCjjvbdxxIibPyk
-EPCkKvbdKfFgbBRV
-DoDKjvbdyzeORhIh
-DnbkKvbdbAvFGPpX
-DncKjvbdZoOJEdyj
-DnbkKvbdrJAJdmOe
-DoDKjvbdKVuFdEfi
-EOcKjvbdqdFJQNvB
-EPDLKvbdOEctIhkE
-EPDLKvbdvBEYsOeI
-DncKjvbdHELVjBjK
-DncLKvbdZshhyDsO
-EPDKjvbdGdKuibJj
-DoCkKvbdEYXkstUM
-DnbjjvbdJpyeOfNe
-EPDKjvbdzoPpdbkx
-DoCkKvbdMSXMytpz
-DncLKvbdqZOggQcx
-DoDKjvbdmuUyjirG
-DnbkKvbdNVSqkNAX
-DncLKvbdRotHJfEX
-EOcKjvbdZyEJnCkr
-EPDLKvbdyYJKBpZk
-DnbkKvbdxmrgxTJD
-DnbkKvbdhaoDFWqR
-DncKjvbdbhmJjevx
-EObjjvbdSKyGVGjs
-DnbjjvbdSKxfVHKs
-DnbjjvbdqdFIomua
-DnbkKvbdkHflGGOL
-DoDLKvbdqGDeUVaI
-EObjjvbdjmBlZeHP
-EPCkKvbdmttykJrG
-DncLKvbdRXOEDLgc
-DoDLKvbdhaoDFWqR
-DoDKjvbdvvkaWAuu
-DoCkKvbdbhmKKfWx
-EObjjvbdSBdFMJZL
-DnbjjvbdnUuZjjSG
-EPDLKvbdliDtQuSB
-EOcLKvbdsCFmMGjy
-DnbjjvbdtunXjQsA
-EObkKvbdkCkjqHUg
-EObjjvbdDoCkKvbd
-DnbkKvbdiZuFlROG
-EOcKjvbdRNYCZNtz
-EOcLKvbdxUmEpxlO
-EPCkKvbddePSBwDK
-EOcLKvbdauBfxKsh
-DoCjjvbdtkwwBTaX
-EObjjvbdmgEwmNfy
-DnbjjvbdOStWHEuQ
-EPCkKvbdGLFTChNV
-EPCkKvbdKDJbpjDY
-DoDLKvbdnPzZVjxb
-DoCjjvbdFVyPomJe
-DncLKvbdACqwizIp
-EPCkKvbdZirhQGaf
-DncKjvbdtTRsZZeD
-EObkKvbdLBLHMbYR
-EOcLKvbdrNZjZLgi
-EObjjvbdTXkLmzkY
-EPCkKvbdBsAbsfXS
-EOcKjvbdeATpmXif
-DoCkKvbdMSWmZuQz
-DncLKvbdVTmTfMVj
-DoDLKvbdZxdKODMS
-EPDKjvbdZjShPgCG
-EPDLKvbdxVMdpxkn
-EPDLKvbdcSbjsdKB
-EPDLKvbdiifIJlwr
-DoDKjvbdKQydoFnF
-EObkKvbdegkWRmpg
-EObkKvbdiBncFXQq
-DoDLKvbdNdctJJLE
-EOcKjvbdUyHszKnn
-EOcLKvbdSQUHKFcw
-EObkKvbdUaBqSprZ
-DoCkKvbdSCDeLiZL
-EPCkKvbdKDKCpjCx
-EPDLKvbdwygfFweS
-DoDKjvbdiVZeWqtb
-DoCjjvbdMRwMyuQz
-DoCjjvbdsCGNLfkZ
-DoCkKvbdmRxuZsEJ
-EPCkKvbdkDMLRGtg
-EObkKvbdGdKuibJj
-EPCkKvbdePFTLUTr
-EOcKjvbdXrlAlsoY
-DoDLKvbdZjTHogBf
-DnbjjvbdZirhQGaf
-EPCkKvbdFVxooljF
-DoCkKvbdbKkeoNcA
-DoDKjvbdqYngfqEY
-EPDLKvbdrWokcJYq
-DoCkKvbdMowqVnHT
-EPCkKvbdqqtjnKaN
-DoDLKvbdiCPDFWqR
-DoDLKvbdeJiqutzn
-EObkKvbdqcdiPmvB
-EPCjjvbdMgComQUk
-DoDLKvbduVnYKQsA
-DnbjjvbdjhHLfFmk
-EOcKjvbdVvhwvEEg
-DnbkKvbdZtIhyESn
-DncLKvbdznopeClY
-EPCkKvbdwtldqZLn
-EOcKjvbdeEnrBwDK
-DoCkKvbdkxrqsZHU
-DoDKjvbdijGHimYS
-DncLKvbdfNGWgMjL
-EOcKjvbdmbKWxOnV
-EPCkKvbdhtzEvrVC
-DoDLKvbdhfibyWJu
-DoCkKvbdXrkaMsoY
-DoCkKvbdzoPpdbkx
-EPDLKvbdSLYeuGjs
-EOcLKvbdqlyixlIJ
-EObjjvbdnVVZjiqf
-EOcLKvbdyNrhXriD
-DoCjjvbdRjyFtgLT
-EOcLKvbdkyTRryHU
-EPCjjvbdrykpTBIO
-EObjjvbdlqxtzSdJ
-EObjjvbdcarmSATm
-EOcKjvbdXsLaNToY
-EOcKjvbdlqxtysDi
-EOcLKvbdaMkCStmH
-DncKjvbdbAvFGPow
-EPDLKvbdTulQKTaR
-DncKjvbdXGYzUAOs
-DncKjvbdezuxeItX
-DnbkKvbdrykpTBIO
-DoCkKvbdxnShXsIc
-DoDLKvbdEPCjkXCd
-DnbkKvbdIxUBgkpp
-DnbkKvbdBiKbKhfK
-DoDKjvbdKNADygVB
-EObjjvbdADRxKZiQ
-EPCjjvbdMfcQMotk
-EObjjvbdSBcdkhxk
-EPDKjvbdNrtVgFVQ
-EPDKjvbdZMRdTnLm
-EObkKvbdehKvRnQg
-DoCkKvbdliETptqa
-DoDLKvbdEXwktUUM
-EObjjvbdBiLBjiFj
-EOcLKvbdRkYeuGjs
-EOcKjvbdmttzKjRf
-EObkKvbdxrmhmRbH
-DnbkKvbdyXiJaoyk
-EObkKvbdxmrgwsIc
-DoDLKvbdiZtfMQmf
-DnbkKvbdpxoHfpcx
-EObjjvbduaEZTOdh
-EObkKvbdqqtkNkAm
-DoDKjvbdxmrgxTIc
-DncLKvbdMgColpVL
-EPCkKvbdZnnJEeZj
-EPCjjvbdVYgszKoO
-EPCkKvbdBcpAuilf
-EObkKvbdlhdUQuSB
-EObkKvbdMIbLpxAS
-EPCjjvbdnVUyjirG
-DoDKjvbdKRZeOenF
-DnbjjvbduCbuXWPP
-DnbjjvbdssRsYydc
-EPCkKvbdlhctQtqa
-DoCkKvbdsQVoJcVf
-EObjjvbdegkWSNpg
-DoDLKvbdOAJTUKSA
-DoDLKvbdliEURVSB
-DoDKjvbdxsNhlqbH
-DnbjjvbdOSsvGdtp
-EPDKjvbdaaVeGPow
-EObjjvbdNeETiIjd
-DnbkKvbdJKEAJpHE
-EPCjjvbdANIYsWzY
-DoCjjvbdjvWmdCXw
-EPDKjvbdrouoJcVf
-DnbjjvbdiUzFWquC
-DnbjjvbdFxtuBEYC
-DnbjjvbdRkYfVHLT
-EObjjvbdQwNccMID
-DoCjjvbdXsMAmTnx
-DoCjjvbdjJfIKMxS
-EOcLKvbdbiMikGXY
-DoCjjvbdQdDAoqES
-EPCkKvbdVwIxVcdg
-EOcLKvbdCEQAvKMf
-EPDLKvbdzROmJKXA
-EPDLKvbdZLrDsnLm
-DncKjvbdjggMGFmk
-DnbkKvbdddnrBvcK
-DnbjjvbdpecdsvBI
-EPCkKvbdijFgjNYS
-EOcLKvbdUaBqTQqy
-DncKjvbdkHgMFfNk
-EObkKvbdZGvdAPSi
-DnbjjvbdqUTgSRjt
-DoDLKvbdqvpLcIyR
-DncLKvbdLqvlytpz
-DnbkKvbdKDJbpjCx
-DoCjjvbdlqyUyrci
-DnbkKvbdUQqPUuIN
-EObkKvbdTlVnaVni
-EOcLKvbdNdcshiLE
-EObkKvbdkDMLRHUg
-DncKjvbdIxTbILpp
-EPCkKvbdePFTKssr
-DnbjjvbddeOrCWcK
-DnbkKvbdatbGxLTh
-EObkKvbdqlzKZLgi
-EPCjjvbdOTUVgFUp
-EOcLKvbdpfEFTvAh
-DncLKvbdZnnIdeZj
-EObkKvbdZxdKODLr
-DoDKjvbdjggLfGNk
-EPCjjvbdRDcAopdS
-DncKjvbdlZTRryHU
-DncKjvbdZshiYdSn
-EPDKjvbdatbHYLTh
-EPDKjvbdLAjfmCXq
-EPDKjvbdOFEUIiLE
-DncKjvbdxVNFQxlO
-DoCjjvbdrafNLfkZ
-DoCjjvbdGFiqnJTq
-EPCkKvbdUsmUFlWK
-EObkKvbdLBLHMbXq
-EPCkKvbdtlYWaUBX
-EPCjjvbdSPsfjGEX
-EObjjvbdIjEAJogE
-DoDLKvbdNHCpNQUk
-DncLKvbdYkqdUNkm
-DoCjjvbdqquKmkBN
-DnbjjvbdEuyQQMjF
-EOcKjvbdURRPUthN
-EObjjvbdmoyxvLYb
-EObkKvbdGYtuAdYC
-DnbjjvbdZeYGzhJC
-DoDLKvbdCgLfHAzc
-DoDLKvbdhuZeXSUb
-DoCkKvbdjlbMZdgP
-DoCkKvbdemGWgMjL
-EPCkKvbdxxJJaoyk
-EPDLKvbdqGEEsuaI
-EObkKvbdEKHjVwjA
-EOcKjvbdiBoDFWpq
-EPCkKvbdffLzNfgA
-EObjjvbdDoCjkXDE
-EPDKjvbdhficZWJu
-DoCjjvbdWWiYVdFH
-EPCkKvbdKQzFOenF
-DoCkKvbdmbJvxPOV
-DnbkKvbdtAHQhAAr
-EPDLKvbdmSYtzSci
-EPDLKvbddeOqavcK
-DoCjjvbdCEQBVjMf
-EPDLKvbdlYrqsYft
-DnbkKvbdJSyBTNXl
-EPCjjvbdcbSmSATm
-DoDKjvbdfNFwGmJk
-DoCkKvbdGLErbhNV
-EObkKvbdiZuFlQnG
-DnbjjvbdxUmEpxlO
-EPDKjvbdUWMPitBR
-EPDKjvbdrafNLfjy
-EPDLKvbdrWolDJZR
-EObjjvbdhbPDFXQq
-DncLKvbdqrUkNjaN
-DnbkKvbdBiLCKhej
-DoDKjvbdSCEFMIxk
-DoDLKvbdffLzNgHA
-EPCkKvbdZLqcsmkm
-DnbkKvbdZMSEUOMN
-DnbjjvbdzaAPHHCM
-DnbjjvbdCIkBjhfK
-DoCkKvbdZirgpHBf
-DnbjjvbdIwtBhLpp
-EObkKvbdeOeTLUTr
-EObkKvbdUxgszLPO
-EObkKvbdhzVGLqOG
-DnbjjvbdOTTufdtp
-EOcKjvbdZRNEhleR
-EPCjjvbdKyRKSzuG
-DoCkKvbdZtJJYcsO
-EOcLKvbdemGXGmKL
-EPDKjvbdJXsahMQp
-DoDLKvbdhbObeWqR
-EObjjvbdFVxpPljF
-EOcKjvbdaNLBruMg
-DoCjjvbdpyPIGpcx
-EOcLKvbdZMRcsmkm
-EOcLKvbdnGeXmNgZ
-DoDLKvbdjlalZeGo
-DoDLKvbdaSGDHtGL
-EPCkKvbdCTAbsewS
-EPCjjvbdZjSgofbG
-DnbjjvbdJutecdfi
-EPCkKvbdIryBSmYM
-DoCjjvbdfekzOHHA
-DnbkKvbdREDAoqES
-EPCjjvbdtTSTYzEc
-EPCkKvbdmoyyVkYb
-EObkKvbdmfdxMnGy
-DoCkKvbdwuNFQxkn
-DncKjvbdsBelkfjy
-EPDLKvbdQvmdDLhD
-EPDKjvbdBhkCLJFj
-DoCkKvbdeJiqutzn
-EOcLKvbdqTsfrSKt
-DoDLKvbdakLfOmcA
-DncKjvbdKaLHMawq
-EPCkKvbdznopdcMY
-DoDKjvbdZtJIyDsO
-DoDLKvbdsQVnjCvG
-DncKjvbduDDUvuno
-DoCkKvbdJYUCHlQp
-DnbkKvbdnBiwYPNu
-EObjjvbdlYrqryHU
-EPCjjvbdqcdiPnWB
-DoCjjvbdUQpoUthN
-EPDKjvbdsZlQTAhO
-EOcKjvbdtbbtwWOo
-EPDLKvbdJuuGDdgJ
-EOcKjvbdjggMGGOL
-EPDLKvbdHffyxwxH
-EOcLKvbdSCEElIxk
-EObkKvbdIwsbHkqQ
-EPDLKvbdjbkjqHUg
-DnbjjvbdnQZxujxb
-EPDKjvbddePRbWbj
-DoCkKvbdhtydwRuC
-DoDKjvbdCDoaWKMf
-EOcKjvbdRjyGVGjs
-EObjjvbddCTNSATm
-EOcKjvbdZLrETmlN
-EPDKjvbdlrZUysDi
-EOcLKvbdwtmFRZMO
-EPCjjvbdtTRrxydc
-EObjjvbdeFPSBvcK
-DoCkKvbdwuNFRZLn
-DnbjjvbdhytfLpmf
-EPCkKvbdrykpTAgn
-EObkKvbdRDcApRDr
-DoCjjvbdZnnIeFZj
-EOcLKvbdePErkUTr
-DoDLKvbdrbGNLgLZ
-EObjjvbdVZIUZjoO
-DncLKvbdzHYlAMeX
-DnbkKvbdbsDLTcia
-EPCjjvbdOSsufdtp
-DncKjvbdpstHSSLU
-DncKjvbduDDVWuoP
-EPDKjvbdiMEdNuCy
-EOcKjvbdtbcVWuno
-DoDKjvbdqUTgRqjt
-DncLKvbdZyDjNcLr
-DoDLKvbdRWmdDLgc
-DncKjvbdZLqdUOMN
-DoDKjvbdijGIJlwr
-EObjjvbduMYXBUAw
-DoCkKvbdHDkWJajK
-DoCjjvbdRpTfifEX
-DoCjjvbdUyHszKnn
-EPDKjvbdqZPIGpdY
-EPDKjvbdRWmdCkhD
-EObkKvbdsrrSyZdc
-EOcKjvbdYlSDtNlN
-DncKjvbdbKkennDA
-EPCkKvbdiZuGMQmf
-EPCkKvbdEztQeLbi
-EPCkKvbdaRebgsfL
-DoCkKvbdBcpAuilf
-EOcKjvbdyNsIYShc
-EPCjjvbdcIlijewY
-DoCjjvbdmbKXXoOV
-DncLKvbduDCtwWPP
-EPDKjvbdnCJwXoOV
-EPCjjvbdjcLkQgUg
-DnbkKvbdtcCtwVno
-DncKjvbdGFjRmiUR
-DncLKvbdrWpLcJYq
-DncLKvbdKWVGDdfi
-EPCkKvbdnUuZkJrG
-EPCjjvbdiCPCeWqR
-DncKjvbdEYYMUUTl
-EObjjvbdrpWOicWG
-DoDKjvbdFejSOIsq
-DnbjjvbdqiAJdmOe
-EOcKjvbdUyITzKnn
-DoDKjvbdfMfWgMjL
-DnbkKvbdXrkaMtOx
-DoCkKvbdKefIBaRV
-EPCjjvbdyTNhlqbH
-EPCjjvbdtlXwBUAw
-EOcKjvbdRosfjFdX
-DoCjjvbdYpldiMeR
-DnbjjvbdwzIFexFS
-DncKjvbdSCDeLhyL
-DncLKvbdrzLpSaHn
-DncKjvbduCcVWuoP
-DoDLKvbdatagXkTh
-DnbkKvbdsCGMlGkZ
-EPCkKvbdkWXNdBww
-DncKjvbdJcKCpjCx
-EOcKjvbdNxPVzdNt
-EPCkKvbdKRZeOfOF
-DncLKvbdcIljLGXY
-EPDLKvbdVhXuwfxz
-DoCjjvbdaoffckzd
-EOcKjvbdLhbLpxAS
-DnbjjvbdnHExMmgZ
-EObjjvbdbhljKfXY
-DnbjjvbdkDLkRGuH
-EPDLKvbdfHkWSORH
-EObjjvbdzoPqFClY
-DncKjvbdznopdbkx
-EObjjvbdnUtzLKRf
-EPCkKvbdZQldiMeR
-DoDKjvbdFjeScHmV
-EPDKjvbdEOcLKwCd
-EPDKjvbdyqOmJKXA
-EOcKjvbdSQTfiecw
-DoDLKvbdDoDLLXDE
-DoDKjvbdhlEcmuDZ
-EObjjvbdfHkWRmqH
-DnbkKvbdIGfzYwwg
-DncLKvbdUWMPjUAq
-EPDKjvbdkHflGGOL
-DnbkKvbdnPzZVjyC
-EPDLKvbdSBceLiYk
-DncLKvbdUtMsfLvK
-DnbkKvbdbrcLTdJa
-EObkKvbdIwtCHkqQ
-EPDKjvbdtbcVWvPP
-EObkKvbdtbcVWuoP
-DoDKjvbdKVtfEFGi
-EPCjjvbdMRvlytpz
-DoDLKvbdwuMeRYlO
-EOcKjvbdlhdTqVRa
-EPDKjvbdiGjCyVjV
-DnbjjvbdrDeJQNua
-DoDKjvbdrbFmMHKy
-EOcKjvbdfHjurNpg
-DnbkKvbdZRNFJMeR
-EOcKjvbdqFdEsvBI
-DnbjjvbdZirgogCG
-DoDLKvbdDncKjwDE
-DoCkKvbdjhGlFfOL
-EObjjvbdmaivxOnV
-EObkKvbdKkAhWAJy
-EOcKjvbdNrtWHEuQ
-DnbkKvbdFkFTChMu
-EObkKvbdeOdrjstS
-EOcKjvbdIwsbHlQp
-DoCkKvbdeATpmXif
-EOcLKvbdKaKgMaxR
-EObkKvbdUGznLvvF
-DnbkKvbdbLMGPODA
-EObjjvbdTkvOaVoJ
-EOcKjvbdsQVoKDVf
-EPDKjvbdznopdcLx
-DoDLKvbdpfDdsvAh
-DncKjvbdrDdhpNua
-EOcLKvbdhficZVjV
-DncKjvbdFxuVBEYC
-EPDKjvbdzjVQQETU
-EObkKvbdKRZePGNe
-EObjjvbdDncLLXDE
-EOcLKvbdYkqctNkm
-DoDKjvbdtvOYKRTA
-DoCkKvbdmajWxPNu
-DncKjvbdIjEAJofd
-EPCkKvbdiCPDFWqR
-EOcLKvbdIHHZxwwg
-EOcKjvbdYpmEiNFR
-EOcLKvbdQmYCZNtz
-EOcLKvbdVYhTykPO
-EPCkKvbdJKEAKPfd
-DoCjjvbdRkYfUfjs
-EPDLKvbdlZTSTZGt
-DoDLKvbdNGbpNQVL
-DoCjjvbdvAdZTOdh
-EPCjjvbdliDsqUqa
-EPDKjvbdSPsfiecw
-EOcKjvbdYlRcsmkm
-DnbkKvbdwXMAvBVu
-EPCkKvbdRjxfVGjs
-EOcLKvbdCIkCKiFj
-DoCkKvbddxZssrFz
-EOcKjvbdREDApRES
-EOcLKvbdTpqPVVIN
-EObjjvbdaaWEeoow
-EOcKjvbddeOrCXCj
-EOcLKvbdAMgySvyx
-EPDLKvbdNPwqVnHT
-EObkKvbdwuMeRYlO
-DoCkKvbdTkuoAuoJ
-EPDKjvbdmJDspuRa
-EPCjjvbdNHCpNQVL
-DncKjvbdGcjvKBij
-EOcKjvbdbQHHELzd
-EPDKjvbdPxmAGrqj
-EPCjjvbdRbDdkiYk
-EPDLKvbdTAFJHand
-DoDKjvbdqmZjZMHi
-EObjjvbdtSrTYzFD
-DncLKvbdhlEcmtby
-EObjjvbdmJEUQuSB
-DncKjvbddndsKstS
-EPDLKvbdmgFYNOGy
-DnbjjvbdSCEElIyL
-DncKjvbdmaivxOmu
-DoDKjvbdFVyPomKF
-DnbkKvbdMpXqWOHT
-EObjjvbdKefICBRV
-EObjjvbdqGDdtWBI
-DnbkKvbdCJLCLIfK
-EObkKvbdLqwNZtpz
-DoDLKvbdiifHjMwr
-DoCkKvbdddoRawDK
-DncKjvbdbrcKscjB
-DnbjjvbdrSVLNkAm
-DnbjjvbdffLynHHA
-EObkKvbdTAFJHbPE
-DncKjvbdDncKkWcE
-EOcLKvbdrouoKDVf
-EOcLKvbdZisIPfbG
-EOcLKvbdiGicYuiu
-DoDLKvbdVgxWXfxz
-DoCkKvbdffMZmgHA
-EObjjvbdWfZZtAPT
-EPDLKvbdEzsqElCi
-DoCkKvbdYSlAlsoY
-EPDLKvbdFWYpPmKF
-DoDKjvbdkNCMZdfo
-EPDLKvbdehLWSOQg
-DnbjjvbdxxJKCPyk
-EOcLKvbdMfcQMpVL
-EOcLKvbdnVVZkKRf
-EObjjvbdczYoxZQb
-EPCkKvbdSQUGiedX
-DoDKjvbdeuzwpJzs
-DoDLKvbdqZPHfqDx
-DoCjjvbdKeehCBQu
-DnbkKvbdADSYJyiQ
-DoCjjvbdFkFTDHlu
-EPDKjvbdZoOJEdzK
-EPCjjvbdZjTIQGbG
-DncKjvbdZHWdAOri
-EPCjjvbdeXystRez
-EObkKvbdIxTagkpp
-EObjjvbdxZgfFxEr
-DoDLKvbdjhHLfGNk
-EObkKvbdTfznMWue
-DoDLKvbdOSsufeVQ
-DncKjvbdVUNTelWK
-EPCjjvbdZQmFImEq
-DnbjjvbdkClLQftg
-DnbjjvbdRXNdDLhD
-DncKjvbdTqQoVUgm
-EPCjjvbdNQYRVmgT
-DoDLKvbdnUuZjiqf
-DoDKjvbdbsCjsdJa
-EOcKjvbdFkEsDINV
-DoDKjvbdyOTHxSiD
-EOcKjvbdkMbMZdgP
-DnbkKvbdeEnqavcK
-DoCkKvbdxZhFfYEr
-DncKjvbdNPxQunGs
-EOcLKvbdOYOuzdNt
-DncKjvbdJbicRKDY
-DncKjvbdjAQHAofj
-EOcKjvbdWWiYVcdg
-DnbjjvbdjFKftoAO
-EPCkKvbdTXkLmzjx
-EPCkKvbdWSNxBeMD
-DoCkKvbduMXwBTaX
-DoDLKvbdLBKfmBxR
-DoCjjvbdEObjjwDE
-EPDKjvbdTlVnaVoJ
-DoDLKvbdhgJcZViu
-EObjjvbdatbHXjtI
-EOcLKvbdZeXfzgiC
-EPCkKvbdeFPRbXCj
-EPCkKvbdZQleJMdq
-DnbjjvbdUWLojUAq
-EPCjjvbdFaOpyJzm
-DnbkKvbdANIYrwZx
-EPCkKvbdbBWEeopX
-DoDLKvbdczYpYYpb
-EPCkKvbdbVBfxLTh
-DoDKjvbdLBKflawq
-DoCkKvbdyOSgxSiD
-EPDKjvbdkDLkQgVH
-EObkKvbdjmBlZdfo
-EPDKjvbduoTzqLOt
-EOcLKvbdaRebhUFk
-EPDKjvbdatbGwjtI
-EOcLKvbdCIjbLIfK
-DncKjvbdkIGkeemk
-DncKjvbdxVMeRZMO
-EOcKjvbdRXODcMHc
-DnbjjvbdqquLOLAm
-DoDKjvbdDHLfHAzc
-DoCkKvbdnVVZkKRf
-DoDLKvbdGcjvJbKK
-DoCjjvbdzoQRFDLx
-DoDLKvbdmuUzLKRf
-EPDLKvbdtumwiqTA
-EOcKjvbdmJDsptrB
-EPCjjvbdIGgZxwwg
-EPDLKvbdxLXDgzzG
-DnbkKvbdQwNdCkhD
-DnbjjvbdcasNSAUN
-EPCkKvbdTulQKTaR
-EOcKjvbdhgJbyVjV
-DoDLKvbdKVteceHJ
-DnbjjvbdHgGzYwxH
-EPCjjvbdxnSgxTJD
-EPDKjvbdyYJKCPzL
-EOcKjvbdOFDtJJKd
-EObkKvbdRadEkhxk
-DoCkKvbdiifHjNXr
-DoCjjvbdnUtyjirG
-EObkKvbdJpydoGNe
-DoDKjvbdZLqctOLm
-DnbkKvbdsBfMkfkZ
-EOcLKvbdOStWGeVQ
-EPDLKvbdijGIJmYS
-DoDLKvbdxxJJbQZk
-DncKjvbdHbLydzAD
-EOcLKvbdyTNiMqag
-EPDKjvbdMgComQVL
-DoDLKvbdzitoocsU
-EPDKjvbdsBfMkfjy
-DoCkKvbdFyUtaEYC
-DoDLKvbdJKEAJpGd
-DoCkKvbdygZMAMeX
-EPCkKvbdJqZdoFnF
-DnbkKvbdiBnbdvqR
-EOcLKvbdSQUGjFdX
-DnbkKvbdmSYtzTEJ
-DoCjjvbdehKvSOQg
-EOcLKvbdGckVibJj
-DncKjvbdhficYvJu
-EPDKjvbdwuMeRYkn
-EOcLKvbdFejSNiUR
-EPCjjvbdOFEUJJLE
-DnbkKvbdXsLaMtOx
-EPDKjvbddZyPxYpb
-EPCkKvbdhzVFkqNf
-DoDKjvbdOEdUIiLE
-EPCkKvbdnGeXmOHZ
-EObkKvbdiMEdNuCy
-DoDLKvbddoFTLTtS
-EObkKvbdIxTbHlQp
-DncLKvbdZRMdhmEq
-DoDLKvbdZnmheEyj
-EPDKjvbdKeegbApu
-DncLKvbdNVTSLNAX
-EOcKjvbdKDJbqKCx
-EPCjjvbdFfKSOIsq
-EPCjjvbdxnShYSiD
-EOcLKvbdOStWHFVQ
-DncLKvbdsPvOicWG
-DnbjjvbdxnTHwsJD
-DoDKjvbdLAkGmBwq
-DoCkKvbdwMvAMceN
-EOcLKvbdmRyVZsDi
-EPCkKvbdmpZyWKyC
-DoDLKvbdrykpTBIO
-DoCjjvbdVgwvYHYz
-EPDLKvbdTvMPjUBR
-EOcLKvbdgFkzOGgA
-DnbkKvbdVBBpsRRy
-DnbjjvbdRzKISbvA
-EObjjvbdxnTIXsJD
-EObjjvbdZoOJEdyj
-EPCjjvbdHDjuibKK
-EPCjjvbdezuxdiUX
-EOcKjvbdYTMAmToY
-EObjjvbdJYTbILpp
-DoDKjvbdkClLRHUg
-EPDKjvbdTkvPAvPJ
-EObkKvbdeAURNXjG
-DncLKvbdTukpKUBR
-DoCjjvbdcTDKsdJa
-DoDKjvbdBsAcUGXS
-EObjjvbdDoCjjvcE
-EOcKjvbdtlYWaTaX
-DnbjjvbdRDbaPpcr
-EPCjjvbdrylPsAgn
-DoCkKvbdOhAYZAYa
-DnbjjvbdiUydwSVC
-DoCjjvbdwzIFfYFS
-DoCkKvbdZshiZDrn
-DoCkKvbdZoOIddyj
-DncKjvbdpssgSSKt
-EPCjjvbdrSUkNkBN
-EPDKjvbdjJfIJlxS
-EOcLKvbdxVNFRYkn
-DoDKjvbdWWhwvEFH
-DncLKvbdRDcBQQcr
-DnbkKvbdliETpuRa
-EPCjjvbdZRMdiMeR
-DnbkKvbdiMEdOVCy
-EPCjjvbdznpREbkx
-DoCkKvbdwzIFexFS
-DnbjjvbdmSYuZrdJ
-DoDLKvbdCWzchdov
-EPDLKvbdpfEFTvAh
-EPDLKvbdyOTIYTIc
-DncKjvbdNQXqVnHT
-DoDLKvbdCgMFgAzc
-EOcKjvbdIwtBgkpp
-EPDKjvbdRjyGUfjs
-EObjjvbdACqwjZiQ
-DoDKjvbdpstGrSKt
-DnbkKvbdnGdwmOHZ
-DncKjvbdiZtfLpnG
-DoDLKvbdaSGCgtFk
-DoCkKvbdFfJqnIsq
-EPCkKvbdkNCLzEgP
-EOcKjvbdFeirOJTq
-EOcLKvbdUtNUGMWK
-EObkKvbdSQUHJfEX
-EPCkKvbdqquKmkBN
-DnbjjvbdbhmKKfXY
-DoCkKvbdIsYaTNXl
-DoCjjvbdZoNheFZj
-EOcLKvbdBhjbLIfK
-EOcKjvbdatafwjsh
-DoCjjvbdkxrrSyHU
-EPDLKvbdSCEElIxk
-EOcKjvbdfMevfmKL
-EPCjjvbdMJBlRYAS
-DoCjjvbdSxKkmzkY
-DnbkKvbdkNCLydgP
-EObkKvbdkxsSTZHU
-DoCjjvbdRpUGiedX
-EOcKjvbdjblLRGuH
-EObkKvbdyTNiMrCH
-DnbjjvbdZeXfzhJC
-DoDKjvbdZxdJmblS
-DncKjvbdOStWHEuQ
-DoCkKvbdyNsHwsIc
-EPDKjvbdkxrqryHU
-EObjjvbdZLqctNlN
-DoDLKvbdxnSgxShc
-EPDLKvbdnBjWwoNu
-DoDKjvbdkIHMGGOL
-EObjjvbdqUUGrRkU
-DncLKvbdRjyGVHKs
-EPDKjvbdhfjCyWJu
-EPCkKvbdHELVjBjK
-DncKjvbdgQBzvcwh
-DoDLKvbdVAaqSpqy
-DoCkKvbdySnJNSBg
-DoDLKvbdpeceUWAh
-DncLKvbdaRebgsfL
-EOcKjvbdZLqctNlN
-EObjjvbdtbbtvvPP
-DoCkKvbdZMSDtNlN
-EOcKjvbdsBelkfjy
-EPDLKvbdTpqPVVIN
-DnbjjvbdBiKbKhfK
-DnbjjvbdOFEUIiKd
-EPCkKvbdSiZjRAAl
-EObkKvbdwjwDgzyf
-EPCjjvbdhlEdNtby
-EPCjjvbdhtydwSUb
-EOcKjvbdnQZyVjyC
-DoDKjvbdRzKIScWA
-EOcLKvbdLBLHNCXq
-DoDLKvbdssSTYzFD
-EObjjvbdEvYpPlie
-DncLKvbdhficYvKV
-EPCjjvbdnUuZkJqf
-DnbjjvbdXnRAXtut
-EPDKjvbddijRutzn
-EOcLKvbdEvYpPljF
-DoCjjvbdTulQKUAq
-EObkKvbdxmsIYShc
-EPDLKvbdkyTRryHU
-EObjjvbdCEQAvKNG
-EObjjvbdGYuVBEYC
-EPDKjvbdvAdYsOeI
-EObjjvbdRpUHKGEX
-EPCkKvbdKDJcQjDY
-DoDLKvbdunszqKoU
-DoCjjvbdJvUfEEfi
-DncLKvbdrpWPJcWG
-DoCkKvbdajkfPNcA
-DnbjjvbdFpATXHFy
-EObkKvbdFfJrOJTq
-DncLKvbdZnnJFEyj
-DoCjjvbdOEctIiKd
-EPDLKvbdVhXuxGxz
-EPDKjvbdySmhlrCH
-EOcKjvbdiGjDZWJu
-DncKjvbddZyQYZRC
-DncLKvbdziuPpETU
-DncLKvbdJTYaTNXl
-EPCjjvbdNddThiKd
-DnbkKvbdbAudepPw
-EOcKjvbdMowpunHT
-DoDLKvbdmbKXYPNu
-DoDLKvbdezvZEiTw
-DnbjjvbdrMyixkgi
-DnbkKvbdKWVGEFGi
-DoCjjvbdkDLjpftg
-DnbjjvbdJqZePFme
-EObkKvbdDwxLsssl
-EPCjjvbdmoyyWLYb
-EPCkKvbdFjdrcHmV
-DoCkKvbdDwxLtTsl
-EOcLKvbdoAKztHdO
-EPDLKvbdTkuoAuoJ
-DncLKvbdURRPVVHm
-EPCkKvbdKCicRJcY
-DoCkKvbduDCuXWOo
-DoCjjvbdRXNdDMID
-DoDKjvbdBcpBWJlf
-DoCjjvbdTqROttgm
-DncKjvbdRadFMIxk
-DoDLKvbdCSaDTewS
-EOcKjvbdQlxCYmtz
-DncLKvbdeOeSkUTr
-DnbkKvbdTqQntthN
-DnbjjvbdhbObdvpq
-EPDLKvbdMowqVmgT
-DncKjvbdANIZTWzY
-EPDLKvbdiVZeXRtb
-DncLKvbdYNqAXtvU
-EOcKjvbdfIKurNpg
-DoCkKvbdFpATWfey
-EPCjjvbdHkazmwRL
-DoDKjvbdJvUfDdgJ
-EPCkKvbdSBdElIxk
-DoCkKvbdbsCjtEJa
-DoDLKvbdvBEYsOdh
-EOcLKvbdGGJqmhsq
-EOcLKvbdJSyBSlxM
-DncLKvbdnQZxukZC
-EOcLKvbdySnIlrCH
-DoCjjvbdIjEAKPgE
-DoDLKvbdhlEcnVDZ
-EPDKjvbdZeYGzghb
-EPDKjvbdbKlGOnDA
-EPDKjvbdkMbMZdgP
-EOcLKvbdDoCkKwCd
-DnbjjvbdLBLGlbXq
-EPDLKvbdZxcinCkr
-DoCkKvbdqTsfrRjt
-DoCkKvbdADSYJzIp
-DoDKjvbdbUagYKsh
-EObjjvbdjAQHAofj
-EOcKjvbdDoDKkXDE
-EPDKjvbdSZigsCvA
-EPCkKvbdKRZePGOF
-EPCjjvbdKaKgNCXq
-EObkKvbdxxJKBoyk
-EOcKjvbdxmrgwsIc
-DnbkKvbdmozYvKyC
-DoCkKvbdqquLOLAm
-EObkKvbdDncLLXCd
-EPDLKvbdjcMKpftg
-EPCjjvbdwkXDgzzG
-DoDLKvbdHffyxwwg
-DoCkKvbdvAdZSneI
-EOcLKvbdrovOjDVf
-EOcLKvbdsPuoJbuf
-DoDLKvbdySnJNSBg
-EObkKvbdXsMAltOx
-DncLKvbdFfKSOJTq
-EPCkKvbdddnrCWcK
-DoCjjvbdySmhlrBg
-DnbjjvbdNxPVzcnU
-DncKjvbdhtzEvrVC
-DoCjjvbdQwODblHc
-DoDLKvbdjcLjpgVH
-EOcLKvbdbKlGOmcA
-EPDKjvbdfMfWflik
-DncKjvbdmbJwXnmu
-EOcLKvbdTkuoAvOi
-DnbjjvbdsZkoraIO
-DoDKjvbdZMSEUOLm
-EOcLKvbdsCFmLfkZ
-DncKjvbdUxhTyjnn
-EPDKjvbdRosfjGEX
-EOcLKvbdmuUzKirG
-EPCkKvbdGGJrOItR
-EObjjvbdEXwktUUM
-DnbkKvbdiifHimXr
-EPDKjvbdmJDspuSB
-EObjjvbdwyhGFwdr
-DncKjvbdatafwkUI
-EPDLKvbdYNqAXtut
-DoDLKvbdEPCkLWcE
-EOcLKvbdqceJQOWB
-EPDKjvbdySnJNSBg
-DnbjjvbdyzdnSIIh
-DoDKjvbdrDdiQNvB
-DoCkKvbdYkqdTnLm
-DoCkKvbdlZTSTYgU
-EPDKjvbdMpXqWNfs
-EObkKvbdJbicQjDY
-DoDLKvbdGAoRYizm
-DncKjvbdmgExNOHZ
-DoCjjvbdznoqFDLx
-EOcKjvbdieLGtoAO
-DoCjjvbdMfbpMotk
-EObkKvbdyzdnSHiI
-EObkKvbdcSbjscia
-DoDKjvbdNGcQNQUk
-EPDKjvbdNGbpMpVL
-DoDLKvbdUQqPVUgm
-DnbjjvbdVvhwuceH
-EPDKjvbdDxXkstTl
-EPCjjvbdPyNAHTRj
-EPDLKvbdeOdsLTtS
-DoDKjvbdTAEiICPE
-DoDKjvbdZisIQGaf
-EObkKvbdxVMdpxkn
-EPCkKvbdnUtzKjRf
-EOcKjvbdhtydvrVC
-DoDKjvbdbrcLTcia
-EPDLKvbdbhlikFvx
-EPDKjvbdANIZSwZx
-EPDKjvbdtbbuXWOo
-EObjjvbdliDtQtqa
-DncLKvbdGLFScIMu
-DnbkKvbdfMfXGljL
-EObkKvbdCTBDTewS
-EPDKjvbdSiZiqAAl
-EOcKjvbdFfKSNhsq
-EPCjjvbdyYJKBpZk
-DncKjvbdAMgyTWyx
-DnbkKvbdpaJFAXIE
-EOcKjvbdEYYMUUTl
-EPCjjvbdeFOrBvcK
-DoDLKvbdptUHSRkU
-DoCkKvbdOYPVzcnU
-DnbjjvbdijFhKMxS
-DnbkKvbdEKHivXjA
-DncLKvbdsPvOicVf
-DoCjjvbdmbJvxOmu
-EOcKjvbdDxYMUUTl
-DoDKjvbdZtIhxdTO
-DncKjvbdTlVoAuoJ
-DoDKjvbdFyUuBDwb
-EObkKvbdQYmAGsSK
-DnbkKvbduLwwAsaX
-EPDKjvbdegkWRmpg
-EPDLKvbdRDcAoqDr
-DoCjjvbdFWZPolie
-DoCkKvbdbhmJkGWx
-DncLKvbdrWpMDJYq
-DnbjjvbdaaWEeoow
-DoDLKvbdzHYlANFX
-DoCkKvbdjFLHUoAO
-DnbjjvbdZyEKNbkr
-DoDKjvbdLrXMyuQz
-EPDLKvbdwNWAMdFN
-DoCkKvbdkWXODaxX
-EOcKjvbdraelkgKy
-EOcLKvbdmSZVZsDi
-EPCjjvbdkMbLzEfo
-EObjjvbdaSFbgtFk
-EObkKvbdmIctRUqa
-DncKjvbdhtydvquC
-EPDKjvbdZoOJEeZj
-DoDLKvbdyXiJaozL
-EOcLKvbdVwIxWEFH
-DnbkKvbdYpmFJMdq
-EPDLKvbdjKGIKMwr
-EPCkKvbdFpASwHGZ
-DncKjvbdKQzEnfNe
-DoDLKvbdkVwODaxX
-EPCjjvbdzaAOffal
-EObjjvbdnHEwlnGy
-DncLKvbdLqwMyuQz
-EPCkKvbdWRnXaeMD
-DoCkKvbdcbSlrAUN
-EPDKjvbdMJBlRYAS
-EOcLKvbdZxcimbkr
-DncLKvbdCDpBVimG
-DoDKjvbdGdKvKBjK
-EPDLKvbdziuPodSt
-DnbkKvbdbrbjtEKB
-EOcLKvbdmIcsptqa
-EPDKjvbdMRwMyuQz
-DoDLKvbdfHkVrNqH
-DnbkKvbdLZRKSzuG
-EPDKjvbdTfzmkwWF
-EOcLKvbdSKxeuHLT
-EPDLKvbdkHgLfGNk
-DoDLKvbdVhXuxHYz
-EOcKjvbdkHgMGGOL
-DoDKjvbdEARhmZvw
-EPDLKvbdjKFgimXr
-EObkKvbdSQUGiecw
-EPCjjvbdjKFhJlxS
-DoDKjvbdDxXlTtUM
-EPDLKvbdelfWgMik
-EOcKjvbdtcDVXWOo
-DoDKjvbdiZuFlRNf
-DoCkKvbdsBellHKy
-EPCkKvbdjlbLyeGo
-EOcKjvbdhfibxujV
-EObjjvbdhyuGMROG
-DoDLKvbdgQBzvdYI
-DoDKjvbdeATpmXjG
-EPDLKvbdjKFgilxS
-DoDKjvbdrpWPJbuf
-DncLKvbdDncLKvcE
-DoCkKvbdkVvmdCXw
-DncLKvbdGcjujCJj
-DncLKvbdpxngfpcx
-DnbjjvbdiCPCdwQq
-EPDLKvbdijFhJlwr
-DncKjvbdhgJbxvKV
-EPCjjvbdZxcjNbkr
-DncKjvbdZQleJMdq
-DncLKvbdyfxlAMeX
-EPCjjvbdFfJrNiUR
-EPDLKvbdzjVQPdSt
-DoDLKvbdjAQHBPfj
-EObjjvbdZoOJFEzK
-EObkKvbdFpATWgGZ
-EPDKjvbdvAcxrneI
-DoDLKvbdxrnJMrCH
-DoCkKvbdjmCLydfo
-EPCkKvbdegjuqmqH
-DoCkKvbdSBdFLiZL
-EObkKvbdbAvFFopX
-DncLKvbdGQASwGey
-DnbkKvbdQccAopdS
-EPCkKvbdZshiYdSn
-EPCjjvbdHDjujCKK
-EObjjvbduDDVWuno
-DoCjjvbdzjVQQDsU
-EOcLKvbdeFOqavcK
-DoDLKvbdyXhibPzL
-DoDLKvbdrzMPsAgn
-EObkKvbdUtNTfMWK
-EOcLKvbdLqwNZuQz
-EPDKjvbdqBJFAXHd
-DoCkKvbdnUuZkKSG
-DoCjjvbdZHXEAOsJ
-DncKjvbdQdDBPpcr
-DnbkKvbdCIkBkIej
-DnbkKvbdMgDPmQUk
-DnbkKvbdxxIjCPyk
-DnbjjvbdZsiIxdSn
-DoCkKvbdADRxJzJQ
-EObjjvbdkxsSTZHU
-DncKjvbdWXIxVdEg
-DnbjjvbdLrWmZtpz
-EPDKjvbdhzUelQnG
-DoDLKvbdSBceLhxk
-EObjjvbdWIXvYGxz
-EPDKjvbdEYXktUUM
-EObkKvbdhlFENtby
-EPDLKvbdNwnuzcmt
-EOcKjvbdaaWEfPpX
-DncLKvbdddoSCWcK
-EPDKjvbdmaiwXnnV
-DoDLKvbdMgDQMpUk
-DoDLKvbdjFKfuPAO
-DncLKvbdnGeYMmfy
-DncLKvbdrSUjmkAm
-EOcLKvbdfHkWRnQg
-DnbjjvbdnCKWxPNu
-DnbjjvbdraemLgKy
-EObkKvbdWWiYWDdg
-DoCkKvbdKfFgaaQu
-EPCkKvbdaSFcIUGL
-EOcKjvbdkxrqryHU
-DncKjvbdRDbaQQcr
-DncLKvbdbVBgXjtI
-DoCjjvbdqZPHfqDx
-DnbkKvbdcyxowxpb
-EPCkKvbdWXIxWDeH
-DoCkKvbdyXiKBozL
-DnbkKvbdlZSrTYft
-EObjjvbdGdKujBij
-DnbjjvbdtcDVXWPP
-DoDKjvbdZnmhddyj
-EObkKvbdTukoisaR
-EObkKvbdzoPqFCkx
-DncLKvbdLhalQxAS
-EPCkKvbdVwIwudFH
-DoDKjvbdjKGIKNYS
-DoDLKvbdjhHLeenL
-EPDKjvbdJTZBSlxM
-DoCjjvbdFaOqZJzm
-DoDLKvbdnBjXXnnV
-DoCjjvbdeFPSCXDK
-EPCjjvbdbAvFGPow
-DnbkKvbdVwIwvEFH
-EObjjvbdqUTfrSLU
-DncKjvbdqlyixkhJ
-DoDKjvbdSLZFuGjs
-DncLKvbdsCGNLfkZ
-EPDLKvbdaofgDkzd
-DoCkKvbddiirWUzn
-EOcKjvbduCcVWuno
-DnbkKvbdSPsfjGDw
-DoCkKvbdFWYpQMie
-DoDLKvbdRECaQRES
-EPDLKvbdhfibyVjV
-DnbjjvbdqTsgSSLU
-EObkKvbdrXQMChyR
-DncLKvbdNrtVfduQ
-EObjjvbdiUzEvqtb
-DncKjvbdUaCQsRRy
-EPCjjvbdRbEEkiYk
-DncKjvbdUtNUGMVj
-EPCjjvbdzHYlAMeX
-EPCkKvbdeEoRbXCj
-DoDLKvbdcScLUDia
-DoDLKvbdtbbuWuno
-EOcKjvbdbUafwkTh
-DoCjjvbdtcDVXWOo
-EOcKjvbdHgGyxxYH
-EOcLKvbdWSOXbEkc
-DoCkKvbdKeehCBRV
-DncLKvbdMgComQVL
-DoDKjvbdUMVoBVoJ
-DoCjjvbdzoQRFCkx
-DoCkKvbdUWMQJsaR
-DnbjjvbdkNCLydgP
-EOcKjvbdmozYvKyC
-DnbkKvbdmgExMnGy
-DncKjvbdznpQeDMY
-DoDKjvbdZxcjNbkr
-EOcKjvbdqdEiQNua
-EPDLKvbdfHkVrNpg
-DnbkKvbdXsMBMsoY
-EObkKvbdcJNKLGXY
-EPDLKvbdVqmwbEkc
-EPCkKvbdJcJbpibx
-EObjjvbdYNqAXtvU
-EObkKvbdjAQHApGj
-EPDKjvbdrbFmMHLZ
-DnbkKvbdPIAXyAYa
-DoDKjvbdSLZGVHLT
-DoCkKvbdDnbkLWcE
-DncKjvbdzoPpeDMY
-EPDKjvbdQwNdDLhD
-EPDKjvbdhfjCxuiu
-DoCjjvbdajkenmcA
-EPDKjvbdtTSTYyeD
-DoCjjvbdijFhKMwr
-DoDLKvbdpfDeTuaI
-EPCjjvbdJXtCHlQp
-EOcKjvbdjbkkRGuH
-EObkKvbdVTlselWK
-DoCkKvbdauCHXkTh
-DnbjjvbdSLZGVGjs
-DoDLKvbdehLWRmqH
-DncKjvbdSBdFLhyL
-DoDLKvbdmajXYPOV
-EOcKjvbdpeceTvAh
-EPCjjvbdNdctIhkE
-EOcLKvbduWNwjQsA
-DoCjjvbdtvOYKRTA
-DncKjvbdqiAJeNOe
-DnbjjvbdUtNUGLvK
-EPDKjvbdMgColotk
-EOcKjvbdQlxCZNtz
-DoDKjvbdmfdwmNfy
-EPDKjvbdrovPKDVf
-DnbjjvbdDjIJuwjA
-EPCjjvbdsBfNMHLZ
-DoCjjvbdJbjDRJcY
-EPDLKvbdZRMeJNEq
-EPCkKvbdRkYfVGkT
-DncLKvbdRbDeLiYk
-EPCjjvbdqiAJdloF
-DoCjjvbdFyVUaDwb
-DoCjjvbdMRvmZtpz
-DoDLKvbdGQATWffZ
-EPCjjvbdwtmFQyMO
-EOcKjvbdTIzKRAAl
-DoCkKvbdsQVnicVf
-DoDLKvbdFfKRmhtR
-EOcKjvbdsCFmLfjy
-DoDKjvbdddnqbXDK
-DoDKjvbdYgWdAOri
-DoCkKvbdmuUyjjSG
-EObkKvbdhficYvJu
-DoCkKvbdQlxCZNtz
-EPCkKvbdGZVUaEXb
-DncLKvbdEXxMTtTl
-DoDKjvbdGFirNiUR
-EPCjjvbdpssgRrLU
-EObkKvbdVZHsykOn
-DncKjvbdyTOJMrBg
-EOcKjvbdRacdlIyL
-EObkKvbdiCOcFWqR
-DoDLKvbdRjxfVGkT
-EOcLKvbdiBncFXQq
-DncLKvbdnQZxukYb
-DoDKjvbdpaIeAWgd
-DncKjvbdVqnYCEkc
-DnbjjvbdZRMdhmEq
-EPCjjvbdhgKDYuiu
-EOcLKvbdCIkBjhfK
-EPCkKvbdZnmhdeZj
-EOcKjvbdTppnuUhN
-EOcLKvbdbVBfxKsh
-EPDKjvbdFVxpQNKF
-DnbjjvbdjvWnDaxX
-EObjjvbdANIYrwZx
-EObjjvbdauCHXjtI
-EObkKvbdZirgpGaf
-EObjjvbduoTzqLPU
-DoDLKvbdxZhFeweS
-DoCjjvbdILaznWqL
-DncLKvbdaMkBrtlg
-EObjjvbdNrtVgFUp
-DnbkKvbdRzKHsCvA
-DoCkKvbdiZuFkpnG
-DnbkKvbdEztRElDJ
-EPCjjvbdRECaQQdS
-EPCjjvbdqqtkNkAm
-EObkKvbdyNrhXriD
-DoDLKvbdegkWRmqH
-DncKjvbdNQXqWNfs
-DoDLKvbdRadFLhxk
-EPDKjvbdxUmFQyLn
-EPCjjvbdxxJKBoyk
-EObkKvbdnVUzLJqf
-DnbjjvbdSQUGiedX
-DncLKvbdrpVnjCvG
-DoDKjvbdZirgpGbG
-DncKjvbdOAJTUJrA
-DnbjjvbdUyHsyjoO
-EPDKjvbdfpBzvdXh
-EPCjjvbdyTNhlqag
-DncKjvbdLBKflaxR
-DoCjjvbdVwJXvEEg
-EOcKjvbdVqnXadlD
-DoDKjvbdyNrgxSiD
-EObjjvbdnVVZjjRf
-DnbjjvbdFeiqmiTq
-EObkKvbdFVxpQMie
-DnbkKvbdIBkydzAD
-EPCkKvbdZjTHofaf
-DncLKvbdnPzYukZC
-EObkKvbdLYqKSzuG
-Dnbjjvbdxmrgwrhc
-EObkKvbdTkuoBWOi
-EObkKvbdIrxaSlxM
-EOcLKvbdJqZeOfOF
-DoCjjvbdBhjbKiFj
-EPCkKvbdrDeJPnVa
-EPCkKvbdNwoVzcnU
-EOcLKvbdXmqAYVWU
-EPCkKvbdZeYGzhJC
-EOcKjvbdNddUIhjd
-DoDKjvbdjggLeemk
-EObkKvbdxZgefXeS
-EOcKjvbdgFkzOGgA
-EObkKvbdNdcsiIkE
-EPDKjvbdbiMikFwY
-EPDKjvbdelfWfmJk
-EOcKjvbdHELWJajK
-DoDLKvbdZRMeIldq
-EOcLKvbdRXNccMHc
-EPCkKvbdQlxCZNtz
-DoCkKvbdyTOJMqag
-EPDLKvbdCTAcTevr
-EOcKjvbdrpVnicWG
-DnbkKvbdZLrETmkm
-EOcLKvbdRpTfifEX
-DnbjjvbdQcbaPqDr
-DoCkKvbdEuxpQNKF
-EPCjjvbdNeEThiKd
-EPDKjvbdVYgtZjoO
-DoCjjvbdZRMdhleR
-DoCjjvbdZsiIyDrn
-EPDLKvbdaSGCgtGL
-EPDLKvbdqTtGqrKt
-DoCkKvbdnVUzKjSG
-EPCjjvbdzQoMiJwA
-EPDKjvbdXrlBMtOx
-DoCjjvbdNHColpVL
-EObkKvbdXnRAXuVt
-EObjjvbdMJCMQxAS
-EObkKvbdIrxaTMxM
-DnbjjvbdbAudfQQX
-DnbkKvbdnCKXYOmu
-DoDKjvbdEXxMUUTl
-EObkKvbdyXhiaozL
-EObjjvbdEJhKVwjA
-EOcKjvbdpfEFTuaI
-EOcKjvbdbVCHYLTh
-DncLKvbdyqOliJwA
-EOcKjvbdkxrqsZHU
-DncKjvbdDjHjVwjA
-EPCkKvbdkDMLQfuH
-EPCjjvbdUVlPjUBR
-DoDLKvbdjJfHimXr
-DoCkKvbdEuxooljF
-DoDLKvbdYzcGRjWZ
-DoDKjvbdwyhGGYFS
-DnbkKvbdsrrSxyeD
-EPCkKvbdxmrhXrhc
-EPDKjvbdDjHivXjA
-EObkKvbdfMfXGlik
-EPDLKvbdGdKvKBij
-DoCkKvbdbLMGOmcA
-EPCkKvbdRXNdDLgc
-EPCjjvbdZsiIxcrn
-DoDKjvbdpyPIGqEY
-EPDKjvbdlZTRryHU
-DoDKjvbdUslsekvK
-DncKjvbdKfFhCBQu
-DncLKvbdSCDeMIyL
-EPDKjvbdJcJcRJcY
-DoDLKvbdraellHLZ
-EPCjjvbduDCtwWPP
-DnbkKvbdBdPaWJlf
-EPCkKvbdqFceUVaI
-DnbkKvbdcyxoxYqC
-DnbkKvbdlYsSTYft
-EObjjvbdZHXEAOsJ
-EObjjvbdURROtuHm
-EPCjjvbdZLrDsnMN
-EPCjjvbdfIKvRmpg
-EPDLKvbdwWlBVaVu
-EObkKvbdZMSDsmkm
-EPDKjvbdKNAEZfuB
-DnbjjvbdhyuGMROG
-EObjjvbdJuuGDdgJ
-EPDLKvbdgQBzwDxI
-EObjjvbdjvXNdCXw
-EPCjjvbdlZSrSyGt
-DoDKjvbdXsLaMsnx
-DoDLKvbdTlVoAuoJ
-DnbkKvbdptUGrSLU
-EObkKvbdEztRFMCi
-EOcLKvbdTkvOaVoJ
-EObkKvbdDoCjjwCd
-EPCkKvbdTfznLwVe
-EObkKvbdRjyGUfjs
-EPDKjvbdVviXvEFH
-DnbjjvbdKkBIWAKZ
-EOcLKvbdqFdFUVaI
-EOcLKvbdBhjakJFj
-DncKjvbdauBgYKsh
-DnbjjvbdxKvdHzyf
-DoCjjvbdxVMdqYlO
-EPCjjvbdEPDLLXDE
-EPDLKvbdVvhwucdg
-DncKjvbdaRfDITfL
-EPDKjvbdfpBzvcxI
-DoCkKvbdGLFTDHmV
-DoDLKvbdcTDKtDjB
-DnbkKvbdZRMeIldq
-EObjjvbdRjyGVGkT
-EPCjjvbdlhctRVRa
-DnbjjvbdyXhibPzL
-DnbjjvbdFpASvgFy
-DnbjjvbdKCicRJcY
-DnbkKvbdPxmAGrrK
-EPCjjvbdpstHSSKt
-EObkKvbdiZtelQnG
-DoDLKvbdKkAgvAJy
-EObjjvbdsPvPKCuf
-EOcLKvbdhyuGLqOG
-EPDLKvbdyOSgxShc
-EObkKvbdmJDsptqa
-EPCjjvbdbVCHYKtI
-DoCkKvbdCJLBkIfK
-EPDKjvbdTqQnuUgm
-EOcLKvbdypnmIjXA
-DoDLKvbdiLddOUby
-DoCkKvbdaSFbgtGL
-EPDLKvbdraellGjy
-EObkKvbdWRmwbEkc
-EPCjjvbdDoDLKvcE
-DnbjjvbdjEjfuPAO
-DnbjjvbdqvokbiYq
-DnbkKvbdVZITzLOn
-EPDKjvbdUWLpJtAq
-EObkKvbdwtmFQyMO
-DoDLKvbdFWZQPmKF
-EPDKjvbdLBKgMawq
-DncLKvbdANIYsWyx
-EObkKvbdqvolDJYq
-EOcKjvbdQlwbZOUz
-EPCkKvbdlqyUzTEJ
-EPCkKvbdSLYfUgKs
-DoCjjvbdRotHJfEX
-EOcKjvbdrXQMCiZR
-DncLKvbdaofgELzd
-DoDKjvbdehKvSNqH
-EPCkKvbdzaAOfgBl
-DoCkKvbdVUMsfMVj
-DoDLKvbdUGznLwVe
-EPDLKvbdDoDKjwDE
-DoCjjvbdANHxsXZx
-EPCkKvbdJpydnenF
-EPCjjvbdtTRsZZeD
-DoDLKvbdnQZyWLZC
-EPCkKvbdKNADyfta
-EPCkKvbdUVlPjTaR
-DncLKvbdeOeSjstS
-DncKjvbdXrlAmUOx
-DoCkKvbdxnTIXrhc
-EPDLKvbdZjTIQGaf
-DoCjjvbdPxmAGrrK
-EPDKjvbdLZQirztf
-DoDLKvbdkHflGFnL
-DoCjjvbdiMFEOUby
-DnbjjvbdhaoDFXQq
-EPCkKvbdyzeNqhIh
-EPDKjvbdbUbGwkUI
-DoCkKvbdEXxLsstM
-DoDLKvbdaRebhUGL
-EObjjvbdMfbpNQUk
-DoDLKvbdCEQAuilf
-EObjjvbdMowpunHT
-DoDLKvbdzHYlAMeX
-DoCkKvbdegkVqnQg
-DnbkKvbdwWlAuaVu
-DncKjvbdFfJqnItR
-EObjjvbdZjTHpHBf
-EPCkKvbdbsDKtEJa
-EOcLKvbdZtIiZESn
-DoDLKvbdpxoIHRDx
-EPDLKvbdTpqOtuIN
-DnbjjvbdmoyxvKxb
-DncKjvbdqGEEtWBI
-EPCkKvbdQwNdClHc
-DoCkKvbdHELViajK
-EPDLKvbdCJLBkIfK
-EPDLKvbdvwMBWBVu
-EPDKjvbdxrmiNRag
-EOcKjvbdxVMeQyLn
-DoCkKvbdraelkgLZ
-EPCjjvbddndsLUUS
-DoCjjvbdhgKDYvKV
-EPDKjvbdBiKbKiFj
-DncKjvbdKkBIWAKZ
-DnbjjvbdjlakzEgP
-EObjjvbdNrtWGeUp
-EPDKjvbdidkGuPAO
-DnbkKvbdjAQHBPgK
-DoCkKvbdUxgtZkPO
-DoDLKvbdDoCkLXDE
-DoDLKvbdkVvmcaxX
-EPCkKvbdmfeXmOHZ
-DoCjjvbdHDkWJajK
-DoDLKvbdkHgMGFnL
-EObjjvbdBdQAuilf
-EPDKjvbdxUleQxlO
-DoDKjvbdJbjDRJcY
-EPDKjvbdXsMAltOx
-EOcKjvbdIrxaSmXl
-DoDLKvbdyYJJbQZk
-DoDLKvbdQlwaxnUz
-EObkKvbdqvpMDIyR
-DoCkKvbdhzVGLpnG
-DncKjvbdJKEAJofd
-EOcLKvbdZLrETnLm
-DncKjvbdQvnDcMID
-EPDLKvbdiLddOUby
-EOcKjvbdeJiqvUzn
-DnbjjvbdsBemMGkZ
-EPCkKvbddtAUASmW
-EPCjjvbdiLeEOVCy
-EPDKjvbdkxrrSyHU
-DoCjjvbdURQoVUhN
-EOcKjvbdtkwwBUBX
-EOcKjvbddeOqawCj
-EOcKjvbdbAvEfPow
-EPCkKvbdzROmIjXA
-EObjjvbdKDKCpibx
-EPDKjvbdIGfyyYXg
-EOcLKvbdeOdsKssr
-EOcKjvbdsBelkgKy
-DoDKjvbdJYUCIMRQ
-EOcLKvbdjcMLQgVH
-EOcLKvbdJTYaSmXl
-DoDLKvbdNddUJIkE
-DoDLKvbdFjdsChNV
-DnbjjvbdmttyjjSG
-EPDLKvbdVgwuxHYz
-EOcLKvbdsCGMkfjy
-EOcKjvbdKWVGDeHJ
-EPDLKvbdjJegjMwr
-DoCkKvbdNHDQMotk
-DoDLKvbdjmBkydgP
-DnbkKvbdSLZFtfjs
-EPDKjvbdjbkjpfuH
-EObjjvbdkVwNdBww
-DncKjvbdFxtuBEYC
-EPCkKvbdrMzJxkhJ
-DoDLKvbdptUGrSKt
-EOcKjvbdhzUelQnG
-EObkKvbdsQVoKCuf
-DoCkKvbdzitpPcsU
-DoCkKvbdySnJMqag
-DncKjvbdZRMeImFR
-EObkKvbdYzcFrKVy
-DoDKjvbdrNZjZMIJ
-EPCkKvbdEvYoolie
-EOcLKvbdLBKgNCXq
-DnbkKvbdrpVnjDWG
-EObkKvbdLLBHvAJy
-DoCkKvbdqmZixkgi
-DoCjjvbdhytfLpmf
-DnbkKvbdVZHsyjoO
-EObkKvbdWWhxWEEg
-EObkKvbdhfjDZWJu
-DoCjjvbdZoOIddzK
-DoCjjvbdCDoaWJmG
-DoCkKvbdzitoocrt
-EOcLKvbdOSsvGduQ
-EOcLKvbdVqnXbElD
-EPDKjvbdgFlZnHHA
-EOcKjvbdUsltFkvK
-EPCkKvbdePFSkTsr
-EPCkKvbdssSTYzFD
-EOcLKvbdVTlselWK
-DncKjvbdZRMeJMdq
-EOcKjvbdYSlAlsnx
-DncLKvbdSZihTDWA
-DnbjjvbdvvlBWAuu
-EOcLKvbdEvZPoljF
-EPDKjvbdHELWJbJj
-DoDKjvbdDjHiuxKA
-DncLKvbdrMyjYkgi
-EOcLKvbdRbDdlIxk
-DoDLKvbdFVyQQMie
-EOcLKvbdZxdJmcMS
-EPDKjvbdFejRmiUR
-EPCjjvbdnPyxujxb
-DoCkKvbdjKGIKNXr
-DoCjjvbdYSlBNUPY
-DoDLKvbdZshiZDsO
-EPDLKvbdkyTRsYft
-DncKjvbdJbicQicY
-DoCkKvbdXGZZtAOs
-DnbkKvbdZjSgpGbG
-DncKjvbdWSOYBeMD
-DoDLKvbdKNADyfta
-DoDLKvbdLBKgMbYR
-EObjjvbdNddThhkE
-EPCjjvbdQdCaPqES
-DnbkKvbdvBDySoFI
-EPCkKvbdDoDLLWcE
-DncLKvbdaSGDHtGL
-EObkKvbdKNADzGta
-DncLKvbdTAFJHaoE
-EOcLKvbdTAFJIBoE
-DoDLKvbdUtNTelWK
-EPCkKvbdKefICApu
-EObkKvbdySmhlqbH
-EPDLKvbduaEYroFI
-DnbjjvbdSKxfVHLT
-EObkKvbdhkdcnVDZ
-DnbkKvbdCSaDTevr
-DoCkKvbdiBoCeXQq
-DncLKvbdZjShQGaf
-EPCkKvbdIwsagkqQ
-DnbkKvbdnCKWwoNu
-DncKjvbdelfWgNJk
-EOcLKvbdSPtHKFcw
-EObjjvbdZRNEhleR
-DoCkKvbdbLMGPNcA
-DoCkKvbdRkZFtfjs
-EOcLKvbdySmhmSBg
-DoCkKvbdWHxVwgYz
-EObjjvbdURQntuHm
-EPDKjvbdySnJMqbH
-EOcLKvbdOStWHEtp
-EPCjjvbdeOeTKstS
-DncLKvbdssRsZZdc
-EObjjvbdrovPKCuf
-EPDKjvbdiZuFkqOG
-DncLKvbdsBfNLfjy
-EOcLKvbdCDpAujNG
-EPDKjvbdOSsugFUp
-DoDLKvbdNQYRVmfs
-EOcLKvbdTAEiHaoE
-DoCjjvbdEPDKjwDE
-EPCkKvbdqUUGqqkU
-EPDKjvbdtbcVXVoP
-DnbjjvbdhbOcEvqR
-EOcKjvbdCTAcUGWr
-EPCkKvbdQdDApQcr
-DnbjjvbdTfznLwWF
-DnbkKvbdCDoaVjMf
-EPCjjvbdBsBDUFvr
-EPCkKvbdWWiXuceH
-DoCjjvbdJcJcRJbx
-DoDLKvbdsCGMlHKy
-EPCjjvbdSBceLhyL
-DoDKjvbdHffzZYYH
-EPCkKvbdvAdZTOeI
-DnbkKvbdxwhjBpZk
-DncKjvbdOFDtIhjd
-DoCjjvbdmpZxujxb
-EOcKjvbdIryAsMwl
-EPCkKvbdTqQnuUhN
-DncKjvbdOSsvHEtp
-EPDLKvbdZoOIdeZj
-DnbkKvbdKeegbAqV
-EPCjjvbdqFceUWAh
-DnbkKvbdCWzchdpW
-EPCkKvbdzQnlhiwA
-DoDLKvbdqdEiQNua
-DncKjvbdddoRawCj
-EPDLKvbdlYrrSxft
-DnbkKvbdRWnECkgc
-DncKjvbdGYuUaEYC
-EPDLKvbdZsiIxcrn
-DoCjjvbdJbibqJbx
-EPDKjvbdGYtuBDxC
-DnbjjvbdCEQAvKMf
-EObjjvbdvAcyTPEh
-DoCkKvbdxwhjBozL
-DoDKjvbdNsTugFVQ
-DoDKjvbdkHgLeemk
-EOcLKvbdwWlBVaWV
-EOcLKvbdrNZjYkgi
-DnbkKvbdJYUBglRQ
-DnbkKvbdjvWmdCXw
-EObjjvbdmajXYPOV
-DncKjvbdDihJuxKA
-EPCjjvbdwzIGGYFS
-DoDKjvbdMpYQvOHT
-DncLKvbdbhljLFwY
-EObjjvbdelevgMik
-DnbjjvbddePSCWbj
-DnbjjvbdKQydnenF
-DnbkKvbdZQmEhmFR
-DoDKjvbdjKFgimYS
-EObjjvbdANIZSvyx
-DoCjjvbdfHkWRnRH
-EObkKvbddiiqutzn
-EOcKjvbdqYnhHQdY
-DoDKjvbdKCjDQjCx
-DoDLKvbdjgflFfNk
-EOcLKvbdtTRrxzEc
-DnbkKvbduLwwBUAw
-DncLKvbdkWXOEBxX
-EPDKjvbdNxPVzcnU
-EPCjjvbdUMVnaWOi
-EObkKvbdZQmFImEq
-DncLKvbdQvmdDMID
-EObjjvbdGFjSNhsq
-EOcLKvbdbAvFFpQX
-DoCjjvbdkCkjqGuH
-EPCkKvbdbLLeoNcA
-DoDLKvbdemFwGmJk
-EOcKjvbdVUMtFlWK
-EPDLKvbdWXJXucdg
-DncLKvbdqcdhpNua
-DncLKvbdGYuUaDxC
-EPCkKvbdGZUtaDwb
-EOcLKvbdjuwODaxX
-EOcKjvbdSKyFuHKs
-EOcLKvbdNQYQvOHT
-EPCkKvbdNGcQNPuL
-EOcLKvbdPIAYZAZB
-EObjjvbdMfcPlpVL
-EPCjjvbdLAjflbXq
-EPCjjvbdySmhmRbH
-EPDKjvbdxsNhmSBg
-EOcKjvbdZMSDsmkm
-DoCjjvbdbAudfQQX
-DoCjjvbdePErjtTr
-DncKjvbdtkxXBUBX
-DoCkKvbdqvokbiYq
-DnbjjvbdMfbpMouL
-DnbjjvbdijFhKNXr
-DoDKjvbdhgJcZVjV
-EPDKjvbdIHGzZYYH
-DnbjjvbdNsTufeVQ
-DnbjjvbdqlyixlIJ
-EPDLKvbdmaivxPOV
-DnbkKvbdmJDsptrB
-DnbjjvbdQYmAGsSK
-EOcKjvbdZjTIQHCG
-EPDKjvbdqGDeTuaI
-EOcLKvbdADSYJzIp
-DncLKvbdeuzwoizs
-EObjjvbdFyUuBEXb
-DncLKvbdnUtykJqf
-EPCjjvbdelfXGmKL
-EOcKjvbdKCjDQjDY
-DncKjvbdaaVeGPow
-DncKjvbdqvolDJYq
-DoCjjvbdDnbjkWbd
-DoCjjvbdjlakyeHP
-DoCkKvbdLZRJrztf
-DncKjvbdZisIQHCG
-EPDLKvbdZyDjNbkr
-DnbkKvbdLAjfmBwq
-EOcKjvbdtSqryZeD
-EOcLKvbdIMBzmvqL
-EObjjvbdiVZdvqtb
-DoDLKvbdMgDPmQVL
-EPDLKvbdMgCpNPtk
-EObjjvbdKVuGDeHJ
-EOcLKvbdjJehJlxS
-EPCkKvbdhlEcmuDZ
-DoDKjvbdHfgZyXwg
-EPCjjvbdShyiqABM
-EPDLKvbdMgColouL
-EPDLKvbdVqmwadkc
-EPCjjvbdnCKWwnmu
-DncKjvbdRpUGjGEX
-DoDKjvbdkWWnECYX
-DnbjjvbdkMalZeGo
-EOcKjvbdxUleRYkn
-EObkKvbdFxtuBDxC
-EObjjvbdnGdwlnGy
-EObkKvbduaEYsOeI
-EPCkKvbdyTOJMrBg
-EObjjvbdDHMFgAzc
-DnbjjvbdEOcKkXCd
-EPDLKvbdBhjbLIfK
-EPCkKvbdZtJJZETO
-EOcLKvbdIwsagkqQ
-DoCkKvbdZyDjNbkr
-DnbjjvbdBsAbsfWr
-DoCjjvbdeOeSjssr
-EObkKvbdVUNUGMWK
-DncLKvbdfMfWfmKL
-DoCjjvbduaEZTOdh
-DoCkKvbdZisIPgBf
-DnbjjvbdVZHtZjoO
-DoCjjvbdCWzchePv
-EObjjvbdJmAEZfuB
-EObjjvbdvvkaVaWV
-DoCjjvbdiiegjNXr
-DnbjjvbdcScLUEJa
-DncLKvbdJXsbHlQp
-EPCjjvbdrpWOjDVf
-DoDLKvbdDnbjjwDE
-DnbjjvbdxnShYSiD
-DoCjjvbdqGEFUWBI
-DoDKjvbdtSrTYzEc
-EObkKvbdEPDLLWcE
-DoDKjvbdKQzEnfOF
-EPDLKvbdIwtBhMRQ
-DoCjjvbdTvLojUBR
-EPDLKvbdZyDimbkr
-EPDLKvbdptTfrSKt
-DncLKvbdkMbLyeHP
-EOcKjvbdKfFhBaQu
-EObjjvbdeEoRbXDK
-EOcKjvbdHDjvJbJj
-EObkKvbdEztQeLcJ
-DncKjvbdUtMsfLuj
-DnbjjvbdRXOECkgc
-DncKjvbdLAjfmBxR
-EOcLKvbdsPvPJcVf
-EPCjjvbdygYlAMdw
-DnbjjvbdmuVZkKRf
-EPCkKvbdSZigrcWA
-DncLKvbdcJMikGWx
-EOcKjvbdGLErcHlu
-DoDKjvbdKNADygUa
-EPDLKvbdMfbolpUk
-DoDLKvbdUxhTyjoO
-EPCkKvbdMtrqjmAX
-EPDLKvbdLBLGmBxR
-DoCjjvbdrzMQTAgn
-EPDLKvbdUxhTykPO
-DnbkKvbdnVUzLJqf
-DoCkKvbdLYpirztf
-EPDLKvbdFejSOItR
-DncLKvbdvlvANDeN
-DncLKvbdwtleRYkn
-EObkKvbdcJNKLFvx
-EPCjjvbdYSkaNTnx
-EOcLKvbdSxKlNzjx
-DnbjjvbdHbMZdzAD
-EPCjjvbdXnRAXuVt
-DoDKjvbdQmYBxnUz
-DoCkKvbdWSOYCEkc
-DnbkKvbdemGXGlik
-EObjjvbdNeDsiJLE
-DoCkKvbdbiMijfXY
-EPCjjvbdmIdTptrB
-DoCjjvbdEztQeMDJ
-DncLKvbdCIjbLIfK
-EPCjjvbdhkeENuDZ
-DoCkKvbdAMgxsWzY
-DoCjjvbdiZtelQnG
-EOcKjvbdWXJXuceH
-EOcLKvbdZRMeJMeR
-EPCkKvbdiVZdvquC
-DoDLKvbdkVvmdCXw
-EObjjvbdnHExMmgZ
-EPDKjvbdHgHZyYYH
-EPDKjvbdRbEFMJYk
-EPCkKvbdvBEZSndh
-DnbkKvbdcScLTdJa
-DoDLKvbdcJMijfXY
-DnbjjvbddndrjstS
-EPDLKvbdbiNJjevx
-DnbkKvbdOSsvGduQ
-DoDKjvbdMowpvNfs
-DoCkKvbdZjSgpGaf
-DnbkKvbdddnqawDK
-DoDLKvbdKaLGmCYR
-DoCjjvbdmuVZkKSG
-EOcKjvbdZQldiMdq
-EObjjvbdRNXayOUz
-DncLKvbdeuzxQJzs
-DncLKvbdEOcKkXCd
-DncKjvbdhtyeXSUb
-DnbjjvbdEObjkXDE
-DncLKvbdKQyePGNe
-EOcLKvbdHgGzZXwg
-EObkKvbdrMzJxlIJ
-EObkKvbdRXNdClHc
-DoDLKvbdwzIFexEr
-EPDKjvbdJYUCIMQp
-DnbkKvbdhbOcFWqR
-EOcKjvbdnGdxMmgZ
-EObjjvbddeOqawCj
-EPCjjvbdqTsgSSKt
-DncKjvbdJXtBhLqQ
-DoDLKvbdatagYKsh
-EOcKjvbdjEkHUoAO
-DncKjvbdLFfICBRV
-DnbkKvbdKQydoFme
-EPDKjvbdhlFEOVCy
-EPCkKvbdZxdJmblS
-EPDKjvbdJbjCqKCx
-DncKjvbdwNWANDdm
-EPDLKvbdpyPHfqDx
-EPCjjvbdOTTufeVQ
-EPCkKvbdtbbtvvOo
-DoCjjvbdbBWEfQQX
-EObjjvbdKNAEZgVB
-DnbjjvbdJXtBgkqQ
-EPCjjvbdGYtuBEXb
-DoDLKvbdZjShQGaf
-DoDLKvbdQmYCYnUz
-EOcLKvbdpedFTvAh
-EObjjvbdKQydoGNe
-EPCkKvbdKDJcRKDY
-EObkKvbdrafMkfkZ
-EObkKvbdiCObdwRR
-EPCjjvbddBsMrAUN
-DoDKjvbdWIXvXgYz
-DoDKjvbdkClKpftg
-EOcKjvbdkCkjpftg
-EOcLKvbdVrOYBeLc
-EObkKvbdmoyxukZC
-EPCjjvbddZyQXyRC
-DoCkKvbdhbPCdvqR
-DoCkKvbdJvUeceGi
-EOcLKvbdVqnXaeMD
-DoCkKvbdWWhxVceH
-EPDKjvbdiGjDZVjV
-EObjjvbdGAnpxizm
-DoCjjvbdiZuFlQnG
-EOcKjvbdTqRPVVIN
-EPCjjvbdqdEhomvB
-DoCkKvbdLAkHMaxR
-EPDLKvbdOEdThiKd
-DnbkKvbdkxrrTZGt
-EOcLKvbdEPDLLXCd
-DoDLKvbdTIzKRAAl
-EPDLKvbdSCDeLiZL
-EPCkKvbdpyOgfpdY
-EPCjjvbdtkwwBTaX
-EPDKjvbdiBoCeWqR
-DoCjjvbdhgJbxujV
-DoDLKvbdqdEhpNvB
-EOcKjvbdkCkjqGuH
-EPCjjvbdhbObeXQq
-EOcKjvbdxsOImRbH
-DoCjjvbdKWVFceHJ
-DoDKjvbdBiKbKiGK
-EPDKjvbdnGeXmNgZ
-EPDKjvbdiifHjNYS
-EOcKjvbdauBgXjsh
-DnbkKvbdUtMsfLvK
-DncKjvbdNrtVgEuQ
-EPDLKvbdUsmUGLvK
-EOcLKvbdNGcQMpVL
-EPCkKvbdqmZjZLhJ
-EObkKvbdFfKSOJUR
-DncKjvbdhaoCeXRR
-DoCkKvbdmfdwlnGy
-EPCjjvbdjbkjqGuH
-DoDKjvbdlqyVZsEJ
-DnbjjvbdWWiYVcdg
-EOcKjvbdeATqMwjG
-EOcKjvbdqUTgSSKt
-DncKjvbdqwQMDJZR
-EPCkKvbdsQVoJbuf
-DoCjjvbdVTmUFlVj
-DoDKjvbdmajWxPOV
-EOcKjvbdUQpoUthN
-DoDKjvbdwMvAMdEm
-EPDLKvbdDnbkLXDE
-DncLKvbdFfKSNiTq
-DncKjvbdIryBSlwl
-DoDKjvbdmgEwlmfy
-DncKjvbdqwPkbhyR
-DncLKvbdNeETiJKd
-EObjjvbdDoCjkXCd
-EObkKvbdjgflFfNk
-DncLKvbdxsNhlrCH
-DoCjjvbdeFOrCWbj
-EObjjvbdkNBkzFHP
-DoCjjvbdxrmiNSCH
-EOcLKvbdVwJXvDeH
-EPCkKvbdZRMdhmEq
-EObjjvbdjSzhsKiz
-DoCkKvbdqdEiQOVa
-EOcLKvbdpaJFAWhE
-EPDLKvbdRkYfVGjs
-DncKjvbdMpXqWNgT
-EOcLKvbdVYhUZkPO
-DoCjjvbdUxhTyjnn
-DoCkKvbdOYOuzcmt
-DoDKjvbdZLqdUNlN
-DoDLKvbdJSyBTMxM
-DoDLKvbdYORAXtut
-DncKjvbdHffzYxXg
-DncLKvbdmpZyVjyC
-EOcKjvbdmfeXlnGy
-DoDLKvbdkHfkeenL
-DoDLKvbdJTZBSmYM
-EObkKvbdrMzKZMHi
-DncLKvbdiLeDmuCy
-DoDKjvbdjvXNcbYX
-DnbkKvbdrJAJeMne
-DoDLKvbdvlvAMdFN
-EPCjjvbdZLrDsmlN
-DnbjjvbdaaVdfPpX
-EObkKvbdrbFlkfjy
-DoDKjvbdGLErbhNV
-DoCjjvbdCIkCKhfK
-DnbjjvbdeEoSBwDK
-DncLKvbdirziSjiz
-EPDKjvbdwzIGGYEr
-DncKjvbdbVCGwkTh
-EObkKvbdakMFnmcA
-DnbkKvbdRpUHKFdX
-DoDLKvbdMSWlytpz
-DncLKvbdpssgRrKt
-EPCjjvbdZRMeImEq
-DoCjjvbdqrVKmjaN
-EObjjvbdjAQGaPfj
-DoDLKvbdyqOmJJwA
-DnbjjvbdQccApRES
-DoDLKvbdIsYaSmXl
-EPCjjvbdrovPKDWG
-EPDLKvbdqdEhpOVa
-DoCkKvbdVviYVdEg
-DoCjjvbdqZPIGqEY
-EPCkKvbdOTTvGeVQ
-DoCkKvbdDncLLXCd
-EObkKvbdvBEYsOeI
-DoCjjvbdYORAYVVt
-EOcLKvbdhgKCxuiu
-DoDKjvbdddoRbWcK
-EObkKvbdmoyyWKyC
-EOcLKvbdyYJJbQZk
-DnbjjvbdUyIUZkPO
-DncKjvbdFyUuBDxC
-DoCjjvbdnQZyVjyC
-DoDLKvbdatbHYKsh
-DoCjjvbdczYowxpb
-DncLKvbdIsZAsMxM
-EPDKjvbdGKeTChMu
-DoCkKvbdptTgSRjt
-EPDKjvbdMtrqjmAX
-DncLKvbdKQzEoFme
-EObjjvbdFxtuAcxC
-DncKjvbdkDLkRHVH
-EPCkKvbdunszqKnt
-DoCkKvbdezuxeJTw
-EObkKvbdzjVQQDsU
-EPDLKvbdjKGIKMxS
-DoCjjvbdcyyQXxqC
-EObkKvbdhtydwRtb
-DnbjjvbdfNGXHNKL
-DoDKjvbdmoyxujxb
-DncLKvbdmuVZkJqf
-EObkKvbdZyDjNbkr
-DnbkKvbdyXhiaozL
-EObkKvbdKWUfDeHJ
-DoCkKvbddoFTLUUS
-DnbjjvbdJvUfEFHJ
-EObjjvbdsrqrxzFD
-EObjjvbdmgFYMmfy
-DnbjjvbdbrcLTcjB
-EPDKjvbdZtIiZETO
-DncKjvbdSLZGVHLT
-EObjjvbdhtzFXSVC
-EOcKjvbdvAcxsPEh
-EOcKjvbdbrbjsdKB
-DoDKjvbdezuxdiTw
-DoDKjvbdhkdcnVDZ
-DoCkKvbdNddUJIkE
-DnbjjvbdsCGMlGjy
-EOcKjvbdssSSxydc
-DoCjjvbdSPtHJfDw
-DoDLKvbdmRyVZrdJ
-EOcLKvbdBdQBVjNG
-EPCjjvbdtvOXipsA
-EOcLKvbdDwwlUUUM
-EObkKvbdhkeENuDZ
-EOcKjvbdwygfGYEr
-DncKjvbdbsCkUEJa
-DnbkKvbdvlvAMceN
-EPDKjvbdTvMPitAq
-EPDLKvbdMowpvOHT
-EOcKjvbdNQXpvNgT
-DncKjvbdYzcFqiuy
-EObjjvbdqUUGrRjt
-EOcKjvbdUaBqTRSZ
-DnbjjvbdrafMkfjy
-DncLKvbdmgFXmNfy
-DncKjvbdNrtVfdtp
-EOcKjvbdVZITyjoO
-EPDKjvbdTukpJtBR
-DoDLKvbdyOTHxTIc
-DnbjjvbdsBfNLfkZ
-EPCjjvbdmJDtRVSB
-EObjjvbdmJDtRUrB
-DnbjjvbdiVZeWrVC
-DncKjvbdBiKajhfK
-DnbkKvbdziuQPcsU
-EOcKjvbdGFiqnJTq
-DoCjjvbdAMhZTXZx
-DncLKvbdDjHiuwjA
-DnbkKvbdBdQBVjNG
-EPCjjvbdqlzKYkgi
-DncLKvbdLLBIWAJy
-DncLKvbdbhljKfXY
-DncKjvbdaogHELzd
-DnbkKvbdjEkGtoAO
-DnbjjvbdGdKvJbKK
-EPDLKvbdqrUjnKaN
-EObjjvbdnVUykKSG
-EPDKjvbdVrNwbFMD
-DoDKjvbdvlvAMdEm
-EPCjjvbdaaWEeopX
-EPDLKvbdULuoBVoJ
-EPDLKvbdzjUpPcsU
-EPDKjvbdZnnJEdyj
-EPDKjvbdtlXwAsaX
-EPCjjvbdjJfHimXr
-EPCkKvbdxwiKBpZk
-DoCkKvbdLiBlQxAS
-EObkKvbdXFxytAOs
-EObjjvbdnQZxukYb
-DncKjvbdZxcjNcMS
-DnbkKvbdQcbaQQcr
-EObkKvbdVgxVwgYz
-DoDLKvbddoEsLUUS
-EOcKjvbdTppnttgm
-DoDKjvbdBhkBjhej
-EPCkKvbdlhcsqVRa
-DoDKjvbdZshiYcsO
-DoDKjvbdtcDUvvPP
-DnbkKvbdRkZFuGjs
-DoCkKvbdaaVeFopX
-EObkKvbdYORAXtut
-DncLKvbdqwPlDJYq
-DoDLKvbdbBWEepPw
-DnbkKvbdVvhxWDdg
-EObkKvbdfHkVqmpg
-DncKjvbdaMjartmH
-EPCkKvbdBhjbLIej
-DoCjjvbdCIjbKiFj
-DoDKjvbdkIHLefOL
-EOcKjvbdrbGMlGkZ
-DncLKvbdPxmAGsRj
-EOcKjvbdZxdKODMS
-DncKjvbdkDLjqHUg
-EOcLKvbdjEkHUoAO
-DoDLKvbdrovOjDVf
-DncLKvbdZshiZESn
-DncKjvbdUyIUZjnn
-EPDLKvbdxmrhYSiD
-DoCjjvbdaNKasUlg
-DnbkKvbdYqMeJMdq
-DncKjvbdZoOIeEyj
-EOcKjvbdemGXGlik
-EObjjvbdyzdnRhIh
-DncKjvbdHEKvJbJj
-EObkKvbdSCDdlIxk
-EPCjjvbdGAoQxizm
-DoCjjvbdaNKasVMg
-EObkKvbdePErkTtS
-EPCjjvbdlhdUQuSB
-EPDKjvbdNQXpvOGs
-DoCkKvbdXnRAYUut
-EObkKvbdcTCkUEKB
-DncLKvbdmRyUzSdJ
-EPDLKvbdrSVLNkAm
-DoCkKvbdJvUecdgJ
-DoDLKvbdRDbaQRDr
-EPDKjvbdYlSETmlN
-EPCkKvbdbUagYKtI
-EPCjjvbdssRrxzFD
-EPCjjvbdRMwbYmtz
-DnbjjvbdxrmhmRag
-DoDKjvbdTvLpJtAq
-EPDKjvbdVBBprprZ
-DnbkKvbdRkYeuGkT
-EOcKjvbdmbKWwoOV
-EOcKjvbdZeYGzghb
-EPCjjvbdFeirOJUR
-DoCkKvbdZsiIxcrn
-EPDKjvbdDnbkKvcE
-DoDLKvbdsrrTZZeD
-DncKjvbdJbjCpicY
-DnbjjvbdcyxpXxpb
-EPCjjvbdrXQLbhxq
-DncKjvbdzROmJJwA
-DoDKjvbdqdFIpNvB
-EPDKjvbdkHfkfGNk
-DoDKjvbdFjdsDINV
-DoDKjvbdUyITyjoO
-EOcLKvbdiUzEwRtb
-EPCkKvbdmfeYMmgZ
-DncLKvbdHgGyyXxH
-EObkKvbdMuTSLNAX
-DncKjvbdtbcUwWOo
-DoCjjvbdVwIxWEFH
-EOcKjvbdhgJcZWKV
-DoCjjvbdsCFllHLZ
-EPDKjvbdGcjvJbKK
-EOcLKvbdnGeYNNfy
-DncKjvbdZnnIeFZj
-DoDKjvbdxUldqZLn
-EOcKjvbdrovOibvG
-DoDKjvbdUWLpKTaR
-DncKjvbdePFTKtTr
-EPDLKvbdFxtuAdYC
-DoDLKvbdfIKvRnQg
-EPDLKvbdypnmIjXA
-DncKjvbdbUagYLUI
-EPDKjvbdnVUyjiqf
-EObkKvbdKWVGDeGi
-EObkKvbdaNKbSuMg
-DoDKjvbdNVSqkNAX
-EObkKvbdhbPDFWqR
-DoDLKvbdLGFhBaRV
-EOcKjvbdbrcLUDjB
-EObjjvbdZHXEAPTJ
-EPCjjvbdCSaDTevr
-DncLKvbdgQBzvcxI
-EObjjvbdidjfuPAO
-DoDLKvbdzjUoodTU
-DncKjvbdGLEsChNV
-EPCjjvbdNeDshiLE
-EObjjvbdGGKRnIsq
-EObkKvbdeYZtTqez
-EOcKjvbdQwODblHc
-DoCkKvbdkClLRHVH
-EPCkKvbdxUldqYkn
-EPCkKvbdvBDxsPFI
-DnbkKvbdqvpLcIyR
-DncKjvbdqmZixkhJ
-DoDLKvbdkVwNdCYX
-EObkKvbdUxgsykPO
-EPCkKvbdjcLjpgUg
-DnbjjvbdbUagYKtI
-EObjjvbdDjHjWXjA
-EObjjvbdrykpSaIO
-EObjjvbdrbGMlGjy
-DncLKvbdVYhUZjnn
-DoDLKvbdjlakydfo
-DnbkKvbdVTmUGMVj
-EObjjvbdZjTIQHCG
-EOcLKvbdZxcjNcLr
-DoCkKvbdqTsgSRjt
-DnbjjvbdCIkBkJFj
-EPCkKvbdaogHELzd
-EPCjjvbdNPxQunGs
-EObjjvbdxZhFfXeS
-DoDKjvbdjblKqHUg
-EObkKvbdNPxRWNgT
-DoDKjvbdkaNOmALA
-EPDLKvbdxsOImSCH
-EOcLKvbdZshhyETO
-EPDLKvbdIHHZyYYH
-DoDKjvbdliEURVRa
-EObjjvbdiVZeXRtb
-EOcKjvbdiHJcYvJu
-EOcKjvbdIsYaTNXl
-DoCkKvbdtlXvaTaX
-EOcKjvbdNQYRVnHT
-DoDKjvbddjJqvUzn
-DoDKjvbdULuoBVoJ
-DoDLKvbdUslselVj
-EPCkKvbddePSCWbj
-EPDKjvbdNeDtIiKd
-EOcKjvbdiUzFXSUb
-DoCkKvbdmRyVZsEJ
-EPCjjvbduLwwAtBX
-EPDLKvbdxZgfGXdr
-DnbkKvbdBcpAujNG
-DnbjjvbdZtJIyDrn
-EObjjvbdmbJvwnmu
-EPCjjvbdXnRAYVWU
-EOcLKvbdyOShXsJD
-DoCjjvbdptUGqqkU
-DnbkKvbdFpASwHGZ
-DnbkKvbdwtleRYlO
-EPCkKvbdnHFYMmfy
-EPDKjvbdKCjDQjDY
-EObkKvbdeqaWzlDP
-DoCkKvbdbLMGPODA
-DoCjjvbdpyPIGqDx
-EOcKjvbdbhmKLFwY
-DoDLKvbdEOcKjwCd
-EPCkKvbdePFTKtUS
-EPCkKvbdtvNwipsA
-EPCkKvbdzoQQdblY
-EOcLKvbdKjaHvAJy
-EPDKjvbdvPTzpkOt
-EPDKjvbdMJCLpxAS
-EObkKvbdWWhwvEEg
-DnbkKvbdcJNJjevx
-DoCkKvbdNQXpunGs
-EPDKjvbdWSNxBdlD
-EPDKjvbdwyhFeweS
-DncKjvbdddnrCWcK
-EObjjvbdeKJrVtzn
-EObjjvbdrykosBIO
-EPDKjvbdiiehKMxS
-DncKjvbdrWpMCiZR
-DoCjjvbddoFSjssr
-DoCjjvbdbhmKKfWx
-EObjjvbdmajWwoNu
-EOcLKvbdDxYLstUM
-EPCjjvbdddoRawDK
-DncKjvbdmuUzKjSG
-DoDKjvbdLFegbBRV
-EPCkKvbdySnJMqbH
-DnbjjvbdLLAgvAKZ
-EPCjjvbdraemMHLZ
-EObjjvbdnUtzLKSG
-EPDKjvbdkDMLQgVH
-DoDKjvbdkHgMGGOL
-DoCjjvbdxsNiNSCH
-EObkKvbdNQXpvOHT
-EObkKvbdQwNdDLgc
-DnbjjvbdegkWRnRH
-DnbkKvbdGZUuAcwb
-DncLKvbdiMEcmuCy
-DoDLKvbdFfJqnJTq
-DoDKjvbdZnnJFEzK
-EOcLKvbdTqRPUtgm
-EOcLKvbdRjyFuHLT
-EOcKjvbdhtzEwRtb
-EObjjvbdTXjkmzjx
-DoDKjvbdqdFJQOVa
-DoCkKvbdGckViajK
-DncLKvbdDxXlUTsl
-EOcLKvbdeUAUASlv
-DnbkKvbdzjUpQETU
-DnbkKvbdtcCuWuoP
-DncLKvbdauBgXkUI
-DoCjjvbdUVlPitBR
-DnbkKvbdFfJrOItR
-DoDLKvbdxnSgwsJD
-EPCkKvbdXsMBNToY
-DncLKvbdCTAcUFwS
-DoDKjvbdhgJbxvJu
-DoDLKvbdhkeDnUby
-EObkKvbdEvZPpNKF
-EPCjjvbdiHJcZWJu
-EObjjvbdIHHZyYXg
-DoCkKvbdegkVqmqH
-DoCjjvbdxVNFRZMO
-DoDLKvbdUQpntuIN
-DoDKjvbdEJhJuwjA
-DoDKjvbdkHflGGNk
-DnbkKvbdmttykKRf
-DncLKvbdZxdJmblS
-DnbjjvbdZQmEhmEq
-DoCjjvbdJcJcQjDY
-DoDKjvbdBhkCLIej
-DoDLKvbdmIcspuRa
-DnbjjvbdqiAKElne
-DoCjjvbdJpzEoFnF
-EOcKjvbdyOShYTJD
-DoCkKvbdmuVZjiqf
-DoDLKvbdSCDeLhyL
-EOcKjvbdJvUedFGi
-EObkKvbdehLWRnRH
-EPDKjvbdxmrhXriD
-DoDLKvbdOTUWGeVQ
-EPCjjvbdzRPMhiwA
-EPDKjvbdKRZePGOF
-DoCkKvbdrDeIomvB
-EPDKjvbdkVvmdBww
-DoDKjvbdIGfzYwwg
-EPDLKvbdFVyPpNKF
-DoDKjvbdhytfLqNf
-DnbjjvbdMfbomQUk
-EOcLKvbdtcDVXWOo
-DoDKjvbdqwPlDJYq
-EOcLKvbdZshiZETO
-EOcLKvbdeEnrCXCj
-EOcKjvbdZLrDsnLm
-EPCjjvbdLYqKSzuG
-DncLKvbdMtsRjmAX
-DoCjjvbdJTZArlxM
-EPCkKvbdlZSrTZGt
-DncKjvbdRyjITCvA
-DoCjjvbdEuxpPmKF
-DnbkKvbdTYKkmzjx
-DoDLKvbduDDVXWPP
-DncLKvbdjAPfaPgK
-DncLKvbdrEFJPnVa
-EPCjjvbdrXQMChyR
-DnbkKvbdznpQeDLx
-DoCkKvbdjgflFfOL
-EObjjvbdjlalZdgP
-DoCjjvbdtbcUvvOo
-DoCkKvbdrEFIonWB
-EObjjvbdwXMAvAuu
-DncLKvbdePFSkUTr
-EPCkKvbdTppoUuIN
-EPDKjvbdIxUCHlQp
-DnbkKvbdBiLBjiGK
-DoDKjvbdliDspuRa
-EObjjvbdFkFTDIMu
-EPCjjvbdsQVnjDVf
-EPCjjvbdKefIBaRV
-DoDKjvbdIryAsNYM
-DoCkKvbdsrqrxzEc
-EPCjjvbdLqwNZuQz
-EOcLKvbdcIlikGXY
-DoCjjvbdADSXizIp
-DoCkKvbduaEZTOeI
-DncKjvbdvBDyTPEh
-EPCkKvbdRkZFuHKs
-DoDLKvbdSLZFuGkT
-EOcLKvbdfekzOHHA
-EOcLKvbdkaMoNALA
-DncLKvbdkNCMZeGo
-EObjjvbdNsUVfduQ
-EPCjjvbdZoNiEeZj
-DoDLKvbdLYpirzuG
-EPDKjvbdmoyxujyC
-DoCkKvbdaMjbSuNH
-EPDLKvbdxxIjCPzL
-DnbkKvbdVAaqSprZ
-DoCjjvbduVmxJqTA
-DoCkKvbdRkZGVHLT
-DoDKjvbdEuyQPljF
-DnbkKvbdptUHSRkU
-DncLKvbduLxWaUAw
-EObjjvbdaaVdfQQX
-EPDLKvbdWWiYVdFH
-EOcLKvbdfelZmgHA
-DoCjjvbdADRxKZiQ
-EOcKjvbdfHkWSORH
-EObkKvbdTAEiIBoE
-DncKjvbdEKIKVxKA
-DoCkKvbdkDMKpgVH
-DnbkKvbdCWzciEpW
-EObjjvbdxZgefXeS
-EOcLKvbdsZkpTBIO
-DoDLKvbdrJAKFMne
-EPDKjvbdkWXNdBww
-DnbkKvbdRbEFLhyL
-DncLKvbdWXJYWDeH
-EOcLKvbdijFgjMwr
-DoDLKvbdnHExMnGy
-EObkKvbdZeYGzhJC
-DnbjjvbdEvZPpMie
-EObjjvbdYpldiMdq
-DoCjjvbdfRaWzlCo
-EPCjjvbdGYtuBDxC
-EOcLKvbdQYmAGrrK
-EPCkKvbdlhcspuSB
-DoDLKvbdezvZFIsw
-EOcKjvbdlYsSTZHU
-DnbkKvbdmfeXmOGy
-DncLKvbdKDKDQicY
-DncKjvbdZjTIQHCG
-DnbkKvbdgFkzOHHA
-DnbkKvbdaNLBsVNH
-DoCjjvbdBsBCtGWr
-DncKjvbdqdFIomvB
-DnbkKvbdkNBlZdfo
-DnbkKvbdSQTgKGDw
-DoCkKvbddoFTLTsr
-DoDKjvbdEYYLtTtM
-EOcKjvbdVwJYWEEg
-DoDLKvbdyOSgwrhc
-DoCkKvbdZMRdUOLm
-DoDLKvbdYSlBMtOx
-EPCkKvbdkxsRsYft
-DnbkKvbdrzLpTAgn
-DncKjvbdRjxfUgKs
-DnbkKvbdqquLNkAm
-DoDLKvbdRMxCYnUz
-EPCjjvbdZoOIdeZj
-EObkKvbdrpWOicVf
-EPDLKvbdkCkjqHVH
-EOcKjvbdmSZUzSci
-EObjjvbdRjxfUgLT
-EObjjvbdNddThhjd
-DoCjjvbdKVuFcdfi
-EPDKjvbdzjVPodTU
-DncKjvbdJTYaSmXl
-DncKjvbddZyQXyQb
-EPCjjvbdCIkCKiFj
-EPDKjvbdTkunaWOi
-EObjjvbdfIKuqnRH
-DoCjjvbdZRMdiMeR
-DnbjjvbdMpXpunHT
-DoDLKvbdZRNEhmFR
-EObjjvbdaoffdLzd
-DoDLKvbdvAdYsOdh
-DnbjjvbdSLZGUgLT
-DoCjjvbdSCDdkiZL
-DoDLKvbdelewHNKL
-DoCjjvbdRXNdDMHc
-EObjjvbdkWWnDaww
-EObjjvbdcyxoxZRC
-DncKjvbdelfWfljL
-EObjjvbdZnnJEdzK
-EOcKjvbdkHflGFnL
-DoCkKvbdhbPCdwRR
-EPDLKvbdHDkWKCKK
-DnbkKvbdRadEkiYk
-EOcLKvbdFWYopNJe
-DoDLKvbdqTsfrSKt
-EObjjvbdxnSgxTJD
-EPDLKvbdxZhFewdr
-EPCkKvbdTvLojTaR
-EObjjvbdfIKuqnQg
-EPCjjvbdDxXlTssl
-EObjjvbdQvmccLhD
-EObkKvbdRNXayOUz
-EPCjjvbdatbGxLTh
-EOcKjvbdOSsvGeVQ
-EPDKjvbdePFTKstS
-DnbjjvbdlYsRsZHU
-DnbjjvbdZisIQGaf
-DoCkKvbdsrqsYzEc
-EObjjvbdfILVqnRH
-DnbkKvbdZHWdAPTJ
-DoDLKvbdEPCkLXCd
-EObjjvbdEXwktTsl
-DncLKvbdFVyQPlie
-DncKjvbdNsUWHEtp
-EOcKjvbdyqOmJKXA
-EOcKjvbdADSYJyhp
-EPDKjvbdUyIUZjoO
-EOcKjvbdmJEURVSB
-DnbjjvbdIwtBgkpp
-EPCjjvbdZQmEhldq
-EPCkKvbdDjHiuxKA
-DoDKjvbdrEEiQOVa
-DncKjvbdKDKDQjCx
-DncKjvbdZRNFJMeR
-DncLKvbdwygeeweS
-DncLKvbdnUuZkKSG
-DoDKjvbdvwMAvBWV
-DoCjjvbdBhkCLIfK
-DnbjjvbdoznDkXoA
-EOcKjvbdjgflFemk
-EObkKvbdKVtfDdgJ
-DnbjjvbdXrkaNUPY
-DncKjvbdhlEdNtby
-EPDKjvbdemGWfmJk
-DoDLKvbdlhctQtrB
-EObjjvbdnVVZkJqf
-EObjjvbdwuNEpyMO
-DoCjjvbdTpqOuVHm
-EObjjvbdbLLennDA
-DoDLKvbdiGjDZWKV
-EPDLKvbdFjeTDHlu
-DoDLKvbdDxYLstUM
-EPDLKvbdiUzFXSVC
-DncKjvbdJYTbHkpp
-DoCkKvbdZshhxdSn
-EPDKjvbdxrnIlqag
-EOcLKvbdiHJcYvJu
-DnbjjvbdkVwNcaxX
-EObjjvbdpyPIGpcx
-EPCkKvbdauCGxLUI
-EObkKvbdWRnXadkc
-DnbkKvbdVUNUGLvK
-EObkKvbdDxYLsssl
-DnbkKvbdCJKbKhfK
-DncLKvbdbhmKKfXY
-EOcLKvbdZoOIeFZj
-DoDLKvbdkNCLzFHP
-EObkKvbdpxnggQdY
-EObkKvbdYqNFJNEq
-EPCjjvbdyzdnSHhh
-EOcKjvbdczZQYZQb
-DncKjvbdZyDimblS
-DncLKvbdyOTIXrhc
-EObjjvbdhzUelQnG
-EObjjvbdFjeTChNV
-DoCjjvbdwMvANEEm
-DoDLKvbdRXOEDMID
-DncKjvbdiHJcYvJu
-EOcLKvbdhtzFWrVC
-DncKjvbdVYgsykPO
-DoCjjvbdGGKRmiUR
-EPDLKvbdQmXbYnUz
-DnbkKvbdkIGlFemk
-DoCjjvbdSPsgJfDw
-DncKjvbdzjVQPcrt
-EPDKjvbdmfdxNNfy
-EPDKjvbdZyDimblS
-DoDKjvbdANIZSvzY
-DoCkKvbdJqZdoGOF
-EOcKjvbdcJMijewY
-DncLKvbdNQXqWNfs
-DncLKvbdkNBlZeGo
-DoCjjvbdHffzZYXg
-DoDKjvbdjhHMGGOL
-DnbkKvbdiCObdvpq
-DoDLKvbdYlRctNkm
-EObkKvbdiUzEwRuC
-DncLKvbdMfbomPuL
-EPCkKvbdlZSrSyGt
-DncLKvbdvAcxroFI
-DoCjjvbdNGcQNQUk
-DncKjvbdWSNxBeLc
-EPCkKvbdqvokcIyR
-DncLKvbddZyQXxqC
-DoCkKvbdvPTzqLPU
-DncLKvbdZxcjNblS
-EPCjjvbdkMbLzFHP
-EPCkKvbdlYrqsYgU
-DnbjjvbdWSOXbFMD
-DnbkKvbdWeyZtAPT
-EPCkKvbdEKHivYKA
-DoCkKvbdkNBkyeGo
-DoDLKvbdiBoDEvqR
-DoDLKvbdRkYfVGjs
-EOcKjvbddneSkUTr
-EObjjvbdFejRnItR
-DncLKvbdLAjgMbXq
-DnbkKvbdUGznLwVe
-DoDKjvbdLqwNZtpz
-EPDKjvbdUxhTyjnn
-EPDLKvbdkNBkyeHP
-DoCjjvbdgFkzNgHA
-EObjjvbdunszpjnt
-EPCkKvbdtAHQhABS
-DnbjjvbdbKkfOnDA
-DoCjjvbdVviYWEFH
-DoCjjvbdGZUuAdXb
-EObjjvbdhlFDmuCy
-DncLKvbdyfyMAMdw
-EObjjvbdFyUtaDxC
-DnbkKvbdeEoSCXDK
-EOcKjvbdbVCGwjtI
-EOcLKvbdTAEhgand
-EObkKvbdRpUHJecw
-DnbjjvbdZsiJZDrn
-DncLKvbdtSqrxyeD
-DoDKjvbdJSxaSmYM
-EPCkKvbdjuvnECYX
-DoDLKvbdrMyjYkgi
-DnbkKvbdjJegjNXr
-DoDLKvbduaDxsOdh
-DoDLKvbdmIcsptrB
-EObkKvbdFkFTDHmV
-DnbjjvbdYORAYVVt
-DncLKvbdddoRbWcK
-EPDLKvbdLrWmZuQz
-DoDLKvbdliETpuRa
-DoCjjvbdbrcKsdKB
-DoCkKvbdHkazmvpk
-EPCjjvbdUaBpsRRy
-EObkKvbdKfFhBaQu
-DoCkKvbdKQydnfNe
-EOcLKvbdDjIKVxKA
-DncKjvbdpeceUWBI
-DncLKvbdKaLHNBxR
-EPDLKvbdptTfrRkU
-EPDKjvbddndsLTtS
-EObjjvbdMpXpvOHT
-DnbkKvbdaMjaruNH
-DoCkKvbdpecdtVaI
-DncLKvbdRpTfjGEX
-EObkKvbdCSaCsevr
-DoCkKvbdnHEwmNgZ
-EObjjvbdfHjuqmqH
-DoDKjvbdKWVGDeGi
-DoDLKvbdWHxVxHYz
-DnbjjvbdXsLaMsnx
-EPDLKvbdDjHiuwjA
-DnbjjvbdaaWFGQQX
-DnbjjvbdsrrTZZdc
-DoCjjvbddneTKtUS
-DoDKjvbdcJMjLFvx
-DoDKjvbdaNKbTUlg
-DnbjjvbdkHflFfOL
-EObjjvbdJpzFOeme
-DoCjjvbdrounibuf
-DoCjjvbdHgHZxwxH
-EOcLKvbdSKxeuGkT
-EOcLKvbdzQoNJJwA
-EObjjvbdZnnJEdzK
-DoDLKvbdJuuFcdfi
-DncKjvbdIryBSmYM
-EObkKvbdyYJJaozL
-EObjjvbdFkEsDHmV
-DnbkKvbdfMfXHMjL
-DnbkKvbdLGGIBaRV
-EOcLKvbdRXNdDMHc
-DoDKjvbdegjvRnRH
-DnbkKvbdKeegaaQu
-DnbjjvbdkMakzEgP
-DoDKjvbdcTDKtEKB
-DncLKvbdhaoDEvqR
-DncLKvbdmgEwmNfy
-EPDKjvbdCIjbLIfK
-DncLKvbdJvUedEgJ
-DoCjjvbdFVxpPljF
-EOcLKvbdJYUCIMRQ
-EPDKjvbddwyssrFz
-DoDKjvbdiMEdOUcZ
-DoDKjvbdZQleIldq
-EPCkKvbdnQZyVkYb
-DoCjjvbdNGbpNPuL
-DoCkKvbdOStVgFVQ
-EOcKjvbdGBPQxizm
-DnbjjvbdOXoVzcnU
-DncKjvbdyqPNIiwA
-DoDLKvbdkIGlGGNk
-EPDKjvbdbiNKLFvx
-DoCkKvbdCTBCsfWr
-DoDKjvbdShyjRABM
-EPCjjvbdxwhjBozL
-DoCkKvbdqUUHSSLU
-DoDKjvbdbBVdfPow
-DoCkKvbdqYnggRDx
-DoCkKvbdtkwwAsaX
-EPDLKvbdZMSDsnMN
-EPDLKvbdZjTIQGbG
-EPCjjvbdzoPpdblY
-EPDKjvbdVviYWEFH
-DnbjjvbdUsltGLuj
-DoCkKvbdQdDAopcr
-EPDKjvbdZxcjNbkr
-EPCjjvbdZisHpGbG
-EPDKjvbdEuxpPmKF
-EOcKjvbdQwNccLgc
-EPCjjvbdEYYLstUM
-EObkKvbdZRNEhmEq
-DoDKjvbdaRfDIUGL
-DncKjvbduaDxsOeI
-EObkKvbdmaiwYPOV
-EOcKjvbdKDJbqJbx
-DoDKjvbdQvnEDLgc
-DnbkKvbdtlXvaTaX
-EPDKjvbdzQoNIiwA
-EOcLKvbdNeDsiIjd
-DnbkKvbdBdQAvJlf
-DoCkKvbdhzVGMROG
-EPDLKvbdUaCQsRRy
-EOcLKvbdZisHogCG
-DoCkKvbdlqxtzTDi
-DoCjjvbdRkZGUgKs
-EObkKvbdZnmhdeZj
-EOcLKvbdZjTHogBf
-DncLKvbdhytfLqNf
-EPCkKvbdnPyxvKxb
-DncLKvbdjcMKqHVH
-EPCkKvbduWNwjRTA
-DnbkKvbdwygfGXeS
-EObjjvbdTlWOaVoJ
-EPCjjvbdUtNUGLvK
-EObkKvbdKkAgvAKZ
-EObkKvbdaMkCTUmH
-EPDKjvbdOFDshhjd
-EPDLKvbdhzUfLpmf
-EPCkKvbdkySrTYgU
-EOcLKvbdFfKSNhsq
-DncKjvbdOAJTUKSA
-EPDLKvbdrDeJPmvB
-EPCkKvbdKRZdnfNe
-EPCjjvbdRDcAoqDr
-EOcKjvbdNHDQNPtk
-EOcLKvbdVTmTfMVj
-EOcKjvbdrXQMChyR
-DoCjjvbdZQmFJNEq
-EPCkKvbdWRmwadkc
-EObkKvbdSCDeLhyL
-DncKjvbdyNsHxTJD
-EPDKjvbdtSrTYydc
-DoDLKvbdiGjCxuiu
-DoCkKvbdrNZjZLgi
-EPDLKvbdJmADzGuB
-DncLKvbdtcCuWuno
-DnbjjvbdDxXktTtM
-EPCjjvbddZyPxZQb
-EPDLKvbdlqxtysDi
-DoDLKvbdbAueGPpX
-EObjjvbdVviXvDdg
-EPDKjvbdBdQAvKMf
-DnbkKvbdPxmAHSqj
-DoDLKvbdUsltFlWK
-DncKjvbdVhYWYHYz
-DoDKjvbddwzTtSFz
-DncLKvbdIGfzYwwg
-EPCjjvbdmJDsqUrB
-EPCkKvbdGQASwGey
-EOcLKvbdTlWOaVoJ
-DncLKvbdLFehCBRV
-DnbjjvbdTkvOaVoJ
-EPCkKvbdwXMAvBWV
-EObjjvbdpxnhGqDx
-EOcLKvbdsrqryZeD
-DoDLKvbduVnXjQsA
-DncLKvbdRotHKFdX
-EOcKjvbdnUtyjirG
-EOcKjvbdCJLCLJFj
-EOcLKvbdSCEFLiYk
-DoDLKvbdjcMLQgVH
-DoCkKvbdLBLGlaxR
-EObkKvbdZQldiNFR
-EOcLKvbduMXwAsaX
-DncKjvbdxrnIlrBg
-EObkKvbdehKvRnRH
-DoDLKvbdRosfiecw
-DoCkKvbdFjdrcINV
-EPCjjvbdkWWmdBxX
-DnbjjvbdFkFTDHlu
-DoCjjvbdTAEhgaoE
-DoDKjvbdANIZTWyx
-EObkKvbdJSyAsNYM
-EPDLKvbdqTtHRqkU
-EPDKjvbdbBVeFoow
-EPCkKvbdYSkaMsoY
-DncLKvbdDnbkKwDE
-DncKjvbdMSWlzUpz
-DncKjvbdauCHXjsh
-DoCjjvbdTvMQKUBR
-DoDLKvbdrRuLOLAm
-EOcKjvbdatbGxKtI
-DncLKvbdNGcQMotk
-EPDKjvbdiCObeWqR
-DoDKjvbduDDUwVno
-DncLKvbdYlRcsmkm
-DncKjvbdbAueFoow
-EObkKvbdYTMBNToY
-DncKjvbdvAdYsPEh
-EObjjvbdBdQBWKMf
-DnbkKvbduCbuWuno
-EOcLKvbdKWVGEFHJ
-EObkKvbdcyyQXxqC
-DnbkKvbdaMjasUmH
-EPCkKvbdmgEwlmfy
-DoDLKvbdrDdiQOVa
-DoDKjvbdUyIUZjnn
-DnbkKvbdnBjXYOnV
-EOcKjvbdRpTgJfDw
-DncKjvbdjcLjqGuH
-DnbkKvbdZjTIQHCG
-EOcKjvbduVnYKRTA
-DnbkKvbdGckWJbKK
-EObjjvbdZyEJnDMS
-DncKjvbdNsUWGduQ
-EObjjvbdKQzEoFme
-EOcKjvbdVUMtGLvK
-EPDKjvbdrJAKFMoF
-DoCkKvbdNrsvHFVQ
-DncLKvbdSKyGUfjs
-DoCkKvbdVvhxWEFH
-DncLKvbdFejRnIsq
-EObjjvbdVYhUZkOn
-DoCjjvbdxUmEpxkn
-DoDLKvbdBiLCKhej
-DoDKjvbdIjEAJofd
-EOcKjvbdwzHfFwdr
-DncKjvbdFjeTDHlu
-DnbjjvbdbiMjKewY
-DnbjjvbdaNLCTUlg
-EObjjvbdDwxMUUTl
-DoCkKvbdmttykKSG
-EPDKjvbdiUyeXSVC
-EPDLKvbdWIYVwfxz
-EPDLKvbdemFvgMik
-DoCkKvbdUyHszKoO
-EObkKvbdTXkMNzjx
-DoDKjvbdSQTgKFdX
-DnbjjvbdLiBkpxAS
-EPCkKvbdRosgKGEX
-DoCkKvbdmfdwmNgZ
-DncLKvbdiHJbyViu
-DncLKvbdxrnJMqbH
-EOcKjvbdhlFENtcZ
-DoCjjvbdbKkennDA
-DnbkKvbdGckWKBjK
-DnbjjvbdUyIUZkOn
-EPDKjvbdeEnrCXDK
-EOcKjvbdsBfMkgKy
-DncKjvbdxsNiNSBg
-EPDKjvbdkNCLzEgP
-EPDKjvbdSKyGVGjs
-DoDKjvbdrWolChyR
-DncLKvbdWSNwaeLc
-EOcKjvbdJYTbHkqQ
-DnbjjvbdZshiZDsO
-DoDKjvbdSKxfUfjs
-EPCkKvbdptTgRrKt
-EPCjjvbdREDApQdS
-DncLKvbdtvOXjRTA
-EPDKjvbdemGXGljL
-EObjjvbdBdQAvJmG
-EPDLKvbdhuZdwRuC
-DncLKvbdjvWnDaxX
-EPDLKvbdFVxopMie
-EPCkKvbdajkeoNcA
-EPCjjvbdSPsfifEX
-DnbkKvbdBsAcTfWr
-EPCjjvbdEOcLLWcE
-DoCjjvbdZLrDsmlN
-EPCkKvbdxnSgxTIc
-EObjjvbdGQATXGey
-EObkKvbdbsDLUEKB
-DoCjjvbdrSVKmjaN
-EPCkKvbddneTLUUS
-DoCkKvbdxmrgwsJD
-EPDKjvbdGYuVAdXb
-DncLKvbdauBfxLTh
-EPDLKvbdrMzKZLgi
-EObkKvbdUsltGLvK
-DnbjjvbdDxXlTstM
-EObkKvbdsBfNLgLZ
-DncKjvbdidjgUoAO
-EPDLKvbdJJdAKQHE
-EOcKjvbdbBWFFpQX
-EPCjjvbdSZihTDWA
-EPCkKvbdhgKCxuiu
-DncKjvbddneTLUTr
-DoDKjvbdczZPxZRC
-DnbjjvbdlYrrTYft
-DoDKjvbdWXJXvEEg
-EPDLKvbdbhmJkFvx
-EPCjjvbdDxYLtTsl
-EPDKjvbdqdFIonVa
-EObjjvbdCIjbLIej
-DnbjjvbdmbKXXnmu
-EPDKjvbdlZTSTYft
-EPDKjvbdwXMBVaWV
-DnbjjvbdSPtGjGEX
-DoDKjvbdrMzKYlHi
-EPCkKvbdiVZdwSVC
-DnbjjvbdptUHSSKt
-DncLKvbdcSbjscjB
-DoDKjvbdSPsfiecw
-EOcKjvbdegkVqnQg
-EObkKvbdjuvmcbXw
-DncKjvbdCJLCKhfK
-EObjjvbdVqnYBeMD
-DoCjjvbdKCjCqJcY
-DncLKvbdZRMdhmEq
-EOcKjvbdrRtkOKaN
-DoDLKvbdRpTfiedX
-DoCjjvbdRMwbZOUz
-DoCjjvbdrXQMDIxq
-EObjjvbdsrqsZZdc
-DnbjjvbdfjfzbfAE
-DoCkKvbdJSyBTMxM
-EPDKjvbdnCJvwoNu
-DoCjjvbdmbJvwoNu
-DnbkKvbdFWZQPljF
-DncLKvbdxnSgwriD
-DnbjjvbdVvhwucdg
-DoCjjvbdjgfkfFnL
-DncLKvbdzRPMiKXA
-EOcLKvbdqZPHgREY
-EPCkKvbdrylPsAgn
-EPCkKvbdVZITykPO
-DoCjjvbdhkeEOVDZ
-EOcKjvbdUVkpJtAq
-EOcKjvbddCTMrAUN
-EPDKjvbdZeXfzghb
-EPCjjvbdiMFDmuDZ
-EPCjjvbdJKEAJpHE
-EOcLKvbdajkeoODA
-DnbjjvbdZRNEhmFR
-EOcLKvbdNHCpNQVL
-EObjjvbdmRxtzSci
-DoCjjvbdzRPMhjXA
-DnbkKvbdnGdwmNfy
-EObkKvbdvAcxsOeI
-DoDLKvbdBsAcTevr
-DoCkKvbdozmdKxPA
-DnbkKvbdTlVoBVoJ
-EPCkKvbdqwQLcIxq
-DncLKvbdbiMjLGWx
-DoDLKvbdfHkWRnRH
-EOcKjvbdbVCGxKsh
-DoCjjvbdTqRPUthN
-DoCkKvbdbQGgELzd
-EOcLKvbdQZNAHSrK
-DoDLKvbdZyDjNbkr
-EPCjjvbdqiAJdmOe
-EObkKvbdKaLHNBxR
-DncKjvbdyXhjBozL
-EObjjvbdDjIKWYKA
-EOcKjvbdLFegaaQu
-EPDKjvbdZjTIPgCG
-EOcLKvbdfHjuqnQg
-DnbjjvbdlhcsqVRa
-DoCjjvbdMuSqkNAX
-DncLKvbdCIkBkIej
-DncKjvbdUaCQsQqy
-EObjjvbdRbDdkhyL
-EOcKjvbdpssfrRkU
-EOcKjvbdLGFhBaQu
-EPCkKvbdqqtjnLBN
-EOcLKvbdWRmwbEkc
-EObjjvbdpedFTuaI
-DoCkKvbdJJdAJofd
-DoDLKvbdwNWANEEm
-EPCkKvbdYgWdAOri
-DoDLKvbdvAcyTOeI
-DnbkKvbdbhmJjfWx
-EOcLKvbdypnliKXA
-EOcKjvbdZyEJnClS
-DoCjjvbdZoNhdeZj
-EPCkKvbdkDLkRGtg
-EObjjvbdNsUWGdtp
-DnbjjvbdZQldhmFR
-EOcKjvbdYpmEhldq
-EPCkKvbdZQmEiMeR
-DnbjjvbdhytfLpnG
-EObjjvbdmtuZkJrG
-EObjjvbdGLEsDINV
-EPCjjvbdVhXvYHYz
-DoDLKvbdKefICAqV
-DncKjvbdUtMsfLvK
-EOcLKvbduaEZTOeI
-EPDKjvbdddoSBwDK
-DoCkKvbdffLymgHA
-DnbkKvbdbAueGQQX
-DnbkKvbdbrcLTcia
-EPCjjvbdRbEElJYk
-DoCkKvbdGFirNiTq
-DoDKjvbdNdctIhkE
-EPDLKvbdQccAoqES
-DnbkKvbdFfKRnJUR
-DnbjjvbdFfJrNiUR
-EPDLKvbdCfkegAzc
-EPCjjvbdRXNccMHc
-DoCkKvbdZjShPgBf
-EOcKjvbdSLZGUfkT
-DoDLKvbdBcpAujMf
-EOcLKvbduWNwiqTA
-DoDLKvbdpyOgfqEY
-EOcKjvbdcScKtEJa
-EObjjvbdnCJwXoNu
-DnbkKvbdjFLGtoAO
-DoCjjvbdXrlBMsnx
-EPDKjvbdhgJcZWJu
-DoCjjvbdiBoDEvpq
-EPDKjvbdczYoxYqC
-DoDLKvbdjFLHVPAO
-DnbjjvbdbPgGdLzd
-DoDKjvbdWIYWYGxz
-DncKjvbdhytfLpnG
-EObjjvbdfHjuqnQg
-DnbjjvbdmgExMmgZ
-EOcLKvbdhgKDYuiu
-EPDKjvbdmJEURVRa
-DoDLKvbdJpyePGNe
-DoDLKvbdlhdUQuRa
-EObkKvbdmuUzLKSG
-DnbjjvbdxwhjBozL
-EPDLKvbdVZIUZjnn
-EPDLKvbdJpydnfOF
-EPCkKvbdqqtjmjaN
-EPCkKvbdZoOJFFZj
-DnbjjvbdmttzKjRf
-EPDLKvbduWOXjQsA
-EOcLKvbdwtleRYkn
-DoCjjvbdLYpjSzuG
-EObjjvbdIsYaSmYM
-DnbjjvbdyzeORhJI
-EOcLKvbdkWWnECXw
-EPDKjvbdVviYVcdg
-DoDKjvbdBcoaVjMf
-DoCkKvbdiMEcmuDZ
-EObjjvbdLKaHvAKZ
-DncLKvbdJTZArlwl
-EOcLKvbdhaoCeWpq
-DncLKvbdrWpLcJZR
-EObkKvbdHkaznWpk
-DnbjjvbdzjVPocrt
-EOcKjvbdyqPMhiwA
-DoCkKvbdpstHRqkU
-DnbkKvbdRkYfVHKs
-DoDLKvbdVgwvYGxz
-EOcKjvbdFfKSNiUR
-DnbkKvbdqquLOLBN
-DncKjvbdOAJTTjSA
-DoDKjvbddneSkUTr
-EObkKvbdlqyUysEJ
-DoDKjvbdbhmKKevx
-EOcLKvbdiCObdwQq
-EPCkKvbdFejSNiTq
-EObkKvbdwygfGYEr
-EPDLKvbdsQWPKDVf
-DncKjvbdjbkjpfuH
-EPDKjvbdRkZFuGjs
-EPDKjvbdwyhFfXdr
-DncKjvbdcIlikFvx
-DoCkKvbdiUydwSVC
-DncKjvbdiUzFXSVC
-EOcKjvbdjKFgimYS
-EPDKjvbdjvXODaww
-EPCkKvbdRbDdlJZL
-EObkKvbdrEEhpNvB
-EObjjvbdrpVoKDWG
-DoCjjvbdNxPVzcnU
-EPDKjvbdVgwvYHYz
-DnbjjvbdmuUyjirG
-EObjjvbdrSVLNkBN
-DncKjvbdUWLojUBR
-EOcLKvbdwygefXeS
-EObkKvbdhaoDEvqR
-EOcLKvbdGGKRmiUR
-EOcKjvbdeEnqawDK
-EPDLKvbdGGJqnItR
-DoDLKvbddeOrBvbj
-DnbkKvbdiVZeWquC
-DncLKvbdJcJcQjDY
-EPDLKvbdkDMLQgUg
-EObjjvbdemFvflik
-EObkKvbdwzHeewdr
-DoCjjvbdHDjuiajK
-DoCkKvbdrEEiPnVa
-EOcLKvbdypnmJKXA
-DoDLKvbdmgFXmOHZ
-EObkKvbdUsmUFkuj
-EPDLKvbdcScKtDjB
-EPCkKvbdUyITzLOn
-DncKjvbdZnnIddyj
-EPCkKvbdaaVeGPow
-DoCjjvbdSQTfifDw
-DoDKjvbdDoDKkXCd
-DncLKvbdhtzEwRuC
-EObkKvbdMpXqVnGs
-DoDKjvbdDncLLXCd
-DoCkKvbdtcDUwVoP
-DoDKjvbdtSqryZdc
-EPDKjvbdbBWFGPpX
-EPCjjvbdmRxtyrdJ
-DoDLKvbdGckVjCJj
-EObjjvbdzoPpeCkx
-DnbjjvbdKWVFceHJ
-EPCjjvbdSKyGVHLT
-DoDLKvbdelevgNKL
-DoCjjvbdTXjlNzkY
-DoDLKvbdpstHSSLU
-EPDKjvbdhgKCxuiu
-EObkKvbdZQleJMeR
-EPCjjvbdKVuGDdfi
-DncKjvbdUGzmkvvF
-DncKjvbdxrnJMqbH
-EPCjjvbdKVuGDdgJ
-EObjjvbdptTgRqjt
-EObjjvbdCDpAujMf
-EPDKjvbdczZQXyRC
-DncLKvbdqYngfpdY
-EOcLKvbdqBIeAXIE
-EPDLKvbdZLrETmlN
-EPDKjvbdNeEThhjd
-EOcLKvbdmbKWxOnV
-DoCkKvbdCDoaWKNG
-EOcLKvbdEOcKkWbd
-EPCkKvbdNQXpvOGs
-EPDLKvbdFyUtaDxC
-EPDKjvbdbLMGOnDA
-DoDLKvbdJcJcQjDY
-EPDLKvbdOTUWHFUp
-DoCjjvbdmgFXlnGy
-EOcLKvbdRDbaQRES
-DoDLKvbdcyxowxpb
-EPDLKvbdliEURVSB
-EOcKjvbdXnRAXuWU
-DoCkKvbdDnbjjwDE
-DoCkKvbdKVuGEEfi
-EObkKvbdyOTHxShc
-EPDKjvbdySnIlqbH
-DoDLKvbdHELWJbJj
-DnbjjvbdyOTHxShc
-DnbjjvbdczZQXxpb
-EPDLKvbdZLrDsmkm
-EPCjjvbdfNGWflik
-EPDKjvbdmbKWwnmu
-DncKjvbdrDdiPnWB
-EObjjvbdHDjvKCKK
-DnbkKvbdUVkojTaR
-EObjjvbdptTfrSKt
-EPDKjvbdFxttaEXb
-DoCkKvbdjvXNcbYX
-DoCkKvbdSLYfUgKs
-EOcKjvbdHakzEzAD
-DncLKvbdiCObdwQq
-EPDLKvbdZLqdUNlN
-DoDLKvbdhkeDnVCy
-EPCkKvbdemFvgNKL
-EObjjvbdliDtQuRa
-EObkKvbdwuMdpxkn
-EObkKvbdirzhrkJz
-EPCjjvbdJYTahLqQ
-DncLKvbdIHGyxwwg
-EPCjjvbdSQUHKGEX
-DoCjjvbdZshiYcsO
-EOcLKvbdPyNAHSrK
-EPCjjvbdbsCjscia
-EObjjvbdUWLojUBR
-DoDLKvbdKeehBaQu
-EObjjvbdjuwODaww
-DoDLKvbdtkxXAsaX
-DncLKvbddneSkTtS
-DnbjjvbdZtJIxcsO
-DnbjjvbdJTYaTNXl
-EPCjjvbdGKeTDHlu
-DoDLKvbdKQydoGNe
-DoDKjvbdVrOXaeLc
-EPCkKvbdzHYlAMeX
-DoDLKvbdBvzchdov
-EObkKvbdapGgELzd
-DoDKjvbdaMkBsUlg
-DnbjjvbdVUNTelWK
-EObjjvbdiHJcZWKV
-DncLKvbdZoNheEyj
-DncKjvbdDHMFgAzc
-DnbkKvbdFpATXGey
-EPDKjvbdMpXqWOHT
-EPCjjvbdmSZVZrdJ
-EPDKjvbdcIljKfXY
-DoCkKvbdjcLkRGuH
-DoDLKvbdGYuVBEXb
-EObkKvbdWXIxWDeH
-DncKjvbdQlxCZOUz
-DnbjjvbdYNqAXtut
-EPDLKvbdGdKvJbJj
-DoDLKvbdGLFSbglu
-EPCkKvbdRjxfVGkT
-DoCkKvbduCbuXWOo
-DoCjjvbduCbtvuno
-EObkKvbdjAQGaQGj
-DoDLKvbdqBJFAXHd
-EOcKjvbdkClKpgVH
-EOcLKvbdiMFDmtby
-EPDLKvbdjvXNcbXw
-EPCkKvbdxUmFRYkn
-DoDKjvbdHgGyyYXg
-DoCjjvbdRzJhScWA
-DnbkKvbdlZTRsYgU
-DnbkKvbdFVxpQNJe
-EPCkKvbdZyEJmcMS
-EObjjvbdZQldhmFR
-EObjjvbdYSlBMtPY
-DncLKvbdvBDxsOdh
-DoDLKvbdvAdYrndh
-DoCjjvbdZyEJmcLr
-DnbkKvbdKaLGmCXq
-DnbkKvbdZQmFImEq
-EOcKjvbdqvolDIxq
-DnbkKvbdVqnYBdkc
-DoCkKvbdnPyxvLZC
-EOcLKvbdmJEURUqa
-DoDLKvbdfHkVrNpg
-DoCjjvbdznopdblY
-DoCkKvbdjvWmdCXw
-EOcKjvbdunszpjnt
-EObkKvbdzoPqFDMY
-EObjjvbdDxXktTtM
-EObjjvbdBcoaVjMf
-DncKjvbdtcDVWuno
-EObjjvbdpyOggQdY
-DnbkKvbdwWkaWAuu
-EPCjjvbdajkeoODA
-EOcKjvbdKNAEZfta
-EOcKjvbdZisIQHCG
-DncLKvbdEXwksstM
-DoDKjvbdtbbuXVoP
-DncLKvbdDxYMTstM
-DoCkKvbdcyyPwxpb
-EPCkKvbdxmrgwsJD
-DoDKjvbdYSkaNUOx
-EOcLKvbdxwhjCPyk
-DncKjvbdUsmTekuj
-DnbkKvbdkVwOECXw
-EObkKvbdnBjXYOnV
-DncKjvbdcasNSATm
-EPDKjvbdTAFIhCOd
-DnbkKvbdkWWnECYX
-DnbkKvbdFjeSbgmV
-DoCjjvbdJzoewdAN
-DnbkKvbdZeXfzhIb
-DncKjvbdMJCLqYAS
-DoCkKvbdGLFTCglu
-DoDLKvbdMuSrLNAX
-EOcKjvbdqceIomvB
-DoDLKvbdegkVqnRH
-DoDKjvbdKfGICBQu
-EOcKjvbdEvYopNKF
-DnbjjvbdlrZVZsEJ
-DoDLKvbdqqtjmjaN
-DncLKvbdQmXaxmtz
-EPDKjvbdCDoaVjNG
-EPCkKvbdqquLNjaN
-DnbjjvbdKRZdoFnF
-DoCkKvbdkVwOECYX
-DncKjvbdGQATXGfZ
-DncLKvbdCDpAujMf
-EOcKjvbdDxXlUUTl
-EPCjjvbdYkrEUNlN
-DnbjjvbdZtJIyETO
-DoCjjvbdXsMAltPY
-EOcLKvbdxxIjCPzL
-DoDLKvbdSLZFuHLT
-DncKjvbdFVyQQMjF
-DoCjjvbdFaOpyJzm
-EPCjjvbdrJAJdmPF
-EOcLKvbdMuSqjmAX
-DncLKvbdEJgiuxKA
-EPDKjvbdBdQAuimG
-DnbjjvbdWXIxVdFH
-DnbkKvbdHDkVjBjK
-EPDKjvbdnHEwlmgZ
-EPCkKvbdBiKbKhfK
-EPDKjvbdhyuGLpnG
-DoCkKvbdZsiJZDsO
-DnbjjvbddBrlrAUN
-DoCkKvbdYqMeIldq
-DncLKvbdZLqdUNkm
-EOcLKvbdMuSrKmAX
-DoCkKvbdDxXksstM
-EOcKjvbdqdEiPmua
-DoCjjvbdOEdUJIjd
-DoCkKvbdEObkLWbd
-EObkKvbdfekynHHA
-EPCkKvbdrEFIpNvB
-DnbkKvbdnBjXXoOV
-EPCjjvbdmgEwmOGy
-DncKjvbdKCjDQjCx
-EPDKjvbdJqZdoGOF
-DncKjvbdUsmTfLuj
-DoDLKvbdjcMKpgUg
-EPDLKvbdSQUGjGDw
-DnbjjvbdRacdlJYk
-DncKjvbdYgXEAOsJ
-EPCjjvbdhficZWKV
-DoDKjvbdGAnpxizm
-EPCkKvbdRbDeLhyL
-DoDKjvbdiBncEwQq
-DoCkKvbdxZgfFxFS
-DoCjjvbdqvpMChyR
-EObjjvbdbUbGxKtI
-DoCkKvbdEObkKvcE
-DnbjjvbdKQzEnfNe
-DoCjjvbdRWnDblID
-DnbkKvbdkxrqsYgU
-DncLKvbdqwPlCiYq
-EPDKjvbdSZjHsDWA
-DncLKvbdEPCjjvbd
-EOcLKvbdpyPIGpcx
-DncLKvbdbVCGwkTh
-DnbkKvbdnPzZWKxb
-EObkKvbdGKeTDIMu
-EOcKjvbdiifIKNYS
-DncLKvbdnQZxvKxb
-EPDLKvbdGFjSNiUR
-DnbjjvbdRNXaxnUz
-EPCjjvbdOTTvGduQ
-EObkKvbdUtMselVj
-DoCjjvbdnUuZkKSG
-EPDKjvbdQmXaxnUz
-EPCkKvbdNeDtIhjd
-DncLKvbdNxOuzdOU
-DncKjvbdJJdAJpGd
-DoDKjvbdwuNEqYkn
-DncKjvbdZMSDtOLm
-DnbjjvbdNeDsiJLE
-EPCjjvbdJpzEoGOF
-EPCjjvbdkDLkRGtg
-DoCjjvbdUWLpJtAq
-EPDKjvbdfMfWfljL
-EPCkKvbdrMzJyMIJ
-DoCjjvbdJKEAJofd
-DnbjjvbdnBiwXoNu
-DoCjjvbdDihJvYKA
-DnbkKvbdSZigsDWA
-DoCjjvbdFejRmhsq
-DnbkKvbdaMkCTVNH
-EObkKvbdczZPxZRC
-EPDKjvbdVZIUZjnn
-DoDKjvbdkySrTZGt
-DoDLKvbdsPvPKDVf
-DoCkKvbdwWlBVaVu
-EPDKjvbdANIZSvyx
-EPCkKvbdnHFYNNgZ
-DnbkKvbdNdcsiIkE
-EPDLKvbdDoCkLWbd
-EPDKjvbdQccBPqDr
-EObkKvbdSPsfifEX
-EOcKjvbdelfXHNJk
-EObkKvbdFfKRmiUR
-EOcLKvbdKCibqKDY
-EPDLKvbdUWLpJsaR
-EPCkKvbdKfFhCBQu
-EOcKjvbdmuUzLJrG
-EOcLKvbdBdQBVjMf
-EOcKjvbdfpBzvcwh
-EOcKjvbdmRyUzSci
-EOcKjvbdFVxpPlie
-DnbjjvbdDwwlUUUM
-DncKjvbdUyHsyjoO
-DoCkKvbdUslselVj
-DncLKvbdmuUykJqf
-DncLKvbdLFfHbApu
-DncLKvbdhyuFlROG
-EPDKjvbdxnTIYTJD
-EPDKjvbdTulPjUAq
-DoCjjvbdCDoaWJlf
-DoCkKvbdbLMGOnDA
-EPDKjvbdOStVfdtp
-EPCkKvbdZRMeImFR
-DoDLKvbdiVZeXRuC
-EPDKjvbdRosfiedX
-DoCjjvbdnGeYMnGy
-DoCjjvbdiiehKNYS
-DncKjvbdbhmKKfXY
-EOcLKvbdnBjXXoNu
-EPDKjvbduLwwAtAw
-EOcLKvbdygYlAMeX
-DoCkKvbdNsTvHEtp
-EPCjjvbdsrrTYzFD
-EPCkKvbdBdQAuimG
-DncKjvbdmfeYMnHZ
-EOcKjvbdxZhFexEr
-DncLKvbdZshhyETO
-EObkKvbdOFEUJJLE
-DoDLKvbduDCtvuoP
-EOcKjvbdGZVVBEYC
-EObjjvbdZRMeJNEq
-DnbkKvbdkxsRsYft
-DnbkKvbdsBfNLfjy
-EOcLKvbdNPxQvOHT
-DnbjjvbdpstHRqkU
-EOcLKvbdZQleJNFR
-EPCjjvbdxVNEpxkn
-DoCkKvbdwtmEqZLn
-DoCkKvbdGAoQxizm
-DoDLKvbdVqmwaeLc
-DoDKjvbdKfGHaaQu
-DoCjjvbdcJNKLGWx
-EPDLKvbdrzMPsBHn
-DncKjvbdfoazwDxI
-EPDKjvbdZyEJnClS
-DnbjjvbdwMvANDeN
-EObjjvbdZshiZETO
-EPDKjvbdUslselVj
-DoDKjvbdwtmEpyLn
-DncLKvbdJTYaTMxM
-EPDKjvbdvBDxsOeI
-DoDKjvbdxrmhmSCH
-EPDLKvbdjJegjNYS
-EOcKjvbdJvUedEgJ
-DnbkKvbdVZITyjoO
-DoDKjvbddePSCWbj
-DncKjvbdWIXvXgYz
-EPDKjvbdZQmFJMeR
-DnbjjvbdqdEiPnWB
-DoDLKvbdUVkojTaR
-DoDLKvbdFVxpPmJe
-EPCjjvbdxmsHwsIc
-EPDLKvbdiiehJlxS
-EPDLKvbdCTAbsewS
-EPCjjvbdzoPpdbkx
-DnbkKvbdijGHilxS
-EPDLKvbdOYOuzdNt
-EOcLKvbdTppoUuIN
-DnbkKvbdcScLUDia
-EOcLKvbdePFTLUTr
-EOcLKvbdhgKCxvKV
-EPCkKvbdrJAKFNOe
-EOcKjvbdVwJXucdg
-EPCkKvbdNddUJJKd
-DncLKvbdJYUCHlQp
-EObjjvbdkVvnDaxX
-EPCjjvbdNeDsiJLE
-EPDKjvbdyzeNqhJI
-EPCjjvbdmIdTqUrB
-EPDKjvbdZoOJFEyj
-DoDKjvbduaDxsOeI
-EPCkKvbdKjaIWAKZ
-DncLKvbdKaLHMbYR
-EOcKjvbdrafMlHKy
-EPCjjvbdhtzEvqtb
-EPCkKvbdddoSCXDK
-EOcKjvbdzjUpPdTU
-EPCjjvbdLZRJrzuG
-EOcKjvbdaMjaruMg
-DoCkKvbdyOSgwsJD
-EPCjjvbdKDKCqJcY
-EObkKvbdvAcxrneI
-EObjjvbdwuMeQxkn
-DncLKvbdmSZUysDi
-DnbkKvbdcIlijfWx
-DoDKjvbddndrjtTr
-EOcKjvbdwtmEqYlO
-EOcKjvbdYzcFqivZ
-DnbkKvbdCDpBWJmG
-EOcKjvbdaSGCgsfL
-EObjjvbdIwtBhLqQ
-DnbkKvbdyzdmrIIh
-EPDLKvbdWexzUAOs
-DncLKvbdRXNdCkgc
-EOcKjvbdkVwNdBww
-DncLKvbdIGfzYxYH
-DoCkKvbdbAvFGPow
-DoCkKvbdQlxBxnUz
-DncKjvbdqrUkOKaN
-EPDLKvbdZisIQGaf
-DoDKjvbdsQWPJbvG
-DncLKvbdjhHMFfNk
-EObkKvbdwNWAMdFN
-DoCkKvbdeKKRutzn
-EObkKvbdJpyeOfNe
-EOcKjvbdQmXayNtz
-DncKjvbdnHExNNgZ
-EPCjjvbdULuoBVni
-DoCjjvbdqquLNjaN
-EPDKjvbdyzdnSIJI
-DnbkKvbdQvnDcLgc
-DoCkKvbdtcDUvvOo
-DnbjjvbdnGeXmNfy
-DoDKjvbdxsNhmRbH
-DoDKjvbdtTSSyZeD
-DoDKjvbdRadFMJZL
-EOcKjvbdUaCQrpqy
-DoDLKvbdEJgivXjA
-EOcLKvbdGFjSOItR
-EPDLKvbdaSGDIUGL
-DnbjjvbdJYTagkqQ
-EOcLKvbdZLrDsmlN
-EOcLKvbdEJgiuwjA
-DoDKjvbdxUleRYlO
-DnbjjvbdQwODcLhD
-EObkKvbdOTUVgEtp
-EObkKvbdRMwaxnUz
-EObjjvbdrEFJPmua
-EOcLKvbdiUzEvquC
-DoDKjvbdMpYQumfs
-EPCkKvbdhancEvqR
-DncKjvbdkNCMZdfo
-DncLKvbdZHWdAOri
-EObjjvbdlrYuZrci
-EObjjvbdgLGzbfAE
-EObjjvbdcTCkUEJa
-EPDLKvbdVAbRTRRy
-DoCjjvbdYqNEiMeR
-DncKjvbdBvzchdpW
-DnbkKvbdtSqryZdc
-EPCjjvbdwygeeweS
-DoCkKvbdqlzJyLhJ
-EOcLKvbdtbbtvvOo
-DoDKjvbdrSVKnLAm
-DnbkKvbdfMevgNKL
-EObjjvbdRacdkhyL
-EPCkKvbdFpASvgGZ
-EPDLKvbdZoOJFEyj
-EPCjjvbdzjUpPcrt
-EOcKjvbdcbSlrATm
-EOcKjvbdqwPkbhxq
-DnbjjvbdHELVibKK
-EPDKjvbdZQldiMeR
-DnbjjvbdpstGqrKt
-DoDKjvbdGFjRmiUR
-EPCkKvbdssRsZZdc
-DnbkKvbdlqxuZsDi
-DncKjvbdEXwlUTtM
-DnbjjvbdyzdnRhIh
-EPCjjvbdkCkkRGtg
-EOcLKvbdLrWlytpz
-EPCkKvbdCEQAvKNG
-DncLKvbdVwIxWDeH
-EObkKvbduMYXBTaX
-DoCkKvbdRyihTDWA
-DnbjjvbdkaMoNALA
-DnbjjvbdaMjartlg
-DoCkKvbdNVTSKmAX
-DoDLKvbddwystRez
-EPCjjvbdcImJjevx
-DoCkKvbdeAUQlwjG
-DoDKjvbdZxcjNblS
-DncLKvbdkIGlFenL
-DoCjjvbdfHjurNqH
-DoCkKvbdiBoDFXRR
-EPDLKvbdvBDyTPFI
-DnbkKvbdUxhUZkPO
-EObjjvbdqZOhHQdY
-EOcKjvbdSCDeLiZL
-DncKjvbdozmckYPA
-DncKjvbdgGLymgHA
-DncKjvbdILaznWpk
-EPCjjvbdqUTgSSKt
-DoCkKvbdrovOjCuf
-EOcLKvbdKfGIBaQu
-EPDKjvbdCIjajiFj
-EPCkKvbdmoyxujyC
-EObkKvbdySnJMrCH
-EOcLKvbdHDjujBij
-EObjjvbdrMyiyMHi
-DoCkKvbdiifHimXr
-DnbkKvbdbsCkTcia
-DnbkKvbdMfbpNPtk
-EOcLKvbddoErkUTr
-DncLKvbdqZOhGqDx
-DnbjjvbdDncKkXCd
-DoCjjvbdSCEElIxk
-EPCkKvbdbUbHXjsh
-DnbkKvbdCTAcUGWr
-EPDLKvbdZtIiZESn
-DnbjjvbdrDeJPnVa
-DoCkKvbdZisIQHCG
-DncLKvbdgFkzOHHA
-EPCkKvbdmfdxMmfy
-DncLKvbdMIbMRYAS
-EOcKjvbdaogGckzd
-EOcLKvbdLAkHMawq
-DncLKvbdxwiJbQZk
-DncLKvbdauBgYLUI
-DnbkKvbdnQZxvKyC
-EOcKjvbdFkEsChNV
-DoDLKvbdpstGrRjt
-EPDLKvbdlYrrSxgU
-DnbjjvbdZQmFIldq
-DoCjjvbdbhmKLFvx
-EObkKvbdsBellGjy
-DncLKvbduCcUwWOo
-EObkKvbdJuuGEEfi
-DoCkKvbdIwtCHkqQ
-EPCkKvbdaMkBruMg
-DncLKvbdEARiMyvw
-EObjjvbdmgExNOGy
-DoCjjvbdpfDdsuaI
-EPDLKvbdEzspdlCi
-EPDKjvbdqdFJQNua
-DnbkKvbdnBjWxOnV
-EPDLKvbdZisHogBf
-EPCkKvbdjcMKpftg
-DnbkKvbdauCGwjsh
-DoDKjvbdlYrrTZHU
-EOcLKvbdzjVPpDrt
-DoCkKvbdQdDApQdS
-DoDKjvbdehLWRmpg
-EPDLKvbduoTzpkPU
-DoCkKvbdliDspuRa
-DoDKjvbdEXxLsssl
-EObjjvbdZsiJYcrn
-DoCkKvbdaaWFGPpX
-DoCkKvbdrafNMHLZ
-DoCjjvbdmgEwlnHZ
-EPCkKvbdFkEsCgmV
-DncKjvbdqmZjYlHi
-DoCkKvbdfILWSORH
-DoDLKvbdnCKXYOnV
-DnbkKvbdHgGyyYYH
-DoDLKvbdEKHjVxKA
-EPDKjvbdbAueGPow
-DnbkKvbdFyUuBDwb
-EPDKjvbduCcUvvOo
-EObkKvbdauBfxKsh
-EObjjvbdZjTIPgBf
-EObkKvbdNGbolpVL
-EOcKjvbdeFOqbWbj
-DoCjjvbdvwMAvBVu
-DnbkKvbdzRPMhjXA
-DncKjvbdFkErcIMu
-EPCjjvbdhlFEOUcZ
-DoCkKvbdJbjCpicY
-EPCkKvbdZGwEAOri
-DnbkKvbdNQYQunHT
-DoCkKvbdkIHMFfOL
-EObkKvbdHELVjBij
-DoDLKvbdZQldhleR
-DoDLKvbdVTmTelVj
-DnbjjvbdJTZArlwl
-DnbkKvbdCDpAvKMf
-DoCjjvbdDxYLtUTl
-DoDLKvbdwkWcgzyf
-EPDLKvbdLBKgNCYR
-DoDLKvbdZMSEUNkm
-EOcLKvbdxUmEpxkn
-EOcKjvbdGLFTDHlu
-EOcLKvbdyYJKCPyk
-DoCjjvbdDnbjjvcE
-DoDLKvbdatbHXjtI
-EObjjvbdbiMjLGWx
-EPDKjvbdTYKlNzjx
-EOcKjvbduDDUvvPP
-EObkKvbdliETpuSB
-DnbjjvbdrWolDIxq
-EObjjvbdqZOggQcx
-EOcLKvbdyXiKBoyk
-DnbjjvbdqmZiyMIJ
-EPCjjvbdULuoAuoJ
-DoDLKvbdYzcGRivZ
-DnbjjvbdtkwwBTaX
-DnbjjvbdJbicQicY
-DoCkKvbdTukojTaR
-EPCkKvbdHbLydzAD
-EObjjvbdVTltGLvK
-EPCjjvbdUsmUFkuj
-EPDLKvbdTqROuVIN
-DncLKvbdYkrETnLm
-DoCkKvbdeFPSBwDK
-DnbjjvbdNGcPmPtk
-DnbjjvbdWHwuxHYz
-DoDLKvbdNUsRjmAX
-EOcKjvbdZjTHpHBf
-DncKjvbdWXIwvDeH
-EOcLKvbdrJAKEloF
-DoCjjvbdFeirOJUR
-EOcKjvbdWWhwvEEg
-DncKjvbdKeehBaQu
-DnbjjvbdZLrDsmlN
-EOcLKvbdZnnIeFZj
-DoCkKvbdjKGHjMwr
-EObkKvbdmIctQtqa
-DoCjjvbdkClKpfuH
-DnbjjvbdcTDKscia
-DnbjjvbdADSYKZiQ
-EObkKvbdygZMANFX
-EPCjjvbdaMkCTUlg
-DoDKjvbdzjVPodTU
-EPCkKvbdIxTagkpp
-EPCjjvbdZjSgpHBf
-EOcLKvbdiCOcEvpq
-EOcLKvbdsQWOibvG
-DoDKjvbdEuxoomJe
-DoDKjvbdmuVZkKSG
-DoCjjvbdSZjITDWA
-DoCkKvbdCJLBkJGK
-EPCkKvbdliDsqVSB
-DoCjjvbduaDxrneI
-EOcLKvbdtvNxJpsA
-EOcKjvbdEuyPoljF
-DnbjjvbdwWlAuaWV
-DncLKvbduMXvaTaX
-EObjjvbddxZstSFz
-EPDLKvbdmttykKSG
-EPCjjvbdfIKvRnRH
-DoDLKvbdjgfkeemk
-DoCkKvbdHELVjBjK
-EObjjvbdaRecIUGL
-DnbkKvbdmSYuZrci
-DoDLKvbdKfGHaaQu
-EOcLKvbdIwsahLpp
-EOcLKvbdEuyPomKF
-DoCkKvbdsQWPJcVf
-DnbjjvbdbPgHDkzd
-DoDKjvbdZMSETnMN
-DoDKjvbdJSyBTMwl
-EPCkKvbdSCDeMIxk
-DoDLKvbdtkwwBTaX
-DoCjjvbdtbcVWuoP
-EPCjjvbdozmdKxPA
-DoCjjvbdtkwwBUBX
-DoDLKvbdQdDBPpcr
-DoCjjvbdJbjCpjDY
-EPCjjvbdCTBDTfWr
-EPDKjvbdYNqAYUut
-DoDKjvbdURRPVUgm
-EOcLKvbdNPwqVmfs
-DoDKjvbdsCGMkgLZ
-DoDLKvbdZtIiYcsO
-EObjjvbdhficZWJu
-EPCjjvbdTqRPUuIN
-EPCjjvbdyOShXsIc
-EOcLKvbdliETqVRa
-DncKjvbdYqMdhmEq
-DoCkKvbdKfGHbBQu
-DnbkKvbdqBIeAXIE
-EPDLKvbdQZNAHTRj
-EObkKvbdRosgJecw
-EPCjjvbdKQzEnfOF
-DoDKjvbdzRPMiKXA
-DnbkKvbdGcjvJbJj
-DoCjjvbdbAvEeoow
-DncKjvbdFVyQPmKF
-EPDLKvbdRzKIScWA
-EPCkKvbdKkAhWAJy
-EPCkKvbdJqZdnenF
-DoCkKvbdVUMtGMWK
-DncKjvbdBiLBjiGK
-DnbkKvbdjvWnDbYX
-DnbkKvbdwuNEqYkn
-DoDKjvbdegjurORH
-EObjjvbdpeceTvAh
-DoCkKvbdAMgySwZx
-EPCkKvbdlZSqsZGt
-EPDLKvbdbrbkTdKB
-EPDKjvbdhzUekpnG
-DncLKvbddeOqbWbj
-EPCjjvbdsPunibvG
-EOcLKvbdVwIxVdEg
-DoCjjvbdkIHLefNk
-DnbkKvbdxmrhXrhc
-EPCkKvbdziuPocrt
-EOcLKvbdNUsSLNAX
-DncKjvbdhkddNtcZ
-DoCjjvbdMpYRWNgT
-EObjjvbddZxoxYqC
-EOcLKvbdNVTRjmAX
-EPDKjvbdZjTIQHCG
-DnbkKvbdHEKvJbKK
-EOcKjvbdiGibxvJu
-DnbjjvbdsCGNMGjy
-DoCjjvbdBhkBjhfK
-EPCkKvbdSCDdkhyL
-DnbjjvbdNPwpvNfs
-EOcLKvbdJTZBTNYM
-DncKjvbdqGEFTvBI
-EObkKvbddneSjtTr
-DncLKvbdqdFJPmua
-EPDKjvbdrbFmMGkZ
-DoCjjvbdhXZAzzAJ
-EOcKjvbdkxsSSxgU
-EPDKjvbdrEEhonVa
-DnbkKvbdYzcGSKVy
-DoCjjvbdzROmJJwA
-EPDLKvbdOEdUJJKd
-EPCjjvbdqquKmkAm
-EOcLKvbdZyEKODLr
-DnbkKvbdIsZAsMxM
-DnbjjvbdZjTHofaf
-DoCjjvbdrSUkOLAm
-EPCjjvbdBsAbsewS
-EObkKvbdUsltGLuj
-EPCkKvbdANHyTWyx
-EObkKvbdsBemMGjy
-EObjjvbdMoxRVmfs
-EPCkKvbdNGbolouL
-EPDLKvbdjKGHimXr
-DncKjvbdUMWPAuni
-EOcLKvbdOEdUIhkE
-EPCkKvbdjKGHimXr
-EPCkKvbdhuZdwSVC
-DoCjjvbdCIkBjiFj
-EPCkKvbdxZhGFxFS
-EObjjvbdOFDtJJKd
-DoCkKvbdfNGWgNKL
-EPDLKvbdcarmSATm
-DoDKjvbdkNCMZeHP
-DoDLKvbdkMakyeGo
-DnbjjvbdiHJcYvKV
-DnbjjvbdWWhxVcdg
-EPDKjvbdVUNTelVj
-DoDKjvbdZGvdAPTJ
-DoCjjvbdDncLLXCd
-EPDKjvbduDCuWuno
-DoCkKvbdPyNAHTSK
-DncKjvbdqwPlDIyR
-EOcKjvbdYzbfSJvZ
-DnbkKvbdRotGifDw
-DoDLKvbdRDcBQRDr
-DoDKjvbdEARiNZvw
-DncKjvbdJSxaTNYM
-EPDKjvbdVwJXvDeH
-EOcKjvbdQwOECkhD
-DoCjjvbdEPCkLWbd
-EPDKjvbdVBBpsRSZ
-EOcKjvbdddoSBwCj
-EOcKjvbdFkFScINV
-EObjjvbdpstGrSLU
-EPDLKvbdhaoDFXRR
-EPDKjvbdKfGICApu
-EObkKvbdBsAcTevr
-EObkKvbdhkeDmtby
-DoCkKvbdqYngfpdY
-EOcKjvbdsPvPKCvG
-DoDLKvbduVmwiqTA
-EOcKjvbdidkGtoAO
-EPCkKvbdyzeORgiI
-DoCkKvbdmJDsqUqa
-DncLKvbdiGibyVjV
-DncKjvbdhtzEwSVC
-EOcLKvbdZRMdiNFR
-EOcKjvbdrafMkgKy
-DoDKjvbdZGwEAOsJ
-EOcLKvbdjmCMZeHP
-DncLKvbdjKFgimYS
-EPCjjvbddZxpYZRC
-DncKjvbdjmBkzEgP
-EObkKvbdkIHLeemk
-EPDKjvbdjAQGaQGj
-DncLKvbdSPtHJfDw
-DoCkKvbdGKdsChNV
-EPCjjvbdrouoJbuf
-EPDKjvbdlhcsqUqa
-DoCjjvbdwXMBWAvV
-DnbkKvbdhkdcmtby
-EOcLKvbdFkEsDHmV
-EOcLKvbdCIkBjhej
-DoCkKvbdiLeDnVDZ
-DoDLKvbdDxXlTssl
-DnbjjvbdNrtVfduQ
-EPCkKvbdHDkWJajK
-EPCjjvbdTulQKUBR
-DoDKjvbdJYUBhLpp
-DncKjvbdiCOcFXRR
-DoCkKvbdxsNiMrBg
-EObkKvbdQlxByNtz
-EPCjjvbdBhkBjiFj
-EPCjjvbdNeDsiIjd
-DncLKvbdBsAcTfXS
-DncLKvbdDwwlUTsl
-EOcKjvbdUQqPVUgm
-DncKjvbdmttzKirG
-EPCjjvbdKWUfEFHJ
-EPCjjvbdGKdrcINV
-EPDLKvbdkxrrTYgU
-DoCkKvbdQdCaQQcr
-DnbkKvbdvAdYroFI
-EObkKvbdFxttaDwb
-DnbkKvbdQdDBPqES
-DncKjvbdkVwODbXw
-DoCkKvbdrounicVf
-EPCjjvbdBcoaVjMf
-DncKjvbdcImKKevx
-DoCjjvbdxLWdHzyf
-EOcLKvbdcbTNSATm
-EPDKjvbdRacdlJZL
-EPDLKvbdZQleIleR
-EPCkKvbdTfznLwWF
-EObkKvbdsCFmLgKy
-DoDKjvbdyqOlhiwA
-EOcKjvbdtcCtwVoP
-DnbjjvbdRWmdCkgc
-EOcKjvbdqUTfqrKt
-DnbkKvbdRyjHsDWA
-DoDLKvbdYqMdiNEq
-EOcKjvbdhbPCeXRR
-EOcKjvbdVrNwbFLc
-EObkKvbdZLqcsmkm
-DoDKjvbdRWmdDMID
-EPCjjvbdkWXNcbYX
-DncLKvbdZyDinClS
-EOcLKvbdqUTfqqjt
-DncLKvbdUtNTelWK
-EPDKjvbdkWWmdCXw
-DoDKjvbdezuxdhtX
-DoCkKvbdaSGCgtGL
-EPDKjvbdVwJYWDdg
-DoDLKvbdWSOYCFMD
-EObkKvbdxwiJaozL
-DoCjjvbdTpqOuVIN
-DoCkKvbdrzLpSaHn
-DnbkKvbdJutecdfi
-DnbkKvbdhgKDZVjV
-DncKjvbdCJKajiGK
-EPCkKvbdbrcLTcia
-DncKjvbdxxIibPzL
-DoDLKvbdNUsRkNAX
-DoCkKvbdZRMeJMdq
-DnbjjvbdxsOJMqbH
-DncKjvbdqAheAWhE
-DoCkKvbdZnnIddyj
-DoCjjvbdrpWOibuf
-DoCjjvbdDxXlUUTl
-EPDKjvbdZirgofbG
-DnbjjvbdDnbkKvbd
-EOcLKvbdoznDkXoA
-DnbjjvbdozmdKxPA
-DnbkKvbdfHkVqmqH
-DoDLKvbdkDMLRGtg
-EPDKjvbdDxXlUTtM
-DoDLKvbdZLrETmkm
-DoCjjvbdLAkGlbYR
-DncLKvbddndsLUUS
-DoCjjvbdaRfDIUFk
-DnbjjvbdjJfHjNXr
-DncLKvbdeFPRbXDK
-DoCkKvbdJYTbIMRQ
-DnbkKvbdptUGrRjt
-EOcKjvbdkMbLzEfo
-DoCjjvbdezuxeJUX
-DoCjjvbdZMRctOLm
-DoDLKvbdWWiXudEg
-DnbkKvbdiiehKNXr
-DoCkKvbdXrkaNUOx
-EPDLKvbdZjTIQGbG
-EObjjvbdeOeTLTtS
-EPDKjvbdBraCsewS
-EPDLKvbdLBKflaxR
-DncKjvbdRzJhScWA
-EPDLKvbdGKdrbhMu
-DoDKjvbdFeiqmiUR
-DnbjjvbdFWYooljF
-DnbkKvbdUWLoisaR
-EPDKjvbdfRaWzkbo
-EPDLKvbdKQzEnfNe
-DoDLKvbdnUtyjiqf
-DnbjjvbdyNrgxSiD
-EOcKjvbdjlakzFHP
-DoCkKvbdjvXODaxX
-DnbkKvbdLFfHaaRV
-EPCkKvbdwuMeRYlO
-EPDLKvbdtSqrxzEc
-DncKjvbddwytTqez
-EOcKjvbdZLqcsnMN
-DoCjjvbdkxsSTZHU
-EPDKjvbdiZtekqNf
-EObkKvbdnCKWwnmu
-EObjjvbdauBgYKsh
-EPDKjvbdrSVKmkBN
-EObkKvbdxrnImSBg
-DncKjvbdZnnJEeZj
-DoDKjvbdZjTIQHBf
-DncLKvbdmIctRVRa
-DoCjjvbdziuQQDsU
-EPDKjvbdZRNFJNEq
-EOcKjvbdTqRPUthN
-EPCkKvbdePFSjssr
-EPDLKvbdfIKuqmqH
-DoDKjvbddZyQYYpb
-DoDLKvbdWRmwaeMD
-DoDLKvbdOYOuzcmt
-DoDLKvbdxsNiNRbH
-EPCkKvbdNeEThiLE
-EPCkKvbdNPxQunHT
-EPCjjvbduCbtvuoP
-EOcLKvbdjgfkeemk
-EObjjvbdjlbLydfo
-DoDLKvbdxmsIXrhc
-DoCkKvbdlrZVZsDi
-DoDKjvbdEztRElCi
-EObjjvbdBsAbsfWr
-DoDLKvbdZHWdAOsJ
-DnbjjvbdSCDdkhxk
-EObjjvbdeFOqbWcK
-EPDLKvbdZtJJZESn
-EPCkKvbdKfFhBaQu
-DoCkKvbdMpYQvNfs
-EObjjvbdrpWOjCvG
-EPDLKvbdJSxaTMxM
-EPCjjvbdOSsvGduQ
-DoDLKvbdtumxKRTA
-EPDKjvbdBcpBWKMf
-DnbkKvbdtbbuWvPP
-DoDLKvbdKWUfDdfi
-EPDKjvbdOStVgFVQ
-EObkKvbdZnmheFZj
-DoDLKvbdQwODcMID
-DoDKjvbdVrNxBeMD
-DoCkKvbdaSFbgsek
-DoCjjvbdTvMQKTaR
-DoCkKvbdZsiIxdSn
-EObkKvbdakMFnnDA
-DoDLKvbdJutedFHJ
-EOcLKvbdhzVFlQnG
-EObjjvbdzjUpQDsU
-EPCkKvbdzoQQeCkx
-DncKjvbdZjShPgCG
-DnbjjvbdMgCpMpVL
-DnbkKvbdNGbpNPuL
-EObkKvbdKfFhBaRV
-DnbjjvbdKQzFPFnF
-EPDKjvbdCIkBkJGK
-EObkKvbdmajXXnnV
-DoCkKvbdNwnuzcnU
-EObjjvbdauCGwkTh
-DnbkKvbdbiNKKfXY
-DnbjjvbdQmYCYnUz
-DoDKjvbdiLddNtcZ
-EOcKjvbdeEoSBwDK
-DoDKjvbdcTCkUDia
-DnbkKvbdZRNEhmEq
-EPCkKvbdHfgZxxXg
-EObjjvbdbsDLUDjB
-EPDKjvbdhbPDFWqR
-DncLKvbdKNADyfuB
-EObkKvbdEztREkcJ
-DncLKvbdbLMFnnDA
-EObkKvbdZjShPgBf
-DncLKvbdbVCHXkTh
-DnbkKvbdqTtHSRkU
-EObkKvbdfSBWzlDP
-DnbkKvbdGKeTDIMu
-EOcLKvbdGcjvJbJj
-EPCkKvbdMowqWOHT
-DncKjvbdYpmFIleR
-EPDKjvbdZxcjNblS
-DncLKvbdNrtVgEuQ
-EOcKjvbdqrVKnLBN
-DnbkKvbdatbHXkUI
-DoCkKvbdEPDKkWbd
-EPDLKvbdmIdURVRa
-DoCkKvbdMoxRWNgT
-EObjjvbdLBKflbXq
-DoCkKvbdSwjkmzkY
-DoDKjvbdJbicQicY
-EObkKvbdNQYQumgT
-DoDKjvbdxxJKCPzL
-DncLKvbdnGdxNNgZ
-DoCkKvbddijSVtzn
-EPDKjvbdrJAJdmOe
-DnbjjvbdzoQQeDLx
-DoCjjvbdZRMeIldq
-DnbjjvbdkHgMGGOL
-DoCjjvbdaSGChTfL
-EOcLKvbdCJLCKiFj
-DoCkKvbdVhXvYHYz
-EPCjjvbdcSbjscia
-EOcKjvbdxZgeewdr
-EPDLKvbdYkqdUNlN
-DnbkKvbdREDApQdS
-DnbjjvbdmozZVkYb
-EPDKjvbdaRecITfL
-DncLKvbdZyEJmbkr
-EOcKjvbdZnnIdeZj
-DncLKvbdeXzTsrFz
-DoCjjvbdZRMdhmEq
-EOcLKvbdGGJqmhtR
-EPDKjvbdIidAJpHE
-DncKjvbdMRwNZtpz
-DncLKvbdnBiwXoOV
-DoDLKvbdqYnhGqEY
-EOcKjvbdWexytAOs
-EOcKjvbdiZuFlQnG
-EObkKvbdVAaqTRRy
-EPCkKvbdTAEhgaoE
-DoDKjvbdMoxQvNfs
-EPDKjvbddjJqvUzn
-EObkKvbdBiKajhfK
-EPDLKvbdZLqcsmlN
-DoCjjvbdgPazwDwh
-EPCkKvbdwkWcgzzG
-EPDKjvbdlYsSSyGt
-EObjjvbdZLrDsmkm
-DncLKvbdbsCkUDia
-EObkKvbdkxrrSyGt
-DnbkKvbdnBivxOnV
-DoDLKvbdZirhPgCG
-EObjjvbdfMevfmKL
-EPDKjvbdSQTgJecw
-DoDLKvbdUWMPitAq
-DoDKjvbdwtleRZMO
-EObjjvbdKRZdoGNe
-DoCjjvbdauBgYKsh
-DoDKjvbdXrlAlsnx
-DncKjvbdUMVnaVni
-DncKjvbdiHKDYvKV
-DnbkKvbdySnJNSCH
-EPCjjvbdfNGWgNKL
-EOcLKvbdnQZxujxb
-EObjjvbdVgwvXgYz
-EOcLKvbdjKGHimYS
-DnbkKvbdhanbeXQq
-DncLKvbdhzUfLpmf
-DoDLKvbdczZPxZRC
-EPDKjvbdRNYBxnUz
-EOcLKvbdlrZVZrdJ
-DncKjvbdtcDUwWOo
-EPCkKvbdQvmdDLhD
-EPCjjvbdfMfWfljL
-DoCjjvbdZyEKNbkr
-EOcKjvbdgPazvcxI
-DncKjvbdfNGXHMjL
-DncLKvbdEKHjWXjA
-EObkKvbdZjSgogCG
-EPCjjvbdxnSgxShc
-EPCjjvbdqrVKmkBN
-EPCjjvbdbBVdepQX
-DoCkKvbdrXQLbhxq
-DoCjjvbdbVBfxLTh
-EPCkKvbdHlBznWqL
-EPDKjvbdTAEhgaoE
-DnbjjvbdCfkfHAzc
-DnbkKvbdptTfqqjt
-EPDLKvbdWIXuwgYz
-EObjjvbdrJAJeNPF
-DncLKvbdKDKDRJcY
-DnbkKvbdrDeIpNvB
-DncLKvbdVwIwudFH
-DncKjvbdICMZdzAD
-EPCkKvbdsQVnjDVf
-EPDKjvbdiZuGMRNf
-DoDLKvbdIGfyyXwg
-EPDLKvbdYORAXtut
-DoCjjvbdhzVGMQnG
-EPDLKvbdQwNcbkgc
-EObjjvbdsBemLgLZ
-DoDLKvbdZtIiYdSn
-DoCjjvbdelevfljL
-DoCkKvbdcyxowxqC
-EPDLKvbdZMRdUNlN
-EOcLKvbddZyPwyRC
-EPCjjvbdZLrDsnLm
-EPCkKvbdgPazwEYI
-DoDKjvbdqFdEsvBI
-EOcKjvbdVviXvDdg
-EPCjjvbdCWzdIdov
-DncKjvbdrSVKnLBN
-EObkKvbdiLddNtcZ
-EPDLKvbdrDdiPmvB
-EPDKjvbdKDKDRKCx
-DoDKjvbdtSqsZZeD
-DoDLKvbdwuNFRYlO
-DoCjjvbduLwvaTaX
-EObjjvbdtkxXBUBX
-EOcLKvbdSQTgJfEX
-EObjjvbddneTKtUS
-DoDLKvbdAMhYsXZx
-EOcLKvbdczZPwxqC
-EPDLKvbdjbkjqGtg
-EOcLKvbdFkEsChMu
-EObjjvbdbsCkUDia
-EObkKvbdEzsqElDJ
-EPDLKvbdGZUuBEYC
-DoCkKvbdzROmJJwA
-EPDKjvbduMXwAsaX
-EPCjjvbdqwQMDJZR
-DoDKjvbdqUUHSRkU
-DoCkKvbdwtleQxkn
-DnbkKvbdQvnEClHc
-EPDKjvbdjvXNcaww
-DoCjjvbdjggMFenL
-EPDLKvbdJYUBhLpp
-DnbkKvbdkNCLyeGo
-DoCjjvbdDoCkLWcE
-EOcKjvbdYqMeJNFR
-EPCjjvbdRDcApQdS
-EObjjvbdjblKpgVH
-EPDKjvbdqqtjnKaN
-DoDLKvbdwtmFRYlO
-DoCjjvbdnHEwmNgZ
-DncLKvbdaMjasVNH
-DncKjvbdnUtzLKSG
-DoDLKvbdkySrSyGt
-EPCjjvbdyNsIXriD
-DoCkKvbdRadFMIyL
-EOcKjvbdqvokbhxq
-EPCjjvbdYkrEUOLm
-EPDKjvbdrpWPKCvG
-DncKjvbdxUldpyLn
-EObjjvbdrbFmMHKy
-DoCjjvbdZHWdAPTJ
-DncKjvbdEPDLKwDE
-DnbjjvbdZHWdAPTJ
-DoDLKvbdNrsvHFUp
-DncLKvbdCTBDUFvr
-EPDLKvbduDDUvuno
-DoDLKvbddwystSFz
-DnbkKvbdmbJvwoNu
-EPCjjvbdcbTNSAUN
-DnbjjvbdnVUzKjRf
-EOcLKvbdYlRdUOMN
-DoCjjvbdTAFIgand
-DnbkKvbdpeceUVaI
-DoDLKvbdlZSrTYft
-EPCjjvbddePRbXDK
-EOcLKvbdJqZdnfNe
-EPCkKvbdRaceLhyL
-EPDKjvbdLAkGlaxR
-EPCjjvbdqGDdsvAh
-DnbjjvbdxZgefYEr
-EObkKvbdKWVGEFGi
-EPCjjvbdSQUHKFdX
-EPDKjvbdDxYLsssl
-EPCjjvbdfHjvSNqH
-EPCkKvbdQwODbkhD
-EOcKjvbdZnmiFEyj
-EPCkKvbdqwQMChyR
-EOcLKvbdZyDimcLr
-EObjjvbdjAQGaQGj
-EPCkKvbdZtJJYdTO
-EObjjvbdjFKgUoAO
-DnbkKvbdcScLUEKB
-EPDKjvbdjcMLRGuH
-EObjjvbdqlzKZLgi
-EOcKjvbdFfJrNiUR
-EObkKvbdKaKgNBxR
-EOcKjvbdHDjujBij
-EObkKvbdFejSOJUR
-DncLKvbdMIalRYAS
-EOcKjvbdVTlsekvK
-DoCjjvbdUQqOtthN
-DnbjjvbdVYgtZkOn
-DnbkKvbdrovOicVf
-DncKjvbdKfGIBaQu
-DnbjjvbdjuvnDaxX
-EPDLKvbdHakzEzAD
-EPDLKvbdyzdnRhIh
-DoCjjvbdZGvdAPTJ
-DoDLKvbdqvolChyR
-DncLKvbdjlbLyeHP
-EPCkKvbdmIdTptrB
-EPCkKvbdQcbaPqES
-DoDLKvbdddoSBwCj
-DnbjjvbdjvWnECXw
-DnbjjvbdZisHofbG
-EOcKjvbdZQldhldq
-DnbkKvbdfekymfgA
-DnbjjvbdLBKgMbYR
-EPCjjvbdEARiMzWw
-EObjjvbdtSrTYzEc
-EPDKjvbdZoOIddyj
-DnbkKvbdcSbjtEKB
-EObjjvbddndsKssr
-DoCjjvbdxnSgxShc
-EPCjjvbdOTUVfdtp
-DoCkKvbdUtMselWK
-DnbjjvbdJpydoGNe
-DoCkKvbdGQASwGey
-DnbjjvbdnGdxMnGy
-EPDKjvbdHDkVibKK
-DoCjjvbdtbbuXWOo
-EPDKjvbdKWVGEEgJ
-EObkKvbdGLEsCgmV
-DoCkKvbdbrbjtEKB
-EPDLKvbdRzJgrcWA
-EPCkKvbdaRecITfL
-EObjjvbdrbGMlHKy
-DnbkKvbdZdwfzgiC
-EPDKjvbdVwJXudFH
-DoCjjvbdiZtekqOG
-EObkKvbdqrUkOKaN
-EObkKvbdySnImRbH
-EObjjvbddoFTKstS
-EOcKjvbdyOTHxTJD
-DncKjvbdFVxoolie
-DoCkKvbdFejRnIsq
-EPDLKvbdptUGrRkU
-EOcKjvbdajlGOnDA
-EPDKjvbdrRtkOKaN
-EOcKjvbdzoQQeDLx
-EPCjjvbdrafMlGkZ
-EPCjjvbdmpZyWKyC
-DoCkKvbddBrlrAUN
-DnbkKvbdMgDPlpVL
-DnbjjvbdUxhTzKoO
-DoCkKvbdSCDdlIyL
-EPDKjvbdmbJvxPOV
-EPCkKvbdNGcQMpUk
-EPCjjvbdVqmxCFLc
-DoDKjvbdrDdhonWB
-EOcLKvbdYTLaNToY
-DoCkKvbdkIGlFemk
-EPDKjvbdNrsvHFVQ
-EPDLKvbdrzLoraHn
-EObkKvbdraelkgLZ
-DoDLKvbdBdQAujMf
-DncKjvbdwzIGGYFS
-EOcKjvbdZeXfzhIb
-DoDKjvbdbAueGPpX
-DoCjjvbdZtJJYcrn
-DoDKjvbdyqPNJKXA
-DoCkKvbdTAFIhCPE
-DoDLKvbdjblLQgVH
-DoCjjvbdZtJJZDsO
-EOcLKvbdrNZixkhJ
-DoCjjvbdzoPpdblY
-DnbkKvbdqcdhpNvB
-DncKjvbdYpldhleR
-DoCjjvbdmRyUysEJ
-DoCjjvbdJXtBgkqQ
-EOcKjvbdVwJYWDeH
-DoDLKvbdZLqdUOLm
-EPDKjvbdEXwlUUTl
-EObkKvbdoznDkYPA
-EPCkKvbdEASJNZvw
-EPCjjvbdFjdsCglu
-DoCkKvbdTlWPBWOi
-DnbjjvbdcTCjsdKB
-EObkKvbdkySrTYft
-EPCkKvbdLrXMytpz
-DncKjvbdZQmEhleR
-EOcLKvbdHkaznWpk
-DnbkKvbdHfgZyXxH
-EObkKvbdpecdtWAh
-DnbkKvbdRadElJYk
-EPCjjvbdTXkMNzjx
-DoCjjvbdmSYtzTEJ
-EPCkKvbdZsiJZDsO
-DncKjvbddoErkTtS
-DoCkKvbdZRMdiMeR
-EObkKvbdTfzmkvvF
-DncKjvbdpxnhHQcx
-EPDLKvbdaMjbStlg
-DoCjjvbdkHfkefOL
-DoCjjvbdqqtkOLAm
-DnbjjvbdyzeNqgiI
-EOcKjvbdiLeDnUby
-DncKjvbdyYIjCPyk
-EOcKjvbdpfEFUVaI
-EPCjjvbdZirgpHBf
-DnbkKvbdKWUecdgJ
-EOcLKvbdiHKCxvJu
-EPDKjvbdcTCkUEKB
-EOcLKvbdaMkBsVNH
-EPDLKvbdJutfEFGi
-EPCkKvbdFaOqZJzm
-EObjjvbdhaoCdvqR
-EPCkKvbddZxpXxqC
-DnbjjvbdZxcinDLr
-DoDLKvbdpssfqrKt
-DoCjjvbdqTsgRrLU
-EPDLKvbdEYXlUTtM
-EObjjvbduVmwjQsA
-EOcLKvbdNPxQunHT
-DnbjjvbdBhjajiGK
-DoCkKvbdUGznMXVe
-EPDKjvbdVwIwvEFH
-EObkKvbdRMwayNtz
-DoDLKvbdQZNAGrrK
-EObjjvbdKWUedFGi
-DoDLKvbdaNKartlg
-DncKjvbduWOXipsA
-EObjjvbduVmxKRTA
-DoDKjvbdygZMAMdw
-DoDLKvbdqTsfrRkU
-DoCjjvbdEvYpQMjF
-EObkKvbdNPxQunGs
-EObkKvbdsZlPsAgn
-DnbkKvbdZnnIddzK
-EPCkKvbdNQXqWOHT
-DnbkKvbdGLFSbhMu
-DoDKjvbdrzMPraIO
-DnbkKvbdZirgofaf
-EPDKjvbdijFhJlxS
-DncKjvbdWRmxBeLc
-DnbkKvbduDDUvuoP
-DoDKjvbdiZuGMQmf
-EObkKvbdelfXGljL
-EPDLKvbdfNFvfljL
-DncKjvbdGKdrcINV
-EObjjvbdFfJqnIsq
-EOcLKvbdILaznWqL
-DncLKvbdJutedFHJ
-EOcLKvbdIwtBhLpp
-EPDLKvbdsrrSyZdc
-EPDKjvbdczZQXxpb
-DncLKvbdDoCjjvcE
-EPCjjvbdpxoIHREY
-DoCkKvbdxxJJbPzL
-EPCkKvbdVZIUZkPO
-EPDLKvbdULuoBWPJ
-EPCkKvbdfMfWfmJk
-DnbjjvbdZtIiZETO
-DoCjjvbdiMEcnUby
-DoCkKvbdcyyPxZQb
-DoCkKvbdZirgofaf
-EObkKvbdozmdLYPA
-DoDKjvbdYkrEUNkm
-DoCkKvbdLqwMzVQz
-EObjjvbdLFfICBRV
-EObjjvbdjJehKNYS
-DoCjjvbdEJgiuwjA
-EPCkKvbdyqPNIiwA
-EPDKjvbdNdcsiIjd
-EPCjjvbdauBgXjsh
-DnbkKvbdyzeORgiI
-EPCkKvbdsCGNLgLZ
-EObkKvbdtbbtwVno
-EObjjvbdwuMdqZLn
-EObjjvbdSQTfiedX
-EPCjjvbdmttyjjSG
-DncLKvbdnHFYMnGy
-DncKjvbdxmsIXrhc
-EPDKjvbdQYmAGsRj
-EObjjvbdfoazvdYI
-DoDLKvbdhaoDEvpq
-EObjjvbdDihKVwjA
-DoCjjvbdZMSDtNlN
-DnbjjvbdhlFDnVDZ
-EPCjjvbdiCPCdwRR
-DncLKvbdULuoBVoJ
-DoDLKvbdyYJKBpZk
-DoDLKvbdRbDdlIyL
-EOcKjvbdYSlAlsoY
-DoCkKvbdySmhlqbH
-EOcKjvbduWNxKRTA
-DnbkKvbdFjeTDIMu
-DoDLKvbdzaAPGgCM
-EPCkKvbdBhkCLJGK
-DnbkKvbdYpmFJNFR
-EPCjjvbdQccBQQdS
-EOcKjvbdqGDdtVaI
-EOcLKvbdILazmvqL
-EPDLKvbdajkennDA
-DoDKjvbdxVMdqZLn
-EPDKjvbdNPxQunGs
-EObjjvbdhytfMROG
-EPDKjvbdEXxLtTtM
-EPDKjvbdZnnIdeZj
-DoDKjvbdGKeTChNV
-DncLKvbdjmCMZeGo
-DnbkKvbdQwNdClHc
-DncKjvbdXrlBMtOx
-DoCkKvbdzaAOgHBl
-DncLKvbdcIlijewY
-EObjjvbdrbFllHKy
-EOcKjvbdmbJwXnmu
-EObkKvbdssSSxydc
-DoDKjvbdSQTgKGEX
-DnbjjvbdUyHtZkPO
-EPCjjvbdFyUuAdYC
-DoCkKvbdqFcdsvBI
-EOcLKvbdqwQLbhyR
-DoCkKvbdbsCkUEKB
-EPCjjvbdIjEAKQHE
-DnbkKvbdaNKbTUmH
-EObkKvbdnCKWxPOV
-EOcLKvbdZxcinClS
-EObjjvbdhlFDnVDZ
-DncLKvbdpyPHfpdY
-EOcKjvbdTlVoAuoJ
-EOcKjvbdmbKXXoOV
-DoCkKvbdxsOImSBg
-DncKjvbdZHXEAPTJ
-DoDLKvbdDjIKVwjA
-DoDLKvbdnCJvwoNu
-EPCjjvbdZeYGzghb
-EPDKjvbdHffzYxXg
-EObjjvbdirzhrkJz
-DoCjjvbdZnnJFFZj
-EPDKjvbdeATqMwif
-DoDKjvbdbVCHXjsh
-DoCjjvbdGckVjCKK
-EOcLKvbdyYJJbPzL
-DoCjjvbdiCPDFWpq
-EOcLKvbdIwtCILqQ
-DoDLKvbdKQzFOfOF
-EOcKjvbdNPwqWNgT
-EObjjvbdZLqcsmkm
-EPDLKvbdnPyxvKxb
-DoDLKvbdKjaHvAKZ
-EObjjvbdjKFgjNYS
-DnbkKvbdLAkGmCXq
-DoDLKvbdeEoSBwCj
-DnbjjvbdHlBznXRL
-DnbjjvbdKfGHbBRV
-DnbkKvbdZQldiMdq
-EOcLKvbdnBivwnnV
-DncKjvbdsQVoKDWG
-EObkKvbdypnlhiwA
-EObkKvbdrykpTAgn
-DoCjjvbdaMkBsUmH
-EPDLKvbdRDcBPqES
-DoCjjvbdpxngfpdY
-EOcKjvbdEztRFLbi
-EOcLKvbdcbTNSAUN
-DoCkKvbdjcLjpfuH
-EPCkKvbdjSzhsKiz
-EPCkKvbdoAKztIDn
-EPCjjvbdMgDQNPuL
-DoDLKvbdKNAEZgVB
-EPCjjvbdZsiJZDsO
-EOcLKvbdkCkkQfuH
-DoCjjvbdnGeXmNfy
-DnbjjvbdrpVoJbuf
-DoCkKvbduCbuWuoP
-EObjjvbdSwkMNzkY
-DoCkKvbdrNZiyMHi
-DnbjjvbduDCtvuoP
-DoDLKvbdMuSqjmAX
-EObkKvbdsQVnicVf
-EPCjjvbdmfeYNNgZ
-DncLKvbdmIdURUqa
-EPCkKvbdGBPQyJzm
-EPCjjvbdZRNFImEq
-DncKjvbdNddUJJLE
-EObkKvbdaSFbgsek
-DncKjvbdDoCkKwDE
-DoCjjvbdtkxWaUBX
-DncLKvbdfNGXHMjL
-EPCkKvbdqTtHSSKt
-DnbkKvbdxmrhXsJD
-DnbjjvbdmttykKSG
-EObjjvbdqcdhomua
-DoCkKvbdVTlsfMVj
-DnbkKvbdRECaPpcr
-DnbkKvbdijFhKNYS
-EObkKvbdIwsbIMRQ
-EPDLKvbdJbibqJbx
-EPDKjvbdxxJKCPyk
-EOcKjvbdjuvnECYX
-DnbkKvbdKRZePFme
-DnbkKvbdMpYRVnGs
-EOcKjvbdfMevgNKL
-DoCkKvbdmfeXmOHZ
-DncLKvbdFpATXGey
-DoDKjvbdJXtCIMQp
-EObjjvbdZshiZDsO
-EPDLKvbdaRfDHsfL
-DncKjvbdMIakqYAS
-EObjjvbdSLZGUfjs
-DoDKjvbdBcoaWJmG
-DoDKjvbdEuxpPlie
-EObjjvbdJcJbqKCx
-DoCjjvbdxwhiapZk
-DnbkKvbdsBemLfkZ
-DoDLKvbdHgGyxwxH
-EOcKjvbdQdDApRDr
-EPDLKvbdKWUfDeHJ
-DnbjjvbdjvXODbYX
-DoDLKvbdHELWJbKK
-DncLKvbdgFkynHHA
-EPCkKvbdPxmAHSqj
-DoDLKvbdYkqdTnLm
-EPCkKvbdJYUCILpp
-EOcKjvbdxwhjBpZk
-DoCjjvbdiMFENtcZ
-DoCjjvbdnCJvwoOV
-DoDKjvbdSKxetgKs
-EOcKjvbdWRmxCFMD
-EOcLKvbdpedFTvBI
-EObkKvbdbAvEfPow
-EObkKvbdZnmiEeZj
-DnbkKvbdtTSSyZeD
-EPCkKvbdPxmAGsRj
-EPCkKvbdVTmUGLvK
-EObkKvbdJmADyfta
-EOcKjvbdwWlBVaWV
-DoDLKvbdjcMKqGtg
-EOcLKvbdGGJrNiTq
-DnbkKvbdgPazvdYI
-EPCkKvbdGLEsDHmV
-DnbjjvbdqceIomua
-DncLKvbdjbkjpgUg
-DoCjjvbdSxLLmzkY
-EPDLKvbdjKGHilxS
-EPDKjvbdmbJvwoNu
-EPDKjvbdjmBkyeHP
-EPDLKvbdzROliJwA
-DnbjjvbdUaBprprZ
-DoDKjvbdtbbtwWPP
-DnbjjvbdURQoVVHm
-DoCjjvbdjbkjqGuH
-DoCjjvbdRbEFLhyL
-DncKjvbdBcpAujMf
-DoCkKvbdPxmAGrqj
-EPDLKvbdZRMeImFR
-EOcLKvbdcScKscia
-EObjjvbdeXytTrFz
-EPCjjvbdKfGICBQu
-DncKjvbdijGIKMwr
-EObjjvbdZLqctOLm
-EObkKvbdSLZFuGjs
-DnbjjvbdZMRcsnMN
-EPCkKvbdWSOYBeMD
-EObjjvbdRacdlJYk
-DnbjjvbdFyVUaEXb
-EObjjvbdRbEFLiYk
-EObjjvbdZjTIQGaf
-EPCkKvbdNsTugEtp
-DoCkKvbdEASIlyvw
-DoCjjvbdsrrSxzFD
-DoDLKvbdQwOEDMID
-EPDKjvbdaaVeGQPw
-DoCjjvbdFejRnItR
-EObkKvbdRacdlIyL
-DnbjjvbdGGJqnIsq
-DoDLKvbdGYtuBDxC
-DncKjvbdbLMGPODA
-EObjjvbdqYoIGpcx
-DncKjvbdrykosAgn
-EPCjjvbdJbjDQjCx
-EObjjvbdkySqsYft
-EPDKjvbdxwhjBpZk
-DncKjvbdauBfwkTh
-EPCkKvbdtSrSxydc
-DoDKjvbdMRvmZuQz
-DncLKvbdnUtyjiqf
-DoDKjvbdSLYetgKs
-DoDLKvbdJbjCqJcY
-EPDLKvbdShyiqAAl
-EPDLKvbdSQUHJfDw
-EOcLKvbdijFhJmYS
-EPDLKvbdvwMBWAvV
-EObjjvbdeXytUSFz
-EObjjvbdWXJXuceH
-EPCkKvbdrDeIomvB
-DncKjvbdczZQXyRC
-DnbjjvbdQlxCZOUz
-EPCjjvbdQccApRDr
-DoCkKvbdqiAJdloF
-DoCjjvbdDwwktTtM
-EPCjjvbdRpUGjGEX
-DnbkKvbdWfYytAPT
-EPCjjvbdUMVoBVni
-EObkKvbdxnShYTIc
-EObjjvbdVAaqSprZ
-DncLKvbdKVtfDdgJ
-DoCjjvbdliEUQtqa
-DnbjjvbdiGjCyWKV
-DnbjjvbdqrVLOLBN
-EObkKvbdUaCRSqSZ
-EObkKvbdTkvPAuni
-DoCjjvbdIGgZyXwg
-DoDLKvbdssRsYzEc
-DnbjjvbdZLqdTmkm
-EPCjjvbdUtNTfLvK
-DncKjvbdfMewGmJk
-EOcLKvbdCTBDTfWr
-EPDKjvbdFpASwGey
-EPCjjvbdZLrETmkm
-EPDLKvbdyXhjCQZk
-DnbkKvbdeATqMxJf
-DoCjjvbdjJfHilwr
-EPDKjvbdzitopESt
-EPDKjvbdEuxopMjF
-DoCkKvbdvBEYroFI
-DnbkKvbdrNZiyMIJ
-EPCjjvbdxVMdpyMO
-DnbkKvbdQlxCZOUz
-DnbkKvbdqmZiyLhJ
-DncLKvbdXnRAXuWU
-EObkKvbdRadElJYk
-DncKjvbdLiBkqYAS
-DnbjjvbdmRyUysDi
-DoDKjvbdKCicQjDY
-EOcLKvbdRkZGVGjs
-DoDKjvbdtSrSyZdc
-EOcKjvbdRyjISbvA
-EPCjjvbdHffyyYYH
-EOcKjvbdaogHDkzd
-EPCjjvbdidkGuPAO
-EOcKjvbdCDpAujMf
-DoCkKvbduVnXjQsA
-DnbjjvbdTulQJtAq
-DncKjvbdqTsgRrLU
-DoCkKvbdzdynzdyp
-EObkKvbdemGXHNKL
-EOcKjvbdJXtCHlRQ
-EPDKjvbdegkWRnQg
-DoCjjvbdyXiKCPyk
-EPDLKvbdlZTRsZHU
-DoCjjvbdfNFvgNKL
-DnbjjvbdbVBgYLTh
-DncKjvbdcJMikFvx
-EPDLKvbdUMVnaVoJ
-DoCkKvbdgQBzvcxI
-DoCjjvbdZtIhxdSn
-EPCjjvbdRWnEDMID
-EObkKvbdjlakydfo
-DncLKvbdrpWOicVf
-EOcKjvbdhgKDYuiu
-DoDKjvbdmIdTqUqa
-EPCjjvbdwtleQxkn
-EObkKvbdcJNKKfWx
-DncLKvbdNsUWGdtp
-DoDKjvbdWSOXbEkc
-EPCkKvbdpyOhHREY
-DoDKjvbdkyTSTYft
-EPCjjvbdFjdrbgmV
-DncLKvbdrounjDWG
-DoDKjvbdVTmTfLvK
-EPDLKvbdSCDeLiYk
-DoCkKvbdrXPlDIxq
-DncLKvbdKVuGDeHJ
-DnbjjvbdrWokcIxq
-EObjjvbdKVuGEEfi
-EPDLKvbdrbGMlGjy
-EPDKjvbdlqxtzSci
-EOcLKvbdwygeeweS
-EObjjvbdjKGIKNYS
-EObkKvbdVrOXbElD
-DnbjjvbdrMzKZLgi
-EPCkKvbdMpXqWNfs
-EPDLKvbdrSUkOLAm
-EPDKjvbdZisIPfbG
-EPDLKvbdRDbaQRES
-DncKjvbdVTmUGLvK
-EOcKjvbdYzcGRjWZ
-EObjjvbdMuSrLNAX
-DncKjvbdjgflGFnL
-DncLKvbdWIXvXfxz
-DoDLKvbdNHComPtk
-EOcLKvbdSBceLhyL
-DoCkKvbdZRMeImFR
-EPDLKvbdiifIKMwr
-DoCkKvbdvBDxsOeI
-EPDLKvbdxmsHxShc
-EOcKjvbdcyyPxZRC
-DoCkKvbdsBfNMHKy
-DoDLKvbdaRebhTfL
-DncLKvbdypoNJKXA
-EObkKvbdzRPNJKXA
-DnbkKvbdTvLoitBR
-EOcKjvbdWHwuxGxz
-EObjjvbdZHWdAPTJ
-DnbjjvbdySnJMqag
-EPCkKvbdtTRsYzFD
-EPDLKvbdhytelQnG
-EPCkKvbdTppntuHm
-DnbjjvbdZeYGzhIb
-EPCjjvbdIwsaglQp
-DoCkKvbdpstGrRkU
-EObjjvbdCJLBjiFj
-EOcLKvbdePErjstS
-EPDKjvbdpxnhGqDx
-DnbjjvbdZyEKOClS
-DoCjjvbdpyOhHREY
-DncLKvbdNGcPmPuL
-DoDLKvbdQwNccLgc
-EPDKjvbdmbJvxPNu
-DnbkKvbdQwOEDMHc
-DoDKjvbdXrlAltOx
-EPCkKvbdGQASvgGZ
-EOcLKvbdmttykKSG
-EOcLKvbdGLFSbgmV
-DncLKvbduCbuWvOo
-EPDKjvbdSQTfiecw
-DoCkKvbdYkqctNkm
-DoDLKvbdlZSqsZHU
-DoDLKvbdqGEEtVaI
-EObjjvbdhytekpmf
-DoDKjvbdmuUzKiqf
-EObjjvbdrMyiyLhJ
-DoDLKvbdEARhlzWw
-EObjjvbdaRfCgsek
-EPDKjvbdaNKaruNH
-EOcLKvbdJqZeOenF
-DnbjjvbdTfzmlXVe
-DoCjjvbdzQoNIjXA
-EObkKvbdMpYQvNfs
-DncLKvbdVrOYCElD
-DoCjjvbdijGIJlwr
-DoDLKvbdrXQMDIyR
-EPDLKvbdEYYMUTtM
-DncKjvbdkHgMFenL
-DnbjjvbdqdFIpOWB
-EObkKvbdqFceTvAh
-EObjjvbdyOSgxSiD
-EOcKjvbdDnbkKvcE
-DoDLKvbdYqMeImFR
-EObkKvbdwtleRZMO
-EPCkKvbdrWolCiYq
-EObjjvbdrXPkcJYq
-DoCkKvbdtlXvaUBX
-EOcLKvbdeYZssrFz
-DoDLKvbdnGeYMnHZ
-EObkKvbdYTLaMtOx
-DoDLKvbdJcJcRKDY
-EPDKjvbdeKJrVtzn
-DoCkKvbdrSUkNjaN
-DncKjvbdeATqNXjG
-EObkKvbdqlzJyLhJ
-EObjjvbdDjIJvXjA
-EObjjvbdzGyMAMdw
-DoDLKvbdFfJrNiTq
-EOcLKvbdBhkCKiGK
-EObjjvbdpssgSRjt
-DncKjvbdKaLGlbXq
-EOcLKvbdlYrqrxgU
-EPCjjvbdVqmxBeLc
-EPDLKvbdZQmFJNFR
-DoCkKvbdkCkkQfuH
-DncKjvbdauCGwjsh
-DoCjjvbdEASIlywX
-DncKjvbdLAjgNBxR
-DncKjvbdCDpBVimG
-EOcLKvbdqlzJxkhJ
-EPDLKvbdtvNxKRTA
-DnbkKvbdGLFScINV
-DoCkKvbdQvmdCkhD
-EPDKjvbdFjdrbhNV
-EPCkKvbdZLrETnLm
-EPDLKvbdTvLoisaR
-EPDLKvbdsrrTZZdc
-EPCkKvbdZMRcsmlN
-DncLKvbdxnTHxTIc
-EOcKjvbdzROliJwA
-EOcKjvbdsQVnjDVf
-EObkKvbdqGDdsvBI
-DncKjvbdwtleQxkn
-EObjjvbdTqRPUuHm
-DnbjjvbdVwIwvEFH
-EPCjjvbdZshhxcsO
-DoCkKvbdKCibqJbx
-EOcKjvbdUVlQKTaR
-EObkKvbdVTmUFlWK
-EOcLKvbdmIctRVRa
-DoDKjvbdPIAYZAYa
-DoCkKvbdjvWnDbXw
-DnbjjvbdtvNwjRTA
-EObjjvbdNHComQUk
-EOcKjvbdySnImRbH
-DoCjjvbdDjIKVxKA
-DncLKvbdKefHbApu
-EObjjvbdehLWRmpg
-EOcLKvbdJTZAsMwl
-DoDKjvbdZirgpHCG
-EObkKvbdozmcjxPA
-EObkKvbdsZkosAgn
-EPCjjvbdSxKlNzjx
-DoCjjvbdfILVrNpg
-EPCjjvbdGGKRnJTq
-DnbjjvbdpssgSSLU
-DoDKjvbdrDdiPmvB
-EPCkKvbdZtJJYcsO
-DoDLKvbdNdctIhkE
-EPCjjvbdcImJkFvx
-EOcLKvbdGLErbhNV
-DoCkKvbdnQZxukYb
-EPCkKvbdWSNxBeLc
-EPCkKvbdsPvOjDWG
-EOcLKvbdeFOqavbj
-EPCjjvbdjAQHApHK
-EPDKjvbdwXMBVaVu
-DncLKvbdMowqWNfs
-DoCkKvbdRbEFMJYk
-DoCkKvbdrNZjZLhJ
-DoCjjvbduDCtwWPP
-EObjjvbdNeEUJIjd
-DnbkKvbdlYsRsYgU
-DoCjjvbdUxgsyjnn
-EObkKvbdbLMGPODA
-DoCkKvbddneTKtUS
-EOcKjvbdvvkaWAuu
-EPDKjvbdVUNUFkuj
-EObjjvbdKDKDQjCx
-EPDKjvbdnUuZjiqf
-DoCkKvbdsCFmMGkZ
-DncKjvbdrpVnjDWG
-DnbjjvbdiZtfMQmf
-DoCkKvbdwWkaVaVu
-DoCjjvbdSCDeLiZL
-DncKjvbdEYYLtTsl
-EPDLKvbdOSsufeVQ
-EOcLKvbdWSOXadlD
-EPDLKvbdpaJFAXHd
-DncKjvbdSCDdkhyL
-DoCjjvbdIMBzmvqL
-DnbkKvbdVUMsfLvK
-DoCkKvbdlhctQuSB
-DncKjvbdJuuGEFGi
-EPCjjvbdJSyAsMwl
-EOcKjvbdUtMtGMVj
-EPCkKvbdHDkWKCKK
-DncLKvbdySnImRag
-EPCjjvbdwMvAMcdm
-DnbkKvbdelevfmJk
-EPDKjvbdYORAYUvU
-EPCkKvbdVwIxWDeH
-EObjjvbdtvOXipsA
-DncLKvbdhlEdOUcZ
-EOcLKvbdTlVoAuoJ
-EPCkKvbdNQXpunHT
-EOcLKvbdWXJXvDdg
-DnbkKvbdZoOJFEzK
-EObkKvbdmbKWwoOV
-DnbjjvbdiHKDYvKV
-DncKjvbdfSBWzlDP
-DoCkKvbdLBKflawq
-EObkKvbdUsmUFkvK
-EObjjvbdLqwNZtpz
-DoCkKvbdsBfNLfjy
-DncLKvbdjvWmcbYX
-EObkKvbdaMkBruMg
-EPCkKvbdHkazmvqL
-DnbjjvbdRyjHrbvA
-EPCkKvbdNQXpvOHT
-EObjjvbdOYPVzcnU
-DoCjjvbdaSGCgtFk
-DoDKjvbdxmsHxSiD
-EObjjvbdZirgogCG
-EOcLKvbdmuVZkKSG
-DncLKvbdUyHszKnn
-DnbkKvbdxmsHxTJD
-EPCkKvbdVrOYBdkc
-EOcLKvbdhkdcmuDZ
-DncKjvbdwuMdpyLn
-EObkKvbdxVMdpxlO
-EPDKjvbdmbKWwoOV
-DoCjjvbdhkeDmtby
-DncLKvbdLFehCBQu
-DoCkKvbdYSkaNUOx
-DnbkKvbdmaivxPNu
-EPDKjvbdfNFvgNKL
-EPDKjvbdhlEdOUcZ
-EPDLKvbdTukpKUAq
-DncKjvbdUVlQKTaR
-DnbkKvbdYgWdAPSi
-DoDKjvbdIwsbHkpp
-EOcKjvbdlZTSTYgU
-DoCkKvbdNHColpVL
-EPCjjvbdxrmhmRag
-EObkKvbdUxgsyjnn
-DoCjjvbdsQVoJbvG
-DoCkKvbdBdQBVjMf
-EObkKvbdIHHZxxXg
-EOcKjvbdJuuFdEgJ
-DoDLKvbdwyhGGXeS
-DnbkKvbdSKyFuGkT
-DoDKjvbdiGibxvKV
-DncKjvbdnBjXXoNu
-DnbkKvbdFpATWffZ
-EPCjjvbduDCtvvOo
-EObjjvbdIsZArlxM
-DncKjvbdEvYopMjF
-EObjjvbdwuMdqYkn
-DoCjjvbdwyhFfYEr
-EPCjjvbdqUTfrSLU
-EOcLKvbdzGxlANEw
-EPCjjvbdEOcKjwCd
-EPCkKvbdOSsvGeUp
-DncKjvbdhlEcnUcZ
-EPCkKvbdUVkoitAq
-DnbjjvbdOAJTTjSA
-DncKjvbdqmZiyLhJ
-EObjjvbdpstGqrLU
-EPDLKvbdFxuVAcwb
-DoCkKvbdauBgYKsh
-DnbjjvbdZMRcsmkm
-EOcLKvbdqrVLNkBN
-DoDKjvbdNQYRWNgT
-DoCjjvbdCTBCtFvr
-DncKjvbdZyEKNcMS
-EPCkKvbdVviYVdFH
-DoDKjvbdePErjtUS
-EObkKvbdwtmFRZLn
-DncKjvbdpedEsvAh
-EPCkKvbdzoQRFClY
-DoDKjvbdIxTbIMQp
-DoDLKvbdxsOImSCH
-EPCjjvbdYfwEAOri
-EOcKjvbdnPyyWLZC
-EOcKjvbdhlFEOVCy
-DoCjjvbdwyhFfXdr
-DnbkKvbdZQmEhleR
-DnbjjvbdbAudepPw
-DnbjjvbdMpXqVmgT
-DncLKvbdNeEUIhjd
-EObkKvbdMfbomQUk
-DoCkKvbdqvpMDJYq
-DoDLKvbdfekzNfgA
-EOcLKvbderAvzlCo
-EOcLKvbdiZtelQnG
-EPDLKvbdRXNdClHc
-EPDKjvbdNrsufeUp
-DncKjvbdZQldiMeR
-EObkKvbdiLdcmtby
-DncLKvbdZQmEhleR
-DncLKvbdZRNEiMdq
-DncLKvbdWRmwadlD
-EPDLKvbdGLEsDHlu
-DncLKvbdZjTIPgCG
-EObjjvbdxnTIXsIc
-EPCjjvbdliETptqa
-EOcKjvbdlrZUyrci
-DoDKjvbdbKlFnnDA
-DnbjjvbdwXLaWBWV
-DoCkKvbduaEZSoFI
-EPCjjvbdRyjHrbvA
-EPCjjvbdLhakpxAS
-DoCkKvbdmaiwXoNu
-EOcKjvbdyNrhYShc
-EObjjvbdsCFllGjy
-DnbkKvbdZshhxdTO
-DoDKjvbdZjShPfaf
-EOcKjvbdmajWwnmu
-EObjjvbdJvUfEFHJ
-EPCkKvbdOEcsiIkE
-EPCkKvbdkNBlZeGo
-DoCjjvbdVviXudFH
-DnbkKvbdjJfHjMxS
-DoDLKvbdGBPRZJzm
-EOcKjvbdiCObdvqR
-DnbjjvbdVwJYWDeH
-DncKjvbdGAoQxizm
-EObjjvbdxmsIYSiD
-DncLKvbdqqtkOLAm
-EObjjvbdvvlAvBWV
-DncKjvbdvAdZTPFI
-EOcKjvbdjAQHAogK
-EObkKvbdpxoIHRDx
-EPCkKvbdffLynGgA
-EPDLKvbdTvLpKUAq
-EOcKjvbdmttzKjSG
-DoCkKvbdqwQMChyR
-DoDKjvbdrzMPsAgn
-DoDLKvbdyYJKCPyk
-DoCkKvbdRbEEkhxk
-EPCkKvbdBdQAuilf
-EPDLKvbdRaceMIyL
-EOcKjvbdraelkfjy
-EOcLKvbdEASIlzWw
-DnbkKvbdOSsvGeUp
-DnbjjvbdmuVZkJrG
-DnbkKvbdVwIwvDeH
-DoDKjvbdwWlAvBVu
-DncKjvbdSKyFuGjs
-DoCkKvbdOXnuzcmt
-DncKjvbdrXPlDJZR
-EPDLKvbdsBfNMGjy
-EPDLKvbdiifHilwr
-DnbkKvbdjvWmcbYX
-DoDLKvbdZnmhddyj
-EPCkKvbdemFvfmKL
-EPDLKvbdNxPVzcnU
-DnbjjvbdRkYfUgLT
-EPCkKvbdZRMdhldq
-EObjjvbdYqMdhmFR
-DncLKvbdJvVGDeGi
-EPDKjvbdUtMsfLuj
-DoDLKvbdZyEJnClS
-DnbkKvbdjcMKqGtg
-EPCjjvbdDnbjkXDE
-DnbjjvbdLGGICAqV
-EPDKjvbdWIXvYGxz
-EOcLKvbdBiLCKhfK
-DnbkKvbddwzUURez
-EOcLKvbdZQldiMdq
-DncLKvbdKVtfEFGi
-DoCkKvbdvAcxsPEh
-DncLKvbdjvWmcbXw
-EObkKvbdqiAJeNOe
-EOcLKvbdUMWPBWPJ
-EPCjjvbdOFDshhjd
-EOcLKvbdVrNxBeMD
-EPDKjvbdiGicZWKV
-EObkKvbdtTRrxzFD
-DoCjjvbdjJfHilxS
-DoCjjvbdelfXGmKL
-EPCjjvbdIrxaTMwl
-EOcLKvbdRECaPpcr
-DnbkKvbdiLeDmtby
-EPDLKvbdGcjvKCJj
-EOcKjvbdWWiXuceH
-DoCkKvbdpstHRrLU
-EPDLKvbdkHgLeemk
-EPCkKvbdzGxlANEw
-EObkKvbdjKGHjMwr
-EPCkKvbdiUzEvquC
-EOcLKvbdwXMBWBVu
-EObkKvbdeKKRvUzn
-DncLKvbdSBceLhxk
-DoDLKvbdJbibqJbx
-DncKjvbdeAUQlxJf
-EPDKjvbdbUafwkUI
-DoCkKvbdxnTIXriD
-EPDLKvbdRacdlJYk
-EOcLKvbdmgFXlnGy
-EOcKjvbdHELWJaij
-EPDLKvbdLhbMQxAS
-DnbkKvbdhbPDFXRR
-EOcKjvbdqwQMDIxq
-DncKjvbdeOdrkTsr
-EObjjvbdyOSgwriD
-EPCkKvbdjmCLyeHP
-DnbjjvbdZisHpGbG
-EOcKjvbdIHGzZXwg
-DncLKvbdwWkaWAvV
-DoDKjvbdffLzOHHA
-EPCjjvbdqZPIHREY
-DoCkKvbdDjHivYKA
-DoDLKvbdYNqAYVWU
-EPCkKvbdzjUpPcrt
-DncLKvbdlqyVZrdJ
-DncLKvbdDoDLLXDE
-DoCjjvbdcSbjtDia
-DoDKjvbdDxXlUTsl
-DncLKvbdJYTahLpp
-EObkKvbdNQXqVnHT
-EObjjvbdijGIJlxS
-EObjjvbdOStVfdtp
-EPCkKvbderBWzlCo
-EObjjvbdKQzEnenF
-EPCjjvbdmtuZkKRf
-EPCkKvbdEJhJuxKA
-EPCjjvbdgGLymfgA
-EObjjvbdRbDeLhxk
-EOcKjvbdrSUkNkAm
-DoDLKvbdEOcLLXDE
-EObjjvbdBhjbKiFj
-DoDLKvbdBdQAuimG
-DnbjjvbdDwwkstTl
-DoDLKvbdVwJYVdEg
-EOcKjvbdACqwizJQ
-EObjjvbdZsiIyETO
-EObkKvbdGLFSbhMu
-EOcLKvbdFkFTChNV
-DnbjjvbdVBCRSprZ
-DoCjjvbdssRsYydc
-DoCkKvbdUMWOaWOi
-DoDKjvbdYSlBMsnx
-EObkKvbdNsTvHFVQ
-EPDKjvbdZisIPfaf
-EOcLKvbdpssfqqjt
-EPCkKvbdNHCpMpVL
-EPDKjvbdczZPwxpb
-EPCjjvbdnBivxPOV
-DoDKjvbdUtNTelVj
-EPDKjvbdjhHMFfNk
-EObjjvbdEuyPolie
-EPDLKvbdKQydneme
-EPCkKvbdQvnECkgc
-EPDLKvbdatbGxLTh
-DoDLKvbdNPxQvOGs
-DoDLKvbdySnImSCH
-EObkKvbdvBEZTOeI
-DoCjjvbdatagXkUI
-DnbjjvbdmbKXXnnV
-EOcLKvbdmbKXXoNu
-EPCkKvbdNsUWGduQ
-DncLKvbdpssgSRjt
-EPDLKvbdiUzFXSUb
-EObkKvbdyzeORgiI
-EOcLKvbdKDKDQibx
-DoCjjvbdmJDtQuSB
-DncLKvbdaNKaruMg
-DnbkKvbdOEctJJKd
-EObjjvbdkVvnECXw
-EObkKvbdKaLHMbXq
-DoCjjvbdYzcFqiuy
-DoCkKvbdvwLaWAvV
-EPDLKvbdnBiwXoNu
-EOcLKvbdLBKgNBwq
-EPCkKvbdCJLBjiFj
-EObjjvbdptUGqrLU
-DoCkKvbdWXJYWEFH
-EOcLKvbdNeEThiLE
-EPCjjvbdtAHQhAAr
-EOcKjvbdUGzmlXVe
-DnbkKvbdrylPsBIO
-EPCjjvbdICLzEzAD
-EPDKjvbdrpVoKCuf
-EPCjjvbdRkZFuGjs
-Dnbjjvbdznopdbkx
-DoDLKvbdmgFYNNfy
-EObjjvbdptUHRrKt
-DoCkKvbdhfjDZWJu
-DncLKvbdLGFgbBRV
-EPCjjvbdZnnIeEyj
-DoDKjvbdmtuZjirG
-EPCkKvbdmbJvwoOV
-DncLKvbdJpydoFme
-EPDKjvbdFyUtaEXb
-DnbkKvbdqFcdtWAh
-DnbjjvbdWRnXaeMD
-EOcKjvbdCIkBkJGK
-EOcKjvbdJTZBSlxM
-DnbjjvbdziuPocsU
-DnbjjvbdhzUelQmf
-EPCjjvbdUaBqSprZ
-DncLKvbdxZgefXdr
-EObjjvbdKVuFdEgJ
-EPCjjvbdAMgyTWzY
-DnbjjvbdiHJbxuiu
-DoDLKvbdUtNTekuj
-EPCjjvbdUQpnttgm
-DoDLKvbdVAbRTRSZ
-DncKjvbdkxsSTYgU
-DnbkKvbdMfbomQUk
-DoCjjvbdTAEiHbOd
-DoCjjvbdczZPxYpb
-DnbkKvbdUVkojUBR
-DncKjvbdddnqavbj
-DoDLKvbdxwhiapZk
-DoDKjvbdZirhPfaf
-DoDKjvbdTukoitAq
-DoCjjvbdrJAKFMne
-EObkKvbdZQmEhmFR
-DoCjjvbdHgHZyXxH
-DncLKvbdNHCpNPuL
-DoCkKvbdfIKvRmpg
-DoCjjvbdNsUWHEtp
-DoCjjvbdpfDdtWAh
-DoDLKvbdBhkCKiGK
-EObjjvbdtSqsYydc
-EPDLKvbdQccBPqES
-EOcLKvbduMXvaUAw
-EOcLKvbdZMRctNkm
-EObjjvbdRadFMIxk
-DncLKvbdjhGlFfOL
-DoCjjvbdhtzEvqtb
-DnbjjvbdUtNUGMWK
-EPCjjvbdaaWEfQQX
-DncKjvbdunszpkOt
-DoDKjvbdEJgjWYKA
-DoCkKvbdQYmAGsRj
-DoCjjvbdmozYujyC
-DnbkKvbduVnYKRTA
-DnbkKvbdZxcjNblS
-EPDKjvbdzRPNIiwA
-EObkKvbdzitopESt
-EObjjvbdfILVrNpg
-DoCjjvbdNGcPmPuL
-DnbjjvbdEYXlUUTl
-DnbjjvbdraellHKy
-DoDKjvbdZQmEhmFR
-DoCkKvbdZnnIdeZj
-DnbjjvbdjcMKpgVH
-EObkKvbdTfznLvue
-EOcKjvbdFkErcIMu
-DncKjvbdGdKvKBjK
-DoCjjvbdVvhwvEFH
-EPCkKvbdmJEUQuSB
-DncKjvbdIsZBSlxM
-DnbkKvbdmbJvxPNu
-DoDKjvbdTqRPVUhN
-DoDLKvbdwygefXdr
-DnbjjvbdLGGHbBRV
-DncLKvbddijSVtzn
-EObkKvbdZnnJFFZj
-EOcKjvbdCTBCsfXS
-DoDLKvbdmttzKjSG
-EOcKjvbdyNsIXsIc
-EOcKjvbdbVBgXjtI
-EOcLKvbdGFjRnJUR
-DnbkKvbdYTMBMtOx
-EPCkKvbdNGcQMouL
-DoDKjvbdJcKDQibx
-DoDLKvbdrpWOicWG
-EOcKjvbdRaceMIyL
-EPDLKvbdWWiYWDeH
-EPDLKvbdczZQXxqC
-DoDKjvbdLBKgMaxR
-DnbjjvbdZjShQHBf
-DoCkKvbdKaLGlbXq
-DnbkKvbdGdKujCJj
-EObkKvbdIBkydzAD
-DnbkKvbdqUTgSRkU
-EOcLKvbdBiKbKhfK
-DoDKjvbdVwIwvEEg
-EPDKjvbdIjEAKQHE
-DoCkKvbdEPCkLWcE
-DoDLKvbdrDeJQNua
-EOcLKvbdNddUIhjd
-EPCkKvbdYNqAXtvU
-EObkKvbdUaCRSqRy
-EPCjjvbdqqtjmjaN
-EPDLKvbdhbOcFWpq
-DoDKjvbdULvPBVni
-DoDKjvbdGGJrOJTq
-DoCkKvbdqceIpNvB
-EOcKjvbddePSCXCj
-EPCjjvbdVUNTekuj
-DnbjjvbdLGGHbApu
-DoCkKvbdcTDLTcia
-DnbkKvbdNsUWGeVQ
-EObjjvbdZLqcsmlN
-EObkKvbdxrnJMrCH
-DnbjjvbdqvolChxq
-EPCjjvbdaNKbSuNH
-DnbkKvbdlYrrTYft
-EPCjjvbdwtldpyMO
-DnbkKvbdNddThiKd
-EPCkKvbdjJfIJlwr
-EPCjjvbdJpzEoFme
-DnbkKvbdiMEcmuDZ
-EOcKjvbdkVvmdBww
-EOcLKvbdAMgxrwZx
-EObjjvbdatbGwjtI
-EOcKjvbdTAEhhCOd
-DnbjjvbdfNFwHNJk
-EObjjvbdVBBqSpqy
-EPCjjvbduaEZSndh
-EPDLKvbdpstGqqkU
-DnbkKvbdIwtCHlQp
-DncKjvbdrbGNMGkZ
-EOcKjvbdILaznWqL
-DoCjjvbdTXjkmzkY
-DoCjjvbdIGfyyXxH
-EOcKjvbdjKFhKNXr
-EPDKjvbdRDcApRES
-EObjjvbdmfdxNNfy
-EObjjvbdDihKWYKA
-DoCjjvbdzaAOffal
-EPDLKvbdQccBQQcr
-EPCjjvbdTlWPAvOi
-DnbjjvbdqUTfrSLU
-EObjjvbdVAbRTRRy
-DoCkKvbdnCKWxPOV
-EOcKjvbdFjdrbhNV
-DnbjjvbdrzLpTAhO
-DoCjjvbdDxYMUUUM
-DnbjjvbdmoyxujyC
-DnbjjvbdUVkoitAq
-EObjjvbdrEEhpOWB
-DncKjvbdRjyGVGjs
-DoCkKvbdJJdAKPgE
-DoDKjvbdKDJbqKCx
-EPDLKvbdcTDLUDia
-DoCkKvbdePEsKssr
-EPCjjvbdJbjCqJbx
-DoDLKvbddBrmSATm
-EOcLKvbdlhcsqVRa
-EOcLKvbdKfGICBRV
-EPDLKvbdrovPJbvG
-DoCjjvbdbAvFGQQX
-EPDLKvbdlZTSSxft
-DnbjjvbdLqvmZuQz
-DncLKvbdZshiYdSn
-EOcLKvbduMXvaTaX
-EObjjvbdZtJJYcrn
-EOcLKvbdczZPwxpb
-EPDKjvbdatafwjtI
-EObkKvbdsQVnicWG
-DnbjjvbdrWokcIyR
-DncLKvbdJuteceGi
-EOcLKvbdADRwiyiQ
-EPDKjvbdCIkBjiFj
-EPDKjvbdrNZjYkgi
-DnbkKvbdSLYeuHLT
-DoDKjvbdkNBkzEfo
-DnbkKvbdcyxowyQb
-EPDKjvbdYkrETnMN
-DoDKjvbdwWlAvAvV
-EPCkKvbdczZPxZQb
-EPCkKvbdKCibpjCx
-EOcKjvbdhytfLqOG
-DnbjjvbdxmsHwriD
-EPDKjvbdmfeYMmgZ
-DoCkKvbdNQXpvNfs
-DncLKvbdirziSkJz
-EOcKjvbdHffzYxYH
-EOcKjvbdWXIxWDdg
-DncLKvbdVvhwuceH
-DoDLKvbdFxtuBDxC
-DncLKvbdJcKCqJbx
-DoCkKvbdxLWcgzyf
-DnbjjvbdCJLBjiGK
-EPCjjvbdcasMrATm
-DoDLKvbdLFfICAqV
-EPDKjvbdqmZjZMHi
-DncKjvbdczZPwxqC
-EObkKvbdrWpMDJYq
-EPCjjvbdLFehCBQu
-EPCkKvbdRzJgsDWA
-DoDKjvbdIsZArlxM
-DncLKvbdqFcdsuaI
-DncLKvbdULvPBVni
-EOcLKvbdWXJXuceH
-EPDLKvbdaNLCTVMg
-EObkKvbdUxhUZjnn
-DncLKvbdeATplxKG
-DoCjjvbdmSYtzSci
-EOcLKvbdkMbLzEfo
-EPCjjvbdrpVoJcWG
-EPCjjvbdXrlAlsoY
-DoDLKvbdUxhTzKnn
-EPCjjvbdOEdUJJLE
-EObjjvbdKDJcRKCx
-EPDKjvbdcyxpXxqC
-DnbkKvbdZxdKODMS
-DncLKvbdcImJjfWx
-DnbjjvbdpfEFTuaI
-DnbkKvbdZoNheEyj
-EOcKjvbdjFKfuPAO
-DnbkKvbdFVyQQNKF
-DnbkKvbdDjHiuwjA
-EPCkKvbdMgDPlotk
-EPDKjvbdxnShXsIc
-DoDLKvbdOTUVfduQ
-DncKjvbdFejRnIsq
-DncKjvbdSQUHJfEX
-DncLKvbdRXOEDMHc
-DoCkKvbdsZkosAgn
-DoDKjvbdUsmUGLuj
-EPDKjvbdiifIJmYS
-DoDLKvbdZQmEhmFR
-EObjjvbdeUAUASlv
-DoDLKvbdUsltFlVj
-DoCjjvbdSiZjRABM
-EOcLKvbdegkVrORH
-DoDKjvbdYlRdTnLm
-DncKjvbdzitopESt
-DnbkKvbdhbPDEwQq
-DncKjvbdSKxetgLT
-DncKjvbdZQmEiNFR
-EPDLKvbdUyITzLPO
-DnbjjvbdznpQdblY
-EObkKvbdbLMFoODA
-EPDLKvbdBhjbLJFj
-DoDKjvbdNwoVzdOU
-DncKjvbdvBDxsPEh
-DnbkKvbdSBceLiZL
-EPCkKvbdOhAXyAZB
-EObjjvbdZisIQGbG
-EOcLKvbdAMgxrvyx
-EPDKjvbdCDpAvKMf
-DoDKjvbdxVMdpxlO
-EOcKjvbdJbicRJbx
-DoCkKvbdTppnuVIN
-EObjjvbdZjTIPfbG
-DoCkKvbdpyOhHQcx
-DoCjjvbdfHjvSOQg
-DoCjjvbdzoPpdcMY
-EPDKjvbdmfeYNNfy
-EPCjjvbdXGYzUAPT
-DoDLKvbdypnmJKXA
-DnbkKvbdBsAcUFwS
-DoDLKvbdQYmAGsRj
-EObjjvbdUxhTyjnn
-DoCkKvbdrouoKCvG
-DoDLKvbdhtydwSUb
-EPCkKvbddwytUSFz
-EOcKjvbdrbFmLgLZ
-EObkKvbdbPffckzd
-EObjjvbdDxXlTtUM
-DnbkKvbdqGEFTvAh
-EPCjjvbdDoCkKwDE
-EOcLKvbdVviYWDeH
-EPCjjvbdWSOYCFLc
-DncKjvbdmbKWxPNu
-DoCkKvbdZshhxdTO
-DoDKjvbdwtldqYkn
-DoDLKvbdYSlBMsoY
-EPDKjvbdRkZFuHKs
-DnbkKvbdeYZstRez
-DoCjjvbdrNZixlIJ
-DoCjjvbdmgFXlmgZ
-EPCkKvbdYlRcsmlN
-DoCjjvbdOFETiJKd
-EPDLKvbdBhkCLJFj
-EPCjjvbdmuVZkJrG
-DnbkKvbdFjeTChMu
-DoCjjvbdJTZBSlwl
-DnbkKvbdozmdLYPA
-EObjjvbdtbbtvuoP
-DncKjvbdqUTfrSKt
-DncKjvbdyTOImSBg
-DnbjjvbdcTCkTdKB
-EOcKjvbdKaKgNCXq
-EPDKjvbdZoOIeEyj
-DoDKjvbdYqMeIleR
-DncKjvbdnPzZWLZC
-EPDLKvbdZirhPfbG
-DnbkKvbdGQATXGey
-EOcKjvbdZsiJYcsO
-DnbkKvbdrWpMDJYq
-DoCkKvbdMuTSLNAX
-EObjjvbdpxnhHRDx
-EOcKjvbdzitpQESt
-EPCjjvbdhuZeXSUb
-DoCjjvbdNeDtJIkE
-DoCkKvbdCEQBWKMf
-EPCkKvbdHEKvKCJj
-EPCjjvbdatbHYLTh
-EObkKvbdLGGICBRV
-DncKjvbdRjxeuGjs
-DoDKjvbdnHFYNOHZ
-EObkKvbdIryAsNYM
-EObjjvbdmfdwlnGy
-EOcLKvbdNeDsiIkE
-DnbjjvbdJTYaSlxM
-DoCkKvbdRadEkiYk
-DncLKvbdjKFgjNYS
-EObkKvbdZjShQGaf
-EOcKjvbdKfFgaaQu
-DoDKjvbdhgJbyVjV
-DoCkKvbdwuNFRZMO
-DncLKvbdfekzNfgA
-DncKjvbduCcVWuno
-EPDLKvbdVrNxBdkc
-DnbkKvbdRkYeuHLT
-DoDLKvbdwuNEpxlO
-DoCjjvbdQccAoqDr
-EOcKjvbdUGzmkvvF
-DncKjvbdEJhKWYKA
-EOcLKvbdssSSxyeD
-DoCjjvbdVviXvEEg
-DnbjjvbdEuxopNKF
-EObkKvbdLAkGlbXq
-DoCkKvbdZsiJZESn
-DoCkKvbdhkeEOUby
-DnbkKvbdbhlikGXY
-EObkKvbdLBLGmCYR
-EPCjjvbdxUleQyLn
-DncLKvbdrbGNMGjy
-DoCkKvbdddoSBwDK
-EPDLKvbdkyTRsYgU
-EPDKjvbdehLVqmqH
-EPDLKvbdrbFmMHKy
-DncLKvbdmbJvwoOV
-EOcLKvbdVUNUFkvK
-EPDLKvbdrpWPJbvG
-DncKjvbdGAnpxizm
-EOcKjvbdyzeNqghh
-DoDLKvbdhbPDFWpq
-DoDLKvbdfVzxQJzs
-DoDLKvbdUMWPBVoJ
-EOcLKvbdRpTfjFdX
-EPCkKvbdpfDeUWBI
-EObjjvbdmuUyjirG
-EObjjvbdtbbtwWOo
-EObkKvbdrylPsAgn
-EOcLKvbdmSYtysEJ
-DncKjvbdSCDeMJYk
-DoCjjvbdTppoUthN
-EPDKjvbdVTmUFkuj
-EObjjvbdIsZAsNXl
-EOcKjvbdSBcdlJYk
-DnbkKvbdZQleIleR
-DnbjjvbdddoSBvcK
-EOcLKvbdNHComPuL
-DncKjvbdiCPCdvqR
-EOcKjvbdliDspuSB
-EObkKvbdzoPpeCkx
-DnbjjvbdcJMijevx
-DoDKjvbddZxpYZQb
-DoDKjvbdkySrSxft
-DoDKjvbdyXhiapZk
-EPCkKvbdOAIrsirA
-EObkKvbdUaBqSqSZ
-EPCkKvbdZtJIyESn
-DnbkKvbdTvLoitAq
-EPCjjvbdyzeNrIJI
-EOcKjvbdiCPDEwRR
-EPCkKvbdnCJvwoNu
-EPCkKvbdIGfzZYXg
-DoCkKvbdkySqrxft
-DoCjjvbdZdxGzgiC
-DncKjvbdzitpPcsU
-DncLKvbdbVCHXjsh
-EPCkKvbdlhcsqVSB
-EPCjjvbdGYtuAcxC
-EOcLKvbdjAQGaQHK
-EObjjvbdjlakzFGo
-EOcLKvbdvwMAvAuu
-EPCjjvbdTqQoVUhN
-EPCkKvbdeEnrBwCj
-DoCkKvbdsCGMkgKy
-DnbjjvbdhkeDnVDZ
-EPCjjvbdOFDshiLE
-DnbjjvbdDwwlUTsl
-EPCkKvbdKWUedEgJ
-EPDLKvbdsQVnicWG
-EPCkKvbdjgflFfOL
-EObkKvbdQYmAHTSK
-EObkKvbdSPsgJecw
-EObjjvbdjAQGaPgK
-DoDLKvbdDxXlUUUM
-DoCjjvbdegjuqnQg
-DnbkKvbddwzTsqez
-DncKjvbdxxJJbPyk
-EOcKjvbdGKeTChMu
-DoCkKvbdeFPSCWcK
-EObkKvbddeOrBwDK
-EPCkKvbdaNLBsUmH
-DoDLKvbdRpTgJedX
-EPCkKvbdkySrSxgU
-EPCkKvbdVYhTzKoO
-EPCjjvbdxxIjCPyk
-EPDLKvbdVrOXadkc
-EOcLKvbdEOcKjwDE
-DncLKvbdmfeYMnGy
-EPCkKvbdVAaprprZ
-EPCjjvbdFWYpQMjF
-DoCkKvbdqrUjmkAm
-DoCjjvbdQvmdDLhD
-EPDLKvbdeATqNYKG
-DnbkKvbdLGGHaaQu
-EObjjvbdezvZEhtX
-DnbkKvbdjuwNdBww
-DncKjvbdJTZAsMwl
-EPDKjvbdkxrrTYgU
-EPDKjvbdbAudfQQX
-DoCkKvbdVUNUGMVj
-EPDLKvbdaNLBsUlg
-EPDLKvbdDwxLtUUM
-EPCjjvbdMgColpUk
-EPDLKvbdaogGdLzd
-EPDKjvbdzGxlANFX
-EPCkKvbdUQqOuUgm
-DoDKjvbdEPDKkXCd
-EPDKjvbdbsCkTcia
-EObjjvbdTAEhhBnd
-EPCkKvbdhzVFkpmf
-DnbkKvbdaSFcHtGL
-DoCjjvbdGBOpxizm
-DncLKvbdGYttaEYC
-DoDKjvbdqYoHfpdY
-EOcKjvbdrouoKCuf
-EOcKjvbdiCPDFWqR
-DnbjjvbdVAaprqRy
-EPCjjvbdePFSjtUS
-DnbkKvbdLGGICBRV
-EPDLKvbdkMalZeHP
-DoDLKvbdJutfEFHJ
-DoDKjvbdVBCRSqSZ
-EObjjvbdvvlBWBWV
-EOcLKvbdFVxpPmJe
-DoDLKvbdKfGHaaRV
-DnbjjvbdBvzdIdpW
-DncKjvbdNsUWHFUp
-EPDLKvbdrSVLNjaN
-EPDKjvbdgGMZnGgA
-DnbkKvbdSBceMIyL
-EOcLKvbdSBdFLiYk
-EOcLKvbdRyigrcWA
-EPDKjvbdaMkBruNH
-DncKjvbdUaCRSpqy
-DnbjjvbdIMBzmvpk
-DnbkKvbdbVCGxKtI
-DncLKvbdliDtQuSB
-EObkKvbdHDkVjBjK
-DncKjvbdmSYtyrci
-DnbkKvbdxVMdpxlO
-EPCjjvbdRpTfjGDw
-EPCkKvbdhancEvpq
-EPDLKvbdNsTvHEuQ
-DoDKjvbdfekymfgA
-EObkKvbdUWLojUBR
-EPCjjvbdJXtBgkpp
-DoCjjvbdEPCkLXCd
-EPCjjvbdZxcjNcLr
-DoCjjvbdZsiJYcrn
-EPCkKvbdZtIiZDrn
-EObkKvbduLxWaUBX
-EObkKvbdZdxGzghb
-EOcKjvbdkClLRHVH
-EOcLKvbdFjdsDINV
-DncKjvbdNeEUIiKd
-EPCkKvbdYpmFJNFR
-EPDKjvbdlhcsptqa
-DoDLKvbdnCKWwoOV
-EObkKvbdDnbkLXCd
-EObkKvbdQwOECkhD
-EOcKjvbdUaCRSpqy
-EPCjjvbdBcoaVjNG
-DnbjjvbdxmrhXsJD
-EObjjvbdcImKKewY
-DnbkKvbdpyOgfpdY
-DnbjjvbdpyOggRDx
-EObjjvbdEOcKjwDE
-DnbkKvbduCcUwVoP
-EOcKjvbdhgKCxuiu
-DoDKjvbdiZtelQmf
-DoDKjvbdnBjXYOnV
-EPDLKvbdczZPwxpb
-EPCjjvbdADRwizJQ
-EObjjvbdfVzwpJzs
-DnbjjvbdxxIiapZk
-EPCjjvbdjcLkQfuH
-EPCjjvbdcyyQYYqC
-DoCkKvbdEuyPpNJe
-DncLKvbdcJNJkGWx
-DoDKjvbdZoOIdeZj
-DoCjjvbdWHxVwgYz
-DnbjjvbdeEoRbWbj
-DncKjvbdZMSDsnLm
-EOcLKvbdbiNKLFvx
-DnbkKvbdjcLjqHVH
-DnbjjvbdEYXktTtM
-EPCjjvbdCSaCsfWr
-EOcLKvbdBdQAuimG
-EObkKvbdqdFIpOWB
-DncLKvbdelevgNKL
-EObkKvbdZMRdUNkm
-EPCkKvbdrDdiQOVa
-DoDLKvbdCWzdJFQW
-EObjjvbdxUleQyMO
-DncKjvbdBsAcTfXS
-EOcKjvbdRMxBxmtz
-EOcKjvbdSKyFuGkT
-EPCkKvbdEuxooljF
-DncLKvbdYgWdAPSi
-DoCkKvbdiHJcYvKV
-EPCkKvbdZQldiNFR
-DncKjvbdjAPgAofj
-EObjjvbdkVvmdBxX
-DoDLKvbdsBfMlHLZ
-DoDLKvbduWNxKQsA
-EObjjvbdOTTugEtp
-DoCjjvbdIxUBgkqQ
-EOcKjvbdqFceUWAh
-DnbjjvbdTkunaVoJ
-EPDKjvbdiZtfLqOG
-DoCjjvbdcImJkGXY
-DncLKvbdpstGrSLU
-DncLKvbdRpTfjGDw
-DnbkKvbdznpREblY
-DnbjjvbdqdEhomvB
-DncLKvbdIwtBhMRQ
-DoDKjvbdhtzFWqtb
-EOcKjvbdiBncEwQq
-EPDKjvbdZQleJMdq
-EOcLKvbdLAkGlaxR
-DoCkKvbdZsiIyDsO
-EObkKvbdeOdsKssr
-DnbjjvbdJcKCpjDY
-EPDLKvbdSBdElIyL
-EPCkKvbdyOTHwrhc
-EPDLKvbdGLEsDIMu
-EPCjjvbdmJETqVRa
-DncKjvbdKDJbqJbx
-EOcKjvbdbsCkTdKB
-EOcKjvbduDCuXVno
-EOcKjvbdrXPlDIxq
-EOcKjvbdqlyixkhJ
-EObjjvbdRkYfUgLT
-EPDLKvbdLAkGmCXq
-DnbjjvbdHgGzYxXg
-DncKjvbdpstHSSKt
-DoCkKvbdqvolCiYq
-DoCkKvbdmgFYNOHZ
-DnbkKvbdqGDeTvBI
-DoDLKvbdyzeNrHhh
-DnbkKvbdwzHefXeS
-DoDKjvbdbiMjLGXY
-DnbkKvbdTulQKTaR
-DnbjjvbdsPunicVf
-DncKjvbdqvpLcIyR
-DncLKvbdOFEThhkE
-EOcKjvbdZshhxdSn
-DncKjvbdpyPHfpdY
-DoDLKvbdNGcPmQUk
-DoCkKvbdVgwvXfxz
-DoCjjvbdCgLegAzc
-DnbjjvbdauCGxLTh
-DoDKjvbdqFceTvBI
-DoCjjvbduMYXAsaX
-EPCkKvbdrSVKmkAm
-EObkKvbdOYOuzcnU
-DncKjvbdYkqctNlN
-DncKjvbdSZjHrcWA
-DoCjjvbdrEFJQNua
-EPCjjvbdRosfjFcw
-EObkKvbdZoNiFEyj
-EPDKjvbdVgwvXfxz
-DoDLKvbdhbPCdvqR
-DncKjvbdqvokcIyR
-DnbjjvbdpssfqqkU
-DncLKvbdzoPpdbkx
-DnbjjvbduaDySoFI
-EOcKjvbdEASImZwX
-DncKjvbdbrcKtDjB
-DoCjjvbdQccBQQdS
-DoCkKvbdDigjVwjA
-DnbkKvbdbVBfwkUI
-EOcKjvbdIsYaSlxM
-DoDLKvbdKVtedEgJ
-EPCjjvbdIryArlxM
-DncKjvbdpeceTuaI
-EObkKvbdZshiYdSn
-DncLKvbdZtIhyESn
-DnbjjvbdOYOuzcnU
-DoDKjvbdUxhTyjoO
-EObjjvbdTppoVVHm
-DncKjvbdrWolCiYq
-DoDLKvbdNVSrKmAX
-EObkKvbdiGicZWKV
-DoDKjvbduVmwipsA
-EPCjjvbdNPwqVnHT
-EObjjvbdelewGmJk
-EOcLKvbdgGLzNgHA
-DoDKjvbdcJNJjfWx
-DoCkKvbdyOTHwriD
-EObjjvbdEzspeLcJ
-DnbjjvbdjhHLeenL
-DncKjvbdOStWHFVQ
-EOcLKvbdsZlPsBHn
-EPDLKvbdtcCuWuno
-DnbkKvbdULunaVni
-EPDKjvbdJqZdnfNe
-EOcKjvbdqwPkcIxq
-EObjjvbdrJAJeNOe
-DnbjjvbdRECaPpdS
-EPCjjvbdpfEEsvBI
-EPDLKvbdIsZArmYM
-EPDLKvbdJYUCILpp
-EOcLKvbdYlSDtNlN
-EPCjjvbdJYTbHkpp
-EPDKjvbdYzbfSJvZ
-EPCjjvbdRaceMJYk
-EObjjvbdZisHofaf
-DnbkKvbdRbEElIyL
-EOcLKvbdijFhKNXr
-EOcKjvbdRXNdDMID
-DncLKvbdbiNKLGXY
-DoDLKvbdlZSrSyHU
-EObkKvbdqZPIHRDx
-DoDKjvbdnPzYujxb
-EObkKvbdnHEwlmfy
-EObkKvbdCWzdIePv
-EObkKvbdqlyiyLgi
-EPCjjvbdkySqryHU
-EObkKvbdcImKKevx
-DncKjvbdEASJMzWw
-DncKjvbdRkYfUfkT
-EPCjjvbdqYoIGpcx
-DncKjvbdGckWKBjK
-EPCjjvbdYTLaNUOx
-EPDKjvbdwtleRZMO
-EObkKvbdGFiqnJUR
-DncLKvbdlhdURVRa
-EObjjvbdqlzJxkhJ
-DncLKvbdFaPQyJzm
-EPCkKvbdpssgRrLU
-EObjjvbdiCOcFXRR
-DncKjvbdqTtGqrLU
-EPCjjvbdsCFlkgLZ
-EOcKjvbduWOXiqTA
-EOcKjvbdkClKqGuH
-EPCjjvbdMowpvOGs
-EPCkKvbdxrmhmRag
-DoCjjvbdiUzFXRuC
-EOcLKvbdUMWPAvOi
-DoDLKvbdmfdwlmgZ
-EPCjjvbdehKurNpg
-EOcLKvbdBsAcTevr
-EPCjjvbdZjTIPgBf
-EObjjvbdPIAXyAZB
-EPCjjvbdCDoaVjNG
-DncKjvbdrpVnicVf
-DoDKjvbdlZTSSxgU
-DncKjvbdGZVVAdYC
-EPDLKvbdsCGMkfjy
-EPCjjvbdSPsfjFdX
-DoCjjvbdJXsbIMQp
-DncKjvbdzeZnzdyp
-DnbkKvbdlYsRsYft
-DncKjvbdbiMjLFwY
-EPDKjvbdyOShYSiD
-DoCkKvbdOTTufduQ
-EPDLKvbdVwJYVcdg
-DoCkKvbdGFiqnJTq
-EOcLKvbdUslselWK
-EObjjvbdkxsSSyHU
-EOcLKvbdxsNhmSBg
-DnbjjvbdqqtkOLAm
-DnbjjvbdeFPRawDK
-DnbkKvbdLZQirzuG
-EPCkKvbdFWYpPlie
-EObkKvbdrWpMCiYq
-EOcKjvbdiiehKNXr
-EPDKjvbdEvYopNJe
-EPCkKvbdxrmhmSCH
-DoCkKvbdptUHSRkU
-EOcKjvbdKCjDRJcY
-DoDLKvbdrMzKYkgi
-DoCjjvbdZLrDtNkm
-DoCkKvbdqYnggQcx
-DnbkKvbdrovOibvG
-DncKjvbdADRwizIp
-EOcLKvbdZisHpHCG
-EPCjjvbdZRNFImFR
-EPDKjvbdVwIxVceH
-EOcKjvbdrDeJQNua
-EPCkKvbdIxTaglQp
-DncKjvbdGFiqmiUR
-EPCjjvbdVwJXvEEg
-DnbkKvbdwuMeRZMO
-EPCkKvbdZRNFImFR
-EPCkKvbdnHEwlmgZ
-EPDKjvbdLYqKSzuG
-DoDKjvbdZsiJYdTO
-DoDLKvbdShyjRAAl
-DoDKjvbdRadFLiYk
-DnbkKvbdjbkjpgUg
-EObkKvbdUaBpsRRy
-EOcKjvbdehKuqnRH
-EObkKvbdDwxMUTsl
-EOcKjvbdptUHSSKt
-EPDKjvbdHEKuibJj
-EOcKjvbdxxIjBpZk
-EObkKvbdelewGmJk
-DncLKvbdTvLpKUAq
-EPCjjvbdGLErbhNV
-DncLKvbdfHjvRmqH
-DnbjjvbdkMakyeHP
-EPDKjvbdJcKCpjDY
-DoCkKvbdRECaPpcr
-EOcLKvbdmgFYMmgZ
-EObjjvbdZRMdiMeR
-DoCjjvbdYzcFqivZ
-DoCkKvbdeOeTKtTr
-EPCkKvbdXFxytAPT
-DncLKvbdZnnJEdzK
-DncLKvbdhtyeWrUb
-EOcKjvbdEJgivXjA
-EPDLKvbdssSTYyeD
-EPDLKvbdLBLGmCXq
-DnbkKvbdKeegbApu
-DoDLKvbdJYUBhLqQ
-EPDKjvbdwNWANDdm
-DoCjjvbdKfGIBaRV
-DoCjjvbdbhljLFwY
-DncLKvbdmgFXmNgZ
-DoDKjvbdZRMeJNFR
-DoCkKvbdWeyZtAOs
-DoCkKvbdbiNKLFvx
-EPDKjvbdUsmTfMVj
-EPCkKvbdijFgjMwr
-DnbkKvbdbsCjtDia
-DnbjjvbdZQleJNFR
-DoDLKvbdNQXqWNfs
-EOcLKvbdULunaVoJ
-DncLKvbdrEEhpOVa
-DncLKvbdRyigsCvA
-DoCkKvbdVwJYWEEg
-DncLKvbdjKGIKMwr
-EObkKvbdrEFIpNvB
-DoCjjvbdGLEsDINV
-EOcLKvbdJSyArlxM
-EPCjjvbdTJZiqABM
-DncLKvbdCTAbsewS
-DnbjjvbdZjTIPfaf
-EPCjjvbdbPfgELzd
-DnbjjvbdLBLHMbXq
-EPCjjvbdqiAKFMoF
-DnbkKvbdIBlZdzAD
-EPDLKvbdyTNiNRag
-DoDLKvbdZjSgogCG
-EPCjjvbdjAPgAofj
-EPCjjvbdxmrgxTJD
-EObjjvbdSPsgKGEX
-EObkKvbdRWnDblHc
-DnbjjvbdZQmFImFR
-DoCjjvbdjuwODaww
-EOcLKvbdVviXvEFH
-EPCjjvbdcImJkGXY
-EPDKjvbdVAbQrqSZ
-DoCjjvbdWWiXudFH
-EPDKjvbdapGfdLzd
-EObkKvbdQwOEDMID
-EPCjjvbdKDKCqKCx
-DncKjvbdJvUfEEgJ
-EObkKvbdDoDLKvcE
-EOcKjvbdqwPkbhyR
-EObjjvbdyTOJNSCH
-EObkKvbdZsiIxdTO
-DoCjjvbdaSFbhTfL
-EOcKjvbdUslsekvK
-DoDKjvbdehLWSORH
-EPCkKvbdBsBDTfWr
-DoCkKvbdMfbpNQVL
-DoCkKvbdezvZFJUX
-EObjjvbdJYUBhMRQ
-DncKjvbdlhcsptqa
-DoCkKvbdiZtfMQnG
-EObkKvbdZRMdhleR
-EPDLKvbdkySrSxgU
-DoCkKvbdYlSDsmkm
-DnbkKvbdkNBkzEfo
-EPDLKvbdyYJKCPzL
-EOcKjvbdqwPkbiZR
-DncLKvbdqdFJQOWB
-DoDKjvbdFyUtaDxC
-DnbjjvbdZyDinDMS
-EOcKjvbdqrVKnKaN
-DoCjjvbdMgDPlotk
-EPCjjvbdUVlPitBR
-DoDLKvbdbsCkTcjB
-EPCjjvbdnGdwlnGy
-DnbkKvbdapGfdLzd
-EPDKjvbddndsKtTr
-DncLKvbdsrrTZZeD
-EObkKvbdqdFJQOWB
-DncKjvbdRadFLhxk
-DnbkKvbdfILWSORH
-DnbkKvbdqZOggQcx
-EPDKjvbdCDpAujMf
-EObjjvbdxsOImSBg
-DoDKjvbdrSUjmjaN
-EObkKvbdrMyjYkhJ
-EObkKvbdANHySvzY
-EObkKvbdgGLynGgA
-DoDLKvbdNdcshiKd
-EObjjvbdePErkTtS
-EPCkKvbdSCEFLhxk
-DoDKjvbdIxUBhLqQ
-EPCkKvbdVvhxWDdg
-EOcLKvbdKfGHbBQu
-DoCjjvbdajlFoNcA
-DoCkKvbdQdDAopdS
-DoDKjvbdSBceMJZL
-DoDKjvbdOStWGdtp
-DoCjjvbdGdLWKBij
-DnbkKvbdvOszpjnt
-DncLKvbdUVlPjTaR
-DoDLKvbdliDsptrB
-EOcKjvbdZisHpHCG
-DoDKjvbdkVwODaxX
-DoDLKvbdfVzwpJzs
-DnbkKvbdDjIKWYKA
-EObkKvbdrJAJdmPF
-EObjjvbdeATpmYJf
-DnbkKvbdQmYByOUz
-EPDLKvbdxmrhXsJD
-EPDLKvbdCJLBjiGK
-DoCkKvbdYpmFJMeR
-DoDKjvbdXnRAXuWU
-DoDKjvbdiMFDmtby
-DnbkKvbddZyQYZQb
-DncLKvbdZtIiYdSn
-EObjjvbdwMvANDdm
-EPDLKvbdIwsbHkqQ
-DncKjvbdURQntthN
-EObkKvbdTqROttgm
-EPCjjvbdTkvOaVni
-EOcLKvbdfNFwHNKL
-EObkKvbdjgflFfOL
-EObjjvbdUQqOuUhN
-DncLKvbdegjurNqH
-EPDLKvbdxUmEqZMO
-DoDKjvbdGcjvKBjK
-DoDKjvbdVTltFkuj
-DnbkKvbdLYqKSztf
-DoDKjvbdUyHtZkOn
-EPDLKvbdvAcyTOdh
-DncKjvbdqFcdsvAh
-DncLKvbdrbFmMHKy
-EOcKjvbdYlRdTnLm
-DoCjjvbdEASJMzXX
-EObkKvbdMoxQvNfs
-EOcKjvbdiHJcYujV
-DnbjjvbdvAcyTPEh
-DoDLKvbdGQASwGfZ
-EObkKvbdMoxRVnHT
-EObkKvbdhgJcYvJu
-DnbjjvbduWOXipsA
-DoDLKvbdQcbaQQdS
-EObkKvbdUsltFkvK
-EPDKjvbdKyQirzuG
-EPCjjvbdmJDtQuSB
-EObkKvbdXrkaMsoY
-EOcKjvbdrEFIpOVa
-EPDKjvbdVqmwadkc
-EOcKjvbdqYoIGqDx
-EObkKvbdtbbtwWOo
-EPCkKvbdSKxfUfkT
-EPCkKvbdmJDsqUrB
-DncKjvbdhaoCeWpq
-EObjjvbdFxuVAdYC
-EPCkKvbdqFcdsvBI
-EPDLKvbdOTUWGeVQ
-EPCkKvbdlhdUQtrB
-DoDKjvbdCJLCLJGK
-EPDKjvbdMgCpMotk
-DnbjjvbdrbFlkgLZ
-DoDKjvbdqBJFAWhE
-EPCjjvbdpyPHfqDx
-EOcKjvbdTlVoBVni
-EPCjjvbdrRtkNkBN
-EPCkKvbdWWhwuceH
-EPDKjvbdcImKKewY
-EOcKjvbdYSlBNToY
-EObkKvbdZRMeIldq
-EPDLKvbdMoxRWNgT
-EObjjvbdMIbMQxAS
-EPCjjvbdQdDBQQdS
-EObkKvbddZyPwxqC
-EOcLKvbdACrXiyiQ
-EPDLKvbdcSbkUEJa
-DncLKvbdTkunaWPJ
-DnbjjvbdvBEYrndh
-EObjjvbdmIctQuRa
-DncKjvbdiUydvqtb
-DoCjjvbdhkdcnUby
-EOcKjvbdePFTLTsr
-EOcLKvbdiHJbxujV
-EObjjvbdZsiJZESn
-EOcKjvbdpxoHfqEY
-EPDKjvbdFyUuBDwb
-DoDLKvbdBiLBkJGK
-EPCkKvbdliDtQuRa
-DoDKjvbdhbOcEwQq
-DncLKvbdRosgJfDw
-EObjjvbdrzMQSaIO
-EObkKvbdUsmTfMVj
-EOcKjvbdWXIxWEFH
-EPCjjvbdcTCjtDjB
-EObkKvbdbBVeGQPw
-EOcLKvbdaSGDHtFk
-DoDLKvbdqFdFUVaI
-EPCkKvbdxxIjBozL
-DncLKvbdNddUIiLE
-EObjjvbduMYWaUAw
-EPCkKvbdWWiXvDdg
-EObjjvbdJXsbILqQ
-DnbkKvbdDnbjjwCd
-DnbkKvbdxUldqZMO
-DoCjjvbdKyRKSztf
-DncLKvbdLFehBaQu
-EPDLKvbdjvXNdBww
-EOcLKvbduaEZTPFI
-DoCkKvbdfMevfmKL
-EPCkKvbdpxoIGqEY
-EPCkKvbdKWUecdgJ
-EObkKvbdmbJwYOmu
-EPCkKvbdIsZArmYM
-DnbjjvbdxLXDgzyf
-DncLKvbdEvYopMjF
-DncLKvbdmJETqVRa
-DnbkKvbdrouoKDWG
-EPDLKvbdbVCGwkTh
-DoDKjvbdZirhPgCG
-EPDKjvbdTvMQKUAq
-DnbkKvbdLrWlzVQz
-EOcLKvbdrEEiPmua
-DnbjjvbdczZQXyRC
-DncKjvbdnUtzKjSG
-EPCjjvbdkNCLzFHP
-DncKjvbdZyEKNbkr
-EObkKvbdJuuFdEgJ
-DncLKvbduCbuXWPP
-EPCjjvbdyNrhXriD
-DnbkKvbdIxTaglQp
-EPCjjvbdJvVFceHJ
-EPCkKvbdVBBprqSZ
-EOcKjvbdkxrqsYgU
-EPCjjvbdGLFSbhMu
-EObjjvbdnPzZWLYb
-EObkKvbdjblLRGuH
-DoDLKvbduaDyTPFI
-EPCjjvbdiifIJmXr
-EObkKvbdYkqctOMN
-EPCkKvbdelfXHMjL
-EPDLKvbdeFOrCWbj
-EObjjvbdeUAUATNW
-EPCjjvbdWRmxBeMD
-DoCjjvbdZxcinDMS
-EOcLKvbdWRmwbElD
-DoDLKvbdpssfrSLU
-DncLKvbdQccApRES
-DoDKjvbdGdKujBij
-DoDKjvbdZLqdTmlN
-DoCjjvbdbiNKLGXY
-DoCjjvbdVZITzKoO
-DoCkKvbdsPuoKCvG
-EPDKjvbdNGbomQVL
-DnbkKvbdkIHMGFnL
-EPDKjvbdvPTzpjoU
-EOcKjvbdczZPxZQb
-DncKjvbdliEURUrB
-DnbkKvbdGZUtaDxC
-EPCjjvbdrMyjZLhJ
-EPCjjvbdTulPjTaR
-DoCkKvbdZeYGzhJC
-DncLKvbdwygefYEr
-DnbjjvbdehLVrOQg
-DnbjjvbdZxcjNblS
-DoCjjvbdSLYetgKs
-EPCkKvbdVAbQrpqy
-EPCjjvbdtTSTZZdc
-DnbkKvbdSCEFMIyL
-DoDKjvbdrDeJPmvB
-EOcLKvbduDDVXVno
-DoDLKvbdZdxGzhIb
-EObkKvbdhgJbxujV
-DncLKvbdlYsRsZHU
-DoDLKvbdhzUelQmf
-EObkKvbdWWhwvDeH
-EPCjjvbdjgfkfFmk
-EObkKvbdzaAPHGal
-DoDLKvbdEPDLLXDE
-DoCjjvbdTukpKTaR
-EOcKjvbdhaoCeWpq
-EPDKjvbdwjvdHzzG
-EPDLKvbdJTZBTNYM
-DoDLKvbdRECaPqDr
-DncKjvbdjhGkfGNk
-EObkKvbdjhGkfFmk
-DncLKvbdqlyixkhJ
-EObkKvbdjEkHUoAO
-EPCkKvbdcasMrAUN
-EObjjvbdhzUfLqOG
-DoCkKvbdEvYopNKF
-EPCjjvbdjuwODaxX
-DncLKvbddiirWUzn
-EObkKvbdOStVfduQ
-DnbjjvbdypnmIjXA
-DnbjjvbdRWnEClHc
-EOcLKvbdbhljLFvx
-EPDLKvbdJXsaglRQ
-EObkKvbdhzUfLqOG
-EObkKvbdnPyxujyC
-DoDKjvbdBiKajiFj
-DoDKjvbdZjTHpHBf
-EPCjjvbdaSFcITek
-EObjjvbdYzcFqiuy
-DncLKvbdqdFIpNvB
-DoDKjvbdLYqJrzuG
-DoDLKvbdVwJXucdg
-DnbjjvbdhbObdvqR
-DoCkKvbdCEQBWJlf
-DoDLKvbdSCDdlJYk
-EPDLKvbdZyEJnCkr
-DoDKjvbdvAcyTOeI
-DoDKjvbdkIHLfFmk
-EPCjjvbduaEYroFI
-DnbkKvbdjblKpgUg
-EOcKjvbdwygefYFS
-EOcKjvbdliDsqUqa
-DnbjjvbdjcMLRGtg
-EObkKvbdRbEElJYk
-EPCkKvbdqrUkNjaN
-EOcLKvbdRotGifDw
-DnbkKvbdUsmUGLuj
-DoCjjvbdeKJqvUzn
-EPDKjvbdQwNdClHc
-EOcLKvbdcScLTcjB
-DoCjjvbdvBDxroEh
-DoDLKvbdIxUBglQp
-EPDLKvbdfVzxQJzs
-DncLKvbdqlzKYlIJ
-DoDKjvbdaNLCSuMg
-EOcKjvbdwjwDgzyf
-EPDKjvbdIxTaglRQ
-DoDKjvbdVTltGLuj
-DoCkKvbdiMFENuDZ
-EOcLKvbdZyEJnDMS
-DnbkKvbdiBoCeXRR
-EPCkKvbdbiMijewY
-EOcKjvbdmttzLJqf
-DncKjvbdYTLaMtOx
-EPCjjvbdfIKuqmqH
-DoCjjvbdBdQBVjNG
-EObkKvbdieLGuPAO
-EPDLKvbdsZlQSaIO
-DnbkKvbdEztQeMDJ
-EPCjjvbdIjEAJpHE
-EOcLKvbdfILWRmpg
-EPCjjvbdZyDinDLr
-DncKjvbdLGGIBaRV
-DncLKvbdmozZWLZC
-DoCkKvbdlZSrSxft
-EOcLKvbdFjdrcINV
-EOcKjvbdQvnDblHc
-DoCkKvbdqUUHRqkU
-EPDKjvbdnBjWwnmu
-DoCjjvbdZxcjNbkr
-DncKjvbdZisIQHCG
-DoCkKvbdJcJcRJbx
-EPDLKvbdlhdUQtqa
-DnbkKvbdrzLpSaHn
-DoDKjvbdziuPpDrt
-EPDKjvbdEYXlTtUM
-EObkKvbdqdFIpOVa
-DncKjvbdpxnhHQdY
-DnbkKvbdLhakqYAS
-EPCkKvbdrRtkNkBN
-EObkKvbdqrVKmjaN
-EOcKjvbdxUldqZMO
-EOcKjvbdrbFllHKy
-DoCkKvbdySmhlrBg
-EPCkKvbdkxrqsYgU
-EPCkKvbdZLqcsnMN
-DncKjvbdFpATXHFy
-EPDLKvbdZRMdiMeR
-EPDLKvbdRNXbYmtz
-DoCkKvbdpyPIGqEY
-DoDLKvbdKaKfmCYR
-EPDLKvbdrylPsBIO
-EObjjvbdUQqOuVHm
-EPCkKvbdezvZFItX
-EOcKjvbdZirhQHCG
-DoDKjvbdePFSjssr
-EOcKjvbdCTAcTfXS
-EOcKjvbdkxsRsYft
-EPDLKvbdQwODcMHc
-DoDKjvbdwuNFRZMO
-EPCjjvbdEuyPomKF
-DoCkKvbdpxnhGpcx
-DncKjvbdiVZeWrUb
-EOcKjvbdrEEiPmvB
-EOcLKvbdZxdJnDLr
-EObjjvbdUtNUFkvK
-DoDLKvbdZQmFIldq
-EObjjvbdnCJvwnmu
-EPCkKvbdRWmccLgc
-DnbkKvbdnUtykJqf
-DnbkKvbdVBBqSpqy
-EPCkKvbdZoOIddyj
-DnbkKvbdZQldiNFR
-DncLKvbdmRyVZsDi
-DoCjjvbdcasMrATm
-EOcLKvbdtbbtvuno
-DoDLKvbdZtJJYdSn
-DnbkKvbdGKeTDHlu
-DoCkKvbdZjTHpGbG
-EOcKjvbdHDjvKCKK
-EObjjvbdddnqbXCj
-EObkKvbdlZTSTYgU
-EPCjjvbdqqtjmkBN
-EObjjvbdtAGqIAAr
-EObkKvbdrRtjmjaN
-DnbjjvbdMRwMytpz
-EPCkKvbdsQWPJbuf
-DoDKjvbdqFceUWBI
-DoCkKvbdnBjWxPNu
-DoDLKvbdiUzFXRuC
-EObkKvbdQccBPqES
-DnbjjvbdOFDtIiLE
-EPDKjvbdYlRcsnMN
-DncKjvbdFfJrNhsq
-DoCkKvbdsCFmMHKy
-EPDLKvbdYkrETnMN
-DoCjjvbdYNqAXuWU
-EPDKjvbdrovPKDWG
-DoDLKvbdbKlGOmcA
-DoCkKvbdOStWHFVQ
-EObjjvbdhbObeXQq
-EPCjjvbdeEnrBwDK
-DoDLKvbdrbFmMGkZ
-DncKjvbdxZhGGYFS
-EPDKjvbdbrbkTdKB
-EPDKjvbdraellGkZ
-EPCkKvbdssSTZZeD
-EPDKjvbdDjHiuxKA
-DoCjjvbdzoPqFDMY
-EPCjjvbdlAlnmALA
-DoDKjvbdmtuZjjRf
-DoDKjvbdFpASvfey
-DoCkKvbdjlakyeGo
-DoDKjvbdxnSgxTIc
-EPCjjvbdxZhFfXeS
-EPCkKvbdqcdiPnVa
-EOcLKvbdmfeYMnHZ
-DoDLKvbduCbuWvOo
-DoDKjvbdmIcsqUqa
-EPDKjvbdzoQQdblY
-DoDLKvbdRNXayOUz
-DnbjjvbdrJAKFNOe
-DnbjjvbdZLrEUOMN
-EOcKjvbdwygeexEr
-EPCkKvbdbVBfwjtI
-EObkKvbdKDKDRJbx
-DoCkKvbdGckWKBij
-EOcKjvbdzjVQPdSt
-EPDLKvbdqlzKYkhJ
-DnbjjvbdajkennDA
-DoDLKvbdRzJgsCvA
-EObjjvbdehKuqmqH
-DncKjvbdajlFnnDA
-DnbjjvbdjEkHUoAO
-DoCjjvbdFVyPomKF
-DoCkKvbdJcJbpjCx
-DnbkKvbdRaceLiZL
-EPDKjvbdeEnrBwDK
-DoDLKvbdxKvdHzyf
-DoCkKvbdSPtHKFcw
-EObkKvbdjhHMGGOL
-EOcLKvbdGGJqnItR
-DoCjjvbdnGdxNNgZ
-DoDKjvbdbKkfOmcA
-DnbjjvbdelewHNKL
-EPCkKvbdcSbjsdJa
-EPCkKvbdTAEhgbOd
-DncLKvbdUslselVj
-DnbjjvbdVrOYBeMD
-EObjjvbdEzspeMDJ
-EPCjjvbdcTDLTcjB
-EPDLKvbdsPvPJbuf
-EOcKjvbdqGEFUWBI
-EPDKjvbdVgxWYGxz
-EOcLKvbdSPtGjGDw
-EObkKvbdGckVibJj
-DoDLKvbdeEoSCWcK
-EPCkKvbdQvmdClID
-DncLKvbdhytelROG
-EPCkKvbdeXzTtSFz
-EPCkKvbdrXQMDIxq
-EObkKvbdtlXvaUAw
-DnbkKvbdiMFDmtcZ
-EPDLKvbdJqZeOfNe
-EPDLKvbdmIdUQtrB
-DoDKjvbdVTltGLvK
-DncLKvbdZRNEhleR
-EPDKjvbdjlakydfo
-DnbjjvbdFpASvfey
-EPCkKvbdkySrTYft
-EOcLKvbdVUMtGMVj
-EPDLKvbdmRyUysDi
-EPCkKvbdGKeScHlu
-EObjjvbdczZPwyRC
-EPDLKvbdVYhUZkOn
-DncLKvbdJbibqKDY
-EPDLKvbdfekzNfgA
-EObkKvbdKQydoGOF
-EObkKvbdVgwvXfxz
-DncLKvbdQdDApQcr
-DncLKvbdGFjRnJUR
-DncKjvbdjgflFemk
-DoDKjvbdlhctRVSB
-DncLKvbdZLqctOLm
-DncKjvbdfSAvzlCo
-EPDKjvbdZRMeIleR
-EObjjvbdZRMeJMdq
-EOcKjvbdMuTSKmAX
-DncKjvbdqYngfpdY
-DnbkKvbdxrmiMqbH
-EObjjvbdbPgGckzd
-DoCkKvbdpstGqqkU
-DncLKvbdmJDsqVSB
-EPDLKvbdtunYKQsA
-EObkKvbdDnbkKwCd
-EPDLKvbdEXwkstUM
-DoDKjvbdrRtkNkBN
-DncLKvbdIwtCIMQp
-EPDLKvbdZQmEhmEq
-DnbkKvbdxmrhYTIc
-DoCjjvbdCSaDUGWr
-EPCkKvbdatagXkUI
-DncLKvbdEPDKkWcE
-DncKjvbdZjShPgBf
-EPDKjvbdHDkVjCJj
-DoCjjvbdsrrTYzEc
-EObjjvbdhlEcnUby
-DnbjjvbdemFvfmKL
-EObkKvbdlhcsqUqa
-DoCkKvbdZtIiYdTO
-EObkKvbdEXwlTssl
-DoDKjvbdhaoCdvqR
-EObkKvbdliEURUrB
-DoDLKvbdEYXkstTl
-DncKjvbdFkEsDINV
-DoDKjvbdFkErcHmV
-DoDLKvbdKCjCpjDY
-EPCjjvbdjJegjMxS
-DnbkKvbdnCKWwnmu
-DnbjjvbdqwQLbiYq
-DoDLKvbdSZigsDWA
-EObjjvbduVnYKRTA
-EOcKjvbdTlWOaVoJ
-DnbjjvbdSCDeMJYk
-DnbkKvbdQvmdClID
-EPCkKvbdziuQPdTU
-EOcLKvbdhficZWJu
-EOcKjvbdZLqdTmkm
-DoDKjvbdcImKKevx
-EOcLKvbdGFirOJUR
-EObkKvbdREDApRES
-DoDKjvbdHELWKBij
-EOcKjvbdrSVLNkBN
-EOcKjvbdBdQBWJlf
-DoCjjvbdFpATXHGZ
-DnbjjvbdqZOhGpdY
-EPDLKvbdCSaDUGWr
-DoDLKvbdrpWPJcWG
-DnbjjvbdZsiJYdTO
-EPDKjvbdJvVGEFGi
-EPCkKvbdmIctRVSB
-DncKjvbdBiLCKhfK
-DoCkKvbdZisIQGbG
-DoCjjvbduWNwjQsA
-EOcLKvbdiHKCyVjV
-EPCjjvbdlZSrTZGt
-EObjjvbdNPxRWNgT
-DncKjvbdeAURNXif
-DncLKvbdOStWGeVQ
-DoCjjvbdJvUeceGi
-DoDKjvbdXsMBMsnx
-EPDKjvbdGLFSbhMu
-EPDLKvbdEvZPolie
-EOcKjvbdrRtjnLBN
-EPDKjvbdyOTHxTJD
-EPDKjvbdmajWwnmu
-EPCjjvbdrNZjZLhJ
-DncKjvbdajlFoODA
-DoDKjvbdrEFIpOVa
-DnbkKvbdpedEtWBI
-DncKjvbdqwQMChyR
-DnbjjvbdnCKWwnnV
-DoCjjvbdNUsRkNAX
-EOcLKvbdULvPBWPJ
-DncLKvbdjlalZdfo
-EPDKjvbdjJfHjNYS
-DoDKjvbdPxmAHTSK
-DnbkKvbdmIctQtqa
-EObjjvbdnHFXmNfy
-EPCkKvbdqlzJyLhJ
-DnbjjvbdVqnYCElD
-EPDKjvbdqTsgRqkU
-EPCjjvbdADSYKZhp
-EPDLKvbdEvZPoljF
-DoCkKvbdLFfICBRV
-EOcLKvbdZRNFJNFR
-EPDKjvbdpedFUWBI
-EPDKjvbdVwJYVceH
-DoCjjvbdGYtuBDwb
-DoCjjvbdVYgtZjoO
-DncKjvbdQccApQcr
-EOcLKvbdWWiYWDdg
-DncKjvbdyTOJNSBg
-DnbjjvbdbAueFpQX
-DnbkKvbdiUydwSUb
-DoDKjvbdKVtfDeHJ
-DoDKjvbdEObjkXCd
-EOcKjvbdqlyjYlHi
-EOcKjvbdfRaWzlCo
-EObjjvbdRWmcblID
-DoDLKvbdCDpAvKMf
-DncLKvbdmuVZjjSG
-EPDLKvbdkaMnmALA
-EPCkKvbdcSbkTdKB
-DnbjjvbdZtJIyESn
-EPCkKvbdQvmccMHc
-DncLKvbdfHjvRmpg
-DoCjjvbdVvhwvEEg
-EPCjjvbdXrkaNTnx
-DnbkKvbdGFirNiUR
-EObkKvbdZLrDsnLm
-EObkKvbdySnJNRbH
-DncKjvbdaMkBsUmH
-EPCkKvbdqGEFUWBI
-EObjjvbdmajXYOnV
-DnbkKvbdHELWKBjK
-EPDKjvbdWSOYCFLc
-DncLKvbdehKurNqH
-EPDLKvbdSZjIScWA
-DncKjvbdZQldiNEq
-DncLKvbdVwIwvEEg
-DnbjjvbdauCGxKsh
-DnbkKvbdKefHbApu
-DoCkKvbdssSTYyeD
-DnbjjvbdSPsgJfEX
-DoCkKvbdeKKRvUzn
-DoDLKvbdiMEcnVCy
-DoDLKvbdoAKzsgcn
-DoDKjvbdDoDKjvbd
-DncKjvbdFWYopMie
-EPDLKvbdRNXaxmtz
-EOcLKvbdKefHaaRV
-EPDKjvbderAvzkbo
-EObjjvbdzoQREcMY
-DnbkKvbdijFgjMwr
-EObjjvbdhbObdvqR
-EPCkKvbdySmiMqbH
-EObkKvbdyzeOSIIh
-DnbkKvbdjcLkRHUg
-DoDLKvbdJpydoGNe
-DoDKjvbdwXMBWBWV
-EObkKvbdsBfMkgKy
-DnbkKvbdYkqdTnMN
-EPCjjvbdEPDLLWbd
-EObkKvbdDwxLtUUM
-DncKjvbdNrtVgFUp
-EPDKjvbdZQleJNFR
-EPDKjvbdJKEAKPfd
-DnbjjvbdhgKCxvJu
-EObkKvbdLAkHMbXq
-EPDKjvbdhancEvqR
-DoCjjvbdNsUWHEuQ
-DnbkKvbdZjTHofaf
-EPCjjvbdrDdiQOVa
-EPDKjvbdkMbLzEgP
-EPCkKvbdZoOJFEyj
-EPCkKvbdADRxJyhp
-EObjjvbdaSGCgsfL
-DnbjjvbdJbjDQibx
-EPCjjvbdpfEEtWBI
-EOcLKvbdZxdJmblS
-EPCkKvbdRpTgKGEX
-DoCjjvbdzRPNIiwA
-EObkKvbdzoPpeClY
-EObjjvbdeFOrBwDK
-DoCkKvbdOTTvHEtp
-DnbjjvbdGQATWgFy
-EPCjjvbdEvZQQNJe
-EObkKvbdjvWnECYX
-DoDLKvbdyTOIlqag
-DnbkKvbdEASJNZvw
-EOcKjvbdsZkosBHn
-DoDLKvbdtSqsYyeD
-DncKjvbdqlyixkgi
-EPCjjvbdTppnuVHm
-DncKjvbdatbHYKsh
-DoCkKvbduVmwjQsA
-EPCkKvbdvAcxsOeI
-EObkKvbdRjyFuHLT
-EObjjvbdTukoitAq
-EOcLKvbdkySqrxft
-EObjjvbdQccBPpdS
-DoDKjvbdffLzNfgA
-DoDKjvbdiCOcEvqR
-DncKjvbdIBkzEzAD
-EObjjvbdVZHsyjoO
-EOcLKvbdZoNheEzK
-DnbkKvbdsZkpTAhO
-DnbjjvbdqFdEtVaI
-DnbkKvbdIGfzZXwg
-EPDLKvbdlrZVZsEJ
-EObjjvbdBcpAvJmG
-DnbjjvbdtSqsYzFD
-EPDLKvbdJJdAJogE
-DncKjvbdxVMdpyMO
-EPCjjvbdQwOEDLhD
-DoCjjvbdmgFXmNgZ
-DoDLKvbdjEkGuPAO
-EPCjjvbdACrXjZiQ
-DoCjjvbdZMRdTmlN
-DncLKvbdiLeDnVDZ
-EObjjvbdVAaprpqy
-DoDLKvbdRjyFuGjs
-DnbjjvbdVAbQrprZ
-EObkKvbdSZjHrcWA
-EPDKjvbdVrOYBeMD
-EPDLKvbdDwxMUTsl
-EPDKjvbdRadElIxk
-DnbjjvbdmozZWKyC
-DoDLKvbdptTgRrKt
-EPCjjvbdatagXkUI
-DncLKvbdZLqcsnMN
-DoDLKvbdfNFwGmJk
-EObkKvbdqTsfrSKt
-DncLKvbdZjTHpGbG
-DoCjjvbduWNwipsA
-EPDKjvbdauCGwkTh
-DncLKvbdKVuGEFGi
-EObjjvbdZirhPfaf
-DoDKjvbdxKvcgzyf
-DnbkKvbdxsNhlrCH
-DoCkKvbdBsBDUGWr
-DncKjvbdfMfXHNJk
-DnbjjvbdOSsugFVQ
-DncKjvbdZisIPfaf
-DnbjjvbdZHXEAOsJ
-DnbjjvbdLZRJrzuG
-EObkKvbdwuNFQxlO
-DncKjvbddxZtURez
-EPCkKvbdxrmiNSCH
-DoDKjvbdiUydwSVC
-EObjjvbdiifIJlwr
-DncLKvbdssSSxyeD
-EPDKjvbdOEcsiJLE
-EOcKjvbdySnIlrBg
-EPCkKvbddZyQYZRC
-DnbjjvbdWXJXudEg
-DoDLKvbdKaLHNCXq
-DoDKjvbdGGKRmiTq
-DnbkKvbdlrYtyrdJ
-EPDKjvbdhtzEvrVC
-EObkKvbddZyQYYqC
-DoDLKvbdhaoCdwRR
-EPCkKvbdxLWdHzyf
-DoDKjvbdySmhmRbH
-DnbkKvbdZLqcsmlN
-EObjjvbdZtJIxdTO
-DoDKjvbdDwwksssl
-EPDKjvbdFyVVAdXb
-DoCkKvbdUtNUFkvK
-EPDLKvbdxmsIXsIc
-EPDLKvbdUsmUFkuj
-EOcKjvbdGKdsDHlu
-EOcKjvbdACqwjZiQ
-EPDKjvbdFpASwHGZ
-DoCkKvbdGZUtaDxC
-DncKjvbdmSZVZsEJ
-DoCjjvbdJbicRKCx
-DncLKvbdTvMQJsaR
-DoCjjvbdNeDtJJKd
-EPCjjvbdnPzYvKxb
-DoDLKvbdyTNhlrCH
-EPDKjvbdRosgJecw
-EObkKvbdTAEiICOd
-EOcKjvbdapHHDkzd
-DoCkKvbdjlakzFGo
-DncLKvbdrpWPJbuf
-DnbjjvbdNQXqVnHT
-EOcLKvbdkNCLzFHP
-EObjjvbdTukpKTaR
-EOcLKvbdEuxpPlie
-EPCkKvbdJuuFdFHJ
-EPDKjvbdGGJqmiTq
-DnbjjvbdOAIrtJrA
-DnbjjvbdelfWgNKL
-EObkKvbdhbOcEwRR
-DncLKvbdqiAKFNPF
-DncKjvbdVqnYCFMD
-DoDLKvbdWHxWXgYz
-EOcLKvbdNVTSKmAX
-EPDKjvbduaDySndh
-DnbkKvbdiifIJlxS
-EPDKjvbdeATpmYJf
-DncLKvbduCcVWuoP
-EPCjjvbdhficYvJu
-DncKjvbdehLVqnQg
-EPCkKvbdrDeJPmua
-DoCjjvbdTfzmlWue
-DncKjvbdZoNiFEyj
-DoDLKvbdxmsHxSiD
-EObkKvbdVwJYVdFH
-EPCjjvbduMXwBUBX
-DnbkKvbdTqROuVIN
-EPCjjvbdGKeTCglu
-EPDLKvbdcyyPwxpb
-EPDLKvbdQmXayOUz
-EPDLKvbdZyDinCkr
-EPDLKvbdZoNheEyj
-DncLKvbdmfdxMnGy
-DnbkKvbdkClLRGuH
-DncLKvbdJXsbIMQp
-DnbjjvbdjJegilxS
-DoCkKvbdnPyxukZC
-EPDKjvbdZMRcsnLm
-DoCkKvbdHffzYxYH
-DnbkKvbdbsDLTcjB
-DoDLKvbdSwjlNzjx
-DncKjvbdkaMnmALA
-DncLKvbdqmZjZLhJ
-DoDKjvbdqrUkNkBN
-DncLKvbdmfeXmOGy
-EPCjjvbdZMRdTmlN
-DnbkKvbdypnlhjXA
-EPDLKvbdyOTHxTJD
-EObjjvbdMRwMzVQz
-EPCjjvbdSCDeMIxk
-EObjjvbdOXnuzdOU
-EPDKjvbdOStWHFVQ
-DoDLKvbdrzLpTAgn
-DnbkKvbdULuoAvPJ
-EPDKjvbdZxdKODMS
-EOcKjvbdbAvEfPpX
-DncKjvbdyOSgwriD
-EPDLKvbdrJAJdmPF
-EPDLKvbdauCGxKtI
-DncLKvbdqrVLOLAm
-EPDKjvbdkHgLfFmk
-DncKjvbdUaCRSqSZ
-DnbkKvbdbQGgELzd
-EOcKjvbdcJMijfXY
-EPCkKvbdeOeTLUTr
-EOcKjvbdQmYByNtz
-EPDLKvbdFxuVBDwb
-EOcKjvbdGGJrNiUR
-DoDKjvbddndsLTtS
-EOcLKvbddZyPxYqC
-EPCkKvbdSKxfVHLT
-EOcKjvbdSCDdkiYk
-DnbjjvbdtvNwjQsA
-EOcKjvbdJXsbILqQ
-EObjjvbdjcLkRHVH
-EObjjvbdkCkkQgUg
-DoCjjvbdTqQnttgm
-EPCkKvbdEuyPoljF
-DoCkKvbdTqQnuUgm
-DoDLKvbdLrWlzVQz
-EPCjjvbdRjyGVGkT
-DoDLKvbdHEKvKBjK
-DoCjjvbdnCJvxOnV
-EObkKvbdptUGrRkU
-EPDKjvbdQwNcblID
-DoCjjvbdIidAKPgE
-DoCjjvbdTYLMNzkY
-DnbjjvbdEztRFMCi
-EObkKvbdBhkCLJGK
-EPDLKvbdZisHpGbG
-EPDLKvbddePRbXDK
-EObkKvbdUQpntuIN
-EObjjvbdEPCjjvcE
-DncKjvbdbiNJjewY
-EPDLKvbdVrOYCElD
-EPCkKvbdSBdElIyL
-DoDLKvbdzjVQQETU
-DoCjjvbdCDpAvKNG
-EObkKvbdNHComPuL
-EOcKjvbdGdKvJaij
-DnbkKvbdqmZjYkgi
-DncKjvbdQvnEClID
-DncLKvbdWWiXudFH
-DoDLKvbdCEQBWJlf
-DncKjvbdMpXqWOGs
-EPDKjvbdVBCRSqRy
-EPDLKvbdqUTgSRjt
-EOcLKvbdJXtCHkqQ
-EObkKvbdBiLBkJFj
-EOcLKvbdVvhwvEEg
-EOcKjvbdCTBCsewS
-EOcKjvbdyNsHwriD
-DoDKjvbdwzHfFxEr
-DnbjjvbdypoMiJwA
-DoCjjvbdJbicQjCx
-EOcLKvbdVUMsekuj
-EOcKjvbdCEQBWJlf
-EObjjvbdIjEAKQGd
-DoCjjvbdDjIJvXjA
-DoDLKvbdFyUuAdYC
-DncLKvbdRotGiedX
-DoCjjvbdBhkBjhej
-EOcKjvbdBhkCKhfK
-EPCkKvbdLFfHbBRV
-DoCkKvbdNUrrLNAX
-EOcKjvbdZoOIeEzK
-EPCjjvbdkMbMZeHP
-DoCjjvbdkVwNdBxX
-EPCkKvbdNddThiKd
-DnbjjvbdjcLkQftg
-DnbkKvbdFkErcHmV
-DnbjjvbdqGEEtWAh
-DncKjvbdmSYuZsEJ
-DoCjjvbdUsmTfMWK
-DoCkKvbdVUMtFkvK
-EOcKjvbdKfGICBRV
-DnbkKvbdMSWlzUpz
-EOcLKvbdVBBprpqy
-EPCjjvbdnHEwmNgZ
-DoCkKvbdeEoRawDK
-DnbkKvbdpssgSSLU
-DncKjvbdOSsugFUp
-DnbkKvbdwzHfGYFS
-DoCjjvbdTAEiHbPE
-EObkKvbdKaLGmCXq
-DnbkKvbdCWzciFQW
-DncLKvbdnVVZjiqf
-EPCjjvbdOStWHEtp
-DoDKjvbdkIGkfFmk
-DoDKjvbdZjTIPfbG
-EOcKjvbdXsMAlsnx
-DnbjjvbdILazmwRL
-EOcKjvbdrDdiPmvB
-EPDKjvbdiUzEwRuC
-EOcKjvbdqAheAXHd
-EPCjjvbdRyigsCvA
-DoCjjvbdpyOggQcx
-EPCkKvbdZyDjNblS
-DncLKvbdFejSNiTq
-EPDKjvbdzRPNIjXA
-DncLKvbdaMkBsVMg
-EObkKvbdLYqJrzuG
-DncKjvbdsBfNMHLZ
-EPDKjvbdjgflFfOL
-DoDKjvbdCTAcUGWr
-DnbjjvbdSLZGVGkT
-DoCkKvbdZQmEhldq
-EPDKjvbdUsmTfMWK
-DoCjjvbdKefICBRV
-EPCjjvbdZMSDsnMN
-EObkKvbdwzIGGXdr
-EObjjvbdrRtjnLAm
-EPDKjvbdXrlAmTnx
-EPCjjvbdZtJJZETO
-DnbjjvbdieLGtoAO
-DnbkKvbdnCJvxPOV
-EPDKjvbdjKFgjNYS
-DoCkKvbdlhcspuRa
-EPDKjvbdbAvEfQPw
-EOcLKvbdiGjDYuiu
-DncKjvbdnQZxvLZC
-DoDLKvbdaogHDkzd
-DnbjjvbdMfcQMouL
-DncKjvbdKaKgMbYR
-DncKjvbdrbGNMHKy
-DoCkKvbddoFSjtUS
-EPDLKvbdNddTiIjd
-EPDKjvbdhgKDZViu
-EPDLKvbdkMbLzEfo
-DoDKjvbdjmCMZdfo
-DoDKjvbdSCDeLhyL
-DoCkKvbdQwODcMID
-DnbkKvbdgGLymgHA
-EPDKjvbdWIYVwfxz
-DnbkKvbdZLqdUNkm
-DoCkKvbdYlSETmkm
-DnbkKvbdLqvlyuQz
-DnbkKvbdZRMdiMdq
-EOcLKvbddePSCXCj
-EPDLKvbdRacdkiYk
-DnbjjvbdZisIQGbG
-EObjjvbdrpVnibvG
-DncLKvbdIxUCHlRQ
-EPCkKvbdhuZeXRtb
-DnbjjvbdQwODblID
-DoDKjvbdezuyEhsw
-DncKjvbdiLddNtcZ
-EPCkKvbdiLeENtby
-DnbjjvbdxKvcgzzG
-EPDLKvbdRXNdClID
-DncLKvbdEKHjVwjA
-EOcLKvbdzoPqFCkx
-DoDLKvbdliEURUqa
-DoCjjvbdyOTIYTJD
-DncLKvbdIHGyyXwg
-EPCjjvbdShyjRABM
-DoCkKvbdnPyyWLYb
-EObjjvbdsPvPJcVf
-EPDKjvbdTXjlNzjx
-DoDKjvbddneTLUUS
-EOcKjvbdmuUyjiqf
-DncKjvbdZoOIddzK
-DoCjjvbdpyOhGqEY
-DoCkKvbdwjwDgzyf
-DnbkKvbdxZgeexEr
-EOcLKvbdHDjvKCKK
-DoCkKvbdpxnhHQdY
-DoDLKvbdLrWlzUpz
-EPDKjvbdatbHXkTh
-DoDLKvbdZyDinDLr
-EPCjjvbdGGJqnJTq
-DoDKjvbddneTLTsr
-DncLKvbdyzdmqhJI
-EObkKvbdRjxfVGkT
-EPDKjvbdOAJTTirA
-EPCjjvbdZoNiFEzK
-DnbjjvbdOhAXyAYa
-DnbjjvbdACqwizIp
-DoDLKvbdcImJjevx
-EPDLKvbdxmrhYTIc
-DoDLKvbdjcLkRGuH
-EPCkKvbdxVNEpxlO
-EPCkKvbdKCibqJbx
-DoCkKvbdjJfIKMxS
-DoDLKvbdVYhUZjoO
-EPDLKvbdrJAKEmPF
-EOcLKvbdRDbaQRDr
-DoCkKvbduWOXiqTA
-DoCjjvbdZyDjNcLr
-EObjjvbdbBWEeoow
-EPDLKvbdUQpnttgm
-EOcKjvbdlBNOmALA
-DnbjjvbdSPsfiecw
-DnbjjvbdwzIGGYFS
-EOcKjvbdLGFgaaRV
-EOcKjvbdrXQLcJYq
-DnbkKvbdmbKXYPOV
-DoCkKvbdZisHogCG
-EPCkKvbdFVyPpMjF
-EOcKjvbdYkrDsmkm
-DoDKjvbdxUmEqYlO
-EPDKjvbdKNAEZgUa
-DoDLKvbdqZPIGpcx
-DoCjjvbdMgComPtk
-EObjjvbdUyHszKoO
-DoCkKvbdeEnqavcK
-EPDKjvbdqYoIGqEY
-DoDLKvbdCDoaWJmG
-EPDLKvbdlZSrTZHU
-EPCkKvbdZxcinDMS
-DoCkKvbdgFkzNfgA
-EOcKjvbdYNqAXtvU
-EObjjvbdwygefYEr
-EPCkKvbdbBVdfQQX
-DnbkKvbdqrVLOLAm
-EOcKjvbdFjeTDINV
-DnbjjvbdnHFYMnGy
-EPCjjvbdrbFllHKy
-EPCjjvbdZLrDtOMN
-EPDLKvbdcJNKKfWx
-DoCjjvbdraemMHLZ
-DoDKjvbdeJjSWUzn
-EPCkKvbdZnmiEdyj
-DnbjjvbdwtleQxlO
-DnbkKvbdDwwlUTtM
-DoDKjvbdrWpMDJZR
-EOcKjvbdegkVrORH
-EPCkKvbdiCOcFWqR
-DnbkKvbdBsBDTevr
-DoCjjvbdjcLjpfuH
-DnbjjvbdZxdKODLr
-DoCjjvbdqceIpOVa
-DoDLKvbdVvhxVceH
-EObkKvbdsrqryZdc
-DnbkKvbdMSWlytpz
-DoDLKvbdqTsfqrKt
-EPCjjvbdjKGIKNYS
-EOcLKvbdiGibxvKV
-EPCjjvbdKDKCpibx
-EPDKjvbdQdDBPqDr
-DncKjvbdozmdLYPA
-DoCkKvbdTvLojUAq
-DnbkKvbdbhmKLFwY
-EPDKjvbdCIjbLIej
-DncKjvbdkHfkeenL
-DoDKjvbdtAGqIABS
-EPCjjvbdRosfjFdX
-EOcKjvbdraemLgLZ
-DnbkKvbdxmrgxTIc
-DoCkKvbdOAJStJrA
-EPCjjvbdqYngfpdY
-EPDLKvbdBvzdJEov
-DoDKjvbdrDeIpOWB
-EObjjvbdqUTfrSKt
-EOcKjvbdxnShXsIc
-DoDKjvbdEzsqFLcJ
-EObjjvbdDxYMUUUM
-EOcKjvbdjKFhKNYS
-EOcKjvbdjgflGFmk
-DoCkKvbdGGKRnItR
-EPCkKvbdREDApRDr
-EOcLKvbdNQYRWOHT
-EPCjjvbdxmrgwriD
-DncLKvbdbsCjsdJa
-EOcKjvbdypoNIiwA
-DncKjvbdZoOJFEyj
-DoCjjvbdrbGMkgKy
-EPDKjvbdyTNiNSBg
-DoCjjvbdczZPwyQb
-DoDKjvbdWfZZtAOs
-EPDKjvbdznoqFClY
-DncKjvbdTlVoBVoJ
-EPCkKvbdIxUBhMRQ
-DoCkKvbdZQmEiNEq
-DoDKjvbdnVUykKRf
-DnbjjvbdUtMtFlWK
-EObjjvbdOTUVfeUp
-DoCjjvbdZMSEUOMN
-DoCjjvbdwjwDgzzG
-DoDKjvbdYqNEiNFR
-DoDLKvbdqiAKEmOe
-EPDLKvbdfNGXHNJk
-DnbjjvbdCEQBVjMf
-EObkKvbdqUUGrRjt
-DnbkKvbdjmCLyeHP
-DnbjjvbdcJMikFwY
-EPCjjvbdjuwNdBxX
-DoCkKvbdeqaWzkbo
-DncKjvbdTkvOaVoJ
-DoDKjvbdZoOIeEzK
-DoDLKvbdKDKDRKDY
-DncLKvbdqwQMDJYq
-EObkKvbdKeegbBRV
-EPDKjvbdegjuqnRH
-DoDKjvbdxwhjBpZk
-EObjjvbdziuQPdSt
-EPCjjvbdZyEKOCkr
-EPCjjvbdRWmdCkhD
-EOcLKvbdQcbaQRES
-DncLKvbdIrxaTNYM
-DnbjjvbdGFiqmiTq
-DoCjjvbdZeXfzghb
-DoCjjvbdSLZFuGkT
-EPDKjvbdIryBSmYM
-EOcLKvbdRyjHsCvA
-EPDKjvbdzoPqFCkx
-EPDLKvbdFeirOIsq
-EObkKvbdLiBkpxAS
-DoCjjvbdmuUyjirG
-EOcKjvbdpfDeTuaI
-DncLKvbdtSqsYyeD
-EOcLKvbdAMhYrwZx
-EOcKjvbdJSyAsNYM
-DncLKvbddneTLTsr
-EPDLKvbdANIYsWyx
-EObkKvbdRXODblHc
-DoCkKvbdYzcGRjWZ
-DoDLKvbdkHgLfFnL
-DoCkKvbdpyPIGqDx
-EObkKvbdwuNEpxkn
-DoDLKvbdJSxaTNYM
-DoDLKvbdRNXbZOUz
-DnbjjvbdNHDPlpUk
-EObjjvbdKQzFPFnF
-EOcKjvbdwkWdHzzG
-EObkKvbdiCPCdvpq
-EPCkKvbdwzHfFwdr
-DoDLKvbdwuMeQxkn
-DoDLKvbdmoyxujyC
-DncLKvbdyYJKBoyk
-EOcKjvbdhgJbxujV
-EOcKjvbdvAcySndh
-EPCjjvbdOYPVzcmt
-DncKjvbderBWzlCo
-DncLKvbdEuxoolie
-DoDLKvbdUsmTelVj
-DoCkKvbdcImKKfXY
-EPCkKvbdKDJcRJcY
-DoDLKvbdfILWSOQg
-DoDLKvbdtcDVWuno
-DoDKjvbdegjvSNpg
-DncKjvbdjvXOEBxX
-DncKjvbdvOszpjoU
-EOcLKvbdkIGkfFnL
-EPDKjvbdZxcinCkr
-EOcKjvbdNxPVzcnU
-DnbkKvbdNrsvHEtp
-DnbjjvbdwygefXeS
-EObkKvbdnHEwmOGy
-EObkKvbdZRNFIleR
-DoCjjvbdNHColotk
-EPDKjvbdTkuoBVni
-EObkKvbdkHgLfGNk
-DoCkKvbdVvhxWEEg
-EOcLKvbdtbcVWvOo
-DoDKjvbdULvOaWOi
-EObkKvbdNdcsiJLE
-DoDLKvbdOYPVzdNt
-DoCkKvbdNeDsiJLE
-EOcLKvbdXGYytAOs
-EOcKjvbdcIljLGWx
-DoDKjvbdIMBzmwQk
-EPDKjvbdbrcKscjB
-DoCjjvbdqdEhpOWB
-DnbjjvbdzoPqFClY
-DnbjjvbdKDKCqJcY
-EPDLKvbdZRNEhldq
-DncLKvbddZyQXyRC
-DncLKvbdRzKHrcWA
-EObkKvbdTAFIgbPE
-EObjjvbdwtmFRYkn
-DoDLKvbdCTAbtFwS
-EObjjvbdJzpFwdAN
-DoCjjvbdCTAbsevr
-EObjjvbdyzdmrIIh
-DnbkKvbdANIZTXZx
-EPCkKvbdVwJXvDeH
-DncKjvbdmfdwlnHZ
-DoCjjvbdZirhPfaf
-EPCkKvbdiHJcYvJu
-DnbjjvbdRMxCYmtz
-EPDLKvbdZHWdAPSi
-DnbjjvbdWSNxBdkc
-DoDKjvbdNxPVzdNt
-EObjjvbddePRawDK
-DncKjvbdaSGCgtGL
-DncKjvbddoFSjstS
-DnbjjvbdOFETiJLE
-DoDLKvbdeAUQmYJf
-EObjjvbdZshiZESn
-EPCjjvbdVwIwvEFH
-DnbkKvbdKDKDQjDY
-EPDLKvbdRbEFMJZL
-DoDKjvbdiZuGLpnG
-DoCjjvbdqGEEtWAh
-DnbjjvbdnBiwYPNu
-DnbjjvbdtlXwBTaX
-DoCjjvbdqYoHfqEY
-EPCkKvbdIsZArmXl
-DoDLKvbdmfeYNNgZ
-DoCkKvbdrafNLgKy
-DnbkKvbdYfwEAOsJ
-DoDLKvbdrEFIonWB
-EPCjjvbdRXODcMID
-EPCjjvbdZisIPfbG
-DncKjvbdoAKzshEO
-EOcLKvbdNQXqVmfs
-DnbkKvbddoEsKssr
-EPDKjvbdNeETiJLE
-EPCkKvbdVgwvXfxz
-EOcKjvbdIsZBTNXl
-EObkKvbdFeirOJUR
-EPCjjvbdVAbRSpqy
-DnbjjvbdeXyssqez
-EPDLKvbdZGwEAOri
-DoCkKvbdVAaqSqRy
-DoDLKvbdiVZeWrVC
-EPDKjvbdGYuUaDwb
-DncLKvbdLrXMyuQz
-EPDKjvbdGZUtaEXb
-EOcLKvbdzoQRFDLx
-EPCkKvbdTAFJICOd
-EPDKjvbdNPxRVmfs
-DoCjjvbdauBfxKsh
-DncLKvbdMIbLpxAS
-DoCkKvbdmgEwmNfy
-DoDLKvbdhanbdvqR
-DoCkKvbdSLYfUfjs
-DoCjjvbdTvMQJsaR
-DnbkKvbdlhcspuRa
-DnbjjvbdJSyBSlxM
-EPCjjvbdSLZFuHLT
-DoCkKvbdYTLaNUPY
-EObjjvbdFeiqnJUR
-EPDKjvbdYlRctNkm
-EOcKjvbdHDjvJaij
-DnbkKvbdnCJvwnnV
-DoCjjvbdNHDPlouL
-DncLKvbdWXIxWDdg
-DoCkKvbdJSyAsMwl
-EObkKvbdxmrhXriD
-DnbkKvbdJzpGYEAN
-EOcLKvbdddnqawDK
-EOcLKvbdhyuFkpnG
-DnbkKvbdtAHQhABS
-DoCjjvbdjhGlFemk
-DncLKvbdjJehJmXr
-EPDLKvbdHffyyXwg
-DoCkKvbdRbEFLiZL
-DoCjjvbddePSBwCj
-EPDKjvbdeOeTKtUS
-DnbjjvbdrDeIomvB
-DnbjjvbdVZIUZjoO
-EPDKjvbdxmsIYTIc
-EPCjjvbdDnbkLXDE
-DnbkKvbdYlSDtNlN
-EObkKvbdeFPSBvbj
-EPCkKvbdkDMKpgUg
-DoCkKvbdbKlGPODA
-EObjjvbdGdLVjCKK
-EPCkKvbdkCkjqGuH
-EOcLKvbdqYngfpcx
-EPDLKvbdeKJqvUzn
-DoCkKvbdkIHMGGOL
-DncKjvbdDoDKkXDE
-EPCkKvbdsCGNMHLZ
-EOcKjvbdyzeNqhJI
-DnbjjvbdqwQLbhxq
-EObjjvbdaaWEepPw
-EObjjvbdDxXktUTl
-DnbjjvbddwzTtRez
-DnbjjvbdKQyeOfNe
-EPDKjvbdbBVdepPw
-DncLKvbdfSAvzkbo
-DoDKjvbdqYoIHQcx
-DoCkKvbdeEnrBwCj
-DncKjvbdehLVqnRH
-EPDLKvbdhfjDYuiu
-EPCkKvbdvmWANEEm
-EPCkKvbdZRNEiNFR
-EOcLKvbdCSaCtGXS
-DoDKjvbdbhljKevx
-DoDKjvbdbBVdepQX
-DncLKvbdqTsfrSKt
-EPDKjvbdjEjgVPAO
-DoCjjvbdFeiqmiTq
-EObjjvbdcImJkGXY
-EObjjvbdJbjCqJcY
-DnbkKvbdjcLjpftg
-EPDLKvbdWXJYWEEg
-DoDKjvbdznpREbkx
-EObjjvbdfILVqmqH
-DnbkKvbdxwiKCQZk
-EPDLKvbdOEdUJIjd
-DnbkKvbdsCFmLgKy
-DncKjvbdijFhKMxS
-EPCjjvbdzitpQDrt
-EPCkKvbdZQleImEq
-DoDKjvbdZxdKNcLr
-DncKjvbdGdLVjCKK
-EOcKjvbdhzUfLpnG
-DncLKvbdwzHfGYEr
-EObjjvbdEObjjvcE
-EOcLKvbdfHkVqmpg
-DnbjjvbdXnRAXuVt
-EOcLKvbdeFOrBwDK
-EPCjjvbdzitoocsU
-EPDKjvbdZxdJmblS
-EObjjvbdFjeScHlu
-DoDKjvbdjhGkfFmk
-EOcLKvbduDDVXWPP
-EPDLKvbdJYUCHkpp
-EPCkKvbdkClKpgVH
-EObkKvbdJcKCqJbx
-DncKjvbdEXwlUTsl
-EObkKvbdxwiJbPzL
-DncLKvbdHDjujCKK
-DnbkKvbdEuyQQMie
-EPCkKvbdUaBpsRSZ
-EPCkKvbddoFTKstS
-EPCjjvbduaEYsOeI
-DoDLKvbdcTDKscjB
-DncLKvbdNdcshiKd
-DnbjjvbdWSOYCEkc
-EOcKjvbdZnmiEdzK
-EPDKjvbdUQpnttgm
-DoCjjvbdnGdwmOGy
-DoCkKvbdZyDjNblS
-EOcKjvbdShyjRAAl
-DncKjvbdTkvOaWPJ
-DoDKjvbdOEcsiJKd
-DncKjvbdbVBfxKtI
-EPCkKvbdrafNLfjy
-DoDKjvbduaEZTOeI
-DncLKvbdGGKSNhtR
-EPCjjvbdnBjWxOmu
-EObkKvbdKefICBRV
-DncKjvbdZoNheFZj
-DnbkKvbdEOcKkWbd
-EPDKjvbdNGcPmQUk
-EObkKvbdaMjbStlg
-DnbkKvbdJYTbIMRQ
-DncLKvbdJXsahLpp
-DncKjvbddeOrBvbj
-DoDLKvbdJSyAsMwl
-EPCkKvbdZdwfzhJC
-DoCjjvbduDDVWuno
-DnbjjvbdEztQdkbi
-EOcLKvbdUyHsykOn
-EObjjvbdDjHivYKA
-DoDLKvbdnUtzLKSG
-DncLKvbdSLZFuGkT
-DoDKjvbdlYrrTZGt
-EOcLKvbdqUUGqrKt
-EPDLKvbdEPCjjvcE
-EPDKjvbddxZtTrFz
-EObkKvbdlYrqrxgU
-DoCjjvbdauCGwjtI
-DnbjjvbdQZNAHTRj
-DoDKjvbdMoxRVmfs
-DncLKvbdOTTvGeUp
-DncKjvbdcJNKKewY
-DoDKjvbdmuVZjjSG
-EPDKjvbdUWLpKUAq
-EOcLKvbdSLZGVGjs
-EObjjvbdCIjakJGK
-EPDLKvbdZnmhddyj
-EOcKjvbdLBKgMaxR
-EOcLKvbdDjHjVwjA
-DnbkKvbdYlRcsnLm
-DoCjjvbdrRuKnKaN
-EPCkKvbdptUHSSLU
-DncLKvbdYpmEiNFR
-EObkKvbdMIalQxAS
-DnbjjvbdJuteceHJ
-DncLKvbdFWYpPlie
-EPCkKvbdmgFYMmgZ
-DoCjjvbdmbJvxOnV
-DncKjvbdIGfzZYXg
-EPDLKvbdqTtGqrLU
-EPCjjvbdWRmwbElD
-EPDLKvbdGLErcIMu
-EPDLKvbdwygefYEr
-EPDKjvbdrSUkOLBN
-DoCkKvbdNQYQumfs
-DoCkKvbdRjyGVGjs
-EPDKjvbdmajXXoOV
-DncKjvbdIGgZxwwg
-DnbkKvbdxwiJapZk
-DoDKjvbdYqMdhleR
-EOcLKvbdZtJIxdSn
-EPDLKvbdTIzKRABM
-EPDKjvbdCEPaWJlf
-EOcLKvbdjgflFfOL
-EPCjjvbdZjShQGbG
-DoDLKvbdHDjvJbKK
-EOcLKvbdBiKbLIfK
-DncLKvbdiHJbxujV
-EObkKvbdKeehBaQu
-EPDLKvbdYSlBMsnx
-EObkKvbdmJDsptrB
-DoDKjvbdTkuoAvPJ
-EPDKjvbdZyEJnDLr
-EPCkKvbdZoNhddyj
-EPDKjvbdVZHsykOn
-DnbkKvbdjJegjNYS
-DoDLKvbdtcCtwVno
-EOcKjvbdkIHLefOL
-EOcKjvbdYkqdTnLm
-DnbkKvbdiZuGMQmf
-DoCjjvbdZLrDsnLm
-DoCjjvbdDwwktTsl
-EObjjvbdRzKHrbvA
-DoDKjvbdQlwaxnUz
-EObkKvbdyTOImRag
-EPCjjvbdQmYByOUz
-EObjjvbdbrbkUDjB
-DoDLKvbdGYtuAcwb
-DncLKvbdePFSjssr
-DoDKjvbdRbDdlIxk
-DoDKjvbdwzIGGXeS
-EPCjjvbdOTUVgEuQ
-EPCkKvbdemGWfmJk
-EOcLKvbdZQmEhmEq
-DoCjjvbdZRMeJNFR
-DoCjjvbdvBEZSoEh
-DncLKvbdhlFDnVDZ
-DoCjjvbdJJdAKPfd
-EObjjvbdyYJKCQZk
-EObjjvbdRzKITCvA
-EPCjjvbdUMVnaWPJ
-DoCjjvbdNddThhjd
-EOcKjvbdNPwpvOHT
-DnbjjvbdZisHpHCG
-EObkKvbdGLFScINV
-EOcLKvbdbsDLTdJa
-EObjjvbdbhlijfWx
-DoDLKvbdVZHszLPO
-EObjjvbdZnnJFEyj
-DoDKjvbdeOeSkTtS
-DoDLKvbdkCkjpgUg
-EPCjjvbdFejRnJUR
-DoCjjvbdZsiIyDrn
-DoDLKvbdtunYJqTA
-DnbkKvbdoznELXoA
-DoCjjvbdZtIiYcsO
-EOcLKvbdGGKSOJUR
-DoCjjvbdUMWPAuni
-DnbkKvbdEPDKkWbd
-EPCkKvbdUxhTzLPO
-DoDKjvbdGdKvKBij
-DncKjvbdmSZUzSci
-EPCjjvbdZjShQGaf
-DncLKvbdWRmxCElD
-EPDLKvbdqvpMDIyR
-DncKjvbdCJKakIfK
-EPDKjvbdHELWJbKK
-DoDKjvbdjlbLzFGo
-EPCjjvbdTkvPBWOi
-DoCkKvbdJvVGEFGi
-EOcLKvbdUyHszLPO
-EObjjvbdVBBpsQqy
-DnbkKvbdZdxGzhIb
-DnbjjvbdsPvOicVf
-DoDKjvbdtcCtwWPP
-EOcLKvbdwtmFRYkn
-EPDKjvbdegjvSNqH
-DoDKjvbdIxUBglQp
-EOcLKvbdBcpAvKNG
-DnbjjvbdwXMAvAvV
-DnbkKvbddoEsLUUS
-DncKjvbdCIkCKiGK
-DoDKjvbdlZTSTYft
-EPCjjvbddoEsKtTr
-EObjjvbdFfJrOJTq
-EPDLKvbdliDsqVSB
-DncLKvbdbUagXjtI
-EObkKvbdIsYaSlxM
-EPCjjvbdHkaznXRL
-DnbkKvbdxUmFQyMO
-DoCjjvbdWWiXvDdg
-EPCjjvbdSQUHKFcw
-EPDLKvbdjKGIJlwr
-EOcKjvbdXFxytAOs
-DncKjvbdmbKWwoNu
-EObjjvbdiZuFkpmf
-DoCjjvbdFyVVBDwb
-DnbjjvbdeqaWzlDP
-EPCjjvbdRyjHsDWA
-DnbkKvbdqlzJyMHi
-DnbkKvbdZRNFImFR
-DoCkKvbdYfwEAPSi
-DoCjjvbdOAIrsjSA
-EPCkKvbdaNLCTVMg
-DnbjjvbdqceIomvB
-DnbjjvbdsCFlkgLZ
-DoDLKvbdmIdURUqa
-EOcKjvbdZshhxcrn
-DoDKjvbdZjTIPgCG
-DncKjvbdemGWfmJk
-DnbjjvbdACqxKZiQ
-EObkKvbdkVvnEBxX
-DncLKvbdUtNTfMWK
-EPDLKvbduaDxsPFI
-EObkKvbdgQBzvcxI
-EObkKvbdSZihTDWA
-EOcLKvbdqYnggREY
-EPDKjvbdqiAJdmPF
-EOcLKvbdiGjDZVjV
-EOcLKvbdGZVVAdXb
-DoDKjvbdhfjCxuiu
-DnbkKvbduMYXBTaX
-DoCkKvbdjSziTKiz
-DoDKjvbdqlzKZMIJ
-DnbjjvbdkVwOEBxX
-DoCjjvbddtAUASmW
-DoDLKvbdzjVQQESt
-EOcLKvbdkySrSyHU
-DncLKvbdNGbolotk
-DnbjjvbddeOrBwCj
-DoDLKvbdiLdcmuDZ
-DoDKjvbdSPsfjFdX
-DoCkKvbdbUafxKtI
-DnbkKvbdcJNJkFvx
-EObjjvbdFejSNiUR
-EPDKjvbdQmYCYmtz
-DncKjvbdfVzwpJzs
-EPDKjvbdWRmwbEkc
-DncLKvbdFkEsDIMu
-DoCjjvbdQccBPqES
-EObkKvbdKCibpjCx
-EOcKjvbdLBLHNBwq
-DoCkKvbdUMWOaVoJ
-DoCjjvbdrbFmMGjy
-EOcLKvbdJvVFdEgJ
-EPCkKvbdjhHMGFnL
-DncKjvbdNxOuzcmt
-EPDKjvbdEXxLstUM
-DoDKjvbdwygfGXeS
-EObkKvbdyTNiMrBg
-DncKjvbdlZSrSxgU
-EPDKjvbdJXtCHlQp
-EPCkKvbddndsLTsr
-EObjjvbdNdcshhkE
-DncLKvbdSCDeLhyL
-DncLKvbdNsTvHEuQ
-EOcKjvbdACqxKZiQ
-DoCjjvbdptTgRqjt
-EPDKjvbdOEdTiJLE
-DoDKjvbdrpVoKCvG
-DnbjjvbdFjeSbhNV
-EPCjjvbdNGbolouL
-EPDLKvbdrEFIonVa
-DnbkKvbdOFDsiIjd
-DoCkKvbdTqQoUuIN
-EPDKjvbdeOdsKtTr
-DncKjvbdyNrhXsIc
-EPDKjvbdnQZxujyC
-EPCkKvbdYqMdhmFR
-DncLKvbddeOrBvbj
-DoCjjvbdLGFgbApu
-DoCjjvbdemFwHMik
-DoCkKvbdRXOEClHc
-DoCkKvbdZQmEiNFR
-EPCjjvbdEASIlzXX
-DnbkKvbdrWokbiZR
-EObkKvbdHELWKBij
-DnbkKvbdbUagXkUI
-EOcKjvbdbsDLUDia
-EOcLKvbdUWLojUAq
-DnbjjvbdQvmccMID
-DoDKjvbdZxcjODMS
-EPDKjvbdTulPjUBR
-DncLKvbdjSzhsKiz
-EOcKjvbdTAFJICOd
-DnbkKvbdKNADzHVB
-DoCjjvbdliDtRVSB
-EObjjvbdWXIxVceH
-EPCjjvbdfHkWRnQg
-EObkKvbdjAQGaPgK
-EObkKvbdkClLRGuH
-DncLKvbdZnnIdeZj
-EObjjvbdlYsRsYgU
-DoDLKvbdpyPHgQcx
-DnbjjvbdnPyyWKyC
-EObjjvbdQwNcblID
-DnbjjvbdCJKajhfK
-EPDKjvbdiHKCyWKV
-EObjjvbdeEoRavbj
-EOcKjvbdmaivwnnV
-EOcKjvbdwNWANDeN
-EPDKjvbdTAFIhCPE
-DoCjjvbdZQleJMeR
-EPDKjvbdmtuZjiqf
-DnbkKvbdEPCkLXCd
-EObkKvbdqGEEsvBI
-EOcKjvbdmIdTqVSB
-EObjjvbdJTZBSlwl
-EPCjjvbdqlzKZMIJ
-EPDKjvbduCbtwWOo
-EPDLKvbdnPzYukYb
-EPDKjvbdeFPSBvbj
-EPDLKvbdHEKvKCJj
-EPDKjvbdVUNUGLuj
-EOcLKvbdJuuGEEgJ
-EOcKjvbdzQnmJKXA
-EOcLKvbdrbGMkfjy
-DnbjjvbdUsltFkuj
-DnbkKvbdDxYMUUUM
-DnbjjvbdUQpoUuHm
-EPDKjvbdRbDdlJZL
-DncLKvbdmgFXlmfy
-EPCjjvbdJbibqJcY
-DoCjjvbdEPDLLWcE
-DoDLKvbdMJCMRYAS
-DoCkKvbdQZNAGsSK
-EObjjvbdiCPDFXQq
-EOcLKvbdVwJXvEEg
-DoDLKvbdsrqsYzFD
-DncLKvbdjuvnDbXw
-EPDKjvbdhgKCyWKV
-DoDLKvbdNdctIiKd
-EObkKvbduaEYrneI
-DoCkKvbdNVSrKmAX
-DncKjvbdXnRAXtvU
-DoDKjvbdhkddNtcZ
-DoCkKvbdiBnbdwQq
-DnbkKvbdLBLGlawq
-DoDKjvbdygZMANEw
-DnbkKvbdZsiIxcsO
-EObjjvbdiBoDEwRR
-DoCjjvbdHbLzEzAD
-EPCkKvbdjbkkQgVH
-EOcLKvbdsBemLgLZ
-EOcLKvbdptUGrRkU
-EPCjjvbdznpQdbkx
-DoDKjvbdGYtuAdXb
-EOcKjvbdzjUpQETU
-EOcLKvbdypoNIjXA
-DnbkKvbdSQUHJfDw
-EPCkKvbdbsCjtEKB
-DoDLKvbdajlFoODA
-DoDKjvbdelevfmKL
-DnbkKvbdCTAbsfWr
-DoDKjvbdjhGlGGNk
-DoCkKvbddCTMrATm
-EPDLKvbdaMjbSuMg
-DoCkKvbdKaLHNCYR
-DncLKvbdGGKSNiTq
-DoCjjvbdLZRJrztf
-EPDLKvbdjlakyeGo
-EObkKvbdwuMdpyLn
-DnbkKvbdegjuqnQg
-EPDKjvbdtTSTYydc
-EObkKvbdZyDjOClS
-DnbkKvbdqGEEtWAh
-EOcLKvbdKQydoFnF
-EPDLKvbdqUTgSSKt
-DnbjjvbdMJCMQxAS
-EPCkKvbdiMFDnUby
-EOcKjvbdfpBzwEXh
-DoCkKvbdSBceMIxk
-EObjjvbdfMevgMik
-EPCjjvbdjAQHAofj
-EPCjjvbdZLrETnMN
-EObkKvbdDoDLLXCd
-DncLKvbdSZjHsDWA
-DnbjjvbdOStVgFVQ
-EObkKvbdbhlijfXY
-DnbkKvbdjEjftoAO
-DoCjjvbdeEnrCXDK
-EOcLKvbdZyEKNcMS
-EPDKjvbdWSNwadkc
-EPCjjvbdkDLjqHUg
-DoCkKvbdSCEFLiYk
-DncKjvbdtkwwBTaX
-EPDKjvbdCTAbsevr
-DncLKvbdmfdwlnGy
-DncLKvbdTukpJtBR
-DoCjjvbdlYrrTZGt
-EOcKjvbdnCKWwoOV
-DncKjvbdMgColpVL
-EPDLKvbddwytURez
-DoCkKvbdakLenmcA
-EPCkKvbdQvmdCkhD
-DncLKvbdEARhlzWw
-EOcLKvbdrXQMDJYq
-EObkKvbdmJETptrB
-EOcKjvbdAMgxsXZx
-EPDKjvbdULvPBVni
-DoDKjvbdqGEFTvAh
-DoDKjvbdGLFTChMu
-DoCjjvbdLBKgNCXq
-DoCjjvbdOEcsiJLE
-EObjjvbdSLZFuHKs
-DoCjjvbdtkxXAsaX
-DnbjjvbdNGbpNQVL
-EOcLKvbdiLeEOUby
-EObjjvbdDoCjjwDE
-EPCkKvbdxrnJMrCH
-EPDKjvbdJTZBTMwl
-DncKjvbdBcpBWJlf
-DncLKvbdGKdsDHmV
-DncLKvbdDwwlUUTl
-EPDLKvbdbQHHELzd
-EPDLKvbdYlSEUOLm
-EObjjvbdhtyeXSUb
-EPCjjvbdACqxKZiQ
-EObjjvbdrDdiPmua
-EPCkKvbdcyxpYYqC
-EPDKjvbdrXQLbiZR
-DncKjvbdjmBlZeHP
-DncKjvbdlYrrTYft
-EObkKvbdaaWFFpPw
-DncKjvbdwyhGFwdr
-EPCkKvbduLxXAtBX
-EObjjvbdhancEvpq
-DncLKvbdbiMjKevx
-DncKjvbdTIyjRABM
-DoCkKvbdcImKLFvx
-DnbkKvbdZjSgpHBf
-EPCkKvbdGdKvJbJj
-EOcLKvbdSCDeMIyL
-EOcKjvbdZxdJnClS
-EOcLKvbdHDkVibJj
-DoDKjvbdezuxeJTw
-EOcKjvbdqFceUVaI
-EPDKjvbdWIYWXfxz
-DoDKjvbdNQXqWOHT
-DnbkKvbdOStWHEtp
-EPDKjvbdLAkGmBxR
-EPDKjvbdDxXksssl
-EPCkKvbdTqRPVUgm
-DoDLKvbdrDdhomvB
-DncLKvbdptUGrSKt
-EOcKjvbdiBnbeWqR
-DoDKjvbdezvYeJUX
-DnbkKvbdOAJStJrA
-DnbjjvbdtcCuWvPP
-DnbjjvbdIjEAKPgE
-EObkKvbdWWiXvEEg
-DnbkKvbdSBdFMJYk
-EOcKjvbdQdCaQQcr
-EPDLKvbdLZRKSzuG
-DoCkKvbdpfEFTuaI
-DnbkKvbdVBBqSqRy
-DncLKvbdMoxRVnGs
-EOcLKvbduoTzqKnt
-DoCjjvbdxxJKCPyk
-DncLKvbdVvhwvEFH
-EPDLKvbdOYPVzcnU
-EOcLKvbdBdPaWJlf
-DnbkKvbdJSyAsMwl
-DoCkKvbdYTLaMsnx
-EOcKjvbdUWLpJsaR
-DoCjjvbdhbOcEwRR
-DncKjvbdKfGHbAqV
-DoCjjvbdlZTSSyGt
-DncLKvbdatbGxLTh
-EPDLKvbdiGicYvKV
-EOcLKvbdTIyjRAAl
-EPDKjvbdZsiIyDsO
-DnbjjvbdZLqcsmlN
-EOcLKvbdeOeTLTtS
-DncKjvbdQdCaPqDr
-EPCjjvbdUGznLvvF
-EObkKvbdrDdhpNvB
-EPDLKvbdRadFLhxk
-DnbjjvbdhytelQmf
-EPDKjvbdFkFSbhNV
-DoDKjvbdaSGDHsek
-EObkKvbdzHYlAMdw
-DnbjjvbdliDsptrB
-EPCkKvbdYlSDtNlN
-DoDKjvbdnPyxujxb
-EObjjvbdRkYfVGjs
-EPCjjvbdRaceMJZL
-EOcLKvbdnUuZkJrG
-DncKjvbdOYOuzdNt
-DoCkKvbdJbjDQicY
-DnbjjvbdRyjHsCvA
-EOcLKvbdUGzmlXVe
-EPCjjvbdMoxRWOGs
-DncKjvbdlrZUzTEJ
-DoCjjvbdJYUBgkpp
-EOcLKvbdACrXizJQ
-EPDKjvbdsCGMkfkZ
-DncKjvbdqYnhGqEY
-DncLKvbdjgflFemk
-DncKjvbdrzMQTAgn
-DoCjjvbdlZTSSxgU
-EPDLKvbdKCibqKCx
-EOcLKvbdmJDtQuSB
-DncLKvbdQcbaPqES
-DoCjjvbdOXoVzdNt
-EObkKvbdbsCjsdKB
-EPDKjvbdySmiMqbH
-DoCjjvbdrMzKZLhJ
-DncKjvbdtAGqIAAr
-EPCjjvbdEXxMTtUM
-EOcKjvbdVrOYBdkc
-DoDKjvbdzROlhiwA
-DncKjvbdqTtHRrLU
-DnbkKvbdiUzEwSUb
-DoCkKvbdZLqcsnMN
-DnbjjvbdUaBqTRRy
-DoDKjvbdRosgKGEX
-EObkKvbdShzKRABM
-DoDLKvbdqZOhHRDx
-EPDLKvbdiUzFWqtb
-DoCkKvbdZyEJmbkr
-DncKjvbdREDBPpdS
-EPCjjvbdMSWmZtpz
-EPDLKvbdTAEiHaoE
-DoDKjvbdNeETiIjd
-EOcLKvbdqdFJPmua
-DoCkKvbdRpTfjFcw
-DncLKvbdznoqEcMY
-DoCkKvbdFfJqmiUR
-EOcLKvbdSPsfifEX
-DnbjjvbdtunYJpsA
-EPDKjvbdqcdiQOVa
-DnbkKvbdeXyssrFz
-EPDLKvbdQYmAGrqj
-EObjjvbdegjuqmpg
-EOcLKvbdbLLenmcA
-EOcLKvbdpyPHgREY
-DoDKjvbdZRMdhmEq
-DncLKvbddZxoxZRC
-EOcKjvbdKxpjSztf
-EPDKjvbdKkBHvAJy
-EObkKvbdnBiwYOnV
-EObkKvbdrWolDJYq
-DoCkKvbdZyEJmbkr
-DoDKjvbdkDMLRHUg
-EPCjjvbdQwNccMID
-DncKjvbdSZihSbvA
-DncLKvbdnHFXmNgZ
-DncKjvbdGKeSbhMu
-DncLKvbdULvPAuoJ
-EOcLKvbdYqNFJMeR
-DoDLKvbdMfcPmQVL
-EPDKjvbdFpATWgGZ
-EObjjvbdeqaWzkbo
-EOcKjvbdZoNhddzK
-EObjjvbdFeiqmiTq
-DoDKjvbdauBfwjsh
-EOcLKvbdBraDUFvr
-DoDLKvbdyYIjCPzL
-DnbjjvbdmRxuZsEJ
-EObjjvbdMfcQMpUk
-EOcKjvbdyNsIXrhc
-EPDKjvbdREDBPpcr
-EPCjjvbdRkYeuGkT
-EPCkKvbdtAHRIAAr
-DnbkKvbdxUmFQxkn
-EObkKvbdtTSTZZdc
-EOcKjvbdmIdUQtqa
-EOcKjvbdXrkaNUPY
-DoDKjvbdCWzdIePv
-DoDKjvbdbBVdfQPw
-EPCjjvbdZyEJmblS
-DncKjvbdlZTRrxft
-EPDLKvbdIxUCIMQp
-DnbjjvbdKyRKSztf
-EOcKjvbdNeEUIhjd
-EOcLKvbdjKGIJmXr
-DoDLKvbdCEPaVimG
-EPCkKvbdOFDsiIkE
-EOcLKvbdehKvSORH
-DoDKjvbdwWkaWAuu
-EPDKjvbdpxoHfpcx
-EPDKjvbdJbjCqJbx
-DncKjvbdZtJJZETO
-EPDLKvbdsZkpTBHn
-EPCkKvbdTlWPAuoJ
-DoCjjvbdjggMFfOL
-DoDKjvbdfMewGlik
-EPDLKvbdnBivwoOV
-DoCjjvbdwuNEpxkn
-DnbkKvbdiifIKNYS
-EOcKjvbdKVuFdFGi
-EPCjjvbdZdxGzgiC
-EOcLKvbduaDxsPEh
-EPCkKvbdRotHJfEX
-DncLKvbdCIjajhej
-DoCkKvbdcImJjfWx
-EOcLKvbdKVtecdgJ
-DoCjjvbdeFOrBwCj
-EPDKjvbdqvpLcIxq
-EObjjvbdEARiMyvw
-DncKjvbdbUafxLTh
-DncLKvbdLAkGmCYR
-DoDKjvbdxVMdqYkn
-EPDKjvbdWWiYWDdg
-EObkKvbdKDJbpjCx
-DoCkKvbdnPyxvKyC
-DoCkKvbdZsiJYcsO
-EObkKvbdJpzFOeme
-EOcLKvbdOSsufeUp
-DoDLKvbdTfznMWvF
-EPDLKvbdfNFwGlik
-EPDLKvbdCDpAuilf
-EPDKjvbdbiMikGWx
-DoCkKvbdrbGMkfjy
-DoCjjvbdWIXuxHYz
-EPDKjvbdGFiqnIsq
-EPDLKvbdNGbpMpVL
-EOcLKvbdtSrTYyeD
-DoDKjvbdjJfHjNXr
-EPCkKvbdzitpPcrt
-DoDLKvbdxmrgxSiD
-EPDLKvbdcJNKLFvx
-EPDLKvbdsrrSxydc
-DnbkKvbdqceIonWB
-EPCkKvbdZnnIddzK
-DoCjjvbdLYpirztf
-EPCjjvbdLrWlzUpz
-DnbjjvbdRkZGVGjs
-EObjjvbdnBivxOmu
-DoCjjvbdmIdUQuSB
-EObkKvbdtcCtvuoP
-DnbjjvbdANIYrvzY
-DncKjvbdmaivwoNu
-EOcLKvbdrouoJcWG
-DoDLKvbdTppoVVIN
-DoDLKvbdVUMtFkuj
-DncLKvbdznpQdblY
-DncKjvbdEPCkLXDE
-EOcLKvbdfHkVqmqH
-EPDKjvbdapGgDkzd
-EPCjjvbdSPsfifDw
-DoDLKvbdGKeTDINV
-EObjjvbdyqPNIjXA
-EPCjjvbdatbGwkUI
-DoCjjvbdCTAcTewS
-DnbjjvbdxnTIXsJD
-EOcKjvbdbKlFnnDA
-DncKjvbdjJegjNXr
-EObjjvbdMuTRkNAX
-EObkKvbdUxgsykOn
-DoCkKvbdRaceMIxk
-EPDLKvbdJbibpibx
-DoDKjvbdEztQdlCi
-EPDKjvbdcyyPwyRC
-DncKjvbdjlbMZdfo
-EPCkKvbdRXNdClID
-DncLKvbdtbbuXVoP
-DoDKjvbdieLHVPAO
-DoDKjvbdFVxopMie
-EObjjvbdzoPpdblY
-EPCjjvbdmIdUQuSB
-EPCkKvbdYkrEUNkm
-DoCkKvbdVwIxVdEg
-DoCjjvbdOSsvGdtp
-EPCjjvbdmSYtysDi
-EObkKvbdWWiYVceH
-DoDKjvbdrNZixkgi
-EPDKjvbdbVCHYKsh
-DnbkKvbdjKFgimXr
-EPDKjvbdNsUWHFUp
-EObkKvbdeAUQlwjG
-EOcKjvbdTAEiICPE
-DoCkKvbdZLqdUNkm
-EOcKjvbdZisHogCG
-EPCkKvbdKVtfEEgJ
-EObjjvbdaSGDIUGL
-EPDKjvbdZRNFIleR
-DoDKjvbdyXiJaoyk
-EObkKvbdRkYfVHKs
-DnbkKvbdLAkHNCXq
-DncKjvbdJpyePFnF
-EPCkKvbdkHgMFenL
-DoDLKvbdOFDtIhkE
-DoCkKvbdtTSTZZdc
-EOcLKvbdkClKpfuH
-DoCjjvbdBcpBVjNG
-DnbkKvbdfMfXHNJk
-DoDKjvbdBsBCtFvr
-DoCjjvbdHgGzYwwg
-DncLKvbdSwjkmzkY
-DoCkKvbdDihJuwjA
-EPDKjvbdQccBPpdS
-EPDKjvbdehLVqnQg
-DoCjjvbdmozZVkZC
-DoDLKvbdaNKasVNH
-EObkKvbdrRtkOLBN
-DoDKjvbdehLWRnRH
-EObkKvbdSCEEkiYk
-DoCjjvbdRXOEDMID
-EOcKjvbdFejRmiUR
-EOcLKvbdFkEsChNV
-DncKjvbdWWhwuceH
-EPCkKvbdNwoVzdOU
-EOcKjvbdePFSkUTr
-DoDKjvbdMRwMzUpz
-EObjjvbdLrXMzUpz
-EPDKjvbdZxdJnDLr
-EOcLKvbdrRtkNjaN
-EPCkKvbdTvLoitBR
-DncKjvbdKeehCApu
-EPDLKvbdemFvfljL
-DncLKvbdeFOqawCj
-DoDKjvbdZyEJnCkr
-DoCjjvbdlZTRsZHU
-DnbkKvbdRbDdlJZL
-DnbjjvbdYqMdiNFR
-EObjjvbdSQTfjFdX
-DoCjjvbdgFlZnGgA
-DoDLKvbdwtldqYkn
-EObkKvbdjggLfFmk
-DncLKvbdMgCpNPtk
-DncKjvbdmpZyWKxb
-EPDKjvbdVqnYBeMD
-DoDKjvbdULuoBWOi
-DncLKvbdezvZEiTw
-EPCkKvbdjblLRHUg
-EPCjjvbdBiKakJGK
-DncKjvbdTukpJtAq
-DoCkKvbdkWWnEBxX
-EPCjjvbdnPzYvLZC
-EOcLKvbdWHxVxGxz
-DncLKvbdNsUWHEtp
-EObkKvbdHDkWKBij
-EObkKvbdVAbQsQrZ
-DnbkKvbdKCibqKDY
-EObjjvbdLYqKSztf
-DoCkKvbdZLrDtOMN
-EOcKjvbdemFvgNJk
-DncLKvbdiCOcEvpq
-DnbkKvbdEXxLtTtM
-EObkKvbdFjdrbglu
-EObkKvbdmttykJrG
-DoCjjvbdePFTLUTr
-DoCkKvbdWRmwadlD
-DoDLKvbdVqmxCElD
-EPCkKvbdnBiwXoOV
-DnbjjvbdEvZQPmKF
-EObkKvbdSKyGVGkT
-EPCjjvbdauBgXkTh
-EPCjjvbdVrNxBeLc
-EObjjvbdOEcshiLE
-DoDLKvbdbLMGPNcA
-DnbkKvbddZxpYYqC
-DoCkKvbdlZTSTZHU
-EObkKvbdtlXwBTaX
-EObkKvbdHffyxwxH
-EPDKjvbdrpWOicVf
-DncKjvbdkVvmdBww
-EPDKjvbduaDySoFI
-EObkKvbdsZkosBHn
-DoDLKvbdTAFJICOd
-DnbjjvbdpstHRrLU
-DncKjvbdUQqOtuIN
-EPDKjvbdVUMtFlWK
-DoDLKvbdrouoKDVf
-DoCjjvbdmRyUysDi
-EPDKjvbdgFkzNgHA
-DnbjjvbdZshiZDsO
-DnbjjvbdIMBzmwRL
-EObjjvbdZshhxdTO
-EOcLKvbdZGwEAOri
-EPCkKvbdkHflFfOL
-DoCkKvbdKDJcQibx
-EOcLKvbdFkEsCgmV
-EPCjjvbdJutfEEgJ
-DoCkKvbdOXnuzdNt
-EPDLKvbduLwwAtAw
-DoDKjvbdqvpLbiZR
-EPCjjvbdGYuVBEXb
-EOcLKvbdCJKajhfK
-DnbjjvbdkMbLyeGo
-EPCkKvbdijGIKMwr
-DoDLKvbdJzpGXdAN
-DoDKjvbdNwnuzdOU
-EOcLKvbdtSqsYyeD
-EOcLKvbdmRxuZrdJ
-EPDKjvbdhlEcmtcZ
-DoCkKvbdbiNJjevx
-DoDKjvbdGckVibJj
-DoDLKvbdGLFSbhMu
-EPDKjvbdEObjkWbd
-EObkKvbdBhkBjiGK
-EPDKjvbdtAGqIAAr
-DoCkKvbdWRmwadkc
-EObjjvbdQdDAoqDr
-EOcLKvbdwNWANDeN
-EPCjjvbdMowqVmgT
-EPDLKvbdegkWSNpg
-EPDLKvbdjAQHAogK
-DoDLKvbdvwLaVaWV
-EPCjjvbdLGFgbBQu
-DoCjjvbdxsOJMrCH
-EObkKvbdFkFTChMu
-EObjjvbdbLLenmcA
-EPDLKvbdiCObeXRR
-EPCjjvbdhbObdvpq
-EObkKvbdVZIUZkOn
-EPDLKvbdfVzxPizs
-EPDKjvbdnPyyVjyC
-DncLKvbdRzKITCvA
-EOcLKvbdUtMsfLuj
-DncKjvbdVBBpsRRy
-DnbkKvbdzeZnzdzQ
-EOcLKvbdUtNTfMVj
-EObjjvbdqcdiQOWB
-DoCkKvbdNddTiIjd
-DncLKvbdrykosBHn
-EPDKjvbdWRnYBeLc
-DncLKvbdrXQLcIxq
-EPCkKvbdUWLpKTaR
-DoCkKvbdZRNFJMeR
-EPDLKvbdunszpjoU
-DoDKjvbdzitpPdSt
-EObkKvbdvBDxrneI
-DoDLKvbdVviXvDeH
-EPCkKvbdDihJuxKA
-EPCkKvbdNPxQunGs
-DoCjjvbdmuUzKjRf
-DnbkKvbdbPffdLzd
-DoDLKvbdXrlBNTnx
-DoDKjvbdZQmEhmFR
-EObjjvbdmttzLKRf
-DoCkKvbddijRvUzn
-EPDLKvbdHffyyYXg
-EPCkKvbdcTDKtEJa
-EPCkKvbdpecdtWAh
-DncKjvbdRjxeuGkT
-EPCjjvbdqdEhpOVa
-EPCjjvbdelfXGmJk
-EObkKvbdWWhwudFH
-EPDKjvbdhbObeXQq
-DoCkKvbdffLynHHA
-DnbjjvbdpaJFAXIE
-DoDKjvbdqZPIGpcx
-DoDLKvbdmaivxPOV
-DncKjvbdqFdEsvAh
-EPCjjvbdrpWOibvG
-EPCkKvbdyfyMAMdw
-DoDLKvbdhuZdvqtb
-DncLKvbdWRnYBeMD
-DncLKvbdDncLKvbd
-EObkKvbdhzUfLpnG
-EOcLKvbddoFSkTtS
-EPDKjvbdbKlFoODA
-DoCkKvbdRWmccLhD
-EObjjvbdeAUQlxJf
-DncLKvbdKVuGEEfi
-EObkKvbdVvhwvEEg
-EPDLKvbdhaoDEvqR
-EPDKjvbdpfEFTvBI
-EPCkKvbdyzeNrIJI
-DoDLKvbdGckViaij
-EObjjvbdnHExNNfy
-EObkKvbdZLqdUOLm
-DoDLKvbdDxXktTsl
-EObkKvbdFVxpPmKF
-DoDKjvbdNdctJJLE
-DnbkKvbdTXkMNzjx
-DncKjvbdbrbkUEKB
-DoCkKvbdGKeSbhNV
-EPDKjvbdYSkaMtOx
-EPCjjvbdiGicYujV
-EObjjvbdnHFXmOGy
-DoDKjvbdZyDjNblS
-EOcLKvbdGYtuBEXb
-DnbjjvbdqGDeUWAh
-DnbkKvbdTppnuVHm
-EOcLKvbdPyNAGsRj
-EPCkKvbdIrxaSlxM
-DncKjvbdCfkfHAzc
-DnbkKvbdIHHZxxXg
-EPCjjvbdjKFhKMxS
-EOcKjvbdehKvRnRH
-EObjjvbdxVMdpyMO
-DnbjjvbdSLYetgKs
-EObkKvbdRjyGUfkT
-DoCjjvbdwyhFeweS
-DncLKvbdrJAKElne
-EPCjjvbdiGjCxvKV
-EPCjjvbdCIjajiFj
-DoDLKvbdunszqLPU
-DnbjjvbdySmhlrCH
-DnbkKvbdnBjWxPNu
-DoDKjvbdlhdTqUrB
-DoCjjvbdGdKvJajK
-EObjjvbdkySqryHU
-EPCjjvbdYkqdTmkm
-EObkKvbdDnbjkXDE
-EPDKjvbdKDKCqKDY
-EOcLKvbdeYZstSFz
-EPDKjvbdZyDjNbkr
-DncLKvbdPyNAGrrK
-DoCkKvbdTlVoAuni
-DncKjvbdEPCkKvbd
-EPCkKvbdcTCkTcjB
-DnbkKvbdcJNKLGXY
-DnbjjvbdRkYfVHKs
-DoDLKvbdaaWEfQQX
-EPDKjvbdmbJvwnmu
-EOcLKvbdZyDimcMS
-DoDLKvbdYkrEUNkm
-DoDKjvbdmaivwnmu
-DoDLKvbdqYoIHQcx
-EPDKjvbdLrWlyuQz
-DncLKvbdkCkkQgVH
-EObjjvbdrXPlChyR
-DoCjjvbdJTYaTMwl
-EPCkKvbdNsTvHFVQ
-DnbjjvbdeEnqavcK
-EPCjjvbdVvhwuceH
-EPCkKvbdbLMFoODA
-EPDLKvbdCIkCLIfK
-DoDLKvbdbLLennDA
-DncLKvbdyNrhYTIc
-EPDLKvbdNHCpNQUk
-DnbkKvbddndsLUTr
-DncKjvbdaogHDkzd
-EPDLKvbdZjSgpGbG
-DnbjjvbdaSGDIUGL
-EPCkKvbdjhGlFfNk
-EPDLKvbdbKkenmcA
-EOcKjvbdIHHZyXxH
-DoCjjvbdiUydwRtb
-EPDLKvbdauBgYKtI
-EPDLKvbdZMSDsmlN
-DoDKjvbddneSjtTr
-EPCjjvbdJbibqJbx
-DnbjjvbdGYtuAcwb
-DoDLKvbdsQVoJbvG
-DoCkKvbdxmrhXsIc
-DoCjjvbdyNsHwsJD
-DoCkKvbdKWVFceGi
-DoDLKvbdsBfNMGkZ
-DnbkKvbdJzoewdAN
-EPDKjvbdwzHefYFS
-DnbjjvbdBiKbKhej
-EOcKjvbdjuvmdCXw
-EOcKjvbdbhmKKevx
-DoCjjvbdehLWRmpg
-EPCjjvbdACrYJzJQ
-EOcKjvbdhuZeXSUb
-DoCkKvbdJcJbqJcY
-EPDKjvbdYqMeJNEq
-DncLKvbdmJDtRUqa
-EPDKjvbdnBjWxOnV
-DoDLKvbdOEctJIkE
-DoCjjvbdDxYLtTtM
-EOcLKvbdZnnJFFZj
-EOcKjvbdKRZeOfNe
-DoCjjvbdTukpJtAq
-DoDKjvbdhyuGLpnG
-DoDKjvbdhtzFWrUb
-DnbkKvbdQccBQRDr
-EPCjjvbdTukojUBR
-EPDKjvbdeKKRvUzn
-EOcLKvbdeXzTtSFz
-DncKjvbdyTOJNSCH
-EObkKvbdjmBkydfo
-EPCjjvbdelevflik
-DoDKjvbdZtJIxcrn
-DoDKjvbdqiAJeNOe
-DoCjjvbdddnqavbj
-DoCjjvbdZLrDtOMN
-EPDKjvbdZyEKNcLr
-EObkKvbdMgDPmQVL
-EPCjjvbdxrmiMrBg
-EObjjvbdZGvdAPSi
-EPCkKvbdvvkaWBWV
-DncKjvbdfMewHNJk
-DoCjjvbdlrYtyrdJ
-DncLKvbdiLeDnVCy
-DnbjjvbdvwLaWBWV
-EOcLKvbdVBCRSprZ
-DoDLKvbdYzbfSKVy
-DnbkKvbdXrlBNUPY
-EObjjvbdKfFhCAqV
-DoCkKvbdVTmTekvK
-EPDLKvbdaSGChTfL
-DncLKvbdauCGwjsh
-EObjjvbdBcpBWJlf
-DnbjjvbdZjTIQHCG
-DoCkKvbdDjHiuxKA
-EObkKvbdZxdKNblS
-DoDLKvbdptTfrRjt
-DoDLKvbdJbjCqKDY
-EOcKjvbdEJhKWYKA
-DnbkKvbdssSSyZeD
-EOcLKvbdZshhyESn
-EPDKjvbdRjxfUgKs
-DncKjvbdwygefYEr
-EPCkKvbdiLeEOVCy
-DnbkKvbdTvLojTaR
-DoCkKvbdzdzOzdyp
-EPDKjvbdVUNUGMWK
-EObjjvbdqdEhonVa
-EPDKjvbdKefHbAqV
-DncKjvbdtSqsYzFD
-DoDLKvbdZjTIPgBf
-EPCkKvbdRjyFuHLT
-EOcKjvbdUtMsfLvK
-DoCjjvbdnHEwlnGy
-DnbjjvbdURQnttgm
-DoCkKvbdFfJrOIsq
-DoDLKvbdjKGIKMwr
-EOcKjvbdTAEiIBnd
-EPDLKvbdFxttaEXb
-DoDKjvbdJTZAsNYM
-EPCkKvbdFejSNhtR
-EPDKjvbdwkXEHzyf
-DnbjjvbdbUafxLTh
-DoCkKvbdZQleJNEq
-EPCjjvbdmpZyVkZC
-DnbjjvbdmJEUQuRa
-EObkKvbdrEFIpNua
-EOcLKvbdJpzEnfNe
-DnbjjvbdyTNiMqag
-EObjjvbdNQYQvOHT
-EPDKjvbdGKdrbgmV
-EOcLKvbdCJKakIej
-DncLKvbdlhcsptrB
-DnbjjvbdZirhPfaf
-DncKjvbdZoNiFFZj
-EOcLKvbdjuwNcaww
-EOcKjvbdUyITzLPO
-DnbjjvbdxVMdpyLn
-EObjjvbdnCJwXnnV
-EPCjjvbdIMBznWqL
-EObkKvbdJpzFOenF
-EObjjvbdlhdTpuRa
-DncLKvbdSCDdkiZL
-EObjjvbdZxcimcMS
-EOcKjvbdxVMdqZLn
-DoCkKvbdrJAKFMne
-EObjjvbdXsMAmUPY
-EObjjvbdeFOqbWbj
-DncKjvbdCTBCsfWr
-DoCjjvbdRyjHsCvA
-EPDKjvbdziuQQDrt
-EOcLKvbdziuPocrt
-EPCkKvbdWWhwvEEg
-EPCkKvbdeEoRavcK
-EPCjjvbdSKyFuGkT
-EPCjjvbdrEFIonWB
-EObjjvbdrEFIpOVa
-DncKjvbdzGyMANEw
-EPDKjvbdrRtjmjaN
-DoCkKvbdJbjDRKDY
-EObkKvbdfNFvgNKL
-DnbkKvbdZHWdAPTJ
-EPCjjvbdCDoaWKMf
-DncLKvbdJKEAKPgE
-DnbjjvbdssSTYydc
-EOcKjvbdIsYaTNYM
-EPCkKvbdgPazvcxI
-DoCjjvbdmozYvLYb
-DnbkKvbdeATqNYKG
-EObjjvbdIwsbIMQp
-EPDLKvbdpssfrSKt
-EPCkKvbdhzUfLpmf
-EOcKjvbdNGcPlpUk
-DncLKvbdhkeEOVDZ
-EPDKjvbdLFfIBaRV
-EPCkKvbdJuuGEFGi
-EOcKjvbdRacdlJYk
-EPCjjvbdmbKWxOmu
-EPDLKvbdwtmFQxkn
-DnbjjvbdgvyAzzAJ
-EPDKjvbdNrsugFVQ
-DncKjvbdmttzLKRf
-DnbkKvbdZyEKNcLr
-EObkKvbdxrmiNRag
-DoDLKvbdiMFDnVCy
-EObjjvbdWSNxBdlD
-DnbkKvbdCTBDUFwS
-DoDKjvbdYTLaMtPY
-EOcLKvbdZtIiZDrn
-EObjjvbdYzcGSJvZ
-EObkKvbdCSaDUFvr
-DoCjjvbdTppnuUgm
-DoCkKvbdOTUVfduQ
-EOcLKvbdfpBzwDwh
-DncKjvbdGBPQyJzm
-EPCjjvbdVZITyjnn
-EObkKvbdVhXuxGxz
-EObjjvbdiifHimXr
-EPDKjvbdvwMAvAvV
-EOcKjvbdkWXODbYX
-DoDKjvbdmbKXXnnV
-DoDLKvbdZsiJZDrn
-DoCkKvbdlrZUzTDi
-DoDKjvbdSQTfjGEX
-EOcKjvbdqcdiPnWB
-EOcLKvbdpssgSSKt
-EPDLKvbdhkeENuCy
-EPDKjvbdZQmEhmEq
-DoDKjvbdZtJIxcrn
-DncLKvbdhgJbxujV
-DoCkKvbdDoDKkXCd
-EObkKvbdZGvdAOsJ
-EObkKvbdwjvdHzyf
-EPCjjvbdUQpoUuHm
-EPDKjvbdUGznMXVe
-DnbjjvbduaEYroFI
-DoDLKvbdehLWRnRH
-DoDLKvbdgQBzwEYI
-EObkKvbdbUagYKsh
-EObjjvbdyqPMhiwA
-EPDKjvbdvvkaWBWV
-DnbkKvbdJTYaTNYM
-DoDKjvbdZtIhxdSn
-EOcLKvbduaEZTOdh
-EObjjvbdkNCMZeGo
-EPCjjvbdZLqdTnLm
-DoCkKvbdUsltFkuj
-DncKjvbdnPyyVkZC
-DoDLKvbdwjvdHzzG
-EPCkKvbdGKdsCgmV
-DnbjjvbdiMFDmtby
-EObjjvbddneSjtUS
-DncLKvbdezvZFJUX
-EPCjjvbdhbOcFWqR
-DoCkKvbdaMjbTVMg
-DoDLKvbdHDjvKCJj
-EOcLKvbdpxoIHRDx
-DoDKjvbdZshhxcrn
-EOcLKvbdcJNKKewY
-EObjjvbdTppntuHm
-EPCjjvbdemGWfmJk
-DoCkKvbdjcLkQftg
-EObkKvbdQwODbkgc
-EPDLKvbdCTAcUFwS
-DnbjjvbdvOszpkPU
-EOcKjvbdkClLRHUg
-EOcLKvbdNHCpMpVL
-EObjjvbdZMRcsnMN
-DoCjjvbdpxnggQcx
-EOcKjvbdyTOJNRbH
-EPDKjvbdeKKRutzn
-DncKjvbdrzLosAgn
-EPDKjvbdYzcGRjWZ
-EPDKjvbdQcbaPpdS
-DnbkKvbdtkxXAsaX
-DncKjvbdCDpAvKMf
-EPDKjvbdHEKvKBjK
-EOcKjvbdfpBzvdYI
-DncLKvbdiifIJmYS
-EPDLKvbddeOqbWbj
-DnbkKvbdZyDinDMS
-DoDLKvbdkNCLydgP
-EOcLKvbddePSCWbj
-DnbkKvbdZxcjNcMS
-DoCjjvbdQwNccMID
-EPDLKvbdiiehKMwr
-EOcLKvbdCTBDUFwS
-EPDLKvbdbLMGOnDA
-EOcLKvbdUMWOaVni
-DnbjjvbdyqPMhjXA
-DncKjvbdCTAbsewS
-DncKjvbdMpYQvOHT
-EPDKjvbdTqRPVVIN
-DoCjjvbdZxdJnClS
-DoCjjvbdWSNwbElD
-DnbkKvbdrWokcIxq
-EObkKvbdWIYWXgYz
-EPDKjvbdzitopDsU
-EObjjvbdUVkojUBR
-EPDLKvbdEObkLXCd
-EOcKjvbdrbFmMHKy
-DnbjjvbdehKuqmpg
-EOcLKvbdZshiYcrn
-DoCjjvbdZnnIdeZj
-EOcLKvbdmttzLKRf
-EObjjvbdGZUuBDwb
-DoCjjvbdHDjvJaij
-DnbjjvbdKQzFPGNe
-DncKjvbdRbDeMJYk
-DoCjjvbdezuyEhsw
-DoDKjvbdwkWdHzzG
-DncKjvbdEASJMyvw
-DncLKvbdyfyMANEw
-EPCjjvbdCSaDTfXS
-EOcKjvbdCJKajiGK
-EObjjvbdrJAKFNOe
-DnbjjvbdFWZPoljF
-DnbjjvbdmpZyVjyC
-EPDKjvbdiifIKNYS
-DncKjvbdGAnqYizm
-EOcKjvbdiMFEOVDZ
-DnbjjvbdJXtBglRQ
-DoCkKvbdijGHilwr
-DoCjjvbdDwxMUUUM
-DoDLKvbdUMWPBVni
-EPCjjvbdDwwksssl
-DnbkKvbdNeDshhkE
-EObkKvbdbAudfQQX
-DnbkKvbdwuMdqZLn
-DnbjjvbdijGHjNXr
-EPCjjvbdOFETiIkE
-DoCjjvbdxsOImSCH
-DoCkKvbdLiBkqYAS
-DncKjvbdFkFTDHmV
-DoCjjvbddoErjstS
-EObjjvbdyOTIXsIc
-DncKjvbdeXzTtSFz
-DoCjjvbdqdFIonWB
-EPDLKvbdMpYRWNgT
-DoDLKvbdfNGXHNJk
-EPCjjvbdePErkTsr
-DoCjjvbdNHCpNQVL
-EObjjvbdsQVnjCuf
-DnbjjvbdtcDUwWPP
-DoCjjvbduaDySndh
-EPDKjvbdqZPIGqDx
-EObjjvbdijFgimYS
-DncKjvbdZyEJmblS
-DoDKjvbdirziSkJz
-DncLKvbdeOeTKtTr
-EOcKjvbdfpBzwEYI
-DnbkKvbdezvZFItX
-EPCjjvbdrRuLOKaN
-DncLKvbdbrbjscjB
-EObkKvbddBrlrAUN
-EPDKjvbdZoOIdeZj
-EOcKjvbdGYuUaEYC
-EPCkKvbdNxPVzdNt
-EOcLKvbdhlFDmuDZ
-DncKjvbdKVtecdgJ
-EPDLKvbdqlzJxkhJ
-EOcKjvbdySmhlqbH
-EPCkKvbdxsNiNRag
-EPDKjvbdTYKkmzjx
-EObkKvbdIryBTMxM
-EPDLKvbdxnShXsIc
-EPCjjvbdaSFbhUGL
-EObjjvbdRDbaQQdS
-EObkKvbdrbFmMGkZ
-EPCkKvbdWXJXudEg
-EOcLKvbdcJNKKfXY
-DncKjvbdEuxpPljF
-DncKjvbddCTNSATm
-EOcLKvbdFVyQPmKF
-EPCkKvbdpeceUWBI
-DoDLKvbdVTmUGMWK
-DoCjjvbdFyVVBEXb
-EOcLKvbdTukpKTaR
-DncLKvbdDHLegAzc
-EPCjjvbddxZtTrFz
-DncKjvbdssRsZZeD
-DoDKjvbdeOeSjstS
-DoDKjvbdQdDApQcr
-DncLKvbdURQoUuIN
-DnbkKvbdezuxdiUX
-EPCjjvbdbPgHDkzd
-EOcKjvbdFWZQQMjF
-DoDKjvbdMfcQMotk
-EPCjjvbdrWokbiYq
-DoDKjvbdnGdwmOGy
-EOcKjvbdnBjXYOmu
-EOcLKvbdDoCjjvbd
-DoDLKvbdsQVoJbuf
-EObkKvbdZirhQHBf
-EPCkKvbdIGgZxwwg
-DncLKvbdrMzKZMIJ
-DnbkKvbdkHflFemk
-EObkKvbdfHkWSORH
-DnbkKvbdwygfGYEr
-EOcKjvbdxmrgxTJD
-DnbjjvbdGdLViaij
-DoDKjvbdmSYtysEJ
-EObkKvbdfILVqmpg
-DncLKvbdADSXizIp
-DoCjjvbdznpQdbkx
-DncLKvbdmbKWxOnV
-EPCkKvbdJvUfEEfi
-EOcLKvbdcScLTdJa
-DnbjjvbdQcbaPpdS
-EPDKjvbdDoDKjvcE
-DncKjvbdhzUfMROG
-DncKjvbdbrcKtDia
-EOcLKvbdJpydoFme
-DnbjjvbdxLWdHzyf
-EPCjjvbdwuMeQyMO
-EOcLKvbdiifHimXr
-EOcLKvbdySmiNSCH
-EPCjjvbdznopeCkx
-EPDLKvbdZshhyESn
-DoDLKvbdrDeJQNvB
-DoDLKvbdILaznXQk
-DoCjjvbdnUtzKiqf
-DnbkKvbdjJehKMwr
-EOcLKvbdDxXlUUUM
-DoCkKvbdtSqsYyeD
-DoDKjvbdxVMeQxlO
-EPDLKvbdZjTHofaf
-EObkKvbdZisHogBf
-DnbkKvbdnBiwXoOV
-DoCkKvbdYSkaMtPY
-DncLKvbdHELVibKK
-EPCkKvbdhlEcnVCy
-EPCkKvbdZLqdTnMN
-DoDKjvbdbsCkUEKB
-EPCkKvbdMpYRVnHT
-EOcLKvbdFWZQPljF
-DoDLKvbdznoqEcLx
-DnbkKvbdcImJjewY
-EPCkKvbdvvlBVaWV
-DoCkKvbdmIdTqUrB
-DncKjvbdxZgeexFS
-EOcLKvbdrouoJbvG
-DoCkKvbdWRnYBdlD
-DoCkKvbdBhjbLJFj
-DnbjjvbdrouoKDWG
-DoDKjvbdUxgsyjnn
-DoDLKvbdakMFnnDA
-EOcLKvbdZtJJYcsO
-DncLKvbdrbFllHKy
-EPCjjvbdmajXXnmu
-DncLKvbdpyPHgQdY
-EObjjvbdyNrgwsJD
-EPCjjvbdaMjaruMg
-DncLKvbdYfwEAPTJ
-DoDKjvbdbiNKLFvx
-DoCjjvbdajkfOnDA
-EObjjvbdZoOJEeZj
-EOcKjvbdqZOhGqEY
-EOcKjvbdziuPodTU
-DoDKjvbduLxWaUBX
-EObkKvbdyXhjBoyk
-DoDKjvbdTkunaWPJ
-EObkKvbdBraCsfXS
-DoDLKvbdTAEiICPE
-DnbkKvbdDjHjVwjA
-EOcKjvbdqlzKZLhJ
-EObkKvbddneTLTsr
-EObkKvbdWRmwaeMD
-DoDLKvbdLBLHNBwq
-DoDLKvbdUxhUZkPO
-DncKjvbdYlSDsmkm
-DoCkKvbdxZhGFwdr
-EObjjvbdbsDKsdJa
-EPCkKvbdGYuVAdYC
-EObkKvbdRXNccLhD
-DnbjjvbdFVxpQMjF
-DoDLKvbdMgDQNPtk
-EObkKvbdQvmccMHc
-DncKjvbdMpXqVnHT
-DoCjjvbddZxoxYqC
-DncKjvbdnVUzKjRf
-DoCjjvbdEuyQPmKF
-DoDKjvbdLYqKSzuG
-EPDLKvbdTAFJICOd
-DoCjjvbdCJLCKiFj
-EOcLKvbdFyVVAcwb
-DoCjjvbdbQHHDkzd
-DoCkKvbdNrsvGduQ
-DnbjjvbdRWmcblID
-DnbkKvbdQvnEDLgc
-DnbjjvbdVZITzKnn
-EPDLKvbdxxJJaoyk
-EObkKvbddoEsLUTr
-DncLKvbdZQldhldq
-DoDLKvbddCSmSAUN
-DoDLKvbdYpldhldq
-DoDLKvbdDxXlUTsl
-EPCkKvbdnGdxMmfy
-DncKjvbdwWlBWAuu
-EOcLKvbdkDMKpgUg
-DoDLKvbdZshiYdSn
-EPDLKvbdhfjCyWKV
-EObjjvbdKRZeOeme
-DoCkKvbdznopdcLx
-EPCkKvbdZMSDsnMN
-DnbkKvbdkWWmcbXw
-EObjjvbdpxoHfqEY
-DnbkKvbdtlYXAsaX
-EPDLKvbdjvXNcaww
-EPDLKvbduDDVXVoP
-DoDKjvbdLGFgbBQu
-EObjjvbdmuUzLKRf
-EObjjvbdRaceMIyL
-EPDLKvbdiHKCyVjV
-DoCkKvbdxnTHwriD
-EOcLKvbdZjTIPgCG
-DncLKvbdBcpBVjNG
-EPDLKvbdVwIxVceH
-DoCkKvbdkIGkeemk
-DnbkKvbdozmdKxPA
-DoDKjvbdjuwNdCXw
-DoCkKvbdeEoSCXCj
-EPCkKvbdcScKtEJa
-EPDLKvbdySnIlrBg
-EPCjjvbdnQZyVkYb
-DoDLKvbdqYnggREY
-EObkKvbdBsBDUGXS
-DnbkKvbdUWLoitAq
-DoCkKvbdIGgZxxYH
-DoDLKvbdvwLaWBVu
-EObjjvbdmfeXlnHZ
-EPDLKvbdRXNdDMID
-EPCjjvbdZLrDsmkm
-EOcKjvbdUQpoUuHm
-DnbkKvbdEzsqFMDJ
-EOcLKvbdQlwayOUz
-EPDKjvbdyzdnRhJI
-DoDLKvbdwzHfGXeS
-EOcKjvbdTvMPitBR
-EOcKjvbdJbicRJcY
-DoDLKvbdFVxpQNJe
-DoDLKvbduLxXBTaX
-DoCjjvbdLYpirzuG
-DnbjjvbdvwMAvBWV
-EPCkKvbdBiKbKiFj
-DncLKvbdIryArmYM
-DncKjvbdySmiNRag
-DncKjvbdeEoRbWbj
-DoDLKvbdjuwOECXw
-EPDLKvbdFWZPomJe
-EObkKvbdjcMLRGtg
-DncLKvbdQwNccMHc
-EPDLKvbdzQoMiJwA
-DoDKjvbdmSYtzSdJ
-EOcLKvbdelfWgMjL
-EOcLKvbdiMFENuCy
-EPCkKvbdezvZEhsw
-EPDLKvbdUVlPisaR
-EPDKjvbdbKlGOmcA
-EObkKvbdzGyMANEw
-DoDKjvbdXFxzUAPT
-EPDLKvbdqrUkNkAm
-EOcKjvbdPxmAGsSK
-EOcLKvbdyfyMAMeX
-EObjjvbduDDUwVoP
-DncLKvbdyYJJbQZk
-DoDLKvbdxVNEqYkn
-EPCjjvbdNPxRWOHT
-EObkKvbdYqNEiNEq
-EPDKjvbdXrlAlsoY
-EPDLKvbdbrcKtEJa
-EObjjvbdGdKvJbJj
-DoCjjvbdrDeJPnVa
-DoDKjvbdZLrETnMN
-DoDKjvbdKVuGDeGi
-DoCkKvbdZtJIyETO
-EObjjvbdYSlAlsoY
-DoDLKvbdCSaDUGWr
-EObjjvbdmfeYNNgZ
-DoDKjvbdtumwiqTA
-DncKjvbdqFdEtWAh
-EPCkKvbdauCHXjtI
-DnbjjvbdvOszqKoU
-EOcKjvbdxrnImSBg
-DoCkKvbdjvWmdBww
-EPCjjvbdmuUzKiqf
-EObjjvbdNdcsiIjd
-EOcLKvbdNPxRVnGs
-EObkKvbdSPsgKFdX
-EPDLKvbdVAbQsQqy
-EPDKjvbdVZHsyjoO
-DncKjvbdJzofXdAN
-EObkKvbdFjeTChNV
-DnbjjvbdjJegjNXr
-DnbkKvbdZLrDsnLm
-DnbjjvbdbAueGQQX
-DncLKvbdQcbaQQdS
-DnbjjvbdFjdrbglu
-DncLKvbdAMgxsWyx
-DnbjjvbdRpUHKGDw
-DncLKvbdMfcPlpVL
-EObjjvbdIwtBhMRQ
-EPCkKvbdelfXGmKL
-DoDLKvbdFkErbhMu
-EPCjjvbdHffyyYXg
-DoDKjvbdOEctJIkE
-DoCkKvbdKkAgvAKZ
-EObjjvbdzitopDsU
-EPCjjvbdRpUHJfEX
-DoCkKvbdZLrDtNkm
-EPCkKvbdijGIKNXr
-DoCjjvbdxUmEpxlO
-DnbjjvbdIxTbIMRQ
-EPCkKvbdMfbpMotk
-DncLKvbdjlbLzFGo
-EObkKvbdrRtkNjaN
-DnbkKvbdRosgKFcw
-EPDLKvbdpfDeUWAh
-DnbkKvbdkxsRryHU
-EPCkKvbdkVvmcbXw
-EOcKjvbdhficZWJu
-EPDKjvbdCEQBWKMf
-DoCjjvbdUyITzKoO
-DnbjjvbdaNKbStmH
-EPDLKvbdFWYpQMie
-EObjjvbdhytekqNf
-EObjjvbdeXyssqez
-DnbkKvbdLAjgNCYR
-DncKjvbdSBdFLiZL
-EPDKjvbdBhkBjiGK
-DoDKjvbdmajWxOmu
-DoCjjvbdrMzJyMHi
-DoDKjvbdZLqctOMN
-EOcKjvbdnPzYujxb
-DncKjvbddoFTKstS
-DncLKvbdjcMLRGuH
-DoCkKvbdbUagYKtI
-DncLKvbdVAaqTRSZ
-EPCjjvbdOEdTiJLE
-EPCjjvbdJvUfEFHJ
-DnbjjvbdIryBTNYM
-EPDKjvbdYpleJNEq
-DncKjvbdZGwEAOri
-DncLKvbdBdQAvJmG
-DoCkKvbdmIdTqUqa
-EPCkKvbdtcCuWuno
-EPCjjvbdmuUyjjSG
-DncLKvbdjAQHApHK
-EPCjjvbdGdKujBjK
-EPDKjvbdYkrETmlN
-DncKjvbdYORAYUut
-DnbkKvbdiHKCxvJu
-EPCjjvbdkHgLfGOL
-DoCjjvbdpssfqqkU
-EPDKjvbdZnmheEzK
-EPDLKvbdySmhlrCH
-EPCkKvbdjJegilxS
-DoCkKvbdqcdhpNua
-EPDKjvbdIHHZyXxH
-DnbjjvbdjmBkydgP
-DoCjjvbdYkqcsnLm
-EPCkKvbdZnmhdeZj
-EPDLKvbdDjIJuwjA
-EOcLKvbdnQZxvKyC
-EPCkKvbdBhkCKiGK
-DnbjjvbdYkrDsnMN
-DncLKvbdyzeNqghh
-DncLKvbdrRuKmjaN
-EPCjjvbdssRsYzEc
-DoDLKvbdZQleJNFR
-EObjjvbdZQleJMeR
-EPDKjvbdtvNxJqTA
-EObjjvbdbBWFGPpX
-EPDLKvbdajkeoODA
-EPDLKvbdSZihTCvA
-EObkKvbdZMRdTnMN
-EPCkKvbdsCFmLgKy
-EObjjvbdVvhxVceH
-EPCkKvbdaaVeFpQX
-DoCjjvbdZQmEhleR
-EOcKjvbdhzUfLpmf
-EPCkKvbdREDBQRDr
-DncLKvbdemFwHNJk
-EOcKjvbdGAnqYizm
-DncLKvbdtTRsZZdc
-DoDLKvbdGGKRmhtR
-DoDLKvbdIidAJogE
-DoCkKvbdxZhGFxEr
-DncLKvbdpxoHgREY
-DnbjjvbdQcbaQRES
-EPDKjvbdjAPfaPgK
-EPCkKvbdvwMAuaWV
-EOcKjvbdZLrDsnMN
-DncKjvbdyqOlhiwA
-EObkKvbdRacdkiYk
-DoDKjvbdUWMQJsaR
-EPDKjvbdUGzmkvvF
-DoCjjvbdhbPDFXRR
-EObjjvbdXGZZtAPT
-EPCjjvbdMoxRWNgT
-EOcKjvbdGFiqmhtR
-DoCkKvbdNPxRWNgT
-EObkKvbdyNrgxTJD
-EPDKjvbdrXPkcJYq
-EOcLKvbdFjeTChMu
-DncKjvbdjvXNcaww
-DncKjvbdkMbMZdgP
-EOcKjvbdDnbkLXDE
-EObjjvbdbBWFGPow
-DoCjjvbdAMhZSwZx
-EPDLKvbdZRNEiMeR
-DoDKjvbdqdEiQNvB
-DoCkKvbddePRavbj
-EPDKjvbdaMjbStlg
-EObkKvbdHgGyxxYH
-EOcKjvbdtkxXBUAw
-DnbjjvbdmSZUysEJ
-EObkKvbdrXQLbhxq
-EObkKvbdVTlsfMWK
-DoDKjvbdSLZGUfjs
-DoCkKvbdFVyPpMjF
-DoCjjvbdhgKCyViu
-EPCkKvbdZMSDtOLm
-EPCjjvbdySmhlqag
-EPDKjvbdWRmwadlD
-EPCjjvbdqZPHfpdY
-DoDLKvbdXsMBMsoY
-DncLKvbdelewHMjL
-EObjjvbdYpleImEq
-DoDKjvbdZirgogBf
-EOcLKvbdrXPlChxq
-EPCkKvbdFVxpQMie
-DoCkKvbdrNZjZMHi
-EOcKjvbdDjIJuxKA
-DncLKvbdeOeSkTsr
-DoCjjvbdZoNhddyj
-DoDKjvbdkWXNcaxX
-DoDLKvbdTpqOtthN
-DnbjjvbdehKuqnQg
-EPCjjvbdmgFXlmfy
-DncLKvbdShyiqAAl
-EOcKjvbdKaKgNBwq
-EPDKjvbdEztREkbi
-EOcKjvbdVviXvEFH
-EPDKjvbdcIlikGWx
-EPCkKvbdUWLojUAq
-EPDLKvbdOStWHEtp
-DoCjjvbdHlBzmwRL
-DnbjjvbdWIYVxHYz
-EPDLKvbdADSXjZhp
-EPDKjvbdRzJgrcWA
-EObkKvbdxrnIlqag
-EObjjvbdRosgKFcw
-DoDKjvbdkySrTYgU
-DncKjvbdsrqrxydc
-EPDLKvbdZyEKODLr
-EPCjjvbdEXxMUUTl
-EOcKjvbdtcCtwWOo
-DncLKvbddndrkTtS
-EPDKjvbdrafMkfjy
-EPCjjvbdJcJbpibx
-EObkKvbdFfJqnIsq
-EPCkKvbdyNsHwriD
-DoCjjvbdaRebgsfL
-DnbjjvbduoTzpjnt
-EPCjjvbdZGvdAOsJ
-DoDKjvbdmozYujyC
-EPDKjvbdZGvdAPSi
-DnbjjvbdmSYtzTDi
-DoCjjvbdRotGjFdX
-EObkKvbdSBceLhxk
-DoCjjvbddijRvUzn
-EObkKvbdMgDQNPtk
-DoCkKvbdFVxoomKF
-DncKjvbdGcjujBjK
-EPDKjvbdBcpAvJlf
-DncLKvbdLBLHNCYR
-EObkKvbdmIctQtrB
-DoDLKvbdFpATXGey
-EPCkKvbdbrbkUDjB
-DncLKvbdcTCjtEJa
-DncLKvbdBsAbsfXS
-EPDKjvbdFpATXGfZ
-DoDKjvbdwuMeQxlO
-EObkKvbdqUUGqrKt
-DncKjvbdZyEKODLr
-EPDKjvbdjhHLefNk
-EPCkKvbdrbFmMGjy
-DoCkKvbdsQWOjCvG
-DoCjjvbdLBLHMbXq
-EObjjvbdrpVnicVf
-EPCjjvbdVqmwaeMD
-DncLKvbdRNYCYnUz
-EObjjvbdRXNdCkhD
-DncKjvbdIHHZyYXg
-DnbjjvbdyTOJMrCH
-DoDLKvbdUsmUFkuj
-DncKjvbdQcbaPqES
-DnbkKvbdmgFYNNgZ
-EOcKjvbdkySrTYgU
-DoCjjvbdHlBzmwQk
-DnbjjvbdaSFcITek
-EObjjvbdQdCaPqDr
-DncKjvbdxVMdpyLn
-EOcKjvbdiMEdOVCy
-DoCjjvbdRosgJecw
-DncLKvbdkDMLQftg
-EPCkKvbdKDKCqKDY
-DoCjjvbdjvWnDaww
-EOcLKvbduVnYJpsA
-DoDLKvbdWRnYBdlD
-DoDKjvbdssSSxzFD
-EPDLKvbdJYTaglRQ
-EOcLKvbdhzUfLpmf
-DoDLKvbdJutfDdgJ
-EOcKjvbdxmrgwrhc
-EObkKvbdwWkaVaVu
-EOcKjvbdxrmiMrBg
-DoDKjvbdRDcApRES
-DoCjjvbddjJrVtzn
-EOcKjvbdxVNEqYlO
-DoCjjvbdJJdAJofd
-DoDLKvbdemGWfmJk
-EOcKjvbdnPyyWKyC
-DoCjjvbdbrcLTcia
-DoDKjvbdjuvmdCXw
-DncLKvbdtkwvaUAw
-EOcKjvbdHDkViaij
-EObkKvbdRDbaPpcr
-EOcLKvbdtSqryZeD
-EOcKjvbdrRuLOKaN
-EOcKjvbdczYowyRC
-DnbkKvbdjcMLQfuH
-DncKjvbdmbJwYOnV
-EPDLKvbdZnmiFEzK
-EPDKjvbdjbkkQgVH
-EObkKvbdJTZArmYM
-DncKjvbdSPsgJfEX
-DncLKvbduMYXBUBX
-EObkKvbdkIHMFfOL
-EOcKjvbdYORAYVWU
-DoCjjvbdyzdmqghh
-DncLKvbdtumwiqTA
-EPDKjvbdQmYCZOUz
-DoCjjvbdtcCtvvPP
-EObjjvbdVTmUGMVj
-EObkKvbdBsAcUGXS
-DoCjjvbdqYngfqDx
-EPCkKvbdtkxXBTaX
-DoDLKvbdACqwiyhp
-DncKjvbdraelkgKy
-EPDKjvbduLwvaUBX
-DncKjvbdpssgSSLU
-EPCjjvbdIxTbHlRQ
-EPDKjvbdPyNAGrqj
-DoDLKvbdnCJvxOnV
-EObkKvbdZRNFJNEq
-DoCjjvbdFxuVBEYC
-EOcKjvbdVAbRSpqy
-DnbjjvbdJbibqKDY
-DoDLKvbdKCicQjCx
-EPCjjvbdNrtVgFUp
-EOcLKvbdZQleJNEq
-DoDLKvbdaRebgsfL
-DoCkKvbdCIjakIej
-EOcLKvbdBraDUGWr
-EPDLKvbdADRxKZiQ
-DoCjjvbdHkazmvpk
-EPDKjvbdUsltGLvK
-EOcKjvbdTkvOaVoJ
-DncLKvbdZnmiEdyj
-DoDKjvbdZtJJYdSn
-DoDLKvbdbiNJjfWx
-DnbjjvbdIsZBTNYM
-EPCkKvbdhbPDEvpq
-DncKjvbdqlyjYlIJ
-DoCkKvbdbsDLTcia
-DoDKjvbdKCjCqKCx
-DoDLKvbdnBiwYOmu
-DnbkKvbdjKGIKMwr
-EPCjjvbdHgGyxxYH
-EOcLKvbdcyxpXxqC
-DncLKvbdlZSrSyGt
-EPCjjvbdTAFIhCPE
-EObkKvbdZdwfzgiC
-DoDLKvbdSLYfUgLT
-DoCjjvbdRMwayNtz
-DnbjjvbdCflGHAzc
-DoCjjvbdrJAKFNOe
-EPCjjvbdjblKpgUg
-EPDLKvbdQccAoqDr
-DnbjjvbdCJKbKhfK
-EPDLKvbdiGibyWJu
-EOcLKvbdyNsHxShc
-EPDLKvbdmIcspuSB
-DnbjjvbdnGdxNOHZ
-DoCkKvbdhzVGMRNf
-DoDLKvbdeFPRawDK
-EObjjvbdsQWOjCvG
-EObkKvbdhzUelQmf
-EObkKvbdeJirWUzn
-DncLKvbdxxIibPzL
-EObkKvbdSBceMIxk
-DoCkKvbdehKvRmqH
-EObjjvbdRbDeLiZL
-EObjjvbdGYtuAdYC
-DnbjjvbdHDkVibKK
-DoCjjvbdKQyeOfNe
-DoCkKvbdmbJvxOmu
-DoCkKvbdULvOaWPJ
-DncLKvbdrWpMCiZR
-EObjjvbdhytfLqNf
-DoCjjvbdgPazvdXh
-DoCjjvbdiHKDYuiu
-EPDKjvbdRWnDbkhD
-DncLKvbdrMzKZLhJ
-EObkKvbdyXhiaoyk
-EPCkKvbdjmCLydfo
-DnbkKvbdDxYMUTsl
-EPDKjvbdxmrgxSiD
-DnbkKvbdmSYtyrci
-EPCjjvbdqvokcIxq
-DoDLKvbdXsMAmUPY
-DncKjvbdDoDKkWcE
-EPCkKvbdMgDPmQUk
-DoDLKvbdKyQirztf
-EPCjjvbdmajWwnmu
-EOcLKvbddCSlrATm
-EPDLKvbdrJAKElne
-DoCkKvbdIsZBTMxM
-DnbkKvbdffMZnGgA
-EOcKjvbdJcKDQjDY
-EObjjvbdxsOJMrCH
-EObkKvbdEKHiuwjA
-DncKjvbdunszpjnt
-DoDLKvbdZjTIQHCG
-DnbjjvbdsQVnibvG
-DnbkKvbdGQATXHGZ
-DnbkKvbdBsBDTfXS
-DoCkKvbdBsAbsevr
-DoCkKvbdRXNdDLhD
-EPCjjvbdRadElJZL
-DnbkKvbdxwhibPzL
-EOcKjvbdCJLBjiFj
-DncLKvbdZMSDsmkm
-DoDKjvbduaEZSoFI
-EPCjjvbdhgJbxujV
-EOcLKvbdCJLBjhfK
-DoCkKvbdZisHpHBf
-DoCkKvbdqFdFUWBI
-EPCkKvbdDGlFgAzc
-DncKjvbdZxcjNblS
-EPDLKvbdLqvmZuQz
-DoDKjvbdxZhGFxFS
-EObkKvbdZdxGzhIb
-DoDLKvbdqwQMChyR
-DoCkKvbdjlalZeGo
-DncKjvbdZRNEhldq
-EPCkKvbdZHXEAPSi
-DoDKjvbdDoDLKwCd
-DnbkKvbdmbJwYPNu
-DncKjvbdMfcPlouL
-DoCkKvbdQwODblHc
-DoCjjvbdNQYQunGs
-DnbjjvbdlqxtzSci
-EOcLKvbdrDdhpNua
-DncLKvbdKefICApu
-EPDKjvbdatagXkUI
-DoCjjvbdaofgDkzd
-EObkKvbdIrxaTMwl
-DncLKvbdSLYfVGkT
-EPCkKvbdelevfmKL
-DncKjvbdFfKSOIsq
-EObjjvbdfILVqnQg
-DncLKvbdZjShPgCG
-DoCjjvbdrNZixlHi
-DnbkKvbddoFTKstS
-EOcKjvbdWSNwbFMD
-EPDLKvbdpxngfqDx
-EOcKjvbdIHGyxxYH
-EOcLKvbdvwMAuaVu
-EOcKjvbdkxrqryGt
-DncLKvbdZjShQHBf
-DnbjjvbdiUzEvquC
-EObkKvbdpxoHfpcx
-DoCkKvbdGAoRZJzm
-EOcKjvbdehLVrOQg
-EPDKjvbdkDMLRGuH
-DnbkKvbdKCjDRKDY
-EPCjjvbdLGFhBaRV
-EPDLKvbdaMjbSuNH
-DncKjvbdWfYzUAOs
-DoCjjvbdsBelkfjy
-DncLKvbdZnmheFZj
-EOcLKvbdatagYLUI
-EObkKvbdWXJXvEEg
-DoDKjvbdZMRdTmlN
-EPCjjvbdWXIwvEEg
-DoCjjvbdkCkjqHUg
-EPCjjvbdijFhJlxS
-EPDKjvbdmSZUysEJ
-DoDKjvbdMgDQMouL
-EPCkKvbdrDdhomvB
-EPCjjvbdRNXbYmtz
-EPCkKvbdUtMtFlWK
-DnbjjvbdGcjvJajK
-EPDKjvbduaDyTOeI
-DncLKvbdziuPocrt
-DoCjjvbdcScKscjB
-DncKjvbdmgExMmfy
-EObjjvbdJcJcQibx
-EPDKjvbdMpXpvNfs
-EObkKvbdyqPNIjXA
-EPCjjvbdCSaDUGWr
-EOcKjvbdZnnJFEyj
-EObkKvbdyOSgwriD
-EPCjjvbdtkwwAtBX
-DnbkKvbdDncLLXDE
-EOcKjvbdZshhxcsO
-DoCjjvbdxVMdpxlO
-DncKjvbdLGGHaaQu
-DoCkKvbdxUmFQyMO
-EPDKjvbdpfEEsvAh
-DoCkKvbdZRMdhldq
-EPDLKvbdYzberJuy
-EObjjvbdfHkWSOQg
-EPDLKvbdRMxByNtz
-DncLKvbdmoyyWLZC
-EObkKvbdhtydvrVC
-DoCkKvbdVhYWYGxz
-EPDKjvbdbVCHXjsh
-EPCkKvbdTlWPBVni
-DncLKvbdFkEsCgmV
-DnbkKvbdIsYaSlxM
-DncKjvbdzaAOffbM
-DncLKvbdaSFcHtGL
-DoDLKvbdiGjDYuiu
-EObjjvbdDigjVwjA
-DncKjvbdqmZixlIJ
-DnbkKvbdRjxfUgLT
-EObkKvbdeAURNYKG
-EPCjjvbdjvWnECXw
-EPCjjvbdNQXqVmgT
-DoDLKvbdxmsHxShc
-EPCkKvbdqwPlChxq
-DnbjjvbduLwwAsaX
-DncKjvbduCbuWuno
-DnbkKvbdJpydnenF
-EPDLKvbdRXOEClID
-DncKjvbdSKyFuGkT
-DncKjvbdczZQYZRC
-EPCkKvbdGZUtaDxC
-EPCjjvbdOAJTUKSA
-DnbkKvbdsZlQSaHn
-DncKjvbduWNwiqTA
-DoDLKvbdRNYCZOUz
-DoCkKvbdVTmTfMVj
-EOcLKvbdeATpmYJf
-DncKjvbdbUbGxKsh
-DnbkKvbdLZRKSztf
-DncKjvbdcJMjLFwY
-DnbkKvbdRadEkhyL
-EPCkKvbdauBgXkTh
-EObkKvbdrJAKFNOe
-EOcKjvbdDnbjkXDE
-DoDKjvbdrafMlGjy
-EOcLKvbdliDtRVRa
-EObjjvbdZjShQHCG
-DnbjjvbdZnmiFEyj
-EPDKjvbdbAueFpQX
-EPCjjvbdVwJYVcdg
-EObkKvbdijGIJmYS
-DoCjjvbdJpyeOenF
-DoDKjvbdYlSDsnMN
-DncLKvbdehLVqmqH
-DnbjjvbdTppnuVHm
-EOcKjvbdSLYetgLT
-EPCkKvbdZyEKOClS
-DoDKjvbdHDjujBij
-EPCkKvbdHkazmvpk
-EObkKvbdkxrrTYft
-EPCjjvbdOTUVfeVQ
-DoCjjvbdYzbfSKWZ
-DncKjvbdkxrrSxgU
-EObjjvbdEOcKkXCd
-EPDKjvbdcTCkTcia
-DoDKjvbdatagXkTh
-DoDLKvbdNHCpMpUk
-DoDKjvbdhtzEvquC
-EPCjjvbddePSBvbj
-DoDLKvbddneTLUUS
-DncLKvbdijFhKMwr
-EPDLKvbdpxoIHRDx
-DncLKvbdqquLOKaN
-EPCkKvbdSCEEkiZL
-DoDLKvbdvAdYroEh
-DncLKvbdDwwksstM
-EOcKjvbdKWVFcdgJ
-EPDKjvbdZnmhdeZj
-DoCjjvbdJSyBTMxM
-DoDLKvbdtcDVXVoP
-EOcLKvbdbAudfPow
-EPCjjvbdpfDdtWAh
-DncKjvbduCcUwWOo
-DnbjjvbdGFirOItR
-DnbjjvbdLBKgNBxR
-DnbjjvbduVnYJpsA
-DnbjjvbdjuvnDbXw
-DoDKjvbdFkFTDINV
-EOcKjvbdEvZQQMie
-DoCkKvbdMfbolpUk
-EPCjjvbdhbPCdwQq
-DoDKjvbdZyEKNblS
-EPCjjvbduCbtwWPP
-DnbjjvbdgLGzbfAE
-EObjjvbdqGDdsvAh
-EPDLKvbdNGbolotk
-DoCkKvbdSPsfifEX
-DncLKvbdbVCGwjsh
-EObkKvbdijGHjMwr
-DnbjjvbdRosfifDw
-DoCjjvbdQccApRDr
-DoDKjvbdqTtHSSKt
-EOcLKvbdsQWPJcVf
-EObkKvbdeOdsLTsr
-DncLKvbdcTDLUDjB
-DoDKjvbdVgwvXfxz
-EOcKjvbduoTzqKnt
-EPCjjvbdYNqAYVWU
-EObjjvbdemGXGmJk
-DoCkKvbdVgxWXfxz
-DoCjjvbdqlzKZLgi
-EPDLKvbdLFfHaaQu
-DnbkKvbdcSbkTcjB
-EObjjvbdgGLzNgHA
-EObjjvbdZjSgpGbG
-DnbjjvbdGckVjBij
-EOcLKvbdUMVnaWOi
-EObkKvbdrylQSaHn
-EPDLKvbdZHWdAOri
-DoDKjvbdyfxlAMdw
-DnbjjvbdZMSDsnLm
-DoDKjvbdOTUVgEtp
-DnbkKvbdJSxaSlwl
-DncKjvbdkNCLzFGo
-DoDKjvbdfMevgMik
-DnbjjvbdMgDPlpVL
-DncKjvbdqquLOLAm
-DoCkKvbdfNFwGlik
-DncLKvbdpxnhHRDx
-DoDLKvbdZMRdTmlN
-EPCkKvbdURRPVVHm
-EPCkKvbdmgEwmOHZ
-EOcLKvbdVAapsRSZ
-DoCjjvbdczZPwxpb
-EPDLKvbdWXIxWDdg
-EPCkKvbdUVlQJtBR
-EOcKjvbdelfWgNJk
-EPDKjvbdUtMtFkuj
-DnbjjvbdRkZFtfjs
-EObkKvbdCJLCLJGK
-DoDLKvbdKVuGEEgJ
-DncKjvbdIxTbHkqQ
-DncLKvbdMSWlzUpz
-EPCkKvbdKefICAqV
-EOcKjvbdtunXjRTA
-DoDLKvbdZMSETmlN
-EObkKvbdapHHELzd
-EObkKvbdmRxtyrdJ
-DoCjjvbdtTSSxzEc
-EObjjvbddeOrBvbj
-DncLKvbdJYUBgkpp
-EPCjjvbduLxXBUAw
-DnbjjvbdSLYetfjs
-DncKjvbdzQnmIiwA
-EPCjjvbdRpUGjFdX
-EOcLKvbdddnqbWcK
-EOcKjvbdWWhwucdg
-EOcLKvbdCWzdJEov
-EPDKjvbdTkuoAuni
-DncLKvbdqUTgSSLU
-DoDLKvbdNHDQMotk
-DncLKvbdWXJXvEEg
-EPCjjvbdaNKaruNH
-EPDLKvbdraelkfjy
-DncLKvbdLqvmZtpz
-DnbjjvbdNddThhkE
-DoDKjvbdzoQQdcLx
-EPDKjvbdYpldiNFR
-EObjjvbdZtJIyDsO
-DoCkKvbdWWiYWDeH
-DoCkKvbdeEoSBwDK
-DoCjjvbdBsAcTevr
-EObjjvbdqvpMChyR
-EPCjjvbdsCGMlHKy
-DnbkKvbduLwwAtAw
-EObkKvbdMRwMyuQz
-DncLKvbdwWlAuaWV
-DncLKvbdHgHZxwxH
-DncKjvbdBsAcTewS
-DoDLKvbdJpyePFme
-DncKjvbdVUNUFlWK
-DncKjvbdEYXktTtM
-DncLKvbdwMvANDeN
-DnbkKvbdtSrTZZeD
-EOcLKvbdJYUBhMRQ
-DncKjvbdlYrrTZGt
-DoDLKvbdliDsqUrB
-EObjjvbdegjuqnQg
-EObjjvbdlZSrTZHU
-DncLKvbdfNGWfljL
-DoDLKvbdLFegbBQu
-DncLKvbdemGXGmKL
-EPDKjvbdDwwksssl
-DnbjjvbdxmsIYTJD
-DoDLKvbdBsBCtGWr
-DoCjjvbdIsYaTNYM
-DncKjvbdJuuGEEgJ
-EObkKvbdkySqsYgU
-DnbkKvbdNPwqWNfs
-EPDLKvbdmIdTptrB
-DoDLKvbdyqOmIjXA
-EPCjjvbdhkeEOUcZ
-DoDKjvbdJqZePFme
-EPDLKvbdfSAvzlCo
-EObjjvbdbhljLFvx
-EOcLKvbdaMkBsUmH
-DoCjjvbdKyRKSzuG
-EObjjvbdcSbjtEJa
-EOcLKvbdkHflGFmk
-DoDLKvbdemFwHMjL
-EObjjvbdSLZGVHLT
-DoCjjvbdJXtCILpp
-EOcLKvbdaaVdfPow
-EOcLKvbdFpATWgGZ
-DoCjjvbdxZgeewdr
-EObkKvbdeEnqawCj
-EObjjvbdhytfMQmf
-DnbjjvbdoznEKxPA
-DnbjjvbdoAKzsgdO
-DoCkKvbdYzbfRivZ
-DoDLKvbdqqtkOKaN
-DncLKvbdqvokcJYq
-EPDKjvbdOStVfeUp
-DoDKjvbdZxcinDLr
-DoCkKvbdcyyQYYqC
-EObkKvbdcIlikGWx
-EOcLKvbdffLzNgHA
-EPCjjvbdMtsRkNAX
-EOcKjvbdpeceTvBI
-EOcKjvbdZsiIxcsO
-DncLKvbdJvVGDdgJ
-DnbkKvbdZMRdTmlN
-EPDLKvbdnCJwXnnV
-EObkKvbdxUldqZLn
-EPCjjvbdNddUJIkE
-DoCjjvbdyYJJapZk
-DnbjjvbdpxoHgQcx
-EObjjvbdHDjvKBij
-DncKjvbdUtNUFlWK
-EPCkKvbdkVvmdBww
-DnbjjvbdgGMZmgHA
-DoDLKvbdmIdTqVSB
-EOcLKvbdzitpPdTU
-DncLKvbdkxrqrxgU
-DoCjjvbdVBBpsRSZ
-EOcLKvbdGFiqmiTq
-EOcKjvbdxsOJMqag
-DoCkKvbdHDkVjCJj
-EPDKjvbdjSziTKiz
-EOcKjvbdCTAbsewS
-EPCkKvbdkWWnDbYX
-DoDLKvbdJSxaTMxM
-DoDLKvbdMoxRWNgT
-DoDLKvbdmuVZkJrG
-EPDKjvbdbUbHXjtI
-DnbjjvbdkWWnEBxX
-EOcLKvbdnPyxukZC
-DnbjjvbdXrlBMtOx
-DoDLKvbdJuuGEFGi
-EPDKjvbdUaBprprZ
-EObjjvbdsrqrxydc
-EObjjvbduCbtwWOo
-DoCkKvbdSLYeuHLT
-DoDKjvbdKQyePFme
-EOcKjvbdeYZssrFz
-DoDKjvbdpxoHfpdY
-EPCkKvbdcIljKfXY
-EPDKjvbdDwwksstM
-DnbkKvbdsQWOicVf
-EPDLKvbdIidAKQHE
-DoDLKvbdrDeJPnWB
-EOcLKvbdZoNiEeZj
-EObjjvbdptTgRrLU
-EPDKjvbdmRyUzTEJ
-DoDLKvbdFxtuBEYC
-DnbkKvbdehLVqmqH
-EPCjjvbdUtNUGLuj
-DoDLKvbdxVNEqZLn
-DncKjvbdySnImRbH
-DoCjjvbdbLMGPNcA
-EPCkKvbdzQoMiKXA
-DnbkKvbdbiMijevx
-EOcKjvbdSQTfiedX
-DnbjjvbdZisIQHBf
-EObkKvbdYpleIldq
-DncLKvbdjmBlZeHP
-DncKjvbdSCDdkhxk
-DnbkKvbdrykpTAgn
-EObkKvbdZQldiMeR
-DnbjjvbdeYZssqez
-EPDLKvbdlYrrSyHU
-EOcLKvbdTpqOttgm
-EOcKjvbdCJLCLIej
-EPDKjvbdUQqOttgm
-EObkKvbdGBOqZJzm
-DncKjvbdqwQMDIyR
-EPDKjvbdbBWFFoow
-EOcLKvbdZMRctOLm
-EPCkKvbdHEKuibKK
-DnbjjvbdNddThiKd
-DncKjvbdJuuFdEgJ
-DncLKvbdRzJgsDWA
-DncLKvbdRWmdCkhD
-EPCjjvbdZRNFImEq
-EOcLKvbdUaBqTRSZ
-EObkKvbdWIXvYGxz
-DoDKjvbdrRuKnKaN
-DoCjjvbdYgXEAPTJ
-DoCkKvbdwuMeQyMO
-EPDLKvbdkHfkfFmk
-DoDKjvbdTqQnuUhN
-DoCkKvbdbKlFoODA
-EObkKvbdrzLoraIO
-DncLKvbdFxuVAdYC
-DoCjjvbdZQldiMeR
-EOcKjvbdJTZBTNXl
-EPDKjvbdsQWPKCvG
-EOcLKvbdeEoRawDK
-EPDLKvbdtTSSxzEc
-DncLKvbdliDsqUqa
-DnbjjvbdZQleImEq
-EPCjjvbdaSGDITek
-DoDLKvbdRWnDbkhD
-EPDLKvbdpedEsvAh
-EPCkKvbdYpldhldq
-DoCjjvbdZoOJEdyj
-EOcLKvbdmoyxvKyC
-EObjjvbdmSZVZsEJ
-DoDLKvbdqUUGrSLU
-EPDLKvbdmpZxujyC
-EPCjjvbdCDpBVilf
-EPCjjvbdFfJrNhsq
-DoDKjvbdsZkosBIO
-DnbjjvbdiBnbdvpq
-DncKjvbdkDMKpftg
-EPCkKvbdatbGxLTh
-DoCjjvbdJTYaTNXl
-DnbjjvbdhkdcnVCy
-DncLKvbdyNrgxTIc
-EPDLKvbdyNsHwriD
-EPDLKvbdBdQBVilf
-DoDLKvbdIsYaTNXl
-DnbkKvbdkxsSTZHU
-EPCjjvbdBsBDUGWr
-EOcLKvbdgQBzwDxI
-DnbjjvbdjblLQfuH
-DnbkKvbdbVBgYKsh
-DncLKvbdMgComPuL
-EPDLKvbdqceIpOVa
-DnbjjvbdqFceTvAh
-EPCjjvbdFWYpQNJe
-DoDLKvbdHDjujBjK
-DncLKvbdIHGyyXxH
-DnbjjvbdeFOqawCj
-DoDKjvbdGQASwGfZ
-DncLKvbdrWokbhyR
-DncKjvbdSKyFtfkT
-DoCkKvbdemFvfmKL
-EPDKjvbdxsNhmRbH
-EOcKjvbdsPunicVf
-EObjjvbdrbGNMGjy
-EPDLKvbdOXoVzcnU
-EOcLKvbddZxpYYpb
-DoDKjvbdVBBpsRRy
-EPDKjvbdHDkWKCKK
-DoCkKvbdSiZjRAAl
-EPDKjvbdURQoVVHm
-DoCkKvbdpyPHgQdY
-EOcKjvbdGAoQxizm
-DnbjjvbdMpXpvNfs
-DncKjvbddndrjtUS
-DnbkKvbdlhcsptqa
-DoCkKvbdfNFvfmKL
-EPCkKvbdHffyxxXg
-DoCkKvbdYpleImFR
-DoCkKvbdbBVdfPpX
-DncLKvbdWSNxBdlD
-EPDKjvbdSQTfjFcw
-EPCjjvbdkxrqsYgU
-EPDKjvbdrovOjCvG
-DoCjjvbdaSGCgsek
-DncLKvbdZGwEAOri
-DoDLKvbdJmADzHUa
-DoCjjvbdNdcshiKd
-DoCkKvbddneTLTtS
-EObkKvbdMoxQumfs
-DncKjvbdVgxVwfxz
-DoDKjvbdGcjuibKK
-EObkKvbdTqQnuUhN
-DncKjvbdURRPUuIN
-EObkKvbdbrbjtEJa
-DnbkKvbdKQyeOenF
-EObjjvbdbKkfOnDA
-EPDLKvbdlhdTptrB
-EObjjvbdxnTHxTJD
-EObjjvbdKCjCpjDY
-DoDLKvbdMSWmZtpz
-DoCkKvbdBsBCsfXS
-DnbkKvbdfRaWzkcP
-EPDKjvbdbAvFGQQX
-DoCjjvbddoFSjtUS
-DnbjjvbdypoNJJwA
-EPDKjvbdzdzOzdyp
-EObjjvbdJpzEoFme
-DoCkKvbduCbuXWPP
-EPCkKvbdFfJrOItR
-DoDLKvbdkIGlFfOL
-DnbjjvbdbAudfPpX
-DoDLKvbdtAHRIABS
-EOcLKvbduDCuWuno
-DoDKjvbdkHgLfGNk
-EOcLKvbdxZhFeweS
-EObkKvbdUxgszKoO
-EOcKjvbdiBoCeXRR
-DnbkKvbdZeXfzhJC
-EObkKvbdtcDUvvPP
-EOcKjvbdMtrrLNAX
-DnbkKvbdWXJYVceH
-DnbkKvbdJbjCpibx
-EPCkKvbdajlFnnDA
-DnbjjvbduaEZTPEh
-EOcKjvbdGcjuibJj
-DncLKvbdKefHbAqV
-DoDKjvbdUxgtZjnn
-EPCjjvbdVZITzKnn
-EPDKjvbdHkaznXRL
-DnbkKvbdOEdTiIkE
-DnbjjvbdiGjDYvJu
-DoDKjvbdnUtykJrG
-EPCkKvbdBdQBWKNG
-EPDKjvbdsBemLfkZ
-EPCjjvbdtumwiqTA
-EOcKjvbdnCKXYPOV
-DncLKvbdVwIxVdFH
-DnbjjvbdWIYWYGxz
-EObkKvbdFpATXHFy
-DoCjjvbdauBgXjtI
-DnbkKvbdTqROuVHm
-DnbjjvbdlhcsqUqa
-EPDLKvbdxZhGGXeS
-DoDLKvbdZjTHogCG
-EOcKjvbdbKlGOnDA
-EObjjvbdLiBlRYAS
-DncKjvbdxrnJMrCH
-EOcLKvbdMJBlRYAS
-EOcKjvbdUsmTekuj
-DnbjjvbdEYYMTssl
-EObkKvbdZMSEUNkm
-DncLKvbdGGKSNhsq
-DoDKjvbdGZVVAdXb
-EPDKjvbdKRZdoFnF
-EOcLKvbdEXwlUTtM
-DoDKjvbdEztQeLcJ
-DoCkKvbdJYUBglQp
-DoCkKvbdJTZAsNXl
-EObjjvbdvmWAMdEm
-EPCjjvbdxZgefYFS
-DncKjvbdtTRrxzEc
-EOcLKvbdiGjDZWJu
-DoCkKvbdYlRctOLm
-DncKjvbdDxXlTtUM
-EPCjjvbdcyxpYYqC
-EOcLKvbdqGDeUWBI
-DnbjjvbdnPyxvLZC
-DoDLKvbdKefHbApu
-DoCkKvbdjblKqHVH
-EObkKvbdTfzmkvue
-EOcKjvbdZnmiEdzK
-EOcKjvbdDxXkstTl
-EPDLKvbdBdQAujMf
-DoDKjvbdGZVVBDwb
-DoDLKvbdEvZPpMie
-EPCjjvbdVwJXuceH
-DoDLKvbdRjyFtgLT
-DoCkKvbdXsLaNTnx
-DnbjjvbdDHLfHAzc
-DoCkKvbdVBCQrprZ
-DoCkKvbdyNsIYShc
-EPDKjvbdyXiJbPzL
-DoCjjvbdUsltFlWK
-EPCkKvbdcyyQYZRC
-DnbkKvbdddnqbWbj
-EPCkKvbdmuUyjjSG
-EObkKvbdZyDinDLr
-DnbjjvbdZtIiZESn
-EPCjjvbdVBCRTRRy
-EOcLKvbdCWzciFPv
-EObkKvbdrEFJPnWB
-DnbkKvbdqUUHSRkU
-EPDLKvbdlqyUyrci
-DoCjjvbdIMBznXQk
-DoCjjvbdUxgsykOn
-EPCjjvbdXsMBMsnx
-DncKjvbdjuvmdBxX
-EOcLKvbdkIGkeemk
-DoCjjvbdjKGIKNYS
-EPDLKvbdSLZGVGjs
-EOcKjvbdMfcPmQUk
-DoCjjvbdrNZjYlIJ
-EOcLKvbdkyTSTZHU
-EObjjvbdjAQGaQHK
-EPDKjvbdMoxRVnHT
-EObkKvbdeATpmXif
-EObkKvbdFjdsDHmV
-DncLKvbdbLLfOmcA
-EPCkKvbdunszqLOt
-DnbkKvbdnQZxvLZC
-DncLKvbdZyDjNblS
-DnbkKvbdptTfrSKt
-DoDLKvbdzaAOgHCM
-EPCjjvbdhbPCeXRR
-DnbkKvbdmuVZkKSG
-DoCkKvbdziuQQESt
-DnbkKvbdhgKDZWKV
-DnbjjvbdULuoBWPJ
-DncLKvbdWXJXucdg
-DoCjjvbdRacdlJYk
-DoDLKvbdegjvSNqH
-EOcLKvbdnUtzLKRf
-EOcKjvbdFxtuBEXb
-DoCkKvbdmIcsqUrB
-EObjjvbdULvPAvPJ
-EOcLKvbdSwkLmzkY
-EPCkKvbdSZjITCvA
-EPCkKvbdeOdrjtUS
-EPCjjvbdIxUBhLpp
-EObkKvbdqiAJeMoF
-DnbkKvbdhlEcmtcZ
-EOcLKvbdFejRnJTq
-EOcKjvbdwXMAvBWV
-DoDKjvbdmpZyWLZC
-DoCjjvbdGLErbhNV
-DoDLKvbdmaivwnmu
-EOcLKvbdOXoVzcnU
-DncLKvbdBhjbLJGK
-EPDKjvbdZjTIQGaf
-DoCkKvbdgPazwEYI
-DncLKvbdGGKRmiUR
-EObjjvbdfHkWRmpg
-DnbkKvbdXrkaNUPY
-EPCkKvbdzQoMhiwA
-EOcKjvbdrpWOjDVf
-DncKjvbdZtJJZDrn
-EPDKjvbdqZOggRDx
-DnbjjvbdhgJbyWKV
-DoDKjvbdiVZdwRuC
-DoDKjvbdIwtCHkpp
-DoDKjvbdVAapsRRy
-EPDLKvbdwjvcgzzG
-DoDLKvbdRyihScWA
-DoDLKvbdrRuKmkAm
-DnbkKvbdqGDdsuaI
-EPCkKvbdAMhYrwZx
-DncKjvbdSPsfjGEX
-DncKjvbdczYpXxpb
-DoDLKvbdkIHMGFmk
-EPCjjvbdkClKqHUg
-EObkKvbdxVMdqZMO
-DoDKjvbdBdQBVjMf
-EObkKvbdZjTHpGbG
-EPDKjvbdTfzmkvue
-EPCkKvbdLAjfmCXq
-DoCjjvbdLGGHbApu
-EPDKjvbdEzsqEkcJ
-DoDKjvbdwygfGYFS
-DoDLKvbdhgJbyWKV
-EPDLKvbdZshiZETO
-EPDLKvbdKWUfDdfi
-DnbkKvbdqYoHgQcx
-DncKjvbdnGeYMmgZ
-EPDKjvbdKCjDRKDY
-DoCkKvbdJcKDQibx
-EObkKvbdZoNiFFZj
-EPCkKvbdUyHsykPO
-EOcKjvbdtvNxKQsA
-EObjjvbdatafwjtI
-DoDLKvbdhzVFkpmf
-EObkKvbdMgComQVL
-EPCkKvbdSCEEkhxk
-DoDLKvbdgFlZnGgA
-EObjjvbdZMSETnLm
-EObkKvbdtumxKQsA
-EObjjvbdZoOIddyj
-EOcLKvbdqZOggQcx
-EOcLKvbdKfFhBaQu
-DncLKvbdzGxlANEw
-EObjjvbdehLWRnQg
-EObkKvbdEPCjkWbd
-EObkKvbdqYnhHRDx
-EObkKvbdjvXODaww
-DnbjjvbdqTsgSRkU
-EOcKjvbdTqQoVVHm
-DnbjjvbdQmYBxnUz
-DnbjjvbdpyOhGqEY
-EOcLKvbdLGGHbAqV
-EObkKvbdZirgpHCG
-EObkKvbdqYnhGpcx
-DncLKvbdrbGNLgKy
-EObkKvbdkySrSxgU
-EOcLKvbdeAUQlwjG
-DncKjvbdkVwNdCYX
-DoCjjvbdJvVGDeHJ
-EPCkKvbdEuyPpNKF
-EOcKjvbdDjHivXjA
-DnbjjvbdkNCLydfo
-EPCjjvbdZjTHogBf
-DoDKjvbdGKeTDINV
-DnbkKvbdJXtBglQp
-DnbjjvbdFejSOIsq
-EOcKjvbdhytelRNf
-DnbjjvbdbBVdeopX
-DoCkKvbdFjdsDINV
-DoDLKvbdjvXNcbXw
-DnbkKvbdZdxGzhJC
-EPDLKvbdjAPgBQGj
-EObjjvbdJXsbHkqQ
-EPDKjvbdiVZdwRtb
-EObjjvbdGFjSNiTq
-EPDKjvbdznpQdbkx
-EPCjjvbdemFvgNKL
-EPDKjvbdWXIxWEEg
-DncLKvbdEObkKvcE
-DnbjjvbdLAjfmCYR
-EPDLKvbdEXwkstTl
-EObjjvbdFfKSNhsq
-DncKjvbdygZMANFX
-EPCkKvbdYqNFIleR
-DoCkKvbdSKyGUgLT
-DncKjvbdBdQBVjNG
-DnbkKvbdbUagYLTh
-EOcKjvbdsPunjDWG
-DncLKvbdrEFIonVa
-DncKjvbdaSGChTfL
-DoCkKvbdcJNKKfXY
-EObkKvbdULuoBWOi
-DncLKvbdKWVGEEgJ
-EPCkKvbdqFdEsuaI
-EPDKjvbdAMgySvyx
-DncLKvbdiUzEwRuC
-EObjjvbdZoNheEzK
-DnbkKvbdZLrETnMN
-EObjjvbdKWVFcdfi
-DoDLKvbdcScLUEJa
-EPCkKvbdIwsbIMRQ
-EOcKjvbdsBemMHKy
-EOcLKvbdzitoodSt
-EPDKjvbdrMyjZLhJ
-DnbjjvbdaRfCgsfL
-DoCkKvbdKQzEnenF
-EOcLKvbdUGznLvue
-DncLKvbdZxcinCkr
-DnbjjvbdEuyPpNKF
-DncKjvbdGFirOIsq
-EOcLKvbdVqmxBeMD
-EOcLKvbdwuMeRZLn
-DnbkKvbdBhkBkIej
-EOcKjvbdNQXpumfs
-EObkKvbdVBCRTRSZ
-DoDLKvbdZeYGzhJC
-DncLKvbdREDBPqES
-DnbjjvbdvBEZSoFI
-EPCjjvbdakLeoNcA
-EPDLKvbdeFOqbWbj
-EPDLKvbdiGicZWJu
-EPCkKvbdEKHiuwjA
-EPCjjvbdwkWcgzyf
-DoDKjvbdmpZyVkZC
-EPCkKvbdSZihSbvA
-EPDKjvbdelevfmKL
-DnbjjvbdeATplwif
-DoCjjvbdGAnpxizm
-EPDKjvbdTlWPBWOi
-EOcKjvbdmSYtzTEJ
-DncLKvbdnGeXmNfy
-DoDKjvbdTIzJqAAl
-EOcKjvbdqdEiPnVa
-EOcKjvbdcTCkUEKB
-DoCjjvbdEvYopMjF
-DoDLKvbdwuMdpyMO
-EPDKjvbdEuyQPlie
-EOcLKvbdVUMsfMVj
-EObjjvbdijFgilxS
-DoDKjvbdnPyxujyC
-EOcKjvbdTAFIgbPE
-DnbkKvbdZxdJnDLr
-DncLKvbdqdEiPmua
-EOcKjvbdhgJcZVjV
-DnbkKvbdRbEFLhxk
-DoDKjvbdmaivwoNu
-DoCkKvbdZQmFJMdq
-DncLKvbdeYZtTqez
-EObkKvbdqYoIGpdY
-DnbjjvbdEASJMyvw
-DoDKjvbdwzHfGYFS
-DncKjvbdjvXOECYX
-DncLKvbdbBVdepQX
-DoDLKvbdrEFIomua
-DnbjjvbdYgWdAOsJ
-EOcKjvbdkMakydfo
-EPCjjvbdegkWSNqH
-EPDLKvbdYlSEUNkm
-EPDLKvbdzRPMhjXA
-DnbjjvbdmSZUyrci
-EPDKjvbdiiehKNXr
-EPDLKvbdwzIGGXdr
-DncKjvbdSLYetfkT
-EOcLKvbdURROtuHm
-EPDLKvbdEYYLtUUM
-EOcLKvbdaSGDIUFk
-DnbkKvbdhfibyViu
-DncKjvbdeFOqavcK
-EPDLKvbdZtIhyETO
-EOcKjvbdsPuoKDVf
-DoDLKvbdBhkBjiGK
-EPDLKvbdnQZyVkYb
-DncLKvbdNsTugEtp
-EPCjjvbdCDpBWJmG
-DoCkKvbdmIdTqVRa
-EOcKjvbdptUHRqjt
-DnbjjvbdRpTfifDw
-DncKjvbdaRebgtFk
-EPDLKvbdEARiMyvw
-EOcKjvbdyNsHxShc
-DoCkKvbdxKwDgzyf
-DncKjvbdwuNFQyLn
-DncLKvbdegjvSORH
-DncLKvbdOStWGdtp
-EOcLKvbdcTCkTdKB
-DncKjvbdRECaQRES
-DoDLKvbdkIHMFemk
-EPCkKvbdfjfzcGAE
-DncKjvbdZLqdTnLm
-EOcKjvbdIMBzmwRL
-EOcKjvbdwzHeexFS
-EPCjjvbdKVuFdFHJ
-EPCjjvbdRXODcLgc
-DoDLKvbdlrZVZrdJ
-EPDKjvbdjKGIJmYS
-EObkKvbdHEKujCJj
-DncKjvbdNddTiIjd
-DoDKjvbdZjSgpGaf
-DoCjjvbdmfeXlnHZ
-EPCjjvbdRosfifDw
-DoCjjvbdZxcinDLr
-DoCjjvbdNeDsiIjd
-EPDKjvbdVgxVwgYz
-DnbkKvbdqTtGrRjt
-DnbkKvbdTqQntuIN
-DncKjvbdBvzdJEpW
-EPCjjvbdqUUHRrLU
-DnbjjvbdqcdhonWB
-DncKjvbdHDkWKBjK
-DnbkKvbdxVMeQxlO
-EObjjvbdkClKpgVH
-EOcLKvbdCSaDUGXS
-DncLKvbdUQqOttgm
-DoCkKvbdZxcjOClS
-EPDKjvbdVqmxCFMD
-DnbjjvbdqmZixlHi
-DnbjjvbdiUydvquC
-DoCkKvbdOTTugFVQ
-EOcKjvbdUQpoVVIN
-DoCkKvbdNHDPlpVL
-EOcLKvbdDncLKwCd
-EOcLKvbddeOrCXCj
-EObjjvbdqvolChyR
-EOcLKvbdaofgELzd
-DoDLKvbdrpVoKDWG
-DncKjvbdaMjasUmH
-EObjjvbdliETqUrB
-DncLKvbdXsLaMtOx
-EObkKvbdrykpTAhO
-EPDKjvbdehKvRmpg
-EObjjvbdUxhTzKnn
-DncLKvbdTfznMXVe
-EPDLKvbdqUTfqqkU
-DoCjjvbdHELWKCKK
-DoDLKvbdwuNFQyMO
-DoCjjvbdffLynGgA
-EOcLKvbdSLYetfkT
-EPDKjvbdtTRryZeD
-EPDKjvbdddoRbXDK
-DoDKjvbdFVxooljF
-DoDLKvbdxsNiNSCH
-DoDLKvbdsCGNMGkZ
-EOcLKvbdkHfkfFnL
-EPCkKvbdqrUjnLAm
-DnbkKvbdHELViajK
-EOcKjvbdNHDQMouL
-EPCkKvbdWWhxVdFH
-DnbkKvbdUWMPitBR
-DncLKvbdZoOJFFZj
-DncKjvbdcIljKewY
-DoDLKvbdVUNUGLvK
-EObkKvbdNsTufdtp
-DnbjjvbdGKdsCgmV
-EObkKvbduDCtwWPP
-EObjjvbdkMbMZeGo
-EPCkKvbdJSyAsNXl
-DnbjjvbdmbJwXnmu
-EPCkKvbdRjxeuGkT
-EObkKvbdaSFcITek
-EPDLKvbdGYtuAdYC
-DoDKjvbdFeirNiUR
-EPCjjvbdhyuGMQmf
-EObjjvbdDxYLstUM
-EObkKvbdFfKRmhtR
-DnbkKvbdyTNhmSCH
-EPCjjvbdJSyAsNYM
-EPCkKvbdEuxpQMie
-DoDLKvbdkClLQgUg
-DnbkKvbdssRrxzEc
-EPDLKvbdRMwbZNtz
-EPCkKvbdssSTYyeD
-DoCkKvbdYqMeImEq
-EOcLKvbdjuwOECXw
-EOcKjvbdOTUWHFUp
-EPCjjvbdliDtQtrB
-EPDKjvbdZxdJmblS
-DoDKjvbdbVCHXkTh
-DoDKjvbdpstHSRjt
-EOcLKvbdNPwpunGs
-DoCkKvbdLAjgNCXq
-DoCjjvbdDoDKjvbd
-DoCkKvbdZirgpHBf
-EPDLKvbdezuxdiTw
-DoCkKvbdLrXMyuQz
-DncLKvbdqlyjYkgi
-DnbkKvbdLrWlzUpz
-DoCjjvbdhytfLpnG
-EObjjvbdxrmiNSBg
-EPDLKvbdqquLNjaN
-EObjjvbdiHKCyVjV
-DncKjvbdjSziTKiz
-EPCjjvbdCflGHAzc
-EPCjjvbdZtJJZDrn
-EPCjjvbdJKEAKQHE
-EPDKjvbdIxTbHlRQ
-EOcKjvbdZRMdhmEq
-EOcLKvbdmttykJqf
-DncLKvbdEzsqFMDJ
-EPDKjvbdJuteceGi
-EOcKjvbdemFvfmJk
-DoCkKvbdkySqsZGt
-EOcLKvbdlrZVZsDi
-EOcLKvbdEXxLstTl
-DnbkKvbdkNBlZeHP
-DncLKvbdauCHYKsh
-EPCkKvbdhuZeXSVC
-EPCjjvbdOTTufdtp
-DoDKjvbdDoCkKwCd
-DoDLKvbdOAIrsirA
-EPCjjvbdlAmPNALA
-EOcLKvbdiBoCdwQq
-DoCkKvbdnCJwYOnV
-EOcLKvbdqwQLbhxq
-DncLKvbdGYuVBEYC
-EPCjjvbdcyyQXxqC
-EPDKjvbdrEEiPmvB
-DnbkKvbdJbibqJbx
-DncLKvbdiGjCxuiu
-EObjjvbdjKGIJmXr
-EPCjjvbdFkEsDIMu
-EPDKjvbdCWzchePv
-EObjjvbdEObjjwDE
-EPCkKvbdQdDApRDr
-DoDLKvbdbAvEfQPw
-DoDLKvbddtAUATNW
-DnbjjvbdUxhUZkOn
-DnbjjvbdwNWANEEm
-EPCjjvbduDCuWuoP
-DnbjjvbdjAQHApHK
-DncLKvbdJzpFxEAN
-DncKjvbdwtldpxlO
-EObjjvbdBraCtGWr
-EPDKjvbdJmADzGuB
-DoDLKvbdRadEkiZL
-DoCkKvbdAMhZTXZx
-DoCjjvbdqGDeUVaI
-DoCjjvbdVvhxWDdg
-EOcKjvbdSBceMIyL
-DnbkKvbdRkYfUfjs
-EOcLKvbdFWYpQMjF
-DoDLKvbdhlFENuCy
-EObkKvbdiCObeWpq
-DnbkKvbdHELWJaij
-EObkKvbdCTAcTfWr
-EPDKjvbdbrcLTdJa
-DoDLKvbdDncKkXDE
-DoCkKvbdmSYtzSdJ
-EOcLKvbdVZHszLPO
-DnbjjvbdhkdcmuCy
-DnbkKvbdLrXNZuQz
-EPDKjvbdZnmiFEzK
-EPCkKvbdlrZVZsEJ
-DnbjjvbdqmZixkhJ
-DoDLKvbdcTCjsdKB
-DoCkKvbdcyyPxYqC
-DoDKjvbdssRrxydc
-DoDKjvbdvPTzpjnt
-EObjjvbdZLqctOMN
-DoDLKvbdRNXbYnUz
-DncKjvbdJYUBglRQ
-EObkKvbdkIGlGFnL
-DoDLKvbdiUzEwSUb
-EPDKjvbdeEnrCWbj
-DoDLKvbdRbDdkhxk
-EObjjvbdYzcFqjWZ
-EOcLKvbdjggLfFnL
-DncLKvbdgQBzwEXh
-DoCjjvbdQlxByNtz
-DnbkKvbdoznDjwoA
-DnbkKvbdVgwuxHYz
-DoDLKvbdaaVdepQX
-DoDKjvbdLZRKSztf
-EPDKjvbdbUbHXkUI
-EOcLKvbdjhGkfFmk
-EObkKvbdeEoSBvcK
-DncKjvbdUtMtGMVj
-EPDLKvbdJTZAsMxM
-DnbkKvbdOEdUJJKd
-DoDKjvbdZHXEAPSi
-EObkKvbduaDyTPFI
-DnbjjvbdqAiFAWhE
-EObjjvbdelevgNKL
-DnbjjvbdTAEhgbPE
-DoDKjvbdnPzZVkZC
-DoDKjvbdQwNdDLhD
-DnbjjvbdnBjWwoNu
-EObkKvbdfMewGljL
-DncKjvbdrpVnjCuf
-EPDLKvbdLGFgbBRV
-EObkKvbdkCkkRHUg
-EObkKvbdTlVoAuoJ
-EPDLKvbdrMyjZMHi
-EOcLKvbdWHwuxHYz
-EOcKjvbdLrXNZtpz
-EObjjvbdbQHHDkzd
-EOcLKvbdfILWRnRH
-EPCjjvbdyfyMAMeX
-DncLKvbdNHCpNQVL
-EPCjjvbdFkEsDHlu
-DncKjvbdGGJqmhtR
-DnbkKvbdvAcxrndh
-DoCjjvbdqGDeTvBI
-DoCjjvbdJvUfDdgJ
-DoCjjvbdUVlPisaR
-DoCkKvbdqTsgSRkU
-EObjjvbdjblKpftg
-EObkKvbdtcDVXWPP
-DnbkKvbdfHkVqnRH
-DncLKvbdmoyxvLZC
-EObjjvbdkHfkfFnL
-EPDKjvbdwNWAMcdm
-EPCjjvbdJpzFOfNe
-DncKjvbdmbJvxOnV
-DncKjvbdTqQnuUgm
-EOcLKvbdTpqOuVHm
-DoCjjvbdYlSETmkm
-DoDKjvbdjEkGuPAO
-DoCkKvbdwygefXdr
-EObkKvbdrXPkcJYq
-DoCjjvbdxUleQyMO
-EOcLKvbdBsAcTfXS
-EPDLKvbdLBLGlbXq
-EObjjvbdmbJvwnnV
-DnbjjvbdbVCGwjsh
-DnbkKvbdxUmEpyMO
-EPCkKvbdYSlBNTnx
-DoDKjvbdeOeSkUTr
-DncLKvbdqmZixlHi
-EPCkKvbdNHCpNQVL
-DoCkKvbdDigjWXjA
-EObjjvbdrDeJQNvB
-EOcLKvbdJuuGDeHJ
-DoCkKvbdddnrCXCj
-DoDKjvbdqTtGqrKt
-DoDKjvbdeOeTKstS
-EObjjvbdySmiNRbH
-DnbjjvbdZshiYdTO
-EObjjvbdnCKXXnmu
-EPDKjvbdqiAKFMne
-DoDKjvbdNeEUIiKd
-DnbjjvbdzitpPdTU
-EPCkKvbdzaAOffal
-EOcKjvbdZtIiZDrn
-DoCjjvbdtSrTYyeD
-DoDLKvbdFVxopNJe
-DoDLKvbdJJdAJpHE
-DoDLKvbdHDjuiaij
-EObkKvbdUWMQKUAq
-EPDKjvbdTpqOuVIN
-EOcLKvbdqvpMChyR
-DoCkKvbdVviXudEg
-DoCkKvbdGLErbgmV
-EPCkKvbdZirhPfbG
-DoCkKvbdWXJYVceH
-DnbjjvbdhkeEOUcZ
-DncKjvbdSPtHJedX
-DncKjvbdFfKRnIsq
-DncKjvbdWWhxVdEg
-DoCkKvbdOStWHEuQ
-DoDLKvbdEuyQPmKF
-DncKjvbdrpVoKDWG
-DoCjjvbdKVtfEEfi
-DoCjjvbdWXIwudEg
-EPDKjvbdSCDeMIyL
-EPDKjvbdDoDKkXCd
-DoCkKvbdJpzEnenF
-EPDKjvbdaaWEfPow
-DoCjjvbdVwJXucdg
-EPCjjvbdauCHYKtI
-EOcLKvbdNeDshhkE
-DncLKvbdNGcQMpVL
-EOcLKvbdIryBSmXl
-DnbkKvbdTAFJICPE
-EOcLKvbdrMzKYlHi
-EOcKjvbdznopeDMY
-EOcLKvbdMRvmZuQz
-DncKjvbdeFOqbXCj
-DncLKvbdbhlijfWx
-EOcKjvbdqdEhpOWB
-DoDLKvbdUWMQJsaR
-DoDLKvbdptUGqrLU
-EObjjvbdaSGChUFk
-EPCjjvbdYTMAltOx
-DncKjvbdEPCkLWbd
-EOcKjvbdKCjDRKCx
-EPDKjvbdZyDjNcMS
-DncLKvbdFfKRnJUR
-EPDKjvbdrNZiyLhJ
-EOcKjvbdZeXfzgiC
-EOcKjvbdbUbGwkTh
-EPDLKvbdHfgZxwxH
-DncLKvbdrovOjCuf
-DnbjjvbdfNGWflik
-DnbkKvbdZoNiFEyj
-EPCjjvbddneTKtUS
-EObjjvbdRbDdlIxk
-EOcKjvbdKfFgbBRV
-EPDKjvbdFyUuBDxC
-EPCkKvbdiUzFXRtb
-EPCjjvbdrJAJeNPF
-DncLKvbdVAbRSqSZ
-EObjjvbdaNKbTVMg
-DoCkKvbdlhctQtqa
-DoDKjvbdZshiZDrn
-EPDLKvbdFkFSbglu
-EPCjjvbdHffyxwxH
-DncKjvbdTvLojTaR
-DnbkKvbdauCHXkUI
-DoDKjvbdGdKuiajK
-EOcKjvbdkClKqHVH
-EPDLKvbdnUtykKSG
-DnbkKvbdBiKbKhej
-DoDLKvbdHffzZXwg
-EPCjjvbdbrbkTcjB
-DoCkKvbdVwJYWDdg
-DncLKvbdJJdAJogE
-EPCkKvbdJvUfDdfi
-DoDKjvbdZeYGzgiC
-EObjjvbdZyEJnDMS
-EOcLKvbdmSZVZsEJ
-EPCkKvbdDnbjjvbd
-EPCkKvbdJvVGDeGi
-DoCjjvbdTXkLmzkY
-DnbkKvbdLqwNZuQz
-DncKjvbdZtIiYcsO
-DoDKjvbdLYqKSztf
-DnbkKvbdULuoBVni
-EObkKvbdiBnbeWqR
-EObjjvbdfILWRmqH
-DncKjvbdezvYdhsw
-DnbjjvbdJvUfEEfi
-EPCkKvbdRpUHKGDw
-EObkKvbdZGwEAPTJ
-EOcLKvbdcTCkUEKB
-EObjjvbdGAoQxizm
-DnbjjvbdNwoVzcmt
-DncLKvbdJbicRKDY
-DnbkKvbdGZVVAcxC
-EPCkKvbdRadFMJYk
-DnbjjvbdxsNiNRag
-DnbjjvbdiBncFXRR
-EPCjjvbdySmiNRbH
-DoDKjvbdeATqMxKG
-DnbjjvbdtSrSyZdc
-EOcKjvbdwtldpyLn
-EPDKjvbdqwPkbiYq
-EPDLKvbdzitpPcsU
-DoDKjvbdDjHiuwjA
-EPCkKvbdfMewGmKL
-DncKjvbdlrYtyrci
-EPCjjvbdZQldiMdq
-EPDKjvbdJbjDQjCx
-DncKjvbdqTsgRrKt
-EPCkKvbdEvZQPljF
-DoCkKvbdUsltGMWK
-EOcLKvbdEJgivXjA
-DnbkKvbdePFTLTtS
-EPDKjvbdEYYLstTl
-EPDKjvbdMfcPmPuL
-DoDKjvbdBsAcTevr
-EPDLKvbdwtleRZMO
-EObjjvbdRotHJfDw
-EOcKjvbdJuuFdFHJ
-DnbjjvbdZoOIeFZj
-DoDLKvbdsZlQSaHn
-EPCjjvbddoFTLTtS
-DncKjvbdbVBgXjsh
-EPCkKvbdaMkBrtlg
-EPDKjvbddiiqutzn
-EObkKvbdiZuFkpnG
-EPCkKvbdIxTaglRQ
-EOcKjvbduaEYrndh
-DnbjjvbdzQoMiJwA
-DoCkKvbdsCGNMHKy
-EObjjvbdMoxQunHT
-DnbkKvbdxwiJbPzL
-EOcLKvbdJbibpjCx
-DncKjvbdIxTbHkpp
-DoCkKvbdwuMeQxlO
-EOcKjvbdKeehCBRV
-EPCkKvbdZxdKNblS
-EPCjjvbdLFegbBQu
-DoCkKvbduLwwBUBX
-DoDKjvbdjlbMZeHP
-DoDLKvbdjAPfaPfj
-EObjjvbdqGEFTvBI
-EObjjvbdeAURNXif
-EObjjvbdxmrgxTJD
-EPCkKvbdqGDeUWAh
-DncKjvbdqTsfqrKt
-EObjjvbdjEjftoAO
-EOcKjvbdNrtWHFUp
-EObkKvbduCcUvvOo
-EPCkKvbdvwMAvBWV
-DncLKvbdtkwwBUBX
-DoCjjvbdVZHsyjnn
-EPDKjvbdQccBQQdS
-DnbkKvbdjgfkeemk
-EPDLKvbdFyVVBDxC
-DncLKvbdrNZiyMIJ
-EObjjvbdHfgZxwwg
-DoDKjvbdqceIomvB
-EPCkKvbdNGcPlouL
-DoCkKvbdCIkBkIej
-DoCjjvbdjKFhJmYS
-EObkKvbdBsBDUGWr
-EObkKvbdnQZxvKyC
-DnbjjvbdhzVFkqOG
-EPCjjvbdGLFScHlu
-DoCjjvbdtlXwAtBX
-DoDLKvbdUtMtFkvK
-DoCkKvbdBvzchdov
-DncLKvbdlZSrTZHU
-EOcKjvbdZnnJEdyj
-DncKjvbdYpleJMdq
-EPDKjvbdiMEcmtcZ
-EPCjjvbdfelZmgHA
-DnbkKvbdLhalRYAS
-DncKjvbdehLWRnRH
-DnbjjvbdeKJqvUzn
-EPCjjvbdqqtkOLBN
-EOcLKvbdfRaWzlDP
-DncLKvbdhtzFWquC
-EObkKvbdJvVFdFGi
-EObkKvbdMfcPlotk
-DoCjjvbdtcCuWvPP
-DnbjjvbdwtmFRZMO
-DoDKjvbdsPvPKCvG
-EPCjjvbdmfdwmOHZ
-EPDLKvbdMgDPlouL
-DoDKjvbdnGdwlnHZ
-DoCkKvbdVwJXudFH
-EObjjvbdQdCaQQcr
-DnbkKvbdYSkaNUPY
-DoCjjvbdULvPAuni
-EPCjjvbdSZihScWA
-DoCkKvbdBiLCKhej
-DnbkKvbdhXZAzzAJ
-EOcLKvbdQYmAGsRj
-EOcLKvbdZtJIyDrn
-DnbkKvbdNsTufduQ
-EOcKjvbdEXxMUTsl
-DoDLKvbdKyRJrzuG
-DoDKjvbdrWpLbhxq
-DnbjjvbdrDeIonWB
-EPDKjvbdHELViaij
-DoDLKvbdBdQBWJmG
-DncLKvbdRjyGUfkT
-EPDLKvbdYNqAYUut
-EPDKjvbdRXNdClID
-EPCkKvbdNwnuzdOU
-EOcLKvbdjmBkydfo
-DoCjjvbdrpWPKDVf
-EPCkKvbdZyEKNbkr
-EOcKjvbdQZNAHTRj
-EOcKjvbdwtmEpxkn
-DncLKvbdLhbMRYAS
-DoCjjvbdsrrTZZdc
-DncKjvbdxmrgxShc
-EPCkKvbdmozZVkZC
-EPCjjvbdbsDLTcia
-DoDKjvbdGKeScIMu
-EPCjjvbdrEFIpOWB
-EOcKjvbdmpZxukZC
-DoCkKvbdTkunaVni
-DoCjjvbddneSkUUS
-EPCjjvbdTlVoBWPJ
-DoDKjvbdxsNhmSCH
-EPCkKvbdVviXvDdg
-DnbjjvbdwzHfFwdr
-EPDKjvbdfMewHMjL
-DoCjjvbdbsDKtDjB
-EPDLKvbdUQpoVVIN
-EObkKvbdrEFJPmua
-EObkKvbdhlEcnUcZ
-DoDKjvbdZRMeIleR
-DnbjjvbdmajXYOnV
-DoDKjvbdaRfDHtGL
-DoCjjvbdbhljKewY
-DoDLKvbdDwwksssl
-DncLKvbdUMWOaVoJ
-DncKjvbdWWiYWDdg
-DoCjjvbdyXiJbQZk
-DnbkKvbdHDkVibKK
-EPCjjvbdtSrSxzEc
-EOcLKvbdaSGChUFk
-DnbkKvbdYSlBNUOx
-EPDLKvbdJTZBSmYM
-DoCjjvbdTkvOaWOi
-DncKjvbdMowpvNfs
-EPDKjvbdeEnqavcK
-EOcLKvbdiifIJlxS
-DnbkKvbdqceIpNua
-EPDKjvbdrNZixkhJ
-DncKjvbdiHKDZViu
-DnbkKvbdrDdiPnWB
-DncLKvbdLGFhCAqV
-DoCjjvbdwuMdqYlO
-EPCjjvbdePFTKssr
-EObjjvbdVBCQrpqy
-EObjjvbdbrcKsdKB
-DnbkKvbdBvzciEpW
-DoCjjvbdIHGyyXxH
-EObjjvbdrzLpTAhO
-EOcKjvbdemGWgNJk
-EObkKvbdVZHtZjnn
-EOcKjvbdiCObeXRR
-EPCkKvbduoTzpkPU
-DoCkKvbdrNZjYkgi
-DnbkKvbdTAEhgand
-EOcKjvbdhuZdwRuC
-DoDLKvbdWWiXuceH
-EPDKjvbdZoOIddzK
-DncLKvbdVAbRSprZ
-DnbjjvbdhgKDZWJu
-DoCkKvbdVZITykOn
-DoCkKvbdiGibyWKV
-EPDLKvbdwyhGGYFS
-DoDKjvbdiHKCxvJu
-EPDLKvbdhyuGLpnG
-EPDKjvbdOAJStKSA
-EOcKjvbdzitpPdSt
-DoCkKvbdzROlhjXA
-DoDLKvbdtTSSxzEc
-DoDKjvbdzoQRFCkx
-DnbkKvbdxnSgxShc
-DnbjjvbdiBoDFWqR
-DoCjjvbdnBjWwoNu
-DncLKvbdVYhTzKnn
-DncLKvbdkIGkefNk
-DnbkKvbdlqxuZsEJ
-EOcLKvbdACrYJzIp
-EPDKjvbdmaiwYOnV
-EOcKjvbdYkrEUNlN
-DoCjjvbdVUNTfLuj
-DoDLKvbdfHkWSOQg
-DnbkKvbdBraCsfXS
-EOcKjvbdMJBkpxAS
-DoDKjvbdcyyQXyQb
-EObkKvbdeEnrCXDK
-EObkKvbdFejSNiTq
-DoCjjvbdEYXkstTl
-EPDKjvbdyYIjBpZk
-DncKjvbdiHJcZWKV
-DncKjvbdQdDAoqDr
-EObkKvbduDDUvvOo
-EPCkKvbdzGyMANEw
-DoDKjvbdQvnECkgc
-DncKjvbdVviXudEg
-DoDLKvbdQZNAHTSK
-EPDKjvbdkCkjqHUg
-EObjjvbdwyhFeweS
-DoCjjvbdxwiJbQZk
-EOcLKvbdEPDLLXDE
-DncLKvbdVrNwbFLc
-DoCkKvbdjAPgBPgK
-EOcKjvbdpstGqqjt
-EPDLKvbdHDkVjCKK
-DncKjvbdirzhrjiz
-DnbjjvbdxrnJNSBg
-EPCkKvbdraelkgLZ
-DncLKvbdptTgRqjt
-DoCkKvbdIsYaTMxM
-DoCjjvbdMpXqVnGs
-DoDLKvbdUVkoitBR
-DoCkKvbdjmCLyeHP
-DoCjjvbdiVZeWquC
-DoCjjvbdVUMtFlWK
-EPDLKvbdxKvdHzzG
-DoDKjvbdiMEdNuCy
-EPDKjvbdwzIFfYEr
-EObjjvbdJXsagkpp
-EPCkKvbdxrmhmSBg
-DoDKjvbdlqxuZsDi
-EPDKjvbdsQVoJcVf
-DnbjjvbdEYYLstUM
-DncLKvbdkHgLfGNk
-EPCjjvbdbsDKtDjB
-DnbjjvbdJcKDQibx
-DoCjjvbdyzdnSIIh
-DnbkKvbdrpWOjCuf
-EObjjvbdbAudeopX
-DnbkKvbdYkqctNlN
-EPDLKvbdfHkWRnRH
-EPDLKvbdXmqAYUut
-DncKjvbdFyVVBEXb
-DnbkKvbdrDdhpNua
-DncKjvbdeAURNXjG
-DoCkKvbdOTUVgEuQ
-EPCjjvbddwyssrFz
-DoCjjvbdMpYRWNfs
-DoCkKvbdjuvnDaww
-DnbkKvbdVhXvXgYz
-EObjjvbdTulQKTaR
-EObjjvbdOAJTUJrA
-EPDLKvbdsZkosBIO
-DoCkKvbdhgJbxvKV
-EPCjjvbdnBivxOnV
-DncKjvbdxrnIlrCH
-DncLKvbdzaAPHGbM
-EPCkKvbduMXvaUBX
-DnbkKvbdSBceMJZL
-EObjjvbdJpzEoGOF
-DnbkKvbdWexytAPT
-DnbkKvbdkVwNcaxX
-EOcLKvbdEYYLsstM
-DoCkKvbdRosfiedX
-EOcKjvbdwuMdpyMO
-EObjjvbdUsmUFlWK
-EObjjvbdjuwOECXw
-DncKjvbdqlzJxkgi
-DoCkKvbdiHJbxujV
-EPDLKvbdakMFoNcA
-EOcLKvbdmIcsqUqa
-EPCkKvbdeKKSVtzn
-EPCkKvbdvBEZTOeI
-DncKjvbdpstHSRjt
-EOcKjvbdKVuGEEfi
-DoDLKvbdZQldiNFR
-EPCjjvbdxnTIYShc
-EOcKjvbdtunXjQsA
-EPDKjvbdjcLkRHVH
-DncKjvbdDoDLLXCd
-DnbjjvbdZyEJnDMS
-DoDLKvbdFkFTCgmV
-EOcKjvbdhkddOUby
-EPDLKvbdNeEUJIkE
-DnbkKvbdyzeNqghh
-EPDKjvbdFVxopMjF
-EOcKjvbdGdLVibKK
-DncKjvbdBdQAvJlf
-DoDKjvbdbiNKLFwY
-EPCkKvbdnGeYNNgZ
-EPDLKvbdEYXlUTsl
-DncLKvbdOEcsiIjd
-DncKjvbdKaLHMbYR
-DncKjvbdyTOIlrCH
-EPCkKvbdMpXpumgT
-EPCjjvbdtbbtwVno
-DoDKjvbdrRtkOLAm
-EObjjvbdbLLfPNcA
-DncKjvbdjmCLydgP
-DnbkKvbdTkuoBVoJ
-DnbkKvbdSCDdlJYk
-EObkKvbdCEPaVjNG
-DoDLKvbdFaOpxizm
-EPCjjvbdfMevgMjL
-DoCkKvbdYzcGRjVy
-DnbjjvbdKRZdoGNe
-EPDLKvbdZisIQHCG
-EOcLKvbdZMSEUOMN
-DoCjjvbdiGibxuiu
-EPDLKvbdZQmFJMeR
-DoCkKvbdsBemLfjy
-DncLKvbdzoPqEcMY
-DncLKvbdMoxRWOGs
-EOcLKvbdFeirOJUR
-DoDLKvbdpyOgfpdY
-DncLKvbdyzeOSIJI
-DoDLKvbdRkZFuHKs
-DnbkKvbdxVNEqZLn
-DoCjjvbdMgDPmPuL
-EPDKjvbdZQmEhmFR
-DncKjvbdBraDUFwS
-DoCkKvbdqqtjmkAm
-EPDLKvbdLZQirzuG
-DoDLKvbdlYsRryGt
-EOcKjvbdKaLHNBxR
-EOcKjvbdTqQoUthN
-EObkKvbdhbObeXRR
-EPDKjvbdJutfDeGi
-DoDLKvbdRkZFuGkT
-EOcKjvbdrbGNLgKy
-DnbjjvbdmpZyWKyC
-EPDKjvbdHELVjBij
-EPCjjvbduDDUvuoP
-EOcKjvbdrDeIonWB
-DoCjjvbdnPyyWLZC
-EPDKjvbddndrjtUS
-EObjjvbdjuvnDbYX
-EPDLKvbdCIkBjhfK
-EObkKvbdZjTHogCG
-EOcKjvbdjJehKNYS
-DnbkKvbdSxLMNzkY
-DoDLKvbdKDKDRJcY
-EPCkKvbdmpZxvKxb
-DnbjjvbdssSTYyeD
-EObjjvbdHDkVibJj
-DnbkKvbdSLZFtgLT
-DoCjjvbdxnTIXriD
-DnbkKvbdcSbjsdJa
-DoCkKvbduoTzpjoU
-DoCjjvbdXsLaNUOx
-DoDLKvbdcScKtEJa
-DnbkKvbdfpBzwDwh
-EPDKjvbdjlakyeGo
-DnbjjvbdYzcFqivZ
-DncLKvbdCIkBjiGK
-EPDLKvbdxZhFfYFS
-EObjjvbdrEFJQNvB
-DoDLKvbdjAPgBQHK
-EOcLKvbdkDLjqHUg
-DoCkKvbdiUzFWqtb
-DoCkKvbdKVtfDdfi
-DoDLKvbdwkXEHzyf
-EObjjvbdqcdhpOWB
-EPCkKvbdeEnrBvbj
-DoCkKvbdCTAbsewS
-DnbjjvbdNHCpMouL
-DoDKjvbdSQUGiecw
-DoDLKvbdelevfmKL
-DoCkKvbdySnImSCH
-DncKjvbdANIZSvzY
-DncKjvbdrJAJeNPF
-EPCjjvbdqTtGqqjt
-EObjjvbdaRfDHsfL
-EPCkKvbdrJAJeMne
-EPDKjvbdiGjDYvJu
-DoDKjvbdMgCpMpVL
-DncKjvbdZjTIQHCG
-EOcLKvbdJYTbILqQ
-DoCkKvbdzoPqEbkx
-EPDLKvbdvlvANDeN
-DncLKvbdatafwjsh
-DncLKvbdJuuFcdgJ
-DncLKvbdwXMAvBWV
-DoDLKvbdaMjbStmH
-DoCkKvbdeOdsLTtS
-DoDKjvbdbLLeoNcA
-EPDKjvbdJKEAJpGd
-DnbjjvbdZnnIeEyj
-EOcLKvbdunszpjnt
-EObkKvbdmoyyWKxb
-EObkKvbdILazmvpk
-EPDKjvbdQlwbYmtz
-EPCjjvbderAvzkcP
-EObkKvbdegjvSORH
-EOcKjvbdsrqsYydc
-EOcKjvbdfIKvSORH
-DnbkKvbdFjdsDIMu
-EPDKjvbdpstHRqjt
-EOcLKvbdWRmxCElD
-EOcLKvbdkHflGFnL
-DoCjjvbdZjTHofbG
-EObjjvbdeEoSBwCj
-EPCkKvbdJSyBTNXl
-DnbkKvbdUaCRTQqy
-EPDKjvbdSLZFtfkT
-DncKjvbdyNrgwsJD
-DoDKjvbdezuxdiUX
-DoDLKvbdACrXiyhp
-DoDLKvbdxwiJaoyk
-EOcKjvbdUxhTzLOn
-DnbjjvbdnHFYNNfy
-EOcLKvbdhanbeWqR
-DoDKjvbdzHYlAMdw
-DoCjjvbdKyRJrzuG
-DncLKvbdliETpuRa
-EObkKvbdczYpXyRC
-DoDKjvbdFfKRnIsq
-EPDKjvbdVAbQsRSZ
-DncKjvbdezvZEiUX
-DoCkKvbdZisHofbG
-EPDKjvbdjKFgilxS
-EOcLKvbduVmxKQsA
-DnbjjvbdhuZeWrUb
-EObkKvbdGYuUaDxC
-DoDLKvbdaaWFGPpX
-DnbkKvbdUQpoVUhN
-EPCjjvbdZxdJmcMS
-DncKjvbdhbPCdwRR
-EObkKvbdZRMeJNFR
-DnbjjvbdTlVoBWOi
-DoCkKvbdatbHYKtI
-EObkKvbdiHJbxvJu
-DncKjvbdsQWOjCvG
-DncLKvbdRosfjGEX
-EObkKvbdREDBQRDr
-EOcLKvbdeEnqawCj
-EPDLKvbdGZVUaEXb
-EPDLKvbdIryArmXl
-EObjjvbdiiehJlwr
-DoCkKvbdMJCMRYAS
-DnbkKvbdlrYtzTDi
-DoDLKvbdnGeXlmfy
-DoCkKvbdSCDeMJZL
-EObkKvbdLFegaaRV
-DoDKjvbdGGKRmhsq
-EObkKvbdiLdcnVDZ
-DnbjjvbdGBOqZJzm
-DnbjjvbdhfjCxvKV
-EPCjjvbdlBNPNALA
-EOcKjvbdtbbuXWPP
-DncLKvbdEPCjjwDE
-DoDLKvbdLqwNZtpz
-EPDLKvbdbVCGwkUI
-DncLKvbdZyDimcLr
-DncLKvbdfILWSNpg
-DoDKjvbdFVyPpNJe
-DncKjvbdqiAJeMoF
-EOcKjvbdqrVLOLAm
-DoCjjvbdehKuqnQg
-DoDLKvbdGLFTCglu
-DoCjjvbdXrlBMtPY
-DncKjvbdlYrrTYgU
-EPCkKvbdWSNxCFMD
-DncKjvbdUVkoitAq
-DncLKvbdfHjvSORH
-DoCkKvbdCEPaWKMf
-EObkKvbdmbJvxPOV
-EPDKjvbdwzHefXeS
-EOcKjvbdvvlAvAuu
-DncLKvbdpxngfqDx
-DnbjjvbdIwtCIMQp
-DncKjvbdHDjvKBjK
-EOcKjvbdjmCLzFGo
-DnbkKvbdZMRdTnMN
-EObjjvbdEOcLLWbd
-DoDLKvbdkNBlZdfo
-EPCjjvbdemGXHNKL
-EOcLKvbdkxrqryGt
-EOcKjvbdsPvPKDWG
-EOcKjvbdXsMAlsoY
-DnbkKvbdmIcspuSB
-DoCjjvbdUaBpsRRy
-EOcLKvbdSPsfiedX
-EOcKjvbdSCEEkiYk
-DncKjvbdWXJXudEg
-DncLKvbdRyigrbvA
-DoDLKvbdUMVoAvOi
-DnbjjvbdZtIhxcsO
-EOcLKvbdJXsbHkpp
-DnbkKvbdZtIhyETO
-DncLKvbdHlBzmvpk
-EObkKvbdzHZMAMeX
-EPDKjvbdKCjCpjDY
-EOcKjvbdjblKqHUg
-DoDKjvbdGGJrNiUR
-DoDLKvbdrEFIomvB
-EPCkKvbdrovPKDVf
-DoDKjvbdpxnhGpdY
-EPDKjvbdemGWgNKL
-EPDLKvbdTlWPAuoJ
-EOcLKvbdhuZeWqtb
-DnbkKvbdhyuGLpnG
-EObjjvbdSBcdlJZL
-DnbkKvbdeEnqbWcK
-DnbjjvbdJKEAJofd
-EObjjvbdbQGfckzd
-EPCjjvbdRkYeuHLT
-DoDLKvbdXrlBMtOx
-EObkKvbdznoqFCkx
-EPDLKvbdjggLfFnL
-EPDKjvbdhuZdwSVC
-EPCkKvbdeEoRbXDK
-EPCkKvbdKaKgNCYR
-DoDLKvbdWWhxWDdg
-EPCjjvbdqUTfqqjt
-EOcKjvbdcSbkTdJa
-DncKjvbdauCHXjtI
-DoCkKvbdQlwbZNtz
-DnbjjvbdqvolCiYq
-EOcLKvbdePFSjstS
-EOcKjvbdhgKDZWKV
-EObkKvbdCgLfHAzc
-DncKjvbdnUuZkKSG
-DnbjjvbdlhctRUrB
-DoDKjvbdpyPHgREY
-DoCkKvbdjJegimXr
-EPDKjvbdfHkVrORH
-EPDKjvbdyTOIlqbH
-EPDKjvbdjKFhKNYS
-EPDKjvbdFWZPpMie
-EPCjjvbdIwsahLpp
-EObkKvbdKfGIBaQu
-DncKjvbdGFirOJTq
-DnbjjvbdpedFUWBI
-EPCkKvbdNeDshiKd
-EObjjvbdBiLBjhej
-EObjjvbdCJKbLJFj
-DncKjvbdvwMAuaWV
-DnbjjvbdZRMdhleR
-DncKjvbdhgKCyViu
-DoCkKvbdhficZWKV
-DnbjjvbdwkWdHzyf
-DncLKvbdVBBqSprZ
-EOcLKvbdUsmTelVj
-EOcLKvbdFxuVBEYC
-DoDKjvbdKaLHMbYR
-EPCkKvbdGdKuiaij
-EPDKjvbdfIKvRnQg
-DncKjvbdfekzNfgA
-DoCkKvbdJbicRJbx
-EOcKjvbdIwsagkpp
-DncKjvbdOEctIiKd
-DncKjvbdOTUVfduQ
-EPCkKvbdFWZPomKF
-EObjjvbdezvZFJUX
-DoCjjvbdtSrTYzFD
-DoCkKvbdbVCHYLTh
-EPDLKvbdZMRdUOLm
-DoDLKvbdNwoVzdNt
-EPDLKvbdFaPRZJzm
-DoCjjvbdxZhGFweS
-EPCjjvbdZQmFImFR
-DnbjjvbdsQWOibvG
-DoCjjvbdSBdFMIxk
-EPCkKvbdEObkKvcE
-DoDKjvbdqFcdsvAh
-EOcKjvbdezuyEhsw
-DnbkKvbdVqnXaeMD
-EObjjvbdnGeXlmgZ
-DncLKvbdCIkBkIfK
-EPDLKvbdpecdtWAh
-EPDKjvbdsQVnjCvG
-DoDKjvbdkDMLQfuH
-EObjjvbdAMhZTWzY
-EPCjjvbdiCObdvqR
-DoDKjvbdUWLoisaR
-DncLKvbdSPtHKGDw
-EObjjvbdaNLBrtmH
-EPDKjvbdUyHszKoO
-DoDKjvbdQwNccLhD
-EPDLKvbdnVUzKjRf
-DoCkKvbdRyigrcWA
-EOcLKvbdbiNKLGXY
-DncKjvbdlhctRVSB
-DoCkKvbdNPxRWNfs
-EObjjvbdANHxsXZx
-DnbjjvbdNrsvHEuQ
-EPCjjvbdmbJvxPNu
-EOcKjvbdJvVGEFGi
-EPDKjvbdUWLoitAq
-DoCkKvbdkDMKpfuH
-EOcLKvbdfjfzbfAE
-EOcLKvbdczZQYZRC
-DoDLKvbdQwNcblHc
-EObkKvbdOTTugEtp
-DncKjvbdbUagYLTh
-EPCjjvbdfNGWfmKL
-EObjjvbdiVZdvrUb
-DncLKvbdZyDinDMS
-EPCkKvbdmaiwYOmu
-EOcLKvbdqUUHSRkU
-DncLKvbdDncKjvbd
-DoCkKvbdVqmxCElD
-EPCkKvbdaRfDIUFk
-EOcKjvbdjKGIJlxS
-DncLKvbdkxrrTZHU
-DncKjvbdypnmIjXA
-DoDLKvbdJpyeOfOF
-DoDLKvbdwXMBVaVu
-DoDKjvbdKfFhCAqV
-DoCjjvbdIxTahLqQ
-EOcLKvbdADSYKZiQ
-DoCkKvbdMowpunHT
-EOcKjvbdgKfzbfAE
-EPDKjvbdhkddOVDZ
-EPDLKvbdemFwHMik
-EPCjjvbdUVlQKTaR
-DncLKvbdRWnECkhD
-DnbjjvbdkWXODbYX
-DoCjjvbdZeYGzghb
-DoCkKvbdSKyFtfkT
-DoDLKvbdBhkCLJFj
-DncKjvbdlhdTqVRa
-EPDKjvbdqqtjmjaN
-DoDLKvbdZjTHofbG
-EPDLKvbdJmADzHVB
-DoDLKvbdSBceLhyL
-EObjjvbdqwPlCiYq
-DncLKvbdYORAXtvU
-EPDLKvbdZnnJEdyj
-DoCjjvbduWNxKQsA
-EPDKjvbdWSNxCElD
-DoCkKvbdRjyFtgLT
-DoCkKvbdeOeSkUUS
-EOcKjvbdDihKVxKA
-EObjjvbdffLymgHA
-DoDLKvbdcScKsdKB
-EPDLKvbdlYsSSyGt
-DnbjjvbdGKeTDINV
-DoDLKvbdCTBCtGXS
-EObjjvbdEASIlyvw
-EPDLKvbdfMfWfmKL
-DoCkKvbdpstGqrLU
-DncLKvbdtlXwAsaX
-DoDKjvbdNrsvHEuQ
-EObjjvbdCTBDTfXS
-DoDKjvbdkMalZeHP
-DoDLKvbdQccBPqDr
-DnbkKvbdYqNEiNEq
-DnbkKvbdvBDyTOeI
-DnbjjvbdLAkGmBxR
-EObkKvbdLiBlRYAS
-EPCjjvbdTukpKUBR
-EObkKvbdhuZeWqtb
-DoDLKvbdZyEJmbkr
-DnbjjvbdxrmiNSCH
-EPCjjvbdKWVFdFHJ
-EPCjjvbdRWmcblID
-EPCkKvbdsQVoJcVf
-EPCkKvbdGcjuibJj
-DoCjjvbdJuteceHJ
-DnbjjvbdLLAhWAJy
-DncKjvbdULunaWOi
-EOcLKvbdHlBznXQk
-DoDKjvbdvBDxroEh
-DoDKjvbdzaAPHGbM
-DoDLKvbdUyITyjoO
-DnbkKvbduaDxroFI
-EObkKvbdAMhZSvzY
-EObjjvbdDoDKkWbd
-EObkKvbdGKdrbhNV
-EPCkKvbdmgFXlnGy
-EOcKjvbdzdzOzdzQ
-EPCkKvbdKkBHvAJy
-EOcKjvbdqAiFAWhE
-DoCjjvbdQvmdClID
-DncKjvbdMtsSKmAX
-EObjjvbdziuPpETU
-DoDKjvbddZyQYZQb
-EPDLKvbdauBgXkTh
-DnbkKvbdnCJvwnmu
-DoCjjvbdxUmFQyMO
-DncKjvbdXGYzUAPT
-EPDLKvbdOAJTUKSA
-DncKjvbddZyPwxqC
-EOcKjvbdqlzKYlIJ
-DnbjjvbdkVvnDaww
-DnbjjvbdZdxGzhIb
-DnbkKvbdDwxLtTsl
-EObkKvbdGKdrcHmV
-DncKjvbdTAFJHbOd
-DoDKjvbdEObkKvcE
-DnbkKvbdaNLCSuNH
-DoDLKvbdDxYLtTtM
-EObjjvbdVZIUZjnn
-DoCkKvbdNsUVfduQ
-EOcLKvbdGGKRmhtR
-EPDKjvbdbKlFnmcA
-DncKjvbdvvlAvBWV
-DoCjjvbdliEUQtrB
-DnbjjvbdjgfkfGNk
-EPDKjvbdlYsSTYft
-DoDLKvbdbKlGOnDA
-EPDKjvbdjAPfaPfj
-DnbkKvbdzGyMAMeX
-DoCjjvbdZnmhddzK
-EPCkKvbdIMBzmwQk
-EObkKvbdjEkHVPAO
-EPCkKvbdQccBPpdS
-EPCjjvbdhgKCxvJu
-DncLKvbdVgxVxHYz
-EOcKjvbdxVNFQxkn
-DoDKjvbdbLMGPNcA
-DncLKvbdGckWJajK
-DnbkKvbdrMyiyLgi
-EOcLKvbdKefICApu
-DoCjjvbdqFdEtWBI
-EPCkKvbdYSlBNUPY
-DoCjjvbdIwsbILpp
-EPCjjvbdmgFYMnHZ
-EObjjvbdQvmccMID
-DncLKvbdURQntthN
-EOcLKvbddxZtUSFz
-EPCkKvbdhtzFWqtb
-EOcKjvbdVBCRSpqy
-DncKjvbdtbbtvvOo
-EPCkKvbdczZQYZQb
-DnbjjvbdQwODcLgc
-EPDLKvbdtunXipsA
-DncLKvbdBhjajhej
-DoDKjvbdNrtVfduQ
-EOcLKvbdKWUfDdfi
-EObjjvbdpstHRrLU
-DnbjjvbdznpRFClY
-EPCjjvbdfNFvgMik
-DoCjjvbdUsltGLvK
-DnbjjvbdlqyVZsDi
-DoCkKvbdNPwqWOHT
-EOcLKvbdakLeoNcA
-DoDKjvbdsCGNMGkZ
-EPDKjvbdaRfDHsfL
-DoDKjvbdZtIhyDrn
-EPDLKvbdOStVgFUp
-EPCkKvbdeATplxKG
-DncLKvbdySmhlrBg
-DoDKjvbdnCKWwoOV
-DnbjjvbdDncKjvcE
-EOcLKvbdwzIGGXdr
-EObjjvbdmIdTqVSB
-DnbjjvbdUGznLwVe
-DncLKvbdTkvOaWPJ
-DncKjvbdyOSgwsIc
-DncKjvbdjmCLzFGo
-DoDLKvbdpssfqqkU
-EPDKjvbdmtuZjirG
-EOcKjvbdOFEThhkE
-DoDKjvbdIMBznWqL
-EPCkKvbdJvVFcdfi
-EPDKjvbdnBivxOmu
-EObkKvbdTvLojTaR
-DoCkKvbdMRwNZtpz
-EObjjvbdEARhlzXX
-DnbjjvbdcScLTcjB
-DncKjvbdxmrhXrhc
-DoDKjvbdEvZQQNKF
-DncLKvbdGLErcHmV
-DoDLKvbdFkFTChMu
-DoCkKvbdOFETiIkE
-EPDKjvbdnVUzLKRf
-EPDKjvbdmuUzKjSG
-EPCjjvbdwuNFQxkn
-DncLKvbdeATpmXjG
-EObjjvbdxUmEpxkn
-EPDKjvbdcSbkTcjB
-EPCjjvbdmbKXXoNu
-EPDKjvbdSQUHKFdX
-DoDKjvbdCTAbsewS
-EOcLKvbdVwJYVdFH
-DoDKjvbdZtIiYcsO
-EPDKjvbdhkeENtcZ
-EObkKvbdGBOpyJzm
-EPCkKvbdRMxCYmtz
-DoCjjvbdzjVPocsU
-DoDLKvbdrDdiPnWB
-EPCjjvbdFjdsDIMu
-DoDLKvbdSLZGUgLT
-EPDLKvbdKefHaaQu
-DoDKjvbdKCibpicY
-EOcLKvbdijGIJmYS
-EObjjvbdelfWgNKL
-DnbkKvbdbhmKKfWx
-DoDKjvbdSQUHKGEX
-EPCkKvbdnGdxMmgZ
-DncLKvbdJJdAKPgE
-EPDLKvbdmRyUyrdJ
-EOcLKvbdhzUfLqOG
-DoDKjvbdLAjgMaxR
-DoDKjvbdRosfjGEX
-EObkKvbdpssfqqjt
-DnbkKvbdjAQHAofj
-DncLKvbdidkHUoAO
-DoCkKvbdCIjbLIej
-DncLKvbdelfWfmKL
-DoDLKvbdxUleQxkn
-EPDLKvbdEvZQPljF
-DncLKvbdJbjDQjCx
-DncLKvbdyOTIXriD
-DoDKjvbdTulPjUAq
-DnbjjvbdJSyAsNYM
-EOcLKvbdbBVeGQQX
-EPCjjvbdbKkenmcA
-EPCjjvbdiGjDZWJu
-DncLKvbdcSbjsdJa
-EObkKvbdZtJIyDsO
-DoDLKvbdrafMkgLZ
-DoCjjvbdiMFDmuDZ
-DnbkKvbdnUtyjirG
-EPDKjvbdfNFvflik
-DoDLKvbdrWokcJZR
-DncKjvbdWWhxWDdg
-EPDLKvbdNeDtJJKd
-EOcLKvbdqlzKYkhJ
-DncKjvbdSQUHKGDw
-DoCkKvbdkHflFfOL
-EPCkKvbdRXNdDMID
-DncLKvbdSLZFtfkT
-EOcLKvbdZQldiMeR
-DnbjjvbdSBdElJYk
-DncLKvbdwWlBVaWV
-DoCjjvbdhzUfLqOG
-DoDLKvbdmJEUQuSB
-DnbjjvbdULvPBVoJ
-EPDLKvbdYkrDtOMN
-EPDKjvbdHEKujBij
-EObjjvbdJuuGDdfi
-EObjjvbdzaAOgGbM
-DncLKvbdkClLRHUg
-EObkKvbdYTMAmToY
-EObjjvbdxVMeQyLn
-DoDKjvbdrEFJQNua
-DncKjvbdYSlBNTnx
-DnbjjvbdrSUkOLAm
-EOcLKvbdrylQTBIO
-DnbjjvbdrouoKDVf
-DoDLKvbdwWkaVaVu
-DoCkKvbdZQmFIleR
-EPCjjvbdiLeENtby
-DoCjjvbdrDeJQNua
-EObjjvbdIGfzYxXg
-DoCkKvbdySmiMqag
-EOcKjvbdbVBgYLTh
-DoDKjvbdLFehCApu
-EPCkKvbdCDpAvJmG
-EObkKvbdZLrDtOLm
-EPCkKvbdZnnJEdyj
-EPCjjvbdZjSgpGbG
-EOcKjvbdWSOYBdkc
-EPDKjvbdwtleQyLn
-DnbkKvbdmJDtQuSB
-EObkKvbdkWXODbXw
-DncKjvbdezuyEiTw
-EObjjvbdnBjWwnmu
-EPDKjvbdZxdJmcMS
-EPDKjvbdrbGNMHLZ
-EObkKvbdEYXlTssl
-DnbjjvbdyTOJNRag
-DnbkKvbdGZVVAdYC
-EPCjjvbdTYLMNzkY
-DncLKvbdJcJcRKDY
-EOcLKvbdYpmEhldq
-DoCkKvbdjKFgjNYS
-EPDLKvbdJbibqKCx
-EPCjjvbdyTNiNSCH
-DoDLKvbdGGKRmhsq
-EPDLKvbdLAkGmCYR
-EPDLKvbdCEPaWKMf
-DoCkKvbdZsiIyDsO
-EPCjjvbdjbkkRGuH
-DnbkKvbdqYoHgREY
-DoDLKvbdZMRctNkm
-EObjjvbdDjIJvYKA
-DncKjvbdVqnXbEkc
-EPCkKvbdiHKCyViu
-EOcKjvbdkHflGFmk
-DoDKjvbdOFDsiIjd
-EOcLKvbdVrOYCEkc
-EPCjjvbdhtydvrUb
-DoDLKvbdrNZjYlHi
-EPDKjvbdVwIxWDeH
-EObkKvbdhyuFlRNf
-EPDLKvbdSKyFuHKs
-DoCkKvbdBhjajiFj
-DoDKjvbdhanbeWpq
-DncKjvbdGGJqnJTq
-EPDKjvbdZtJIyETO
-EOcLKvbdANIZSvzY
-DnbkKvbdptUHSSLU
-DoDLKvbdRDcBPpdS
-DoDKjvbdBcpAujNG
-DnbjjvbdaaVdeopX
-DnbjjvbdhtydvrUb
-DoCkKvbdkWXNcaxX
-DncLKvbdrNZjYkgi
-EPCjjvbdBiKajiGK
-EObkKvbdwkWcgzzG
-EPCkKvbdRDcApQcr
-DncLKvbdfekzNgHA
-DoDKjvbdiBoCdwRR
-EOcLKvbdIBlZdzAD
-DnbkKvbdZLqcsnMN
-DoDKjvbdatbGwkUI
-EObjjvbdmgFXlmfy
-EPDLKvbdxUmEqYkn
-EPDLKvbdauBfxKsh
-EObjjvbdsPvOjDVf
-DnbkKvbdkVwNdBww
-EPCkKvbdzaAPGfbM
-EOcLKvbdRotGjGDw
-EPCkKvbdqceJPmua
-EPDLKvbdZyDinCkr
-EObkKvbdCDoaWKMf
-EOcKjvbdjmCLzEgP
-EPDKjvbdHlBznXRL
-DncKjvbdeOeTLTtS
-EPCjjvbdGZUuBEXb
-DnbkKvbdqTtHRqjt
-EOcLKvbdFyUuAdXb
-EPDLKvbdEARiMzWw
-EOcKjvbdFeirNiUR
-DoCkKvbdzjUoocsU
-EOcLKvbdEztQdlCi
-DncLKvbdKCjCpibx
-EPCjjvbdxZhGFxFS
-EObjjvbdwWkaWAvV
-DnbkKvbdaaWFFoow
-EOcKjvbdBsBDUGXS
-EPDLKvbdmIdUQuRa
-DncKjvbdVAbRTRRy
-DoCkKvbdHffyxxYH
-EObjjvbdDGkfHAzc
-DoCkKvbdiCPDFXRR
-EPCkKvbdVrNwbEkc
-EPCkKvbdiGjDYvKV
-DnbkKvbdIMBzmvpk
-EPCkKvbdKxqJrztf
-DncLKvbdmIctQuSB
-EOcKjvbdaSFbhUGL
-DoCjjvbdmbKWwnmu
-DoCkKvbdiUyeWrVC
-DncKjvbdGGKRmhsq
-DoCjjvbdehLVqnQg
-DncLKvbdTkunaVoJ
-DnbjjvbdGZUtaDxC
-EPCjjvbdtSrSyZeD
-DoDLKvbdjbkkQfuH
-EOcLKvbdOFDtJJLE
-DnbjjvbdBdQAvJlf
-DoCkKvbduDDVWvPP
-EOcKjvbdZtJIyDsO
-DncLKvbdQccBPpdS
-DncLKvbdiUzEvquC
-EPCjjvbdvvkaWAuu
-DoDLKvbdZoOIeEzK
-DnbkKvbdkCkkRGuH
-EOcKjvbdRkZGVHLT
-EObkKvbdtcCuXVno
-EPCjjvbdMpYRVnGs
-DoDKjvbdFfJrNiTq
-DnbkKvbdZnmiFFZj
-EPDLKvbdbhmKKfWx
-DoDLKvbdDjHivXjA
-DoDLKvbdiLeDnVDZ
-EOcLKvbdUQqOtthN
-EPDKjvbdZHXEAOri
-EObkKvbdvAdYrndh
-EObkKvbdQlwaxnUz
-DoCjjvbdQwOEDLhD
-EPDLKvbdqrVKnLBN
-EObjjvbdwtmFQxkn
-EPDLKvbdTfznMWvF
-DnbkKvbdaMjasVNH
-EPCjjvbdcyyQXxpb
-DncKjvbdMfcQMpUk
-DnbjjvbdZnmheEzK
-DncLKvbdbrbkUDia
-DncLKvbdiCOcFXRR
-DoCjjvbdZxcimblS
-EPDLKvbdRkYfVHKs
-DncKjvbdDoDKjvbd
-EOcKjvbdGAnpxizm
-EOcKjvbdYpldhldq
-DnbkKvbdQwOEDMID
-DnbjjvbdcyxoxYpb
-DoCjjvbdakMGOnDA
-EPCjjvbdLAkGlawq
-DncKjvbdJJdAKPfd
-EOcLKvbdxrnImSBg
-DoDLKvbdNddUJIjd
-DncLKvbdfIKvRmpg
-DoCjjvbdiZuGLqOG
-EOcLKvbdeAURMwif
-DncLKvbdiCPCeWpq
-DoCjjvbdGcjvKBij
-EPDKjvbdRDcBQQdS
-EPCjjvbdUtMtGLvK
-EPDKjvbdyXhjBoyk
-DoDKjvbdqZOgfpcx
-EObjjvbdYTMAmUPY
-DoDLKvbdiCObeXQq
-DncKjvbdmJDtRUqa
-EObkKvbdSCEElIyL
-EObkKvbdNGbpMouL
-DoCkKvbdEzsqElCi
-EObjjvbdOStWHFVQ
-EPCjjvbdjmBlZdfo
-EPDKjvbdiUyeWqtb
-DnbjjvbdYSkaNUPY
-DoCkKvbdTAEhhCPE
-DoCjjvbdmttyjjSG
-EOcKjvbdrMyjZMIJ
-EPDKjvbdUsmTelVj
-EPCkKvbdNsTugFUp
-DnbkKvbdWRnYBeMD
-DncLKvbdHgGzZXxH
-EPDLKvbdZLrDsmlN
-DncLKvbdcSbkUDjB
-EObkKvbdziuPpDrt
-DoCjjvbdZyEJmblS
-EObkKvbdjggMFenL
-DnbkKvbdmfeXmNfy
-EObkKvbdiBncFXRR
-EPDKjvbdADSXiyiQ
-EObjjvbdLFfHbApu
-EOcLKvbdRMwbZOUz
-EPCkKvbdFVxoomJe
-EOcLKvbdZnmiEdyj
-DncLKvbdULunaVoJ
-DncLKvbddndsKtTr
-EPDKjvbdEztQeMDJ
-EObkKvbdcScKscjB
-EOcKjvbdFkErbglu
-DoCkKvbdsBfMlGkZ
-EPDLKvbdCSaCsfWr
-EPCjjvbdVAapsRSZ
-EOcLKvbdgFkzNfgA
-EPDLKvbdjhHLefNk
-EObjjvbdyNsIXsIc
-DoCjjvbdqcdiPmvB
-EOcKjvbdeXyssrFz
-DnbjjvbdEOcKjwCd
-DoDLKvbdGKdrbgmV
-DncLKvbdKQzEoFnF
-DoCkKvbdqvpMDJZR
-EObkKvbdZyEKODMS
-DncKjvbdBhjbKiFj
-DncKjvbdfHkVrNqH
-DncLKvbdeXyssrFz
-EObjjvbdxmsHwriD
-EPDKjvbdRyigsCvA
-DoCkKvbdZoNiEeZj
-EPCkKvbdhzUfLpnG
-DncKjvbdVUNUFkuj
-EPDKjvbdRXNdDMID
-EObkKvbdlBMnmALA
-EPDKjvbdffMZnHHA
-EPCjjvbdEARhlyvw
-EOcKjvbdVTltGLvK
-EOcKjvbdJqZdoFme
-EObkKvbdyOTHwsIc
-DoDLKvbdCfkegAzc
-DnbkKvbdZMRdTmkm
-DnbkKvbdhkeEOUcZ
-DoDKjvbdZnnIeEyj
-DnbjjvbdrafNMGkZ
-DoDLKvbdZtJIyESn
-EOcLKvbdaRecITek
-EPCjjvbdZoOJEdyj
-DoDLKvbdxsNhlrBg
-EPCjjvbdZxdKNcMS
-DoCjjvbdCWzdJEov
-EObkKvbdTppnttgm
-DnbkKvbdjmCLydfo
-EObkKvbdBsAbsewS
-EObjjvbdjgflFemk
-DnbjjvbdpstGrSKt
-EOcLKvbdOTTvHFUp
-DoCkKvbdczYowyRC
-EObkKvbdTvMPjUAq
-EOcKjvbdezvYeJUX
-EPCkKvbdzHYlANEw
-EPCkKvbdqcdiQOVa
-DoCkKvbdsrrSxyeD
-EObkKvbdOTUWGeUp
-DoDKjvbdbUbHYLTh
-DoCkKvbdHakydzAD
-DoDKjvbddjJrWUzn
-EPDKjvbdmaiwYPOV
-DoCjjvbdtbcUwVno
-EPDLKvbdrMyjYkgi
-DoCjjvbdUQpoUtgm
-DncKjvbdddoSBwDK
-EPCkKvbdatbGwkTh
-DncKjvbdmbJvxPNu
-DnbjjvbdwzHeewdr
-DncLKvbdzitpPcrt
-EOcLKvbdrMyjYkgi
-EOcLKvbdrEFIomvB
-DoDLKvbdiifIJlxS
-EOcLKvbdtvOYKQsA
-DoCkKvbdxsNhlqag
-DnbjjvbdyTOIlqag
-DncLKvbdIGgZyYXg
-EOcKjvbdUsmUGMWK
-EObkKvbdhzUfMQnG
-EPDLKvbdZxdJnCkr
-DncKjvbdKWUeceGi
-EOcLKvbdmbJvwnnV
-DoDLKvbdDncKjvbd
-EPCkKvbdZoNheEyj
-DncLKvbdVqnXadlD
-DncLKvbdtunXipsA
-DncLKvbdjAPgBPfj
-DoCkKvbdyqPNJKXA
-DncKjvbdrpWPJbuf
-EOcKjvbdqvpMDJYq
-DnbjjvbdcTDLUDia
-DnbkKvbdiGjCxvKV
-EPDKjvbdauBfxKtI
-DoCkKvbdLFfHbApu
-DoDLKvbdHffyyXwg
-EOcKjvbdIxUCHkqQ
-DoDKjvbdzQoMiJwA
-DoDKjvbdyYIjBoyk
-EObkKvbdxnSgwriD
-EObkKvbdIMBznWpk
-EPDKjvbdYlSDtOMN
-DoDKjvbdijGHjMxS
-EOcKjvbdYkqcsnMN
-DoCjjvbdmaiwYOmu
-EPDKjvbdHELWKBjK
-DoCjjvbdwtmFRYlO
-EOcLKvbdFeiqnJTq
-EPDKjvbdiBncEvqR
-DoCkKvbdJXsbILpp
-EObjjvbdULunaVni
-DncKjvbdDwxLstUM
-DoDKjvbdrWpMChyR
-EObkKvbdYzcFqivZ
-DncKjvbdEzspdlDJ
-EPDKjvbdfMfXGmKL
-DoCkKvbdCTAbtGWr
-DoDLKvbdRkZGUgKs
-EPCkKvbdFWZQQMie
-DnbjjvbdxVNEqYkn
-DoCjjvbdeFPRbWbj
-EPCkKvbdZshhyESn
-EObjjvbdqrVKnLAm
-EPCjjvbdptUGqqjt
-EOcLKvbdrEEhpOVa
-DncKjvbdzQoNIjXA
-DncLKvbdmgFXlnGy
-DoDKjvbdZjShQHBf
-DnbjjvbdjKGHjNXr
-DoDLKvbdqFcdsvAh
-EPCkKvbdOEdUIiLE
-EPDLKvbdNeEUJJKd
-EPCjjvbdzHZMANEw
-DnbkKvbdqlzJyMIJ
-DnbjjvbdelfXHMjL
-EPCkKvbdANHyTWzY
-DnbjjvbdREDBPpcr
-DncLKvbdQmYCZOUz
-EOcKjvbduoTzpjoU
-DoCjjvbdqrUjmkBN
-DnbjjvbdyfxlANFX
-EOcLKvbdJmADygUa
-EPDLKvbdyNrhYTIc
-DoCjjvbdCTAbtFwS
-DncLKvbdSwkLmzkY
-DnbjjvbdjhHMFfNk
-DoCkKvbdZeXfzhIb
-DnbjjvbdbrbjtEJa
-DoCkKvbdxrmhmRbH
-DoDLKvbdrXQLbhxq
-EObjjvbdTulQKUBR
-EPCkKvbdMpYQumgT
-DncKjvbderBWzlDP
-DoCjjvbdiGjCxvJu
-DoCjjvbdlZSqsZGt
-EOcLKvbdZisIPfaf
-DnbkKvbdHEKvKBij
-DncLKvbdjSziSjiz
-EPDKjvbdCEQBWJmG
-EObkKvbdGGKRmiUR
-EPDKjvbdMuTRkNAX
-DnbjjvbdrXQLbiYq
-EPCjjvbdOTUWGduQ
-EPCjjvbdnBjXXoNu
-DoDLKvbdcarmSAUN
-DoCjjvbdNPwqWOGs
-EObkKvbdUslsekvK
-DnbjjvbdzaAPGfbM
-DoCkKvbdGdLVjCJj
-DoDLKvbdRjyFtfkT
-DoDLKvbdGLFTDHlu
-DnbkKvbdGFirOJUR
-EPDLKvbddoFTLUUS
-EObkKvbdkxrrTZGt
-DncKjvbdxrnJMqag
-EOcLKvbdCDpBWJmG
-DoCjjvbdlqyUysDi
-EPDKjvbdTfzmlXVe
-DncKjvbdEuxpQMie
-EOcKjvbdbLLfPNcA
-DncKjvbdVgxWXgYz
-DoDKjvbdrbFmLgKy
-DoCjjvbdzaAPGfbM
-DncLKvbdYSlAlsoY
-DoDLKvbdZyEJnClS
-EPDLKvbdEvYopMjF
-DncKjvbdmtuZjiqf
-DoCjjvbdCJKbLIfK
-EOcLKvbdcIljLFvx
-EObkKvbdrJAKFNPF
-DoDKjvbdBiKbKhfK
-EPDKjvbdWIYWYGxz
-DoCkKvbdjAQGaQHK
-DnbjjvbdjblLQftg
-DncLKvbdbhlikGXY
-EPDKjvbdZLrDsmkm
-DoDLKvbdVTlsfMWK
-DoCjjvbdliDsptqa
-DnbkKvbdjuvmcbXw
-DoCjjvbdbVCHXjtI
-DoCkKvbdQvmdClID
-DnbjjvbdLAkHNCXq
-EPDKjvbdZtIhyETO
-DnbkKvbdYkqdTmlN
-DoDKjvbdMtrrKmAX
-DncLKvbdJXtCIMQp
-EPCkKvbdlhdTqUqa
-EObjjvbdnHFYNNfy
-EPDKjvbdxrmhlrBg
-DncLKvbdiLeDmtcZ
-DncKjvbdNrsufdtp
-EObkKvbdlhcsptqa
-EObjjvbdNeETiIkE
-DnbkKvbdxsNhmRbH
-DnbkKvbdADRxKZhp
-DnbjjvbdTqROuUgm
-EOcKjvbdpxoIGqDx
-EOcLKvbdqBIeAWhE
-DnbjjvbdCIkBjiFj
-DncLKvbdTlWPBWPJ
-DoCjjvbdEKHjVxKA
-DnbkKvbdZRNFImEq
-EObkKvbdJbicQjCx
-DoDKjvbdNsTufeVQ
-EObjjvbdDxYMUTsl
-DoDLKvbdaSFcITfL
-EPDKjvbdcTDLTcia
-DoCkKvbdlhdTpuRa
-EObjjvbdCJKbKiFj
-DncKjvbdqAiFAWhE
-EPDKjvbdUslsfLuj
-EObjjvbdWWiXuceH
-EPCjjvbdOEcshiLE
-EPDLKvbdEJhJuxKA
-DoCkKvbdKyRKSzuG
-DncKjvbdHffzZXxH
-EOcLKvbdSLZGUfkT
-EObkKvbdHgHZxwxH
-DnbkKvbdcSbjtEJa
-EPDKjvbdZGwEAPTJ
-DoDLKvbdeAURNXif
-EPDLKvbdMpYQunGs
-EObkKvbdNeDshiKd
-DoDLKvbdzoQQdbkx
-EPDKjvbdWHxWXfxz
-EPCjjvbdCEPaVjNG
-DoCjjvbdbhlikFvx
-EOcLKvbdBvzdIdpW
-DoCkKvbdNPwqWNfs
-EPCjjvbdbhlijfWx
-DncKjvbdqwQLbiZR
-EObjjvbdkClLRGuH
-DncKjvbdNHDQNQVL
-DncKjvbdhkdcmuDZ
-EOcKjvbdKWVFdFHJ
-EPDLKvbdYTMBMtOx
-EObkKvbdSKxfVGjs
-DncKjvbdZoOJEdzK
-EObjjvbdMpXqVmgT
-EPDKjvbdhaoDFXRR
-EPCjjvbdrpWPJcVf
-EOcKjvbdczYpYZRC
-DoDLKvbdLLAhWAJy
-DoDKjvbdEObkLXDE
-EPDKjvbdnVUykKRf
-DnbkKvbdBvzdIdov
-EOcKjvbdGFirOJUR
-DoCjjvbdGGJrNiTq
-EPDKjvbdqAheAWgd
-DncKjvbdxmsIXriD
-EObkKvbdVAbQsRRy
-EPDKjvbdRXODbkhD
-EObjjvbdVZHtZjoO
-EOcKjvbdffMZmfgA
-EOcLKvbdbiMjLGXY
-DoDKjvbdUQpoVUhN
-EPCkKvbdhfjCxuiu
-DoCkKvbdziuPocsU
-EObjjvbdBhkBkJFj
-DnbjjvbdeAURNXif
-DncKjvbdQlxByOUz
-EPDLKvbdRbEEkhxk
-EPCjjvbdrbFlkgKy
-DoCjjvbdaSFbhUGL
-EOcKjvbdsCGMkfkZ
-DoCkKvbdJbicRJcY
-DnbkKvbdqlzKYlHi
-DoCjjvbdZyDimblS
-EOcLKvbdsrqsZZdc
-DoDKjvbdjggMGGNk
-DnbkKvbdADSXiyiQ
-DoCkKvbdehKurORH
-EOcLKvbdrylPsAgn
-EPCjjvbdRWmdClID
-EPCjjvbdbsCjsdKB
-EObjjvbdUQpoVVHm
-DnbkKvbdiCObeXQq
-DncLKvbdUQpoVUhN
-DoCkKvbdKCicRKDY
-DncKjvbdjlakzFGo
-DnbkKvbdMgDQMpVL
-DoDLKvbdWSNxBeMD
-DnbkKvbdvBEZTOdh
-EPCjjvbdsQWPKCuf
-EObjjvbdZeYGzghb
-DnbkKvbdxsNhmSCH
-EPDLKvbdkySrTZGt
-EObkKvbdrDdiQNvB
-DncLKvbdHDjuiajK
-DoCjjvbdURROtuIN
-DncKjvbdKyRJrztf
-EObjjvbdIGfyyYXg
-DncLKvbdXsMBMtPY
-EPCkKvbdaaVdfPpX
-DncKjvbdiHJbyWJu
-EOcKjvbdSKxfVGjs
-DoDKjvbdxZgfFwdr
-DnbkKvbdRNYCZNtz
-EPCkKvbdCDoaWKNG
-DoDKjvbdDjHjWYKA
-EPDKjvbdyNsHwsIc
-DoDKjvbdUtNTfLuj
-DoDLKvbdGGKRnJTq
-EPCkKvbdsBemMGjy
-EPDKjvbdSQUHKFcw
-DnbjjvbdkClKpfuH
-EObjjvbdRyjHrcWA
-EOcLKvbdSPsfjGEX
-DoCjjvbdGckWKBij
-EPCkKvbdGdKujBij
-DnbjjvbdcJMijewY
-EPDKjvbdkIGkefOL
-EPCkKvbdrSVLNkBN
-DnbkKvbdrpWPJbvG
-DoDLKvbdZirgpHBf
-EPCkKvbdHDjujBij
-EPCkKvbdvBDySoEh
-DoDLKvbdePEsKssr
-DoDLKvbdZRMdhldq
-EObjjvbdUQqPUtgm
-DoDLKvbdMSXNZtpz
-EObjjvbdVYhTzKnn
-EOcKjvbdrNZixlIJ
-DoDLKvbdTpqPVVIN
-DnbkKvbdkCkjqHVH
-DnbkKvbdkWWmcaxX
-EOcLKvbdJSyBSlwl
-EObkKvbdmRxtzTEJ
-DncKjvbdptTgRqjt
-EOcLKvbdqYoHfqEY
-DoDKjvbdGZUtaDxC
-EOcKjvbdKQydoGNe
-EPDLKvbdssSTZZeD
-EObjjvbdhkddOUcZ
-DoDKjvbdGdKvJbKK
-EOcKjvbdULvPAuoJ
-DoCkKvbdrEFJPnWB
-DnbjjvbdfNGWfmJk
-EPCkKvbdkWXODaww
-EOcKjvbdMtrrKmAX
-DnbjjvbdEuyPpMie
-EObjjvbdrSVKmkAm
-EPDLKvbdhanbdvqR
-DoCkKvbdkWWmdBww
-DnbjjvbdxUleQyLn
-EOcLKvbdpyPHfpdY
-DncKjvbdpfDeTvBI
-DoCkKvbdnVVZjirG
-DnbkKvbdzjVPocsU
-EPDLKvbdmfdwlmfy
-DnbkKvbdSKyFuGjs
-EObkKvbdVAaprpqy
-EPCjjvbdUaBqTRRy
-EObkKvbdZoNhddzK
-DncKjvbdrNZiyLhJ
-DncKjvbdaMkBruNH
-DoDKjvbdZyDjNcMS
-EPCjjvbdZjTIQHCG
-EObkKvbdjJegilwr
-EPDKjvbdHffzYxYH
-EPDKjvbdaSGChTfL
-DoDLKvbdcJMjLGWx
-EOcLKvbdtlXvaTaX
-DoCjjvbdGYuVAcxC
-EOcLKvbdUsltGLvK
-EPDLKvbdRNXayOUz
-DoDLKvbdRadFLiYk
-EOcKjvbdCTAbsfXS
-EPCjjvbdGZVVAdYC
-EPDLKvbdypnliJwA
-EPCjjvbdSBdFLhxk
-EOcLKvbdGLFSbhNV
-DncKjvbdTppnuUhN
-EObkKvbdezvYdiTw
-DoCkKvbdIsZBSlxM
-DncLKvbdRNYBxmtz
-EPCkKvbdeFOqawCj
-DnbjjvbdtSrTYzEc
-DncKjvbdkDLkQgUg
-DnbjjvbdEARhlzXX
-EOcKjvbdWRmxBeMD
-DoDLKvbdzQnliKXA
-EPDKjvbdpfDdtWAh
-DncLKvbdMgCpMpVL
-DnbkKvbdiZtfLpmf
-EPDLKvbdzQoNJJwA
-EPCkKvbdaNKasUmH
-EPDLKvbdRbDeLhyL
-DoDLKvbdKRZeOeme
-EOcKjvbdZxdJmcMS
-DncLKvbdeKKSVtzn
-EPDLKvbdRjxeuHLT
-EObkKvbdNGcPmPtk
-DoCkKvbdtcDVWvPP
-EPCjjvbdcTDKscjB
-DoDLKvbdbrcLTcia
-EObjjvbdvlvAMcdm
-EObjjvbdFxuVBDwb
-EPCjjvbdhkdcmtby
-EOcKjvbdRotHKFcw
-DncLKvbdelfWgNKL
-EObkKvbduCbuXVno
-EPDKjvbdEYXlUUUM
-EOcKjvbdbUbHXjsh
-EOcLKvbdmgEwmOHZ
-DoCjjvbdEXxLsssl
-EPDLKvbdZLqdTmlN
-EOcLKvbdbsCkUEJa
-EOcKjvbdqvpLbhxq
-EOcKjvbdfIKvRmpg
-DncLKvbdGBOpxizm
-DoDLKvbdnBiwXnmu
-DoCjjvbdKWVFceGi
-EOcLKvbdRbEEkiZL
-EObjjvbdffMZmgHA
-DoCjjvbdUMWPBWPJ
-EObkKvbdkClKpftg
-DoDLKvbdBhkBkIej
-DoDKjvbdhgJbyWJu
-DoCjjvbdEASIlzXX
-EPDKjvbdGZUtaDxC
-DnbjjvbdlYsRryHU
-EOcKjvbdhgKCyWJu
-EPCkKvbdsQWOibuf
-DoCjjvbdRMwbYmtz
-DoDKjvbdZxdJnClS
-EPCjjvbdJTZBTNYM
-DnbjjvbdiLeEOUby
-EOcLKvbdjEjgUoAO
-EPCkKvbdzitopDrt
-EPCjjvbdtcCuWvPP
-DncKjvbdZMRdUNlN
-DoDLKvbddZxoxZRC
-DoDKjvbdFVxoomKF
-DoCkKvbdSLYeuGkT
-DncLKvbdYSlBNTnx
-EObkKvbdeuzwoizs
-EPDKjvbdUQpoUuIN
-DoDKjvbdmpZxujyC
-EPCjjvbdDGlFgAzc
-EPCjjvbdkCkkRGuH
-DnbkKvbdvlvAMdFN
-DoDLKvbdatbHXkUI
-EPCjjvbdFWYoolie
-DnbjjvbdrEFJPnWB
-EObkKvbdpyOggQcx
-EOcKjvbdqwQMChxq
-EOcKjvbdqrVLNkAm
-EOcKjvbderBWzlCo
-DoDLKvbdRWmdDMHc
-EOcLKvbdZoNhdeZj
-DnbkKvbdunszpkPU
-EPDKjvbdGAnpxizm
-DoCkKvbdKCjCqKCx
-EOcKjvbdZshhyDrn
-DoDKjvbdddoSBvcK
-DncKjvbdcScKtEJa
-EOcLKvbdZjShQGbG
-DncLKvbdDncKkXDE
-EPDLKvbdrzMQTBHn
-EPDLKvbdIxUBglRQ
-EPDKjvbdcyxpXxpb
-EObkKvbdMSXMytpz
-EObkKvbdijGIKMwr
-EObkKvbdzdzOzdyp
-DnbjjvbdeATplwjG
-DnbkKvbdcIlikFwY
-DoDLKvbdsPunicVf
-EPDKjvbdmozYvLZC
-DoCkKvbdkyTSSxgU
-DncLKvbdRWnDcLhD
-DncKjvbdHELWJaij
-DncKjvbdZQmFIleR
-EOcKjvbdiCOcEvpq
-EOcKjvbdbrbkUEKB
-EOcLKvbdOFEThhjd
-EObkKvbdbBVdepPw
-EObkKvbdUxhTzKnn
-EObkKvbdzoPpdblY
-EOcLKvbdrbFllHLZ
-DoDKjvbdjggMGGOL
-DncLKvbdqceJQNua
-DoDKjvbdiHJbxvJu
-DoDLKvbdySnImSBg
-EPCkKvbdtTRrxzFD
-EOcLKvbdkVvnEBxX
-DnbjjvbdtcCtvvOo
-EPCkKvbdyzdmrHiI
-DoDKjvbdFjdrbhMu
-DoDLKvbdZyEKODLr
-DoDKjvbdURQnuVHm
-EPCkKvbdZyDimcMS
-EOcLKvbdNQXpunHT
-DnbjjvbdQlxCYmtz
-DnbjjvbdCDoaVimG
-EObjjvbdsPvOibvG
-DnbjjvbdgGLynGgA
-DncLKvbdCDoaWJmG
-EObkKvbdnCKXXnnV
-EOcLKvbdUxgtZkPO
-DnbkKvbdiMFDmuDZ
-DncKjvbdiGicZWKV
-DoDKjvbdcScKtEJa
-DoDKjvbdpssgRqkU
-DncKjvbdsBfNLgKy
-DoDLKvbdGYttaDwb
-DncKjvbdjvWnDaxX
-EPCjjvbdhgJcYuiu
-DnbjjvbdxUldpxlO
-DoDKjvbdUaCRSqSZ
-DnbkKvbdNwoVzdNt
-DoCkKvbdZnnIeEzK
-EPDKjvbdNeEUJIkE
-DnbjjvbdJbjDQjDY
-EPDLKvbdKVuFceGi
-EPCkKvbdKkBIWAJy
-EObjjvbdrafMlHLZ
-EOcLKvbdZLqctNkm
-EObjjvbdMgComPtk
-DncKjvbdjhHMGGOL
-DnbkKvbdJYUCIMQp
-DoCjjvbdhlEcnVCy
-DoDLKvbdxsOJNSBg
-EOcLKvbdRMxBxmtz
-EOcLKvbdHDjujCJj
-EObjjvbdZRMdhmFR
-EPDLKvbdUQpoUthN
-EPCkKvbdvlvANEFN
-EObkKvbdSCEEkhxk
-EPCjjvbdLBKfmCXq
-EPDKjvbdOStVfduQ
-EPCjjvbdGcjvJbKK
-DnbjjvbdVBBprpqy
-DoCjjvbdirziTLJz
-DncLKvbdFWYpQNKF
-DoDLKvbdjKGHjNYS
-DncKjvbdZnmiEdzK
-DoDKjvbdySmiMrBg
-DncLKvbdeAURNYKG
-EPDLKvbdemGWflik
-DoDKjvbdaMkBrtmH
-DoDKjvbdIxUBglRQ
-DoDKjvbdOEcshhjd
-EPCjjvbdpxnhGqDx
-DncKjvbdYSlBNToY
-DnbjjvbdGGKSOJUR
-EOcLKvbdZjTHpGbG
-EPCjjvbdIHGzZYXg
-DncKjvbddndsLTsr
-DnbjjvbdqAheAXIE
-EOcKjvbdVhXvXfxz
-DncKjvbdFyVVAdYC
-DnbjjvbdJvVFceGi
-EPCkKvbdoznDjwoA
-EPDKjvbdvPTzqLPU
-EObjjvbdiifIKMwr
-EOcLKvbdlZTSSxgU
-EObjjvbdQvnECkgc
-DncLKvbdjgfkfGNk
-DnbkKvbdCDoaWJmG
-DnbkKvbdxnTHwriD
-DncKjvbdoAKzshDn
-DoDKjvbdvAdZSndh
-DnbjjvbdRpTgKFcw
-EOcLKvbdiiegilwr
-EOcKjvbdGdLVjBjK
-EObkKvbdGFjRmhtR
-EPCjjvbdZsiJYdTO
-EPCjjvbdJJdAKPfd
-EPDLKvbdKfGHbBRV
-DncLKvbdjhHMFenL
-EObkKvbdbLMFnnDA
-DoCjjvbdUWMPisaR
-DnbkKvbdZjTHpHCG
-EObkKvbdbsCkTcjB
-EPCkKvbdSLYfUfkT
-DoDKjvbdZeYGzhIb
-DncKjvbdrovPJcVf
-EPCjjvbdePFSjtTr
-DncKjvbdJbibqJbx
-EPDLKvbdDxYMUUTl
-DnbkKvbdZHXEAPSi
-DncKjvbdVTmUFlVj
-EPDKjvbdzoQREcLx
-EPDKjvbdKfFhCAqV
-DoDKjvbduDDUwVoP
-DoDKjvbdgFlZmfgA
-EObjjvbdTAEiHbOd
-DoCkKvbdMowqVmgT
-DncKjvbduMXwBTaX
-DncKjvbdeYZssrFz
-DncLKvbdmfdxNNgZ
-DncLKvbdxLXDgzzG
-DoCjjvbdNsTvGduQ
-EPDLKvbdTpqOtuHm
-EObkKvbdZMRctOMN
-EPCjjvbdHEKuibJj
-EPCjjvbdBiKbLJGK
-DoCjjvbdUtNUFkvK
-EOcKjvbdVTltFkuj
-DnbjjvbdczYpXxqC
-EPDLKvbduWNxKQsA
-EOcKjvbddZyQYYqC
-DnbkKvbdyfyMAMdw
-DncLKvbdDihKWXjA
-EPCjjvbdoAKztIDn
-DoCjjvbdcTDLUDjB
-EPDKjvbdJcJcRKCx
-DncKjvbdIxTahLqQ
-DoDLKvbdTqROttgm
-DoDKjvbdjblLQgUg
-EOcLKvbdTppnuUhN
-EPCjjvbdrMyjZLgi
-EObjjvbdypnmIjXA
-DoCkKvbdczYoxZRC
-EObkKvbdFjeTDHmV
-EPCjjvbdZxcimbkr
-DoDKjvbdatbHXkUI
-EPDKjvbdvmWAMdEm
-DoCjjvbdqwQMCiYq
-DoDKjvbduWNwjQsA
-DncKjvbdACqwjZiQ
-DoCjjvbdOTTvGduQ
-EObkKvbdirzhsKiz
-EObjjvbdOTTugFUp
-EOcLKvbdKDJbqJcY
-DoCjjvbdiUyeXRtb
-EObjjvbdfMfXHNKL
-EOcKjvbdjhHMFfNk
-DncKjvbdRpUGjFcw
-EPCjjvbdfILVqnRH
-EOcKjvbdiHKCyWJu
-DoDLKvbdnPzYvLYb
-DnbkKvbdnGeYNOHZ
-DoDKjvbdtvOXjQsA
-EPCjjvbdmIctRVRa
-EOcKjvbdpyOhGpcx
-DnbkKvbdKQydoFnF
-DoDKjvbdkVvnDaww
-EObjjvbdbUbHXjsh
-EOcKjvbdCJLCLIfK
-EPDKjvbdZeYGzhJC
-DncKjvbdcScLUDia
-DoCkKvbdQmXbZOUz
-EOcLKvbdRadFMIxk
-DnbkKvbdziuPodSt
-EOcKjvbdEXxMUUTl
-DnbjjvbdegjvSOQg
-EObkKvbdZtJJYdTO
-EPDKjvbdVAbQsQrZ
-DnbkKvbdkHflFfOL
-EObkKvbdtcCuXWOo
-DnbjjvbdcTDLUEJa
-EPCjjvbdZjTIQHBf
-EObjjvbdTAEhhCPE
-EOcLKvbdbhlikFwY
-DoDLKvbdEPDKkWbd
-EOcKjvbdZtJJZESn
-EPDKjvbdZMRdUNlN
-EPCkKvbdhgJcZWJu
-DncKjvbdUaBqSprZ
-EOcLKvbdEJgiuxKA
-EObjjvbdSPtHKFcw
-DoCjjvbdFfKSOJUR
-EObjjvbdVrOXaeMD
-DoCjjvbdrXPkcIxq
-DoDKjvbdZjTHofaf
-EOcLKvbdVYgszLOn
-DncKjvbdIwsagkpp
-DncLKvbdTkvPBVni
-EOcLKvbdUtNUFkuj
-EObjjvbdZnmheEyj
-EPDKjvbdyYIjBoyk
-EPCkKvbdqlyiyMIJ
-EPCjjvbdYzbeqjVy
-EOcLKvbdUQqOuVIN
-EObkKvbdZMSDtOMN
-DncKjvbdVvhxWDdg
-EOcLKvbdiZuFlRNf
-EObjjvbdZtJJYcrn
-EPCjjvbdmuUzKirG
-DoDLKvbdVUMtGMVj
-EPDLKvbdhWyAzzAJ
-DoDLKvbdfIKvRmqH
-DnbjjvbdqdFIpOVa
-DnbkKvbdIwtCHkpp
-EOcKjvbdeEnrBvcK
-DnbkKvbdJuuFdFGi
-DoDKjvbdeOeTKtUS
-EObjjvbdKWUfDeGi
-EPCjjvbdiHJbyViu
-EOcKjvbdBraCsfWr
-DoCjjvbdGYuVBEYC
-DoCkKvbdnHEwmOHZ
-EPDKjvbdZisIQGaf
-EPCkKvbdmpZxvKyC
-DoDLKvbdmSYuZrdJ
-EObkKvbdKDJbqKCx
-EOcLKvbdZsiJZETO
-EPDKjvbdnCJvxOmu
-DoCkKvbdjgflGGOL
-DnbkKvbdRosfjFdX
-EPCjjvbdRECaQQcr
-DnbkKvbdNHComQVL
-EPCjjvbdrJAKEmOe
-DoDLKvbdqBJFAXIE
-DncLKvbdGLFTDINV
-EOcLKvbdhgJbxujV
-DnbkKvbdjSzhsKiz
-EOcKjvbdKWVGDdfi
-DoDKjvbdZnnIeFZj
-DnbjjvbdxxIiaoyk
-EObkKvbdczYpYZQb
-EPCjjvbdZxcjODMS
-EObkKvbdiHJbxvKV
-DoCjjvbdJzoexEAN
-DoCjjvbdaRfChTek
-DoDLKvbdxwhjCPyk
-DoDLKvbdVqnYBeLc
-DnbkKvbdRDcBPpdS
-EObkKvbdYqNFImFR
-EPDKjvbdsrrTYzFD
-EOcKjvbdqcdhpOWB
-EOcKjvbdaNLCTUmH
-DoDKjvbdnPzYukZC
-DncLKvbdKCjDRKCx
-EObjjvbdFkEsDINV
-EPDKjvbdMgDQMouL
-DncLKvbdOXnuzdNt
-EPCjjvbdpstGqrLU
-EPCkKvbdRbDdkhyL
-DnbkKvbdaogGdLzd
-DncKjvbdjlbLydgP
-DnbjjvbdUMVoAvPJ
-EPCjjvbdJqZeOfOF
-DoDLKvbdUsmTekvK
-DoCjjvbdpyOgfpcx
-DnbkKvbdJYUCIMRQ
-DncLKvbdjJfHjMwr
-DoCjjvbdRosgKGDw
-DoCkKvbddZxpYYqC
-DncKjvbdddnrBwCj
-EPDKjvbdijGIJlxS
-DoCjjvbdkWWnECYX
-EObkKvbdqlzJxlIJ
-EOcLKvbdzaAPHHBl
-DoDKjvbdlZTSSyGt
-DnbjjvbdatbHXkUI
-EOcLKvbdNdcshiKd
-DncKjvbdGdKujBjK
-DnbjjvbdRWnDcMID
-DoCjjvbdSxKlNzkY
-EPDKjvbdHDkWJbJj
-EPDLKvbdZxcjNcLr
-EOcKjvbdLYqKSzuG
-EPDLKvbdjuvmcaww
-EPDKjvbdxmrhYTJD
-EOcKjvbdZirhPfaf
-DnbjjvbdfIKurNqH
-EPCkKvbdYTLaNTnx
-DoDLKvbddtAUASlv
-EPCkKvbdZLrDtOLm
-DnbjjvbdnGdxMnHZ
-DoCjjvbdeFPSCXCj
-DncLKvbdYORAYUvU
-EPCjjvbdrXQMDJZR
-EPCkKvbdRpTfjGDw
-DoCjjvbdpssfrSKt
-EPCkKvbdKWUedFHJ
-DnbjjvbdVvhwvDdg
-DncKjvbdLrWlzUpz
-DncKjvbdwtmFQxkn
-EObkKvbdmIdTqUqa
-DnbkKvbdJutedFHJ
-EOcKjvbdVZITykPO
-DoDLKvbdhbPDFXQq
-DnbjjvbdmuVZjirG
-DncLKvbdieKgVPAO
-DncKjvbdEuyPpNJe
-DoDKjvbdiHJcYuiu
-EPDKjvbdmgFYNNfy
-DnbkKvbdOTUWGeUp
-DoCjjvbdZRNFJNFR
-EPDLKvbdYpmFJNEq
-EObkKvbdRMxBxnUz
-DncKjvbdNQYQvOHT
-EOcLKvbdMoxRVnHT
-DoDKjvbdpyOhGpcx
-EObjjvbdRyjITDWA
-EObjjvbdrykosAhO
-EOcLKvbdhaoDFXRR
-DoDLKvbdIryBSmYM
-DnbjjvbdlZSrTYft
-DncLKvbdegjurORH
-EOcKjvbdJYUCHlRQ
-EOcLKvbdREDApRES
-EObjjvbdmgFYMnHZ
-EPCkKvbdZyDimblS
-DoCkKvbdiCPCdwQq
-EObkKvbdbVBgYKtI
-DoDLKvbdNddUJJLE
-DoCjjvbdrpVnibuf
-EPDLKvbdKaLGlbYR
-DnbjjvbdTpqPVUhN
-DoCjjvbdcyxoxYpb
-EPDKjvbdhfibxvJu
-EPCjjvbdJpydnfNe
-DncLKvbduWOXipsA
-DoDKjvbdrRtkNkAm
-EObkKvbdNQXqVmgT
-EObkKvbdCIkBkJFj
-EPDLKvbdqUUHSRjt
-EOcLKvbdeYZtTqez
-EPCjjvbdqUUHRqkU
-DncKjvbdkWXODaxX
-EPCkKvbdaNKbTVNH
-EPCjjvbdvAcxroEh
-EOcKjvbdlZTSTZGt
-EOcLKvbdLAkHNCYR
-DoDLKvbdUtMselWK
-EPCjjvbdnVUzKjRf
-DoDLKvbdypoMiJwA
-EObjjvbdKDKCqKDY
-DoCjjvbdrWolDIxq
-DoDKjvbdwyhFfXeS
-EOcKjvbdnGeYMmgZ
-DoDLKvbdREDAopcr
-EPCjjvbdiUzFXRuC
-DoDLKvbdZQldhmEq
-EPCjjvbdtvNwipsA
-EPDKjvbdbrcLUDia
-DoDLKvbdegkVqnQg
-DoCjjvbdznopdcMY
-DoCjjvbdmfeXlmgZ
-DncLKvbdXrlBMsnx
-DoCjjvbdmgEwmOGy
-DoCkKvbdjmCLydgP
-DncLKvbdmJEUQuSB
-DnbjjvbdRbDeLiYk
-DnbkKvbdQdDBPqDr
-EObkKvbdjKGHjMxS
-DoCkKvbdyOTHxSiD
-EPCjjvbdQwNdCkhD
-EObjjvbdfNFwGljL
-EObjjvbdVqmxCElD
-EOcKjvbdeOeTKtTr
-DoDKjvbdUaBqSpqy
-DnbjjvbdmIdURUqa
-DoCkKvbdUWMQJtBR
-DnbjjvbdxnSgxSiD
-DncKjvbdwXMBVaVu
-DnbjjvbdvvkaVaWV
-EObkKvbdmaiwXnmu
-DoCjjvbdgQBzwEYI
-EOcKjvbdFVxpPmJe
-EObjjvbdKDJcQjCx
-DoCkKvbdYlRdUOMN
-EOcLKvbdZoOIddzK
-DoCjjvbdffMZnHHA
-DncKjvbdnQZxujxb
-EPDLKvbdwXMBWBVu
-DoCjjvbdLFfIBaQu
-DncKjvbdGQASwHFy
-DnbkKvbdauBfxKsh
-EOcLKvbdraelkgKy
-EObkKvbdnVUzLKSG
-DoDKjvbdANHxrwZx
-DncLKvbdqZPHfqEY
-EObjjvbdvPTzpjoU
-EObjjvbdrWpMDIyR
-DnbkKvbdCDpBWKNG
-DnbkKvbdyOSgwrhc
-DnbkKvbdeKKSVtzn
-DncKjvbdMowpumgT
-EOcLKvbdOFDtIhjd
-EPDKjvbdkDMLRGtg
-EPDKjvbdiiehJlwr
-EPDLKvbdBdQAvJlf
-DoDLKvbdZyEKODMS
-EObjjvbdJqZePFme
-DnbkKvbdKxqKSztf
-EObkKvbdmJEUQuSB
-DnbkKvbdREDAopdS
-EPDKjvbdwzHefYEr
-EPDKjvbdnHExMnGy
-EOcKjvbdmozZVjyC
-EPDKjvbdZHWdAPTJ
-DoDKjvbdjgfkfFnL
-DncKjvbdczZPxYqC
-DoDKjvbdEXwlUUTl
-DncKjvbdhuZdvrVC
-DnbkKvbdxKwDgzzG
-EPCkKvbdsZlQSaIO
-EOcKjvbdzRPMiKXA
-DoDKjvbdqvolDIxq
-DoDKjvbdQdCaPpcr
-EPCjjvbdJmADyfuB
-DnbjjvbdsCGNLgLZ
-DoDKjvbdKfGICAqV
-DoCkKvbdbiNJkGXY
-DncKjvbdiGicYvKV
-EPCjjvbdSxLLmzjx
-DncKjvbdLAjflaxR
-EPCkKvbdUyHsyjoO
-DnbjjvbdcyxoxYqC
-EObkKvbdxZgfGYFS
-EPDLKvbdZoNiEeZj
-DncLKvbdZtIhxcrn
-EPDLKvbdIwtCILqQ
-DncLKvbdQmXbYmtz
-EOcLKvbdmuUzKiqf
-EPDKjvbdsQVnibuf
-EObjjvbdOSsugEtp
-EOcLKvbdYlSETnLm
-EObkKvbdUtNUGMWK
-DoDLKvbdzeZnzeZp
-DoDKjvbdqTtHRqkU
-EObjjvbdmbJvxPNu
-DoDLKvbdliDsqUqa
-EPCjjvbdhanbdvpq
-DoDKjvbdiifHilxS
-DoDKjvbdmJDsptqa
-DnbkKvbdDncKkWcE
-EPCkKvbdaofgELzd
-DncKjvbdijGIJmXr
-EPCkKvbdRkYfUgLT
-EObkKvbdHEKuibKK
-DnbjjvbdVhXuwfxz
-DoDLKvbdiMEcmuCy
-DnbkKvbdJcJcQibx
-DnbkKvbdmfeYNOGy
-DoDKjvbdqUTgSSKt
-EPDLKvbdePErjtUS
-EObkKvbdaNKasUmH
-EObkKvbdiifIJmYS
-EOcKjvbdsPunjCvG
-EObkKvbdbrcKtDjB
-EPDKjvbdbhlikFwY
-EPCjjvbdrpVnjDWG
-EPCjjvbdaMkCStlg
-DncKjvbdMpXqVnGs
-EPDLKvbdZjShPfbG
-EPDLKvbdfHkVrOQg
-DoCkKvbdDnbjjvbd
-DoCkKvbdkySqsYft
-DoDLKvbdZRMeImEq
-DoDLKvbdYpleIleR
-DncKjvbdiHJbyViu
-EObkKvbdrMyixkgi
-EPDKjvbdqvokbiYq
-EOcKjvbdzitoodTU
-DnbjjvbdVYhTyjnn
-EPDLKvbdyYJJbPzL
-EObkKvbdeFPSCWcK
-EPDKjvbdIsZArlxM
-DnbjjvbdkIHLfGNk
-DoDLKvbdehLVqmqH
-EOcLKvbdvBEZTPFI
-DncKjvbdnUuZjirG
-EPCjjvbdakLfOnDA
-DnbkKvbdEzsqEkcJ
-DnbjjvbdVhXvXgYz
-DoCjjvbdIryBTNYM
-DncKjvbdZirgpHBf
-DoDKjvbdEYYLsstM
-DnbjjvbdZshhyETO
-DoCjjvbdOTUVgFVQ
-EObjjvbdZisHpGbG
-DoDLKvbdkDLkRGtg
-EObkKvbdegjvSNpg
-DncLKvbdfIKvRnQg
-DncLKvbdJKEAJpGd
-DncKjvbdrRtkNkBN
-EPCkKvbdjvWnDaxX
-DoCjjvbdmfdwmNgZ
-DnbjjvbdbrcLUEJa
-DncLKvbdnQZxujxb
-DoDKjvbdNsTugEuQ
-EOcKjvbdUVlPisaR
-EObkKvbdHDjujBij
-EPDLKvbdSBdFMJYk
-EPCkKvbdVvhxVdFH
-DncKjvbdIsYaTNXl
-EPDLKvbdIrxaSlxM
-EPDKjvbdfoazwDwh
-EPCkKvbddeOqbXDK
-DoCjjvbdJpzEnfNe
-DncKjvbdqiAKFNOe
-EPDLKvbduDCtwWOo
-DnbjjvbdZjShQGbG
-EObjjvbdVAbQsRSZ
-DncLKvbdtcCuWuoP
-DoDKjvbdTvLoitAq
-EOcLKvbdZQleIleR
-DoCkKvbduLxXAtAw
-DnbjjvbdqYoHfqDx
-DoDKjvbdJYTbHkqQ
-DncLKvbdGZUtaDxC
-EObjjvbdqFdEtWAh
-EPCkKvbdILaznWqL
-EObkKvbdQwNdCkhD
-EPCkKvbdmJDsqUqa
-EOcKjvbdvBEYrneI
-DoDKjvbdapGgELzd
-DoCjjvbdwWlAvAvV
-DoDLKvbdJbicQicY
-EPDKjvbdaaVdepPw
-DoCkKvbdsZkosAhO
-DoCkKvbdNeETiJKd
-EObkKvbdEObkLXCd
-EPCjjvbduCbuXVno
-DoCkKvbdrykpTBHn
-DnbkKvbdrEFIpNua
-DoCjjvbdlYrrSxft
-DoDLKvbdqdFIpOVa
-EObjjvbdrbFmMGjy
-DnbkKvbdRpUHKGDw
-EOcLKvbdzoPpdcMY
-DoDLKvbdfILVqnQg
-DoCkKvbdlZSqsZHU
-DncKjvbdrzMQSaIO
-DoCkKvbdhuZeWrUb
-EObjjvbdfSAvzkbo
-DoCkKvbdVZIUZjnn
-EOcLKvbdhlEdOUcZ
-DoDKjvbdbUagXkUI
-DoCjjvbdqUTgRqjt
-DoDLKvbdqTsfrRjt
-DnbkKvbdrouoKCuf
-EPDKjvbdmbKXXoNu
-DoDLKvbdhbPDEwRR
-DncLKvbduVnYKRTA
-DoCjjvbdcJNKKfXY
-EPCjjvbdeFOrCXDK
-EPCkKvbdczYoxYpb
-DnbkKvbdKfGHaaRV
-DoCjjvbdMuTRjmAX
-DoDKjvbdkMalZeGo
-DnbkKvbdbhmKLFvx
-EPDLKvbdjuwODbXw
-DoDLKvbdUMVoBVoJ
-DoCkKvbdRpTgJfDw
-EOcLKvbdajlFoNcA
-EPCjjvbdRMwaxnUz
-EOcLKvbdJcJbpjDY
-DoCjjvbdjhHLefNk
-EOcLKvbdcasNSATm
-DoDKjvbdyOTHwriD
-EObjjvbdKQydnenF
-EObjjvbdZirhPgBf
-EPCjjvbdBiKbLIfK
-EOcKjvbdNeDtIiKd
-EOcKjvbdkDLjqGtg
-DoDKjvbduDDVWuoP
-DncLKvbdePErjtTr
-EOcKjvbdJbicQjDY
-EPDKjvbdrylQTBHn
-DnbjjvbdkMbMZeGo
-DncLKvbdtlYWaUAw
-DoCjjvbdDwxMUTtM
-EObkKvbdjblKqGtg
-DoDKjvbdRMxCZNtz
-EObkKvbdqYoIGqDx
-EPDKjvbdmfeYNNgZ
-EObjjvbdTAFIhCPE
-DoCjjvbdjKGIKMxS
-EOcLKvbdMpYRWOHT
-EOcLKvbdMoxRVnGs
-DncKjvbdhaoDEwQq
-DnbkKvbdEXxMTtTl
-EPCkKvbdMgCpMpVL
-EObjjvbdRzKITDWA
-EOcLKvbdrzLosBHn
-EPCkKvbdBraCsfWr
-DoCkKvbdaaVeGPow
-EOcLKvbdIGgZyXxH
-EPDKjvbdliETptqa
-EOcLKvbdbKlGPODA
-DnbjjvbdRadElJZL
-EPDLKvbdjFLHVPAO
-DnbkKvbdiBnbdwRR
-EObkKvbdvBDyTOeI
-DnbjjvbdUyHtZjnn
-DnbkKvbdmgFYNOGy
-DnbkKvbdGKdsDHlu
-EPDLKvbdZRNEiMeR
-DoCkKvbdbLLeoODA
-EObkKvbdANIZSvzY
-DoCkKvbdziuPpDrt
-DnbjjvbdWHwvXgYz
-EPDKjvbdsBfNLgLZ
-DoCkKvbdWWiXudFH
-EPDLKvbdwzIGGYEr
-EOcLKvbdVTmUGMWK
-EObjjvbdMSXMytpz
-DncKjvbdZirhQGaf
-EObjjvbdCJLBjiGK
-EPCjjvbdZLrETnLm
-EObjjvbdelevfljL
-DncKjvbdGYuVBEYC
-EPCkKvbdkCkjpgUg
-DoCkKvbdbhljLFwY
-DnbjjvbdeEoSBvbj
-DncLKvbdvAcyTPFI
-DnbkKvbdjblLQgVH
-EPCjjvbdeEoSBvbj
-DnbkKvbdaMjbStlg
-EObjjvbdrDdhpOWB
-EOcKjvbdbKlFoODA
-EPDLKvbdZjTIQGaf
-EObjjvbdEzsqEkcJ
-DnbjjvbdZRNEiNEq
-EObjjvbdqlzJxlIJ
-DnbkKvbdkIHLfFmk
-EObkKvbdMtrrKmAX
-EPCkKvbdNQXpvNgT
-EPCkKvbdbrcKtEKB
-EObjjvbdSPtGjGEX
-DoDKjvbdxwiJaoyk
-DnbjjvbdVYhUZkPO
-DoDLKvbdXrlBNUPY
-DoDKjvbdZnmiEdzK
-DoCjjvbdWWiXvDeH
-DoDLKvbdyNsHwsIc
-DoDKjvbdwyhFfYEr
-EPDLKvbdNeDshhkE
-EPDKjvbdBiLBkJFj
-EOcKjvbdJqZdoGNe
-EOcKjvbdbAvEepQX
-DoCjjvbdaNLBsUlg
-EPDLKvbdvBDxsOdh
-DncKjvbdGFirNiTq
-EPDLKvbdZnmiEeZj
-DncLKvbdePFSjtTr
-EOcKjvbdnGdwlnHZ
-EOcLKvbduDDUvuno
-EObjjvbdZQmFIldq
-DoCkKvbdcyxpYYqC
-EOcLKvbdMRvlzVQz
-DoCjjvbdtcDUwVoP
-EPCkKvbdrXQLbhxq
-DoDKjvbdkVwODbXw
-DnbjjvbdnCJwYOmu
-DnbkKvbdqvpLbhxq
-DoDKjvbdKDJcQjDY
-DnbkKvbdvwMAvAuu
-EPDKjvbdtvNxKRTA
-DoDKjvbdYkqctOMN
-DoDKjvbdtcCuWvOo
-DoCjjvbdEObkLXDE
-DoCkKvbdbrbjtDia
-EObkKvbdDncKkXDE
-DnbjjvbdxxJKBozL
-EPCjjvbdbhlikGWx
-DncKjvbdJXtCIMRQ
-EOcLKvbdkVvmcaxX
-DoCjjvbdqwPkbhyR
-EObjjvbdySnImRbH
-EObjjvbdZQleImFR
-EObkKvbdmpZxujyC
-EPCjjvbdhbPDEvpq
-EObkKvbdpyPHgREY
-DoDLKvbdwzIGGXeS
-EObjjvbdaSGChUGL
-DoDKjvbdrbFmMGkZ
-EPCkKvbdxKwEHzyf
-DnbkKvbdJXtBgkpp
-EPCkKvbdlZTRrxft
-EOcKjvbdFVyPpNKF
-DoCkKvbdaRecHsek
-DoDKjvbdFfKRnJUR
-DoCjjvbdyOTIXrhc
-DoDLKvbdyOSgxShc
-DoDKjvbdEOcKjwCd
-DoCjjvbdzoPpeClY
-DoCkKvbdURRPVUhN
-DoDLKvbdVqmxCFMD
-EOcKjvbdNVSrKmAX
-EOcKjvbdTvLpKTaR
-EPDLKvbdCTAbtFwS
-EPDLKvbdZyEKNblS
-EOcLKvbdsCFllHLZ
-EObkKvbdjlbMZeHP
-EPDKjvbdMpXpunGs
-EObjjvbdaNLCSuNH
-DoDLKvbdkCkjqHUg
-EPCjjvbdTYKlNzjx
-DnbjjvbdNxOuzdOU
-DoCkKvbdegjvRmpg
-DoCjjvbdhfjCyWKV
-DncLKvbdjggMFfNk
-EOcKjvbduVmwjRTA
-DnbkKvbdDjHiuxKA
-EOcLKvbddePRavcK
-DnbkKvbdwkWcgzyf
-DnbkKvbdHlBznXQk
-EPCkKvbdatafxKsh
-EPCjjvbdcJMjKfXY
-DoDKjvbdrDdiQOWB
-DoDLKvbdVvhwvEEg
-EObjjvbdwjvdHzzG
-DncLKvbduMYXAtAw
-DoDLKvbdZQmFJNEq
-EPCjjvbdyOTIXriD
-DoCkKvbdbiNKLGWx
-DncKjvbdHEKvKBij
-EPDLKvbdYlSDtNkm
-DoDKjvbdTqROuVIN
-EPCkKvbddeOqbXCj
-EOcLKvbdCTBCsewS
-EPCjjvbdnUtykJrG
-DnbjjvbdlZTSSyGt
-EPCjjvbdjmBkyeGo
-DnbkKvbdVhXuwfxz
-DncLKvbdePFTLTsr
-EOcKjvbdemGWgMik
-EObkKvbdhuZeWquC
-EPCjjvbdEvYpQNKF
-EOcKjvbdpaJFAXHd
-DoDKjvbdJSyBSmYM
-EOcLKvbdSCDdlIxk
-DncKjvbdSLZGVGkT
-DnbkKvbdrbFlkgKy
-EObjjvbdJSyAsMwl
-EOcKjvbdEOcKkXDE
-EPCjjvbdMoxQumfs
-EPDKjvbdUQpnuUgm
-DncKjvbdaaWFFoow
-DnbkKvbdakMGPODA
-EObkKvbdrEEhomua
-EOcKjvbdmozZWLYb
-EObjjvbdVgwuxGxz
-EOcLKvbdCJLCKhej
-EPDLKvbdVUNUGLvK
-EOcLKvbdLGGHbBRV
-DoCkKvbdlqxtysEJ
-EOcLKvbdcScLTdKB
-DncKjvbdhtydwRtb
-DoCjjvbdcTCjscia
-DncLKvbdUslsekuj
-DoDKjvbdwuNFRYkn
-EOcLKvbdijGHjNYS
-DoCjjvbdJSyBSmYM
-DoDKjvbdEYXlUTtM
-EPDKjvbdUyITzKoO
-DnbkKvbdvBDyTPFI
-DoDKjvbdYlRcsmkm
-DoDKjvbddePRbXCj
-EPCkKvbdVZHtZjoO
-EPDLKvbdWXIxVceH
-EPCjjvbduDDUwVoP
-DncKjvbdQlxBxnUz
-DoDLKvbdfpBzvdYI
-DoCjjvbdMJBlRYAS
-EPCkKvbdZisHofaf
-DnbkKvbdkWXNdCXw
-EOcKjvbdEYXkstTl
-EOcKjvbdfekymgHA
-EPDKjvbdelfWflik
-EPCjjvbddCTNSAUN
-EPDKjvbdpfDeUVaI
-DncLKvbdiBnbeWqR
-EObjjvbdEuyPoljF
-EPCkKvbdRDcBQRES
-DncKjvbdhfibxujV
-EObkKvbdVqnYBeMD
-EPDKjvbdJKEAKQGd
-EOcLKvbdsQVoJbuf
-EOcKjvbdqcdhonVa
-EObjjvbdJcKCqJcY
-EOcKjvbdpfEEsuaI
-EPDLKvbdxnTIYShc
-EOcLKvbdxVMdqYlO
-EObjjvbdZyDimcMS
-DncKjvbdiGjCxvKV
-DoCkKvbdRbEEkiYk
-DoCjjvbdWIYVxHYz
-EPDLKvbdYzcFqjVy
-DncLKvbdTYLLmzjx
-DoDLKvbdwXLaVaWV
-DoDLKvbdMRvlyuQz
-DoCjjvbdajkeoNcA
-EPCjjvbdjEkHUoAO
-DoCjjvbdZoNiFFZj
-DncLKvbdlZTRryHU
-DoCjjvbdcTDLTdJa
-EOcLKvbdlhctRVSB
-EObjjvbduaEYroFI
-DncKjvbdzjUpQDsU
-DoDLKvbdyqPNIiwA
-DnbjjvbdhkdcnUby
-EObjjvbdVYgtZjoO
-DnbjjvbdCJLCLJFj
-EPCjjvbdzeZnzdyp
-DnbjjvbdqlyjZMIJ
-EOcLKvbdGAnpyJzm
-DoDLKvbdNGcQMpVL
-DncKjvbdADSXiyiQ
-DoCjjvbdLBLHNCYR
-DoCkKvbduVnXjRTA
-DncKjvbdtSqsZZeD
-EPDKjvbdpyOhGqEY
-EObjjvbdEuyPomKF
-EPDKjvbdyOSgxTIc
-EPDKjvbdGFiqnJTq
-EOcKjvbdyYJJbPzL
-DncLKvbdADRwjZiQ
-DncLKvbdCSaDUFwS
-DoDLKvbdEzsqEkbi
-EOcLKvbdssSTYyeD
-DnbkKvbdSBdEkiZL
-EObjjvbdFWZQPlie
-EObkKvbdbBVeFpPw
-DoDLKvbdBdQBVjMf
-EPDLKvbdptUHRqjt
-EPCkKvbdQwODcMID
-DoDLKvbdelevgMik
-DnbjjvbdVTmUFkuj
-DnbkKvbdLYqJrzuG
-DoCkKvbdCTAbsevr
-DoCjjvbdJpyeOfOF
-EPCkKvbdOStWHEtp
-EOcLKvbdKVtfEEfi
-DoCkKvbdmuUykJqf
-DnbjjvbdQZNAHSrK
-DnbjjvbdMgDPlpUk
-DnbkKvbdCIkBjhfK
-EObjjvbdBsBCsewS
-EOcLKvbdYzbfRivZ
-EOcLKvbdrzMQSaHn
-EOcKjvbdRosfjFcw
-EPDKjvbdANHyTXZx
-EPCkKvbdliDsptqa
-EOcLKvbdACrXizIp
-EPCjjvbdLFfICApu
-DoCjjvbdbAvEepPw
-EOcKjvbdTpqPVVHm
-DoCjjvbdsBemMGjy
-EPCkKvbduaEZTPEh
-DoCkKvbdOStWHEtp
-EPCjjvbdbBVeGQPw
-EObjjvbdOSsufeUp
-DoCkKvbdjAQHBPgK
-EPCjjvbdbBWEfPow
-EPDKjvbdtSqsZZdc
-EPCkKvbdegjuqmpg
-DoDLKvbdRotGifDw
-DoDKjvbdmJEUQtrB
-DoCjjvbdcIljKewY
-EObkKvbdbiMjKewY
-EObjjvbdcScKsdJa
-EPDKjvbdtSqsYyeD
-DnbkKvbdrpWOjCvG
-EPDLKvbdBiKbLIej
-EPCkKvbdBdPaWJmG
-EObjjvbdZRNEhmEq
-EOcLKvbdiUzFWrUb
-EPCkKvbdmIdUQtrB
-EPCkKvbdbUafxLTh
-EOcKjvbdnCKWxOmu
-DoCkKvbdsZkosBIO
-DnbkKvbdHDjujCJj
-DoCjjvbdWSOYCFLc
-EPDKjvbdmJETqVSB
-DnbjjvbdrXPkcJYq
-EObkKvbdMgDPlpVL
-DnbjjvbdZisHpGaf
-DoCjjvbdGGJqmiTq
-EObkKvbdIHGyyYXg
-EObkKvbdqTsgRrKt
-EObjjvbdmJDtRVSB
-DnbjjvbdddoSBvbj
-EPDKjvbddePSBvbj
-DnbjjvbdBcpAvJlf
-DncKjvbdezvYeItX
-DoDKjvbdmgEwmNfy
-EObjjvbdDigivXjA
-EOcLKvbdmJEURUrB
-EOcLKvbdePFTLTtS
-EPDKjvbdVTmUGMVj
-EPDKjvbdnBivwnnV
-EPCjjvbdZnmhddzK
-DncKjvbdZeXfzgiC
-DoDLKvbdEuyPpNJe
-DoDLKvbdqdEhpNua
-DoDKjvbdFWYpQMie
-DoCkKvbdMfcQMpVL
-EOcKjvbdmttykKSG
-DnbjjvbdlhcspuSB
-EPCjjvbdWSNwbFMD
-EPDKjvbdRbEElIyL
-EOcKjvbdyNsHwsIc
-EPCjjvbdrylQTAgn
-DncLKvbdADSYJyiQ
-EOcKjvbdZjTIPgBf
-EObjjvbdKDKDQibx
-EObkKvbdKDJcRJcY
-DoCkKvbdmSZUzSdJ
-EPCjjvbdaNKartlg
-DoDKjvbdIGgZyXwg
-EObjjvbdauCHXjsh
-EObkKvbdxUmEpyLn
-EPCjjvbdNsTugEtp
-EPDLKvbdZyDimblS
-DoDKjvbdbUagYKtI
-DncKjvbdliETpuSB
-EOcKjvbdDihKWXjA
-DncKjvbdZtIiZETO
-EObjjvbdygZMAMeX
-DoDKjvbdfNGWgMik
-DoCjjvbdZMSEUNkm
-EOcKjvbdsrqsZZdc
-EPCkKvbdACqxJzJQ
-EPDLKvbdNdcshiKd
-DoDKjvbdyqOmIiwA
-EOcKjvbdRMwbYmtz
-EOcKjvbdYpmEhleR
-DoDKjvbdjJfHimYS
-DoCjjvbdrbFmMHLZ
-DoCkKvbdBcpBWKNG
-DoDKjvbdIxTbHkqQ
-DoDKjvbdhuZdwSUb
-EPDLKvbdJYUBglQp
-EPCkKvbduCcUwVno
-DnbkKvbdwuNEpyMO
-DncKjvbdssSSxzEc
-DoDLKvbdGdLWJbKK
-EObjjvbdFjdsDIMu
-DncLKvbdfkGzbfAE
-EOcLKvbdrRtkOLBN
-EPDLKvbdajkfOmcA
-EPCjjvbdrMzJxkhJ
-DncLKvbdqZOhHREY
-DoDKjvbdmJEUQuSB
-DnbkKvbdRDbaQRES
-EPCjjvbdpyPHgREY
-DnbjjvbdMIalQxAS
-DncLKvbdiZuGMROG
-DoDKjvbdgFkymfgA
-DncLKvbdsCGMkgLZ
-EObkKvbdRotHJecw
-EPDKjvbdkClKpftg
-EPCkKvbdRjyGUgLT
-EOcKjvbdhuZdvqtb
-EOcLKvbdmttzKjSG
-EObjjvbdhlEdOVDZ
-DoDLKvbdZisHpGaf
-DnbkKvbdTqQntuHm
-EPDLKvbdNdctIiLE
-EObkKvbdWRnXbFLc
-EPDLKvbdKVtfDdgJ
-EPCkKvbdJSyBTMwl
-DnbkKvbduWNxKQsA
-DoCkKvbdqGEFUVaI
-EPDKjvbdhkdcnVDZ
-EPCjjvbdySnIlrBg
-EOcLKvbdYlRctNlN
-EObkKvbdvBDxroFI
-DoDLKvbdxwiJbPzL
-EPCjjvbdyNsHxTJD
-DoCjjvbdhfjDYujV
-DoDLKvbdcImKLFwY
-DnbjjvbdqwQMChxq
-DncLKvbdaaWEfQPw
-DnbkKvbdUQqOuUhN
-EOcLKvbdUaCRSqSZ
-DnbjjvbdRMxByOUz
-EPDKjvbdKCjCpjCx
-DncLKvbdrMzJyMIJ
-EPCjjvbdOEdThhjd
-EPDKjvbdrSUkOKaN
-EObkKvbdMowpunGs
-DoCjjvbdhzVGLpmf
-EOcLKvbdaMkBsVMg
-DoCjjvbdkIGkfFnL
-DnbkKvbdYpldiNFR
-EPDLKvbdZxcjNcMS
-EPDKjvbdGGKRnJUR
-EPCjjvbdbiNKKfWx
-EObjjvbdmRyUyrci
-DncKjvbdLrXNZtpz
-DncKjvbdZjTIPgCG
-DnbkKvbdypoNIiwA
-EPCjjvbdDihKVxKA
-DncKjvbdyfxlANFX
-DoDKjvbdiMFEOVCy
-EPCkKvbdtcDUvvPP
-DoCkKvbdEvYpQMie
-DnbjjvbdZLrDtOLm
-EPCjjvbdKQzFPGNe
-EPDKjvbdGdLVjCJj
-DoDKjvbdqYoHfqDx
-DoDLKvbdFVxoomJe
-DnbkKvbdKRZePFnF
-DoCjjvbdFVyQQMjF
-DnbkKvbdTulQJsaR
-EObkKvbdkHgMFenL
-DoDKjvbdVUMselVj
-EPDLKvbdrDdhonVa
-DncKjvbdkVvmcaxX
-DoDLKvbdrRuKnLAm
-EOcKjvbdJbibpjDY
-EPDKjvbdXrlAmToY
-DnbkKvbdZirhQGbG
-DnbjjvbdjgfkfFnL
-EOcKjvbdGFjSOJTq
-DoDKjvbdSCDeMJYk
-DoCkKvbdpecdtWAh
-EObjjvbdzeZnzdyp
-DoCjjvbdMJBlQxAS
-EPDKjvbdnBivwnmu
-DoDKjvbdRadElIyL
-DoDLKvbdsZlPsBHn
-EObjjvbdznopeDLx
-EOcLKvbdCJKbKiFj
-DncLKvbdmgExNNfy
-DnbkKvbdnPzYvKxb
-DncKjvbdrDdiPnVa
-DoCjjvbdAMgxrwZx
-DncLKvbdTfzmkwWF
-DncKjvbdqiAJdloF
-EPCkKvbdwuMeRZLn
-DoCjjvbdVUNUFkuj
-DoDLKvbdKQyePGNe
-DncKjvbdLqvlzVQz
-DoDKjvbdmgFYNNgZ
-DnbjjvbddxZtTrFz
-EObkKvbdqTsgSSKt
-DnbkKvbdZxcimcMS
-DoCjjvbdANHySvyx
-DoDLKvbdZQmFJMdq
-DoCkKvbdHDjujBij
-EPDLKvbdsPuoJbuf
-EPCjjvbdYpmEhmFR
-DncLKvbdZjTHpGaf
-EPDKjvbdEuyQQNKF
-DoCkKvbdmbKWxPNu
-DoCkKvbdRjyFtfjs
-DoCkKvbdiifHjNYS
-EPDKjvbdpyOhGpdY
-DoDKjvbdUVlPitBR
-DoCjjvbdEKIJuwjA
-EPCjjvbdFkFTDHmV
-EOcLKvbdySnJNSCH
-DncLKvbdRpUHJedX
-EPDKjvbdtvOYJpsA
-DoDKjvbdKDKDQjCx
-DoDLKvbdaMkCTUmH
-EOcKjvbdMpYRVnGs
-EOcKjvbdtSqsYzFD
-DncLKvbdKaKgNCXq
-DoCkKvbdsCFllGkZ
-EObkKvbdNrsvGeUp
-DoDKjvbdmaivxOnV
-EOcLKvbdOEctIhjd
-DoCkKvbdemGXGljL
-DoDLKvbdjvWmdBxX
-EPCkKvbdCIjbLIej
-EPCjjvbdkHfkfFmk
-DoDLKvbdwzIGFwdr
-EOcKjvbddBrlrAUN
-EPCkKvbdJutecdgJ
-DoCjjvbdWRmwaeLc
-DnbkKvbdiVZdwRuC
-DnbjjvbdGLEsDHmV
-EPCkKvbdxsOJNSCH
-EPCjjvbdIwtBgkqQ
-DncKjvbdbrbjtDjB
-EPCkKvbdjhGkeemk
-DncKjvbdWWiXvDeH
-EPCjjvbdnUtzKiqf
-DncKjvbdTukoitAq
-DncLKvbdCIkBjhfK
-DoCkKvbdhgKDZWJu
-EPDKjvbdBhkBjiFj
-DnbjjvbdMfbpNPtk
-DoDKjvbdnBjWxPOV
-DoCjjvbdEJhKWYKA
-EOcKjvbdTpqOtuHm
-DoCjjvbdwzIFfXdr
-EOcKjvbdrpVoKDVf
-EOcLKvbdEYYLtTsl
-DoCkKvbdLFfICBQu
-EOcKjvbdeXzTsrFz
-EOcLKvbdSQUHKFdX
-EOcLKvbdraemMHLZ
-EPDKjvbdkIGlFemk
-DncKjvbdOYOuzcnU
-DoCkKvbdIwtCILpp
-DncLKvbdZoNiEdzK
-DoDKjvbdsrqsZZeD
-EPDLKvbdzGyMANEw
-DncLKvbdBraCsewS
-EObkKvbdpyOgfpcx
-DnbjjvbdxmrgxTIc
-EOcLKvbdZjSgpHCG
-EPCjjvbdrWpMDIxq
-DncKjvbdZtJIyESn
-EPCjjvbdJSxaSmXl
-DoCjjvbdiMFEOVCy
-DoCjjvbdDwwlTstM
-DncLKvbdJYUCHkpp
-EPDLKvbdsrrSxzFD
-EObjjvbdkHgMFfNk
-EPDKjvbdOStVgFUp
-DnbjjvbdjhHMGGOL
-DnbjjvbdZyEJmcLr
-EPDKjvbdDihKWYKA
-DncLKvbdRosfiecw
-DoCjjvbdyTNhmSCH
-DnbkKvbdFeirNhsq
-DoDKjvbdrDeIpNvB
-EObkKvbdVAaqTRSZ
-EPDLKvbdLAkGlbXq
-EOcKjvbdVAaprqRy
-EPDLKvbdfIKvRnQg
-EPCjjvbdUQpoVUgm
-EObjjvbdxVNEpyMO
-EOcKjvbdsCFllGkZ
-DncKjvbdsBelkgLZ
-DoDLKvbdvlvANDeN
-DoCjjvbdnBivwoNu
-EObjjvbdsCGMkgLZ
-EObjjvbdsPvPJbvG
-EPDLKvbdxrnImRbH
-EPDLKvbdNPxRVnHT
-DoDLKvbdMtrqkNAX
-DoDKjvbdiGicZWJu
-EPDKjvbdOFEUJJLE
-EPDLKvbdoAKzshDn
-DoDKjvbdehKvRnQg
-EObjjvbdLLBIWAKZ
-EPDKjvbdeOdsLUUS
-DncKjvbdjvWmdBxX
-DncLKvbdezuyFJTw
-EPCkKvbdNPwpumgT
-EPCjjvbdkxsRrxgU
-EPDLKvbdptUHSSLU
-EPDKjvbdeATqNXif
-EPCkKvbdjlakzEgP
-EObjjvbdyXiKCPzL
-DoCjjvbdhlFDmuDZ
-DncKjvbdauCGxLUI
-EObjjvbdySmiNSBg
-EOcLKvbdfNGWfljL
-DncLKvbdVviYWDdg
-EPCkKvbdkIHLefOL
-EPDLKvbdRNYCZNtz
-DoDLKvbdmfdxNOGy
-DoDLKvbdcScKtDjB
-EOcLKvbdEPDLKvcE
-EPCjjvbdUaBprqSZ
-EObkKvbdddnqbXDK
-EPCkKvbdaaVeGQQX
-DoDLKvbduoTzqKnt
-DnbjjvbdqwPkbhxq
-EObkKvbduaEZTOdh
-EOcLKvbdKfFhBaRV
-EOcKjvbdVYgtZjoO
-EOcLKvbdrSVKnKaN
-DnbkKvbdsCFmMGjy
-DnbkKvbdSLYeuGkT
-DoCkKvbdwWlAvAuu
-EPCjjvbdRXOEClID
-EPCkKvbdCIkCKiFj
-EOcKjvbdGckViajK
-DoCkKvbdznpRFCkx
-DnbjjvbdxKwDgzyf
-DncKjvbdVAaprprZ
-DoDKjvbdOEctIhjd
-EObjjvbdmIdTptqa
-DnbjjvbdvwMAuaWV
-EObkKvbdEYXksssl
-EPCkKvbdiZtelQnG
-EOcKjvbdqdEhpOVa
-DnbjjvbdidjfuPAO
-DnbkKvbdnBivxPNu
-EObkKvbdrSVKmkBN
-DnbkKvbdiCPDFWqR
-DncKjvbdZisHofaf
-DoCjjvbdJvVFcdfi
-DoDLKvbdcyxpYYpb
-DoCjjvbdrykpTBHn
-EPDLKvbdqrUkOKaN
-DoCkKvbdGQATWgFy
-DncKjvbduaDxsPFI
-EPCkKvbdYkqdTnLm
-EObjjvbdQYmAGsRj
-DnbkKvbdZyEKOCkr
-DnbkKvbdOEdThhjd
-EPDKjvbdiCOcFWpq
-EOcKjvbdMfcQNPtk
-EPDLKvbdLGFhBaRV
-EPDLKvbdssSSyZeD
-EPCkKvbdTAFJIBoE
-EObkKvbdeFPRavbj
-DnbkKvbdjKFhKNYS
-DncLKvbdCJLBjiGK
-DncLKvbdqlzJyLhJ
-EOcLKvbdRyigsCvA
-DoDKjvbdYqMdhldq
-DnbjjvbdehKvSOQg
-EObjjvbdMgColouL
-DoCkKvbdehKuqnRH
-DoDKjvbdQvmdCkhD
-DoDKjvbdMSWlzVQz
-EObkKvbdbhlikGXY
-DoCjjvbdeAUQmYJf
-EPCjjvbdZyEJmcMS
-DoDKjvbdIGfzYxYH
-DoDLKvbdHDjvJbJj
-EOcKjvbdQwNdCkgc
-EPCkKvbdRWnDcMHc
-DnbjjvbdrMzJyMIJ
-DncKjvbdlhctQuSB
-DoDKjvbdbPgGdLzd
-EObkKvbdijFhJmXr
-DoCjjvbdbQGgDkzd
-EPDLKvbdDihJvXjA
-EObjjvbdaNKasUmH
-DncKjvbdZyEKOClS
-DnbjjvbdSLYfVHLT
-DoDLKvbdwzHfFweS
-EPCjjvbdfNFwHNJk
-DoDLKvbdelewHNJk
-EPCjjvbduaDxroEh
-DoDKjvbddwytURez
-DncKjvbdwtmEpyLn
-EOcLKvbdCIkBkIej
-EOcLKvbdiLddOUcZ
-EPDKjvbdiUydwSVC
-DncKjvbdrEEiQOVa
-DnbkKvbdYzbeqivZ
-DoCjjvbdkVwOECYX
-DoDLKvbdZLqcsmkm
-EObjjvbdVYgtZkPO
-EOcLKvbdHffyxwwg
-EPDKjvbdcIljLGWx
-DnbkKvbdMpXpvNfs
-EOcLKvbdFeirOJTq
-DncLKvbdWWhxWEFH
-DoCjjvbdZRMdhmEq
-DnbkKvbdULvPBWPJ
-EPDLKvbdZRMdiMdq
-DnbjjvbdTYLMNzkY
-DoCkKvbdZxcjNblS
-DoCkKvbdKCibpicY
-EPDLKvbddoFTKtUS
-DncLKvbdcImKLGXY
-EOcKjvbdKaLGmBwq
-EPCkKvbdnHFYMnGy
-EPDKjvbdUQqPUuIN
-EPDKjvbdeAURNYJf
-DoCkKvbdxwiKCQZk
-DnbkKvbdKVuGDeGi
-EPDKjvbdrovOicVf
-DoDLKvbdrylQSaHn
-EOcLKvbdySmhlrBg
-EOcLKvbdNrsufeVQ
-EOcKjvbdzoQREblY
-EPCkKvbdzaAOgHCM
-DoCjjvbdZLqdTmkm
-EObkKvbdNGbpNQUk
-EOcKjvbdZshiYdSn
-EPDLKvbdDncLKvbd
-EOcKjvbdqlzJyMHi
-DoCkKvbdBhkCKiFj
-EOcLKvbdRaceLhyL
-EPDLKvbdxsNiNRbH
-DoDKjvbdtcCtwWOo
-DnbjjvbdmfdwlnGy
-DncKjvbdREDBQQdS
-DncLKvbdnPzYvKxb
-EPCjjvbdjgfkefNk
-DnbkKvbdnUtykJrG
-EPDKjvbdSCEFLiYk
-EOcLKvbdGcjuiajK
-EPCjjvbdJYUCHlRQ
-EPDLKvbdYpleIldq
-EObkKvbdfMfWflik
-DncLKvbdwuMdpyLn
-DoDLKvbdEPDLLWcE
-DoDLKvbdZLrDtOLm
-DoCkKvbddZxoxYqC
-DncLKvbdTulQKUAq
-DncKjvbdqrUjnKaN
-DoCkKvbdGFjRmiTq
-EPCjjvbdpssfrRkU
-EPDKjvbdrXQLbiYq
-DoCkKvbdNQYQunHT
-DoCkKvbdNrtWHEuQ
-DncLKvbdjgflGGNk
-DncKjvbdBsBCsewS
-DoCkKvbdMpYRVmfs
-DnbkKvbdKfFhBaQu
-EObkKvbdGcjuiaij
-EObkKvbdakMGOnDA
-DnbkKvbdFyUuAcxC
-DnbkKvbdtSrTZZdc
-EPCjjvbdatafxLTh
-EPCkKvbdUGzmlXVe
-EObkKvbdZyDinClS
-DncKjvbdyzdnSIJI
-DnbkKvbdnPyxukZC
-DoDKjvbdkDMLQgVH
-EObjjvbdbVBfwjtI
-EPDLKvbdzRPMhiwA
-EObkKvbdhkeDmuCy
-DnbkKvbdZQleImEq
-EObjjvbdrDeJPnVa
-EPDLKvbdaNLBsVMg
-DnbkKvbdOEctIhjd
-EOcKjvbdatagXkUI
-DncKjvbdMowpunGs
-EObkKvbdtvNwiqTA
-DnbjjvbdyzdnSHiI
-EObkKvbdbhlikFvx
-EOcKjvbdaNKaruNH
-DnbkKvbdiVZdvqtb
-EObkKvbdVYgszKoO
-DoCkKvbdjJfIKMwr
-DncLKvbdezvZFJTw
-EObkKvbdcyxoxYqC
-EPDLKvbdFejSNiTq
-DncKjvbdIwsbIMQp
-DnbjjvbdTukpJsaR
-EPDLKvbdIsZArlxM
-EPDKjvbdTAEhgand
-EOcLKvbdfNGXHMik
-DoDKjvbdjcMLQgUg
-DncKjvbdSLYfVHKs
-DoCjjvbdnBjWwoOV
-EPCjjvbdnBjWwnnV
-EObkKvbdQvmccLgc
-EPDKjvbdwuMeRYlO
-DoDKjvbdNddUJIjd
-DoCkKvbdqUTgSRkU
-DoDLKvbdehLVqmpg
-DoDLKvbdrovOjCvG
-EObjjvbdzoPpdcMY
-EPDLKvbdZRNFIleR
-DnbkKvbdSLZGVGjs
-DoCkKvbdySmiMrBg
-DnbkKvbdwyhFfXeS
-DoDLKvbdWHwvYHYz
-DoCjjvbdIHHZyYYH
-EObjjvbdJSyArmXl
-DncKjvbdACqxJyiQ
-DncLKvbdmpZxujyC
-DoCjjvbdFkFScINV
-EPDLKvbdCDpAujNG
-DnbkKvbdhkeDnUby
-DncLKvbdFWYopNJe
-DoCjjvbdLAjfmCYR
-EPCjjvbdxrmiMrCH
-EObjjvbdcImJkGWx
-DoCjjvbdFejRnJTq
-EObkKvbdYTMAlsnx
-EPCjjvbdsPvOibuf
-EObjjvbdNeDshhjd
-EOcLKvbdBiKbLIej
-EObkKvbdauCGxLTh
-EPDKjvbdbBWEepQX
-EPCkKvbdVrNxBdlD
-EObjjvbdMIalRYAS
-EOcKjvbdJcKCpjCx
-EOcLKvbdLqwNZtpz
-DoCkKvbdZisHogBf
-DnbjjvbdEPDKjvbd
-DoDLKvbdFWZQQNJe
-EObkKvbdHgGzYwxH
-EOcKjvbdjbkkQfuH
-DnbjjvbdtkxXAtBX
-EPDLKvbdLAkHNCXq
-EOcLKvbdWWhxVdFH
-DncLKvbdCWzdIeQW
-DoDLKvbdVvhwvDdg
-EObjjvbdpfDeUWAh
-EOcLKvbdqmZixkhJ
-DncKjvbdyzdmrIJI
-DncLKvbdRpTgJecw
-DoDLKvbdGFjSOIsq
-EOcKjvbdwuNFQyLn
-DnbjjvbdIsZAsMwl
-DncKjvbdptTgRqkU
-DncKjvbdZQmEiNEq
-DnbkKvbdauCHYLTh
-EPDLKvbdyzdmrHhh
-EPCjjvbdZoOJFEyj
-EOcLKvbdUQqOttgm
-DoCjjvbdRNYCZNtz
-EPDKjvbdrRtkOLBN
-DncLKvbdmajWxOmu
-EPDLKvbdLBLHMbXq
-DoDLKvbdCIjajhfK
-EObjjvbdYkrDtOMN
-EOcLKvbdUtNUGMVj
-EObjjvbdaSFcHsek
-DnbkKvbdXrkaMtPY
-DoCkKvbdZQmFImFR
-EOcLKvbdcJMijewY
-EPDLKvbdGLErbhNV
-DnbkKvbdiUydwSVC
-EPDLKvbddndsKssr
-DoDLKvbdxwhjCPzL
-DoCkKvbdxVMeQxkn
-DncKjvbdiBoCdwRR
-EPDLKvbdnPyyVkZC
-EPCjjvbdmuUzLKRf
-DoDLKvbdSQUGiecw
-DoDKjvbdRbDdlJZL
-DncKjvbdqrVKnLAm
-DoDKjvbdVBCQsQrZ
-DoDKjvbdmbKWxPNu
-EObjjvbdFVyQPmKF
-DnbjjvbdiiehJlxS
-EOcKjvbdIrxaSmYM
-EOcKjvbdsZkosAgn
-EOcLKvbdnCKWxPOV
-EPDLKvbdKWUecdfi
-DncLKvbdhgKDZWKV
-EPDLKvbdySnImSCH
-EObkKvbdJKEAKQGd
-EOcLKvbdZMSETmkm
-DoCjjvbdhgJcYujV
-EOcLKvbdehLVqmpg
-DoCkKvbdezuyFItX
-DncLKvbdvBDxsOeI
-EObkKvbdTulPisaR
-DnbkKvbdajkfPODA
-DoDKjvbdYkrEUOLm
-EPCkKvbdfIKvSNpg
-EPCkKvbdiBncEwQq
-EOcKjvbdKWUecdgJ
-EObkKvbdYlRcsmkm
-EPCjjvbddwzUTqez
-DnbjjvbdeYZstRez
-EPDLKvbdxVNEqZLn
-DncLKvbdFjeScINV
-EObjjvbdxUleQxkn
-DncKjvbdKWUfDdfi
-DoDLKvbdssRrxzEc
-EObjjvbdRpUGiedX
-EOcLKvbdZQleJMdq
-DnbkKvbdqdFIpNua
-EPCjjvbdYzberKWZ
-DoDKjvbdxxIjBoyk
-EOcLKvbdEObkKwDE
-DoDLKvbdqquLNjaN
-DncKjvbdwuNFRZLn
-DoCjjvbdqUTgRrKt
-EObkKvbdVwIwvDeH
-DnbkKvbdVwJYWEEg
-DnbjjvbdYlSETnMN
-DnbkKvbdqTsgRqjt
-DoDKjvbdiGicZVjV
-DnbjjvbdxnTHxTJD
-EObkKvbdqUTfrSKt
-DoCkKvbdFyVVBEXb
-EOcKjvbdqGDdsvAh
-EPCkKvbdTkunaVni
-EObkKvbdMRvlzVQz
-EPDKjvbdDncKkWbd
-EObjjvbdqqtkNkBN
-DncLKvbdfHkWRnRH
-DnbjjvbdiLdcnUby
-EOcKjvbdVYgsyjnn
-EPCjjvbdUtNTfMWK
-EPDKjvbdqYoHgREY
-DncKjvbdGZUuAdYC
-DnbjjvbdDnbjjwDE
-EOcKjvbdTqQntthN
-EOcLKvbdUyITzLPO
-EOcLKvbdjblLRHVH
-DoCkKvbdLGFhCBQu
-DncLKvbdliEUQuSB
-EObkKvbdRacdkiZL
-EOcLKvbdaSFcHtFk
-DoDKjvbdJYTahLpp
-EPDLKvbdUQqOuVIN
-EPCjjvbdqmZjYkhJ
-DoCkKvbdRjyGUgKs
-EObjjvbdyNrhYSiD
-EPCkKvbdBhkCKiFj
-EObjjvbdYlSDtOLm
-DoCjjvbdTAFIhBoE
-DncKjvbdNdctJIjd
-DoDLKvbdGdKvJaij
-EObjjvbdJpydnfNe
-EPDLKvbdCDpAvKNG
-DoDLKvbdeEoRavbj
-DoCkKvbddoFSjssr
-EPCjjvbdqYoHfqEY
-EPCkKvbdFkFScHmV
-EObjjvbdcyyQYZRC
-DoDKjvbdyzdmrHhh
-DoDKjvbdUWLojUAq
-EObkKvbdiCPCdwRR
-DoCkKvbdCTBDTevr
-EOcKjvbdLAkGlbXq
-EPDKjvbdcyyQXyRC
-EPDLKvbdyNsHxSiD
-EPDKjvbdqUTgRrKt
-DoDKjvbdJuuFdEfi
-DoDLKvbdEXwktTtM
-EObkKvbdeJirVtzn
-EObjjvbdYTMBMsnx
-DnbkKvbdNQXpumfs
-EPDLKvbdzitopDrt
-DncLKvbdDxXlUUUM
-EOcKjvbdADSXiyhp
-DoCjjvbdqTsgSSKt
-DoCkKvbdZtIhxdTO
-EOcKjvbdUyHtZjnn
-EPDLKvbdcSbkTdKB
-DncLKvbdxZgfGYEr
-DncKjvbdeATplxJf
-DoDLKvbdnCJwXnmu
-DnbkKvbdbKlFnnDA
-DoCkKvbdrDeIpNua
-EPCjjvbdmttzKirG
-DoDKjvbdbrbkUDjB
-DnbkKvbddZxoxZRC
-EObkKvbdhgKDZWKV
-DnbjjvbdGFiqmhtR
-EPDKjvbdULvOaWPJ
-EOcLKvbdygYlANFX
-DnbjjvbdIHGzZYYH
-EOcKjvbdhkeENuCy
-EOcLKvbdNddTiJLE
-EObjjvbdGFiqnJUR
-EOcLKvbdjvWnEBxX
-EPCjjvbdVBCRTRSZ
-DncKjvbdVBCRTRSZ
-EObkKvbdBdQAvJlf
-EObkKvbdJYUCHkpp
-EOcKjvbdGckVjCJj
-EObkKvbdBsAcUGWr
-DoDLKvbdIxUBhMQp
-DoDKjvbdMgDQNPtk
-EOcLKvbdHEKujCKK
-DoCjjvbdLhalQxAS
-EObkKvbdULuoBVoJ
-EPDKjvbdhfjDZVjV
-DoCkKvbdKDJbqJbx
-DoCkKvbdbKlGPNcA
-DncKjvbdrpVnicWG
-EPDKjvbdvAdZSneI
-DnbkKvbdFyVUaEYC
-EOcKjvbdHDjuibJj
-DnbjjvbdbiMjLFvx
-EPCjjvbdUsltGLvK
-DoCjjvbdkNBkzEgP
-DncLKvbdFxtuBEYC
-EOcKjvbdnBjWxPNu
-DnbkKvbdqUTfrRjt
-EPCjjvbdZHXEAPSi
-DoCjjvbdxxJJapZk
-DncKjvbdZyDimcLr
-DnbjjvbdiBnbeWpq
-EObjjvbdjbkkQftg
-EObjjvbdqvokbhyR
-EOcLKvbdeYZtTrFz
-EPCkKvbdLqvmZtpz
-DoDKjvbdNeDsiIjd
-EPCkKvbdeXystRez
-EOcKjvbdAMhZSvzY
-EPCjjvbdSwkMNzkY
-DoDKjvbdtlYXAtBX
-EPCjjvbdBvzdIdov
-DoDLKvbdVBBqSqRy
-EOcLKvbdTvMQKUAq
-EOcLKvbdxVMeQyMO
-EPDLKvbdBsAbtGWr
-DoCkKvbdKefHaaRV
-DncLKvbdCTBDTewS
-EPCjjvbdTIyjRAAl
-DoDKjvbdkxsSSxft
-EObjjvbdjvXOECXw
-EPDKjvbdVTlsfLvK
-EOcKjvbdjJfHjNXr
-EObjjvbdfMfWflik
-DnbkKvbdYqNFImEq
-DoDLKvbdcJMikFvx
-DoCkKvbdrXPlDIyR
-EObjjvbdeOdsLTtS
-DncLKvbdJSyArmXl
-EObjjvbdkNBlZeHP
-EObkKvbdfHkVqnRH
-DncLKvbdKCjCqKDY
-DoDLKvbdUyHsykOn
-DncKjvbdWWiYWEEg
-EPCkKvbdKWVFdEfi
-EObkKvbdFpATWgFy
-EOcKjvbdrzLpTAgn
-EPCjjvbdhuZeWrVC
-EPCkKvbdraellGjy
-DncLKvbdGKeTCgmV
-DoDLKvbdCEQAvJlf
-DoDLKvbdJvUfEFGi
-EOcKjvbdHDkVjCJj
-EPCjjvbdZxdJnClS
-DoCjjvbdcImJjewY
-DoDLKvbdkDMLRHUg
-DoDLKvbdqZOggREY
-DoCkKvbdkMakyeHP
-DoCkKvbdEvYpPmJe
-DncLKvbdJJdAJpHE
-DoDKjvbdEPCjkXCd
-DnbjjvbdlAmOmALA
-DoDLKvbdsBfNLgLZ
-DncLKvbdKyQjSzuG
-EPDLKvbdeAURMxJf
-EPCjjvbdkHflGGOL
-EOcKjvbdEuxpPlie
-DncKjvbdcyyPxYqC
-DoCkKvbdRDbaPqES
-DncLKvbdaaVeFpQX
-EOcLKvbdMuTSLNAX
-EPCkKvbdbiMjKfWx
-EOcKjvbdSCEEkiZL
-DncKjvbdbhmJkGWx
-DncKjvbdWXJYVcdg
-EOcLKvbdvBDxrndh
-DoCkKvbdCEQBVjNG
-EPDLKvbdxUmFQyMO
-DnbkKvbdznpRFCkx
-DoCjjvbdKDJbpjDY
-EOcLKvbdREDBQRDr
-DoDLKvbdZtIhyETO
-EObjjvbdKfGHbBQu
-DnbjjvbdnUtzKirG
-EPDLKvbdyNsHwsIc
-DoCjjvbdIrxaSlxM
-DoCkKvbdRjyFuHLT
-EPCkKvbdJvUfDdgJ
-DnbkKvbdgQBzvcwh
-DnbkKvbdpyOgfqEY
-DnbkKvbdmRxuZsEJ
-EObkKvbdmRyUysDi
-DnbjjvbdrzMPraIO
-EPDLKvbdDxXksssl
-EPDLKvbdqUUGrSKt
-EPCjjvbdZisIPfbG
-EPDLKvbdiGicZVjV
-DnbjjvbdqcdiPnVa
-DoDLKvbdGKdsCglu
-EPCkKvbdYSlBNUOx
-DoCkKvbdjmBkyeHP
-EObjjvbdKDJcRKDY
-EPDKjvbdiLdcmuCy
-DoCjjvbdbAvEfQQX
-EPDKjvbdegjvRmqH
-EOcLKvbdrounibvG
-DoCkKvbdliEUQtrB
-DoCkKvbdrXPlChyR
-DnbkKvbdcyxoxZRC
-DoCkKvbdWIYWYHYz
-DnbkKvbdmJETptrB
-EObjjvbdbBVeGPpX
-DoCkKvbdypnliKXA
-EOcLKvbdatagXkTh
-EPDKjvbdrounjDWG
-EPDKjvbdUyHsyjnn
-EPDKjvbddZxoxZRC
-DnbjjvbdKCjCpjDY
-DoCjjvbdKkBHvAJy
-DnbjjvbdjbkkRGuH
-DoCjjvbdrafNMGjy
-DncKjvbdxnTHwsJD
-DncKjvbdemFvfmJk
-DnbjjvbdIwsbILqQ
-EObjjvbdUMWPAvOi
-EOcLKvbdGKdsChMu
-DoCjjvbdWXIxWEEg
-DoCjjvbdvPTzqKnt
-DoDKjvbdILazmwRL
-EPCkKvbdjlakzFHP
-EPDLKvbdKDJbqKCx
-EOcLKvbdHELWKBjK
-DoCkKvbdOFDshhkE
-EPDKjvbdBhkCKhej
-DoDKjvbdNddTiJKd
-EPCkKvbdVqmwadkc
-EPCkKvbdFfKSOItR
-EPCjjvbdZshiYcrn
-DncLKvbdvAcxsOeI
-EObkKvbdKVtfEFHJ
-DncLKvbdXsMBNUPY
-DoDLKvbdCTAbtGXS
-DoDKjvbdRyjHsDWA
-DoCjjvbdJcKDRJcY
-EOcKjvbdEuxpPljF
-DncLKvbduWNxKQsA
-EOcLKvbdhuZeXSUb
-EObjjvbdjvWnDaxX
-EObjjvbdwWlAvAuu
-EObkKvbdqquKnLBN
-DoDLKvbddCSmSATm
-DoCjjvbdwtmEpxlO
-DnbjjvbdDoCkLWcE
-DncLKvbdwyhGFxEr
-EOcKjvbdrykosAgn
-DnbjjvbdNeEUJJLE
-DoDKjvbdjuwNdCYX
-EPDKjvbdiGibyVjV
-DnbjjvbdYqNEhmEq
-EPDLKvbdxVNEpyLn
-DoCjjvbdZeYGzgiC
-DoCjjvbdZjTIQGbG
-DnbkKvbdSPsfjGEX
-EObjjvbdBsBDUGXS
-DoCkKvbdsBfNMGkZ
-EOcLKvbdLBLGmCXq
-EPDKjvbdJTZBTNYM
-DnbjjvbdJTZBSmYM
-DoDLKvbdjKFgjNYS
-DoDKjvbdqlzKYkhJ
-EPCkKvbdkWXOECYX
-EObkKvbdFkEsDINV
-EObjjvbddndsKstS
-DoCjjvbdauBfwjsh
-DnbjjvbdFjeTCglu
-EOcLKvbdfMfWflik
-EObjjvbdlYsRryGt
-EPCjjvbdtbcVWuoP
-DnbjjvbdMgDPmQVL
-DoDLKvbdjhHLefNk
-EOcLKvbdUsmTfMWK
-DoCkKvbdptTfqqjt
-EObkKvbdrRuKmjaN
-EPCjjvbdzoQQdcMY
-DoDKjvbdrpVoKDVf
-DoCkKvbdlZSrTYft
-DoCjjvbdBhjajiFj
-EOcLKvbdzoQQdbkx
-EObkKvbdOhAYZAYa
-EOcKjvbdjvXNdBww
-DnbjjvbdEXwlTtTl
-DoCkKvbdzjVPocsU
-DoDLKvbdZQldiMeR
-DncKjvbdYNqAYVVt
-DnbjjvbdtvNxKRTA
-EPCjjvbdqceIonWB
-EOcKjvbdyXiKCPzL
-DoCkKvbdfIKurNpg
-DoDKjvbdFxuVAdYC
-EOcLKvbdeOdrjssr
-DncLKvbdxnShYTIc
-EPDLKvbdoznEKwoA
-DoDLKvbdptTfrRkU
-DncLKvbdkWWnDaxX
-EPCjjvbdKWVGDeHJ
-EPCjjvbdtumwipsA
-DoCkKvbdZxcinDMS
-EObjjvbdCWzdIeQW
-EPDKjvbdHgGzYwwg
-EOcKjvbduDCtvvOo
-DnbjjvbdqvokbiZR
-DnbjjvbdmIcsptqa
-DncLKvbdrJAJdmPF
-EPCkKvbdKjaHvAJy
-DoCkKvbdhuZdwSUb
-EOcKjvbdnPzZVjyC
-DoDKjvbdYSlAmUPY
-EOcKjvbdffLzNgHA
-DncLKvbdptUHRqjt
-EPCjjvbdyTNiMqag
-DoCjjvbdauBgXkTh
-EPCjjvbdbiMikGXY
-EOcLKvbdIHGzZXwg
-DncKjvbdrXPkcIxq
-DnbjjvbdOTTugEuQ
-DnbkKvbdjcMKqHUg
-DoDKjvbdffMZnHHA
-DoCjjvbddijSWUzn
-DncKjvbdBhkCKiGK
-DncKjvbdJYTbHkqQ
-DnbkKvbdqwPlCiZR
-DoCkKvbdxUmFRYkn
-DoDKjvbdmSZUzTDi
-EPDLKvbdkyTSSxft
-DoCjjvbdmajXYPOV
-EPCkKvbdMowqVnHT
-DncLKvbdTppoUuHm
-EPDLKvbdgFkymfgA
-EObjjvbdhgJcYujV
-DncKjvbdtAGqIABS
-DoDLKvbdqZOhGpdY
-EObkKvbdjbkkRGuH
-DoCjjvbdGLEsChNV
-DnbjjvbdZoOIeEyj
-DncLKvbdbrbjsdJa
-EPCjjvbdGGJqmiTq
-EPCkKvbdNPxRWNgT
-EPCjjvbdJpydnfOF
-EOcKjvbdcyxoxYpb
-EPDKjvbdmozZWLYb
-EObjjvbdVTmUFlVj
-DoCjjvbdNrtWGduQ
-DncKjvbdqUTfqqkU
-DoDKjvbdTfznMWue
-EOcLKvbdNsTugEuQ
-DoDLKvbdjhHLfGOL
-EObjjvbdZtJJYdSn
-DoDKjvbdZjTHofbG
-DncKjvbduCbtwVno
-EPCkKvbdZtIhxcsO
-EOcLKvbdnUuZkJqf
-EObkKvbdiCPCeXQq
-EOcKjvbdZtJIxcsO
-EOcLKvbdZRNEhmFR
-DnbkKvbdFjdsDINV
-DncKjvbdsZlQSaIO
-EObjjvbduLxXAtAw
-DncKjvbddoFSjtTr
-DoCkKvbdmbKXXoOV
-DoDKjvbdOAIsTirA
-DncLKvbdMfcQMpVL
-EPDKjvbdsrqrxzFD
-EOcLKvbdZRMdiMdq
-EObkKvbdCTAbsfXS
-EPDLKvbdtunYJpsA
-EObkKvbdYSkaNToY
-DoCkKvbdZMRdUOMN
-EPCkKvbdIsYaSmYM
-DncLKvbdVYgtZkPO
-EObjjvbdaNLBsUmH
-EOcLKvbdZyEKOCkr
-DoDLKvbdOSsufdtp
-DoDKjvbdhbPCdvqR
-DnbkKvbdiZuFkpnG
-DoDKjvbdHDjujCJj
-EPDKjvbdCDpBVjMf
-EObkKvbdeFOrBwDK
-DoDLKvbdhgJbxvJu
-EObjjvbdiZuFlQmf
-EPDKjvbdeuzwpJzs
-EPDKjvbdezuyEhsw
-EPCkKvbdJYTbIMQp
-DnbkKvbdkIHLeenL
-DoCkKvbdAMgyTXZx
-DnbkKvbdfIKvRnQg
-EPDLKvbdJqZePFnF
-DoCjjvbdRjxfVGkT
-EOcLKvbdySmhlqbH
-DnbjjvbdEYYMUTtM
-DoDLKvbdhtydvquC
-EObjjvbdZRMdiMdq
-EPCjjvbdVZITzLOn
-DoCkKvbdmuVZjjRf
-DoCjjvbdzoQREbkx
-DnbkKvbdkyTSSxgU
-DoCjjvbdzRPNIjXA
-EPDKjvbdnPyxvLZC
-EOcKjvbdSZjHrbvA
-EPCkKvbdShyjRABM
-EObjjvbdYpmEiMeR
-DoCjjvbdFaOqYizm
-DncLKvbdEvZQQMjF
-DncKjvbdNrtWGeVQ
-DoDKjvbdqdFJPmvB
-DnbjjvbdRXODblID
-DoDLKvbdyzdnRhIh
-EPCkKvbdcTCjsdKB
-DncLKvbdJcKCqKCx
-EObjjvbdmfdwmNgZ
-EPDLKvbdqUTgSSLU
-EObjjvbdZyEKODLr
-EPDKjvbdTppoVVIN
-DnbjjvbdFVyPpNJe
-EPDKjvbdJYUBhLqQ
-EPDLKvbdqceIpOWB
-EPDLKvbdiBnbeXQq
-DnbkKvbdGZVVBEYC
-DncKjvbdGLFTDINV
-EObjjvbdUGzmlXWF
-EOcLKvbdxrmiMqbH
-DoDLKvbdJpzEnenF
-EObjjvbdEvYoomJe
-DoDKjvbdJqZdoFme
-EObjjvbdEuyPpMie
-EOcKjvbdmtuZjjRf
-EPDKjvbdjKGHilwr
-EPCkKvbdpaIeAWgd
-DoDKjvbdGZVUaDxC
-DoCjjvbdFkErcHlu
-EOcKjvbdrbFllGjy
-DnbkKvbdMRwMzUpz
-DoCkKvbdDxYLtTsl
-EOcLKvbdLBKfmBxR
-DoCjjvbdVwJYWDeH
-DoCkKvbdZoOIdeZj
-EPDLKvbdpfEFUWAh
-EOcLKvbdKWVGDdfi
-EObkKvbdtvNwipsA
-DoCjjvbdwuNEqZMO
-EObkKvbdfSBWzkbo
-EPDLKvbdFxuVAdXb
-DnbkKvbdRWnEClHc
-EOcKjvbdkCkjqHUg
-DoCjjvbdbsDKscia
-EPDLKvbdzQoMiKXA
-DnbkKvbdRDcApQcr
-DoDKjvbdZtIiYcrn
-DoDLKvbdqZPHgQdY
-EObjjvbdyfxlAMeX
-EObjjvbddjJrWUzn
-EPDKjvbdjcMLQgVH
-EOcLKvbdozmckXoA
-EPDKjvbdcJMjLGWx
-EPCkKvbdbhlijewY
-EObjjvbdrEFJPnWB
-EOcKjvbdmuVZjirG
-DncKjvbdnBjXYOmu
-DncLKvbdjcLjqHUg
-EPDLKvbdlhdUQuRa
-DoDKjvbdVwIwvEFH
-EObkKvbdZMSDsnLm
-DoDLKvbdzHZMAMdw
-EOcKjvbdZMSDsnLm
-DncKjvbdZshhyDsO
-DncKjvbdCEPaWJlf
-EOcKjvbdxxJKCQZk
-EPCkKvbdezvZEiTw
-EPDLKvbdypoMiKXA
-EPCkKvbdnUuZjjRf
-DnbkKvbdFfJqnJUR
-DoCjjvbdTpqPUthN
-DncKjvbdcyxoxYpb
-EObkKvbdCSaCsfXS
-DnbkKvbdRacdlIyL
-DoCjjvbdTIzKRABM
-EPCkKvbdatbGwjsh
-EObjjvbdUsltGMWK
-DoDLKvbdtvOXjQsA
-DnbjjvbdYSlAmUPY
-EOcKjvbdwuNEpxkn
-EObkKvbdYqMdiMdq
-EOcKjvbdnGeXlmgZ
-DnbkKvbdqwQLcJYq
-EObkKvbduVmxJqTA
-EObjjvbdmoyyVkYb
-DoDKjvbdBdPaWKMf
-DncKjvbdVvhwvEFH
-EObkKvbdauBfxLUI
-EOcLKvbdMgDQNQUk
-EOcKjvbdsQVnjCuf
-EObkKvbdjuvnEBww
-DoCkKvbdkWXODbXw
-EPCkKvbdZyDjNblS
-DoDKjvbdZLqdUNlN
-DoDKjvbdbLMFoNcA
-DoCkKvbdFVyQPmJe
-EOcKjvbdhkdcmuCy
-EPCkKvbdmtuZjiqf
-DnbjjvbdRbEFLiYk
-EPCkKvbdySnJMqag
-EPDLKvbdhlFDnVCy
-DoCjjvbdzoQREblY
-EPCjjvbdvBEYroFI
-EPCjjvbdJbjCqJcY
-DnbkKvbdliEURUrB
-DoDKjvbdOTUWGdtp
-EOcLKvbdZnmhddzK
-EPDKjvbdSBcdkiZL
-DoCjjvbdZMRctOLm
-DoDLKvbduCcUwVno
-DoDLKvbdEzspeMDJ
-EPCjjvbdULunaWOi
-DoDLKvbdIwsaglQp
-EObkKvbdJuuFdFGi
-EPCkKvbdQccBQRDr
-EPDKjvbdNrsugEtp
-EPDLKvbdEXxLtUUM
-DoDKjvbdVBCQsRRy
-DncKjvbdeFPSCWcK
-DoDLKvbdhficYvJu
-DncKjvbdkClLRHVH
-EOcLKvbduWNxKRTA
-EObjjvbdNPwpumgT
-DoCjjvbdjmCLzFGo
-DncKjvbdZtIhxdSn
-EObkKvbdKQyePFme
-EPCjjvbdEuxpPljF
-DoCkKvbdZtIhyDrn
-EPDLKvbdJpzFOfNe
-EPDKjvbduaEZTPFI
-EPDLKvbdSQTgKFcw
-EOcLKvbdBcpAujMf
-EPCjjvbdfHkVrOQg
-EPCjjvbdKaKflaxR
-EObkKvbdZjTIQGaf
-EOcLKvbdijGIKMwr
-EPDLKvbdvBEZTOdh
-DnbkKvbdZRNEhleR
-DnbkKvbdijFgimXr
-EObjjvbdEASIlywX
-DoCjjvbdKaKgNCXq
-EPDLKvbdTppoUuHm
-EPCkKvbdwzHefYEr
-EPCkKvbdhtyeWrUb
-DnbkKvbdPyNAGsRj
-EPDKjvbdmttzKiqf
-DnbjjvbdRacdkhyL
-EOcLKvbdeJjRvUzn
-EObjjvbdNHCpNQVL
-EPCjjvbdgLGzcGAE
-DoCkKvbdidkGtoAO
-DnbkKvbdKDJcRKCx
-DnbjjvbdSQTgKGEX
-EPDLKvbdyqPMiJwA
-DnbkKvbdLrWlytpz
-DnbjjvbdmgExNNgZ
-EPCkKvbdlYsRrxgU
-DnbjjvbdTkuoAvPJ
-EOcKjvbdgFkymgHA
-EPDLKvbdmaivxOnV
-DnbjjvbdEztQeMDJ
-EObjjvbdWfYzUAPT
-DnbkKvbdiMEdNuDZ
-DoDKjvbdgQBzwEXh
-EOcLKvbdSBcdlIyL
-DnbjjvbdrMzJxkhJ
-DnbjjvbdddnrCXDK
-DncLKvbdmbKXXnnV
-DnbjjvbdYzbfSKWZ
-EPCjjvbdUMWPBVoJ
-EPDKjvbdBraDUGWr
-DoCkKvbdFkFTDINV
-DncKjvbdYkqdTmkm
-DncKjvbdmpZyVjyC
-DoCjjvbdZisIQHCG
-DncLKvbdYqMeJMeR
-EPDKjvbdZjTHpHBf
-EOcLKvbdcJMikFwY
-DoCkKvbdFpATXHGZ
-DnbjjvbdVBBqSpqy
-DoCkKvbddZyQXxpb
-EOcLKvbdqlyiyMHi
-EPDLKvbdfMfWgNJk
-DoCjjvbdrNZjZLgi
-EPCkKvbdeOdsKtTr
-EPDKjvbdLrXMytpz
-DncLKvbdQvnDcMHc
-DoDLKvbdyYJJbPyk
-DnbjjvbdrylPsBIO
-DnbkKvbdTqROuUgm
-DoCjjvbdcyyQYZRC
-EObjjvbdbLMFnmcA
-EObjjvbdbVCGxKsh
-EObjjvbdelfWgMjL
-EPDLKvbdnGdwmOGy
-EPCkKvbdcTDLTdKB
-DncLKvbdUxhTyjoO
-EPCjjvbdwzHfFxEr
-EPCjjvbdkxrqryHU
-DncLKvbdDihJvYKA
-EPCkKvbdRzJhScWA
-EObjjvbdZHWdAOri
-DoDLKvbdjbkkRGuH
-DncKjvbdNVSrLNAX
-DncKjvbdVqnYCElD
-DnbjjvbdFWZPpMjF
-DoCjjvbdZMRctNkm
-EPCjjvbdRNXaxmtz
-EOcLKvbdLZQjSztf
-EObjjvbdePFSjssr
-EOcKjvbdjbkkRHUg
-EPDKjvbdcSbjtEJa
-EObkKvbdKQzFPFme
-DoCkKvbdnUtzKjRf
-DncLKvbdeOeTKtUS
-DoCjjvbdpstGqqjt
-EOcKjvbdrpWPJcWG
-EPCkKvbdwkXDgzyf
-DncKjvbdnPyxvLYb
-DoCkKvbdpxoIHRDx
-DnbjjvbdLFegaaRV
-EPCjjvbdrXQLcJYq
-DncKjvbdWXJXvDdg
-DnbjjvbdQdCaQRDr
-EOcLKvbdWWiXuceH
-DoCjjvbdbiNJkGXY
-EPDKjvbdijGHjMxS
-DoDLKvbdTfzmkwVe
-EObkKvbdmSZUzTEJ
-DnbjjvbdKefHaaRV
-DncLKvbddoFSjstS
-DncLKvbdSLYfUgKs
-EPCkKvbdCIjbLJGK
-DncKjvbdKNADzGuB
-DoDKjvbdBcpBVjMf
-DnbjjvbdpxoHfqEY
-DoCjjvbdANHyTWyx
-DoDKjvbdFjeSbgmV
-DnbkKvbdxwiKCPzL
-DncKjvbdqceIpNvB
-DnbjjvbdLFfHbAqV
-EPDLKvbdtTSTYydc
-EPCjjvbdezvYdiTw
-EObjjvbdWWiYVdFH
-EOcLKvbdZyDjNbkr
-EObkKvbdwzIFeweS
-EPCjjvbdjmBkzFGo
-EObjjvbdGAoRYizm
-EObjjvbdjcMLQgVH
-DoCjjvbddePRavbj
-EOcKjvbdlhcspuSB
-EPCjjvbdSCEFMJZL
-EObkKvbdEYYLsssl
-EObkKvbdpstGrSLU
-DoDLKvbdIGgZxwwg
-EObkKvbdWIYWYGxz
-EPCjjvbdfILWSNqH
-DnbkKvbdFWYpPljF
-DoCjjvbdVAbRSqRy
-EOcKjvbdeEoSCWcK
-EOcKjvbdSBceMIxk
-DoCjjvbdgFkzOGgA
-EObkKvbdbPfgELzd
-DnbjjvbdmtuZkJqf
-EPCkKvbdYgWdAPSi
-EObkKvbdmaiwXoOV
-EOcKjvbdjuvnDbXw
-DncLKvbdiBoCdvpq
-DnbkKvbdZxcjNbkr
-EPDKjvbdKfFgaaRV
-DoDKjvbdNGcPlouL
-EOcKjvbdHlBznXQk
-EPCjjvbdKQydoFme
-EPCjjvbdDxYLsssl
-DoCjjvbdHbLydzAD
-DnbkKvbdZisHofbG
-DnbkKvbdvvkaWBWV
-DncLKvbddxZtUSFz
-EPCjjvbdBcpBWJlf
-EObkKvbdVBBprpqy
-DoCkKvbdaSFcITfL
-DoCkKvbdZLqctOMN
-EPDKjvbdFWYpQMie
-DncKjvbdOEctJIjd
-DoCkKvbdEuyQPmJe
-DncLKvbdZGwEAOsJ
-DncKjvbdlqyUzSci
-EOcKjvbdKCibqKCx
-DnbjjvbdEOcLKvbd
-DncKjvbddneTLUUS
-EPCjjvbdhbPDFWpq
-DoCjjvbdeAUQmXjG
-EPDKjvbdVwJYWDeH
-DncKjvbdePFTKstS
-DoCjjvbdjggMFemk
-EPCjjvbdcScLUDjB
-DoDKjvbdZjTIQGbG
-EObjjvbdehKurNpg
-DncLKvbdbsDLUEJa
-EOcLKvbdEJgjWXjA
-EPCkKvbdqquKnKaN
-DnbjjvbdZjShQHCG
-DoCjjvbdCEPaVilf
-EObjjvbdzjUpQDrt
-EOcLKvbdUVlPjUBR
-DnbjjvbdeFPSCWbj
-DoCkKvbdKxpirzuG
-DncLKvbdrykpTAgn
-DoDKjvbdemGXGljL
-DncLKvbdTYKlNzkY
-DncKjvbduaDyTOeI
-EObkKvbdnBjWwoOV
-EPCkKvbdGdLWKCJj
-EPDKjvbdKeegaaQu
-EObkKvbdxnShXrhc
-DoCkKvbdsBemLgKy
-EPCjjvbdrzLoraHn
-EPDLKvbdrRuKmjaN
-DncLKvbdmajWxPOV
-DncKjvbdKVuGDeGi
-EObjjvbdziuQPdTU
-DnbkKvbdZxcinCkr
-EPCkKvbdlqxtzTDi
-EPCkKvbdyzeOSHiI
-DnbkKvbdqmZiyMIJ
-EOcLKvbdIwtBgkqQ
-DncLKvbdfekzOHHA
-EPCkKvbdKNADzGuB
-EOcLKvbdUaBqSqRy
-EPDKjvbdddnrBvbj
-DncLKvbdmuVZjirG
-EOcKjvbdbBWEepPw
-DncLKvbdwjvdHzyf
-EPDKjvbdmgFXlmgZ
-EPCkKvbdtSqryZeD
-EObkKvbdOFEUIhkE
-EOcKjvbdiBncFXRR
-DncLKvbdxZgeeweS
-EPDLKvbdxwiKCPyk
-EPDKjvbdHEKvJajK
-DncKjvbdrafMlGjy
-EOcLKvbdwWlBWBWV
-DncLKvbdegjvRmqH
-EObkKvbdehKvRmqH
-DoDLKvbdUaBpsQrZ
-EPDKjvbdRaceMJYk
-DnbkKvbdZRNEhldq
-DnbjjvbdKCibpjDY
-DoDLKvbdKaLGmCXq
-DncLKvbdKaKflbYR
-DoCjjvbdZQleJNFR
-EPCjjvbdZHWdAOsJ
-EObkKvbdpxnggRDx
-EPDKjvbdiUzFXSVC
-DncKjvbdhfjDZWJu
-DoCjjvbdYkrDtNlN
-EOcLKvbdkVvmdBxX
-DnbjjvbdFkFScHlu
-DoCjjvbdlrYuZrci
-EOcKjvbdrDdiPnWB
-DoCjjvbdfoazvcwh
-EPCkKvbdtkxWaUAw
-EObjjvbdVYgsyjoO
-EPCjjvbdssSTZZeD
-DoCjjvbdbVBfwjsh
-EPCjjvbdVgwuxGxz
-EOcKjvbdZoNhdeZj
-EPCkKvbdGYttaDwb
-DncLKvbdvAcySoEh
-DoDKjvbdIGfzZYYH
-DoDKjvbdtcCtvvPP
-EObjjvbdkxsRryHU
-DnbkKvbdJSyBTMwl
-DoCjjvbdsPuoJbuf
-DnbjjvbdZxcimcMS
-DoDKjvbdNGbpMouL
-DnbjjvbdSZjHrbvA
-DoCkKvbdmRxtysDi
-EOcLKvbdZQmEiMeR
-EPCjjvbdpfEEtVaI
-EPCjjvbdtTRrxzEc
-DoCkKvbdZdxGzghb
-DncKjvbdrykpTBIO
-EPCkKvbdxxIjCPyk
-DncLKvbdCEQAujNG
-EOcLKvbdrWokbhyR
-EPDKjvbdjJehKMwr
-DncLKvbdSxLMNzjx
-DnbjjvbdZyDinDMS
-EObjjvbdZirhQGaf
-DncLKvbdkClKqHVH
-EObkKvbdfIKvRmqH
-DoDLKvbdQvmcblID
-EPDKjvbdNsTufdtp
-EObkKvbdZRMeIleR
-DnbkKvbddwytTrFz
-EObjjvbdZxdKODMS
-EPCkKvbdSLZFtgKs
-EPDKjvbdrovPJbuf
-EPCjjvbdHgHZxxYH
-EPCjjvbdddoSBvbj
-DoDKjvbdegkVqmpg
-DoDKjvbdCfkfHAzc
-EObjjvbdtvNxJqTA
-EPDKjvbdhtyeXSVC
-EPDLKvbdUtMtGLvK
-EPCjjvbdFaPRYizm
-EPCkKvbdVZIUZkOn
-EPDKjvbdFeiqnIsq
-EObkKvbdddoRbWcK
-EOcLKvbdaNLCSuMg
-EObjjvbdFpATXGfZ
-DncLKvbdrXPkcJYq
-EPCjjvbdFjdrcHlu
-EObkKvbdUQqPVUhN
-DoDLKvbdpxoHfqDx
-DncLKvbdypoNIjXA
-EPCjjvbdmRxuZrdJ
-EPDKjvbdqZPHgREY
-EOcLKvbdZGwEAPTJ
-DncLKvbdjuwNcbXw
-DoCkKvbdTlWPBVoJ
-DoCjjvbdRzKIScWA
-EPDLKvbdZnnJFEzK
-EPDLKvbdqvokbhyR
-DnbkKvbdAMhZTWyx
-EPCkKvbdqYoHgRDx
-EPDKjvbdZtJJZETO
-EObkKvbdWRmxBdlD
-DnbkKvbdwWkaWBWV
-DncKjvbdgKfzcGAE
-DncLKvbdtbcUwVno
-EOcLKvbdcImJjfWx
-DncLKvbdSwjlNzjx
-EObkKvbdjblLQftg
-DncLKvbdQmYByNtz
-DnbjjvbdhlFDmtby
-DnbjjvbdcTDKsdJa
-EPCkKvbdqUTgSRkU
-EOcKjvbdZQleImEq
-EOcLKvbdtTRrxzFD
-EPCkKvbdUVkpKUAq
-DncLKvbdmbJvwoNu
-EPDKjvbdrJAKFMne
-DncKjvbdpyOhGqEY
-EOcLKvbdLrWlzVQz
-DnbjjvbdvAdYsPFI
-EPCkKvbdDoDKjvbd
-DoDLKvbdelfWgMjL
-EObkKvbdaMjbTUlg
-EObjjvbduVmwjRTA
-EPCjjvbdHffyxwwg
-DnbkKvbdXrkaNToY
-DoCjjvbdZshhyDrn
-DoDKjvbdunszqKoU
-EPCkKvbdmJDtRVSB
-DnbkKvbdcImKLFwY
-DoCjjvbdpedEtVaI
-DnbjjvbduMXwAtBX
-EPDLKvbdhbPDFWpq
-EPCjjvbdrDdiQNua
-DnbkKvbdKxpirzuG
-EObkKvbdcTCjtEJa
-DncLKvbdZQmFIldq
-DoCkKvbdqUUGrRkU
-DnbkKvbddZyQXyRC
-DncLKvbdIryBTNXl
-EPDKjvbduaDxrneI
-DoCkKvbdZMSDsmlN
-DoDKjvbdrovOjCvG
-EOcLKvbdhyuFkpmf
-DoDLKvbdddnrBwDK
-DncKjvbdDwxLstTl
-EPDLKvbddZxpXxpb
-DoDKjvbdCSaDTewS
-EPCkKvbdVqmxBeLc
-DoCkKvbdZMSEUNkm
-DnbkKvbdznopdcMY
-EPCjjvbdqYoHgQcx
-EPCkKvbdlhdUQuRa
-EObjjvbdauBgYLUI
-EObjjvbdySnJMrCH
-EObjjvbdkIGlGGOL
-DoCkKvbdwXMAvBWV
-DnbjjvbdiCOcFXRR
-EPCkKvbdIHGzZYXg
-EPDKjvbdiMFDmuCy
-EOcKjvbdtlXvaUBX
-DoDLKvbdhfibxuiu
-EPCkKvbdqwQMChxq
-EObkKvbdRkYeuGjs
-DoDKjvbdYkrEUNlN
-EPDKjvbdZshiYcsO
-DnbkKvbdQlxBxnUz
-DncKjvbdSPtGifEX
-DoDLKvbdmajXXoNu
-EObjjvbdHbMZdzAD
-EPCkKvbdZyEKNblS
-EObkKvbdKfFgbBRV
-EOcLKvbdOTUVgFVQ
-DoCkKvbdfMevgMik
-EPDKjvbdptTfrSKt
-DnbkKvbdxZhFexFS
-DncLKvbdUaBqTQrZ
-DoCjjvbduDDUwWPP
-DoDKjvbdNsUVfduQ
-EObkKvbdvOszpjoU
-EObkKvbdNsTvGdtp
-EPDKjvbdxwhiapZk
-DoDKjvbdiGjCxvJu
-DoDLKvbdxxIibPyk
-DncKjvbdvAdYroFI
-EOcLKvbdLAkGmBwq
-DncLKvbdIsYaTMxM
-EPDLKvbdFejRmiUR
-DoCkKvbdbrbjscia
-DoDLKvbdiHJbyWJu
-EOcKjvbdIwtBhMQp
-EObkKvbdpfDdtVaI
-EObjjvbdfMevfmJk
-EObjjvbdptUHRrLU
-EPDLKvbdYgXEAOri
-EObkKvbdZoOJEeZj
-DoDKjvbdqUUGqqjt
-DnbjjvbdxnTHwriD
-EPDKjvbdfHkWRmpg
-EPDLKvbdePEsLUUS
-EPCjjvbdEPCkLXDE
-DoCjjvbdgQBzvdYI
-DoCkKvbdZjSgogBf
-EObkKvbdtunYKQsA
-EPDKjvbdezvYdiTw
-EPDLKvbdLBLGmCYR
-EObkKvbdSLYfVHKs
-EPDKjvbdfILWSNqH
-EObjjvbdqlyixkhJ
-DoCkKvbdjKFgjNXr
-DoDLKvbdyzdmrHhh
-DoDLKvbdYpleImEq
-DoDKjvbdUxgtZkPO
-EPDLKvbdJKEAKPgE
-DoDKjvbdRXODblHc
-DoCkKvbdmozYujxb
-EOcKjvbdMgCpMouL
-DncKjvbdZsiJZESn
-EPCkKvbdzROmIiwA
-DnbkKvbdEOcLKvbd
-EPCjjvbdpxoIHRDx
-DnbkKvbdEJgivXjA
-DoDKjvbdfHjurOQg
-EObjjvbdyYIjCPzL
-DoCjjvbdvlvANEEm
-DncLKvbdOXoVzdOU
-EObkKvbdatagYKtI
-DnbkKvbdGYtuAcwb
-EObkKvbdegjuqnRH
-DnbkKvbdtumxKQsA
-DnbkKvbdIxTbILqQ
-DncKjvbdIsZBTMxM
-EPCjjvbdRjyFuHLT
-EOcKjvbdJXtCIMQp
-DoDKjvbdYkqdUOLm
-EObjjvbdZsiIyESn
-DnbkKvbdhtyeWrUb
-EPCjjvbdEuyQPmKF
-EOcLKvbdeFOrCWcK
-DoDLKvbdEvYpPlie
-DoCjjvbdZtJIyETO
-EPCjjvbdrWokcJYq
-DoDLKvbduaDySneI
-DncLKvbdsPunjCuf
-EObkKvbdpyOhGpcx
-EObkKvbdliDsqUqa
-DoDLKvbdhaoCeXQq
-DncLKvbdaRfChUFk
-EOcKjvbdYTMAlsoY
-EPCkKvbdfkGzbfAE
-EOcKjvbdURQnttgm
-DoDLKvbdDoCjjvcE
-DncLKvbdCJKbLJGK
-EPDKjvbdhlFEOVDZ
-DnbkKvbduCcVWvOo
-EPCjjvbdQdDBPpcr
-EObkKvbdbBVdeopX
-DnbkKvbdWHwuwfxz
-DoDLKvbdsrqrxzFD
-DoDKjvbdCSaCsfXS
-DoCkKvbdNPxQunGs
-EPDLKvbdyzeNrHhh
-EObjjvbdWXIwudFH
-EPCjjvbdKWVFceHJ
-EOcLKvbdqwPlCiZR
-DncLKvbdyOTHwsJD
-DncLKvbdxUleRZMO
-DnbjjvbdZHWdAPTJ
-DoDLKvbdePEsKstS
-EPDKjvbdHDkVjBij
-EObjjvbdSPtHJecw
-EObjjvbdyTOJNRag
-EOcKjvbdhfibxuiu
-EOcKjvbdRDbaPqES
-DnbjjvbdemGWflik
-DoDKjvbdwjwEHzzG
-EObjjvbdsCGNMGjy
-DnbjjvbdssRsYyeD
-DoDKjvbdJvVFceGi
-EPCkKvbdLZQjSzuG
-DoDLKvbdqUUHSSLU
-EPCjjvbdaaWEeoow
-EPCjjvbdDjHiuxKA
-EPDKjvbdZQmFIleR
-DoDKjvbdRDbaPpdS
-EPCjjvbdZoOJFFZj
-EObjjvbdQmYBxnUz
-EPDKjvbdKCibqKDY
-DoDLKvbdsCFmMGjy
-DncKjvbdKaKgMaxR
-DoCjjvbdrMzJxkhJ
-EObkKvbdeKKRutzn
-EPCkKvbdcTCjscjB
-EPCkKvbdZsiIyDrn
-EObjjvbdnBjXXoOV
-DoDKjvbdBiKakIfK
-EOcKjvbdRpTfjGEX
-DoCkKvbdtSqrxydc
-EObkKvbdHDkVjBij
-DncLKvbdqTsgSSLU
-DncLKvbdzdzOzdzQ
-DoDLKvbdVrNwadlD
-DncLKvbdSQUGifEX
-DncLKvbdxxJKBoyk
-EPCjjvbdrzLpSaIO
-DnbkKvbdhtyeXRuC
-DoDKjvbdyTOImSBg
-EPDLKvbddZxpXxqC
-DoCkKvbdZMSDsnLm
-DncLKvbdEARhlzXX
-EPDKjvbdkWXOECYX
-EObkKvbdSLYetgLT
-EPDKjvbdTfznLvvF
-DoCjjvbdSZjHrcWA
-DncKjvbdmJDsptqa
-EOcLKvbdZxdJmblS
-DnbjjvbdKWUfDeHJ
-EPCkKvbdLiBkpxAS
-EObkKvbdePFSkTtS
-DoDKjvbdYzbfSKWZ
-EPCjjvbdvAdYsPFI
-EObkKvbdTAFJIBnd
-DnbkKvbdsZkpSaHn
-DoDLKvbdczZQYZRC
-EPDKjvbdTvMQKTaR
-DnbkKvbdyYJKCQZk
-EPCkKvbdVAaqTQqy
-EOcLKvbdbPfgDkzd
-EObkKvbdePErjssr
-EPDLKvbdyTOJNRag
-EPDLKvbdyTNiNSBg
-DoCjjvbdqvpMCiYq
-DoDKjvbdRpUHKGEX
-DoCjjvbdDoCkLWbd
-DncLKvbddCTNSATm
-DoCkKvbdcSbkUEJa
-EPDLKvbdzjVPocrt
-DnbkKvbdxVNFQyLn
-DnbkKvbdSKyFtfkT
-DoCkKvbdmpZxukZC
-DncLKvbdGFjSOJTq
-EOcKjvbdhkdcmtcZ
-DoCjjvbdyzeORghh
-EPCkKvbdRbDeMJZL
-DoDLKvbdZMRctOMN
-EObjjvbdAMgySvyx
-EOcLKvbdTYLMNzkY
-DnbjjvbdmuVZjjSG
-DnbkKvbdZsiIyDrn
-EPDLKvbdjEjfuPAO
-DoCjjvbdkxrrSxgU
-DncKjvbdSLYfUfkT
-DnbjjvbdBcpAvJmG
-DoDLKvbdSPsgKFcw
-DoCkKvbdrXQMDIyR
-EObkKvbdKVuFdEfi
-DnbkKvbdrSVLOLBN
-DoDKjvbdZnmhdeZj
-DoDKjvbdNHDQNPuL
-DoDKjvbdpyOggREY
-DoCkKvbdQvmcblID
-EPCkKvbdMfbomQVL
-EPCjjvbdNVTRjmAX
-EOcKjvbdbhlijevx
-EObkKvbdWWiXvEFH
-DncKjvbdlqyVZrdJ
-DnbjjvbdrSUkNjaN
-DncLKvbdmSZUzTDi
-EObjjvbdZQmEhmEq
-EOcKjvbdiLdcnVDZ
-EObkKvbdySmhlqag
-DnbjjvbdbUagYLTh
-DncKjvbdBdQAvKNG
-DncLKvbdyzdnRghh
-EObkKvbdLZRKSztf
-DoDLKvbdRXOEDMHc
-DncKjvbdFkFSbgmV
-EPCjjvbdZQldiMeR
-EPDLKvbdFfJqmiTq
-EOcLKvbdpssgRrKt
-DnbjjvbdKRZeOeme
-DnbkKvbdnPzYvLZC
-DoDLKvbdUVlQJsaR
-EPCjjvbdqFceTvAh
-EPDKjvbdEARhlyvw
-EPCjjvbdNGbolotk
-DoCjjvbdVhYWXgYz
-DoCjjvbdUtMtFkvK
-DncKjvbdZQldhleR
-DnbjjvbdCEPaWKMf
-EObjjvbduWOXjQsA
-EOcKjvbdIjEAKPfd
-DoCjjvbdURRPUuIN
-EObkKvbdbhmKKfWx
-DoDKjvbdxrnJMrCH
-EObjjvbdGFirNiTq
-DoDLKvbdtSqsZZeD
-EPDLKvbdKkAhWAJy
-EPCkKvbdbVBgYKsh
-DoCjjvbdKWVFdFGi
-EPDKjvbdwXMAuaWV
-DoCkKvbdRXNdCkhD
-EPCjjvbdZRMdhmEq
-DncLKvbdcJMijfWx
-DnbkKvbdZRNEiNFR
-EObjjvbdAMhYrvyx
-EPDLKvbdijGIJmXr
-DoCkKvbdbhmJjfXY
-EOcLKvbdrzMQTBHn
-DnbkKvbdKVtfEEfi
-EPCkKvbdxVNFRZMO
-EPDLKvbdjcMLQgUg
-EObjjvbdjuwODbXw
-EObkKvbdZeXfzhJC
-EPCkKvbdUyITyjoO
-EPCkKvbdGFjRnIsq
-DnbjjvbdIwsbHlRQ
-DncKjvbdtTSTYzEc
-EPDKjvbdhfjCyWKV
-DoCjjvbdhytelQnG
-DoDKjvbdxnTHxTIc
-EOcKjvbdUQqPUtgm
-EPDLKvbdkNCMZdgP
-DnbkKvbdGKeTDINV
-EOcLKvbdZMRcsmlN
-DnbjjvbdRXNdCkgc
-DoCjjvbdRXNccMHc
-EObkKvbdRjyFuGjs
-EPDLKvbdmJDtRUrB
-DoDLKvbdpyPIGpdY
-EPCjjvbdkNCLzEgP
-DoDLKvbdZoNiFEzK
-DoDKjvbdKVuFcdfi
-DoDKjvbdqZOggQdY
-EPCkKvbdSQTgJecw
-EOcKjvbdrRuKnLAm
-EObkKvbdbUbHYLUI
-EOcLKvbdyNrgwsJD
-DoDKjvbdegkVqnQg
-DnbkKvbdGBOpxizm
-EObkKvbdJbjDQicY
-DncLKvbdSLZFuGjs
-DoCkKvbdGckVibJj
-DoCkKvbdzeZnzdyp
-EObjjvbdxxJKCQZk
-EObjjvbdJpzFPGNe
-EPCkKvbdUsltGLvK
-DoDLKvbdziuQQDsU
-DncLKvbdRzKIScWA
-DoCkKvbdSLYfVGjs
-EPCjjvbdhgKDYujV
-DoDKjvbdtunXjQsA
-EPDKjvbdqceJPnWB
-DncKjvbdUQqOuUhN
-EOcKjvbdJvVFceHJ
-EPCkKvbdMfcPmQVL
-EObkKvbdNrsufdtp
-DncLKvbdUQpnuUhN
-DncKjvbdYkqdUOMN
-EObkKvbdqceJQNvB
-EPDLKvbdCWzdJFPv
-DncKjvbdauBfxLTh
-DncKjvbdZnnJEdyj
-DncLKvbdEvYpPlie
-DoDLKvbdhaoCdvpq
-EObkKvbdCEQBVimG
-EOcKjvbdBiKbKhfK
-DnbkKvbdeuzwpJzs
-DncLKvbdhlEcnVDZ
-EObkKvbdkCkjpftg
-DncKjvbdZQldhmEq
-DoDKjvbdFyVVBEXb
-DncKjvbdZirgogCG
-EPCkKvbdWXJXvEFH
-DnbkKvbdOStVfduQ
-DnbkKvbdNGbpMouL
-EObkKvbdcIljKfXY
-DoDLKvbdXrlBMsnx
-EOcLKvbdfNFwGmJk
-EObjjvbdUQqPUuHm
-DnbjjvbdEXxLtUTl
-EPDKjvbdLGFhCBQu
-DncKjvbdTYLLmzkY
-DoCkKvbdkaNPNALA
-DoCjjvbdFxtuBDwb
-EPDLKvbdGGJrNhsq
-DoCkKvbdZyEJnDLr
-EObkKvbdDxXlTssl
-EPCkKvbdGKdrbglu
-EOcLKvbdmoyyVjxb
-DnbkKvbdRNYByNtz
-EObjjvbdGFirOItR
-DoCjjvbdxUmFRZLn
-EPCkKvbdsQWPJcWG
-EPCjjvbdegkWSORH
-DncLKvbdYzcGRjVy
-DoCkKvbdRXNcblHc
-EObkKvbdwtldqYkn
-DnbkKvbdZisHpGaf
-EPCkKvbdGQASvfey
-DnbjjvbdeFPRavbj
-EOcLKvbdGZVVBEYC
-EPCkKvbdKDKDQicY
-EPCkKvbdUsmUFkuj
-DoCkKvbdatbHXjtI
-EObkKvbdlrYtyrdJ
-DnbjjvbdjKGHilwr
-EOcKjvbdjlakyeGo
-DoDLKvbdnPzZVkZC
-DnbjjvbdCIjbLJFj
-DoCkKvbdegkWSORH
-DoDLKvbdjvXODbYX
-EPDKjvbdaaVeFoow
-DncKjvbdwtmFRZLn
-EObkKvbdkNCLzEfo
-DncLKvbdrbGMlGkZ
-EObjjvbdczZQXxqC
-DoCkKvbduaEZTOdh
-EObjjvbdZxcjNbkr
-EOcKjvbdCJKbKiFj
-DnbjjvbdjEkGuPAO
-DnbjjvbdZshhyDsO
-DoDLKvbdbsCkUDjB
-DoCkKvbdNddUIhkE
-EPDLKvbduVnYJpsA
-DnbjjvbdQvmccMHc
-DoDKjvbdDjIKWXjA
-DoDLKvbdxZhGGYEr
-EObkKvbdqquKmkBN
-EObjjvbdLBLHMawq
-DoDLKvbdrbFmLgLZ
-EPDLKvbdddnrBwCj
-DoCkKvbdbrcLUEKB
-DoDKjvbdqlyjYlHi
-DncKjvbdQwNdDMID
-EObkKvbdBiLCKhej
-EPCkKvbdSZigsDWA
-DnbkKvbdwuNFRYlO
-EPDLKvbduCbtvvOo
-DnbjjvbdaaWFFpPw
-EObkKvbdRECaQQdS
-DncKjvbdyOShXsJD
-EPCkKvbdFVyPomJe
-DoDLKvbdcJMijevx
-EObkKvbdSZigsCvA
-EObjjvbdrNZjYlHi
-DnbkKvbdKfFhBaRV
-EPDLKvbdSLZFtgKs
-EPDLKvbdrbGNMGjy
-EPCjjvbddwzTtSFz
-DoDLKvbdnGdxNNgZ
-DncLKvbdTfzmlWue
-EOcKjvbdbLLfOmcA
-DoDLKvbdNGcQNPuL
-DncLKvbdUaCQsQqy
-EPCjjvbdCfkfHAzc
-EPDKjvbdlrYuZsDi
-EPDLKvbdmajXYPOV
-EObjjvbduCcUvvOo
-DoDLKvbdJXsahLqQ
-EPCkKvbdOSsugEuQ
-DnbkKvbduaDyTOeI
-DncLKvbdYqNEhldq
-EOcLKvbdeOdsKtUS
-EOcKjvbdkHgLefOL
-EPCkKvbdrpVoKCuf
-EObjjvbdShzJqAAl
-DnbjjvbdgPazwDxI
-EPDLKvbdEztQdlDJ
-DoDKjvbdYpmFImFR
-DncLKvbdsBellHLZ
-DoCjjvbdatbHYKsh
-DoCjjvbdptTgRrLU
-EOcLKvbdznpRFCkx
-EPCjjvbdWWiYWEFH
-EPCjjvbdRosgJedX
-DnbjjvbdkIGkefOL
-DnbjjvbdiZuGLqNf
-EPCkKvbdANIZTWyx
-EObjjvbdZQmFJMdq
-EObkKvbdjvWmcbYX
-DncLKvbdRbEFMJYk
-EOcKjvbdpfDdtVaI
-EPDKjvbdJqZePFnF
-DnbjjvbdeFOqavcK
-DoCjjvbdnHFXlnHZ
-EPCjjvbdTvLpKTaR
-EPDLKvbdVgxVxHYz
-EObkKvbdZRNFJMdq
-EPDLKvbdbUafwkUI
-EObjjvbdKCjDQibx
-EPDLKvbdrXPlChyR
-DoCjjvbdxsNhlqbH
-DoDKjvbdNGbomPtk
-EPDLKvbdLBLGmBwq
-DncLKvbdIsZBTNYM
-EPDLKvbdOXnuzcmt
-EPDKjvbdKDJcRJcY
-EObkKvbdiBncFWqR
-DncLKvbdlhcsqUrB
-DncKjvbdrylQTAgn
-DoDLKvbdTlWOaWOi
-EPCkKvbdegjurNpg
-EObjjvbdyTNhmSBg
-EPCjjvbdQccBPpcr
-EPDKjvbdeOeSkTtS
-DoCjjvbdGYuVAdXb
-EObjjvbdrzMPsAhO
-DncLKvbdrEFJQOVa
-EPCjjvbdbhmKKfWx
-EPCkKvbdeYZssqez
-DnbkKvbdURQntuHm
-EPDLKvbdkDLkRHVH
-EOcKjvbdlZSrSxft
-EObkKvbdijGHimXr
-EOcLKvbdpxnggQdY
-DncKjvbdJKEAJpGd
-EPCjjvbdMowpumfs
-DoCkKvbdmSYtysDi
-DoDLKvbdBsBDTfWr
-EPDLKvbdrMzKZMHi
-DnbkKvbdBraDUGWr
-DnbjjvbdDxYMTtTl
-DncKjvbdFyUuBEYC
-EPCkKvbdVZITzKnn
-DnbkKvbdTkvPBWPJ
-EObkKvbdSQTfjFdX
-DoCjjvbdZisIPgBf
-EPCkKvbdLGFhCAqV
-DoCjjvbdNGcQNPuL
-DoCkKvbdqlzJyMIJ
-EObjjvbdZtIiZDrn
-DnbjjvbdeEoRawCj
-DoDKjvbdUaBqSqRy
-EOcLKvbdmfdwmOGy
-DoDKjvbdptTfqrKt
-DoDLKvbdvAcxsPEh
-DoCkKvbdySmhmRbH
-EOcLKvbdhfjDZWKV
-EOcKjvbdHffzZXxH
-DoDKjvbdLFfHaaQu
-EPCjjvbdgFlZmfgA
-EOcKjvbdtcCuXVno
-DoDLKvbdZirgpGbG
-EObjjvbdNsUWHEuQ
-DoDLKvbdsBfNLgKy
-DoDKjvbdGGKRnJUR
-DoDLKvbdKkAhWAKZ
-DnbjjvbdOFDtJJKd
-EPCjjvbdMuSrKmAX
-DnbjjvbdyXiKBpZk
-DncLKvbdOFDtIhjd
-DoDKjvbdNPxQumgT
-DnbjjvbdrSVLOKaN
-EPCjjvbdmJDtRVRa
-EPCkKvbdZeXfzgiC
-DoDKjvbdhaoCdwRR
-DncKjvbdiBncFXRR
-EPDLKvbdvBEYrndh
-DnbjjvbdBiLBkIfK
-EPDLKvbdhgJbyVjV
-DncKjvbdzRPNIiwA
-DnbjjvbdegjvRmpg
-DncLKvbdyYIibQZk
-EPCkKvbdxnTIXrhc
-EPCkKvbdhkeEOUby
-DnbkKvbdjJehKMxS
-DoDKjvbdkVwODbYX
-EPCkKvbdFWYpQNKF
-EPCjjvbdXrkaMsnx
-EPDKjvbdRjxetgLT
-DoDKjvbdEztRFLbi
-DnbkKvbdqdFJQNua
-EPDLKvbdTqQntthN
-DoDLKvbdYORAXtvU
-DnbjjvbdEYXksstM
-EPDKjvbdkMbMZdfo
-DncLKvbdJKEAKQGd
-EOcKjvbdFejSOJUR
-DoCjjvbdYlRdTmkm
-DoDKjvbdlYrqrxgU
-EPDKjvbdKVuFdFGi
-EOcLKvbdJqZeOfNe
-DnbkKvbdzoPpdcLx
-DoDKjvbddePSCXCj
-DoDKjvbdEASIlywX
-DoCjjvbdrEEiPmua
-EPCkKvbdidkGuPAO
-EObjjvbdKRZdnfNe
-DncKjvbdhgJcZWJu
-EPDLKvbdZxcimbkr
-EPDKjvbdNeEUIiKd
-EOcKjvbdvAdZSndh
-DncLKvbdjggMGGNk
-EObkKvbdOStVgFUp
-EPCkKvbdRaceMIxk
-DncKjvbdDwxMUUUM
-DncKjvbdWeyZtAPT
-EPCjjvbdEYXkstTl
-EOcKjvbdxsOJNSBg
-EPCkKvbdKQzFPFnF
-EOcLKvbdJXtCHkpp
-DoCjjvbdtlYXBUBX
-EPCjjvbdwuNFRYkn
-DoDLKvbdkDLjpfuH
-EPDKjvbdxrmhlqbH
-EOcLKvbdjmCLzEgP
-DoCjjvbduaEYsPFI
-EPCkKvbdCEPaWJmG
-DncKjvbdwtmEpxlO
-EPCkKvbdJbjCpjCx
-DnbjjvbdhzVGMRNf
-EPCkKvbdZxcinDMS
-DoCkKvbdrNZiyLgi
-EOcLKvbdIHGyyYYH
-EObkKvbdYNqAXuWU
-EPDKjvbdtvNwjRTA
-EPCkKvbdcJMjLFvx
-EPCjjvbdNrsvHEuQ
-DoCjjvbdnGeYMmgZ
-DoDLKvbdSLZGUfjs
-EPDKjvbdtvOYKRTA
-DoDKjvbdziuPpESt
-DoCkKvbdMgDPlotk
-DoCkKvbdeFOrCXDK
-DnbkKvbdMgColpUk
-EPCkKvbdKVuFdFGi
-DoDLKvbduCcUvuoP
-DoCkKvbdRDcAopdS
-EPDLKvbdehKvSNpg
-EOcKjvbdDoCjjvbd
-DoCjjvbdOSsufdtp
-EObjjvbdGQASwGfZ
-DncLKvbdiHJcYujV
-DncKjvbdRadFMJZL
-EPDLKvbdZxcinDLr
-EPDLKvbdhaoDFXQq
-DoDKjvbdcJNJkGXY
-DoDLKvbduaDySoEh
-EOcKjvbdUxhUZkPO
-DncLKvbdVYhTzKoO
-DnbjjvbdehKvRnQg
-DnbkKvbdOhAXyAYa
-DncLKvbdxsNiNRag
-DoDLKvbdTppoVUgm
-EObkKvbdURROuVIN
-EOcLKvbdNsTugFVQ
-DoCkKvbdrXPlChxq
-EPDKjvbdHDkWJajK
-DoCkKvbdxnTHxTIc
-EPDKjvbdEvZPoljF
-EPDKjvbdrzMQTBIO
-EPCjjvbdqZPHgQcx
-DoCkKvbdVqmxCFMD
-DncLKvbdSPsgKGEX
-DoCkKvbdzjVPodSt
-DoDKjvbdnUtyjiqf
-DnbjjvbdIBkydzAD
-DoDKjvbdcTDKscjB
-EOcKjvbdiHKDYuiu
-DncKjvbdBraDUFvr
-DoCjjvbdQmYCZOUz
-EPCkKvbdySnIlqbH
-DnbkKvbdkDLjqGuH
-DnbjjvbdVqnYCFMD
-DncLKvbdGKeTCglu
-DncKjvbdlZSqrxft
-DncLKvbdrEEhpNvB
-EOcLKvbdrDeJQNvB
-EPCkKvbdQmXbYmtz
-DoCkKvbdQlxCYnUz
-EPCjjvbdEObkLWbd
-EPDLKvbdehKuqmqH
-EPCkKvbdkCkjpfuH
-DncKjvbdRXNcblHc
-EPCjjvbdsrqrxydc
-EPDKjvbdddoSBvcK
-EPCjjvbdADRxJzIp
-EPDLKvbdvAcxsPEh
-EPDKjvbdSLYfUgLT
-DoCkKvbdsrrTYyeD
-DoCkKvbdLFegbApu
-EPCjjvbdyqOliJwA
-EPDKjvbdqTtGrRjt
-EPCkKvbdhbObdvqR
-EPCjjvbdcScLUEJa
-DoDLKvbdRWnDblID
-EObkKvbdZLrETnLm
-DoDKjvbdiBoDEvpq
-DoDKjvbdMpXqVmfs
-EPCjjvbdpxngfpcx
-DncKjvbdsCGNLfjy
-DncKjvbdRjyGVHLT
-EPDKjvbdkHflGFmk
-DoDKjvbdlhdUQuSB
-EPCjjvbdKaLGlbXq
-EPCkKvbdVhXvXgYz
-EOcLKvbdKyQirztf
-EOcLKvbdliDsqVRa
-DncKjvbdJutfDdfi
-DoDKjvbdEXwksssl
-DncLKvbdxxIjCPyk
-EObkKvbdKaKgMaxR
-EPDKjvbdkCkjpgUg
-EOcLKvbdZLqctNlN
-EPDKjvbdNddThhjd
-EOcKjvbdYlSDsmlN
-EPDLKvbdmgExNOGy
-DoDKjvbdePErjstS
-DnbkKvbdZQleIldq
-DncKjvbdpssfrRkU
-EOcKjvbdDxYMTtTl
-EPCjjvbdySmhmSBg
-EPDKjvbdiiehJlxS
-EOcLKvbdFkFTDINV
-EPCjjvbdVqmxCFMD
-DncLKvbdIsZAsMwl
-DncKjvbdBraDTfXS
-EPDKjvbdmuUykJqf
-DnbkKvbdFyVUaEXb
-EObjjvbdzROmJJwA
-DncKjvbdEYXlUUTl
-EPDKjvbdBhjbKhfK
-DoCjjvbdJpzEneme
-DncLKvbdVwIwuceH
-EPDKjvbdhfjDYuiu
-EOcLKvbdFpASwHGZ
-EPDKjvbdZoOJEdyj
-DoDKjvbdqdEiPnWB
-DoDKjvbdnBjXYPNu
-DoCjjvbdiHKCxuiu
-EOcKjvbdGLFTChMu
-EOcKjvbdiMEdNtby
-DnbkKvbdGdKujBij
-DncKjvbdKQydneme
-DnbkKvbdziuPocsU
-DoDKjvbdmfdxNNgZ
-EObjjvbdDxXlUTtM
-EObjjvbddePSBwCj
-EOcKjvbdNPxQvOHT
-DnbkKvbdZHWdAOsJ
-EPDLKvbdyqPNIiwA
-DoCkKvbdpyPHfqDx
-EPDLKvbdUslsekuj
-EPCjjvbdiZtfLpnG
-DoCkKvbdmSZVZsDi
-EPCjjvbdpyOhGpcx
-EPDLKvbdzitoodSt
-DoDKjvbdVYhUZkOn
-EObkKvbdBsAbtGWr
-EPDKjvbdvBEYsOdh
-EObkKvbdGcjuibKK
-DncKjvbdeATqNYKG
-DoCjjvbdKNAEZgVB
-DncLKvbdqUUHSRjt
-EOcLKvbdGcjuibJj
-DoDLKvbdnBivxPOV
-DnbkKvbdKCjDRKCx
-DnbkKvbdrykosAgn
-EOcKjvbdUaBqTRRy
-EPCjjvbdcSbkTcjB
-DoDLKvbdIxTbILpp
-DoCjjvbdHDjuibJj
-DncKjvbduaDxroFI
-DoDKjvbdpedEtWBI
-EOcKjvbdXsLaNTnx
-EPCjjvbdYORAYVWU
-DoCjjvbdYpleIleR
-DoDKjvbdCDpAujMf
-EPCkKvbdpxoHfpcx
-DoCkKvbdUWMPisaR
-EPCjjvbdmuUzKjSG
-EPDKjvbdkxsRsYgU
-EPCkKvbdZxcjNblS
-DnbkKvbdbPffckzd
-EPDKjvbdUVkpJtBR
-DoCkKvbdvlvANEFN
-EObkKvbdShyjRAAl
-EPDKjvbdxrmhmSCH
-DoDKjvbdjvXNcaww
-EPDKjvbdkDLjqGuH
-EObkKvbdhfibxuiu
-EPCjjvbdlqyUyrci
-EPDLKvbdFVxopMjF
-EOcKjvbdqdEiPnWB
-DncKjvbdrXPlChxq
-DoCkKvbdxVMeRYkn
-EPCjjvbdlhdUQtqa
-EObjjvbdRotHKFcw
-EObkKvbdwjvcgzzG
-EPDLKvbdBhkBjiFj
-EObjjvbdlZTSTZGt
-DoCkKvbdkIHMFemk
-EObjjvbddndrkTsr
-DoDLKvbdFVxpQNKF
-EPCjjvbdZsiJZETO
-EObjjvbdiMFEOUby
-DoCkKvbdhlFEOUby
-EPCkKvbdrWolDIyR
-EObjjvbdmajWwoOV
-DoCkKvbdypoMiJwA
-DoDKjvbdCDpAvKMf
-EPDLKvbdzjVQQDrt
-EObjjvbdjlakydfo
-EObkKvbdJpyeOeme
-DoDLKvbdiHJcYvJu
-EOcLKvbdbsDKtEKB
-EOcLKvbdrpWOjDVf
-EObjjvbdelfWfmKL
-EObjjvbdxnSgwriD
-DnbkKvbdqlyjZLhJ
-EPCkKvbdQdDBPqDr
-EPCkKvbdRkYfUfjs
-EObjjvbdhtydwSVC
-DnbjjvbdWWhwvDdg
-DoDLKvbdypnliKXA
-DncLKvbdhfibxvKV
-DncLKvbdxrmiNSCH
-DncKjvbdUaBqSqRy
-DoDKjvbdZMSDsmkm
-DncLKvbdFjeScHmV
-EPDLKvbdQYmAHSrK
-DoCkKvbdUVlQJsaR
-DoDKjvbdGKdsDHmV
-EPCkKvbdkHgLfGNk
-EPDKjvbdCIkCLJFj
-DoCkKvbdrpWOicVf
-DncLKvbdqmZiyMIJ
-EObkKvbdNGcQMpUk
-EOcLKvbdhfibxuiu
-DoCjjvbdjcLjqHVH
-EPDLKvbdZxdJnDMS
-DncLKvbdHDkViajK
-EPDKjvbdhytelRNf
-EPDKjvbdZRNFIleR
-EObjjvbdNQYRWNgT
-EPCjjvbdNdcsiIkE
-DoCkKvbdajkfOnDA
-EPCjjvbdRNYCZOUz
-EPCkKvbdBcpAvKNG
-DncKjvbdqTsfqrLU
-EPCjjvbdsZlQSaHn
-EOcKjvbdqdFIpNvB
-DoCjjvbdtbcUwWPP
-EObjjvbdEYYMTtTl
-EOcLKvbdgGLzNfgA
-DoDLKvbdzdynzeZp
-DnbjjvbdajlGPNcA
-EPCjjvbdEJhJuxKA
-EPCjjvbdLLBIWAJy
-DnbkKvbdwzIFewdr
-DoCkKvbdBvzciEpW
-DoDKjvbdaNKasVNH
-EPDLKvbdVviXudEg
-EPDKjvbdcbSmSAUN
-EPDKjvbdqcdiQNua
-EPCkKvbdbBVdfPpX
-EOcLKvbdrEFIpOVa
-DoDKjvbdDigivXjA
-DoDKjvbdYSlBMtPY
-DoDKjvbdrRtjnLAm
-DoDKjvbdKeegbApu
-DnbkKvbdHgHZyXxH
-EPCkKvbddwzUTrFz
-DnbjjvbduDCtwWPP
-EOcLKvbdaRfDHsfL
-EPCjjvbddeOqbWbj
-DncLKvbdOFDsiJLE
-EObkKvbdSBceMIyL
-EOcLKvbdrylQSaIO
-DncLKvbdJcJcQjCx
-EPCkKvbdaRfCgsek
-EOcKjvbdzitoocsU
-DoDKjvbdyzdnSIJI
-EObkKvbddndsLTsr
-DoDLKvbdcTDKtEKB
-EPCkKvbddZyQYYpb
-EPDLKvbdCIjakJFj
-DncLKvbdLrWlzVQz
-EOcKjvbdxrnIlqag
-DncLKvbddeOrCWcK
-DoCkKvbdRaceLiZL
-EPCkKvbddePSCXCj
-DoDKjvbdJpzFOeme
-DoCkKvbdiMFEOUby
-DncKjvbdUQqPVVHm
-EOcLKvbdcSbjscjB
-DnbjjvbdvPTzpjoU
-EPDKjvbdEPDLKvbd
-DncKjvbdvBEYsPEh
-DnbjjvbdIxTbIMQp
-DoDLKvbdZLrETnMN
-EPCkKvbdZxdJmbkr
-EPCjjvbdIidAKQHE
-DncKjvbdrSUjmjaN
-DnbkKvbdkaNOmALA
-DnbkKvbdiGjCyViu
-EPCjjvbdYkrDsmlN
-EOcKjvbdypoMhjXA
-DoCkKvbdiGjDZViu
-DoDLKvbdZxcinClS
-DoCjjvbdqUUGrSLU
-DnbkKvbdYTLaNUPY
-EObkKvbdehKurNpg
-EOcKjvbdmRyVZrdJ
-EObkKvbdZirhPgBf
-EOcKjvbdpyOggQcx
-DnbkKvbdfoazwEXh
-DnbkKvbdmuUzLJqf
-EPDLKvbdYlRdUOLm
-DncKjvbdRjyFuGjs
-DoDLKvbdQdDAopdS
-DoCkKvbdmSYtysEJ
-EObjjvbdQdDApRDr
-DoDKjvbdyOTHxShc
-EPDKjvbdptUHSRkU
-EOcKjvbdLGGHaaRV
-EOcLKvbdaaWFFopX
-DoCjjvbdlBMnmALA
-DnbjjvbdZnnIdeZj
-DoCjjvbdZMRdUNkm
-DoDLKvbdRMxByNtz
-EPCkKvbdJYTahMRQ
-DncLKvbdpyPIHQdY
-DoCkKvbdVBCRTRRy
-EOcLKvbdZyEKODLr
-EObkKvbdRadEkiYk
-EOcKjvbdcyyQXyRC
-DnbkKvbdVqnXadkc
-EPCkKvbdGKeTDIMu
-DnbkKvbdrRtjnKaN
-EObkKvbdFVxooljF
-DoDKjvbdDoCjjvcE
-DnbkKvbddneTLTsr
-EPDKjvbdGcjvKCKK
-EObjjvbdgPazvdYI
-DoDKjvbdSLYfVHKs
-DoCkKvbdEPCjkWbd
-DnbjjvbdmaivxPOV
-EObjjvbdJJdAJogE
-DoDKjvbdhkddNtby
-DoCkKvbdiCPDEwQq
-EOcKjvbdmajXYOmu
-DnbkKvbdqYngfqEY
-EOcKjvbdTppoUuIN
-EPDKjvbdNddThhkE
-DncKjvbdDnbkKvbd
-DnbjjvbdZRNEiNFR
-EPCjjvbdaaWFFopX
-EPDLKvbdBhjbKhej
-DoCkKvbdfpBzvcwh
-DoDKjvbdmSZVZrdJ
-EObkKvbdbAueGQQX
-EOcKjvbdNQXqWOGs
-EPCjjvbdvAcySndh
-EOcLKvbdySnImRag
-EObkKvbdSxLLmzkY
-DnbjjvbdcJMjLGXY
-EObkKvbdBsBDUFwS
-DoCjjvbdqlyjZLhJ
-EPCjjvbdliEURVRa
-DoDKjvbdptTgRrLU
-DncKjvbdiBoCdwQq
-EOcKjvbdEOcLLXDE
-EObjjvbdEYYLtTsl
-EPDKjvbdVTmTekuj
-DncLKvbdLFegbBQu
-EPCjjvbdmttzLKRf
-EPDLKvbdpfEFTuaI
-DncKjvbdiiegjMwr
-EObkKvbdxVNEqYlO
-DoCjjvbdRWnDblHc
-EPCjjvbdaSFbgtGL
-DnbkKvbdozmcjwoA
-DoDKjvbdPyNAHSrK
-DncLKvbdVqnXbEkc
-EPCkKvbdFWYpQNJe
-EOcLKvbdlYsRsZHU
-EOcLKvbdQvmcblID
-EObjjvbdRkYetfkT
-DoCjjvbdFjdsDINV
-EPCjjvbdrafNMGkZ
-EPDKjvbdczZQXxqC
-EPDLKvbdDwxLtTsl
-DoCjjvbdFpASvffZ
-DoCjjvbdiMEdOVCy
-DoCkKvbdelevfljL
-DnbjjvbdaSFcHtFk
-DncKjvbdBhkBkIfK
-EObjjvbdGKdsDHmV
-DncLKvbdhzUekqOG
-EOcLKvbdZshiZDrn
-DncLKvbdDjIJuwjA
-EPCjjvbdpxoHfqEY
-EPCjjvbdOAIrsjSA
-EPDLKvbdEuyPolie
-EPDKjvbdssRrxydc
-EPDKjvbdjlakzEgP
-DncKjvbdiUydwRuC
-DoCkKvbdZMSDtNkm
-EPDLKvbdbBVeGQPw
-EObkKvbdNHDPlpVL
-DoDLKvbdDjHiuxKA
-EPDKjvbdatbGwkUI
-DnbjjvbdeqaWzkbo
-DoDKjvbdvvlBWAuu
-EObjjvbdZirhQHBf
-EPCkKvbdDncLKvcE
-DnbjjvbdehKvSNpg
-DncKjvbdVwIwudFH
-DoCjjvbdNQYRVmgT
-EOcKjvbdNrtWGeUp
-DncKjvbdvvlAvAuu
-DnbkKvbdjKGHimXr
-EObjjvbdhkddNuDZ
-EPCkKvbdNddThhkE
-EPCjjvbdsPunjDVf
-EPDKjvbdxZgfFwdr
-DncKjvbdZyDjNblS
-EPDKjvbdjcMLQfuH
-DncKjvbdwtmFRZMO
-DncKjvbdVhXuwgYz
-DoCkKvbdVZITyjnn
-EPCkKvbdNrtWHEtp
-EPCjjvbdMfbomQUk
-EObkKvbddwyssqez
-EPCkKvbdhfjCyVjV
-DoDKjvbdtvOYJpsA
-DoDKjvbdiLdcnVCy
-EObkKvbdLrWlzUpz
-DoCkKvbdSPsgKFdX
-EPCjjvbdkNCLyeGo
-DncKjvbdCSaCtGWr
-DnbjjvbdRkZFtgLT
-DoCkKvbdVAaprprZ
-DnbjjvbdyXhibQZk
-DoCkKvbdsQVnibvG
-EPCjjvbduaDyTPFI
-DncLKvbdUaCRSpqy
-DoDLKvbdnPzYukZC
-DoDKjvbdRWnDcMHc
-EOcKjvbdxVNFRZLn
-EOcKjvbdRkZGUfkT
-DnbkKvbdvmWAMdEm
-EOcKjvbdmbKXYOmu
-EPCkKvbdyXiKCPyk
-DnbkKvbdkHgMFfOL
-DncKjvbdVYgtZkPO
-EPCkKvbdDnbkKwCd
-EObkKvbdKfGHaaRV
-EPCkKvbdqZOggQdY
-EOcLKvbdTlVnaVoJ
-DoCkKvbdhanbeWqR
-DnbkKvbdypoMiJwA
-DnbkKvbduMXvaUBX
-DoDKjvbddiirWUzn
-EObkKvbdqYoHgQcx
-DnbjjvbdFyUuBDwb
-DoCkKvbdKCicQjDY
-EPDLKvbdezvYeJTw
-EPCjjvbdSxKlNzkY
-DoDKjvbdQmYByOUz
-DnbjjvbdIGgZxxXg
-EPDKjvbdqmZjZLgi
-DncKjvbdmfeYMmgZ
-DncLKvbdGdLVibKK
-DoCkKvbdZGvdAOsJ
-EObkKvbdjSzhrkJz
-EPDLKvbddePRbWcK
-EObjjvbdDxXkstUM
-DoCjjvbdvlvANDeN
-EOcKjvbdrDdiQOWB
-DoCkKvbdmajXXoOV
-DncKjvbdUtMsekvK
-EOcLKvbdxxJKBoyk
-EPDKjvbdqYnhGpcx
-EObjjvbdatafwkTh
-DncLKvbdajkenmcA
-DnbjjvbdZQleImEq
-EPCjjvbdDncLKwCd
-EObjjvbdHELWKBij
-EPDLKvbdxrmhmRag
-DoCjjvbdwXMBWBVu
-EObjjvbdsPvOjCvG
-EOcLKvbdssSTZZdc
-EPCkKvbddndrkUUS
-EOcLKvbdNGbolotk
-EObjjvbdZMSDtNlN
-EObkKvbdZshiYcsO
-DncKjvbdDwxLsstM
-EOcLKvbdqZPIGqEY
-EOcKjvbdZRNFImFR
-EOcKjvbdrDeIonVa
-DnbjjvbdYzberKWZ
-EObjjvbdegjvRnQg
-DoCkKvbduDDUwWOo
-EPDKjvbdRotGjGEX
-EOcKjvbdKQyeOeme
-EPCjjvbdDwxMTtUM
-EObjjvbdpedFTvAh
-EPDLKvbdFxtuBDxC
-DoCjjvbdlqxtzSdJ
-DncKjvbdZLrDtOMN
-EPCkKvbdGdKujBjK
-DoCkKvbdezvYdiTw
-DnbjjvbdrEEiQOVa
-DncKjvbdOYPVzdOU
-DnbjjvbdxwiKCPzL
-EObkKvbdRpTgJecw
-DoCkKvbdwtmEpxlO
-EPDKjvbdqFceTuaI
-DncKjvbdsPuoJcWG
-DncLKvbdRyjHsCvA
-EPCkKvbdyXiJaoyk
-EPDLKvbdJvVFcdgJ
-DncLKvbdrXPlChxq
-EObjjvbdvBEZTOdh
-DoDKjvbdqvokcJYq
-EOcKjvbdlqxtzSci
-EPDKjvbdFkErbglu
-DoDKjvbdEPDLKvcE
-EObkKvbdijFhJlxS
-DoCjjvbdOFDtJJKd
-DnbkKvbdyXhiapZk
-DncKjvbdEXwlTtTl
-DncLKvbdZyEKOCkr
-DnbkKvbdqlyjYlIJ
-EObkKvbdIGfyxwxH
-DnbjjvbdyNrgxTIc
-DnbkKvbdeOeSkTsr
-EPCjjvbddZyPxZRC
-DncLKvbdkDMKpgUg
-EPDKjvbdfIKuqnQg
-EPCkKvbdhlFENuDZ
-DoDLKvbdiBoCdvqR
-EPCkKvbdySnImRag
-DnbjjvbdIxTahLqQ
-DoDKjvbdZnmhddyj
-EOcKjvbdgQBzwEXh
-EPDLKvbdfILWSNqH
-DncKjvbdjcMKqGtg
-EObkKvbdKQzEnfNe
-EPDKjvbdUQqPVVHm
-EObjjvbdREDBPpcr
-EObjjvbdnHExMnGy
-DnbkKvbdvBDxrndh
-DncKjvbdCEPaVimG
-DnbkKvbdGBPQxizm
-EPDKjvbdLqwMzVQz
-DnbkKvbdEPDLLXDE
-EPDKjvbdwWkaWBVu
-EObkKvbdxrnImSCH
-DncKjvbdsrqrxzEc
-DnbkKvbdpfDeUWAh
-EPDKjvbdjAQHApGj
-DoCkKvbdaSGChTfL
-DoDKjvbdiHJbxvKV
-EPDLKvbdlhdURUqa
-EPCjjvbdIwsahMRQ
-EObjjvbdGYtuBEYC
-DncLKvbdNeEThhkE
-EObkKvbdBvzdIePv
-EPCjjvbdbAueFpQX
-EOcLKvbdjAQGaQGj
-EPCjjvbdNHDQNPuL
-DncLKvbddoFSkUUS
-DncKjvbdACqxJzIp
-DnbkKvbdxLWcgzyf
-EPCkKvbdTlVnaWPJ
-DoCkKvbdCJKbLIfK
-DoCkKvbdDwxMUTtM
-EPCkKvbdEPDLKwDE
-EOcLKvbdTvMQKTaR
-EOcLKvbdeXytTrFz
-EPDKjvbdNUrrLNAX
-DnbkKvbdZjShPgBf
-EObjjvbdjAPfaQGj
-EPCkKvbdYlRdUNlN
-EPDKjvbdzjUoocsU
-DoDLKvbdKDKCqJbx
-EPCjjvbdQvnECkhD
-DnbkKvbdGckVjBij
-EObjjvbdXmqAXuVt
-EPCjjvbdeFPRavcK
-DoDKjvbdEYXlUTsl
-DoCjjvbdXrlBNToY
-DoDLKvbdrRuLNkAm
-DncLKvbdDxXlUTtM
-EOcKjvbdwuNEqZLn
-EPDKjvbdEOcLLWbd
-DoCkKvbdpfDdtVaI
-EOcKjvbdmpZyVjyC
-EOcKjvbdtSrSxzFD
-EObkKvbdsBemLfjy
-DoCjjvbdUGznMWue
-DncLKvbdbAvEfPpX
-DnbjjvbduCcUwVno
-DoDLKvbdTppoUuIN
-DncKjvbdYqMeImEq
-DoCkKvbdrDdhomvB
-EObjjvbdgFkzOGgA
-EPDKjvbdSwjkmzjx
-DoCjjvbdREDBPpcr
-EObjjvbdYkrDtNlN
-EObjjvbdZisHogCG
-DncKjvbdUtMselWK
-DoDKjvbdkHfkeemk
-DncLKvbdSLYeuHLT
-EOcLKvbdeFOrBwCj
-EObjjvbdHDjvKCJj
-DnbkKvbdkIGkeemk
-DoCkKvbdZQmFJMeR
-DoCkKvbdqTtGrSKt
-DncLKvbdcIljKfWx
-DnbjjvbdRjxfUgKs
-DnbkKvbdhyuFlROG
-EObkKvbdpxoHfpdY
-DoDKjvbdhuZdwRtb
-DnbkKvbdBdQAvKMf
-DoCkKvbdVTlsekuj
-EObkKvbdCJLBkIfK
-EOcKjvbdmgFYNNgZ
-EPDLKvbdxrnImRag
-DoCjjvbdbKlGPODA
-DoCjjvbdMoxRVmgT
-EPDLKvbdKfGIBaRV
-DoDKjvbdSCEElJZL
-EPCkKvbdmRxtzSdJ
-EPDKjvbdjKGIKNXr
-DnbkKvbdlhdTptrB
-EPDKjvbdBcoaVilf
-EPDKjvbdRzKIScWA
-EOcKjvbdnHFXmOGy
-EPCjjvbdFfJrNhtR
-DnbkKvbdzaAPHHCM
-DnbkKvbdwXLaWBWV
-DoDKjvbdKeegaaQu
-EPCjjvbdRotHKFcw
-EOcKjvbdnGeXmOGy
-DoCjjvbdmIdTqVRa
-DncLKvbdfNGWgMik
-EPCkKvbdrovPJbuf
-EObkKvbdEvYpPljF
-DncLKvbdOYPVzdOU
-EObjjvbdrzLosAhO
-DnbjjvbdyzdnSIJI
-EOcLKvbdIsZArmYM
-DoDLKvbdvAdZTPEh
-DoCkKvbdQvnDcMHc
-EObjjvbduMYWaUBX
-DncKjvbdUyHszLOn
-EPCkKvbdbrbjscia
-EObjjvbdTkunaVni
-EObkKvbdeATpmYKG
-EOcKjvbdqUTfqrLU
-EPDLKvbdGYttaDxC
-EPDKjvbdRNYByNtz
-DncLKvbdADRwizJQ
-DncLKvbdKfFgaaQu
-EPDKjvbdxZhGGYFS
-DncLKvbdwtmFRYlO
-EOcLKvbdehLVrNqH
-DnbkKvbdKxpirztf
-DoCjjvbdZxdKNcLr
-DoDLKvbdrbFmMGjy
-DoDLKvbdqYnhHQcx
-EPCjjvbdGKeTDIMu
-EPCjjvbdZRNEhleR
-DnbkKvbdfMfXGmJk
-DnbjjvbdRjyGVHKs
-EPDKjvbdZHXEAOri
-EObjjvbdxnTIYTIc
-DnbjjvbdTpqOttgm
-EOcLKvbdWXIwuceH
-EOcLKvbdzROmJKXA
-EPCkKvbduCbtwWOo
-DncLKvbdJTZBTMwl
-EObkKvbdlqyUysDi
-DnbjjvbdrpVoJcWG
-DoCjjvbdHDjvKCKK
-EObkKvbdVwJXvDeH
-EPDKjvbdZsiJZDrn
-DoCkKvbdhfjDYvJu
-DoDLKvbdZyEJmcLr
-DnbjjvbdmajXXoOV
-DoCkKvbdelewGmKL
-DoDLKvbdUtMsfMVj
-EOcKjvbdegjuqmpg
-DnbkKvbdZMRctNkm
-DncKjvbdhlEdOUcZ
-DoDLKvbdqAiFAXIE
-EObjjvbddBsMrAUN
-EPDKjvbdaSGDHtGL
-DnbjjvbdbVCGwjtI
-DncLKvbdzdzOzeZp
-EPDKjvbdKQyePFnF
-EPDLKvbdauBgXjtI
-EPDLKvbdCSaCtGWr
-DnbkKvbdbsCjtEKB
-DoDKjvbdCWzdIeQW
-EPCkKvbdRbDeLhxk
-EObjjvbdOEctJIkE
-DoCkKvbdSPtGiedX
-DncKjvbddZyPxZRC
-DnbjjvbdTukpKUBR
-DoCjjvbdpstHRqkU
-DncKjvbdNdctIhjd
-EOcKjvbdUWMPjTaR
-DoCkKvbdLGGHbApu
-EObjjvbdmozZWLZC
-EObjjvbdULvPAvOi
-EPDLKvbdcJMikFvx
-DncLKvbdjJfHjMxS
-EPCjjvbdqYoIHREY
-DoCjjvbdiifHjNXr
-EObkKvbdZLrETnMN
-DnbkKvbdtSqsYydc
-EPDLKvbdCIkCLJFj
-DoCkKvbdliDsqUrB
-DnbkKvbdNPxQumgT
-EPDKjvbdACrYJyiQ
-EOcLKvbdYTMBMtOx
-DoDLKvbdNGcQNPtk
-DncKjvbdtbbtvuno
-DncKjvbdZLrEUNlN
-DoCkKvbdaogHELzd
-DoCjjvbdgFlZmfgA
-EPCjjvbdvPTzpkOt
-DoCjjvbdjKGHjMxS
-EPDLKvbdauBgXjsh
-EOcLKvbdiBoCeWpq
-EObkKvbdSPsfjGEX
-DnbkKvbdzGxlAMeX
-DoDLKvbdqFcdtWAh
-EPCkKvbdOYOuzcmt
-DoCjjvbdDwxLtUTl
-DnbkKvbdOTUVgFUp
-DnbkKvbdiGibyWJu
-EPCjjvbdUyITzLOn
-DoCkKvbdbLMFnnDA
-DoCjjvbdDwxLsssl
-DncLKvbdBiLBjhfK
-EPDKjvbdNPwpvOGs
-EObkKvbdzQnliKXA
-DoCjjvbdeYZssqez
-DoCjjvbdeATplxKG
-EOcLKvbdRyjIScWA
-EPDKjvbddeOqbWcK
-EPDLKvbdACrXjZhp
-DnbjjvbdmuVZkKSG
-EPDKjvbdVqmwbFLc
-EPCkKvbdCSaCtFwS
-DnbjjvbdVZHszLPO
-DoDKjvbdVrNxCFLc
-EOcKjvbdegjuqnQg
-EPCjjvbdZMSETmlN
-EOcKjvbdHDjvKBjK
-EPCkKvbdyOTIXsJD
-DoDKjvbdnQZyWKxb
-DncLKvbdxwhiaozL
-DncLKvbdNdcshhkE
-EPCjjvbdXnRAYUut
-DoDLKvbdNsUWGeUp
-DncKjvbdWHwuwfxz
-DnbkKvbdRpUGifEX
-DnbjjvbdEOcLKwCd
-EPDKjvbduaEYsOeI
-DnbkKvbdjhHLfFnL
-DncLKvbdZoOJEeZj
-EPCkKvbdEPCjjvcE
-EObjjvbdxUldqYkn
-EObkKvbdOEdThiLE
-DnbkKvbdjcMKpgVH
-EObjjvbdkIGkeenL
-DncKjvbdZsiJZDrn
-EPCkKvbdxnShXsIc
-DoDKjvbdZnmiEdzK
-DoCkKvbdVTmUGLvK
-EOcLKvbduCcVXVno
-EObjjvbdZQleJNFR
-EObjjvbdFejRmhsq
-EPDLKvbdaMkBruNH
-DoCkKvbdNQXqWNgT
-DoDKjvbdjuwNcbXw
-EPCjjvbdSBceLiYk
-DoCjjvbdMgColpVL
-DoDLKvbdVZHtZkPO
-DoDKjvbduMYXBUAw
-EPDKjvbdNeDshiKd
-DoDKjvbdTAFJICPE
-EObjjvbdJvVFceGi
-EObjjvbdNHCpMpUk
-DnbkKvbdijGIKNYS
-DoDLKvbdDncKkXCd
-DncKjvbdkMakyeGo
-EObkKvbdjKFgilwr
-DoCkKvbdOhAXyAZB
-DoCkKvbdUGznMWvF
-EOcKjvbdRosfifEX
-EPDLKvbdfNFvgMjL
-EObkKvbdxxJJbPzL
-EPCjjvbdQlxCYmtz
-EOcLKvbdgPazwEXh
-DoDLKvbdkySrTYft
-DoDLKvbdhgKDYuiu
-DoDKjvbdYkrETmkm
-EObjjvbdNPwpunHT
-EOcLKvbdYlRdUNlN
-DnbkKvbdZLrDtOLm
-EObjjvbdxrnJMrCH
-EObjjvbdZnnIeFZj
-DoCjjvbdzRPMhiwA
-DncKjvbdssSSxyeD
-EOcLKvbdjAPgAofj
-DncKjvbdRosfifEX
-DoDKjvbdEXwktUTl
-DnbjjvbdWRmwadkc
-EPDLKvbdeEoRavbj
-DoDKjvbdXsMBNToY
-DnbkKvbdVqmxCFLc
-EOcKjvbdkVwOEBww
-DoCjjvbdfNGXGmJk
-EOcLKvbdmtuZjiqf
-DoCkKvbdnPyyWKyC
-EObjjvbdJpydoGNe
-DnbkKvbdjJfHimYS
-DoCkKvbdyXhjBozL
-DoCjjvbdkIHLeenL
-EOcLKvbdTAEiIBoE
-DnbkKvbdvBDxsPFI
-DncKjvbdlhdTpuRa
-EObjjvbdFfJqmiUR
-EPCjjvbderAvzkbo
-DncLKvbdwygeexEr
-EObjjvbdSBdElJZL
-EOcKjvbdySmiMrBg
-EPDKjvbdatbGwkTh
-DncKjvbdnBivwnmu
-EPDKjvbdFxuVAdYC
-EPDLKvbdqlzJyMHi
-EPDKjvbdZRMdhldq
-DoCjjvbdNeDtIhkE
-DoCkKvbdfMewGlik
-EOcLKvbdhaoDEwQq
-DnbjjvbdIwsagkqQ
-DncKjvbdkIHMGFnL
-DoDLKvbdGdKuibKK
-DnbjjvbdTAEiICOd
-DncLKvbdNeEThiKd
-EObkKvbdYpmEiNFR
-EPDLKvbdFkFTDHlu
-DoCkKvbdkDLkRHUg
-DnbkKvbdyYIjCPyk
-DncLKvbdFVyQPmKF
-DnbjjvbdZQldhldq
-DoDKjvbdVqnYBdkc
-EPDKjvbdSKxeuGkT
-EPCjjvbdiZuGLqNf
-DnbjjvbdJTZArmXl
-DnbkKvbdyNrgwrhc
-EOcLKvbdrNZiyLgi
-DncKjvbdSBdFMJZL
-EPCkKvbdfMfWfmKL
-EPDLKvbdfMevfljL
-DoCjjvbdmIcsqVRa
-DoDLKvbdrEEhpOVa
-EPDLKvbdZRMeImEq
-DoDLKvbdyTNiMrBg
-EPCjjvbdsQVnibvG
-EOcKjvbdvBDxsPFI
-DoDKjvbdqquKnKaN
-DncLKvbdqGDeTuaI
-EPCkKvbdZdxGzgiC
-DoDKjvbdkDLkQftg
-DoDKjvbdePEsKtUS
-DoDKjvbdUxgtZjoO
-DncLKvbdxUmFRYlO
-DnbjjvbdwuMeRYkn
-DoCkKvbdRWmdClID
-EPDLKvbdCDpBWJlf
-DncKjvbduaEYrneI
-DnbjjvbdfHkVqmpg
-EPDKjvbdKxpirzuG
-DoDLKvbdZLqdUNkm
-DoDLKvbdDwxMTstM
-EOcKjvbdrzLosAhO
-DnbjjvbdqZPHgQdY
-EObkKvbdjggMFfNk
-EPCjjvbdZMRcsmkm
-EObjjvbdEJgiuxKA
-DncLKvbdZtJJZDsO
-EObkKvbdRjxeuGkT
-DncKjvbdqdFJPmua
-DoCkKvbdGYtuAcxC
-DoCjjvbdZnmheEzK
-DoCkKvbdKWUfEFGi
-DoCkKvbdfMfXGmKL
-DnbjjvbdjvWmcbXw
-DnbkKvbdyzeORhJI
-EPDLKvbdpstHRqjt
-DoDKjvbdTukpKUAq
-DoDKjvbdSPtGjFcw
-DncKjvbdWSNxCFMD
-DnbkKvbdjlalZdgP
-EOcLKvbdkxsRsYgU
-EObjjvbdLFfICApu
-DoDKjvbdCEQBWKMf
-DoDKjvbdbAvFFpQX
-DoCkKvbdhgKCxvKV
-DncLKvbdjcMLQgVH
-EPCkKvbdzitpQDrt
-EOcKjvbdNVTRjmAX
-EPDKjvbdkxsRsZHU
-DoDKjvbdKDJcRKCx
-EPDKjvbdFjeScHmV
-EPCkKvbdZjTIQHBf
-DnbkKvbdlqyUyrdJ
-DoDKjvbdehKurORH
-EObjjvbdbKlFoODA
-DoCkKvbdwtmFQyMO
-DoCjjvbdXnRAYUut
-DoDKjvbdxsOIlqbH
-DncLKvbdyNsIXrhc
-DoDLKvbdCEQAvKNG
-DncKjvbdRotHJedX
-EPDLKvbdVZHsyjoO
-DnbjjvbdkCkkRHVH
-DoDKjvbdRWmcblHc
-DncLKvbdqvokbiYq
-DoDLKvbdRkZGVHLT
-EObjjvbduCbuXVno
-DoCkKvbdEJgivYKA
-DoDKjvbdkWWnDbYX
-EPDKjvbdnGdxMmfy
-DoDLKvbdIHGzYxYH
-DoDKjvbduCbtwVno
-EObkKvbdqlyjYkgi
-EObjjvbdVwIwudEg
-DnbjjvbdfRaWzkcP
-EPCkKvbdEARhlzXX
-DnbkKvbdfMevfmJk
-DncLKvbdZyDjNcLr
-EOcKjvbdtAHQhABS
-DncKjvbdkClKqGtg
-DoCkKvbdEObkLXCd
-EObjjvbdFkFTDINV
-EOcKjvbdEztQdkcJ
-DoCkKvbdKaLHNBxR
-EPDLKvbdhaoCdvqR
-EObkKvbdrJAJdmOe
-EObjjvbdrpVnjCuf
-EPCkKvbdFjeTCglu
-DoCjjvbdqdEiPnWB
-EPDKjvbdGFirOJUR
-EPCkKvbdJmADzHUa
-EPCjjvbdWWhwucdg
-DncLKvbdBhkBjiFj
-DoCkKvbdSZihSbvA
-DncKjvbdZtIiZETO
-EPDLKvbdCTAcUGXS
-DoDKjvbdVqmxCFLc
-DncLKvbdmajWwoOV
-EPDKjvbdVhYVxHYz
-DoDLKvbddoFSjtTr
-DoDLKvbdrzMQTAgn
-DoCjjvbdUVlPjUBR
-EPDLKvbdtvOXipsA
-DoCjjvbdrouoKCvG
-EObkKvbdOSsufdtp
-EPDLKvbdIGfzZXxH
-EObkKvbdbQGgDkzd
-DoCkKvbdOFDtJIkE
-EPCjjvbdiHJbyWJu
-DnbjjvbdLAkHMaxR
-EPCkKvbdJTZBTMwl
-DncLKvbdSQTfjGEX
-EOcLKvbdlrZVZrci
-EObjjvbdkyTSTZHU
-EPCjjvbdxUleQxkn
-EPDLKvbdEKIKWYKA
-DoCkKvbdZHWdAPSi
-EPDLKvbdxVNFRZMO
-EPDLKvbdcSbkTcjB
-DoCkKvbdlYsSTZGt
-EPDKjvbduaDxroFI
-EObkKvbdNHDQMouL
-DoDLKvbdxrnJMqbH
-DnbjjvbdmfeXmOGy
-DoDKjvbdidkGtoAO
-DnbjjvbdGYtuBEXb
-DnbjjvbdRECaQQdS
-DoCkKvbdmajXXnnV
-DncKjvbdZMSEUNlN
-EPCkKvbdZtJIxcrn
-DncLKvbdJpydneme
-DncKjvbdVviYWEEg
-DoDLKvbdyXhjBoyk
-DoCjjvbdbhlikGXY
-DnbkKvbdVviXudFH
-EPCkKvbdYTMAlsnx
-EPCjjvbdxZhFeweS
-DoCjjvbdyNsIXriD
-DoDKjvbdznoqEcMY
-DnbjjvbdauCHXjtI
-DncKjvbdIsZAsMwl
-EPCkKvbdZMSDtOLm
-DnbkKvbdJqZePFme
-EPDKjvbdkHfkeenL
-DoDLKvbdaNLCStmH
-DncLKvbdIwsbHkqQ
-EObkKvbdfHjvRnRH
-EPCjjvbdlqyVZsDi
-EObkKvbdEuxoolie
-DoDKjvbdjAPgAofj
-EOcLKvbdjcMLRHVH
-DncKjvbdjKFgjNXr
-EPCkKvbdmIctQuRa
-DncLKvbdJpyePGOF
-DncLKvbdNGbpMouL
-EObkKvbdpfDdsuaI
-EPCjjvbdyzeORhIh
-DoDKjvbdrDdhpNua
-DoCjjvbdFfKRmhtR
-EPDLKvbdpfEEsuaI
-EPDLKvbdqcdhpOVa
-EPCjjvbdVYgsykPO
-DoDLKvbdDncLLXCd
-EObkKvbduaEYroEh
-EOcLKvbdkNBlZeHP
-EObjjvbdGcjvJajK
-DncLKvbdrpVoJbuf
-EObjjvbdEKIJuxKA
-DncKjvbdZxcjODMS
-DncLKvbdmgFXmOGy
-DoCkKvbdUMVoAuoJ
-DoDKjvbdqcdiQNua
-DnbkKvbdbrcKtDia
-DnbkKvbdKfFgbApu
-DncKjvbdezvZEiTw
-DnbkKvbdlqxtzSdJ
-DoCjjvbdOTUWGeUp
-EPCkKvbdJXtBhMQp
-EOcLKvbdOAJTTjSA
-EOcKjvbdfILVrNpg
-EOcLKvbdnQZxvLZC
-EPDKjvbdyYJJaoyk
-DnbjjvbdkMakzFHP
-DnbjjvbdjbkjpfuH
-DoCkKvbdgGLymfgA
-DoDLKvbdJYUBhLpp
-EPCjjvbdJSyBTMxM
-DnbjjvbdyTNiMrBg
-DnbkKvbdqYoHfpdY
-EOcKjvbdZyEKNcLr
-DoCkKvbdZtIiYcsO
-EPCkKvbdZQmFJNFR
-DncKjvbdSPsgKFdX
-DoCjjvbdvwMAuaWV
-EPDKjvbdHfgZxxYH
-EObkKvbdrSUjnKaN
-DnbjjvbdKWVGEFGi
-DncKjvbdsPvOjDWG
-EPDKjvbdhzVFkqOG
-DoDKjvbdssSSyZdc
-DoDKjvbdYkqcsmlN
-EPCjjvbdYpldiNFR
-DncLKvbdemFwGlik
-DoDLKvbdjuvmdBxX
-DoDKjvbdCTBDTewS
-DoCkKvbdKeehBaQu
-EObkKvbdwyhFexEr
-DoDKjvbdQvmccMID
-DoDKjvbdVviYVceH
-EPCkKvbdmRxtyrdJ
-EPDLKvbdYqMeJNFR
-EPCkKvbdRbDeMIxk
-EPCkKvbdcJMjKfXY
-DnbkKvbdVwIwvDdg
-DnbjjvbdIwtCHkpp
-DncLKvbdczYpYYqC
-EPCkKvbdKaLGmBxR
-DncKjvbduLwwAsaX
-DncLKvbdssRrxzEc
-EObjjvbdrXQMCiZR
-DnbkKvbdZRNFImFR
-EOcKjvbdACqwjZhp
-DnbjjvbdbKlGOmcA
-EObjjvbdGFirOJUR
-EPDLKvbdqvokbiYq
-EOcKjvbdJmAEZgUa
-DoCkKvbdbhljKevx
-EPCjjvbdbKlGPNcA
-EOcKjvbdRMxByOUz
-EOcKjvbdbsDLUEJa
-EPCkKvbdRacdlJZL
-EObkKvbdmuUyjjSG
-EObkKvbdjKFgjNXr
-DoDLKvbdlhctQuRa
-DoCkKvbdjKFhKMxS
-EObjjvbdpedEtVaI
-EOcKjvbdIwtBhLpp
-DnbjjvbdZHWdAPSi
-EOcLKvbdiLdcmuCy
-EOcLKvbdjcMLRGuH
-EPCjjvbdRbDdkiZL
-EOcKjvbdiHJbxvKV
-EOcLKvbdaSGDHsfL
-DoCkKvbdjKFhJlwr
-DncKjvbdiBoCeWqR
-EOcLKvbdegjvSNpg
-EOcLKvbdrbGMlHLZ
-DnbjjvbdBraDUGXS
-DncLKvbdFeirOIsq
-EPDLKvbdhytekpmf
-EOcKjvbdIsYaTMwl
-DnbkKvbdrSVLOKaN
-DoCkKvbdTIyjRABM
-EOcLKvbdsBfNMGkZ
-EPDLKvbdUtNTfMWK
-EObkKvbdRjxeuGjs
-EObkKvbdTqQnuVIN
-EObjjvbdhuZdwRuC
-EOcLKvbdqTtHSSKt
-DncKjvbdmpZxvLZC
-DoDLKvbdlAloNALA
-EPDKjvbdiLddOUby
-EPDLKvbdwuMdpxlO
-DncKjvbdNrsvHEuQ
-EPCkKvbdyOSgxTJD
-EOcLKvbdIryArlxM
-EPDLKvbdZHXEAPSi
-EPCjjvbdSCDdlIxk
-EOcKjvbdySnJNSCH
-DnbjjvbdijGIKNXr
-EPDKjvbdVAaqTRSZ
-EObjjvbdkxsSSxft
-EPCkKvbdnUtzKiqf
-EPCkKvbdlqxuZsEJ
-EObjjvbdEXxMUUUM
-EPCkKvbdLFfIBaQu
-DnbjjvbdrRtkNjaN
-DoCjjvbdNHCpMpUk
-EPDKjvbdZjTIQGaf
-EPCkKvbdHELWJbKK
-DoDKjvbdJbibpjCx
-DnbjjvbdJSyArmYM
-EPCjjvbdfNFwGmJk
-EOcLKvbdYTMBMsnx
-DoDLKvbdyTOJMqbH
-EObjjvbdEPDLLXDE
-DncLKvbdkyTSTZGt
-EObjjvbdGBPRYizm
-DoCkKvbdVviXvDeH
-DncKjvbdsQWOicVf
-DoCkKvbdfHjvSNqH
-DncKjvbdlZTSSxft
-DncKjvbdFVyPolie
-EPCjjvbdRXODblID
-DoCjjvbdlhcsqVSB
-DncLKvbdqYnhGqDx
-EObjjvbdFeiqmiUR
-DnbjjvbdKefHaaQu
-DoDKjvbdRNXbYmtz
-EOcKjvbdNwnuzcmt
-DoDLKvbdXFxytAPT
-EPDLKvbdOTUVfdtp
-DoCjjvbdraelkfkZ
-DncKjvbdXsMAltPY
-DoDKjvbdVUMsfLuj
-EPDLKvbdZisIPfbG
-EPDKjvbddZxpYYqC
-DnbkKvbdzjUopESt
-DnbkKvbdVUMtGMVj
-DncLKvbduCbtwWOo
-EObkKvbdaaVeFpPw
-DncKjvbdKNADzGta
-DncKjvbdeEoSCXCj
-EObjjvbdhancEvqR
-EObkKvbdKCicQibx
-DncLKvbdijGHjMwr
-DoCkKvbdziuPpETU
-DoCjjvbdiBnbeXRR
-DoCkKvbdZQmEiMdq
-EObkKvbdrMyjZMHi
-EOcKjvbddoErkTtS
-DoCkKvbdtkwvaUAw
-EPDLKvbdTlVnaVoJ
-DncKjvbdfHjurOQg
-DoDLKvbdWWiXvEEg
-EPCkKvbdqdEhpNua
-EOcLKvbdYSkaMtPY
-EPCkKvbdxmsHxTIc
-DnbjjvbdJqZdnenF
-EPDKjvbdWexzUAOs
-EOcLKvbdrovPKCuf
-DoDKjvbdkxsSSyGt
-Dnbjjvbdzdynzdyp
-EOcLKvbdHEKvJbJj
-EObjjvbdOStWHEuQ
-DnbjjvbdkyTRsZGt
-DoCkKvbdcJNKKevx
-DoDKjvbdSPtGifDw
-EObkKvbdGdLVibKK
-DnbjjvbdbBVdfPow
-DncKjvbdhtyeXSVC
-EPDLKvbdptTfrSLU
-DncKjvbdjvXODaww
-DncKjvbdqZOgfqDx
-DncLKvbdTJZjRABM
-EOcLKvbdTpqPVUhN
-EOcKjvbdRWmdClID
-DoCjjvbdqquLOLAm
-DoCjjvbdFfJqmiUR
-EOcKjvbddBsMrATm
-EOcKjvbdYzcFrKVy
-EPCjjvbdsZlQSaIO
-EPCkKvbdkHfkeenL
-EOcKjvbdiHJcYuiu
-DoDKjvbdCEPaVilf
-DoCjjvbddBrmSAUN
-EPDLKvbdSPtGifDw
-EOcLKvbdAMhYrvyx
-DncLKvbdTIyjRAAl
-EOcLKvbdZtIhyESn
-DnbjjvbdVUNUFlWK
-EOcKjvbdyXiJaoyk
-EPCkKvbdDncLKvbd
-EOcLKvbdKWVFcdgJ
-EPDKjvbdnQZxvKyC
-DncKjvbdjJehJlxS
-DoDKjvbdRkYfVHKs
-EPDLKvbdirzhsLJz
-EObkKvbdVUMtFkuj
-DnbjjvbdqwPkbiYq
-EPCjjvbdIGfzZYXg
-DoCkKvbdlYsRryGt
-EObjjvbdpfDeUWBI
-EOcKjvbdwtldpxkn
-DoCkKvbdzitopETU
-DoDKjvbdJuuGEEfi
-DnbkKvbdnPzZVkZC
-EOcKjvbdmfeYMnGy
-EPDKjvbdkIGlGGNk
-DncKjvbdezvZEhtX
-EPDKjvbdqqtjmkAm
-EPDLKvbdzRPNIiwA
-DoCkKvbdGKeSbgmV
-EPDLKvbdmJETqVSB
-EPDKjvbdbVCGwkTh
-DoCjjvbdBhkBkIej
-EOcLKvbdbBWFFopX
-DncLKvbdjggLfGOL
-EPCkKvbdzQnmIiwA
-EOcLKvbdhbPDFWpq
-EPDLKvbdkClLQgVH
-EObkKvbdrWpMChyR
-DncKjvbdMfbpNPuL
-DnbjjvbdNsUVfeVQ
-EOcKjvbdaRfDHtFk
-DoDKjvbdRbEFLhyL
-EOcKjvbdmIcsqUqa
-DncKjvbdFVyPpNJe
-DoCjjvbdLAjgMaxR
-EOcLKvbdypoNJKXA
-DncLKvbdEztRFMCi
-DoCkKvbduVmwiqTA
-EObkKvbdUyHsykPO
-DoCkKvbdhzUfLqNf
-EPCjjvbdiUzEvqtb
-EPDKjvbdpfDeTuaI
-EPCkKvbdSwjkmzjx
-DncLKvbdjKFgjMwr
-EOcLKvbdRWnECkhD
-EOcKjvbdZoOJFEyj
-DnbkKvbdvvlAvAvV
-DncKjvbdZLqcsmlN
-DncKjvbdyqOliJwA
-EPCkKvbdKWUedEfi
-DoCkKvbdePEsLTtS
-DnbkKvbdtcDVXVoP
-EPCjjvbdKCjCpicY
-EObkKvbdZdwfzhJC
-EPDLKvbdBhjajiGK
-EOcKjvbdJXsahMRQ
-DoCkKvbdZxdKNcLr
-EPDKjvbdnBjWwoOV
-DncLKvbdapGgDkzd
-EPDKjvbdjmCLzEgP
-EPCkKvbdWRmwbFMD
-DnbjjvbdBdQAujMf
-EObkKvbdzjUpPcsU
-DoDLKvbdwtmFQyMO
-DoCkKvbdiMEcmtby
-DncKjvbdSBcdkiYk
-EPCkKvbdfSBWzkbo
-EOcLKvbdxVMeRZLn
-DnbjjvbdCSaDUGXS
-DncKjvbdZtJIyETO
-EPCkKvbdTkvOaVni
-DnbkKvbdkySqsYft
-EPCjjvbdxsOJMrCH
-EPCjjvbdCWzdJEov
-EPCjjvbdEARiMywX
-EObkKvbdxsNiNSCH
-DncLKvbdhbPDFWqR
-EObkKvbdVUNUFlVj
-EObjjvbdXrlBNToY
-EOcLKvbdfHjvSOQg
-EPCjjvbdwWkaWAuu
-DncKjvbdbKlFnnDA
-EPCkKvbdRkZFuGkT
-EPCjjvbdMowpvNfs
-DncLKvbdmtuZjjSG
-DnbkKvbdiCPDEvqR
-DncLKvbdbAudfPow
-DnbjjvbdFjeSbhMu
-DncKjvbdSQTfjGEX
-EPDKjvbdbAueGQQX
-DnbkKvbdjKGIJmXr
-EOcKjvbdIryBTNYM
-EPDLKvbdmgEwlnGy
-EObjjvbdSBdEkhxk
-DoCjjvbdfMfWgMjL
-EPDLKvbdEObjjwCd
-EObjjvbdhzUekqOG
-EObjjvbdWSNwbElD
-DoDKjvbdrNZjYkhJ
-DoCkKvbdRkYfUgKs
-EObjjvbdczYpYZRC
-DoCkKvbdzoQQeDMY
-DncKjvbdFxuVBEXb
-DoDKjvbdSiZjRABM
-DoDLKvbdYzbfRivZ
-EPDLKvbdlqyUyrdJ
-EOcLKvbdtbbuWvOo
-DncKjvbdSKxfVGkT
-DoCjjvbdEXxLtUTl
-EOcLKvbdEPCjkWbd
-EPDLKvbdEObkLXDE
-EPCkKvbdxKvdHzzG
-EPDKjvbdpfDdtVaI
-DoCjjvbdbAueGPpX
-DoCjjvbdZMRdUOLm
-DoDLKvbdwtmFRYkn
-DoCjjvbdNPwpumgT
-DoCkKvbddijSWUzn
-DoDKjvbdJXsbHkqQ
-DnbjjvbdxZhFexEr
-DoCjjvbdSQUHJedX
-EPDLKvbdjmCMZdgP
-DncLKvbdMfbomPtk
-EOcLKvbdqTtHRqjt
-EPCkKvbdqceIpNvB
-DncLKvbdFxtuBDxC
-EPCkKvbdxVNEpyLn
-EOcKjvbdYzbeqivZ
-DoCjjvbdNdcsiJLE
-DoDKjvbdzjVQQDsU
-EObjjvbdvBDySneI
-DoDKjvbdBhjbKhej
-EPDLKvbdWSOYBdlD
-EOcKjvbdOYOuzcnU
-EPCkKvbdkCkkQgVH
-DnbkKvbdtlXwBTaX
-DnbkKvbdTppoVUgm
-DoCjjvbdQmXaxnUz
-DncKjvbdkHfkfFmk
-EPCjjvbdmgEwlnHZ
-EPDLKvbdZdxGzhJC
-EPCkKvbdmIdTqUqa
-DoDKjvbdzGyMAMeX
-DnbkKvbdTppnuUhN
-DoCjjvbdSLYfUgLT
-DnbkKvbdZsiJZETO
-EObkKvbdNUrqjmAX
-EObjjvbdZyDimcLr
-DoCkKvbdRDbaQRDr
-DnbjjvbdbAudfPow
-EPDKjvbdZjTHpGaf
-DoDKjvbdqwQLcIxq
-DnbjjvbdZLqdTmkm
-DoDKjvbdyXiKCPzL
-EObjjvbdssSTYyeD
-DoCjjvbdddoRawCj
-DoCjjvbdkMbLydfo
-DoCjjvbdVTmUFkvK
-DoCjjvbdhyuFkpmf
-EObkKvbdlYsSSyGt
-EPCjjvbdtvNxKQsA
-DoDKjvbdRpTgKFdX
-EObjjvbdjbkkQgVH
-DnbjjvbdaNLCStlg
-EOcKjvbdDxYLsssl
-DoCjjvbdfNFvgMjL
-DncLKvbdrovPJcWG
-DnbkKvbddoFSjssr
-DnbjjvbdSQTgKGDw
-DoCjjvbdQvnEDLhD
-EOcKjvbdUxhUZkOn
-EPCjjvbdEzsqFMDJ
-DoDKjvbdGdKuiaij
-EOcKjvbdxrnJMrCH
-DnbjjvbdUWMQJtBR
-EObkKvbdEKHivYKA
-EPDLKvbdYSlAltOx
-DnbjjvbdbVCHXjtI
-DnbkKvbdtkwwAtBX
-DoCjjvbdZQleJNEq
-EPDKjvbdEPCjjvcE
-EPCjjvbdCSaDUFwS
-EPDKjvbdHELViajK
-DoDLKvbdijFgjNXr
-DncLKvbdjmCLydfo
-EObkKvbddZyQXxqC
-DnbkKvbdySnImSCH
-EPCjjvbdqmZjYkgi
-EPCjjvbdGFirNiTq
-DoDKjvbdRXNdDMID
-DncLKvbdMfcQNQUk
-EOcLKvbdZdwfzghb
-EPDLKvbdULuoBWOi
-EObjjvbdFyVUaDwb
-DoCjjvbdNQXpumfs
-DnbkKvbdrWolDIxq
-EPCkKvbdBvzdIeQW
-DnbkKvbdfIKuqmpg
-EOcKjvbdnBiwXoNu
-EObjjvbdiHKDZWKV
-EPCjjvbdZLqdTnLm
-DoCjjvbdlYsSTYgU
-EPDLKvbdsBfNMHKy
-DnbkKvbdjuvmdCXw
-EPDLKvbdRDcBQQdS
-EOcKjvbdySmhmRbH
-EPDLKvbdbrbjscia
-EPDLKvbdkxrrTZGt
-DoDKjvbdcJMjLGWx
-EPDKjvbdKeegbBQu
-DnbjjvbdvPTzqKoU
-EOcLKvbdIidAKPgE
-DoDLKvbdVrOYBdkc
-EObjjvbdeFOqawDK
-EOcLKvbdZRNEhmFR
-EObjjvbdKfFgbBRV
-DoCjjvbdiLeEOVCy
-EPCkKvbdqmZjYkgi
-EPDKjvbdHffyxxXg
-EPDKjvbdZLrDsmlN
-DnbjjvbdTkuoBVoJ
-EOcKjvbduDDUvvOo
-DoDKjvbdZdwfzhJC
-EPCkKvbdfMfWgNKL
-EPCjjvbdRXOECkgc
-EOcKjvbdMowpvNfs
-DoDLKvbdiBoCeWpq
-EObkKvbdNwoVzdOU
-EPDLKvbdDoDKjvbd
-EObjjvbdLFehCBRV
-EOcLKvbduCcVWuno
-EOcKjvbdXsMBMtOx
-DnbkKvbdcIljKewY
-DoDLKvbdEzspdkcJ
-DncKjvbdqcdhomua
-EPDKjvbdiifHjNXr
-EObkKvbdVqnXbFLc
-EPCkKvbddwyssrFz
-DncKjvbdrSVKmkAm
-EPCjjvbdTlVoBVni
-EObjjvbdOhAYZAYa
-EPCjjvbdRadEkiZL
-DoCkKvbdSCEEkiYk
-EObjjvbdGZVVAcxC
-DnbjjvbdZyEJnDMS
-EOcKjvbdzitoodSt
-EPDKjvbdXFxzUAPT
-DnbjjvbdziuQQESt
-EPCjjvbdEARhmZvw
-DncLKvbdatbHXkTh
-DncKjvbdbsCjtDjB
-EPCjjvbdKWVGDdgJ
-EPDKjvbdrafNLfkZ
-EObkKvbdFkEsChMu
-DnbkKvbdVgxWXfxz
-EObjjvbdJbjDRJbx
-EObkKvbdwyhFfYFS
-EPCjjvbdMfbpNPtk
-EObkKvbdbsDKtDia
-EPCkKvbdkxsRsZHU
-DnbkKvbdvAdZTOdh
-DncKjvbdptUHRrLU
-DncKjvbdvPTzqKnt
-DncLKvbdTppoUthN
-DnbkKvbdrbFlkgLZ
-EPCjjvbdGdKvJajK
-EPDLKvbdACqxKZiQ
-DoCkKvbdbPffckzd
-DoCkKvbdhbOcEvqR
-DnbjjvbduCcVWvOo
-DoCkKvbdmuUzLKRf
-EPCjjvbdbUbHYLUI
-DoDKjvbdbKkeoNcA
-DoCjjvbdcScKtEJa
-DoCjjvbdyzdnRgiI
-EPCjjvbdkIGlFfOL
-EOcLKvbdzjUpPcsU
-DoDLKvbdJuuGEEgJ
-DncLKvbdTqROtthN
-EOcLKvbdpstGqqkU
-EPCkKvbdtSrTYzEc
-EPDKjvbdezvYdiUX
-DoDKjvbdtTRrxzFD
-DoCjjvbdrovOjDWG
-DoDKjvbdUQpoUthN
-EOcKjvbdKDJbpicY
-DnbjjvbdaSGCgtFk
-DoDKjvbdGZVVAcwb
-DnbjjvbdEvYopNJe
-EObjjvbdSQTgKFdX
-EPDLKvbdrXPkbhyR
-DoDLKvbdhyuGMROG
-DoDKjvbdzoQRFClY
-EPCkKvbdKWUeceHJ
-EObkKvbdZnmiFFZj
-DnbjjvbdtcDUwVoP
-DoCkKvbdjlakyeHP
-EPCkKvbdBvzdIdpW
-EPCjjvbddePRawCj
-DoDKjvbdmfeYNNfy
-DnbkKvbdSLYetgKs
-DncKjvbdFejRnJTq
-EPDLKvbdIGfzZXwg
-DncKjvbdJvVFdFHJ
-EOcLKvbdIHHZyYYH
-EPDLKvbdyXhiaoyk
-DoCjjvbdADSYJzIp
-EObjjvbdNPxQunHT
-EPCkKvbdxnTHwrhc
-DncKjvbdTppnuVHm
-EObkKvbdjlbLydfo
-DoDLKvbdVBBpsRRy
-DnbjjvbdACqwiyhp
-DoCkKvbdZRNFJNEq
-EOcLKvbdaRfDHtFk
-DoCkKvbdKfFgbBQu
-DnbjjvbddCTNSAUN
-EPDLKvbdTfznMXVe
-EOcKjvbdeOeSkUTr
-DnbkKvbdqdEiPnVa
-EOcLKvbdsBemMHLZ
-DoCkKvbdNPxQvOGs
-EPDLKvbdOTTufeUp
-DncKjvbdraelkfjy
-DoDLKvbdZoOIeFZj
-DnbkKvbdptTgRrLU
-DncKjvbdACrXiyhp
-EPDLKvbdIGgZxwxH
-DnbjjvbdZnmiEeZj
-DnbkKvbdWRmxCFLc
-DoDLKvbdyYIiaozL
-EPCjjvbdOTTvGeUp
-EPCkKvbdNUsSKmAX
-EPCjjvbdDigiuwjA
-DoDKjvbdIrxaTMxM
-DoDKjvbdZyDimcLr
-EPCjjvbdjbkkRHVH
-DoCjjvbdWXJYVceH
-EOcLKvbdlZTSSyHU
-DncLKvbdwuNEqYlO
-EPCkKvbdrpWPJbuf
-DncKjvbdtbcUwWPP
-EOcKjvbdGKeScINV
-DncKjvbdZeXfzhJC
-DncKjvbdUQqPVVIN
-DoDKjvbdxsNhmSBg
-DoDKjvbdURROuVHm
-DncKjvbdRMwbYmtz
-DoDKjvbdZRMeImEq
-EOcLKvbdWHwvXgYz
-EPDLKvbdIwsahMQp
-EOcKjvbdfHkVrNqH
-EObjjvbddjKSWUzn
-DncKjvbdxwiJbQZk
-EPCkKvbdMSWlzVQz
-DoDLKvbdUQpnuUhN
-DncLKvbdiCPCdvqR
-DoCjjvbdapHHELzd
-DncKjvbdyOSgwrhc
-DoCkKvbdDxYLtUTl
-EObjjvbdyfyMAMdw
-EObjjvbdHffzYxYH
-DoDKjvbdYzcFrKWZ
-EPDLKvbddZyPwyRC
-EPCkKvbdLhalRYAS
-DoCkKvbdGYtuBEXb
-DoCjjvbdrylQTAgn
-DoCjjvbdbBVeGPpX
-EPDLKvbdYpmFImFR
-DnbkKvbdJcKCpjDY
-DncLKvbdYTLaNUPY
-DnbkKvbdeOeSjtTr
-DoCkKvbdEYYLtTtM
-EPCkKvbdrzLoraIO
-DoCjjvbdKWVGDdfi
-DoDKjvbdBhjbLIfK
-EPCkKvbdNQYQvOGs
-EOcLKvbduLxXBTaX
-EPDKjvbdANHySwZx
-DnbkKvbdeOdsLTtS
-DnbkKvbdUsmTfMWK
-DoDLKvbdcImJkGXY
-DncKjvbdsPunibuf
-DnbjjvbdIGfyxxYH
-DoDLKvbdvBDyTOeI
-EPDLKvbdGKeScHmV
-EOcLKvbdqFceUVaI
-DncLKvbdqdEhpOWB
-DoDLKvbdTulPitAq
-DnbjjvbdWXIwudEg
-EPDLKvbdcTDKtDjB
-DoCjjvbdgFlZnHHA
-DnbkKvbdwuNEqZLn
-EObkKvbdmRxtzSci
-EObjjvbdjvXNdCYX
-DnbkKvbdqGDdsvBI
-DncKjvbdqdEhomvB
-DoCjjvbdrpVoKCvG
-EObkKvbdWHwvYHYz
-EOcKjvbdrykoraHn
-EPCkKvbdsPuoKCuf
-DncKjvbdZjSgofaf
-DncKjvbdNeETiIjd
-DoDLKvbddoFSkTsr
-EPCkKvbdkWWnECXw
-DnbkKvbdZRNFIldq
-EObjjvbdzjVQPdTU
-DnbjjvbdhytelRNf
-EOcKjvbdNPxQunHT
-DoCkKvbdmuVZkJrG
-EPCjjvbdUVlQJtBR
-DoDKjvbdzitpQESt
-DoCjjvbdraemLfkZ
-DoDLKvbdkNBlZeHP
-EObkKvbdrbGNMHLZ
-EPDLKvbdkIHLeemk
-DoDKjvbdbAvEeopX
-DoDKjvbdiGjCxujV
-EPCkKvbdqlzJxkgi
-DncLKvbdVZITzLPO
-EOcLKvbdVZITykOn
-EPCjjvbdjuvnDaww
-DoDKjvbdkVwOECYX
-EObjjvbdcyxpXyRC
-DnbjjvbdULvPAuni
-DnbkKvbdOTUWGdtp
-EOcLKvbdKDJcRKCx
-EPCkKvbdBsBDUFwS
-DncLKvbdQdDAopcr
-EObjjvbdcSbjtEKB
-DnbjjvbdlAloNALA
-DoCjjvbdADSXizJQ
-EOcKjvbdrpWOibvG
-EObjjvbdIGfzZXwg
-EPDKjvbdptUHRrKt
-DncLKvbdZdwfzhIb
-DoCkKvbdQZNAGrrK
-DoDKjvbduCbtvuoP
-EPCjjvbdJuuFceGi
-EPCkKvbdgGLymgHA
-DnbjjvbdcyyPxYpb
-EPCkKvbdhuZeWquC
-EObkKvbdyTNiNRbH
-DoCjjvbdVAaqSprZ
-DncLKvbdoznDkYPA
-EPCkKvbdiUydvquC
-DncLKvbdhytfMROG
-DoCkKvbdmbKXYPNu
-DnbkKvbdMpYQunHT
-EOcLKvbdHkaznXQk
-DoDLKvbdTvMPisaR
-DoCkKvbdIryBTNXl
-DoDLKvbdZLrDsmkm
-DncLKvbdlhctRVRa
-EPCjjvbdYkqcsmkm
-EPCjjvbdEXwlUTtM
-EObkKvbdEvZPoljF
-EPDLKvbdZRNEiNFR
-DoCkKvbdANIZTXZx
-DncKjvbdZoOIeFZj
-DoDLKvbdeJirWUzn
-DoCjjvbdRWmdDLgc
-DoDKjvbdACrYKZhp
-EPDKjvbdMowpunHT
-EOcKjvbdYTLaNTnx
-DnbjjvbdQvnEClHc
-DnbkKvbdSBceLhyL
-DoDKjvbdjgflGGOL
-EOcKjvbdYpldiMdq
-DoCjjvbdrovPKDWG
-DoDKjvbdZisHofbG
-DoDKjvbdEOcLKwDE
-EPCjjvbdhfjDZWJu
-DncKjvbdhfjCyWJu
-EOcLKvbdtSqsYzEc
-DoDLKvbdbQHHELzd
-DoDKjvbdySnImRbH
-EOcLKvbdVqmxCElD
-DnbjjvbdNdcsiJKd
-EPCkKvbdkNBkzEfo
-DnbkKvbdJKEAKPfd
-DncLKvbdiifIJlwr
-DnbjjvbdhtzEvqtb
-EObjjvbdwWlAvBWV
-EPDLKvbdlhctQuSB
-EOcLKvbdNddUIiKd
-EPDKjvbdJSxaTMxM
-EPDLKvbdVrOXaeMD
-DoDLKvbdGcjvKBjK
-DncLKvbdqvpLbiZR
-EPCkKvbdjKFgilxS
-DncLKvbdDoCjjvbd
-DoCjjvbdqqtjnKaN
-EOcKjvbdBvzdJEpW
-DoCkKvbdcarlrATm
-DoDLKvbdQdCaQQdS
-DncKjvbdVqnXadkc
-DoCjjvbdJvUecdgJ
-DnbkKvbdVYhUZkPO
-EPDKjvbdxZgfFxEr
-EPCjjvbdsPunicWG
-DnbkKvbdmSYtyrdJ
-DnbjjvbdTulQJsaR
-DncKjvbdsrrSxyeD
-DnbkKvbdzQnmJJwA
-DncKjvbdatafxLTh
-EOcLKvbdmfeYNNgZ
-EObkKvbdNxOuzcnU
-EPDLKvbdDwwksstM
-EPDLKvbdxnTIYTIc
-EPDKjvbdHgGyyXxH
-EOcKjvbdGAnpyJzm
-DoCkKvbdUQqPVUhN
-DncLKvbdYgWdAOri
-DoDLKvbdygZMANFX
-EPCkKvbdrJAJdlne
-EPDLKvbdZnmheEyj
-DnbjjvbdIxUCHkpp
-DnbkKvbdjJehJlwr
-DoDKjvbdhlEdNuDZ
-EOcKjvbdeOeSkTsr
-EOcLKvbdVqnYBdlD
-DoDKjvbdeATqMwif
-EPCjjvbdrXQLbhyR
-DnbjjvbdFkErbhMu
-DoCjjvbdpxnhHQcx
-EOcLKvbdrWpMDIxq
-EPDKjvbdVhYWYGxz
-DoCkKvbdwzIGFxFS
-DoCjjvbdEztQeLbi
-DnbjjvbdlZTRrxgU
-DncLKvbdSZihSbvA
-DnbjjvbdrzLpTAgn
-EPCjjvbdNrsugFVQ
-DnbjjvbdxUleQxlO
-DncKjvbdtkwwBUAw
-DoCjjvbdbBVdeoow
-EPDKjvbdEObjkXDE
-DnbjjvbdhgJbxvKV
-EPCkKvbdIwtCHlQp
-DoCkKvbdxmsIXrhc
-EObkKvbddePSCXDK
-EOcKjvbdVrOXbEkc
-EOcLKvbdFVyPomJe
-DoDLKvbdREDBPqDr
-DncLKvbdaNLCStmH
-DncLKvbdbAudfQPw
-DoDKjvbdRaceLiZL
-DoCkKvbdJYUCIMRQ
-DnbkKvbdYkrDtOMN
-DnbjjvbdFkFTChNV
-EOcLKvbdZRMeImFR
-EObkKvbdUxgszLOn
-EOcKjvbdFjdsChMu
-EObkKvbdrafNLgLZ
-EPDKjvbdelewGmJk
-EOcKjvbdZMRctNlN
-DoDLKvbdliEUQtqa
-DncKjvbdqUUHSRjt
-EPDKjvbduCbtwVno
-DoCkKvbdaaVeFoow
-EPDLKvbdkClKqGuH
-DoDLKvbdCflFgAzc
-DoDLKvbdTAEhgbPE
-EObkKvbdmtuZjjRf
-EObjjvbdKDKCqJbx
-DncKjvbdrovOjDVf
-DoCkKvbdhtzFWqtb
-DncLKvbdEvYpQNKF
-EOcLKvbdeFPRavcK
-DoDLKvbdhlEcnUby
-DoCkKvbdegjvSOQg
-DncKjvbdhbPCeWpq
-DnbjjvbdsrrTYyeD
-DncLKvbdTlWPAvOi
-EPCjjvbdwzHeexEr
-DncLKvbdmJEUQuRa
-DnbkKvbdkIHLeemk
-EObkKvbdhtyeXSUb
-EOcLKvbdHDkWKCJj
-EOcLKvbdRbDdkhyL
-EObkKvbdRosfifDw
-EPCjjvbdOStVfduQ
-DnbkKvbdiHJbxujV
-DoCjjvbdsPuoJcWG
-EPCkKvbdDxXktTtM
-DoCjjvbdHDjujCJj
-EObjjvbdUWLoisaR
-EPDKjvbdqiAKEmOe
-DoDLKvbdxmsIYShc
-EPCkKvbdCJKbKiGK
-DoDLKvbdRECaQRDr
-EPDLKvbdYqNEiNEq
-DnbkKvbdiMEcnVCy
-DoCkKvbduCbtwVno
-DoDKjvbdHbMZdzAD
-DnbkKvbdemGXGmKL
-DoDLKvbdgQBzwDwh
-DoDKjvbdKQzEoGOF
-DoDKjvbdWSNwaeMD
-EPDKjvbdySmhlqbH
-EObkKvbdDxYLtTtM
-DnbjjvbdFxuVBEXb
-EObjjvbdiBoCdwRR
-EPCjjvbdGQATWgGZ
-EPCkKvbdYpleJNEq
-EOcLKvbdvPTzqKoU
-DnbkKvbdZQmEhldq
-DncKjvbdLBKgMawq
-EPCkKvbdqFceTvAh
-EPCjjvbdkIHMFenL
-DoDKjvbdehLVqnRH
-DoDKjvbdxwhibPyk
-DnbkKvbdkMbMZeHP
-EOcKjvbdsrrSyZeD
-EOcLKvbdMowpunHT
-EObjjvbdJqZdnfOF
-DoCkKvbdezuxdhtX
-DnbjjvbdaaWFFopX
-DoCjjvbdqdFJQOVa
-EPCjjvbdWWhwudFH
-EPDKjvbdhtzFWrUb
-EPCkKvbdWSNwaeMD
-EObkKvbdcIlikFvx
-EPCkKvbdauCGwkTh
-EPCkKvbdbhmJkGWx
-EPDKjvbdRosgJfEX
-DnbkKvbdTvMQJtAq
-DnbkKvbdsBfMlGkZ
-DnbkKvbdVrNxCElD
-DoDLKvbdmpZxukZC
-EObkKvbdhlEcnVCy
-EOcLKvbdwzIFfYFS
-DnbkKvbdZtIhxdSn
-DoDLKvbdjgfkfFmk
-DoDLKvbdqTtHSRkU
-EObjjvbdSCDeLiZL
-DoDKjvbdeATplxJf
-DnbkKvbdIBkzEzAD
-EOcKjvbdFWZQPljF
-DoCjjvbdRbDeMJYk
-EPDLKvbdDoCkKvcE
-DoCkKvbdZjShPfbG
-DnbjjvbdNPxQvOGs
-EPDLKvbdKyQirztf
-DoDLKvbdJutecdfi
-DoCjjvbdTppoUuHm
-EPDLKvbdjEkGuPAO
-DnbkKvbdVTmTekuj
-DnbkKvbdZyEJmcMS
-EOcKjvbdNddThhjd
-DncLKvbdrDdhpNua
-EOcKjvbdBiLBkJGK
-DoCkKvbdrXPkbhxq
-DnbjjvbdZQmEiMdq
-DncLKvbdhzUfMROG
-EPDKjvbduaEYroEh
-DoCjjvbdJYUCHkqQ
-DoCjjvbdwzHfFxEr
-EPCjjvbdLiBkqYAS
-DoDLKvbdxZgfFxEr
-DoCkKvbdraemLgLZ
-DoDLKvbdxxJJaozL
-EPDLKvbdKeehBaRV
-DoCkKvbdPIAYZAZB
-EObjjvbdBvzdIdov
-DoDKjvbdjblKqGuH
-DoDKjvbdlhdURVSB
-EPDKjvbdqvpMDJZR
-DncKjvbdajkeoODA
-EOcKjvbdkySqsZHU
-DnbjjvbdJqZdnfOF
-DncKjvbdZHWdAOsJ
-DoCkKvbdaNLCStlg
-DoDLKvbdVZHszKnn
-DoCjjvbdtvOYJpsA
-DoCjjvbdNPxQvNfs
-DoDLKvbdZLqctOMN
-EObjjvbdvwMAvAvV
-DnbkKvbdEuxpPlie
-DnbkKvbdAMhYsWyx
-DoCkKvbdtumwjQsA
-EPCjjvbdVAaprqRy
-EObkKvbdlZSqsYgU
-EObkKvbdBvzdIdov
-DnbjjvbdyOShYTJD
-EOcLKvbdZshhxdSn
-EPDKjvbdUtMselWK
-DoDLKvbdYqNEiMeR
-DncLKvbddePSBwDK
-DncLKvbdqYnggQcx
-DnbkKvbdqceJQOVa
-DoDLKvbdtSrTZZeD
-EPCjjvbdANHyTWzY
-DoDLKvbdcIlikFvx
-DoDKjvbdxmsHwsIc
-EObkKvbdYzbfRiuy
-EPDKjvbdWHwuwfxz
-EOcLKvbddndsLTsr
-EObkKvbdwXMAuaVu
-EPDLKvbdbVBfwjtI
-EObjjvbdfMfXHMik
-DoCkKvbdOXoVzdOU
-DnbkKvbdnGeXlnHZ
-EPCjjvbdGGJrOJTq
-EPCkKvbdhanbeWqR
-EOcLKvbdLhbLpxAS
-EPDLKvbdbBVdepPw
-EOcKjvbdWSNwadlD
-DoCkKvbdaRfChTek
-EPCkKvbdmbJvxOmu
-DoCkKvbdCSaCsfXS
-EObkKvbdbhljKewY
-DncLKvbddZxowxpb
-DnbjjvbdRDcBQQdS
-DnbjjvbdKDJbqKDY
-EObkKvbdWRmxCFLc
-EPDLKvbdYlSETmkm
-EOcLKvbdMIalRYAS
-DoDKjvbdCEQAuimG
-EPDKjvbdCTAcTewS
-EPCjjvbdrRtkOKaN
-DnbkKvbdtTRryZeD
-DnbjjvbdMgColpVL
-EOcKjvbdrDdhomua
-EPDKjvbdRbDeMJZL
-DnbkKvbdxnSgwrhc
-DoDKjvbdVvhxVdFH
-DncKjvbdLYqJrzuG
-DncLKvbdZsiIyETO
-EPDLKvbdieLHUoAO
-EPDLKvbdNsUVgEuQ
-EPDLKvbdoAKztHcn
-DncKjvbdfNFvgNJk
-DoCkKvbdqYoHgQcx
-DncLKvbddwzUUSFz
-DoCkKvbdIHGzZYXg
-DncLKvbddZxpXxpb
-DnbjjvbdhlFDnUcZ
-EPCjjvbdSKxfUfjs
-DoCkKvbdbAvFGPpX
-EOcLKvbdVhXuwfxz
-EPCkKvbddoEsKtTr
-DncKjvbdhkeEOVDZ
-EObjjvbdNUrqjmAX
-EPDLKvbdUWLojTaR
-DoDLKvbdWIYVwfxz
-DnbkKvbdUtMsekvK
-EOcKjvbdRpUHJecw
-DoDKjvbdCJKbKiFj
-EObjjvbdEuxoomJe
-EPCjjvbdLrWlytpz
-EObjjvbdMgDPlotk
-DncLKvbdNrtWHFVQ
-DoCjjvbdZeYGzgiC
-EPCkKvbdKaKfmCYR
-DoCjjvbdjlakzEfo
-EPDKjvbdpeceTvBI
-DnbkKvbdKDKCqJcY
-DoDKjvbdMowqWNgT
-EPDKjvbdRMxCYmtz
-EObjjvbdrXQLbiYq
-DncLKvbdZnmheFZj
-EOcLKvbdiLeENtcZ
-DncKjvbdzaAPGfal
-EPCkKvbdeATqNYKG
-EObjjvbdSCDdlIyL
-DoCkKvbdVZHtZjnn
-EPCjjvbdZtIhxdTO
-EPDKjvbdTlVoAuoJ
-EObjjvbdZRNFIleR
-DoDLKvbdEPDLKwCd
-DnbjjvbdfRaWzkbo
-EPDLKvbddneSjstS
-EObkKvbduCbtwWOo
-EPCkKvbdmoyyWKyC
-EPCjjvbdehLVrORH
-DoDLKvbduCcUvuno
-EObkKvbddZxowxqC
-EObkKvbdKQydoFme
-EPCkKvbdqqtkOKaN
-DoDKjvbduaEYsOeI
-EObkKvbdePEsLUTr
-DoDLKvbdbsDLTcia
-DncLKvbdDwwlTtUM
-EOcKjvbdOEdUIhkE
-DoDLKvbdtvOXjRTA
-EObkKvbdeFPSCXCj
-EPCkKvbdqlzJxlIJ
-EOcKjvbdUMVoBVni
-EPCkKvbdqqtkNkBN
-DoDLKvbdiVZeWquC
-DncKjvbdZLrDsmlN
-EPCkKvbdzitopESt
-EOcKjvbdnBjXYPOV
-EObkKvbdehKurOQg
-DoCjjvbdmJDsptrB
-DnbkKvbdaNKbTVNH
-DncLKvbdGQASvfey
-EOcLKvbdtbcUwVno
-EOcKjvbdqUUHSSLU
-EOcLKvbdvwLaWBWV
-EPCkKvbdRacdlIxk
-DnbkKvbdxZgfGXeS
-EOcLKvbdVAapsQqy
-EOcLKvbdQvnECkhD
-EPDKjvbdCWzchdpW
-DoCjjvbdpedFUWBI
-EPDKjvbdqvpMCiYq
-EPDLKvbdEPDKjwCd
-DncLKvbdGckWJaij
-EObjjvbdgPazwEXh
-DoCkKvbdUVlPitBR
-DoCjjvbdMSXMzVQz
-DnbkKvbdliEUQuRa
-DoCkKvbdOStVgFUp
-EPCjjvbdUtMtGMVj
-DoCkKvbdKWVFdFHJ
-EPCkKvbdUxhUZkOn
-DnbkKvbdLBKflbYR
-EPCkKvbdFkEsCglu
-DnbkKvbdKCibpjCx
-DnbkKvbdGLEsChNV
-DoCjjvbdLGFhCApu
-DncLKvbdeXzTsqez
-DoCkKvbdxrmhlqbH
-EPDLKvbdYlRdTmlN
-EPCjjvbdqYnhHRDx
-EPDKjvbdWfYzUAOs
-EPCkKvbdMJCLpxAS
-EObkKvbduCbtwVoP
-DoCkKvbdmfdwlmfy
-EPCjjvbdVBBprpqy
-DoDLKvbdEKHivXjA
-DoDLKvbdkWWnECYX
-EOcKjvbdqUUHSRkU
-DncKjvbdYlRcsnLm
-EOcKjvbdelfWfmJk
-EPDLKvbdZtIhxcsO
-EOcLKvbdGKdrcINV
-EPDLKvbdOAIsUKSA
-DoCjjvbdXFxytAOs
-EPCjjvbdUQpntuIN
-EPDLKvbdTvLpJtBR
-EPDKjvbdRyihSbvA
-DnbjjvbdhyuFlROG
-EObkKvbdZxcinClS
-EOcKjvbdptTfqrKt
-DoDLKvbdURRPUtgm
-EObkKvbdaNKbTVNH
-EOcLKvbdiZuFlQmf
-EPDKjvbdePEsLUTr
-EPCjjvbdFxuUaEYC
-EPDLKvbdliETpuRa
-EObjjvbdjKFhKNYS
-DoCkKvbdwzHefXeS
-DoDLKvbdFfJqmiUR
-EObjjvbdcJMjKewY
-EObjjvbdqdFIomua
-DnbkKvbdFejRnJTq
-DnbjjvbdEzsqFMCi
-EPDLKvbdhzUelROG
-EPDKjvbdLKaIWAKZ
-DoCkKvbdGGJrOIsq
-EOcKjvbdVUMtGMWK
-EObkKvbdmpZyVkZC
-DoDLKvbdJTYaSmXl
-EObjjvbdmSZUyrci
-EObkKvbdxnSgwsIc
-EOcLKvbdhgJcYujV
-DoDKjvbdUQpoVVHm
-EPDKjvbdKWVFdEgJ
-DoCkKvbdWXJXudEg
-EObkKvbddxZtURez
-DnbkKvbdZRMeJNEq
-EOcKjvbdpxoIHRDx
-EObkKvbdGGKSOJTq
-EOcKjvbdkIHMFenL
-EPDLKvbdTqQoUtgm
-DnbjjvbdtvNxJpsA
-DnbkKvbdFyUtaDxC
-DnbkKvbdSLYeuHKs
-DncLKvbdxrmhlrBg
-DncLKvbdGdLWJajK
-EPCkKvbdSPtHJfEX
-EPCkKvbdeKJrVtzn
-DoCjjvbdWRnXadlD
-DncKjvbdhkdcmtby
-DoDLKvbdVviYWEFH
-EOcKjvbdTAFJICPE
-EPCjjvbdCJKbLIej
-DoDLKvbdyYJJaoyk
-EPDKjvbdNsUVgFUp
-EPCjjvbdrDdhomua
-DoDKjvbdySnJNRag
-EPCjjvbdyNrgxShc
-DnbjjvbdADRxKZhp
-DnbkKvbdaMkCStmH
-EPDKjvbdfIKvRnRH
-DnbkKvbdoAKztIEO
-DnbjjvbdDjHjVwjA
-EObkKvbdjuwODbYX
-DoDLKvbdbhmKKfWx
-EPDLKvbdKaLGlaxR
-DoDLKvbdwzIGFxFS
-EPCkKvbdGBOpxizm
-EPDKjvbdRXODcMHc
-EOcLKvbdYqNFJMdq
-EOcKjvbdxUleQxkn
-EPDKjvbdZirgpHCG
-DncLKvbderAvzkbo
-EPCkKvbdTvMPisaR
-EPCkKvbdZtJIxdTO
-EOcKjvbddePRavcK
-DncLKvbdCDpAuimG
-EPDLKvbdQdCaPqES
-EObjjvbdZyEJmbkr
-DoDLKvbdOEcsiIkE
-EOcKjvbdrbFlkgLZ
-EOcKjvbdRacdlJZL
-EPCkKvbdKDKCqKCx
-EPDKjvbdrDeIonVa
-DncKjvbdOFEThhjd
-DncLKvbdLAkHMbXq
-EObkKvbdhytekpnG
-DncLKvbdrSUkOLAm
-DncLKvbdiCOcFWpq
-DoCjjvbdrylPsAhO
-EOcKjvbdxVNEpyLn
-DnbkKvbdmbJvwnnV
-DnbkKvbdVAbQsQrZ
-EPCkKvbdCTBCtGXS
-DncKjvbdTAEiHbPE
-EObjjvbdFeiqnJTq
-EPDLKvbdDxYMTtTl
-DncLKvbdHDkVibKK
-DnbkKvbddePSBvcK
-DoCjjvbdauCGwkTh
-EPDLKvbdWIYWYGxz
-DoDLKvbdjcLjqHVH
-DoDLKvbdTfznMXWF
-DnbkKvbdkVwNcaww
-EObjjvbdlYrrSxgU
-DncKjvbdaNLCTUmH
-EOcKjvbdznoqEblY
-DncLKvbdjuwOEBww
-DncKjvbdGQATXHGZ
-EOcKjvbdiZuFkpmf
-EPCjjvbdajlGOnDA
-EPDKjvbdJcJbpjCx
-DncKjvbdauBgXjtI
-EPCkKvbdsZkpTAhO
-EPCkKvbdOEdUIhjd
-EOcKjvbdNsUWGduQ
-DnbkKvbdVTltFlVj
-EObjjvbdaNKasVNH
-DnbjjvbdhancEvpq
-EPDLKvbdZtIiZETO
-DoDKjvbdFxuUaEYC
-DoDLKvbdLGGHbAqV
-DoDKjvbdqceIpOWB
-DoDKjvbdvBEZTPEh
-DoDKjvbdKefHbBQu
-EPDLKvbdlZTSSyHU
-DncKjvbdnPyyWKyC
-EObjjvbdsZkpTBHn
-DoCjjvbdaaVdepPw
-EPDKjvbdtkwvaUAw
-EObjjvbdEPCkKvbd
-EPCjjvbdtkwvaUBX
-DncKjvbdRbDeMIyL
-EOcKjvbdxwhjBoyk
-DoDLKvbdFxuVAcxC
-DnbkKvbdxZgfFxFS
-EOcKjvbdjhGkefNk
-EOcKjvbdEPDKkWcE
-EPDLKvbdQvnEDMID
-EOcLKvbdqquKmjaN
-DoCkKvbdZtJJZESn
-EPDLKvbdTkvOaWPJ
-DnbjjvbdcSbkUEJa
-EObjjvbdQlxBxmtz
-EOcLKvbdehKuqmpg
-EObjjvbdpyOggQcx
-DncLKvbdnVVZjjSG
-EPCjjvbdyqOmIiwA
-EPDLKvbddZxpXyRC
-EObkKvbdRXODcMID
-EOcKjvbdnHFXlmfy
-EPDKjvbdznpQdcLx
-EOcLKvbdqGDdtWBI
-EPCjjvbdZoNhddzK
-EOcKjvbdqTsgSSLU
-EOcLKvbdRzJhTCvA
-EOcKjvbdCIjbLIfK
-DncKjvbdKQzEoGNe
-EOcKjvbdACrXizJQ
-EObjjvbdEzspdkcJ
-EObkKvbdsZlQTAhO
-EPDKjvbdfoazwEYI
-DoDLKvbdjAQGaQGj
-DoDLKvbdEzsqFMCi
-EPDKjvbdyYJJapZk
-DnbkKvbdIxUBglRQ
-DoCjjvbdtTRsYyeD
-EPDKjvbdGKdsDIMu
-EOcLKvbdFyVVAcxC
-DnbkKvbdZLrDtNkm
-EPDLKvbdsrqrxydc
-EPDKjvbdrpVnjCvG
-DoDLKvbdmSYtzTEJ
-EPDKjvbdajkfOmcA
-EPDLKvbdssSSxzEc
-EObjjvbdDxYMTssl
-DnbkKvbdiMFEOVDZ
-EOcLKvbdULvOaVni
-EPDLKvbdlqyUzSdJ
-EObjjvbdZoNheFZj
-DncKjvbdcScLTdKB
-EObkKvbdGLFTDINV
-DncKjvbdcyyQYZRC
-EOcKjvbdYqMeIldq
-DoCkKvbdOEcshhkE
-EObkKvbdirzhrjiz
-EOcLKvbdxUmFRYlO
-DoDKjvbdkyTRsZGt
-DncKjvbdIryAsNYM
-EObkKvbduWNxJpsA
-DncKjvbdYkqcsnLm
-DoDLKvbddZxpXyQb
-DncKjvbdRotGiedX
-DnbkKvbdKVtedEgJ
-EOcKjvbdjvWnEBww
-EObkKvbdFyVVAdXb
-DoCkKvbdYlSEUNkm
-EOcKjvbdcTDLTcia
-EPCkKvbdzjUpQESt
-DnbkKvbdqUTfqrLU
-EPDKjvbdSQUHJfEX
-DnbjjvbdiGjDYvKV
-EObkKvbdhkdcnVCy
-EPCjjvbdJuuFdFHJ
-EObjjvbdYkqdTnMN
-DoCkKvbdpssgSRkU
-EObkKvbdUWLpKUBR
-DoDKjvbdZsiJZESn
-DnbkKvbdYqMdhmEq
-DoCkKvbdjcLkRHVH
-DnbkKvbdSPsgKGDw
-DoDLKvbdKVtfEEfi
-EPCjjvbdiGibyWKV
-EPCjjvbdEYYLtUTl
-EPCjjvbdFejSOIsq
-DncLKvbdRECaQRES
-EPCkKvbdEuyQQNKF
-EObkKvbdxwhjCPzL
-DncLKvbdiLeDnUby
-EOcKjvbdEuxpQMie
-EOcKjvbdIidAJogE
-DoDKjvbdxsNhlqag
-EOcKjvbdEzsqFLcJ
-EObjjvbdYTMAmToY
-DoDLKvbdwuNFQyLn
-DoCkKvbdzitpQDrt
-EOcLKvbdZtJIxdSn
-DncLKvbdqZPHgRDx
-EPDLKvbdMoxQvNfs
-DncKjvbdmIctQuSB
-DoCkKvbdFfKSNiUR
-EPDLKvbdhtydvqtb
-EObjjvbdxrnJNRag
-DnbjjvbddoFTKssr
-EPDKjvbdqlyjZLgi
-DnbkKvbdyNsHwsJD
-EOcLKvbdxnTHwsJD
-EObjjvbdUQqOtuIN
-DnbkKvbdwtleQyMO
-DoDLKvbdrovPKDVf
-EOcLKvbdFaPQxizm
-EObjjvbdVAapsQqy
-EOcKjvbdJvVFdFGi
-DnbkKvbduDDVXVno
-EObkKvbdZjTHpGbG
-EObjjvbdZirgofaf
-DncKjvbdAMgySvzY
-DoDKjvbdGdLVibKK
-DoDKjvbdWRmwbEkc
-DncKjvbdXsMAlsnx
-DoDLKvbdtcCuXVoP
-DoDLKvbdqlyjYlIJ
-EPCjjvbdHELVjCKK
-DncLKvbdBdQAuilf
-DoCjjvbdeFOrCXDK
-DoCjjvbdRpTgJfDw
-DoCkKvbdLAkHMbXq
-EOcLKvbdaRebhUGL
-DncLKvbdnQZyWLYb
-EObjjvbdXsMBNUOx
-DncKjvbdrSVKnKaN
-EPCjjvbdAMhZSwZx
-EOcLKvbdcScKtEKB
-DncKjvbdKaLGlaxR
-EOcKjvbdZRMeJNFR
-EPCkKvbdwygeewdr
-DnbkKvbdhancFXRR
-EOcKjvbdOTUVfdtp
-EPDLKvbdmbKXYOnV
-DoDKjvbdGLFSbhNV
-EPDLKvbdMfbomPtk
-DnbkKvbdmIcsqVRa
-DoDKjvbdwtmFRZLn
-DoCkKvbddtAUATMv
-DncKjvbdiBoDEvqR
-EObkKvbdiHJcYujV
-DnbjjvbdiCPDFWqR
-EOcKjvbdyTNhlrCH
-DoDKjvbdNQYRVmfs
-EOcLKvbdFjdrbhMu
-DoCjjvbdsrrSyZeD
-EPCkKvbdXsMBMsoY
-DoDKjvbdjhHLfFmk
-EPCkKvbdyOTIYTIc
-EOcLKvbdbhmKLGWx
-DnbjjvbdxnTHwsIc
-EOcLKvbdZoOJEeZj
-EOcKjvbdjmBkzEfo
-EPDKjvbdYORAXuWU
-EPDKjvbdtkxXAsaX
-DoDLKvbduaEYsPFI
-EPCjjvbdypoNIiwA
-DoDKjvbdVBCRTQrZ
-DnbjjvbdlrYtyrdJ
-DoCjjvbdhzUekpnG
-EOcKjvbdcTCjsdJa
-EObkKvbdbhlijfWx
-EOcLKvbdYTLaMsoY
-DnbjjvbdKVtedFGi
-EOcLKvbdsPvPJbuf
-DncLKvbdNrsvHEuQ
-EObkKvbdmfeYMmfy
-EPCjjvbdZjTHpHCG
-DoDLKvbdpyOhGqDx
-DoDKjvbdRkZGVGjs
-DnbjjvbdRWnEDMHc
-EPCkKvbdjlbMZdfo
-DoCkKvbdyqOmIiwA
-DoCkKvbddxZstSFz
-DnbjjvbdKCibqJbx
-DoCjjvbdqqtjnLBN
-DnbjjvbdBhjbLJGK
-DoDLKvbdrWokbhxq
-EOcLKvbdJzpGXdAN
-EPDKjvbdRMxCZNtz
-DncKjvbdkClLRGuH
-DncLKvbdIHHZxxXg
-EPDKjvbdZshiYdSn
-EPCkKvbdqcdhomvB
-DoDKjvbdVTmUFkvK
-EObkKvbdZisHogBf
-DoCjjvbdRbDdkiYk
-DnbkKvbdGGJrOJTq
-DncLKvbdeFPRavcK
-DnbjjvbdSPtHKGDw
-DoDLKvbdJmADyfuB
-EPCjjvbdKCibpicY
-DoDLKvbdiGicZVjV
-DoCkKvbdZLqdUNkm
-EPDKjvbdVUNUFkvK
-EPCjjvbdemFvflik
-EPCkKvbdkxrqrxft
-DnbkKvbdRbEElIxk
-EPCjjvbdaaVdfQQX
-DoDLKvbdySmhlqag
-EPCjjvbdrRuKnKaN
-DncLKvbdezuyEhtX
-DnbkKvbdtbbuWuoP
-DnbkKvbdZtIhxcrn
-EObkKvbdcyxoxZQb
-EOcKjvbdDxYLtTtM
-EObjjvbdjggMFfOL
-EPCkKvbdGckWJbKK
-DnbjjvbdddnqavcK
-EPDKjvbdYgWdAPTJ
-DnbjjvbdbhlikGXY
-DncKjvbdNPxRVmgT
-EObkKvbdRpUHKGDw
-EObkKvbdmfdwlmgZ
-DoDLKvbdBvzdJFPv
-DnbjjvbdZHXEAPSi
-EPDKjvbdbQHGdLzd
-EOcKjvbdCIjbLIej
-DnbjjvbdOXnuzdNt
-EObkKvbdrSUkNkBN
-DoDLKvbdNeDsiJLE
-EPCkKvbdiUyeXRtb
-EObkKvbdbsDKsdJa
-DncLKvbdbrcLTdJa
-DncLKvbdSPsgJecw
-EObjjvbdKNADzGta
-EPDLKvbdFWZPomKF
-EPCjjvbdRzKISbvA
-EOcKjvbdvmWAMcdm
-DncKjvbdwyhGGYEr
-EPDLKvbdfHjuqnRH
-EPCjjvbdRXOEDLhD
-EPCkKvbdyOSgwsJD
-DoDLKvbdnCKXYOmu
-DnbjjvbdjmCLyeGo
-DnbjjvbdTYKlNzjx
-DoCjjvbdZisHpGbG
-EObjjvbdUWMPisaR
-EObjjvbdqFcdtWAh
-EOcLKvbdYqNEhleR
-DnbjjvbdlZSrSyGt
-EPDLKvbdePEsLTsr
-DncKjvbdSBcdlJYk
-EPDKjvbdePEsLTsr
-EPDKjvbdypnmIjXA
-DnbjjvbdsQWPKCuf
-EOcKjvbdZRNEhldq
-EPCjjvbdYpmFImEq
-EPCkKvbdKfFhBaRV
-DncLKvbdezvZEhtX
-DncKjvbdiCObdvpq
-DnbjjvbdmJETqUrB
-EOcLKvbdfpBzvcxI
-DncKjvbdRbDdkhxk
-EPCkKvbdmpZyVkZC
-EPDLKvbdyNsIXrhc
-DnbkKvbdyYJJaoyk
-DncKjvbdwWlBVaWV
-DoDKjvbdqwPlCiYq
-DncLKvbdvvkaVaWV
-DncKjvbdcJMjKewY
-EObkKvbdbBWFFpPw
-EPCjjvbdpyOhGqEY
-EPDKjvbdCDpAujNG
-EPDLKvbdCSaCtFvr
-DoCjjvbdwygfFxEr
-EOcLKvbdLFehBaQu
-EPCjjvbdssSSxydc
-EPCjjvbdHfgZyYYH
-DnbkKvbdnBjWxOmu
-DnbkKvbdcJNJjewY
-EObjjvbdrzLoraIO
-EOcKjvbdADRwjZiQ
-EPCkKvbdOAJStJrA
-DncLKvbdajkennDA
-DoCjjvbdmbKWxPNu
-EObkKvbdmbKXYPOV
-DoCkKvbdKCjCpjDY
-EPCkKvbdIjEAJogE
-DoCkKvbdkHgLfGOL
-DoCkKvbdJcJbqKCx
-EPCkKvbdVUMtGMWK
-DoDKjvbdNxOuzcmt
-EPDLKvbdNQYRVnGs
-DnbkKvbdzjUoocrt
-DoDKjvbdDnbjjvcE
-DoCkKvbdGBPRZJzm
-DoCjjvbdtvNwjRTA
-EPDLKvbdZQldhleR
-DoDLKvbdUtMsfMWK
-DnbkKvbdDxYLtTsl
-DoCjjvbdmbJwYPOV
-DoCjjvbdaNLCTVMg
-DoCjjvbdWXIwvEFH
-DoDKjvbddZxoxYpb
-DncLKvbdijGHimXr
-EPDKjvbdZQmEiMdq
-DncKjvbdTulPisaR
-DncLKvbdnGdxMnGy
-EPCkKvbdlYsSSyHU
-DoDKjvbdKRZePFme
-DoCkKvbdZRNFJNEq
-DncLKvbdkMbMZeGo
-DoCkKvbdBiLBkIej
-EObjjvbdWXIwvEFH
-EOcLKvbdGGJqnJTq
-DoDLKvbdRWmcblID
-EObjjvbdxUleQxlO
-DnbkKvbdREDBPpdS
-DnbjjvbdiifHjMwr
-EObjjvbdZLqctOMN
-EPCjjvbdmRxtyrci
-DoDLKvbdDxXlTtUM
-DoDKjvbdxrmiNSBg
-DoDKjvbdTppntthN
-EObjjvbdnUtykKRf
-DoCkKvbdRNYBxmtz
-EOcLKvbdQYmAHTSK
-EPCjjvbdZtIhxcsO
-DoCjjvbdbsCjsdJa
-EPDKjvbdsZkoraIO
-DoDKjvbdEJhJvYKA
-EOcLKvbdJSxaTMwl
-DoDLKvbdANHxrvzY
-EObkKvbdcTDKtDia
-EPDKjvbdrWolDJZR
-DoDKjvbdsQVnicVf
-EPCjjvbdYSlAlsoY
-EPCkKvbdJYUBhMRQ
-DncLKvbdtlXwBUBX
-EObjjvbdVrOYBeMD
-EPCjjvbdcJNJkGWx
-DncLKvbdjKGHjNXr
-DncKjvbdRMwayOUz
-EObjjvbdzdzOzdyp
-DnbjjvbdNHColpVL
-DoDLKvbdNddThiLE
-EPDKjvbdFjdsCgmV
-DnbjjvbdTJZjRABM
-DncKjvbdOTTugFVQ
-DncLKvbdVYgszLPO
-DncKjvbdEARhlzWw
-EPDLKvbdUGzmkvvF
-DoDLKvbdmRyVZsEJ
-EObjjvbdptUHRqjt
-EOcKjvbdJpzFOeme
-DnbkKvbdMgDPmPtk
-EOcKjvbdhzUfMRNf
-DoDLKvbdpyPHgQdY
-DoCjjvbdZjShQHCG
-EOcKjvbdOTTvGeVQ
-EPCjjvbdRacdkiZL
-DnbjjvbdzitoodTU
-EOcKjvbdxxIjCPyk
-EObjjvbdunszqLPU
-EObjjvbdwjwDgzzG
-DnbkKvbdUyHtZkOn
-DnbjjvbdqvpMChyR
-DnbjjvbdmIctRUrB
-EObkKvbdNHCpMpUk
-DoDKjvbdeFPSCXCj
-EOcKjvbdtvOXjRTA
-DncLKvbdZGvdAPSi
-DoCjjvbdQcbaPpcr
-DoDLKvbdVUMselVj
-DnbjjvbdVgxWXgYz
-DoDLKvbdjAQHBQHK
-EOcKjvbdxxJKCPyk
-DnbkKvbdQdDApQcr
-DnbjjvbdqrUjmjaN
-EOcKjvbdJzofYEAN
-DoDLKvbdJvVGEFHJ
-EObkKvbdJcJbpjDY
-EPDLKvbdhanbdwRR
-EObkKvbdiZtfLqOG
-DoCjjvbdeOdsLTsr
-DoCjjvbdSLZFuGjs
-DoCjjvbdqTsfrRjt
-EObjjvbdACqxKZhp
-EPCjjvbdxZhFexEr
-EPDKjvbdiBoCeXRR
-DoDKjvbdqFcdtVaI
-DnbkKvbdkClLQgVH
-DnbkKvbdZQmEhldq
-DnbjjvbdQYmAGrqj
-DnbjjvbdiLddNuDZ
-DoDLKvbdsQWOjDWG
-EPDKjvbdVqnXaeLc
-DnbjjvbdwNWANEFN
-EPCkKvbdsBfNMHKy
-EOcLKvbdKQzFOfOF
-DoDKjvbdHELVibJj
-EPDKjvbdcImJkFwY
-DncKjvbdIwtBgkqQ
-EObkKvbdANHySvyx
-DoDLKvbdpxnhGqEY
-EPCjjvbdrafNMHKy
-DoDLKvbdSQTfiecw
-DnbkKvbdiMEdOUcZ
-EObjjvbdQmYCYnUz
-EPDLKvbdWIYWXfxz
-EPCjjvbdNeEThiLE
-EObjjvbdHDkWJaij
-DncKjvbdMgDQNPuL
-DncKjvbdKWUedFGi
-EPDLKvbdJYUCIMRQ
-EOcLKvbdRacdkhyL
-EPCkKvbdSBdEkhyL
-EPCkKvbdMRwMzUpz
-EPDLKvbdkxrqsYft
-EObkKvbdRkYetgLT
-EPCkKvbdNrsvHFVQ
-DoCjjvbdqiAKFNOe
-DoDKjvbddwystRez
-EOcKjvbdrylQTBHn
-EPDKjvbdDjHjWXjA
-EObjjvbdCIkCLJGK
-DnbjjvbdqwPlDJYq
-EPCjjvbdnVUzLKRf
-EOcLKvbdUxhUZjnn
-DnbjjvbdRpUHJecw
-DnbjjvbdjhGlFfNk
-EObkKvbdJKEAKPgE
-DoDLKvbdIidAKPgE
-DncKjvbdCSaCtGXS
-DoCjjvbdIidAKQHE
-DnbkKvbdFjdsCgmV
-DoCkKvbdGKeTCglu
-EOcKjvbdEzspeMDJ
-EOcLKvbdqUTgSSKt
-DoCkKvbdnBivwnmu
-DncLKvbdJcJcRKCx
-EPCjjvbdVwJXucdg
-DnbjjvbdKVuGEFHJ
-DncLKvbdnVUzKjSG
-DoCkKvbdqGDeTuaI
-DnbkKvbdLFfICBQu
-DnbkKvbdZjTIQGbG
-DoDLKvbddBrlrATm
-DncKjvbdYNqAXtut
-DnbjjvbdURROtuHm
-EObjjvbdxmrgxSiD
-DoCkKvbdjJfHjMwr
-DncLKvbdNwoVzdOU
-EPDLKvbdyTNhlqbH
-EObkKvbdiMEcnUby
-DoDKjvbdJcKCqJbx
-EPDLKvbdNrtVgEtp
-DncKjvbdjEkGtoAO
-DoDKjvbdNVSrKmAX
-EOcLKvbdxmsIYTIc
-EObkKvbdcTDKtDjB
-EPDLKvbdxsOIlrCH
-DnbkKvbdbrbjsdKB
-DoCjjvbdpfEEtWAh
-DoCkKvbdMowqVmfs
-EPCkKvbdeATqMxJf
-EObkKvbdjJehJmYS
-EPDKjvbdxmrhYSiD
-EObjjvbdjbkkQgUg
-DoCjjvbdYlRdUNlN
-DoDLKvbdiHKDZWJu
-DoDKjvbdpedEsvAh
-DoCkKvbdEuyPomJe
-EPCkKvbdhtyeWrVC
-DncLKvbdbAvEfQQX
-DnbjjvbdTkvPBWPJ
-DncKjvbdYlRdUOLm
-DncLKvbdCIjajiGK
-EPDKjvbdUtNTfLuj
-DnbkKvbdKVuFdEgJ
-DoDKjvbdfVzwoizs
-EPCjjvbdySmiMrBg
-EPCkKvbdrpWPJcVf
-DoDKjvbdcImJjewY
-DoCkKvbdkVvnECYX
-DncKjvbdWRnYCEkc
-DoDKjvbdCIkBjhfK
-EObkKvbdmIdURVSB
-DoCkKvbdTppoUuHm
-EPDLKvbdUQqOtuHm
-DnbkKvbdhgKDYvJu
-DnbkKvbdkHgLfFmk
-EPDLKvbdCDoaVjMf
-EPCkKvbdehKvSNqH
-DncKjvbdNeEUJJLE
-DncKjvbdlhdTqVSB
-EOcKjvbdEuxpPmJe
-DncLKvbdqceIpNua
-DnbjjvbdnVVZjjRf
-DnbkKvbdKDJcRJbx
-EObkKvbdnHEwlmgZ
-EOcLKvbdFWZQQMjF
-DoDKjvbdKWUedEgJ
-DoDLKvbdmozZVkZC
-DoCkKvbdZdxGzhJC
-EObkKvbdGQATWffZ
-EPCkKvbdJuuGDeHJ
-DoCkKvbdiGibxvJu
-DnbkKvbdBraDUGXS
-EPDLKvbdiHKDYvKV
-DnbjjvbdZxcjODMS
-DnbkKvbdnGdwlmgZ
-DoDKjvbdkxsRrxgU
-EOcKjvbdrzMQTAgn
-DncLKvbdjhHLfGOL
-DnbjjvbdQvnEClID
-DoDKjvbdqdEhomvB
-DoDLKvbdGdKvKCJj
-DnbjjvbdqvpLbiYq
-EObjjvbdsPvOjCuf
-DoDLKvbdVqnXbElD
-EPDLKvbdeEoRbXCj
-DoCkKvbdyYJKBoyk
-DoDLKvbdlhdURUqa
-EPDLKvbdYkqdTnMN
-DoCkKvbdnGdwmNgZ
-EObkKvbdGGKSOIsq
-EObjjvbdLLAgvAJy
-DnbjjvbdajlFnmcA
-DoDLKvbdiifHimYS
-EPCjjvbdnPzYukYb
-EPDLKvbdVYhTyjnn
-EOcLKvbdfNFwHNJk
-DoCjjvbdbrbkTcia
-DncLKvbdRkZGVHLT
-EObkKvbdSQUHKFdX
-EOcKjvbdSKxeuHKs
-DncKjvbdFxuUaDwb
-DoCkKvbdaSGDHtFk
-EPDKjvbdZyDimcLr
-EObjjvbdiGibxvJu
-EPCkKvbdDwwktTsl
-EPDKjvbdRadEkiZL
-EPDKjvbdmgEwlmfy
-DncLKvbdaogHDkzd
-EOcLKvbdjuvmdCXw
-EPDKjvbdqwPlCiYq
-DoDKjvbdLBLHNBxR
-EObjjvbdeFOrBvbj
-EPDKjvbdFyVVAdYC
-EPDLKvbdKNADygUa
-DncKjvbdbVCGxLUI
-DoCkKvbdJSyArmXl
-EObkKvbdQvnDbkgc
-EObjjvbdrEEiQOWB
-EOcKjvbdZMSDtOLm
-DoDKjvbdQvmccLhD
-EPCkKvbdrzMQTBHn
-EPDKjvbdMgCpNQUk
-DoDKjvbdmbJwYPOV
-EOcKjvbdgGLymgHA
-EObjjvbdsrqsYzFD
-EPDLKvbdrNZiyLgi
-DnbkKvbdiiegimYS
-DoDKjvbdqwQLcJYq
-EObkKvbdaNLCSuNH
-EPCkKvbdnUuZkJqf
-EPCjjvbdSCEEkiZL
-DncLKvbdVZHszKnn
-DnbjjvbdUtMsfLuj
-DoDKjvbdxmrgwriD
-DoCkKvbdxxJKBpZk
-EObkKvbdZMRdUNlN
-EObkKvbdbPgHDkzd
-EObkKvbdqqtjnLAm
-EPDKjvbdURROuUhN
-DoDKjvbdCWzdJFPv
-DoDLKvbdMSXMytpz
-DnbjjvbdqlyjZMHi
-DoDKjvbdbsDLUDia
-EOcLKvbduVnXiqTA
-DoCjjvbdDxYLsssl
-DoDLKvbdyqPMiJwA
-EObkKvbdeOdsLUUS
-EOcKjvbdEuyQQMjF
-DoDKjvbdEztQeMDJ
-EPCkKvbdGZVVBDxC
-DnbkKvbdnGdxNNgZ
-DoCkKvbdcIljLFvx
-DoCjjvbdYqMdhmEq
-EPDLKvbdgKfzbfAE
-EPCjjvbdJcKDRJcY
-EOcKjvbdOFDtJJLE
-DncKjvbdiLdcmuDZ
-EObkKvbdrWpLcJZR
-DnbkKvbdVAaqTQrZ
-DnbjjvbdFkFTChMu
-DncKjvbdaaWEepQX
-EPCkKvbdpedEsvAh
-DncKjvbdjAQGaPfj
-DoDKjvbdbUbHXkTh
-DoDKjvbdRjyFtfkT
-EOcLKvbdOTTvHEtp
-DoCjjvbdRkYfVGjs
-DncLKvbdzoQRFCkx
-DncKjvbdrMzJyMHi
-EOcKjvbdULvPBWOi
-EOcLKvbdzdynzdzQ
-EPCjjvbdtumxJpsA
-DoDLKvbdwMvAMcdm
-EOcLKvbdqceIonVa
-EObjjvbdOEdUIiKd
-EObjjvbdHELVjBij
-EObjjvbdqcdiPmvB
-DoCjjvbdJvVFdFGi
-EPDKjvbdWRmwaeLc
-EPDKjvbdZxdJnDMS
-DoDKjvbdZxdJnDMS
-EObjjvbdxUldpxkn
-DnbkKvbdSLYetfjs
-EPDLKvbdYqMeIldq
-DoCjjvbdrMyjYlIJ
-EObkKvbddxZtTqez
-EPCkKvbdWSNxCElD
-DoDKjvbdWWiYVcdg
-DoDLKvbdqGDdsvAh
-EOcLKvbdhzVFlRNf
-EOcKjvbdaNLCSuNH
-DnbkKvbdkHgMFfNk
-DnbkKvbddePRbXDK
-DncKjvbdNVTSKmAX
-EObkKvbdhzUfLpmf
-EOcKjvbdZMSDtNkm
-EPDKjvbdTqROtuHm
-DoCkKvbdddnqbXCj
-DoDKjvbdliEURVSB
-DncKjvbdtvNxKQsA
-DnbjjvbdqceJQOVa
-EPDKjvbdpyOggQcx
-EOcKjvbdtcDUvuoP
-EObjjvbdrWpMChxq
-EPDKjvbdGYttaEYC
-EObjjvbdiifIKNYS
-DoCjjvbdZyEJmcMS
-EPDLKvbdKQzFOfNe
-DoCkKvbdqYoIGpdY
-EPDLKvbdxwhibPzL
-EPDKjvbdRadElJYk
-DoDLKvbdtkwwAtAw
-EPCjjvbdDjHjVxKA
-EPDKjvbdrzLosBIO
-EPCkKvbdBdPaVimG
-DoCjjvbdrafMkfjy
-EPDKjvbdNGcPmQVL
-DoDLKvbdVviYVdFH
-EPCjjvbdkVwODaxX
-DncKjvbdkMbMZeGo
-EOcLKvbdfkGzbfAE
-DnbkKvbdpyOhHQdY
-DoDKjvbdQdCaPqES
-EObjjvbdEKHiuxKA
-DnbjjvbdpxnhGpcx
-DnbkKvbdkxsSSxgU
-DnbjjvbdURQnuUgm
-DoDLKvbdTukpJtBR
-EPCkKvbdqAiFAWgd
-DnbjjvbdgGLymfgA
-EOcLKvbdyYIibQZk
-DoDLKvbdWHxVxGxz
-EPDLKvbdFyVVAdXb
-DnbkKvbdrRuKnKaN
-DoDLKvbdTpqOttgm
-EPDKjvbdLhbLqYAS
-DoCjjvbdHELVjCKK
-DncLKvbdfSBWzlDP
-DoCkKvbdRDcBPpdS
-DoDLKvbdsQWPJcVf
-EPCkKvbdySmiMrCH
-EPCkKvbdbUbHXjtI
-DoDLKvbdUtMsfLuj
-EPCjjvbdEvZQPmKF
-EObjjvbddeOqbXDK
-EPDKjvbdkClKqGtg
-DncKjvbdqiAJdmPF
-EOcLKvbdlrZUyrci
-EOcKjvbdbBVeFpPw
-EOcLKvbdULvPBWOi
-EPCkKvbdcJMjLFwY
-DnbjjvbdZtIhxcsO
-EPDLKvbdSPtHJfDw
-EObkKvbdaNLBsUlg
-DoDLKvbdqvpLcIxq
-DoCkKvbdpxoIHQcx
-EPCkKvbdlZTRsZGt
-DoCjjvbderBWzkcP
-EPDLKvbdZtJIxdSn
-EOcLKvbdmoyyWKxb
-DoDLKvbduaDxroEh
-EPDLKvbddoErkTtS
-DncKjvbdnPzYvKxb
-EObjjvbdsZlPsAhO
-EPDLKvbdjJfHjMxS
-EOcLKvbdbsDLUDia
-DncLKvbdMuTSLNAX
-EPDLKvbdemGWfmKL
-EObkKvbdKefHbBQu
-EOcLKvbduVnXjRTA
-DnbjjvbdGZVUaEYC
-EOcKjvbdkNCMZeGo
-EPCkKvbdGKeSbgmV
-DoDKjvbdqrVLNjaN
-DnbjjvbdEASIlzWw
-DnbjjvbdeOdrkUUS
-DncKjvbdDjIJvXjA
-DoCjjvbdqGEFUWAh
-EPCjjvbdQcbaQRES
-DnbkKvbdhtydwSUb
-DoCkKvbdMuTRjmAX
-DnbjjvbdJutfEEfi
-EPCjjvbdzGxlAMeX
-DncLKvbdIHGyyYYH
-DoDLKvbdxUmEqZLn
-DnbkKvbdNHCpMotk
-DnbjjvbdFyVVAcwb
-EPCjjvbdShzJqABM
-DnbjjvbdcyxoxZRC
-EPCjjvbdqquKnLBN
-DncLKvbdcIlikFwY
-DoCkKvbdeOeSkTsr
-EOcLKvbdYpldhldq
-EPDLKvbdQYmAGsRj
-DoCkKvbdzGyMAMeX
-EPCkKvbdqrVKnLBN
-EObkKvbdxUldpxlO
-EPCjjvbdfIKuqnRH
-EPDKjvbdFWYpQMjF
-EPDLKvbdOFEUJJKd
-EOcLKvbdHEKvKBij
-DoDKjvbdjcMLRHUg
-EPCkKvbdWXIwudEg
-DncLKvbdgPazvcwh
-DnbjjvbdnVUykJrG
-EPCjjvbdxxJJbPyk
-DncLKvbdjJehKMxS
-DncKjvbdEzspdkbi
-EPDKjvbdrpVnjDWG
-DnbjjvbdVrOYCFLc
-DoDLKvbdMfbpMotk
-DncKjvbdbhljLGWx
-DncKjvbdxrmhlrBg
-EOcKjvbdbKlGPODA
-DoDKjvbdJvUfEFHJ
-EPCkKvbdySnIlqag
-EPDKjvbdVAbQrpqy
-DnbjjvbdrykosAhO
-DnbkKvbdKfFhCBQu
-DnbjjvbdEXwktTsl
-DoDKjvbdDoDLLXCd
-EObkKvbdvwMAvAvV
-EObkKvbdXsLaNUOx
-DnbkKvbdRDcBQRES
-EOcLKvbdZisIPgCG
-DoDKjvbdpfEEtWBI
-DoDKjvbdfoazwDwh
-EPCkKvbdFpASvffZ
-EObjjvbdRWnDblHc
-DoCkKvbdNxOuzdOU
-DncLKvbdYlSDtOLm
-EPCjjvbdjbkjqHVH
-EPCkKvbdrMzJxkgi
-EPDKjvbdCIkBjhfK
-EPCkKvbdUslsekvK
-EOcKjvbdFejRnJUR
-EPDLKvbdNHColotk
-EPCjjvbdUxgtZjnn
-DoDKjvbdEOcLLXCd
-EPCkKvbdkHflGFnL
-EPCjjvbdwygfFxEr
-DncKjvbdeOdrjtTr
-DoDLKvbdqTtHRqjt
-EPDLKvbdQwNdCkgc
-EPCkKvbdhzVGLpnG
-DoDKjvbdxwiKCPzL
-EPCkKvbdZirhQGbG
-DoCjjvbdqrUkOKaN
-DoDLKvbdlrZUysEJ
-DoCjjvbdqFdFUWAh
-DnbjjvbdyYJKCPzL
-DncKjvbdxUldpyMO
-EPCjjvbdvAcyTOeI
-EObjjvbdLFegaaRV
-DncKjvbdemFvgNKL
-EOcLKvbdjcLjqHVH
-DoDKjvbdRMxCYnUz
-EPDLKvbdRjxfUfkT
-DoDLKvbdiMEdNuDZ
-DoDLKvbdZRMdhmEq
-DoDLKvbdqlyiyLgi
-EObjjvbdiiehJmYS
-DoCjjvbdwuMeRYlO
-EPDKjvbdqquKmkAm
-EOcKjvbdlrYtysDi
-EPDLKvbdliETqUrB
-EObjjvbdePErkTsr
-DoDLKvbdfHjvRnQg
-EObjjvbdRXOECkgc
-EObkKvbdMpXqWOGs
-DncKjvbdEJhJvYKA
-DoCkKvbdVrOYBeMD
-EPDKjvbdTkvPBWOi
-EOcLKvbdjuvmcbYX
-DncKjvbdMfcQMouL
-EOcLKvbdMpXpvOHT
-DoCjjvbdiLdcmtcZ
-DnbkKvbdiHJcZWJu
-EPDLKvbdTqQnuUgm
-DncKjvbdLGFgbBQu
-EPDKjvbdNdctIiLE
-EPDKjvbdZxdKODLr
-DoDKjvbdSZjITCvA
-EPCjjvbdDwxMUTsl
-EPCkKvbdySmhmRag
-EOcLKvbdSPtHKGDw
-DoDKjvbdmIctRUqa
-DoDKjvbdaRfChTek
-DncLKvbdyNrhXsIc
-DncLKvbdJTZBSlxM
-DoDKjvbdFeirOIsq
-DnbjjvbdJutedFHJ
-DnbkKvbdUsltGMWK
-DnbkKvbdbhljLGWx
-EPCjjvbdirziTLJz
-EOcKjvbdnPzYvKyC
-DoDKjvbdkDMLRGtg
-DncLKvbdyzeNqhIh
-EPCjjvbdYTMAmUPY
-DoCkKvbdgGMZnHHA
-DncLKvbdlZSqsYft
-EOcLKvbdZjShQHCG
-DnbjjvbdjhGlGGNk
-DoDLKvbdkxsRryGt
-DoCjjvbdZyDjNbkr
-DnbkKvbdNeEUJIjd
-EOcKjvbdxxJJbPyk
-DoDLKvbdRbDeMIxk
-EObjjvbdrDeJPnWB
-EPCkKvbdrXPkbiYq
-EPCjjvbdeFPRbWbj
-DncLKvbdHffyxxYH
-EPDKjvbdcyyQYZQb
-DoCkKvbdNsTvGeUp
-EPCkKvbdfpBzwDxI
-EPCjjvbdqTtHRrLU
-EPCkKvbdhgJbxvJu
-EOcKjvbdkxsRryGt
-EPCkKvbdZshhyETO
-DnbkKvbdrWpLbiZR
-EObkKvbdnHExMmfy
-DnbkKvbdbUbGwkTh
-DnbkKvbdnHExMnHZ
-EObjjvbdZnmiFEyj
-EObkKvbdSQUGjGDw
-EPCkKvbdqTtGrRkU
-EObjjvbdcImKLGXY
-EObkKvbdShzJqAAl
-DncLKvbdGGJqnIsq
-DnbkKvbdehKuqmpg
-DncLKvbddeOrCXDK
-EOcLKvbdRMwbYmtz
-DnbjjvbdgFlZmgHA
-DnbkKvbdyOSgxTJD
-EOcLKvbdQZNAGsSK
-DoCkKvbdRMwayNtz
-DncLKvbdezvYeItX
-EOcLKvbdVAapsQrZ
-DoCjjvbdcImKLFwY
-DoDKjvbdTqQnttgm
-DnbjjvbdOEdUJIkE
-DoDKjvbdeYZssqez
-DnbjjvbdZjSgpHCG
-DoCkKvbdTvMPisaR
-EOcKjvbdZjSgofaf
-EPDLKvbdfVzwoizs
-DnbjjvbdCSaCsewS
-EPDLKvbdFVyPpMjF
-EObkKvbddjJrVtzn
-DnbjjvbdyOSgxTIc
-EOcLKvbdrovPKDVf
-DnbjjvbdxZhGGXeS
-DncLKvbdbLLeoNcA
-EOcKjvbdMfbomQUk
-EPDLKvbdaRebhTfL
-DoDLKvbdoAKztHcn
-EOcLKvbdGckWJbJj
-DncLKvbdqmZjYlHi
-DncKjvbdZyDinDLr
-DoCkKvbdxwhibPzL
-DnbkKvbdZoOJFFZj
-EPDLKvbdYpmEiMdq
-DoCkKvbdiUzFWquC
-DnbjjvbdsPvPJcVf
-DncKjvbdDwxMTssl
-EObkKvbdZQleJNEq
-DoDLKvbdWSNxBdkc
-DoCjjvbdcSbkTcia
-EOcKjvbdqvolChyR
-DnbjjvbdqlzJxlHi
-DoCjjvbdlrZUzTEJ
-EPCkKvbdGdLWJbJj
-EObkKvbdzoPqFDLx
-DncLKvbdANIYrwZx
-EObjjvbdSPsgJfEX
-DoCjjvbdbiNJjfWx
-DnbkKvbdMfbpNQVL
-EObkKvbddePRbXCj
-EPDKjvbdShzKRAAl
-DoDKjvbdnPyxukYb
-EObjjvbdVZITzKoO
-EPDLKvbdZyDinDMS
-EPCjjvbdYpldhmFR
-DoCkKvbdZjTIPfaf
-EObjjvbdqdEiPmua
-DnbkKvbdRadEkhxk
-EPDLKvbdzjVPpDrt
-DnbkKvbdaMkBsUlg
-DncLKvbdMpXpunGs
-DoDKjvbdUxgszLPO
-EPCkKvbdiiegilxS
-DoCjjvbdEOcKkWbd
-EOcLKvbdcTDLUEJa
-EPDLKvbdZtIiYcrn
-DoDLKvbdmttyjirG
-EPDLKvbdGdLVjBjK
-DncLKvbdDigjVxKA
-EPCkKvbdelfWflik
-DoDKjvbdOTUVfdtp
-DncKjvbdTlWOaVni
-EPDKjvbdrpWOibvG
-EPDKjvbdfRaWzlCo
-DncKjvbdlrYuZrdJ
-DoDKjvbdIsZBSlwl
-EPDLKvbdqquLOKaN
-DnbjjvbdJmAEZgUa
-EPCkKvbdcImJkFvx
-DncLKvbdkxrqsYft
-EPCkKvbdUWLojTaR
-DoDKjvbdnGeXlmfy
-DoCkKvbdiMFDmuCy
-EPDKjvbdauCHXjtI
-DoCjjvbdBsAcUGXS
-DoDKjvbdACrYJyhp
-DoDKjvbdsZlPsBHn
-DoDLKvbdjJegimXr
-DoDKjvbdWXIwvDdg
-DncKjvbdelewHNJk
-EObkKvbdyTOJMrCH
-DoCkKvbdNddUIiKd
-DoCkKvbdRyjHrbvA
-DoCjjvbdiGjCyWKV
-DoDLKvbdhlFEOVDZ
-EPCkKvbdQdDAoqDr
-DoDKjvbdBiLBjhej
-EOcKjvbdqlyjZLgi
-DncLKvbdtSrTYzFD
-DoCkKvbdrMyjYlHi
-EObjjvbdhficYuiu
-DoDKjvbdfekymgHA
-EOcLKvbdiifHjNXr
-EObjjvbdIwsaglQp
-DoCjjvbdCIkBkIfK
-EPDKjvbdaSFcHsfL
-DoDLKvbdMgDPlpUk
-EPDKjvbdqYnggQdY
-DoDKjvbdaSFbgsek
-DoCjjvbdiZtekqNf
-EPDLKvbdkClKpftg
-DoCkKvbduMYWaUAw
-EObkKvbdtTSTYydc
-DnbjjvbdptUGqrKt
-EObjjvbdYlRctNlN
-DncKjvbdMgDQNPtk
-DncLKvbdILaznXQk
-DoDLKvbdiCPDFWpq
-DoCkKvbdiGicZWKV
-DncKjvbdFjdrbglu
-DncLKvbdKWUfDeGi
-DoCjjvbdVhXuwgYz
-DoDKjvbdhtzFWquC
-EPCjjvbdRpTfiedX
-DoCkKvbdKVuFdEfi
-DoDLKvbdbBWEfPow
-DoCkKvbdZyDjODLr
-DncLKvbdeAUQmXif
-DoCkKvbdIidAKQHE
-EPCkKvbdTqROuVIN
-DncKjvbdRXODcMID
-DoDKjvbdkyTRsZHU
-EPCjjvbdxnTIXrhc
-EObjjvbdJzofXdAN
-EOcKjvbdiBncFWpq
-EObkKvbdYORAXuVt
-DnbjjvbdiMEdNtby
-EPDKjvbdVrOXbFMD
-EPCkKvbdAMgxrwZx
-DoCkKvbdtbbuXVoP
-EPCjjvbdDoCkKwCd
-DncLKvbdVBBpsRRy
-DoDKjvbdemGWgMik
-EObkKvbdeEnqbXDK
-EPCjjvbdhanbdvqR
-DnbkKvbdmaiwYOnV
-DoCjjvbdcJMjLGXY
-DnbkKvbdIryArlxM
-EPCjjvbdtkwvaUAw
-DnbkKvbdxZgefYFS
-EPCkKvbderBWzlDP
-EPCjjvbdNxPVzdOU
-EPDKjvbdaSGDHsek
-EOcKjvbdqcdhpOVa
-EPCkKvbdxmsHxShc
-DoDKjvbdDncKjwDE
-DoCjjvbdYpmEhmFR
-DncKjvbdaRfCgsfL
-EObjjvbdegjurNpg
-DnbkKvbdjhHMFenL
-EPCjjvbdMfcPmQUk
-EOcLKvbdACrYKZhp
-DoDKjvbdffMZmgHA
-DoCjjvbdaaVeGQQX
-EOcKjvbdSCDdkiZL
-EOcKjvbdqwPlCiYq
-DoDKjvbdajlGPODA
-DncLKvbdJYTbHkpp
-DncLKvbdtcDVXWOo
-EPCjjvbdEXxLtTsl
-EPCjjvbdJuteceGi
-DnbjjvbdDoCkLWbd
-DoCkKvbduCbtwWOo
-EPDLKvbdauBgYLTh
-EPCjjvbdOXoVzcmt
-DoCkKvbdRMxByOUz
-DoCjjvbdqYoIGqDx
-EPCjjvbdNGbpMpVL
-DoCjjvbdJpzFOfNe
-EOcKjvbdVAapsQrZ
-DncKjvbdpxoIHQcx
-EOcKjvbdRaceLiZL
-DncLKvbdtcCuWvOo
-EObjjvbdbBVeGPow
-DnbjjvbdKyRKSzuG
-EOcLKvbdFyVUaEYC
-EPDKjvbdkCkkRHUg
-EObkKvbdKaKfmBxR
-DoDLKvbdbUbGwjsh
-DnbjjvbdrovOjDVf
-EPCjjvbdZsiIyDsO
-EObjjvbdRDbaPqDr
-EOcKjvbdnBivwnmu
-EPCjjvbdYTMBMsoY
-DoDLKvbdxKwEHzzG
-EPCkKvbdqTsgRqkU
-EPDKjvbdfMfWgNKL
-DnbkKvbdznpREbkx
-DncKjvbdJXtCHlRQ
-EPDLKvbdGYuVBEXb
-EPDKjvbdZLrEUOMN
-EPDKjvbdtcCtvuoP
-EObjjvbdXsLaNUPY
-EPDLKvbdyOTIYSiD
-EObjjvbdsrrTYyeD
-EObjjvbdZisHpGaf
-DoDLKvbdvOszqLOt
-DncLKvbdaMjbSuNH
-DncLKvbdYTMBMsoY
-EPDKjvbdwzIGFxFS
-EPDLKvbdmRyUyrci
-DncLKvbdTkvPBWOi
-EPCjjvbdNdcsiIjd
-EPCkKvbdEzspdkbi
-EObkKvbdrovOicVf
-DoDKjvbdhbObeXQq
-DncKjvbdZnnIeFZj
-EObkKvbdRECaPpdS
-EOcKjvbdnGeXlnHZ
-EPCjjvbdauCGwjsh
-EPCjjvbdczYpXyRC
-EOcLKvbdDihJuxKA
-EOcKjvbdkVwNcbXw
-EObjjvbdbsCkTcia
-DoCkKvbdfMewHNKL
-DoCjjvbdxZgeexEr
-EOcLKvbdiBoDEwQq
-DnbkKvbdpstHSSKt
-EOcKjvbdQvmdClHc
-EPDKjvbdIxUBhLqQ
-EObkKvbdZtJIyESn
-EPCjjvbdtumwjQsA
-DoCjjvbdNPxQunHT
-EOcLKvbddndrkUTr
-EObjjvbdCTBCsevr
-EOcKjvbdiUzEwRuC
-EPDKjvbdRyigrbvA
-DoCjjvbdezvYeJTw
-EOcLKvbdVgxVxGxz
-DnbjjvbdZeXfzhIb
-DncKjvbdxZgfFweS
-DoCkKvbdKxqKSztf
-DncLKvbdpyOggREY
-EPDLKvbdXrlBNUOx
-EPCkKvbdqwPkbiZR
-EPDLKvbdbsCjscia
-DoDKjvbdnGeYMmgZ
-EOcLKvbdUsmTfLvK
-DnbkKvbdjuwOEBxX
-DnbjjvbdTAFJICPE
-DncKjvbdEuxoomKF
-EPDKjvbdeOdsLTsr
-EObkKvbdZshiYdSn
-DncKjvbdcTDKscjB
-DncLKvbdvwMBWAvV
-EOcKjvbdVwIwudFH
-EPDLKvbdlZTSSxgU
-EOcKjvbdMgColotk
-EOcLKvbdZdxGzgiC
-DnbjjvbdULuoBWOi
-EObjjvbdiCObeXQq
-EPDKjvbdNUsRkNAX
-DoCjjvbdZxcjOClS
-DncLKvbdiUzEwSVC
-DoDLKvbdvlvAMceN
-DoDLKvbdqcdhpOWB
-EObkKvbdCSaDUGWr
-DoCkKvbdssSTYydc
-DoCkKvbdnGdxMmgZ
-DoCkKvbdHELWJbKK
-DoDKjvbdKefHbApu
-EObkKvbdVqmwbFLc
-DoCkKvbdUtNTekuj
-EPDLKvbdTlWOaVni
-DoCjjvbdDxXkstUM
-EPCkKvbdpxoHfqEY
-EPDKjvbdmSYtzTEJ
-DoCjjvbdddnrCXDK
-EPCkKvbdZjTHpGbG
-DncLKvbdhzVGLqOG
-EPCjjvbdZjSgogBf
-EPDLKvbdkDLjqGuH
-DncLKvbdxUmFRZLn
-EPDLKvbdjhHMFfNk
-EPCkKvbdZjTHpHBf
-EObkKvbdegkVqnQg
-EPDLKvbdGYttaEXb
-EObjjvbdZdwfzhJC
-DoCkKvbdGQASwHFy
-EPDKjvbdkVvnDbXw
-EObkKvbdJYTagkqQ
-DoCjjvbdMSWlzVQz
-DoCjjvbdnGeYMmfy
-DoDLKvbdADRxKZiQ
-EObkKvbdZLqdTmkm
-EPCkKvbdFeirOItR
-EPCkKvbdRjyGVGjs
-DncLKvbdiMFDnUcZ
-EObkKvbdVAaqSpqy
-EPCkKvbdULunaVni
-DnbkKvbdcImKKevx
-DoCjjvbduaDyTPFI
-EPDKjvbdKQydoFnF
-EPCjjvbdozmcjwoA
-DoDLKvbdZLqdUNlN
-DoDKjvbdJXsbHkpp
-DoCkKvbdelfXHNJk
-EObjjvbdeFOqavcK
-EPDLKvbdqlyjZMIJ
-DoCjjvbdUtMsekvK
-DoCkKvbdIxUBhMQp
-EOcKjvbdemGWgMjL
-DoCkKvbdwuMeQyLn
-DncKjvbdkClKpgVH
-DoDKjvbdfNFvflik
-DncKjvbdhkdcmuCy
-DoDLKvbdCJKakIfK
-DnbkKvbdSQTgJfEX
-DnbkKvbdkIGlGFmk
-DoDKjvbdySmhlqbH
-DoCjjvbdGdLVibJj
-EPCjjvbdSLZGUfkT
-EPDLKvbdSKxfVHKs
-DoDKjvbdGLFSbhMu
-DoCkKvbdqFcdtWAh
-EOcLKvbdbVBfxLUI
-DoDKjvbdcScKsdKB
-DnbkKvbdVwJYWEFH
-EPCjjvbdGQASwHFy
-DnbjjvbdqUTfrRjt
-EPDLKvbdEYYMTtUM
-DoDLKvbdfNFwHNKL
-EObkKvbdsQWPJbvG
-EOcKjvbdIsYaSmYM
-EPDKjvbdBdQAuilf
-DnbkKvbdrounibvG
-EObkKvbdiCPCdvqR
-EOcLKvbdBsAbsfXS
-DoCjjvbduDDVWuoP
-EPCkKvbdbsCjtEJa
-EOcKjvbdcTDLTdKB
-DoCjjvbdXGYytAPT
-DnbjjvbdePFTLTsr
-EObkKvbddoErjssr
-EPCkKvbdcTDKsdJa
-EPDKjvbdjgflGFnL
-EObjjvbddeOqbWcK
-EObkKvbdACqwizJQ
-EObjjvbdHgGyyXxH
-DoCjjvbdqlzKZMHi
-DnbjjvbdhfibxvJu
-DoDKjvbdSCEFLiZL
-EPCjjvbdSCEFLiYk
-EObkKvbdiLdcmuDZ
-EObkKvbdzGyMAMeX
-EPDKjvbdVYhTzKoO
-EPCkKvbdxrmiNRag
-DoDLKvbdjKGHilxS
-EOcKjvbdhWyAzzAJ
-EPDLKvbdMfcQNQVL
-DncKjvbdYkqdTmlN
-DoDLKvbdjJfIJlwr
-EOcLKvbdZeYGzghb
-DncLKvbdJuuFceGi
-EPCkKvbdhzUelRNf
-DnbkKvbdBhkCKhej
-DoDLKvbdhbObeXRR
-DnbkKvbdzHZMAMdw
-DoDKjvbdZxcjNblS
-DoCjjvbdDwwksstM
-DoCkKvbdUVkpJtAq
-DoDLKvbdaaWEepPw
-DncLKvbdGdKvJbKK
-DoDLKvbdTulQJtBR
-DoDKjvbdqceJPnVa
-DnbkKvbdvAdZTOeI
-EOcKjvbdVAbRSqRy
-EPCkKvbdTqQnuVHm
-DoCjjvbdwNWANDeN
-DnbkKvbdZtIiYdSn
-EPCjjvbdPIAXyAZB
-EPCjjvbdZoOIeEzK
-DoDLKvbdmJETqUrB
-DoCjjvbdOFDtIiKd
-DnbkKvbdqvolDIxq
-DnbjjvbdmgFYNNfy
-DncLKvbdieLHUoAO
-EPCkKvbdDnbkLWcE
-DoCjjvbdmJETpuSB
-DncLKvbdiiegjNXr
-EPDKjvbdZQldiMeR
-EOcKjvbdZHXEAPTJ
-EObkKvbdWHwvXfxz
-DnbkKvbdxUleRZLn
-DnbkKvbdtvNxKQsA
-DoDKjvbdOStWHEuQ
-DnbkKvbdsBellHLZ
-DoDKjvbdsCFllGkZ
-EPDKjvbdjhGlGGOL
-DncKjvbdxxJKBoyk
-DncKjvbdrXPkcJYq
-DoCkKvbduVnXipsA
-DoDKjvbdjKGHjMwr
-DoDKjvbdbBWEfPpX
-EOcKjvbdznoqEcMY
-DoCkKvbdySnJMqbH
-DoCjjvbdlrZVZsDi
-EPDLKvbdKfFgbApu
-DoDLKvbdZRMdiNFR
-EObjjvbdpeceUWAh
-EObkKvbdRotHKFcw
-DncKjvbdiZuFkpmf
-DoDKjvbdnGdwmNgZ
-DoDKjvbdMoxRVnGs
-DoDLKvbdiVZeXRtb
-EOcKjvbdGAoRYizm
-DoDKjvbdJJdAJpGd
-DoDKjvbdwMvANEFN
-DnbjjvbdaaWFFpQX
-DnbjjvbdqlzKZMIJ
-EPDLKvbdxnShXsJD
-DncLKvbdMfcPlotk
-DncLKvbdURRPVUhN
-DnbkKvbdHgGzZXxH
-EOcLKvbdYlRctOMN
-DncKjvbdnHEwlnGy
-DoDKjvbdlYsSTZGt
-EOcKjvbdZxcjNcLr
-EObjjvbdmttyjjSG
-EObkKvbdffLynHHA
-DnbkKvbdmpZxvLZC
-DncLKvbdBhjakJGK
-DoCkKvbdpstHSRkU
-EPDLKvbdiLddOVCy
-EOcKjvbdxUleQyLn
-EPCkKvbdTukpKTaR
-EOcLKvbdjvXOECYX
-EObjjvbdRWnEDLgc
-EObkKvbdbhljLGWx
-EPCkKvbdZoOJEdyj
-DnbkKvbdqrVKnLAm
-DoDKjvbdVAbRTRRy
-DnbkKvbdhfjDZWKV
-EOcLKvbdkWXOECYX
-DnbkKvbdYTLaMsnx
-EObjjvbdZRNFImFR
-DncLKvbdCWzdIdpW
-EOcLKvbdpyPIGqDx
-DoDLKvbdiCOcFWpq
-EPCjjvbdhtzFXSUb
-Dnbjjvbdlqxtyrci
-DoCkKvbdiZtelROG
-EPCkKvbdVUNUFkvK
-DnbkKvbdNddUJJLE
-DoCkKvbdNdctIhjd
-DnbkKvbdcyyQYZQb
-EObkKvbdQmYByNtz
-DoDLKvbdVrNxBeMD
-EPCjjvbdCTBCsevr
-DncLKvbdtSrTYyeD
-DnbjjvbdRyigsDWA
-DncLKvbdJYUBglQp
-DoDKjvbdSPsfiedX
-DoCkKvbdADRxKZiQ
-EPDLKvbdrEFJPmvB
-DnbjjvbdvAcyTOdh
-EOcKjvbdaMjasUmH
-DoDKjvbdZjSgogBf
-DnbkKvbdnGeXmOGy
-DnbjjvbdMgComPuL
-EPCkKvbdxKvcgzzG
-DncKjvbdwtldpyMO
-DoDKjvbdbhlikGXY
-EPCkKvbdpyPIHREY
-DoDLKvbdkClLRHUg
-EPDKjvbdqFdFUWBI
-EOcLKvbdkxrqrxgU
-DoDLKvbdTvLoitAq
-DoCjjvbdJuuFcdfi
-EPCjjvbdrykpTAhO
-EPCjjvbdiZuFkqNf
-EObjjvbdEuxpQNKF
-EPCjjvbdGGKSOJUR
-EPCkKvbdcyxowxqC
-DnbjjvbdjhGkeemk
-EPDKjvbdijGIJmYS
-DnbkKvbdypnliKXA
-EOcKjvbdRadFLhyL
-EPCjjvbdxwiKCPyk
-DoCkKvbdfILVqnQg
-DoDLKvbdkNCLzEgP
-DoCkKvbdGKdrbglu
-DnbkKvbdJcJcRJcY
-DoDLKvbdIwsahMRQ
-DnbkKvbdNddUIhjd
-EPCkKvbdJuuGDdgJ
-EPDLKvbdjKGHjMwr
-EObkKvbdGdKvKCJj
-DncKjvbdNUrqkNAX
-DoDLKvbdTqQoVVHm
-DoDKjvbdNddTiIkE
-EPCkKvbduaEZTPFI
-DnbjjvbdFWYopMie
-EObjjvbdyXhiaozL
-EPCjjvbdhaoDFWpq
-DncKjvbdJJdAKQHE
-DoDKjvbdegkVrOQg
-DnbjjvbdwuMdqYlO
-EPCkKvbdLKaHvAJy
-DoDKjvbdRbEFLiYk
-DoDKjvbdSxLMNzjx
-DnbkKvbdGKdsChMu
-DncKjvbdACrYJzJQ
-DoCjjvbdbUafwkUI
-DncKjvbdzjVPpDrt
-DnbjjvbdFfKSOJTq
-EPDKjvbdHffyyXxH
-EOcLKvbdRkZFtgLT
-EOcKjvbdXsMAmToY
-EOcLKvbdNPwqWNfs
-DoCjjvbdEuxpPljF
-DncLKvbdjJfIJlxS
-DoCjjvbdhgJbxuiu
-EPCkKvbdrDdhpOWB
-DnbkKvbdwWlBWAuu
-EObjjvbdySmiMrCH
-EPCjjvbduWOXjRTA
-DncLKvbdRDbaPqES
-EPCkKvbdjEkHVPAO
-EPDLKvbddiiqvUzn
-EPDKjvbdyYJKCPyk
-DncKjvbdNeEThiKd
-DncKjvbdrbGMlGkZ
-EOcKjvbdOTTvHEuQ
-EObjjvbdFyVUaEYC
-EPCkKvbdbiMikFwY
-EPDKjvbduaDxsPFI
-DncLKvbdozmckYPA
-DoDLKvbdVYgsykPO
-DoCjjvbdQvnDbkgc
-DncKjvbdZLrDtNkm
-DoDKjvbdHfgZyYXg
-DoDKjvbdauCGwkUI
-DoDKjvbdmJDsqVSB
-EOcKjvbdhgJbyWKV
-EPCjjvbdrouoKDWG
-DoDKjvbdQmYCYnUz
-DoDLKvbdfHkVqmpg
-DoCjjvbdZjShPfaf
-DoCkKvbdIGfzYxYH
-EPDKjvbdZRMeJNFR
-EPCjjvbdRpTgKFdX
-EPCkKvbdEYYMUUUM
-DncLKvbdwuMdqZLn
-EOcKjvbdmuVZkJqf
-DncKjvbdhgJbyWJu
-DnbjjvbdKVuFcdfi
-EPCkKvbdRadElIxk
-EPCkKvbdYlSDsmkm
-DoDKjvbdhlFEOVDZ
-DoCjjvbdIsZBSlwl
-DoDKjvbdLAkGmCXq
-DoDLKvbdqwQMCiYq
-EPDKjvbdURROtuIN
-DoCjjvbdpxoHgREY
-DncKjvbdwXLaWAuu
-EObjjvbdrpWPJcWG
-EPDLKvbdmozYvLYb
-EPCkKvbdMowpunGs
-DnbkKvbdANHySvzY
-DncLKvbdZyDinDLr
-DoCjjvbdziuPpESt
-EPDKjvbdiVZeXRuC
-EPDLKvbdDncKkWbd
-EOcLKvbdFVxopNJe
-DncLKvbdACqxJzIp
-DncKjvbdaMkCTUlg
-DoCkKvbdhyuGMQnG
-EObjjvbdbBWFFpPw
-EObkKvbdTAEiICPE
-DoDKjvbdbUagXjtI
-DoDLKvbdGZUuAcwb
-DoDKjvbdnGdwlmgZ
-DoDLKvbdVBCRSpqy
-DnbjjvbdfIKvRnRH
-EObkKvbdaRebgsek
-DnbjjvbdNVSrLNAX
-EPDKjvbdrJAKEmPF
-DnbkKvbdBdQBWKNG
-DoCjjvbdePFTLUUS
-EPCkKvbdRDcAoqDr
-DncLKvbdrNZiyLhJ
-DoCkKvbdLqwNZtpz
-EPDLKvbdlqxtzTEJ
-DnbkKvbdrRtjmkBN
-EPCkKvbdZRMeJNEq
-DnbkKvbdZsiJYdTO
-EObjjvbdUtMtGLvK
-EOcLKvbdnCJwYOnV
-DncLKvbdUMWPAuni
-EOcKjvbdJcJbpjDY
-DoCkKvbdcImKLGXY
-EObkKvbdYSlAmTnx
-DncLKvbdCTBCtFvr
-EObjjvbdqlyjYlIJ
-DoCkKvbdmSZUzSci
-DoDKjvbdjEjfuPAO
-EPCjjvbdWfYzUAPT
-DnbjjvbdzROmJJwA
-EObjjvbdnQZyVjyC
-DncKjvbdjAQGaPgK
-EObkKvbdtTSTZZeD
-DoDLKvbdZLrETnLm
-DncKjvbdCDpAujNG
-DncKjvbdUyHsykOn
-EPDLKvbdeXystRez
-EPCjjvbdlrZUyrci
-EPDKjvbdwjvcgzzG
-EPDKjvbdnHExNOGy
-EOcKjvbdZLqdTmlN
-EPCkKvbdEuxopMjF
-EObjjvbdJYTaglRQ
-EPCjjvbdrWpLbiZR
-EPCjjvbdNxOuzcnU
-DoDLKvbdijFhKNXr
-DnbkKvbdKWVGEFHJ
-DnbkKvbdKCicQjCx
-DoCkKvbdcScLTdKB
-EOcKjvbdKWUecdfi
-DoCjjvbdiLeDmuDZ
-DncKjvbdySnJNSCH
-EPDLKvbdZshhyDrn
-DnbkKvbdssSSxydc
-EOcLKvbdqrUjnLBN
-EPDKjvbdGdLWKCKK
-EObjjvbdsQWPJbuf
-DoDLKvbdJcKDRJcY
-DoCjjvbdZoNiEeZj
-DnbkKvbdGFjSOJTq
-EPDLKvbdxxJKBozL
-DoDKjvbdBraDUGXS
-EPDKjvbdJbjCpicY
-DoCjjvbdVqmwbEkc
-EPDKjvbdijFhKMwr
-EPDLKvbdrSVLNkBN
-DoCkKvbdiUzEvquC
-EPCjjvbdWIYVxGxz
-DnbkKvbdZoOIdeZj
-DncLKvbdZRMeJNEq
-EObjjvbdZMSDtOMN
-DnbjjvbdRWnDcLgc
-DoDLKvbdmRxtzTDi
-EOcKjvbdJmADygUa
-EOcKjvbdxUmFQyMO
-EOcLKvbdOTUWHEtp
-DoDLKvbdZRNFJMeR
-EOcLKvbdxmsHxShc
-EPCkKvbdUxhTykPO
-DoCkKvbdelfWfljL
-EPDLKvbdFejSOJTq
-EPCkKvbdKefIBaRV
-DncKjvbddeOqbXDK
-EOcKjvbdhlEcnUcZ
-DoCkKvbdZtJJZETO
-DnbjjvbdSPtHJfDw
-DncLKvbdOFDtIhkE
-EPDLKvbdFyVVAcwb
-DoCjjvbdqTtGqqjt
-EOcLKvbdyTOIlrCH
-DnbjjvbdACrYKZiQ
-DoDLKvbdvmWAMceN
-DoDKjvbdLBLHNCYR
-EPCkKvbdIxUCHlQp
-EPDLKvbdQmXayNtz
-DoCjjvbdKRZdoFme
-DncLKvbdZoNiEdyj
-DoDKjvbdqqtkOLBN
-EPCkKvbdiZuFkpmf
-DncKjvbdEPCjkXCd
-DoDKjvbdbVBgXjsh
-DoCjjvbdmRyUzSdJ
-EObjjvbdMJCLpxAS
-DoCjjvbdwWlBWAvV
-EPDKjvbdNHCpMouL
-DncKjvbdEOcLKwDE
-DoCjjvbdwjvcgzzG
-DnbkKvbdNGbpNPtk
-DoDLKvbdZGwEAOri
-EObjjvbdaRfDITfL
-DoDKjvbdVvhwudEg
-EPCjjvbdHgGyxwwg
-DncKjvbdcJMikFwY
-EObjjvbdwMvAMdEm
-EOcKjvbduMYXBUAw
-EPDLKvbdpfDeTuaI
-DoDKjvbdssSSxzEc
-DnbjjvbdjblLRHUg
-EOcLKvbdVwIxWDeH
-EPCkKvbdLGFgaaQu
-EPDKjvbdBiKakIfK
-DoDLKvbdEOcKjwDE
-EOcKjvbddijRvUzn
-DoCjjvbdmaivxPOV
-DnbkKvbdMfcQNPuL
-DncLKvbdZtIiZDsO
-DoDLKvbdhlEcmuDZ
-EOcKjvbdIGfzYxYH
-DncLKvbdICLydzAD
-EPDLKvbdMfcPmPuL
-DnbjjvbdrRuKmjaN
-DnbkKvbdbsDKscjB
-DoCkKvbdhkddNtcZ
-EOcLKvbdNQXqVnGs
-DoDLKvbdrEFIonVa
-DoCjjvbdQvnDcMID
-EPCjjvbdjlalZeGo
-EPCkKvbdjJfIKNYS
-EObjjvbdREDBPqES
-EPCjjvbdiZtfMRNf
-DoDKjvbdADRxJyiQ
-DncLKvbdYkqcsnMN
-DncLKvbdZshiZDsO
-DoDLKvbdRNXayNtz
-DncLKvbdqcdiPmvB
-EPCkKvbdrNZixlHi
-EPCjjvbdwtmFRYlO
-EObkKvbdJTZBTNXl
-EOcLKvbdWRnXadkc
-DoDLKvbdvwMBVaVu
-DoDKjvbdlZSrTYgU
-EPDLKvbdQcbaQRDr
-DoCjjvbdhuZdvrUb
-DnbkKvbdZxdKOClS
-DncKjvbdJzoexEAN
-EOcLKvbdQvmdDLhD
-DncLKvbdunszpkPU
-EOcKjvbdiZuGMQnG
-DncKjvbdVZIUZkOn
-DoDLKvbdkxsRsYgU
-EPCjjvbdGQASwGey
-DncKjvbdnBivwoNu
-EPDLKvbdsBelkfjy
-DoDLKvbdddoRbWbj
-EPCjjvbdhancFXQq
-EObkKvbdJvUfEEfi
-EPDLKvbdIidAKPfd
-DoDLKvbdxVMdpxkn
-DoCjjvbdaNLCTVNH
-DnbkKvbdZyDinDMS
-DoDLKvbdrMzJyLhJ
-EPDLKvbdyXhiaozL
-DoCjjvbdGKeTDHlu
-DncKjvbdwzIGFxFS
-EObjjvbdJvUedEfi
-DncLKvbdIjEAJpGd
-DncKjvbdyTNiNRbH
-EOcKjvbdidkGuPAO
-DoDLKvbdkVvmcbXw
-DoCjjvbdJYTbHkpp
-DoDLKvbdFyVVBEYC
-EPDLKvbdmoyyVjyC
-EOcKjvbdcTDKtDjB
-EPCjjvbdEvYpPmJe
-DoCjjvbdCJLCKhej
-DoCjjvbdSKxfUgLT
-DoDLKvbdFjeTDINV
-DncLKvbdEXxMUTtM
-EOcKjvbdWRnXaeMD
-DoCjjvbdrMzJyLgi
-DoCkKvbdcSbkUEKB
-DnbkKvbdyzeOSIIh
-DncLKvbdpstGqrKt
-EPDKjvbdCJLBkJGK
-EOcLKvbdJcJcQjDY
-EPDLKvbdbLLfPNcA
-DnbjjvbdEASImZwX
-DnbjjvbdtumwiqTA
-DnbkKvbdxKvdHzyf
-DoCjjvbdVwIxWDeH
-DncLKvbdYzcFqjVy
-EPDKjvbdqiAJeMoF
-DoDLKvbdNQXqVmfs
-EPDLKvbdFjdsChNV
-DoCkKvbdOTUWGdtp
-EOcKjvbdOEdUIiKd
-EOcLKvbduaEZSoFI
-EOcLKvbdxsNhlrBg
-EObkKvbdcIlijfXY
-DoDLKvbdLqvlytpz
-DoDKjvbdIryBTNXl
-EObjjvbdQwOECkhD
-DoCjjvbdLFegaaQu
-EObkKvbdFkFTChNV
-DnbjjvbdyzeOSHiI
-EObjjvbdLAkHNCYR
-DnbkKvbdZyDimcMS
-DncKjvbdkMbLzEgP
-DnbjjvbdRbEEkhyL
-EOcKjvbdLrXMzVQz
-EOcKjvbdVBBqTRRy
-EObjjvbdyNsHxTIc
-EPCjjvbdMuTRkNAX
-DoCkKvbdUaCQrprZ
-EPCjjvbdjmCLydfo
-DoCjjvbdFyVVAcxC
-EPCjjvbdQvnDblID
-DnbjjvbdLhbLqYAS
-DncLKvbdFxuVBEYC
-DncKjvbdGLFScIMu
-DncKjvbdBvzcheQW
-EPDLKvbdSPsfjFcw
-DnbkKvbdsQWOibvG
-DnbkKvbdaSGChTfL
-EPDLKvbdjmBkzFGo
-DoDLKvbdqAiFAWhE
-EPDLKvbdkVwNcaww
-DoCkKvbdKRZePGOF
-EOcLKvbdJXtCIMRQ
-EPCkKvbdaNLCTUmH
-EPDLKvbdliDtRUrB
-EOcLKvbdKfGHbApu
-EObkKvbdDwwlTstM
-DoDLKvbdmgExMmfy
-EOcLKvbdKWUfEFHJ
-EPCjjvbdkxrqrxft
-DncLKvbdkClKqHUg
-DoDKjvbdVqnXadlD
-DoDLKvbdULvPBWPJ
-DoDKjvbdUslsfMWK
-EOcLKvbdJvVFdFGi
-DncKjvbdiifHilxS
-EPCkKvbdRaceMJYk
-DoCkKvbddwytTrFz
-EPDLKvbdYkrETnLm
-DoCjjvbdiMEdOUby
-DoCkKvbdxVMeQyLn
-EPCkKvbdwuMdpxlO
-EPDLKvbdNPxQumfs
-DncKjvbdYpleJNEq
-DncKjvbdTAEhhCPE
-EOcLKvbdUGznLwVe
-EOcKjvbdNPwpunHT
-EPDLKvbdKaLHNBwq
-EOcLKvbdFfKRmhtR
-EObkKvbdYlRcsmlN
-DoDLKvbdWSOXadlD
-EOcLKvbdWWiXucdg
-DoCkKvbdZsiIxcsO
-DoDLKvbdbhlikFvx
-EOcKjvbdtlYXAsaX
-EOcLKvbdUtNTelVj
-DoDKjvbdhaoDFXRR
-DoDLKvbdEuxoomJe
-DoDLKvbdEYYLtTsl
-DncLKvbdbhmJkGWx
-EPDLKvbdqwPkbhxq
-DnbjjvbdlrYuZsEJ
-DncLKvbdeKKSWUzn
-DnbkKvbdyTNiNSCH
-DncKjvbddwzTsqez
-DncLKvbdTXkMNzjx
-DoDKjvbdJmAEZgUa
-DncKjvbdeEnqavbj
-EPDLKvbdcJNJjfWx
-DncLKvbdPyNAGsRj
-DoCjjvbdLGGHbAqV
-DncKjvbdddoRbWcK
-DoDLKvbdZjTHogBf
-EPDLKvbdRkZFuHKs
-EOcLKvbdEuyPoljF
-EPDKjvbdEYYMTtUM
-DncKjvbdDxXlTssl
-DnbkKvbdQvmcblID
-EObkKvbdjmBkydgP
-DoCkKvbdOAJTUKSA
-DncKjvbdhgJbxvJu
-DoDKjvbdVvhxVceH
-DoCkKvbdjvXODaww
-EPDKjvbdemFvflik
-DoDKjvbdkCkkRGtg
-DoCjjvbdDigjVxKA
-DncLKvbdLAjgNCYR
-EPDKjvbdbUbGwkTh
-EObjjvbdmuUzLJrG
-DnbjjvbdmgFXlnGy
-DoCkKvbdFxttaDwb
-EPCjjvbdJcKDRKCx
-DoCkKvbdpfDeUWAh
-EPDLKvbdADSYJyhp
-DoCjjvbdHkazmvqL
-DnbkKvbduLxWaUBX
-EPCkKvbdQdCaPpdS
-EOcLKvbdZdwfzhIb
-EPDKjvbdKWUeceGi
-EPDKjvbdSCDeMJZL
-DoDKjvbdyOShYShc
-EObjjvbdliEURVSB
-DncLKvbdmgEwlnGy
-DnbkKvbdsBemMHKy
-DoDKjvbdYzcGSJvZ
-EObkKvbdGcjvKBjK
-EOcLKvbdJuuGDdgJ
-EPCjjvbdOStWGeUp
-EOcLKvbdGLEsChMu
-EOcLKvbdeATqNYJf
-DncLKvbdxxIjCQZk
-EObkKvbddZyQXyQb
-DoDKjvbdVBCRTRRy
-EPCjjvbduDDVWuoP
-EOcKjvbdVZHtZkOn
-EPCjjvbdZQmEhmFR
-DnbkKvbdZyDimcLr
-EPDLKvbdjblKqHVH
-EOcLKvbdZtIiZDsO
-DnbkKvbdRWmcbkhD
-EPCjjvbddneSjtTr
-DoCkKvbdZQmFJMdq
-DoDLKvbdLFegbBRV
-EOcKjvbdSwkMNzjx
-DoCjjvbdFjeTDHlu
-EPCjjvbdtSqrxydc
-DncLKvbdSPtHKFcw
-DncLKvbdyYJJapZk
-EOcKjvbddxZssrFz
-EObjjvbdfekzOGgA
-EPDKjvbdrylQSaHn
-DnbjjvbdZisHofbG
-EObjjvbdrbGNMHKy
-DnbkKvbdLBKfmBxR
-DncKjvbdACqxJyhp
-DncLKvbddijRutzn
-EPDLKvbdMpYRVmfs
-DncLKvbdmttzKiqf
-DnbkKvbdZnmhdeZj
-EPCkKvbdjKFgjNYS
-DnbjjvbdxnTHxShc
-EPCjjvbdlZTSTYgU
-DoCjjvbdqlyjYkgi
-EObkKvbdxVMeQyMO
-EPDLKvbdSPtHJecw
-EPDLKvbdrpWOibvG
-EObkKvbdRbEFLhyL
-DoCkKvbdYNqAYUvU
-DoCkKvbdnCKXXnnV
-EObkKvbdddoSBvbj
-DncKjvbdNGcPlpUk
-DnbkKvbdmajXXnmu
-DoCjjvbdJXsbHlQp
-DncLKvbdNGcPlouL
-DoCkKvbdTAFJHaoE
-EPCjjvbdnPyxvKyC
-EPCkKvbdRyihTDWA
-DncLKvbdQlxCZNtz
-EObkKvbdJSyAsMwl
-DoCjjvbdmttykJrG
-EPCkKvbdfpBzwEXh
-DoCjjvbdrzMQTBIO
-EPDKjvbddZxowyRC
-DncKjvbdaNKaruNH
-DnbjjvbdaNKasVMg
-DncKjvbdcbTNSATm
-EPCkKvbdiLdcnVDZ
-EObjjvbdYTLaMtOx
-EOcKjvbdEASIlzWw
-DnbjjvbdziuPodTU
-EOcLKvbdqUUHRqkU
-DnbkKvbdyNsHxSiD
-EObjjvbdhkeDnUcZ
-EOcKjvbdNHCpNQUk
-EPDLKvbdIryBSmYM
-DnbkKvbdfekynGgA
-EOcLKvbdiHKCyWJu
-EObkKvbdrMzKYlIJ
-DoCjjvbdsZkoraIO
-EOcKjvbdQccAoqES
-DoCjjvbdtTRrxzFD
-EPCjjvbdJXtBhMRQ
-DnbjjvbdsBfNMHKy
-DnbkKvbdeEnrBwCj
-DoDLKvbdTfzmkvvF
-DoCjjvbdCJLCLIej
-DnbjjvbdNUrrLNAX
-DoCkKvbdxsNiNRag
-EPCjjvbdtbcUwVoP
-DoDKjvbdaogHDkzd
-DncKjvbdpedFTuaI
-DnbjjvbdqYngfpdY
-DncKjvbdbiNJkGWx
-DoCjjvbdGckVjBij
-EObkKvbdqceIomvB
-EPDLKvbdFWZQQNJe
-EObkKvbdrRtkOLAm
-DncKjvbdDwwktUTl
-EObkKvbdwNWAMceN
-DncKjvbdZMSDtOLm
-EObjjvbdTkvPAuni
-DoDLKvbdUxhTykPO
-EOcLKvbdVBCQsQqy
-EPDKjvbdZshhxcrn
-DnbjjvbdqdEiQOWB
-DoDKjvbdkWWmdBww
-DoDLKvbdzQoMhiwA
-DnbjjvbdUGzmlXWF
-DncKjvbdJTYaTMwl
-DoDKjvbdGLFScHmV
-DoDKjvbdrWpLcJZR
-EOcKjvbdwNWAMcdm
-EObkKvbdmfeYNOGy
-EObkKvbdtcDUwVoP
-DnbjjvbdiZuGMQmf
-EObjjvbdfMewGmJk
-DnbjjvbdANIZTWyx
-DncKjvbdtTSSxydc
-DnbkKvbdsBfMkfjy
-DoDKjvbdSLYfUgKs
-DoDLKvbdZisHogCG
-EObkKvbdVTlsfMVj
-DncKjvbddZyPwxpb
-DncLKvbdAMhYsXZx
-DncLKvbdxwhjCPzL
-EOcKjvbdKRZeOeme
-DoCkKvbdunszqLOt
-EPDKjvbdZRMdiMdq
-DnbjjvbdEuxpPljF
-EPDLKvbdGGJrOJUR
-EPDKjvbdVviXudEg
-DnbjjvbdpfDeTvBI
-DncLKvbdRadElJYk
-EPDKjvbdaMjbSuMg
-EPDLKvbdTAEhhCOd
-DncLKvbdTIyiqABM
-EPCkKvbdBsBDUFvr
-DoCjjvbdcSbkUEJa
-EObjjvbdCIjbKhfK
-DoDKjvbdauCHXjsh
-DoCkKvbdpyPHfqEY
-EOcLKvbdDwxMUUUM
-DnbjjvbdGFjRmiUR
-DoDLKvbdbQGgELzd
-EOcKjvbdGGJqnItR
-EPCjjvbdxrnJNRag
-DoDLKvbdbhmJkFwY
-EPDKjvbddoFSkTtS
-DncKjvbdNUsSKmAX
-EPCjjvbdfelZmfgA
-DoCkKvbdjKGIJlwr
-EPDLKvbdJYTaglQp
-EPCkKvbdVrOXbFMD
-EPDKjvbdTpqPUuIN
-EPCjjvbdGckViaij
-DnbjjvbdczZQYYqC
-DoDKjvbdMtrqkNAX
-EObkKvbdaNKartmH
-EPDKjvbdmSZUysDi
-EOcLKvbdlhdURVSB
-DncKjvbdWRnXbEkc
-DncLKvbdLBKfmBwq
-EPDKjvbdZdwfzhIb
-EPCkKvbdhancFXRR
-EObkKvbdaSFbgtGL
-DncLKvbdJXsaglQp
-DncLKvbdUsltFlVj
-DoDKjvbdLBKfmBwq
-EPCkKvbdnVVZjirG
-EObjjvbdiZuFlROG
-EObkKvbdwygeeweS
-EPCkKvbdwjvcgzyf
-DnbkKvbdssRsYzFD
-DnbjjvbdxwiJaoyk
-EPCjjvbdVhYWYHYz
-DncKjvbdhzVFkpnG
-DncLKvbdeJjSVtzn
-DncLKvbdyYIjCPyk
-EPDLKvbdJpzEoGNe
-DncKjvbdnBiwXoNu
-EOcKjvbdVrOYCElD
-EObkKvbdLBKgNCXq
-EPDKjvbdTlWPBVni
-EPDKjvbdFxuVBDxC
-DncKjvbdnHFXlnGy
-EPCjjvbdYkrDtOMN
-DoCkKvbdUWMPjTaR
-DoCjjvbdjSziSjiz
-DnbjjvbdeOdsKtUS
-EPCkKvbdmfdwmOHZ
-EObjjvbdtSrTYydc
-DnbkKvbdRjxeuGkT
-EObkKvbdKeehCApu
-EOcLKvbdpxoIGqEY
-DncKjvbdbLMGOnDA
-EPCkKvbdEXwktUUM
-EObkKvbdiUzFWqtb
-DoCjjvbdiHKCyViu
-EObkKvbdvwLaWAuu
-DoDLKvbdiCPDEvqR
-EOcKjvbdWXJXvEEg
-DoCkKvbdqTtGrSLU
-DnbkKvbdtbbuXWOo
-EObjjvbdgGLzOGgA
-DncKjvbdTlVoBWPJ
-DoCkKvbdeEoRbWcK
-DoCkKvbdkWWmdCXw
-DncKjvbdehLWRmpg
-EPCkKvbdjFLGtoAO
-DoDKjvbdGLFScIMu
-EObjjvbdrRtkOKaN
-EPCkKvbdczZQYYqC
-DnbjjvbdfHkVqnRH
-EOcLKvbdtvNxKRTA
-EPCkKvbdADSYJyiQ
-EOcKjvbdmJETptrB
-EOcLKvbdURQoUtgm
-DoDLKvbdZMSDtOMN
-EPCjjvbdFfJqnIsq
-EOcKjvbdcJNKKfWx
-DnbjjvbdkySqrxft
-DncLKvbdJpyePFme
-DncKjvbduCcVXWPP
-EOcLKvbdxKvcgzzG
-DoDLKvbdpfEEsvAh
-EObkKvbdZyDjNblS
-EPCjjvbdhbPDEwRR
-EPDLKvbdTqQoUthN
-DoDKjvbdxnSgxShc
-DoCkKvbdcTCjscjB
-DoCkKvbdOTUVfeVQ
-DncKjvbdkMbMZeHP
-DncLKvbdEvYpPmKF
-DncLKvbdJTZBTNYM
-EObjjvbdIHGyxxYH
-EOcKjvbdraemLfkZ
-EOcKjvbdMpYRVmgT
-DncKjvbdxZgfFxEr
-DnbkKvbdpxoIGpcx
-EPCkKvbdkIGlGFnL
-DoDKjvbdUslselVj
-DnbjjvbdZnnJEdzK
-DncLKvbdehLVrORH
-DoCjjvbdySmhlqbH
-DoDLKvbdADSXiyhp
-DoDKjvbdZtJJZDrn
-DoCjjvbdezvZEiUX
-EOcLKvbdqTtHSRkU
-EPDKjvbdVgxWXgYz
-DoCjjvbdGZUuBDwb
-DncLKvbdhzUekpnG
-EPCjjvbdZxcinDMS
-EPCkKvbdOFEThiLE
-DoDLKvbdhzVGLqOG
-EObjjvbdkySqryGt
-DoDKjvbdmpZyVkYb
-DoCjjvbdnHFYMnGy
-EObkKvbdRotGjFcw
-EPDKjvbdjblKpgUg
-EOcLKvbdWWiYVdFH
-DoDLKvbdtbcVXVoP
-EPDLKvbdqqtkOLAm
-EPDLKvbdmRyUysEJ
-DnbkKvbdxnShYTJD
-DoDLKvbdGKeSbhMu
-DoCkKvbdjuwODbXw
-DncLKvbdaMkCSuMg
-DncKjvbdtbcUvuno
-DnbjjvbdiVZeWqtb
-DoCjjvbdLBKgNBxR
-EObkKvbdlZSqrxgU
-EPCkKvbdULunaWOi
-DoCkKvbdwzIGGYEr
-EPCkKvbdnHExNOHZ
-EObjjvbdpyOgfqEY
-DnbjjvbdpedFUWAh
-DoCkKvbdhaoDFXQq
-DnbkKvbdYqMdhleR
-DnbjjvbdsZkpSaIO
-EPDKjvbdJcJbqJbx
-EObjjvbdehKvRmqH
-EOcLKvbdmIdURVSB
-EPDLKvbdvOszqKoU
-EOcLKvbdZisIQGbG
-DnbjjvbdFyVUaDwb
-EPCjjvbdTAEiIBoE
-DncLKvbdRkZFtgKs
-EOcLKvbdzdynzdyp
-EOcLKvbdnUtykKSG
-DoDKjvbdZQmEhldq
-EOcKjvbdnBjWxOnV
-EPCkKvbdqvpLbiZR
-DoDKjvbdrykosBIO
-EOcLKvbdBiKbLJGK
-EPDLKvbdBvzciFPv
-DoCjjvbdemFwGlik
-EPDLKvbdqTsfqqjt
-DncLKvbdptUHRrLU
-EObkKvbdbUbGwjsh
-DoCkKvbdHffyyXwg
-EPCjjvbdgGMZnHHA
-EPDKjvbdFejRmhsq
-DoCkKvbdQvmdCkgc
-DncLKvbdyNsHxShc
-DoCkKvbdrDeIpOWB
-EObkKvbdYzcGRiuy
-DncKjvbdMowqWNfs
-DoDLKvbdbsDLTcjB
-EPCkKvbdZQmEiNEq
-EObjjvbdNPwqWNfs
-DoDLKvbddeOrBwDK
-EObkKvbdrNZixkgi
-DoDKjvbdtlXvaUBX
-DncKjvbdtunYKRTA
-EOcLKvbdfSBWzkcP
-EObjjvbdVAbRTQrZ
-DnbjjvbdcJNKLFvx
-DncKjvbdssRsYyeD
-DoDLKvbdqTsgSSLU
-EPCkKvbdMowqVmgT
-DoCjjvbdDnbjjvbd
-EPCkKvbdlhdURUqa
-DncKjvbdqrVLOLAm
-DoDKjvbdNHDQNQUk
-EPCkKvbdXsLaMtOx
-EPCkKvbdRosgJfDw
-DncLKvbdKVuFcdgJ
-DoCjjvbdGGKRnItR
-DnbkKvbdeEnrCWcK
-EPDLKvbdlZSrTYgU
-EPCjjvbdtSrTYyeD
-DoCkKvbdZisHpHCG
-DnbjjvbdbrbkUDia
-DnbkKvbdhficYvKV
-EOcKjvbdsBfMlHLZ
-DoDKjvbdBdQBVjNG
-DnbkKvbdTvLpKUAq
-DoCjjvbdzaAPGgCM
-EObjjvbdiVZeWrVC
-EPCjjvbdZshiYcrn
-EObjjvbdRNXbYnUz
-EObkKvbdBcpBWJlf
-DncKjvbdtbcUvuoP
-DoCkKvbdmfeXmNgZ
-DncLKvbdbPfgELzd
-DncKjvbdZshiYdSn
-EObkKvbdDjHiuwjA
-DoDLKvbdfIKvRnRH
-DnbjjvbdiLeDmtcZ
-DoDLKvbdQwNcblID
-EObkKvbdmRyUzSdJ
-DnbkKvbdnHFYMnHZ
-EOcLKvbdfHjvSORH
-DncLKvbdlZSrSyHU
-EObkKvbdtSrSxzFD
-EObjjvbdZyEKNcLr
-EObkKvbdRkYeuHLT
-EOcKjvbdTkuoAuoJ
-DnbjjvbdEPDKkXCd
-EPCkKvbdnCJwXoOV
-EObjjvbdxrmiMqbH
-DoDLKvbdRaceMIyL
-EPDKjvbdRosgKFdX
-DoCjjvbdzoQQeDMY
-DncKjvbdZyEJmcMS
-DoDLKvbdOFDshiLE
-EPDKjvbdSQUGiedX
-EPCkKvbdTIyjRAAl
-EObjjvbdxUmFRYkn
-DncKjvbdmpZyWLYb
-DoCkKvbdygZMANEw
-DoDLKvbdhuZeWquC
-EObkKvbdFyUuAcxC
-DoCkKvbdiCPCeXQq
-DncKjvbdsCFlkfkZ
-EPCjjvbdNPwpvOHT
-DoCjjvbdSPtGjGDw
-DncLKvbdAMhZSvyx
-EPCkKvbdWXJYWDdg
-EPDKjvbdaogHDkzd
-DoDLKvbdRosgKFcw
-EPDLKvbdrRtjnKaN
-DncKjvbdvBEZSoEh
-DoDLKvbdmajXYOmu
-DnbjjvbdfNFwHMjL
-EPCkKvbdezuyEhtX
-DoCkKvbdHffzZYYH
-EPCkKvbdvAdYsOdh
-EPCjjvbdhlFDnVDZ
-DncKjvbdbiNKLFvx
-DoDLKvbdMIalQxAS
-EPDLKvbdGckWKBjK
-EOcKjvbdvOszqKnt
-DoCkKvbdraelkgKy
-EOcKjvbdMgComPtk
-DoDKjvbdOSsugFVQ
-DoCkKvbdyNrhYTJD
-EPCjjvbduDDVXWOo
-DncLKvbdiCPDFXRR
-DncLKvbdiGibyWKV
-EOcLKvbdfNGXHNJk
-EObkKvbdBhjakIej
-EPCjjvbdxmrhXriD
-DnbkKvbdJbibqKDY
-DnbkKvbdSCDdkhyL
-EPCjjvbdGFirOIsq
-DnbkKvbdKVtfDeHJ
-DoDKjvbdGKdrbhMu
-DncLKvbdZLrETmlN
-EObjjvbdjuvmcbXw
-DncKjvbdQdDApRDr
-EObkKvbdeATplwjG
-DoCjjvbdZMRdUNkm
-DoDKjvbdTqQoVVIN
-EPCkKvbdOTTufeVQ
-EPDKjvbdWRnXadlD
-DncKjvbdZsiJYdSn
-DoCkKvbdZLrDsnMN
-DoDKjvbdEKHiuwjA
-EPDLKvbdnBivxPOV
-EPCjjvbdddnrCWbj
-EOcLKvbdpssgSRkU
-EPCjjvbdzdzOzdyp
-EPCjjvbdZxcinClS
-DoDKjvbdvAcySoEh
-DnbjjvbdWHxWXfxz
-DoDLKvbdCWzdJEpW
-DoCjjvbdehLVqnRH
-EObjjvbdEXxLstTl
-EObjjvbdkMakzEfo
-EPCkKvbdKaKflbXq
-EPDLKvbdijFgjNYS
-DoCjjvbdZsiIxdSn
-DncKjvbdeATqNXif
-DncLKvbdzoPqEblY
-EObkKvbdLAjgNBwq
-DncKjvbdUxgsykPO
-DoDKjvbdaogGckzd
-DncKjvbdFVxpPmJe
-EOcLKvbdZLrDtNlN
-EObjjvbdYNqAXuWU
-DoCkKvbdEYYLstUM
-EObjjvbdeFPSBwDK
-DncKjvbdePEsKssr
-DncKjvbdZjTHogCG
-EPCkKvbdjKGHjNXr
-DoCkKvbdNrtVgFVQ
-DncLKvbdaMjaruNH
-DoDLKvbdwjwEHzzG
-EOcLKvbdTIzJqABM
-DoDLKvbdliETqVSB
-DoDLKvbdNrtVfdtp
-DnbjjvbdZxdKNcMS
-EPDLKvbdbUafxKsh
-DoCkKvbdVrNxCFMD
-DoCkKvbdxZgefYEr
-DoDKjvbdYTLaMsoY
-DncKjvbdeAURMwif
-EOcLKvbdNGcPmQVL
-EPDKjvbdqceJQOVa
-DncKjvbdRotHKGEX
-DoCjjvbdwNWAMdFN
-EPCkKvbdFyVVAcwb
-DoDKjvbdmozYvKyC
-DncKjvbdSPsgJecw
-EPDKjvbdZtJJYcrn
-EOcLKvbdGckWKCJj
-DoDKjvbdkxrrSxft
-DnbjjvbdRbDdlIxk
-DncKjvbdyYJJbPyk
-DnbjjvbdhgJcYvKV
-EObkKvbdjcLjqHUg
-EObkKvbdhgJbyWKV
-EObjjvbdrovPKCvG
-DoCkKvbdbBVdepQX
-DnbjjvbdUVkojTaR
-EPCkKvbdbUagYLUI
-DoDLKvbdptUGqqkU
-DoCjjvbdyTNhlqag
-DncKjvbdEYXlTssl
-EPCkKvbdXFxytAOs
-EOcLKvbdNdctIhkE
-EPDLKvbdkDMLRGuH
-EPDLKvbdDihJuxKA
-EOcLKvbdrafNMHLZ
-EPDLKvbdbKlFoODA
-DncLKvbdZLqcsnMN
-DnbjjvbdznpRFDLx
-DncLKvbdziuQPdSt
-EPCkKvbdbrcKsdKB
-DncLKvbdaMkCTUmH
-EPDLKvbdYkqdUOLm
-DoDKjvbdjhHLfGNk
-DoDLKvbdZMSDtNlN
-DnbjjvbdZjTHpHCG
-DoCkKvbdemFvgNKL
-DncKjvbdrRtkOLAm
-EPCjjvbdyNrhXsIc
-EObjjvbdgPazwDwh
-DoDKjvbdRDcAoqDr
-DoDKjvbdvvkaWBWV
-EOcKjvbdZRMdiNFR
-EPCkKvbddePRawCj
-DoCkKvbdHDjvKBij
-DnbkKvbdZirgpGbG
-EOcKjvbdhbPCeWqR
-DnbkKvbdNPwpvNfs
-EPCjjvbdZirhPfbG
-EOcLKvbdIGgZxwxH
-EPCkKvbdrykosBHn
-DoDKjvbdxnTIYShc
-DnbjjvbdNsTvGduQ
-DncLKvbdBcpAvJlf
-DnbjjvbdlqxtysDi
-DoCkKvbdOEdTiIjd
-DncKjvbdfHkVrOQg
-DoCkKvbdiHKDYvKV
-DoDKjvbdOTUVgFUp
-EObkKvbdaaVdfPow
-DncLKvbdZHXEAPTJ
-DnbkKvbdkIHLefNk
-DnbkKvbdjEjfuPAO
-EObjjvbdhtzFWqtb
-DoDLKvbdSQTfjFdX
-DncLKvbdHEKvKBjK
-DncLKvbdHDkVjBij
-EPDKjvbdRpTfiecw
-DnbkKvbdiBncEwQq
-EObkKvbdRadEkhyL
-EPCkKvbdezvYdiTw
-EOcKjvbdaMjasUlg
-EObkKvbdczZPwyQb
-EPCjjvbdTvMQJtAq
-EPCjjvbdJXtCIMRQ
-DoDLKvbdkDMKpftg
-EPCjjvbdiVZdvqtb
-DnbkKvbdtunXipsA
-DoCjjvbdjJehKNYS
-DnbjjvbdJvUeceHJ
-DoDKjvbdKRZdoFme
-DncLKvbdJcKCpjCx
-EPDKjvbdmbKXYPNu
-DnbjjvbdkIHLeenL
-EPDLKvbdNPxQunHT
-DnbjjvbdUtMtFkvK
-EPDLKvbdsPvPJcWG
-EObjjvbdMRvlzVQz
-DoCkKvbdsQWOjDWG
-DnbjjvbdXGZZtAPT
-DnbjjvbdunszpkOt
-DncKjvbdxZhFfXdr
-DnbjjvbdRzJgsCvA
-EPCkKvbdSCDdlIxk
-EPDKjvbdREDBPqES
-DnbjjvbdBvzdIdov
-DoDLKvbdSLYetfkT
-EObjjvbdKWVGDeHJ
-DoCjjvbduDDUvuoP
-EOcLKvbdWIYWXgYz
-DoCjjvbdbhmJjfWx
-EPDKjvbdIxUCILpp
-EOcLKvbdeXzTsrFz
-EPDLKvbdsBemLgKy
-EPCkKvbdzjVPpDrt
-DncLKvbdZyDimbkr
-DnbjjvbdRNYBxmtz
-EPCkKvbdvOszpkPU
-EObkKvbdSQTfiedX
-DncKjvbdZRNFIldq
-DoDKjvbdbhlijfXY
-EObkKvbdEzspeLcJ
-EPCjjvbdKCicRJbx
-EOcLKvbdOYOuzcnU
-DoCkKvbdhkddOVDZ
-DncKjvbdIxTahMQp
-EOcLKvbdwygeexFS
-EPCjjvbdKRZeOeme
-EPDLKvbdgPazvcxI
-DncKjvbdfNFwHMik
-EOcLKvbdtkwvaTaX
-EObjjvbdURQnuVIN
-DnbkKvbdiBncFWqR
-DncLKvbdaMkCStmH
-EPCjjvbdZjSgogBf
-DoDKjvbdMowpvOGs
-EPCkKvbdsrqsZZdc
-DnbkKvbdRpTfjFdX
-EOcKjvbdaMjbTVMg
-EOcLKvbdmgExMmfy
-DncKjvbdCJLCLJGK
-DoCkKvbdNeDshiKd
-DnbkKvbdGLFSbgmV
-EObjjvbdMtrrLNAX
-EOcKjvbdpedEsvAh
-DoDKjvbdcyxpXyQb
-EObkKvbdxZhGGXdr
-DoCkKvbdEztQdlCi
-EObkKvbdijFgilxS
-EPDLKvbdkHgMFenL
-EOcLKvbdlrYtysDi
-DncLKvbdjcLjpgVH
-DoCjjvbdnVVZkKRf
-EPDKjvbdFeirNhsq
-DnbkKvbdjblLRGuH
-EPDLKvbdtTSTZZeD
-DoDKjvbdVBCRTRSZ
-DncKjvbdTYLMNzjx
-DoCkKvbdEztQdkcJ
-EObjjvbdpfEFTuaI
-DncLKvbdYSlAmUPY
-DncKjvbdYpldiNFR
-DncLKvbdWXIwvDdg
-DoDLKvbdeXyssrFz
-DncLKvbdqdEhonVa
-EOcLKvbdNQYRVnGs
-EObjjvbdRpTgKGDw
-DoDKjvbdauCHXkUI
-DoDLKvbdhficZViu
-DnbjjvbdzoPpeCkx
-DoCkKvbdJYTaglQp
-DoDKjvbdnBiwYPNu
-EOcLKvbdMJCLqYAS
-EPCjjvbdYkrDsnMN
-EPCkKvbdehKvRmqH
-EObkKvbdVqmxCFMD
-DncKjvbdrDeJPmvB
-EPDLKvbdzaAOgHCM
-EOcLKvbdNPxQvNfs
-DncLKvbdFVxopMie
-EPDKjvbdgQBzwDwh
-EObjjvbdTfzmkvvF
-EPDLKvbdUaBprpqy
-DoCkKvbdnGdxNOGy
-DncLKvbdfIKurOQg
-EPCkKvbdKDJcRKCx
-EPCjjvbdmJEUQuSB
-DncLKvbdrafNMGjy
-EOcKjvbdZxdKNbkr
-DnbkKvbdJmADzGuB
-EPCjjvbdQvmdDMID
-DnbkKvbdemGWgNJk
-DncKjvbdyfxlAMdw
-EPCkKvbddtAUATNW
-DncKjvbdcasMrATm
-DoDKjvbdVhYVxHYz
-EPCjjvbdhyuFkpmf
-DoDLKvbdcbTMrATm
-EPCkKvbdILaznXRL
-DoDKjvbdRDbaQQcr
-DncKjvbdijFgjNYS
-EObkKvbdIMBznXRL
-EPCjjvbdxVNEpyLn
-DncLKvbdYkqctOMN
-EOcKjvbdxrmiNSBg
-EPDLKvbdtTRsYzFD
-EOcKjvbdzjVQQDsU
-EPCjjvbdZMRctNlN
-DncKjvbdXrlAmTnx
-EOcLKvbdbPgGdLzd
-EPDLKvbdFfJqmhsq
-EOcLKvbdyzdmqgiI
-DoCjjvbduCbtvuoP
-DncLKvbdNGcPlpVL
-EPCjjvbdGBOpyJzm
-EPCkKvbdRDcBPpcr
-EOcLKvbdRbEFLhyL
-EOcLKvbdePFTLTsr
-EObkKvbdcTCkUDjB
-DnbkKvbdrWokbhxq
-DncLKvbdqUTfrRjt
-EOcLKvbdRyihTDWA
-EObkKvbdpxnhHQdY
-DnbkKvbdrSUkOKaN
-DoCjjvbdIGgZyYXg
-DoDLKvbdMowqWNfs
-DoDKjvbdUxgtZkOn
-EObjjvbdUtNTelVj
-EObjjvbdlqxtyrdJ
-DncKjvbdkVvnDbYX
-EObjjvbdePFTKssr
-DoCkKvbdMuSrLNAX
-EOcLKvbdnQZyWLZC
-DoDKjvbdhgJcYujV
-DoDLKvbdaMjasVMg
-EPCjjvbdcScLUDia
-DnbjjvbdbKkeoNcA
-DnbkKvbdfpBzwEYI
-DoCkKvbdBhkBjhej
-DnbjjvbdkDMLRGtg
-EObkKvbdeATqNXjG
-EOcKjvbdFkFSbglu
-DnbjjvbdznpQdcMY
-DncLKvbdIidAJpHE
-DoCjjvbdLZQirzuG
-DnbjjvbdzjUopDrt
-EOcLKvbdnUuZjiqf
-DoDLKvbdwyhFeweS
-DoCkKvbdaoffckzd
-EObkKvbdzaAPGgCM
-EObkKvbdEzspdkcJ
-DnbjjvbdDjHiuxKA
-DnbkKvbdVqmxBdlD
-EOcLKvbdrJAKFMne
-EOcKjvbdZjSgofbG
-EPCjjvbdfMfWgNJk
-DoCkKvbdTukpJsaR
-DoCjjvbdySmiNSBg
-DnbkKvbdzGyMANFX
-EObkKvbduWNxKQsA
-DoDKjvbdRkZFuHLT
-DncLKvbdbKlGOmcA
-DncLKvbdyNsIXsJD
-DnbkKvbdMpXqWNfs
-DoCkKvbdHEKujBjK
-DncLKvbdDxXktTsl
-EPCkKvbdACrYJyiQ
-EOcKjvbdqUUHSRjt
-DoDLKvbdOFDsiJLE
-EObkKvbdrbGMlGjy
-DoCjjvbdjblKpgUg
-EPCkKvbdiHJcYujV
-EPDKjvbdrDeJQNvB
-EPDLKvbdbrbkTdJa
-DnbkKvbdNeDtIhkE
-DnbkKvbdcJNKKevx
-EPCjjvbdxVNFQxkn
-EObjjvbdhyuGLqOG
-EOcKjvbdrafMkfkZ
-EObkKvbdRkYetgKs
-DnbjjvbdUWLoitBR
-DoCjjvbdQvmcblID
-EOcLKvbdDoDLLXCd
-DncLKvbdzRPMiJwA
-DoCkKvbdsZkoraHn
-DoDKjvbdkHgMGFnL
-EObkKvbdrbFmMGjy
-DnbkKvbdRWnDbkhD
-EPDKjvbdJbicRJbx
-DncKjvbdGZUuAcwb
-DoCjjvbdmfdwmNfy
-DoDKjvbdBdQAujNG
-EPDLKvbdwWlAuaVu
-DncLKvbdxmrgxSiD
-DoCkKvbdUsmUFkuj
-EOcKjvbdcTDKsdKB
-DnbjjvbdjcLkRHVH
-DoDKjvbdbiMijewY
-EPCjjvbdPyNAHSrK
-DnbjjvbdFkErcINV
-EPDKjvbdZQldhmFR
-EPDKjvbdTJZjRABM
-EOcKjvbdKaKgMaxR
-DoCjjvbdwzHefYEr
-DoDLKvbdDwxLtUUM
-DoCkKvbdfILWRmpg
-DoCkKvbdRyihTCvA
-DoDKjvbdSQUGjFcw
-DoCjjvbdEYXktUTl
-EPCjjvbdoznEKxPA
-EPDLKvbdSiZiqABM
-EObkKvbdVUNUFkuj
-DncKjvbdMfbpNQUk
-DncLKvbdEvYopMie
-DnbjjvbdMowpvNgT
-DncLKvbdKjaHvAKZ
-DoDKjvbdqmZjZMIJ
-EObjjvbdGcjuibJj
-DoDLKvbduLwvaTaX
-DoCkKvbdHgHZyYYH
-EObjjvbdEOcKjwCd
-EPCjjvbdGckWKCKK
-EObkKvbdEuyQQMie
-DnbjjvbdHgGzZYYH
-EObjjvbdVUMsekuj
-EObkKvbdWWiXucdg
-EPDKjvbdRWnECkgc
-EPDKjvbdxZgefYFS
-DnbkKvbdEuyPomKF
-EPCjjvbddePSCXCj
-DoDKjvbdUsltFlWK
-DnbkKvbdbsDKtEJa
-EObkKvbdmoyyWLZC
-DoDKjvbdSCDeMJZL
-DnbkKvbdwtleRYkn
-EPDLKvbdJpzEnfNe
-DncKjvbdZisIQGbG
-DoCjjvbdiUzEwRtb
-DncKjvbdrounicVf
-DncLKvbdmIdURVRa
-DoDKjvbdYSlBNUPY
-DnbjjvbdKDKDQibx
-DoDLKvbdnCJvwoOV
-EPDKjvbdgFlZmfgA
-DoDKjvbdTukojTaR
-DnbjjvbdVAbQsQqy
-EOcLKvbdtAHRIABS
-DnbjjvbdmbJvwnnV
-EOcKjvbdvBDxrneI
-DnbjjvbdeJirWUzn
-DnbjjvbdKeegaaQu
-DnbjjvbdzQoMiKXA
-DnbjjvbdxwiJbPyk
-EPDLKvbdKNADzHUa
-DoCkKvbdANHyTXZx
-EObkKvbdxLXDgzyf
-EOcKjvbdpxoHgQcx
-DncKjvbdLBKflawq
-EPDKjvbdhanbdwQq
-DnbkKvbdEASIlyvw
-EPCkKvbdwzHfGYEr
-EOcLKvbdqZPHgQdY
-EPDKjvbdqTtGqqjt
-DoCjjvbdDxXksssl
-DoDKjvbdQlwayNtz
-EOcKjvbdTvLoitAq
-DnbkKvbdirzhsKiz
-EPDKjvbdyzeORghh
-DncLKvbdmJDsqVRa
-DncLKvbdKefICAqV
-EOcLKvbdZnmheFZj
-DoDKjvbdIxUCILpp
-DncLKvbdxsOIlrBg
-DoCkKvbdiVZdvqtb
-EPDLKvbdbBWEfQPw
-EObkKvbdsCFllGkZ
-EObkKvbdNdctIiKd
-EObjjvbdozmcjwoA
-EPDLKvbdlhdTqUqa
-EOcKjvbdbUagYKsh
-DnbkKvbdJpydoGOF
-DnbkKvbdnGeYMmfy
-DncKjvbdtlXwBUAw
-DncKjvbdqiAJdlne
-EPCkKvbdMIakqYAS
-DnbkKvbdCWzchdov
-EObkKvbdelewHNJk
-EPCjjvbdFpASvgFy
-DoDLKvbdVrNxCFMD
-DnbkKvbdMpYQvNfs
-EPCkKvbdEObkKwDE
-EPDLKvbdHDjuibJj
-EPCjjvbdKaLHMaxR
-DoDKjvbdakLfOmcA
-EPDLKvbdMgDQNQVL
-DoCjjvbdEvYpQNKF
-EPDKjvbdrEEhpOVa
-EOcLKvbdOFDsiIjd
-DncKjvbdtTSTYyeD
-EObjjvbdQvnDblHc
-DoDKjvbdVrNwbElD
-EPCjjvbdZMRdUNkm
-DoCjjvbdhfibxujV
-DnbjjvbdYpmFJMeR
-DncLKvbdDihKVxKA
-DoCjjvbdrNZjYkgi
-EOcLKvbdYqNFImEq
-DoDLKvbdJbjDQjCx
-DoDKjvbdwygefXeS
-DncLKvbdUyHsykPO
-DncLKvbdJSyBTMxM
-EPDKjvbdcImKKfXY
-EPCjjvbddndsLTtS
-DoDLKvbdEASIlzWw
-EObjjvbdrylQTAgn
-DoDKjvbdFkFTChMu
-DncLKvbdUaCQrprZ
-DnbjjvbdOFEThhjd
-EObjjvbdlYsRrxgU
-EPCkKvbdnGeYNOGy
-DoDKjvbdwygefYEr
-DoCjjvbdGckViajK
-DoDKjvbdSZjITDWA
-EObjjvbdkWXNdCXw
-EPCkKvbdKjaIWAJy
-EObkKvbdKkBIWAKZ
-DoDLKvbdptTfqrLU
-DoDKjvbdPxmAGsRj
-EObkKvbdTvMPitBR
-EPCkKvbdegjvSOQg
-DoDKjvbdwNWANEEm
-EOcLKvbdRNXbYmtz
-DoDKjvbdEOcKjwDE
-EPDLKvbdfMfXHMik
-DoCkKvbdWHwvXfxz
-EPCjjvbdelfWgNKL
-EPCjjvbdqcdiQOVa
-DncKjvbdkyTSTZGt
-DoCkKvbdbAueFpPw
-EOcKjvbdQwNdClHc
-DnbjjvbdxmsIYSiD
-EPDKjvbdCTAbtFwS
-DncLKvbdJpzFOeme
-EOcKjvbdiZuGLqOG
-DncKjvbdKaLHMaxR
-EPDLKvbdbiMjLFvx
-EPCkKvbdjvXODaxX
-EOcLKvbdOAJSsirA
-EPDKjvbdqYnhHQdY
-DoCkKvbdDwwlTtUM
-DnbkKvbdRjxfVHKs
-EObjjvbdzjUpPcrt
-EOcLKvbdeUAUATNW
-EObkKvbdQlwaxmtz
-EObkKvbdEXxLtUUM
-EObkKvbdYkrETmkm
-DoCkKvbdxmsHwsIc
-DoDKjvbdzjUoocrt
-EPDKjvbdqGEFTuaI
-EPCjjvbdbiMjLGXY
-EPDKjvbdfpBzwEXh
-DncKjvbdZeYGzhJC
-DoCjjvbdFkEsCglu
-DncKjvbdOFDshhjd
-DncKjvbdZMRcsnMN
-EPCkKvbdrEFJPnVa
-DoCkKvbdcyyPxYpb
-EPDLKvbdijGIKMwr
-DoCjjvbdbAudepQX
-DncLKvbdFejSOItR
-EOcKjvbdSLZGVHLT
-EPDKjvbdMJBkpxAS
-DncKjvbdJXsaglQp
-DnbkKvbdjcMLRHVH
-DoCkKvbdFjeTCgmV
-DnbjjvbdqUTfrRkU
-DnbjjvbdznoqFCkx
-EObkKvbdVqnYBeLc
-DoDLKvbdaMjbTVMg
-DoCkKvbdSQUHKFdX
-DoCjjvbdrDdhomua
-DncLKvbdcTCjsdJa
-DoCkKvbdsCFlkgKy
-EPCkKvbdmbKWwnmu
-DoCjjvbdZQmFImEq
-EPCkKvbdyXiKCPzL
-EOcLKvbdKQzEnenF
-EPCjjvbdrbGNMGjy
-EPDKjvbdgGMZnHHA
-EOcLKvbdfHjuqnRH
-EOcLKvbdFeirNiUR
-DoCjjvbduaEZSoFI
-DncKjvbdbAudfPow
-DoCkKvbdbiMikFwY
-DoDLKvbdcyxpYYqC
-DnbjjvbdpxoHfpdY
-DncKjvbdqUTgRqjt
-DoDKjvbdcImKKfWx
-DnbjjvbdmfeYNNfy
-EPCjjvbdIjEAJofd
-EObjjvbdLBKgNCXq
-EObjjvbduLxWaUAw
-DnbjjvbdJTZBTNXl
-DoCkKvbduaDyTOeI
-EOcLKvbdUyIUZkPO
-EOcLKvbddePRawCj
-EPDKjvbdhbObeWqR
-EOcKjvbdBdQAvJmG
-EOcKjvbdkVwODaww
-DnbkKvbdUVkoisaR
-DnbkKvbdMoxQvNfs
-EObjjvbdCJKbLIfK
-DncKjvbdYpmFJNEq
-DoCjjvbdjKFhKMxS
-DnbjjvbdZLrEUNlN
-EPDKjvbdwuNFRZMO
-EObjjvbdjuvnECXw
-EPCkKvbdlZTSTZGt
-DoCjjvbdsQVoJcWG
-DncLKvbdmJETqVSB
-DnbjjvbdjggLfGOL
-EObjjvbdxwiKBpZk
-DoDLKvbdKDKCpjDY
-EPCjjvbdzRPNIjXA
-DoCkKvbdkaMoNALA
-EPCkKvbdjvWnDaww
-EPCkKvbdSBcdkiZL
-DnbkKvbdbUbHXkUI
-EOcKjvbdURROtuHm
-DncLKvbdJmAEZgVB
-DoDLKvbdDxYLsssl
-DncKjvbdWRnXadlD
-EPCjjvbdADSXiyhp
-DnbkKvbdNGcPlouL
-DnbjjvbdBsAcTevr
-EObjjvbdWWhwvDeH
-EOcLKvbdbUafxKsh
-DoCkKvbdtcCuXWOo
-EOcKjvbdbKkennDA
-EPDLKvbdGcjujBjK
-DoDKjvbdRWmdDMHc
-EPCkKvbdmSZUyrdJ
-DoCkKvbdLZRKSztf
-DncKjvbdZQmFJNFR
-EPDLKvbdjhGkefNk
-DncKjvbdeATpmYJf
-EPCkKvbdDjHivXjA
-EObjjvbdFyVVBEXb
-DncKjvbdIHHZxxXg
-DnbjjvbdMoxQvNfs
-EObjjvbdlYsRsZGt
-EOcLKvbdZHWdAPTJ
-DoCkKvbdoznDjwoA
-EOcLKvbdYpmEiNEq
-EOcLKvbdfMfWgNJk
-DnbjjvbdjlalZeGo
-EPDLKvbdVgxVxGxz
-DoDKjvbdZRMdiMeR
-DnbkKvbdNsUVgFUp
-EObjjvbdNGcPmPuL
-EPDLKvbdrSUjnKaN
-DncKjvbdMgDPmQUk
-DoDLKvbdRkZGUfkT
-EOcLKvbdpxoIGqDx
-DoCkKvbdVwIxVcdg
-DoDKjvbdZQmFIleR
-EPDKjvbdZshiZDrn
-EPCkKvbdFWZPpNJe
-DnbkKvbdcImKKfXY
-DoCkKvbdiVZeWqtb
-EPCkKvbdkxsSSyHU
-EObkKvbdcSbkTdKB
-EOcKjvbdFxttaEYC
-EPCkKvbdhtzEwSVC
-EOcKjvbdLAjgNBwq
-DoCkKvbdZisHofbG
-DoDLKvbdIsYaTNYM
-EPDLKvbdADRxJzIp
-DoDKjvbdTkuoAvOi
-EOcLKvbdZRMeJMdq
-EPDLKvbdWWiXvDdg
-DnbjjvbdbsDKscjB
-DnbkKvbdtlXwBUBX
-EPCjjvbdmgFXlmgZ
-EObkKvbdjmBlZeGo
-EObkKvbdmgEwmOGy
-DoCjjvbdtlXwBTaX
-EPDKjvbdSiZiqABM
-EPDLKvbdEXxMTssl
-EPCkKvbdRWmccLhD
-DncLKvbdrWpMDJZR
-EPDLKvbdelfXGlik
-EOcLKvbdFjdsChNV
-EPCkKvbdVUMtFkuj
-DoDLKvbdtkxXBUBX
-DncLKvbdMgDQNPtk
-DnbkKvbdMJCMQxAS
-EOcLKvbduWOYJpsA
-EPCjjvbdZxcimcMS
-DoDKjvbdqrUjmkAm
-EObjjvbdRzJgsCvA
-EOcLKvbdiBoDFXRR
-EPCjjvbdSPtHKFcw
-DncKjvbdbBVeGPpX
-DnbjjvbdRotGiedX
-DoDKjvbdIHGzZYXg
-DnbjjvbdiGjCyViu
-EPCjjvbdSxKkmzjx
-EPCjjvbdmajWwoOV
-DnbjjvbdmbKWxPNu
-EObkKvbdCTBCsfXS
-DoCjjvbdKQzEnfOF
-EPCkKvbddijRutzn
-EObkKvbdFjeTCgmV
-DnbjjvbdURQnuUhN
-DnbkKvbdiCOcFXRR
-EObkKvbdJutfEEfi
-DncLKvbdhtydwRuC
-DoCjjvbdcTCjsdJa
-DnbjjvbdzoPqEcMY
-DoDLKvbdSCDdlJZL
-EOcKjvbdlhctQuSB
-EPDKjvbdOFETiJKd
-EObkKvbddZyQYZQb
-EOcLKvbdrMyjYlHi
-DoDLKvbdqrVLOLBN
-DncKjvbdyNsHwriD
-EObkKvbdQvnECkgc
-DnbkKvbdznopeClY
-DoCkKvbdCJLBjiGK
-EOcLKvbdauCGxKtI
-EPCjjvbdeFOrCWcK
-DncLKvbdcSbjtDia
-DnbkKvbdKWVGDdgJ
-EPDKjvbdrDdiQNua
-DncLKvbdqTtGqrKt
-DoDKjvbdjJfIKMwr
-DoCkKvbdkxsSTZHU
-EObkKvbdFejSNhtR
-DoDKjvbdnCKWxOmu
-DoDLKvbdvBDySneI
-DncKjvbddZxpXyRC
-EPDKjvbddwzTsqez
-DoDLKvbdLFfIBaQu
-DncLKvbdwzHeewdr
-DncLKvbdOFEUJJKd
-DoDLKvbdEvZQQMie
-EPDLKvbdWHxVwgYz
-DoCjjvbdiGjCxujV
-EPDKjvbdrovPJcWG
-DoDLKvbdZxcjOCkr
-DnbjjvbdRzJgsDWA
-DoDLKvbdiZuGLpnG
-DncLKvbdTukoitBR
-DnbkKvbdnBiwXnnV
-DoDKjvbdBvzdIdov
-EObkKvbdRWnECkhD
-DoCkKvbdRbDeMJZL
-DncKjvbdiGjDYujV
-EPCkKvbdNdctIiLE
-EPCjjvbdKWUfDdfi
-EOcKjvbdkIGlGGNk
-EPDKjvbdGZVVBDxC
-EObkKvbdXsMBNUOx
-EObjjvbdANHxrvyx
-EPDKjvbdZtIhyDrn
-DoCkKvbdRWmdCkgc
-EObkKvbdffLynGgA
-DoDKjvbdIxTahMQp
-DncKjvbdKQzFPGOF
-DoDKjvbduDCtwWOo
-EOcKjvbdnCJvxOmu
-DoCjjvbdEJgivXjA
-DncKjvbdemGWgMjL
-DncKjvbdCDpBVjMf
-DncLKvbdmoyxukZC
-EOcLKvbdtkwwBTaX
-DoCkKvbdLqwMzUpz
-DncLKvbdqFdFUWBI
-EPDLKvbdZyEJmblS
-EOcKjvbdEzsqFMCi
-DoCkKvbdcarmSATm
-DncLKvbdFfJqmiTq
-DncLKvbdKQzEoGNe
-DoCjjvbdUaCRTRSZ
-EOcLKvbdqZOhGqEY
-DoCkKvbdZisIQGaf
-DoCkKvbdeFOrBwCj
-DoDLKvbdmIctQtqa
-EObkKvbdxVMdqYkn
-DncKjvbdwygfFxFS
-DoCkKvbdRWnEDLhD
-EOcKjvbdmRyUyrci
-DoCkKvbdWXIwvDeH
-EPDLKvbdRXODcLgc
-DoDLKvbdBsBDUGWr
-EOcKjvbdEvYopNJe
-DoCjjvbdBvzdIdov
-DoCkKvbdyzeNrIJI
-EObkKvbdCJKbKhej
-EObjjvbdQccBQQcr
-DnbkKvbdxZgeewdr
-DoDKjvbdqcdhpNua
-DoCjjvbdeJjSVtzn
-DncKjvbddneTKssr
-DnbjjvbdZxcjNbkr
-EPCjjvbdZisIPfaf
-EPCkKvbdkyTRrxft
-DncKjvbdVwIxVcdg
-DncLKvbdIxTagkpp
-EPCjjvbdbrbjtEJa
-DncKjvbdkCkjqHUg
-DoCkKvbdUxgsyjnn
-EObjjvbdUaCRSprZ
-DnbjjvbdMJCLpxAS
-DncLKvbdliEUQuRa
-EPCkKvbdANHxrvzY
-EPCjjvbdeAURMwjG
-EPDKjvbdZoOIeEzK
-DoDKjvbdmuVZkJqf
-DncLKvbdaNLCTUlg
-DoCkKvbdnQZxvLYb
-DncLKvbdhficZWJu
-DncKjvbdatbHYLUI
-DoCjjvbddndrjtUS
-EOcLKvbdsBfMkgKy
-DnbjjvbdBiKakIfK
-DnbjjvbdSQTfjFcw
-DoCjjvbdmoyxvKyC
-DoCkKvbdGcjuibKK
-DnbkKvbdZQldiMeR
-EObkKvbdqquKnKaN
-DoCjjvbdZRNEhldq
-EPCjjvbdBiKbLJFj
-EPCjjvbdyXhjCPyk
-DncLKvbdtTSSxzEc
-EPCjjvbdnCJwXnmu
-DoDLKvbdbBWEfQPw
-EOcLKvbdemGXHNKL
-DoDLKvbdmfdxMnGy
-EOcLKvbdTqQntthN
-EOcLKvbdrMyixlIJ
-EOcLKvbdVUMselWK
-EOcLKvbdBvzchePv
-DoCjjvbdbVCHXjsh
-EPCjjvbdZRMdhleR
-EOcLKvbdhbObeXRR
-EPCkKvbdFWZPpMie
-DncLKvbdXFyZtAOs
-DnbkKvbdTqQoUuHm
-EPCjjvbdCSaDUFvr
-DoDKjvbdQZNAHTSK
-EOcLKvbdmoyyVkZC
-DoCkKvbdGLErbhMu
-EOcLKvbdtvNwjRTA
-EObkKvbdFjdsDINV
-EOcKjvbdeOdsLUUS
-DncKjvbdMtrrKmAX
-EObkKvbdBsBCtGWr
-EOcLKvbdVBCRTRSZ
-DoDKjvbdKQydoFme
-DncLKvbdnHFXmOGy
-DnbkKvbdGAnqYizm
-EOcLKvbdjlakzEfo
-EOcKjvbdegkWSOQg
-DoCjjvbdtkwwAsaX
-EPCkKvbdeKKSWUzn
-EObjjvbdrRtjnLBN
-EPCkKvbdeATqMxKG
-DnbkKvbdZMRdTmlN
-DoDKjvbdNsUWGeVQ
-EObjjvbdyXiKBpZk
-EOcLKvbdJKEAJpHE
-DoDKjvbdzQoNJJwA
-DoCkKvbdwygeewdr
-EObkKvbdsCGNMHKy
-EOcLKvbdlhdUQuRa
-EObjjvbdyNsHwsIc
-DoDLKvbdWRnXbFLc
-EObjjvbduCcUvvPP
-EOcLKvbdrEEhonWB
-EPCjjvbdRjyFtgKs
-EPCjjvbdkNCLzFGo
-DoCkKvbdRDbaPpcr
-DoDKjvbdQdCaQQdS
-DncKjvbdwyhFexFS
-EPDLKvbdBhjakJGK
-EPDKjvbdaNKaruMg
-EObkKvbdzQnliJwA
-DnbjjvbdptTfrSLU
-DoDKjvbdFWZPpNJe
-EObkKvbdZxcjOCkr
-DoDKjvbdehLWRnQg
-EOcLKvbdcSbkUEKB
-EObjjvbdbUafxLTh
-EObkKvbdBcpAvKNG
-DoDLKvbdySmiNSBg
-DncLKvbdmIdUQuRa
-EPCkKvbduDDUvuoP
-DoDLKvbdMtrqjmAX
-DoDLKvbdVZHtZkOn
-EOcLKvbdiZuGLpnG
-EOcKjvbdxmrgxShc
-DoCjjvbdMpYQvNfs
-EOcKjvbdCIkCKiFj
-EPDLKvbdaaVdepPw
-EObkKvbdXFyZtAOs
-EPDLKvbdbKlFnnDA
-DncLKvbdqGEFTuaI
-EOcKjvbdqFcdsvAh
-EPCkKvbdcSbkUDjB
-DncKjvbdrJAJeMoF
-EObjjvbdZMRdUNkm
-DncKjvbdCEPaVjNG
-DnbjjvbdptUHSSLU
-EPCkKvbdUtNTekuj
-DoCkKvbdVqmwadlD
-EObjjvbdCIkBjiFj
-EOcLKvbdbVCGwkUI
-EObjjvbdFfKSNiTq
-EPDKjvbdJXtCHlRQ
-EPDKjvbdTvMQJtBR
-EPCjjvbdZMRdTnLm
-EPCjjvbdemGXGljL
-EPDKjvbdxmsHxTJD
-EOcKjvbdiVZdvrVC
-DnbkKvbdmSZUzSdJ
-EPCkKvbdUaCRTRSZ
-DncLKvbdoAKztIDn
-EObjjvbdHffyyXxH
-EPCkKvbdaMjbStmH
-EObjjvbdZyDinDMS
-DoDKjvbdjlbMZdgP
-DncKjvbdQwOEDMHc
-DncLKvbdGLFSbgmV
-EPCkKvbdjvXOECXw
-DoCkKvbdSBceLhyL
-DoDLKvbdEvYpPmKF
-EOcKjvbdrbFlkfkZ
-EPDKjvbdTvMQJsaR
-DncLKvbdjvXNcaxX
-DnbkKvbdijGIKNXr
-EOcLKvbdiHJcZViu
-DoCjjvbdlqxuZsDi
-DnbkKvbdhuZeXRtb
-DncLKvbdACqxJzJQ
-EObjjvbdjlbLydgP
-EPDKjvbdxZgefXdr
-EOcKjvbdSCEFLiYk
-EObjjvbdKefICApu
-EPDKjvbdjlbLyeGo
-DncLKvbdbAvEepQX
-EPCkKvbdrSVKnLAm
-DncLKvbdZjTHpHBf
-DnbkKvbdCWzdIdov
-DoDLKvbdxUmFQyLn
-DnbkKvbdxVNFRYkn
-DoCkKvbdZisHpHCG
-DoDKjvbdwkXEHzzG
-DoCjjvbdSPtHJedX
-EOcLKvbdBiLBkIej
-DoCkKvbdiLdcnVCy
-DnbkKvbdlhcsqUqa
-EPCjjvbdwzIGFxEr
-EPCkKvbdySmiNRag
-DncLKvbdHEKujCKK
-EPDLKvbddeOrCXDK
-DoDLKvbdNGbolpUk
-EOcLKvbdtlYXBTaX
-EOcLKvbdqwQLcIyR
-EObjjvbdIrxaSlxM
-EObjjvbdbrcKtEKB
-EOcKjvbdpxngfqDx
-DoDLKvbdKfFhCApu
-DoDLKvbdJvUfEEfi
-DncKjvbdsQWOibuf
-DoCjjvbdHgGyxxXg
-DoCkKvbdZHWdAPTJ
-DncKjvbdauBgYLTh
-DoDLKvbdJYUCIMRQ
-DncKjvbdbrbjtEJa
-DnbjjvbdemFwHNJk
-DnbkKvbdBvzcheQW
-EPCkKvbdJqZePGNe
-EPCkKvbdSKxeuGkT
-EPDLKvbdIryBTMxM
-EPCjjvbdwWlAuaVu
-EOcLKvbdyTOJNRbH
-EPCjjvbdQvmdClID
-DnbjjvbdyTOJMqag
-DncKjvbdrXQMDJYq
-EPCkKvbdGdLVjBij
-EOcLKvbdjJehJmXr
-DnbkKvbdCJKakJGK
-DoCjjvbdLrWlzUpz
-EPCkKvbdhzVFlRNf
-DoCjjvbdRDcApRES
-EObkKvbdzROmJKXA
-DncKjvbdxUmFRYlO
-EPCkKvbdURQoVVIN
-EPDLKvbdVZHtZkPO
-DnbkKvbdatafwjsh
-EObjjvbdNrtWGdtp
-DoDLKvbdBiLCLJFj
-EOcKjvbdmgFXmOHZ
-EObjjvbdZRMeImEq
-DoCjjvbdiMEdNtcZ
-DnbjjvbdgFkzNfgA
-DnbjjvbdGKdsDHmV
-DncLKvbdIxUBhMRQ
-DoDLKvbdjSzhrjiz
-DoDLKvbdpyPHgRDx
-DoDLKvbdqYoIGpdY
-DoCkKvbdUQqPUuHm
-EPCkKvbdBraDTfXS
-DncKjvbdNrtWGeUp
-DncKjvbdJqZdnenF
-EPCjjvbdCWzdIePv
-DoDKjvbdrXPlDIxq
-EPDKjvbdauBgYLUI
-EPCjjvbdQmXbYnUz
-DoCjjvbdGGJqnJUR
-EPDLKvbdkVvnEBww
-EPCjjvbdTukoitBR
-DoCjjvbdRkZFtgLT
-DoDKjvbdEuyPpMie
-EPCkKvbdSLYfUgLT
-DnbjjvbdIwtBglQp
-DnbkKvbdznpQeDMY
-EOcKjvbdznpRFCkx
-EPDLKvbdtumwjQsA
-DoDLKvbdBhjajiGK
-DoDKjvbdhlFDmuDZ
-DnbkKvbdqquKnKaN
-DncLKvbdMowqVmfs
-EOcKjvbdqrUjnLAm
-EObjjvbdqwQMDIyR
-EPDKjvbdnCKXYPOV
-DnbkKvbdHffyyXxH
-DoCjjvbdlZSrTZGt
-DoDLKvbdznpRFDMY
-EPDKjvbdWWiXvDdg
-DoDKjvbdRWnEClID
-DnbjjvbdJcKCqKDY
-EPDKjvbdJbjDQicY
-DncLKvbdhaoDEwRR
-DncLKvbdvAdZSoEh
-DncLKvbdeEnrCWbj
-DoDKjvbdVvhwvDeH
-EOcKjvbdVAapsQqy
-EPCkKvbdxnTIYSiD
-EPCkKvbdrouoJbuf
-EObjjvbdePEsKtUS
-EPDLKvbdirziSkJz
-DnbjjvbdhaoCdvqR
-EPCkKvbdGZVVAdYC
-DncKjvbdtbbuWuoP
-DoCkKvbdLFehCBRV
-DoDKjvbdLZRJrztf
-EObkKvbdkHflGFmk
-EOcKjvbdJYUCIMQp
-EPDLKvbduCcVXWOo
-EPCkKvbdptTfqqkU
-DoDKjvbdGQATWgGZ
-DncKjvbdEztQeMCi
-EObkKvbdZtJJZETO
-DoCjjvbdZsiIyETO
-EObkKvbddndrjstS
-EOcLKvbddeOqbXDK
-DnbkKvbdCTBDUGXS
-EPDKjvbdQlwayOUz
-EPCjjvbdlqyUzTEJ
-DoDLKvbdhtydvrUb
-EOcKjvbdlZTSSyGt
-EOcKjvbdmJDtQuSB
-DnbjjvbdtSqsZZeD
-DoDLKvbdUaBpsRSZ
-EPDKjvbdLGFhBaRV
-DnbkKvbdSBcdkhxk
-DoCjjvbdDoDKkXDE
-DoDKjvbdwyhFfYFS
-EPDKjvbdOEctJIjd
-EPCjjvbdEObjkWcE
-EPDLKvbdhtzEvquC
-EObkKvbdZjShQHCG
-EPCjjvbdmIctQuRa
-EPCkKvbdVwIwucdg
-EOcLKvbdADRxJzJQ
-EOcLKvbdWWiXvEEg
-EPCjjvbdTAFIhBoE
-EPDLKvbdZLqdTnMN
-EPDLKvbdZQldhmEq
-EOcKjvbdLLBIWAJy
-DncLKvbdrMzKYlIJ
-EPCjjvbdzitoodSt
-EPDLKvbdLFehCAqV
-DoCkKvbdrMyiyMHi
-EPDKjvbdkVvmcaxX
-EOcKjvbdmpZxvKxb
-EPCkKvbdliDtRUrB
-DncLKvbdkxsRsYft
-EPDKjvbdTqROuVHm
-EPCjjvbdSQTgJedX
-EPDLKvbdHlBznXRL
-DncKjvbdQdDBQRDr
-EPDLKvbdliDsqVRa
-DoDKjvbdjgflFfOL
-EPDKjvbdeEoSCWbj
-DnbkKvbdfSBWzkcP
-EObkKvbdmIcspuSB
-EPCjjvbdvAdZTPEh
-DoCkKvbdIGfyxwxH
-DnbjjvbdWWiYWDeH
-EObkKvbdZQleImFR
-DncLKvbdQwNdCkgc
-EOcLKvbdQdDBPqES
-DnbjjvbdrpWPJbuf
-DoCkKvbdTulQKTaR
-DoDLKvbdeUAUASlv
-EPCjjvbdZQmFJNEq
-DncLKvbdVBBqSqSZ
-EOcKjvbdqceJPmvB
-DncLKvbdZtIiYcrn
-EOcLKvbdJSxaSmYM
-DoCkKvbdqqtkOLBN
-EObkKvbdgFkymfgA
-DnbjjvbdVqmwadlD
-DncLKvbdsBfNMGkZ
-EPDKjvbdEPDKjwCd
-EObjjvbdHDjvKBjK
-DncLKvbdCTAbsevr
-EObkKvbdFxuUaEXb
-DoCjjvbdcyyQYZQb
-EObjjvbdZsiIxdSn
-EPDLKvbdZQmEhmEq
-DnbkKvbdxnTIXriD
-DncKjvbdfHkVrORH
-EOcKjvbdddoSCXDK
-EPCkKvbdhanbdvpq
-EOcKjvbdRyihTDWA
-DnbjjvbdajkeoODA
-EOcLKvbdlhdTpuSB
-EPDLKvbdhgJbxuiu
-EPCjjvbdnHFXmNgZ
-EPCkKvbdpecdsvAh
-DnbkKvbdVZIUZjnn
-DncKjvbdbAvFGPpX
-DnbjjvbdkMalZeHP
-EOcLKvbdYSlAmUOx
-DoCjjvbdHDkWKCKK
-EPDLKvbdaRecHsek
-EPCjjvbdJXsagkqQ
-EObjjvbdRMwbZNtz
-EPCkKvbdrbGMlHKy
-DncLKvbdKfGICApu
-EPDLKvbdUtNTfLvK
-EPCkKvbdMJCMRYAS
-EOcLKvbdCJKbLJFj
-DoDKjvbdfpBzvcxI
-EObkKvbdYpldhmFR
-EOcLKvbdSPsfiecw
-DoCjjvbdHEKvKCKK
-DnbjjvbdUGzmkwVe
-DnbjjvbdfMfXGmJk
-DnbkKvbdZoOIeEyj
-EObkKvbdZnmhdeZj
-EOcKjvbdTkuoBVoJ
-EPCjjvbdGKdsChMu
-DoDLKvbdJYTahLpp
-EPCjjvbdbhmJkFwY
-DoDLKvbdkIHMGGOL
-EPDKjvbdZsiIxdSn
-EPCjjvbdMgCpNQUk
-DncLKvbdjblKqGtg
-DncLKvbdOYOuzdNt
-DncKjvbdTvMPjTaR
-EPDLKvbdiiehKNXr
-DoCjjvbdZdxGzghb
-DoDLKvbdeOdsKssr
-DoDLKvbddBsMrAUN
-DoCkKvbdxxIjBozL
-DoDKjvbddoErkUTr
-EOcLKvbdwzIFeweS
-DoDLKvbdREDBQRES
-EObkKvbdhlEdOUby
-DoCjjvbdNPxRWNgT
-DoDLKvbdZLqctNlN
-EObjjvbdbUbHXkUI
-DnbkKvbdhtydwSVC
-EPDKjvbdeUAUASmW
-EObjjvbdhgKDYvJu
-EOcLKvbdZnmhddyj
-DoDLKvbdUVlQKUAq
-DoDKjvbdDihJvXjA
-DnbkKvbdZLrETmlN
-EPCjjvbdxxJJbQZk
-EPCkKvbdrounjDVf
-DoCjjvbddiirVtzn
-DoDLKvbdmttyjiqf
-DncKjvbdfHjvSNpg
-DoCjjvbdmRxuZsEJ
-DoCkKvbdjAQGaQGj
-DncLKvbdnVUzLJrG
-EPCjjvbdLAjgNCXq
-DoDLKvbdqmZixlHi
-EPDLKvbdVUMsekvK
-EPDKjvbdrMzKZMIJ
-EPCkKvbdKDKCpicY
-EOcLKvbdwtmEqZMO
-EPDLKvbdmgFXlnGy
-DncKjvbdyTNhlqbH
-DncKjvbdnHFXlnHZ
-DoDLKvbdTqROuUgm
-DoDKjvbdRMwbZOUz
-EPDKjvbdRMwbYmtz
-DoDKjvbdZnmheEyj
-EPCkKvbdbBWEfPow
-DoDKjvbdQwNccLgc
-DoCjjvbdhtzFWqtb
-DoDKjvbdRotHKGEX
-DncKjvbdZsiJZETO
-EObjjvbdaNKbStlg
-DoCkKvbdsZlQTAhO
-EObjjvbdjhGlGGNk
-EObkKvbdQdDBQQcr
-DoDKjvbdMtrrLNAX
-EPCjjvbdRotHKGDw
-EPCjjvbdqZPIGqDx
-EOcLKvbdiGicZViu
-DnbjjvbdJvVGEFGi
-DoCkKvbdKNAEZfuB
-EPDLKvbdLZRJrzuG
-DnbkKvbdhytfLpnG
-EPDKjvbdRbEEkiYk
-EOcLKvbdcJMjLFvx
-DncKjvbdFfKRnItR
-DoDLKvbdegjurORH
-DnbjjvbdEPDKjvcE
-EPCjjvbdkHgLeenL
-DncLKvbdZnmheEzK
-DncKjvbdZjSgpHCG
-DoCkKvbdbBVdeoow
-DoDLKvbdZQmEhleR
-EPDLKvbdpxoHfpcx
-EPCkKvbdSPtGjGEX
-DncKjvbdRbDeLhxk
-EObkKvbdrpWOibvG
-DnbjjvbdfIKurNpg
-EPDLKvbdZyEKNbkr
-DoDLKvbdwXMAvBWV
-EOcLKvbdWWiXvDdg
-EOcKjvbdelfWfljL
-DncLKvbdjuvnEBxX
-DncLKvbdliDspuRa
-EObjjvbdVTlsekuj
-DoCjjvbderAvzlDP
-EPDKjvbdNeDtIhkE
-Dnbjjvbddwyssqez
-EObkKvbdGGKRnItR
-DoCkKvbdHbLzEzAD
-EPCkKvbdTvMPjUBR
-EObjjvbdTAEiIBoE
-DoCjjvbdRjxfUgLT
-DnbkKvbdnUuZkKRf
-EPDLKvbdjmBkydgP
-EObkKvbdNeDsiIjd
-DncKjvbdrounjDWG
-DnbjjvbdrWokbhxq
-DoDLKvbdsPvPKDWG
-DncKjvbdZdwfzgiC
-EOcLKvbdZLqdUNlN
-DoCjjvbdkDMLRHVH
-EPDKjvbdirziSjiz
-EObkKvbduDDUvuno
-DoDLKvbdkHgMGGOL
-DncLKvbdhkdcmuCy
-EObkKvbdCJLCLIej
-DnbkKvbdeFPRawCj
-DncKjvbdsQVoKDVf
-EPDLKvbdRXNccLhD
-EObkKvbdFxttaDxC
-EObkKvbdqrVKnKaN
-EPCjjvbddoEsKtUS
-EObjjvbdzaAOffbM
-DoCjjvbdWSNxBdlD
-EPCjjvbdqlzKYlIJ
-EOcLKvbdQdDApRDr
-DncKjvbdczZPwyRC
-EOcLKvbdtlXwBUBX
-EOcKjvbdmgFYNOGy
-DoCjjvbdKVtfEFGi
-EObkKvbdrNZjZLgi
-EOcKjvbdliETqVSB
-EOcKjvbdbVBgXkUI
-DncLKvbdNHDPmPtk
-DnbjjvbdjlakzEfo
-EOcKjvbdVUNTfLvK
-EPDKjvbdTXjkmzjx
-DncLKvbdrylQTBIO
-EPCkKvbdJpzEoGOF
-DncKjvbdFeiqmhtR
-DncLKvbdZnnJFFZj
-EPDLKvbdlrZUzTEJ
-EPDKjvbdLFfICBRV
-EPCjjvbdcyxpXyRC
-DoDLKvbdQdCaQQcr
-DncLKvbdZsiJZDsO
-EObjjvbdzQoNIjXA
-DncLKvbdVqmxBdlD
-DoDKjvbdRjxfUgLT
-EObjjvbdWIYVxHYz
-DoCkKvbdIGfzZXxH
-DncKjvbdxsNhlqag
-DoDKjvbdFWYopNJe
-EPDKjvbdVBCRTRSZ
-EPDKjvbdwyhFfXeS
-DoCjjvbdziuPocsU
-EPDKjvbdYSkaNUPY
-EObjjvbdznopdcLx
-EOcLKvbduMYWaUBX
-EPDKjvbdnPzZWKyC
-EObkKvbdZxcimbkr
-EObkKvbdBhjbKiFj
-EOcLKvbdjuwNdBww
-EPDKjvbdmbKWxOnV
-DoCkKvbdnHFYNNgZ
-DoDLKvbdrMzKYkhJ
-EOcLKvbdqdFIpNvB
-EPDKjvbdcScKtDjB
-EOcLKvbdygZMAMdw
-EOcLKvbdsCGNLgLZ
-DoDLKvbdaMkBsUlg
-DncKjvbdlZSqsYft
-DnbkKvbdnVUzLKRf
-DoCkKvbdnHFXlmgZ
-EPDKjvbdxZgfGYFS
-DoCkKvbdxwiKCPzL
-DnbkKvbdBcpAvKMf
-DoCjjvbddZyQXxpb
-DncLKvbdzQnmIjXA
-EPDKjvbdFWZQQMjF
-DnbjjvbdMgDQMpUk
-DncLKvbdOFDtIiKd
-DoDKjvbdKNAEZfta
-EOcKjvbdhyuGMQmf
-DnbjjvbdZnmhdeZj
-DncLKvbdhbOcFXRR
-EOcLKvbdvBEZSoEh
-EOcKjvbdYkrEUOLm
-EPCkKvbdNrtWGduQ
-EPDKjvbdZjSgpHCG
-EObkKvbdyzdmrHhh
-DoDLKvbdznpQdblY
-DncLKvbdZshhyDrn
-DnbkKvbdjvWmdCYX
-EOcLKvbdAMgxsWzY
-DnbjjvbdwzIGGXdr
-EPDKjvbdrNZixlIJ
-DoDKjvbdsQWOicVf
-DoDKjvbdjuvmdBxX
-EObkKvbdzHZMANFX
-DoDLKvbddjJqutzn
-EOcKjvbdwNWAMdFN
-DnbkKvbdTqRPUtgm
-EOcKjvbdVYgtZkOn
-EPDKjvbdNGcPlotk
-DnbjjvbdJbjDRJcY
-EPDLKvbdZtJIyESn
-DoDKjvbdtcCuXVoP
-DoCjjvbdZMSETmlN
-DoCjjvbdgGLzNfgA
-EPDKjvbdxKvcgzyf
-EObjjvbdrMzKZMIJ
-DncLKvbdMoxQumfs
-EPCjjvbdbhlikFvx
-DoDLKvbdRadFMJYk
-DnbjjvbdHgGzYxYH
-EObjjvbdVZHtZkOn
-DnbkKvbdakLfPNcA
-DoCjjvbdmfeXmOGy
-DoDLKvbdrRtjmjaN
-DnbjjvbdUxgsyjoO
-DnbjjvbdbhlikFvx
-EPDLKvbdRbEFMJYk
-EOcKjvbdRXNcblHc
-DnbkKvbdqmZixlHi
-DoCjjvbdrzLpTBIO
-DoCjjvbdILaznXRL
-EPDLKvbdRjyGVGkT
-EOcLKvbdehKurOQg
-DncLKvbdYkrDsnLm
-DoDKjvbdZisHpGaf
-DncLKvbdpyPIGpcx
-EOcLKvbdijFhKNYS
-EOcKjvbdMuSqkNAX
-EObjjvbdajlFnnDA
-EOcKjvbduLxXAsaX
-DnbjjvbdiiegjMwr
-EPCkKvbdiMEdNuCy
-EPCkKvbdqTtHSRkU
-EPCkKvbdIryBTNXl
-DncLKvbdFjdrcHlu
-EPDKjvbdZoOIeFZj
-DncLKvbdcbTNSATm
-DoDKjvbddePSCWcK
-DoDKjvbdZsiJYcsO
-DoDKjvbdpeceTuaI
-EOcKjvbdjhHMGFnL
-EOcLKvbdjcLkRGtg
-DnbjjvbdCJLCKiFj
-EPDLKvbdZsiIxdSn
-EObkKvbdVTlsekvK
-EObkKvbdCTAcTewS
-DoDLKvbdOYOuzcnU
-EPCkKvbdiUydwRuC
-DncLKvbdGQATXGey
-EPDLKvbdDjIJvXjA
-DncKjvbdpxoIHQdY
-EObkKvbdZMSDsmkm
-EOcLKvbdBvzchdov
-EOcLKvbdKRZeOenF
-DnbkKvbdwzIFfYEr
-DnbkKvbdSKyFuHKs
-EPDKjvbddCSlrATm
-EObkKvbdSCDeMIyL
-EPCjjvbdsCFllGjy
-DnbjjvbdHgGyyYYH
-DncKjvbdjKFgilwr
-DncLKvbdEvYoomJe
-EObkKvbdlhdTpuSB
-DoDKjvbdWWiYVceH
-DnbjjvbdLGGHbBQu
-EObkKvbdOXoVzcnU
-DnbjjvbdbsCjtDjB
-DnbjjvbdQwOECkhD
-DnbjjvbdMgComQVL
-DoCjjvbdRotGjFcw
-DnbjjvbdmajWxOmu
-EPCkKvbdbPfgDkzd
-Dnbjjvbdpxngfpcx
-DoCkKvbdBraCtGWr
-DncKjvbduDCtwWPP
-EPDLKvbdYzcFrKVy
-EObjjvbdbVBgXkTh
-DnbkKvbdyYIibPyk
-DncLKvbdUVlPitAq
-EObkKvbdbKlGOnDA
-DnbjjvbdrJAKFNPF
-EPDLKvbdLAjgMbYR
-DoCjjvbdSxLLmzjx
-DncKjvbdeEnqawCj
-EObkKvbdFWZQPmKF
-EOcKjvbdGdKvJbJj
-DnbkKvbdjcLjqHUg
-EPCjjvbdQvnDcLgc
-EPCkKvbddoFTLTtS
-DnbkKvbdZtIhyDrn
-EPDKjvbdBvzdIdpW
-EObjjvbdEYYLstUM
-EPCkKvbdyzdnSHiI
-EObjjvbdZLqdTmlN
-EPDLKvbdIHHZyXwg
-DoCkKvbdbVBfxKtI
-DnbkKvbdMpYRWOGs
-EOcKjvbdczYoxYqC
-EPCjjvbddwytTqez
-EPCjjvbduaDySoEh
-EObkKvbdTJZiqAAl
-EObjjvbdmoyyWLYb
-EPDKjvbdnPyxukZC
-EObjjvbdrWolDJZR
-DoCkKvbduCbtvvPP
-EPDLKvbdJbicQibx
-DncLKvbdHELVibJj
-DnbjjvbdKefHbAqV
-DncLKvbdsZkpTBHn
-DoDKjvbduCcVXWOo
-DnbkKvbdidkGtoAO
-DnbjjvbdrEFIonWB
-EPCkKvbdfpBzwEYI
-DncLKvbdwuNFRZMO
-EPDLKvbdrounjCvG
-DncLKvbdxxJJaoyk
-EPCjjvbdJmADzHUa
-EPDLKvbdqGEFTvBI
-EPDLKvbdyOShYTJD
-EPCjjvbdJutecdfi
-EPDLKvbdIMBznXQk
-DncKjvbdmoyxvKyC
-EPDLKvbdrXQMChyR
-DoCkKvbddwytUSFz
-DncKjvbdZjTHofbG
-EPDKjvbdGcjujCJj
-EPCkKvbdvBEYsOeI
-DncKjvbdCTAcUGWr
-EPCkKvbdmbKWwnnV
-DnbjjvbdpxnhHREY
-EObjjvbdlZTRsYft
-DoCjjvbdhkdcmtcZ
-EObjjvbdMfcPmPtk
-EPCkKvbdJXtCHkpp
-DnbjjvbdrSUjmkBN
-EOcLKvbdYSlBMtOx
-EObjjvbdznopdbkx
-DncLKvbdddoSCXDK
-DoCjjvbdOXnuzcnU
-EPCkKvbdZGwEAOsJ
-EOcKjvbdauCGwjtI
-EPDLKvbdNHDPmPuL
-EOcLKvbdNHCpMpUk
-DoCjjvbdmSYtysDi
-DncKjvbdFjeTDINV
-DncKjvbdNrtWHFUp
-EPCjjvbdmJETqUqa
-DncKjvbdEzsqEkcJ
-EOcLKvbdmoyyVjyC
-EOcLKvbdZMSETnMN
-EOcLKvbdBsAbtFvr
-EPCjjvbdJutfEFHJ
-DoCkKvbdiBoDEwRR
-EPDLKvbdZQmFImFR
-EPDLKvbdpfDdsuaI
-DnbkKvbdmbKXYPNu
-EObjjvbdjKGHjNXr
-EOcLKvbdpssgSRjt
-DoDLKvbdKRZePGOF
-DnbkKvbdfekymgHA
-DoDLKvbdiCOcFWqR
-DnbjjvbdiHJbyWKV
-DoDKjvbdsCGNMHKy
-DoCjjvbdGKeSbgmV
-DoDLKvbdkIGkfFnL
-DncKjvbdfILWRnRH
-DoDKjvbdGLEsChNV
-EPCjjvbdVrNxBeMD
-EPDKjvbdSLZGVHKs
-EPDLKvbdQlxByOUz
-EOcLKvbdMgDQNQVL
-DoDLKvbdrRtjnLAm
-EObjjvbdCIkBjhfK
-DncKjvbdDwwlTssl
-DoDLKvbdANIYsWzY
-DnbjjvbdxVMdqYkn
-DoCkKvbdzdynzdzQ
-DnbjjvbdxsNhmRag
-EObjjvbdzjVQPcrt
-DoCkKvbdbBWFFopX
-EPDKjvbdhfibxvKV
-DnbkKvbdegjvRmqH
-EPCjjvbdkNCMZdgP
-EOcLKvbdmtuZkJqf
-EObjjvbdemFvfljL
-DncLKvbdyYIibPyk
-EObjjvbdieKftoAO
-DncKjvbdvOszqKoU
-DncLKvbdVUNTelWK
-EOcKjvbdCDoaWKMf
-EPCkKvbdbsDKtDjB
-EPDLKvbdmSYuZsDi
-DncLKvbdwWlBWBWV
-EObjjvbdkVwOEBww
-EObkKvbdWSNwbFLc
-DnbjjvbdZRNFImEq
-DoDKjvbdrounjDVf
-EPDKjvbdCJKbKhej
-DncKjvbdsrrTYyeD
-DoCjjvbdQvnEDMHc
-DoCkKvbdGQASwGfZ
-EOcLKvbdfSBWzkbo
-DoDLKvbdRkZGVGkT
-EOcKjvbdyXhjCPzL
-EPCkKvbdbrbkTdJa
-EPDLKvbdsQVnibvG
-DnbjjvbdpyOgfpdY
-DoDLKvbdtunXiqTA
-EPDKjvbdqGDdsvAh
-DncKjvbdjEkHUoAO
-EPCjjvbdGQATXGfZ
-EOcKjvbdKDJcRKCx
-DncKjvbdhyuGMQnG
-DoCkKvbdYkrDsnMN
-DoCjjvbdaNKbSuMg
-EOcLKvbdrykpTAhO
-DnbkKvbdrSUkNkAm
-EPCjjvbdwzHeeweS
-DoDLKvbdSBdFMJYk
-DnbjjvbdqUUGrRjt
-DoDKjvbdzitoocrt
-EPDKjvbdxnShXriD
-DoCkKvbdVviXvEEg
-EObkKvbdFxuUaDxC
-EObkKvbdygZMAMeX
-DnbjjvbdiifHilxS
-EPDKjvbdZxcjODMS
-DoDLKvbdWWhxWEFH
-EPCjjvbdzoQQeClY
-EOcLKvbdptUHRqjt
-DoDKjvbdVviXudEg
-EPDLKvbdUQpnuVHm
-EPCjjvbdwzHfFweS
-EOcLKvbdZxcjNbkr
-EObkKvbdZnmhddyj
-DoDLKvbdvlvANDdm
-EOcKjvbdMfbolpVL
-EObjjvbdbAvFFpQX
-EOcKjvbdBdPaWJlf
-DncKjvbdqceIonWB
-DoCkKvbdtcDVWvOo
-DoCkKvbddoFTKssr
-DoDKjvbdaMkBruMg
-EPCjjvbdEuyPolie
-DnbkKvbdOEcsiJLE
-DncKjvbdHlBznWqL
-EPDKjvbdbhlijewY
-EObjjvbdfoazwDwh
-EOcLKvbdaNKbStlg
-DoCkKvbdqdEiQOWB
-DoCkKvbdTvLpKUBR
-DncKjvbdkNBkzFHP
-EObkKvbdFkErcHlu
-DoCkKvbdZshiYcrn
-EObjjvbdEJhJvYKA
-DnbkKvbdOTUWHFUp
-DoDLKvbdVhXvXfxz
-EPDLKvbdBdPaWKMf
-EObjjvbdFejRnJTq
-EPDLKvbdULvPBVoJ
-EPDKjvbdJzpFwdAN
-EPDKjvbdqwPkbiZR
-EPDLKvbdrEFIomua
-EOcLKvbdijFhJlxS
-DnbkKvbdYkrEUOLm
-DnbkKvbdIMBznXQk
-DncKjvbdZisHpHCG
-EPDLKvbdzjUopESt
-DnbjjvbdzjUpPcrt
-EPDKjvbdqZOgfpdY
-DoDKjvbduLxXAsaX
-EObkKvbdrMyiyMHi
-EPCkKvbdqTsfqrKt
-DoDKjvbdTfznMXVe
-EObkKvbddoErkUTr
-EOcLKvbdHELWKCJj
-DncLKvbdUVkpJtAq
-EPCjjvbdRMxBxmtz
-EPDKjvbdjEjftoAO
-EOcLKvbdYkrDsmkm
-DoDLKvbdajlFoNcA
-DoCjjvbdmJDtRUqa
-EPDKjvbdTqQoUuIN
-DnbkKvbdtcDUvvPP
-DncLKvbdrbGMlHLZ
-DnbkKvbdKfGHbApu
-DncLKvbdGFjRnIsq
-EPDLKvbdJzpGYEAN
-DoCjjvbdkySrSyHU
-EObjjvbdKVtfDdfi
-EPDKjvbdNrsugFUp
-DoCkKvbdNxOuzcmt
-DoDLKvbdDihJuxKA
-DnbkKvbdzdzOzdzQ
-DncKjvbdmSYuZrci
-EOcLKvbdptTfqqkU
-EPCkKvbdVUNTfLvK
-DoCkKvbdGdKujBjK
-DoCjjvbdzitopETU
-DoDKjvbdqvokbiYq
-EPDLKvbdGFjSOJTq
-DoDKjvbdliETqUrB
-DoDKjvbdZisIQGbG
-DoCjjvbdnQZyWLZC
-EOcLKvbdGdKujCJj
-EPCkKvbdaRfDIUGL
-EOcKjvbdauCHXjtI
-DnbkKvbdbQHHDkzd
-DoCjjvbddZxpYYpb
-EObkKvbdbBWEepPw
-DncKjvbdSLYfVGkT
-EObkKvbdVgxVxHYz
-DoCjjvbdfpBzwEYI
-DoDKjvbdmfdxMmfy
-DncKjvbdhancEwRR
-DnbkKvbdEASJMzXX
-EObjjvbdmfdwmNfy
-DnbjjvbdhbOcFXQq
-DoCjjvbdVgxVxGxz
-EPCkKvbdQcbaQQdS
-EPCjjvbdhbObeXRR
-EPDKjvbdePFSkUTr
-EPDLKvbdMoxQumgT
-DoCkKvbdIBkydzAD
-EOcLKvbdcasMrAUN
-DoCkKvbdUQqOttgm
-DnbkKvbdelevfljL
-EObjjvbdZeXfzgiC
-EPCjjvbdQYmAGrrK
-EObjjvbdxZhGFxFS
-EObjjvbdJuuGEEgJ
-DoDLKvbdEARhlyvw
-EPDKjvbdZdxGzhJC
-DoCkKvbdzRPMhiwA
-DoCkKvbdZxcinClS
-EOcKjvbdFyVVBEYC
-EOcLKvbdtbcUwVoP
-DncLKvbdlZSrTYft
-EObkKvbdaaVeGPow
-DncLKvbdEKIJvXjA
-DncLKvbdbhljKfWx
-EObkKvbdVhYVxGxz
-EPDKjvbdmpZxukZC
-DoDLKvbdnBivxOnV
-EObjjvbdRbEEkiZL
-EPCkKvbdZRNFIleR
-DoDLKvbdZyEJmblS
-DncKjvbdkIGkefNk
-EPDKjvbdRkZGVGjs
-DnbkKvbdiHJbyVjV
-EPDLKvbdFjeSbglu
-DncLKvbdqFcdtVaI
-EOcKjvbdGYuVAdYC
-DoCjjvbduaEZSneI
-DnbjjvbdKWVFdFHJ
-EObjjvbdGdLVjCJj
-DnbkKvbdpssgSSKt
-DoCjjvbdssRryZdc
-EPDKjvbdZisIQHCG
-EOcKjvbdCIjajhfK
-DoDKjvbdrafNMGjy
-EObkKvbdgQBzwEXh
-DnbjjvbdgQBzwDwh
-DncKjvbdCEQAvKMf
-EPCkKvbdiCOcFWpq
-EPDLKvbdLFfHbBQu
-EPCjjvbdJTYaSmXl
-EPCjjvbdRjyFuGkT
-DoCkKvbdjFKftoAO
-DncKjvbdmaiwXoNu
-DoCjjvbdVZITyjnn
-DoDLKvbdDxYLtUTl
-DnbjjvbdqvpLcJYq
-EOcLKvbdlqxuZsDi
-DoDKjvbdZshhyDsO
-DoCjjvbdGFjSOIsq
-DnbkKvbdcScKtEKB
-EPCjjvbdMpXqVmfs
-EPCjjvbduoTzpjoU
-DoDLKvbdYkqctNkm
-EObkKvbddoErjstS
-DnbjjvbduLxWaUAw
-DoCkKvbdRXODbkgc
-DoCjjvbdwzIGFweS
-DoCkKvbdZyEKOClS
-EObjjvbdiGjCxvJu
-EObkKvbdbiMijewY
-DoDKjvbdqrVKmkBN
-DoCkKvbdFyUuBEYC
-DoDLKvbdNsTufduQ
-DoDLKvbdEPCkKvcE
-DoDLKvbdNQYRWNgT
-DnbjjvbdNrtWGeUp
-DoCjjvbdPxmAGrqj
-EPDKjvbdKNAEZgVB
-EPDKjvbdmttzKjSG
-EPDKjvbdssSSxydc
-DoCjjvbdTlWPAuni
-EObjjvbdDHLegAzc
-EObjjvbdXnRAXtvU
-EObkKvbdKfFgaaQu
-EOcKjvbdhtzFXSUb
-EPCkKvbdJTZAsMwl
-EOcKjvbdQYmAGsSK
-DoCkKvbdjhHLeemk
-EOcLKvbdiifIJmYS
-EPDKjvbdLrWlzVQz
-DoCjjvbdxsOIlrBg
-EPDLKvbdNPxQvNfs
-DnbkKvbdIGfyxwxH
-DoCjjvbdjKFhKMwr
-DnbjjvbddjKSVtzn
-DoCjjvbdZoNiFEzK
-EPCjjvbdeFOqavcK
-DoDLKvbdEuxpQMie
-EObjjvbdZjShQHCG
-DoDLKvbdZMSDsmkm
-DoDLKvbdGYtuBEYC
-EPCjjvbdUaBprqRy
-EOcLKvbdmozZWLZC
-DncLKvbdUWLpKUBR
-EPCjjvbdqYnhHQcx
-DoDLKvbdUaBprpqy
-EPDKjvbdrzMQSaHn
-DnbjjvbdGdLWKCJj
-EObkKvbdfILVrNqH
-EPCjjvbdehKvRmqH
-EPDKjvbdOSsvGeVQ
-DncLKvbdxxJJaozL
-EPCjjvbdZLqctNkm
-EOcLKvbdZxcinCkr
-DncLKvbdkWWmcbXw
-DoDLKvbduCcVXWPP
-DncLKvbdyTNhlqbH
-DncKjvbdYTMAlsoY
-DoCkKvbdRosfjFcw
-EPDLKvbdDwxLsstM
-EOcKjvbdlZTRryHU
-DoCjjvbdNGbpMpVL
-EOcLKvbdYgWdAOri
-DoCjjvbdDxYLstTl
-EObjjvbdIwtBglRQ
-EOcKjvbdvPTzpkPU
-DoCjjvbduLxXAtBX
-DoCjjvbdiLeENuCy
-DnbjjvbdUaCRSqRy
-DnbjjvbdYpmEhleR
-EObjjvbdsPvOjDWG
-DoCkKvbdLFfICApu
-DncKjvbddxZstRez
-EPCkKvbdFyVVAdXb
-DoCjjvbdFyVVBDxC
-DoDLKvbdFeirNiTq
-EPCjjvbdxnSgxTIc
-EOcKjvbdAMgySwZx
-EObkKvbdkyTRryHU
-DoCkKvbdMRwMzUpz
-DnbjjvbdCWzdJEov
-DoCkKvbdUyITzLPO
-EPCkKvbdcSbjsdKB
-DoCkKvbdqceIonVa
-DoCkKvbdjmCMZeGo
-DncKjvbdfMewGljL
-EObkKvbdpfEEtVaI
-DoDLKvbdczZQYYqC
-DoDLKvbdRNXbYmtz
-EObjjvbdTvLojUBR
-EPCkKvbdtbcVXWPP
-DncLKvbdmSYuZrdJ
-DoDLKvbdTukpKUBR
-EPDLKvbdsQVoKCvG
-EPDLKvbdBraCtFvr
-EPDLKvbdZQmEiNEq
-EPCjjvbdrzLosAgn
-EPCjjvbdssRsZZdc
-DncKjvbdbAudepQX
-DncKjvbdcTDKscia
-DncLKvbdlqyVZsEJ
-EOcLKvbdbVCHXkTh
-EObkKvbdYTMBMsnx
-DnbjjvbdULvPAuoJ
-DoCjjvbddtAUASlv
-DoDKjvbdxUmEpxkn
-DncKjvbdQwOEDLgc
-DoCkKvbdSPsgKGDw
-DncKjvbdiCOcFXQq
-EPDKjvbdRkYfUfkT
-EObkKvbdKCjDRJcY
-DoCjjvbdZLqctOMN
-EPCjjvbdUWLpKTaR
-EPCjjvbdLqwMzVQz
-DnbjjvbdnBivxPNu
-EObkKvbdRpUHKFdX
-EPCjjvbdeATqNXif
-DoCjjvbdfILVrOQg
-DoDKjvbdNrtVfeUp
-EOcLKvbdNUrrKmAX
-EPCjjvbdrbFllHLZ
-DncKjvbdkDMLQgUg
-DoCkKvbdVvhwvDeH
-DnbjjvbdKeegaaRV
-DoDKjvbdcJMjKfXY
-DnbjjvbdZtJJYcrn
-DoDLKvbdyqOliJwA
-DoDLKvbdMgDPmPuL
-DoCkKvbdHffzZXxH
-DoCjjvbdZxdKNblS
-EPDKjvbdkDLjqGtg
-EPDKjvbdYzbeqjVy
-DncLKvbdTppnttgm
-EObkKvbdVYgtZjnn
-EPCjjvbdzaAOgHCM
-EOcKjvbdcyxoxZRC
-EPDLKvbdxnSgxTJD
-EObkKvbdfMfXHNJk
-EPDKjvbdunszpjoU
-EObkKvbdFfKRmhsq
-EOcLKvbdhtydwRtb
-DoDLKvbdYkrDsnLm
-EPDLKvbdGGKSOItR
-EPCkKvbduDCuXVno
-EPDLKvbdrEFJQOVa
-EPDLKvbdIjEAKQGd
-EObjjvbdIryArmYM
-DoDLKvbdYkqctOMN
-EPCkKvbdiZtekqOG
-DncKjvbdzdzOzeZp
-DoDLKvbdbiNKLFwY
-DnbkKvbdlhcsqUrB
-DnbkKvbdKyRJrzuG
-DoDKjvbdOFDtIiKd
-DnbjjvbdvvlBWBVu
-DnbkKvbdlrZUyrdJ
-EObkKvbdxZgeewdr
-DncKjvbdegkVrNpg
-DoCjjvbdrJAJeNPF
-EObjjvbdmfeXmOHZ
-DoCjjvbdNPwqVmfs
-DnbjjvbdnPzYvLZC
-EPDKjvbdZshiYcrn
-EOcLKvbdhgJcYvJu
-DoDLKvbdXrlAmToY
-DnbkKvbdwWlAvBVu
-DnbkKvbdjvWnEBww
-DoDLKvbdTYLLmzjx
-EOcKjvbdDihJuxKA
-DncLKvbdTfznLvue
-DoCjjvbdVgwvXgYz
-EObjjvbdsBfMkgKy
-EPCjjvbdUaBqTQrZ
-DnbjjvbdbhmJkGWx
-EPCjjvbdLBLGmCYR
-DoDKjvbdwjwEHzyf
-EPDLKvbdegkVrNpg
-DoCkKvbdJpzEnfOF
-EPCkKvbdFejSOItR
-DnbjjvbdTqQnuUhN
-EOcLKvbdUMVoAvOi
-EPCkKvbdSCEFLiZL
-EPCkKvbdnCKXYPNu
-EPDLKvbdZyEKNbkr
-DncLKvbdZisIQGaf
-EObjjvbdGLEsDHmV
-DoCjjvbdBcpAujNG
-EObjjvbdZRNFIleR
-DnbjjvbdVrOXaeLc
-EPCjjvbdHELViaij
-EOcLKvbdqcdhpNvB
-EPCkKvbdiZuFkqOG
-DoCkKvbdOSsufeVQ
-DoDLKvbduoTzpjnt
-EOcLKvbdTqRPUuHm
-DoDLKvbdCDpAuilf
-EOcKjvbdZMSDsnMN
-DoDLKvbdYqNFJMeR
-DnbkKvbdbAvFFpPw
-EOcKjvbdVqmwaeMD
-EPCkKvbdUyHsyjnn
-EPCjjvbdKeehBaQu
-DoCjjvbdZshiYdTO
-EObkKvbdTvMQJsaR
-EPCjjvbdjblKqHUg
-DnbkKvbdYlSDtOMN
-EObkKvbdrWpMCiZR
-EOcKjvbdUGzmlWue
-DncKjvbdFyUuAcwb
-EPCkKvbdLZQjSztf
-EPCjjvbdfjfzbfAE
-DncKjvbdFWZQQMie
-DoCjjvbdVgxVxHYz
-EOcKjvbdWWhxWEFH
-DoDLKvbdUWLoitAq
-DoDLKvbdzaAOffbM
-EOcLKvbdrXPkbiYq
-DoCkKvbdYzberKVy
-DncLKvbdIMBznWpk
-EPCkKvbdEPCkKwDE
-DnbkKvbdWWiYVcdg
-DoCkKvbdCWzchdpW
-EOcLKvbdjvXNcbYX
-EPDLKvbdSxLMNzjx
-DnbjjvbdhficYuiu
-DncLKvbdvmWAMdEm
-EObjjvbduaDyTOdh
-DncKjvbdwWlAvBWV
-DoDKjvbdVviYWDeH
-EOcKjvbdNsUWGdtp
-DoCjjvbdzjVPodTU
-EPCkKvbdmIcsptqa
-EPDLKvbdIHHZxxYH
-EPDLKvbdUyIUZkPO
-EObkKvbdCDpBWJlf
-EPDKjvbdWSNwaeMD
-DoCjjvbdACrXjZhp
-EPDLKvbdwuMdqYlO
-DnbjjvbdHlBznWpk
-DnbjjvbduaDyTPEh
-DnbjjvbdwuNFRZLn
-EObjjvbdajkfOnDA
-DnbkKvbdWWiYWEEg
-EPDLKvbdffLymgHA
-EOcLKvbdkDMKpfuH
-EPDLKvbdMoxQvOHT
-DnbkKvbdbKkenmcA
-DoCjjvbdhytfMRNf
-DoCjjvbdIsZAsNXl
-DoDKjvbdLiBkqYAS
-DncLKvbdyzdmrHiI
-DnbjjvbdemFvfmJk
-EOcLKvbdSCEEkiYk
-DoDKjvbdbiNKKevx
-DoDLKvbdaaVdeoow
-DnbjjvbdNGcQNPuL
-DncLKvbdQYmAGrrK
-EPDKjvbdrbGMkfjy
-EPCjjvbdZjShPfbG
-DnbjjvbdJmADyfuB
-DnbjjvbdhtzFWquC
-DnbjjvbdQvmdDMID
-DncLKvbdjvWnEBww
-EPCjjvbdxZgfGXdr
-EObkKvbdDihKWXjA
-EPCkKvbdZMSETnLm
-EPDKjvbdZLqcsnMN
-EObkKvbdqwPlDJZR
-DoDKjvbdZisIQGaf
-EObjjvbdjlalZeGo
-DncKjvbdxsOJMqag
-DoDKjvbdOFEUIhkE
-DoCkKvbdzitoodSt
-DncLKvbdVrNwaeMD
-DoCjjvbdezuyEiTw
-EPDKjvbdiCOcEvpq
-DoCjjvbdvvlAvAvV
-DnbjjvbdJuuFceHJ
-DoCjjvbdlYrrSyGt
-EPCkKvbdfILVrNqH
-DoDLKvbdxsOJNRbH
-DncKjvbdIwtBgkpp
-DnbkKvbdOTUWHEtp
-EPDKjvbdFejRnIsq
-DnbjjvbdVBCRTQrZ
-EPCjjvbdiMEcnUcZ
-EObkKvbdiZuGMRNf
-EOcKjvbdatbHYLTh
-DoCkKvbdmSZVZrdJ
-DoDKjvbdqTsgRqjt
-DoDLKvbdCEQBWKNG
-DnbjjvbdZtJJZESn
-DncLKvbdIHGzZXwg
-EPDLKvbdwtmFRZMO
-DoCjjvbdKDJbqJcY
-EObkKvbdatbHXkUI
-DnbkKvbdYqNEhleR
-EObjjvbdNHColotk
-EPDKjvbdegkWSNpg
-DoDLKvbdRjyFtfjs
-DoCjjvbddoEsKtUS
-EOcLKvbdsQWOjCvG
-DoCkKvbdvAcxsOeI
-EObjjvbdbAueGQQX
-EOcLKvbdxKwEHzzG
-DoDKjvbdqTtHSRkU
-EOcKjvbdOAIsUKSA
-EPCjjvbdWSNxCElD
-EPDLKvbdnCKWwoNu
-DncLKvbdEARiMzXX
-DoCkKvbdbAvEeoow
-EOcKjvbdhgJcYvJu
-DnbjjvbdTulPisaR
-DnbjjvbdIidAKQGd
-EPDKjvbdyOTIXrhc
-EPCkKvbdrbFmLgLZ
-EPCjjvbddeOqbXDK
-DncKjvbdRacdlJZL
-EOcLKvbdbsDKtDjB
-EPCjjvbdUyHtZkOn
-EObkKvbdyTOImSBg
-DncKjvbdtbbtwWPP
-EPDKjvbdKDKDRJcY
-EObjjvbdhanbeXQq
-EOcLKvbdvvlAuaWV
-EPDLKvbdVYgsyjoO
-EPDLKvbdKaKflawq
-EOcLKvbdCIjajiFj
-EObkKvbdUsmUGMWK
-EPDLKvbdIjEAJofd
-EOcLKvbdqBJFAWhE
-EPCkKvbdEJgivXjA
-DnbkKvbdYkqdTmkm
-EPCkKvbdliDsqUrB
-EObjjvbdKVtfEEfi
-EObkKvbdmgFYMmgZ
-EObjjvbdEARhlyvw
-DncKjvbdaRecHtGL
-DnbjjvbdNQYRVmfs
-EOcLKvbdFfKRnJTq
-DncLKvbdMgDQNQUk
-EObkKvbdHgGyyXwg
-EPCkKvbdCJKbKiFj
-EPCkKvbdBraDUGXS
-EPDLKvbdiMEcnVCy
-DoDLKvbdkCkkQfuH
-EOcLKvbdwtmFRZLn
-EPDKjvbdKefHbApu
-DnbkKvbdkxrqsZGt
-EPCkKvbdfIKvRmqH
-EOcKjvbdDnbkLWbd
-EPDLKvbdaRebhTek
-DoDLKvbdjuwODaxX
-DnbjjvbdREDBPpdS
-DncLKvbdjuwNcaww
-EOcKjvbdbiMjKevx
-EPDKjvbdqvpLcIyR
-EPCjjvbdijGIKMxS
-EPDLKvbdQmYCZNtz
-EObjjvbdCDpAvKMf
-EOcLKvbdJJdAKPgE
-DoDKjvbdUxgszLOn
-DnbjjvbdOEcshhjd
-DoCjjvbdUaCRSprZ
-EPCkKvbdxmrhYTJD
-EPDKjvbdICLydzAD
-EPCjjvbdKRZdoFme
-EObkKvbdNdctJIjd
-EPCjjvbdKVuFdEgJ
-EObjjvbdrXPlDIyR
-DoCkKvbdfMewGmKL
-DnbkKvbdIwsahMQp
-EOcLKvbdRaceMIxk
-EPCkKvbdcyxoxZQb
-EObjjvbdRkYeuGkT
-DncLKvbdbVBfwkTh
-EObjjvbdTppoVUhN
-EPCjjvbdhytfMROG
-EOcKjvbdUxgszKoO
-DoCjjvbdGLEsDHlu
-EObkKvbdegkVqmqH
-DncKjvbdkMbLyeGo
-DncKjvbdyzdmqghh
-EPCkKvbdGFiqnIsq
-EPDKjvbdpstGqqjt
-EPDKjvbdYkrDsmkm
-EPCkKvbdKaLGlbXq
-DoCkKvbdxwiJbPyk
-EPCkKvbdJcKDQibx
-EPCkKvbduDCuXWPP
-DnbjjvbdiGicZWKV
-DoCkKvbdsPunicWG
-DnbjjvbdKNAEZgVB
-EPDLKvbdnPyxujyC
-EObkKvbdJXsagkpp
-EObkKvbdNddUIiKd
-DnbjjvbdQwOEClID
-DnbkKvbdFVxpQMie
-EPCkKvbdVrNxBeLc
-EPCjjvbdUsmUGLuj
-EPDLKvbdGZVVBDwb
-DoCjjvbdmRyUyrdJ
-DncKjvbddZxoxZQb
-DnbjjvbdGKdsDINV
-EObjjvbdrafNLgKy
-DoCjjvbdJbjCqJbx
-DnbjjvbdlYsSTYgU
-DoCkKvbdQvnDblID
-DoDKjvbdssSTYzFD
-DncKjvbdmozZVkZC
-EPDKjvbdjbkkRGuH
-DoDLKvbdxmrgwriD
-DoDKjvbdfHkVrORH
-EPCkKvbdJuuFceHJ
-DoDKjvbdcbSlrATm
-EPCkKvbdeATpmXif
-DncLKvbdBiKajhej
-EPCkKvbdrNZixlIJ
-EPDLKvbdKVteceGi
-EObkKvbdzjVPodTU
-DoDLKvbdWSNxCEkc
-EOcKjvbdZxcimcLr
-EOcKjvbdZnnIeEyj
-DnbkKvbdmbKWxPOV
-EPCkKvbdZLrETmkm
-EPDKjvbdnUtyjiqf
-DoCkKvbdrWpLcJZR
-DoCkKvbdaMkCStmH
-DncLKvbdFVxpQMie
-EPCjjvbdrpWOicWG
-EOcKjvbdyOTIYShc
-EObkKvbdqrVLNkBN
-EOcLKvbdQvnDbkhD
-EOcLKvbdDigiuxKA
-DncLKvbddoErkTtS
-DoDKjvbdRWmdDLgc
-EPCjjvbdiHKDZVjV
-DnbkKvbdADSYKZiQ
-DnbkKvbdsPunibuf
-DoCjjvbdSPsfiedX
-EPDKjvbdJmAEZfta
-EOcKjvbdZMRcsnLm
-DoCkKvbdiLddOUcZ
-EObkKvbdqqtkOLAm
-DoDLKvbdYpmFImFR
-EObjjvbdVhYWXfxz
-DnbjjvbdMowqWNfs
-EObkKvbdVgwuwgYz
-DoDKjvbdDxYLsssl
-DnbjjvbdZtIiYcsO
-DnbkKvbdxwiKBpZk
-DoDKjvbdEuxpPmKF
-EOcKjvbdJcKDRKCx
-EObkKvbdUtNUFlWK
-EOcKjvbdjhHLfFnL
-DoCkKvbdSQTgKGDw
-DncLKvbdQccBQRDr
-DncLKvbdILazmwRL
-DoDKjvbdYTMBNUPY
-DoDLKvbdKaKfmCXq
-EPCjjvbdkIHMGGOL
-DnbjjvbdCIjbKhfK
-DnbkKvbdVgwuwfxz
-EPCjjvbdwtmFQxkn
-EPDLKvbdcyyQYZRC
-DoDKjvbdPyNAGsRj
-EObjjvbdSLYetgLT
-DoDLKvbdMRwNZuQz
-DncKjvbdFjdrcHlu
-DoCjjvbdZyDimbkr
-DnbkKvbdRXNdClID
-EObjjvbdEYYLtUTl
-EObkKvbdVqmxBdlD
-DoDLKvbdptTgRqkU
-EOcLKvbdBdPaWKMf
-EPCjjvbdiBncEvpq
-DoDLKvbdzQoNJKXA
-DoDKjvbdUQpoUtgm
-DnbkKvbdrzLpTBHn
-DoCjjvbdunszpkPU
-EPDLKvbdSZjHsCvA
-DncKjvbdRotHJfDw
-DnbkKvbdFejSOItR
-EOcKjvbdeFOrBwCj
-DoDLKvbdkVwNdCXw
-EPCkKvbdeOdrjtTr
-EPCjjvbdhuZdwRuC
-DnbkKvbdfILVqmqH
-DncKjvbdnPzYvLYb
-DncKjvbdHgGzZYXg
-DncKjvbdkVwNcaxX
-DoDLKvbdOAJSsjSA
-DncKjvbdOFDtJIjd
-EOcLKvbdVgwvYGxz
-EObkKvbdsQVnjDWG
-DoCjjvbdZjShQHCG
-DncKjvbdzoPpeCkx
-DoDLKvbdSLZFtfjs
-DnbkKvbdBsBCtFvr
-EOcLKvbdFyUuAcwb
-DnbjjvbdqUTfqrKt
-DoCjjvbdZxdJmcLr
-DncLKvbdmbJwYPOV
-EObjjvbdEObjkXDE
-EOcKjvbdaSFcIUGL
-EPCkKvbdqYoIHQcx
-EOcKjvbdfNGWgMjL
-DoCjjvbdbrcKtEKB
-EPCkKvbdvBDxsOdh
-DnbjjvbdtcCuXVoP
-DnbjjvbdrpWPKDVf
-EOcKjvbdwyhFfYFS
-EPCjjvbdnPyyWLZC
-EPDLKvbduMYXBUAw
-DoDKjvbduaDySoFI
-DoCjjvbdyXiKCPzL
-DncLKvbdGFjSOIsq
-DoDLKvbdeEoRbXDK
-DncLKvbdcTCjtDia
-DnbjjvbdnUuZjiqf
-DnbjjvbdjlakzFHP
-EOcLKvbdwWlBWAvV
-DnbkKvbdWWiXuceH
-EObkKvbdemGWfmKL
-EObkKvbdmuUykJrG
-DoCkKvbdmozYvKxb
-DncKjvbdQZNAGsSK
-EObjjvbdjblKpgUg
-DncKjvbdSZigsDWA
-EOcLKvbdZyEJmblS
-DoCjjvbdnCJwYOmu
-EPDKjvbdtkxWaTaX
-EPDKjvbdGZUuAcwb
-DoCkKvbdyfxlANEw
-EPCkKvbdTAFJIBnd
-DncKjvbdZLqctOMN
-DncKjvbdUMWPBWPJ
-EPCkKvbdDwwksstM
-EPDKjvbdEObjjvbd
-EObjjvbdWXJYWEEg
-DnbjjvbdpaIeAXIE
-DoCjjvbdqYoIHREY
-DnbjjvbdvmWAMceN
-EObkKvbdLFfHaaQu
-EOcLKvbdpaIeAWgd
-EPDLKvbdkCkkQgUg
-DnbjjvbdePErkTtS
-DnbkKvbdNGbomQVL
-DoDLKvbdEPCjkWcE
-DoCkKvbdehLWRnRH
-EOcKjvbdyXhibQZk
-EOcLKvbdZyEKOCkr
-DoCjjvbdkDLkRGtg
-DoDLKvbdkaNPNALA
-EObkKvbdrWpLbiYq
-DoDLKvbdfHkVqmqH
-DoDLKvbdEOcLKwCd
-DoDKjvbdrykpTBHn
-DncKjvbdxZgefYFS
-DnbkKvbdJpzFPFnF
-DoCkKvbdNGcPmPtk
-EPCjjvbdhzUelRNf
-EObkKvbdVTltFlWK
-DoCkKvbduaDxrneI
-EObkKvbdSQTgJfEX
-EOcKjvbdVhYVxHYz
-EOcKjvbdkCkkQgUg
-EObkKvbdqUUHSSLU
-EOcLKvbduLwwAtAw
-EPDKjvbdZLrETnMN
-EObkKvbdmttyjjRf
-DoDKjvbdYqMdiMdq
-DoCkKvbdkNBkzEfo
-DncKjvbdiLeDnUcZ
-DoDKjvbdZLrDsnLm
-EPCkKvbduVnYKRTA
-EPCjjvbdCIkCLJFj
-EPDKjvbdssRrxyeD
-DncKjvbdQwOEClHc
-EPCkKvbdwXLaWAuu
-EPCkKvbdUyHszKoO
-EPCkKvbdJYTagkqQ
-DoCkKvbdwuNFRYlO
-EPCjjvbdfHkWRmqH
-EOcKjvbddeOqbXCj
-EObkKvbdhficYujV
-EPCkKvbdmSYtzTEJ
-EPCjjvbdtkxWaTaX
-EPDLKvbdwygfGYEr
-EPDKjvbdmpZxvKyC
-DoCjjvbdpstGrSLU
-EPDKjvbdUtMtGLuj
-EOcKjvbdjlbLzFGo
-EObkKvbdkyTSTZGt
-EOcLKvbdLYpjSzuG
-EPDLKvbdyXhibQZk
-DncKjvbdptUHSRkU
-DnbjjvbdFfKRmhtR
-DoCjjvbdtbcUwVoP
-EPDKjvbdhyuFkpnG
-EPDLKvbdFpASwHFy
-EPCjjvbdRbDeLiYk
-DncLKvbdXmqAYUut
-EObjjvbdqlyjZLgi
-DoCjjvbdssSTYydc
-DnbkKvbdTIzJqABM
-EPCkKvbdxsOJNRag
-EPCjjvbdlhcspuSB
-EObkKvbdqUTgSRjt
-EOcKjvbdOEcshhkE
-EObjjvbdzjUpPdTU
-DnbkKvbdvwLaVaWV
-EPCjjvbdmoyyVkYb
-DoCkKvbdOFETiJKd
-EPCjjvbdeEnqawCj
-EObjjvbdmuUzKjRf
-EPDLKvbdVvhxVdFH
-EPCkKvbdaSGDHsek
-EPCjjvbdkySrTZHU
-EObjjvbdtAGqIABS
-EObkKvbdZyEJmblS
-DncKjvbdyTOJMrCH
-DncLKvbdFWYoolie
-DoDLKvbdTvMPjUAq
-EObjjvbdZLqctOLm
-DnbkKvbdmIctQuSB
-DoCkKvbdZGvdAPTJ
-DoCjjvbdkDMLRGuH
-DoDLKvbdnVUykKSG
-DoDKjvbdLGFhBaRV
-DncLKvbdxwiKBozL
-DncLKvbdWIYWXgYz
-DncLKvbdFkFSbglu
-DoDKjvbdIGgZxxXg
-DnbjjvbdEztRFMDJ
-DoDLKvbdZQldiNEq
-EOcLKvbdwWkaWAvV
-DoDKjvbdLBLHMawq
-DoDLKvbdkMbLzFGo
-EPDKjvbdREDAopcr
-DoCkKvbdZoNiEdyj
-EPDLKvbddneSkUUS
-DnbkKvbdSQUHJecw
-DoCjjvbdZshhxcrn
-DnbjjvbdRkZFuHLT
-EPDKjvbdwuNEqYkn
-DoDLKvbdemGXGmJk
-EOcLKvbdKWVGDeGi
-DoCkKvbdWSOXadkc
-EObjjvbdVTmTelWK
-DncKjvbdhkeDmuDZ
-EPCkKvbdRWnEDMID
-DnbjjvbdNQYRVnGs
-DnbkKvbdTfzmlWvF
-DoCkKvbdFpASvgGZ
-DoCjjvbdqTsfqqkU
-EObkKvbdUVkpKUAq
-DoDLKvbdrRtkNjaN
-EPCkKvbdrJAKEmOe
-DncKjvbdIGfyyYXg
-DnbjjvbdZLrDtNkm
-EObjjvbdiMEcmuCy
-DncKjvbdkyTSTZHU
-DncLKvbdBsAbtFvr
-DnbkKvbdrpWPKDWG
-DncKjvbdbBWFFoow
-DoDLKvbdxmsIXsJD
-DnbkKvbdehLWRnRH
-EObkKvbdiVZeXRuC
-DnbkKvbdOTUVfduQ
-DncLKvbdZjTIQHCG
-DoDLKvbdOSsugFVQ
-DoCjjvbdrafNLgKy
-EPDLKvbdNPxRVmgT
-EPDKjvbdHlBznXQk
-EPCkKvbdCEQBWKMf
-EObjjvbdtcDUwWOo
-DoCjjvbdZMSDtNlN
-DoDLKvbdvAcxrneI
-EObjjvbdIxUCILpp
-EOcKjvbdfSBWzkbo
-EObkKvbdShzKRAAl
-DnbjjvbdGZUuBDxC
-EObkKvbdqlzKYkhJ
-EPDKjvbdZyEKNbkr
-DoDLKvbdsrrTYzFD
-DoCkKvbdfSAvzkcP
-DnbjjvbdqlzKYlHi
-EPDKjvbdYTLaNToY
-EPCjjvbdjEjgUoAO
-EOcKjvbdTJZjRABM
-EObkKvbdYORAXtvU
-DoDLKvbdGKdrcHmV
-DoDLKvbdbrcLUEJa
-DncLKvbdqvpLcJZR
-DnbkKvbdFeiqnIsq
-EPDKjvbdZnnIeEzK
-EPCjjvbdnUtzLKRf
-DoDLKvbdDxXlUUTl
-DoDKjvbdiMEcnUby
-EObkKvbdYzbeqjWZ
-DncKjvbdTvLojUAq
-EOcLKvbdjuvmdBxX
-DnbjjvbdzoPpdcMY
-DoDKjvbdrovOibuf
-DoDKjvbdFWZPomJe
-DoDKjvbdqGDeUWBI
-DoCkKvbdWWiYVdEg
-EObkKvbdtvOXiqTA
-DnbjjvbdqZPIGpdY
-EObkKvbdLBKgNCYR
-DoCjjvbdLBKgNCYR
-EObjjvbdZsiJZESn
-DoCkKvbdTqROtuIN
-EPCjjvbdyfyMAMdw
-EOcLKvbdptTgSSLU
-DncLKvbdPxmAHTSK
-DnbjjvbdRkZFtfkT
-EPDLKvbdtlXvaUAw
-EPCkKvbdqBJFAWhE
-EPCkKvbdIidAJogE
-EPDLKvbdKQydoGOF
-EObkKvbdauCGwkTh
-EPCjjvbdNddUIiKd
-DoDLKvbdFfKRmhsq
-EPCkKvbdeEnqbXCj
-EObkKvbdJvVGDdfi
-DoDKjvbdWRmwaeLc
-EObkKvbdSCDeLiZL
-EPDKjvbdDoDLLWcE
-EPDLKvbdiMEcnUby
-DnbjjvbdLBLGmBxR
-EPCjjvbdZnmiEdyj
-EObjjvbdVhXuwgYz
-DncLKvbdUtNTfMVj
-EPDLKvbdKaKgMaxR
-DncKjvbdJcJbpicY
-DnbkKvbdSKyGVHLT
-DoDKjvbdzROlhjXA
-DnbkKvbdlrZUysEJ
-DoCkKvbdnQZyWLYb
-DoCjjvbdeFOqbWbj
-EOcLKvbdjgfkfGOL
-EObkKvbdiHJbyWKV
-DnbkKvbdGdLVibJj
-DoDKjvbdGLErcINV
-EPCjjvbdNGcPlpUk
-EOcKjvbdjFLGtoAO
-EOcKjvbdsBfMlGkZ
-EObjjvbdhtydvquC
-DoCjjvbdznpRFCkx
-DncLKvbdYSkaNUOx
-DoCjjvbdVvhxVdFH
-EPDLKvbdNeETiJLE
-DoDKjvbdcScLTdJa
-EOcLKvbdQwNdDLgc
-DoDLKvbdUMWPBWPJ
-DncKjvbdqFdEtVaI
-EObjjvbdhbPCeXRR
-DoCjjvbdKeehCApu
-DncKjvbdYNqAXuVt
-DoDLKvbdjmCLzFGo
-DoCkKvbdtlXwBUAw
-EObkKvbdwtmEqYlO
-EObjjvbdrovOjCvG
-EObkKvbdqrVLOLBN
-DoCjjvbdSBcdkhxk
-DncLKvbdrEEhomua
-EObkKvbdtbbtvuno
-EPDLKvbdZjShQGaf
-EPCjjvbdTAFJHbPE
-DnbjjvbdcScLTcia
-EObkKvbdbsDLUDia
-DnbkKvbdkyTSTYgU
-DncKjvbdySmhmSCH
-DoCjjvbdnBivxPNu
-DncKjvbdEXxLtTtM
-EObjjvbdZshhyESn
-DoDKjvbdkMbLzEfo
-EObjjvbdssRrxyeD
-DoDKjvbdcSbkTdKB
-EPDLKvbdHDjvJbKK
-DncLKvbdsQVnjCvG
-DnbjjvbdJSyBTMwl
-EOcLKvbddZxpYYqC
-EPCjjvbdrXQLcJZR
-DoCkKvbdnHEwlmfy
-EOcKjvbdGZUuBDwb
-EObjjvbdvOszqKnt
-EOcLKvbdRosgKFdX
-EPCjjvbdMpXqWNfs
-EPCkKvbdJbibqJcY
-DncKjvbdJvVFdEgJ
-EObkKvbdqwPkcIyR
-DnbkKvbdDwxMUTtM
-DncKjvbdtcDVXVno
-EPDLKvbdlZSrSxft
-DoCkKvbdKeehCApu
-EPDLKvbdQlxCYmtz
-EOcLKvbdYqNFJNFR
-DoCkKvbdnCKWwoOV
-EObjjvbdwzIFfYEr
-EOcKjvbdkDMLQfuH
-EPCjjvbdrSUjnLBN
-EPCkKvbdTfznMXVe
-EPCkKvbdZxdKNcMS
-DoCjjvbdJXsaglRQ
-DoCjjvbdNPwqWNgT
-DoCjjvbdLqwMzUpz
-EOcKjvbdCDoaWJlf
-DnbjjvbdlYsRsZGt
-DncKjvbdeOdsLUUS
-EOcKjvbdEvZQPmJe
-DoCkKvbdqBJFAXHd
-DnbjjvbdtkwwBUBX
-EObjjvbdLFfHaaQu
-DoDLKvbdbLMFoNcA
-EPDLKvbdiLdcnUby
-DnbkKvbdUQqPVUgm
-EOcLKvbdEOcLLXDE
-DoDKjvbdrEEhpOWB
-DncKjvbdkCkkQftg
-DncLKvbdMfbpNQUk
-DnbjjvbdTulQKUAq
-DoDLKvbdUtNUFkvK
-DncKjvbddndsKtTr
-EPDKjvbdliDsqVSB
-EPCkKvbdhbOcEvqR
-DoCkKvbdqceJQNua
-DoCkKvbdrWpLcIyR
-DncKjvbdrSVLNkAm
-DoDLKvbdyOShYTJD
-DncKjvbdyYJKBoyk
-DnbjjvbdZQldiNFR
-EPDLKvbdePEsKstS
-EPCjjvbdcScKtDia
-DncLKvbdxsOJNRbH
-EObjjvbdEYXlUUTl
-DoCkKvbdxUldqZMO
-EOcKjvbdRjxeuGkT
-EOcLKvbdqrVLNjaN
-DoCkKvbdDwwktUUM
-EOcLKvbdZQmEiNFR
-EPCkKvbdMSXMytpz
-DnbkKvbdnUtzKiqf
-DoCjjvbdREDAoqDr
-EPCjjvbdZyDinDMS
-EPCjjvbdiCPDEwRR
-EPCkKvbdmSZUzSci
-DoDKjvbdkWWmdCXw
-DnbkKvbdmJDsqVRa
-EPDKjvbdhzVGLpnG
-DoCkKvbdsPuoKDWG
-DoDLKvbdrylPsAgn
-EPCjjvbdsPuoJbuf
-EOcKjvbdrEFJQOVa
-EPCjjvbdEPDLLXCd
-DncKjvbdkVwOEBxX
-EPCkKvbdqGEFUWAh
-DncLKvbdtbcUvuno
-EOcKjvbdWIYWYGxz
-EPDLKvbdZLqcsmkm
-DoDKjvbdmaivwnnV
-DoCkKvbdOYPVzcmt
-DoCjjvbdVwIwvDeH
-DoCjjvbdYkrETmkm
-DoDKjvbdLFfHbAqV
-EObjjvbdkIHLefOL
-EPDKjvbdZjShPfaf
-DoCjjvbdehLWSORH
-DncLKvbdKfFgbBQu
-EObkKvbdsPunjDVf
-DncKjvbdiMEdNuCy
-DncKjvbdFfKSNhtR
-EOcKjvbdFVxpQNKF
-DncLKvbdfHkVrORH
-EObjjvbdKefIBaQu
-EPDKjvbduCbtvuoP
-EPCkKvbdGdLWKCKK
-DncLKvbdLAkGmBwq
-DncLKvbdZshiZESn
-DnbjjvbdySmhmSCH
-DoDKjvbdACqxJyiQ
-DncLKvbdmajXYOmu
-DnbjjvbdxVNFRZMO
-DnbjjvbdVqmxBdlD
-DnbkKvbdIGgZyYXg
-DncKjvbdddnrBvcK
-EPCjjvbdUGzmkwVe
-DncLKvbdaNLCTVNH
-DoCkKvbdWWhwucdg
-DncKjvbdkWWmcaxX
-DoDKjvbdaRfChUGL
-EPDLKvbdOEcsiJKd
-DoDLKvbdGLFTChMu
-EObjjvbdjmBkzFHP
-DncLKvbdrWokcJYq
-EObjjvbdDHMGHAzc
-EObkKvbdRyjITCvA
-DnbjjvbdWRnXbElD
-DoCjjvbdEARiNZvw
-DnbkKvbdRjyFtfjs
-DoCkKvbdMgDQNQVL
-DoDKjvbdCEPaWJmG
-DoCkKvbdUtNTfLuj
-DoDKjvbdNGcQMpVL
-DoDKjvbdZQmFImEq
-EObjjvbdyYIibPyk
-DoDLKvbdcSbjtDjB
-EPCjjvbdPxmAGsSK
-EPCjjvbdnUuZjirG
-EPCkKvbddijSVtzn
-EOcKjvbdxUmEqYlO
-EOcKjvbdxrmiNRag
-EPCkKvbdjmBlZeHP
-EOcKjvbdvBDySndh
-EObjjvbdliDsqVSB
-EOcKjvbdTvMQKUBR
-DncLKvbdRNXbYnUz
-DnbjjvbdyYIiaozL
-DoCkKvbdhbPDEwRR
-EPDKjvbdptUGrSLU
-DoDKjvbdFjeTChMu
-DnbkKvbdFVxoomJe
-EObkKvbdlYrrSyGt
-EPDLKvbdVZHszKnn
-DncLKvbdDwwktUUM
-DncLKvbdDnbkKvcE
-EPCkKvbdjJfHjMwr
-EPDKjvbdUtNTfMWK
-EObjjvbdbhlikGWx
-DncLKvbdKfFhCBQu
-DoDKjvbdVgwvXgYz
-EPDLKvbdiBoCdwRR
-EPDLKvbdzdzOzeZp
-EObkKvbdMoxRWNgT
-EPDKjvbdjvXNdBww
-EObkKvbdUtMsfLuj
-EOcLKvbdnUuZjjRf
-DnbkKvbduCbtwVoP
-EPDLKvbdGGKRmhsq
-EObkKvbdePEsLTtS
-DoCjjvbdSKyGUgLT
-EOcLKvbdRbDdlIyL
-DoDLKvbdNxPVzcnU
-EObjjvbdkCkkRGtg
-DncKjvbdVTmUFkvK
-DncKjvbdUsltFkuj
-EPDKjvbdSCEElJZL
-EOcKjvbdZxcjNcMS
-DoCjjvbdEJgjWYKA
-DncLKvbdREDBQRDr
-DncKjvbddoErjtUS
-EPDLKvbdADSYJyiQ
-EPDKjvbdatafxKsh
-EPDLKvbdkIGkeemk
-DoDLKvbdmRxtzSci
-DnbkKvbdTlWPAvPJ
-DncKjvbdjJegjMwr
-DoCkKvbdqTtHSSKt
-EOcKjvbdkMakzFHP
-DncLKvbddZyPwxpb
-DnbkKvbdTppnuUgm
-EObkKvbdnPyxukZC
-DoDKjvbdbiNJjewY
-EPDKjvbdJSyArlwl
-EPDLKvbdvvlBVaVu
-EOcLKvbdjJfIKMxS
-EPDLKvbdliETqVRa
-DoCkKvbdWXJXvEFH
-DncLKvbdiHKDZWKV
-EObkKvbdEXwktUUM
-EOcKjvbdRWnDcMID
-EPDLKvbdbhljKfWx
-DnbkKvbdVTlsfMVj
-DnbjjvbdZoOIdeZj
-DoDKjvbdDxYLtUTl
-EObjjvbdmIdTqUqa
-EPCjjvbdiZtekqNf
-DoDLKvbdMfcPmPtk
-EPDLKvbdKxpirztf
-DnbkKvbdEARhlzWw
-EOcKjvbdqiAJeMne
-DnbjjvbdUsltGMWK
-DnbkKvbdMoxRWNfs
-EPCjjvbdTqQntuIN
-EPDKjvbdLFfHbApu
-EOcLKvbdANIZSwZx
-DoCjjvbdSLZGUfjs
-DoDLKvbdJSyArlxM
-EOcLKvbddZxoxZRC
-DoDLKvbdRpTfjFcw
-EObjjvbdKefHbBRV
-EPCkKvbdjlakyeGo
-DoDLKvbdiBncFXRR
-EObkKvbdkHfkefOL
-DnbjjvbdfILVrORH
-DnbjjvbdbsDKtDia
-DoCjjvbdqiAKElne
-EObkKvbdEXxMTtUM
-DncKjvbdHfgZxxXg
-EPDKjvbdQvnDcMID
-DoDKjvbdCSaCsewS
-DncLKvbdSZigsDWA
-DnbkKvbdiUyeXSUb
-DnbkKvbdZRNFJMeR
-EPDKjvbdDxXlTstM
-EPCjjvbdkNBlZdfo
-DnbkKvbdhuZdvqtb
-DncLKvbdHDkWJajK
-EOcKjvbdhficZWKV
-DoDLKvbdxwiKCPyk
-EPDLKvbdZQleJMeR
-DoDLKvbdLrXMytpz
-DncKjvbdcTCjtEJa
-DnbkKvbdUMVnaWPJ
-DoCjjvbdnBjXYPOV
-EObjjvbduWNwjQsA
-DoCjjvbdRpUHJecw
-DnbkKvbdJYUBglQp
-EOcLKvbduoTzqKoU
-EObjjvbdZMRctNlN
-EObkKvbdziuPpESt
-DoDLKvbduLxWaTaX
-EOcLKvbdhgKDZWKV
-DnbkKvbdZQldhmFR
-EOcLKvbdcyyPxZQb
-EOcKjvbdRWnDcLgc
-DncLKvbdxZgfFweS
-EPCkKvbdyqOliJwA
-DnbjjvbdsPvPKCuf
-DoCjjvbdMgCpNQVL
-DncLKvbdOEdTiJKd
-EPDKjvbdEARiMyvw
-EOcLKvbdJbibqKDY
-DoCkKvbdeEnrCWbj
-DoCkKvbdGKdrcIMu
-DnbkKvbdUMWOaVoJ
-DoCkKvbdKaKgNCXq
-DnbkKvbdoAKztHdO
-EPDKjvbdDxXlUUTl
-EOcLKvbdFVxoomJe
-EOcKjvbdpyPHfpdY
-EPCjjvbdxwiJaoyk
-DoCkKvbdlqxtyrci
-EOcKjvbdfHkWRmpg
-DoCjjvbdkMalZdfo
-EPCjjvbdJpyePGOF
-DncLKvbdqUUHRqjt
-DoDLKvbdziuQPdSt
-DoDKjvbdBhjajiGK
-EPDKjvbdjcLjpftg
-EPDKjvbdVwJYWEFH
-DnbjjvbdNdcsiJLE
-DoCjjvbdQwODcLgc
-EOcLKvbdtkxXAtAw
-EPDKjvbdwMvANEEm
-DoCjjvbdqFdEsuaI
-EObjjvbdrSUjmjaN
-DoDLKvbdnGeYMnGy
-EOcLKvbdPyNAHTSK
-DnbkKvbdMowpvNgT
-DoCjjvbdGdLVibKK
-DoDLKvbdtcDVXVno
-EObkKvbdtlXwBUAw
-DoCjjvbdSPsgKGEX
-EPCjjvbdURQntuHm
-DncLKvbdrMyjZLgi
-EPDKjvbdwXMAvBVu
-EOcLKvbdRjxfUfkT
-DnbkKvbdGFjRnJTq
-DoCkKvbdbUbHYLTh
-EPDKjvbdoznEKxPA
-EPCjjvbdLiBlQxAS
-DncKjvbdfVzxPizs
-DnbjjvbdSKyFtgLT
-EPDKjvbdrXPlCiZR
-DncLKvbdhzVGLpnG
-EObjjvbdVwJYVdFH
-EPDKjvbdwXLaWBVu
-EPCjjvbdjhHMGFmk
-EObkKvbdKyQjSzuG
-DoCjjvbdmfeYNOHZ
-DoDLKvbdZirgofaf
-EOcLKvbdZoOIdeZj
-EPCkKvbdLFfHbApu
-EPCkKvbdjvWnEBww
-DoDKjvbdcScLUEKB
-DoCkKvbdkCkjqHUg
-DoDKjvbdyTNhmSBg
-DoCkKvbdkHgLfFnL
-EPCjjvbdzoQQdcLx
-DoCjjvbdOTTvHEtp
-EPCkKvbdznopeDLx
-EPCkKvbdGFjRmhtR
-EPCkKvbdUaCQrpqy
-EOcKjvbdnGeXmOHZ
-DoDKjvbdiCPDEwRR
-DoCjjvbdRbEFLiYk
-DncKjvbdRXOECkgc
-EPCjjvbdKWUedEgJ
-DncKjvbdDjIJvYKA
-DoDKjvbdyTOJNRbH
-DoCjjvbdePFTKtTr
-DoDKjvbdhtyeWrVC
-EPCkKvbdqvolCiZR
-DoDLKvbdapHHELzd
-EObjjvbdlhdUQtrB
-EOcKjvbdptUGrRkU
-EPCjjvbdqUTfqrLU
-EPCkKvbdcJMikGWx
-DoDKjvbdlhctRVRa
-EOcLKvbdANHyTXZx
-EPDKjvbdpssfqrKt
-EPCkKvbdFeiqnJTq
-DoCkKvbdxZgfGXdr
-EOcLKvbdRWmcblHc
-DncLKvbdjggMFemk
-DoDKjvbdKeegbBQu
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/7158804/Test7158804.sh	Wed Jul 05 18:27:34 2017 +0200
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+
+##
+## @test Test7158804.sh
+## @bug 7158804
+## @summary Improve config file parsing
+## @run shell Test7158804.sh
+##
+
+if [ "${TESTJAVA}" = "" ]
+then
+  echo "TESTJAVA not set.  Test cannot execute.  Failed."
+  exit 1
+fi
+echo "TESTJAVA=${TESTJAVA}"
+
+rm -f .hotspotrc
+echo -XX:+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa >.hotspotrc
+${TESTJAVA}/bin/java ${TESTVMOPTS} -XX:+IgnoreUnrecognizedVMOptions -XX:Flags=.hotspotrc -version
+if [ $? -ne 0 ]
+then
+    echo "Test Failed"
+    exit 1
+fi
+rm -f .hotspotrc
+exit 0
--- a/make/jprt.properties	Wed Oct 31 18:35:56 2012 -0700
+++ b/make/jprt.properties	Wed Jul 05 18:27:34 2017 +0200
@@ -79,20 +79,18 @@
     ${jprt.my.test.target.set:TESTNAME=jdk_util},               \
     ${jprt.my.test.target.set:TESTNAME=jdk_io},			\
     ${jprt.my.test.target.set:TESTNAME=jdk_net},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_nio1},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_nio2},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_nio3},		\
+    ${jprt.my.test.target.set:TESTNAME=jdk_nio},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_security1},		\
     ${jprt.my.test.target.set:TESTNAME=jdk_security2},          \
     ${jprt.my.test.target.set:TESTNAME=jdk_security3},          \
     ${jprt.my.test.target.set:TESTNAME=jdk_rmi},                \
-    ${jprt.my.test.target.set:TESTNAME=jdk_management1},        \
-    ${jprt.my.test.target.set:TESTNAME=jdk_management2},        \
+    ${jprt.my.test.target.set:TESTNAME=jdk_management},         \
+    ${jprt.my.test.target.set:TESTNAME=jdk_jmx},                \
     ${jprt.my.test.target.set:TESTNAME=jdk_text},		\
-    ${jprt.my.test.target.set:TESTNAME=jdk_tools1},             \
-    ${jprt.my.test.target.set:TESTNAME=jdk_tools2},             \
+    ${jprt.my.test.target.set:TESTNAME=jdk_tools},              \
+    ${jprt.my.test.target.set:TESTNAME=jdk_jdi},                \
     ${jprt.my.test.target.set:TESTNAME=jdk_jfr},                \
-    ${jprt.my.test.target.set:TESTNAME=jdk_misc}
+    ${jprt.my.test.target.set:TESTNAME=jdk_other}
 
 # All vm test targets (testset=all)
 jprt.vm.all.test.targets=    					\
--- a/test/Makefile	Wed Oct 31 18:35:56 2012 -0700
+++ b/test/Makefile	Wed Jul 05 18:27:34 2017 +0200
@@ -58,9 +58,9 @@
 	jdk_io  \
 	jdk_lang  \
 	jdk_math  \
-	jdk_misc  \
+	jdk_other  \
 	jdk_net  \
-	jdk_nio1 jdk_nio2 jdk_nio3  \
+	jdk_nio \
 	jdk_security1 \
 	jdk_text  \
 	jdk_util
@@ -69,12 +69,14 @@
 JDK_NONDEFAULT_TEST_LIST = \
 	jdk_awt \
 	jdk_beans2 jdk_beans3  \
-	jdk_management1 jdk_management2  \
+	jdk_management \
+	jdk_jmx \
 	jdk_security2 jdk_security3  \
 	jdk_rmi \
 	jdk_sound \
 	jdk_swing \
-	jdk_tools1 jdk_tools2 \
+	jdk_tools \
+	jdk_jdi \
 	jdk_jfr
 
 # All jdk tests