summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2012-08-15 12:02:33 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2012-08-15 12:02:33 +0000
commitc34b2895b27bef8a317e693b0e2b8106fd6348da (patch)
tree1116ca471f2e16ce5c9dca9ec4a366ac45944fa7
parent21d122b8a1730119cfa294ab1d5eed098dcb5767 (diff)
lcdf-typetools: More bug fixes, backport from upstream, add test cases
git-svn-id: svn://tug.org/texlive/trunk@27412 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Build/source/texk/lcdf-typetools/Makefile.am17
-rw-r--r--Build/source/texk/lcdf-typetools/Makefile.in145
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/ChangeLog14
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-02-WIN3295
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-03-manpage17
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-04-PFB_OPT24
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-05-backport14
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-20-TL-binary10
-rw-r--r--Build/source/texk/lcdf-typetools/otftotfm/util.cc60
-rw-r--r--Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.cc2
-rw-r--r--Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.15
-rw-r--r--Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.cc4
-rw-r--r--Build/source/texk/lcdf-typetools/t1reencode/t1reencode.cc2
-rw-r--r--Build/source/texk/lcdf-typetools/tests/Fon.postbin0 -> 32 bytes
-rw-r--r--Build/source/texk/lcdf-typetools/tests/Fon.t42290
-rw-r--r--Build/source/texk/lcdf-typetools/tests/FonetikaDaniaIwonaeBold.ttfbin0 -> 7376 bytes
-rwxr-xr-xBuild/source/texk/lcdf-typetools/tests/t1.test58
-rw-r--r--Build/source/texk/lcdf-typetools/tests/t2c.enc290
-rw-r--r--Build/source/texk/lcdf-typetools/tests/texmfhome.otfbin0 -> 1884 bytes
-rw-r--r--Build/source/texk/lcdf-typetools/tests/tmf.info8
-rw-r--r--Build/source/texk/lcdf-typetools/tests/tmf.pfa195
-rw-r--r--Build/source/texk/lcdf-typetools/tests/tmf.pfbbin0 -> 7589 bytes
-rw-r--r--Build/source/texk/lcdf-typetools/tests/tmf.tables10
-rwxr-xr-xBuild/source/texk/lcdf-typetools/tests/ttf.test48
-rw-r--r--Build/source/texk/lcdf-typetools/tests/uhv_dl.pfa190
-rw-r--r--Build/source/texk/lcdf-typetools/tests/uhv_dl.pfbbin0 -> 7444 bytes
-rw-r--r--Build/source/texk/lcdf-typetools/tests/uhv_dl.ps218
-rw-r--r--Build/source/texk/lcdf-typetools/tests/uhv_re.afm254
-rw-r--r--Build/source/texk/lcdf-typetools/tests/uhv_re.pfa901
-rw-r--r--Build/source/texk/lcdf-typetools/tests/uhvrrc8a.pfbbin0 -> 27330 bytes
30 files changed, 2745 insertions, 126 deletions
diff --git a/Build/source/texk/lcdf-typetools/Makefile.am b/Build/source/texk/lcdf-typetools/Makefile.am
index 89ea98c115e..ac0e0be7af3 100644
--- a/Build/source/texk/lcdf-typetools/Makefile.am
+++ b/Build/source/texk/lcdf-typetools/Makefile.am
@@ -108,3 +108,20 @@ EXTRA_DIST += lcdf-typetools-$(LCDF_TYPETOOLS_VERSION)-PATCHES
## Original files from lcdf-typetools distribution
##
EXTRA_DIST += Makefile.am.orig configure.ac.orig
+
+## Tests
+##
+TESTS = tests/t1.test tests/ttf.test
+EXTRA_DIST += $(TESTS)
+
+## tests/t1.test
+EXTRA_DIST += tests/t2c.enc tests/uhvrrc8a.pfb \
+ tests/uhv_dl.pfa tests/uhv_dl.pfb tests/uhv_dl.ps \
+ tests/uhv_re.afm tests/uhv_re.pfa
+DISTCLEANFILES += uhv*
+## tests/ttf.test
+EXTRA_DIST += tests/FonetikaDaniaIwonaeBold.ttf tests/texmfhome.otf \
+ tests/Fon.post tests/Fon.t42 \
+ tests/tmf.info tests/tmf.pfa tests/tmf.pfb tests/tmf.tables
+DISTCLEANFILES += Fon* tmf.*
+
diff --git a/Build/source/texk/lcdf-typetools/Makefile.in b/Build/source/texk/lcdf-typetools/Makefile.in
index 81887307930..cc4269920fa 100644
--- a/Build/source/texk/lcdf-typetools/Makefile.in
+++ b/Build/source/texk/lcdf-typetools/Makefile.in
@@ -135,6 +135,10 @@ AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = $(am__tty_colors_dummy)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -310,7 +314,7 @@ ACLOCAL_AMFLAGS = -I ../../m4 -I m4
AM_DISTCHECK_CONFIGURE_FLAGS = --without-kpathsea
SUBDIRS = . liblcdf libefont @SELECTED_SUBDIRS@
DIST_SUBDIRS = liblcdf libefont cfftot1 mmafm mmpfb otfinfo otftotfm t1dotlessj t1lint t1rawafm t1reencode t1testpage ttftotype42
-DISTCLEANFILES = config.force CXXLD.sh
+DISTCLEANFILES = config.force CXXLD.sh uhv* Fon* tmf.*
@texlive_build_FALSE@glyphlistdir = $(pkgdatadir)
@texlive_build_TRUE@glyphlistdir = $(datarootdir)/texmf-dist/fonts/map/glyphlist
@texlive_build_FALSE@encdir = $(pkgdatadir)
@@ -345,7 +349,13 @@ EXTRA_DIST = ONEWS lcdf-typetools.spec include/config.h \
include/efont/ttfhead.hh include/efont/ttfkern.hh \
glyphlist.txt texglyphlist.txt texglyphlist-g2u.txt 7t.enc \
lcdf-typetools-$(LCDF_TYPETOOLS_VERSION)-PATCHES \
- Makefile.am.orig configure.ac.orig
+ Makefile.am.orig configure.ac.orig $(TESTS) tests/t2c.enc \
+ tests/uhvrrc8a.pfb tests/uhv_dl.pfa tests/uhv_dl.pfb \
+ tests/uhv_dl.ps tests/uhv_re.afm tests/uhv_re.pfa \
+ tests/FonetikaDaniaIwonaeBold.ttf tests/texmfhome.otf \
+ tests/Fon.post tests/Fon.t42 tests/tmf.info tests/tmf.pfa \
+ tests/tmf.pfb tests/tmf.tables
+TESTS = tests/t1.test tests/ttf.test
all: autoconf.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -587,6 +597,99 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ fi; \
+ echo "$${col}$$dashes$${std}"; \
+ echo "$${col}$$banner$${std}"; \
+ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
+ test -z "$$report" || echo "$${col}$$report$${std}"; \
+ echo "$${col}$$dashes$${std}"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
distdir: $(DISTFILES)
@case `sed 15q $(srcdir)/NEWS` in \
*"$(VERSION)"*) : ;; \
@@ -778,6 +881,7 @@ distcleancheck: distclean
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-recursive
all-am: Makefile $(DATA) autoconf.h all-local
installdirs: installdirs-recursive
@@ -886,28 +990,29 @@ ps-am:
uninstall-am: uninstall-encDATA uninstall-glyphlistDATA
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check-am \
cscopelist-recursive ctags-recursive install-am install-strip \
tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am all-local am--refresh check check-am clean \
- clean-cscope clean-generic clean-libtool cscope cscopelist \
- cscopelist-recursive ctags ctags-recursive dist dist-all \
- dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar dist-tarZ \
- dist-xz dist-zip distcheck distclean distclean-generic \
- distclean-hdr distclean-libtool distclean-tags distcleancheck \
- distdir distuninstallcheck dvi dvi-am html html-am info \
- info-am install install-am install-data install-data-am \
- install-dvi install-dvi-am install-encDATA install-exec \
- install-exec-am install-glyphlistDATA install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
- ps ps-am tags tags-recursive uninstall uninstall-am \
- uninstall-encDATA uninstall-glyphlistDATA
+ all all-am all-local am--refresh check check-TESTS check-am \
+ clean clean-cscope clean-generic clean-libtool cscope \
+ cscopelist cscopelist-recursive ctags ctags-recursive dist \
+ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
+ dist-tarZ dist-xz dist-zip distcheck distclean \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-encDATA install-exec install-exec-am \
+ install-glyphlistDATA install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am uninstall-encDATA \
+ uninstall-glyphlistDATA
all-local: config.force
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/ChangeLog b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/ChangeLog
index e0aa57e6b2a..270ff3eeda8 100644
--- a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/ChangeLog
+++ b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/ChangeLog
@@ -1,6 +1,20 @@
+2012-08-15 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-WIN32: Adapted from upstream.
+ * patch-05-backport (new): From upstream.
+
+ * tests/t1.test tests/ttf.test: New shell scripts for tests.
+ * tests/t2c.enc, tests/uhvrrc8a.pfb, tests/uhv_dl.{pfa,pfb,ps},
+ tests/uhv_re.{afm,pfa}: T1 test input and expected output.
+ * tests/FonetikaDaniaIwonaeBold.ttf, tests/texmfhome.otf,
+ tests/Fon.{post,t42}, tests/tmf.{info,pfa,pfb,tables}:
+ Ttf test input and expected output.
+ * Makefile.am: Add the tests and their data.
+
2012-08-14 Peter Breitenlohner <peb@mppmu.mpg.de>
* patch-03-manpage (new): Fix manpages.
+ * patch-04-PFB_OPT (new): Correctly handle '-b' option.
2012-08-13 Peter Breitenlohner <peb@mppmu.mpg.de>
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-02-WIN32 b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-02-WIN32
index 9f50b9d2da0..26f2036a494 100644
--- a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-02-WIN32
+++ b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-02-WIN32
@@ -74,64 +74,59 @@ diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetoo
diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetools-2.94.orig/otftotfm/util.cc lcdf-typetools-2.94/otftotfm/util.cc
--- lcdf-typetools-2.94.orig/otftotfm/util.cc 2011-11-03 17:51:58.000000000 +0100
+++ lcdf-typetools-2.94/otftotfm/util.cc 2012-08-11 17:42:50.000000000 +0200
-@@ -103,14 +103,29 @@
+@@ -103,15 +103,34 @@ same_filename(const String &a, const String &b)
String
shell_quote(const String &str)
{
-+ const char *begin = str.begin();
-+ const char *end = str.end();
- #if defined(_MSDOS) || defined(_WIN32)
+-#if defined(_MSDOS) || defined(_WIN32)
- return str; // XXX
-+ if (!str)
+-#else
+ if (!str)
+- return String::make_stable("''");
+ return String::make_stable("\"\"");
+
+ const char *begin = str.begin();
+ const char *end = str.end();
+ StringAccum sa;
+
-+ for (const char *s = begin; s < end; s++)
-+ if (isalnum((unsigned char) *s) || *s == '_' || *s == '-' || *s == '+' || *s == '/' || *s == ':' || *s == '.')
-+ /* do nothing */;
-+ else {
-+ StringAccum sa;
++#if defined(_MSDOS) || defined(_WIN32)
++ sa.append('\"');
+
-+ sa.append('"');
-+ sa.append(begin, end);
-+ sa.append('"');
-+ return sa.take_string();
++ for (const char *s = begin; s < end; ++s)
++ if (isalnum((unsigned char) *s) || *s == '_' || *s == '-' || *s == '+' || *s == '\\' || *s == ':' || *s == '.')
++ /* do nothing */;
++ else if (*s == '\"') {
++ sa.append(begin, s);
++ sa.append("\"\"\"", 3);
++ begin = s + 1;
++ } else {
++ sa.append(begin, s + 1);
++ begin = s + 1;
+ }
+
-+ return str;
- #else
- if (!str)
- return String::make_stable("''");
-
-- const char *begin = str.begin();
-- const char *end = str.end();
- StringAccum sa;
++ if (sa.length() > 1) {
++ sa.append(begin, end);
++ sa.append('\"');
++ return sa.take_string();
++ }
++#else
for (const char *s = begin; s < end; s++)
if (isalnum((unsigned char) *s) || *s == '_' || *s == '-' || *s == '+' || *s == '/' || *s == ':' || *s == '.')
-@@ -165,9 +180,27 @@
- errh->error("temporary file %<%s%>: %s", filename.c_str(), strerror(errno));
- return fd;
- #else // !HAVE_MKSTEMP
-+#if defined(WIN32)
-+ char *tmpdir = getenv("TEMP");
-+ if (!tmpdir)
-+ tmpdir = getenv("TMP");
-+ if (!tmpdir)
-+ tmpdir = getenv("TMPDIR");
-+ if (tmpdir) {
-+ int len;
-+ tmpdir = strdup(tmpdir);
-+ len = strlen(tmpdir);
-+ if(tmpdir[len-1] == '/' || tmpdir[len-1] == '\\') tmpdir[len-1] = '\0';
-+ } else
-+ tmpdir = strdup(".");
-+ for (int tries = 0; tries < 5; tries++) {
-+ if (!(filename = tempnam(tmpdir, "otf.")))
-+ return errh->error("cannot create temporary file");
-+#else
- for (int tries = 0; tries < 5; tries++) {
- if (!(filename = tmpnam(0)))
- return errh->error("cannot create temporary file");
-+#endif
- # ifdef O_EXCL
- int fd = ::open(filename.c_str(), O_RDWR | O_CREAT | O_EXCL | O_TRUNC, 0600);
- # else
+ /* do nothing */;
+@@ -121,13 +140,13 @@ shell_quote(const String &str)
+ begin = s;
+ }
+
+- if (!sa)
+- return str;
+- else {
++ if (sa.length()) {
+ sa.append(begin, end);
+ return sa.take_string();
+ }
+ #endif
++
++ return str;
+ }
+
+ int
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-03-manpage b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-03-manpage
index 4b689c3cf14..a7826be9d09 100644
--- a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-03-manpage
+++ b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-03-manpage
@@ -12,12 +12,17 @@ diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetoo
.PD
diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetools-2.94.orig/t1rawafm/t1rawafm.1 lcdf-typetools-2.94/t1rawafm/t1rawafm.1
--- lcdf-typetools-2.94.orig/t1rawafm/t1rawafm.1 2012-08-03 18:19:11.000000000 +0200
-+++ lcdf-typetools-2.94/t1rawafm/t1rawafm.1 2012-08-14 15:33:05.000000000 +0200
-@@ -11,7 +11,6 @@
++++ lcdf-typetools-2.94/t1rawafm/t1rawafm.1 2012-08-14 20:53:34.000000000 +0200
+@@ -10,11 +10,7 @@
+ .SH NAME
t1rawafm \- produce raw AFM metrics from a PostScript Type 1 font
.SH SYNOPSIS
- .B t1rawafm
+-.B t1rawafm
-\%\-e ENCODING
- \%[OPTIONS...]
- .I font
- .RI [ outputfile ]
+-\%[OPTIONS...]
+-.I font
+-.RI [ outputfile ]
++\fBt1rawafm\fR \%[OPTIONS...] \fIfont\fR
+ .SH DESCRIPTION
+ .BR T1rawafm
+ generates an AFM file with the information available in a PostScript
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-04-PFB_OPT b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-04-PFB_OPT
new file mode 100644
index 00000000000..3e14503139e
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-04-PFB_OPT
@@ -0,0 +1,24 @@
+diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetools-2.94.orig/t1dotlessj/t1dotlessj.cc lcdf-typetools-2.94/t1dotlessj/t1dotlessj.cc
+--- lcdf-typetools-2.94.orig/t1dotlessj/t1dotlessj.cc 2011-11-03 17:51:58.000000000 +0100
++++ lcdf-typetools-2.94/t1dotlessj/t1dotlessj.cc 2012-08-13 13:25:10.000000000 +0200
+@@ -56,7 +56,7 @@
+ { "name", 'n', NAME_OPT, Clp_ValString, 0 },
+ { "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
+ { "pfa", 'a', PFA_OPT, 0, 0 },
+- { "pfb", 'b', PFA_OPT, 0, 0 },
++ { "pfb", 'b', PFB_OPT, 0, 0 },
+ { "quiet", 'q', QUIET_OPT, 0, Clp_Negate },
+ { "version", 0, VERSION_OPT, 0, 0 },
+ };
+diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetools-2.94.orig/t1reencode/t1reencode.cc lcdf-typetools-2.94/t1reencode/t1reencode.cc
+--- lcdf-typetools-2.94.orig/t1reencode/t1reencode.cc 2011-11-03 17:51:58.000000000 +0100
++++ lcdf-typetools-2.94/t1reencode/t1reencode.cc 2012-08-11 15:58:50.000000000 +0200
+@@ -48,7 +48,7 @@
+ { "help", 'h', HELP_OPT, 0, 0 },
+ { "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
+ { "pfa", 'a', PFA_OPT, 0, 0 },
+- { "pfb", 'b', PFA_OPT, 0, 0 },
++ { "pfb", 'b', PFB_OPT, 0, 0 },
+ { "name", 'n', FONTNAME_OPT, Clp_ValString, 0 },
+ { "fullname", 'N', FULLNAME_OPT, Clp_ValString, 0 },
+ { "full-name", 'N', FULLNAME_OPT, Clp_ValString, 0 },
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-05-backport b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-05-backport
new file mode 100644
index 00000000000..1dc59f07e87
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-05-backport
@@ -0,0 +1,14 @@
+diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetools-2.94.orig/t1rawafm/t1rawafm.cc lcdf-typetools-2.94/t1rawafm/t1rawafm.cc
+--- lcdf-typetools-2.94.orig/t1rawafm/t1rawafm.cc 2011-11-03 17:51:58.000000000 +0100
++++ lcdf-typetools-2.94/t1rawafm/t1rawafm.cc 2012-08-15 12:09:30.000000000 +0200
+@@ -81,8 +81,8 @@
+ \n\
+ Usage: %s [OPTION]... [FONT]\n\
+ \n\
+-FONT is the name of a PFA or PFB font file. If omitted, t1testpage will read\n\
+-a font file from the standard input.\n\
++FONT is the name of a PFA or PFB font file. If omitted, t1rawafm will read a\n\
++font file from the standard input.\n\
+ \n\
+ Options:\n\
+ -o, --output=FILE Write output to FILE instead of standard out.\n\
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-20-TL-binary b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-20-TL-binary
index 078a4d801d6..a3d41be4b91 100644
--- a/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-20-TL-binary
+++ b/Build/source/texk/lcdf-typetools/lcdf-typetools-2.94-PATCHES/patch-20-TL-binary
@@ -53,8 +53,8 @@ diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetoo
}
diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetools-2.94.orig/t1dotlessj/t1dotlessj.cc lcdf-typetools-2.94/t1dotlessj/t1dotlessj.cc
---- lcdf-typetools-2.94.orig/t1dotlessj/t1dotlessj.cc 2011-11-03 17:51:58.000000000 +0100
-+++ lcdf-typetools-2.94/t1dotlessj/t1dotlessj.cc 2012-08-13 13:25:10.000000000 +0200
+--- lcdf-typetools-2.94.orig/t1dotlessj/t1dotlessj.cc 2012-08-13 13:25:10.000000000 +0200
++++ lcdf-typetools-2.94/t1dotlessj/t1dotlessj.cc 2012-08-14 21:51:20.000000000 +0200
@@ -403,10 +403,10 @@
// write it to output
if (!outputf)
@@ -69,7 +69,7 @@ diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetoo
dotless_font->write(w);
} else {
diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetools-2.94.orig/t1rawafm/t1rawafm.cc lcdf-typetools-2.94/t1rawafm/t1rawafm.cc
---- lcdf-typetools-2.94.orig/t1rawafm/t1rawafm.cc 2011-11-03 17:51:58.000000000 +0100
+--- lcdf-typetools-2.94.orig/t1rawafm/t1rawafm.cc 2012-08-15 12:09:30.000000000 +0200
+++ lcdf-typetools-2.94/t1rawafm/t1rawafm.cc 2012-08-11 16:01:57.000000000 +0200
@@ -350,6 +350,9 @@
if (!outf)
@@ -82,8 +82,8 @@ diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetoo
write_afm(outf, font);
diff -ur -x Makefile.in -x aclocal.m4 -x autoconf.h.in -x configure lcdf-typetools-2.94.orig/t1reencode/t1reencode.cc lcdf-typetools-2.94/t1reencode/t1reencode.cc
---- lcdf-typetools-2.94.orig/t1reencode/t1reencode.cc 2011-11-03 17:51:58.000000000 +0100
-+++ lcdf-typetools-2.94/t1reencode/t1reencode.cc 2012-08-11 15:58:50.000000000 +0200
+--- lcdf-typetools-2.94.orig/t1reencode/t1reencode.cc 2012-08-11 15:58:50.000000000 +0200
++++ lcdf-typetools-2.94/t1reencode/t1reencode.cc 2012-08-14 21:54:34.000000000 +0200
@@ -1094,10 +1094,10 @@
if (!outf)
errh->fatal("%s: %s", output_file, strerror(errno));
diff --git a/Build/source/texk/lcdf-typetools/otftotfm/util.cc b/Build/source/texk/lcdf-typetools/otftotfm/util.cc
index e60953446fd..dc2024f6c50 100644
--- a/Build/source/texk/lcdf-typetools/otftotfm/util.cc
+++ b/Build/source/texk/lcdf-typetools/otftotfm/util.cc
@@ -103,30 +103,34 @@ same_filename(const String &a, const String &b)
String
shell_quote(const String &str)
{
+ if (!str)
+ return String::make_stable("\"\"");
+
const char *begin = str.begin();
const char *end = str.end();
+ StringAccum sa;
+
#if defined(_MSDOS) || defined(_WIN32)
- if (!str)
- return String::make_stable("\"\"");
+ sa.append('\"');
- for (const char *s = begin; s < end; s++)
- if (isalnum((unsigned char) *s) || *s == '_' || *s == '-' || *s == '+' || *s == '/' || *s == ':' || *s == '.')
+ for (const char *s = begin; s < end; ++s)
+ if (isalnum((unsigned char) *s) || *s == '_' || *s == '-' || *s == '+' || *s == '\\' || *s == ':' || *s == '.')
/* do nothing */;
- else {
- StringAccum sa;
-
- sa.append('"');
- sa.append(begin, end);
- sa.append('"');
- return sa.take_string();
+ else if (*s == '\"') {
+ sa.append(begin, s);
+ sa.append("\"\"\"", 3);
+ begin = s + 1;
+ } else {
+ sa.append(begin, s + 1);
+ begin = s + 1;
}
- return str;
+ if (sa.length() > 1) {
+ sa.append(begin, end);
+ sa.append('\"');
+ return sa.take_string();
+ }
#else
- if (!str)
- return String::make_stable("''");
-
- StringAccum sa;
for (const char *s = begin; s < end; s++)
if (isalnum((unsigned char) *s) || *s == '_' || *s == '-' || *s == '+' || *s == '/' || *s == ':' || *s == '.')
/* do nothing */;
@@ -136,13 +140,13 @@ shell_quote(const String &str)
begin = s;
}
- if (!sa)
- return str;
- else {
+ if (sa.length()) {
sa.append(begin, end);
return sa.take_string();
}
#endif
+
+ return str;
}
int
@@ -180,27 +184,9 @@ temporary_file(String &filename, ErrorHandler *errh)
errh->error("temporary file %<%s%>: %s", filename.c_str(), strerror(errno));
return fd;
#else // !HAVE_MKSTEMP
-#if defined(WIN32)
- char *tmpdir = getenv("TEMP");
- if (!tmpdir)
- tmpdir = getenv("TMP");
- if (!tmpdir)
- tmpdir = getenv("TMPDIR");
- if (tmpdir) {
- int len;
- tmpdir = strdup(tmpdir);
- len = strlen(tmpdir);
- if(tmpdir[len-1] == '/' || tmpdir[len-1] == '\\') tmpdir[len-1] = '\0';
- } else
- tmpdir = strdup(".");
- for (int tries = 0; tries < 5; tries++) {
- if (!(filename = tempnam(tmpdir, "otf.")))
- return errh->error("cannot create temporary file");
-#else
for (int tries = 0; tries < 5; tries++) {
if (!(filename = tmpnam(0)))
return errh->error("cannot create temporary file");
-#endif
# ifdef O_EXCL
int fd = ::open(filename.c_str(), O_RDWR | O_CREAT | O_EXCL | O_TRUNC, 0600);
# else
diff --git a/Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.cc b/Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.cc
index 67c752b70cc..71956c9200d 100644
--- a/Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.cc
+++ b/Build/source/texk/lcdf-typetools/t1dotlessj/t1dotlessj.cc
@@ -56,7 +56,7 @@ const Clp_Option options[] = {
{ "name", 'n', NAME_OPT, Clp_ValString, 0 },
{ "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
{ "pfa", 'a', PFA_OPT, 0, 0 },
- { "pfb", 'b', PFA_OPT, 0, 0 },
+ { "pfb", 'b', PFB_OPT, 0, 0 },
{ "quiet", 'q', QUIET_OPT, 0, Clp_Negate },
{ "version", 0, VERSION_OPT, 0, 0 },
};
diff --git a/Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.1 b/Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.1
index 98851636842..8f084dba9d0 100644
--- a/Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.1
+++ b/Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.1
@@ -10,10 +10,7 @@
.SH NAME
t1rawafm \- produce raw AFM metrics from a PostScript Type 1 font
.SH SYNOPSIS
-.B t1rawafm
-\%[OPTIONS...]
-.I font
-.RI [ outputfile ]
+\fBt1rawafm\fR \%[OPTIONS...] \fIfont\fR
.SH DESCRIPTION
.BR T1rawafm
generates an AFM file with the information available in a PostScript
diff --git a/Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.cc b/Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.cc
index 22246daca99..d44ed7835f6 100644
--- a/Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.cc
+++ b/Build/source/texk/lcdf-typetools/t1rawafm/t1rawafm.cc
@@ -81,8 +81,8 @@ to the specified Type 1 font file and writes it to the standard output.\n\
\n\
Usage: %s [OPTION]... [FONT]\n\
\n\
-FONT is the name of a PFA or PFB font file. If omitted, t1testpage will read\n\
-a font file from the standard input.\n\
+FONT is the name of a PFA or PFB font file. If omitted, t1rawafm will read a\n\
+font file from the standard input.\n\
\n\
Options:\n\
-o, --output=FILE Write output to FILE instead of standard out.\n\
diff --git a/Build/source/texk/lcdf-typetools/t1reencode/t1reencode.cc b/Build/source/texk/lcdf-typetools/t1reencode/t1reencode.cc
index 5885917d21c..acfecd7a22f 100644
--- a/Build/source/texk/lcdf-typetools/t1reencode/t1reencode.cc
+++ b/Build/source/texk/lcdf-typetools/t1reencode/t1reencode.cc
@@ -48,7 +48,7 @@ const Clp_Option options[] = {
{ "help", 'h', HELP_OPT, 0, 0 },
{ "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
{ "pfa", 'a', PFA_OPT, 0, 0 },
- { "pfb", 'b', PFA_OPT, 0, 0 },
+ { "pfb", 'b', PFB_OPT, 0, 0 },
{ "name", 'n', FONTNAME_OPT, Clp_ValString, 0 },
{ "fullname", 'N', FULLNAME_OPT, Clp_ValString, 0 },
{ "full-name", 'N', FULLNAME_OPT, Clp_ValString, 0 },
diff --git a/Build/source/texk/lcdf-typetools/tests/Fon.post b/Build/source/texk/lcdf-typetools/tests/Fon.post
new file mode 100644
index 00000000000..4a35ff18086
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/Fon.post
Binary files differ
diff --git a/Build/source/texk/lcdf-typetools/tests/Fon.t42 b/Build/source/texk/lcdf-typetools/tests/Fon.t42
new file mode 100644
index 00000000000..67f897d09b8
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/Fon.t42
@@ -0,0 +1,290 @@
+%!PS-TrueTypeFont-65536-65536-1
+%%VMusage: 0 0
+11 dict begin
+/FontName /FonetikaDaniaIwonaeBold def
+/FontType 42 def
+/FontMatrix [1 0 0 1 0 0] def
+/FontBBox [-0.055 -0.25 0.736 0.75] readonly def
+/PaintType 0 def
+/XUID [42 16#A2A74B 16#88F845 16#BE52B5 16#487F27 16#DBDB70 16#2] def
+/FontInfo 10 dict dup begin
+/version (Version 001.000 ) readonly def
+/Copyright (Created by Palle J\303\270rgensen, with FontForge 1.0 \(http://fontforge.sf.net\)
+The License is GUST Font Nosource License. ) readonly def
+/FullName (Fonitika Dania Iwonae Bold) readonly def
+/FamilyName (FonetikaDaniaIwonae) readonly def
+/Weight (Bold) readonly def
+/isFixedPitch false def
+/ItalicAngle 0 def
+/UnderlinePosition -0.125 def
+/UnderlineThickness 0.05 def
+end readonly def
+/Encoding 256 array
+0 1 255{1 index exch/.notdef put}for
+dup 44 /comma put
+dup 46 /period put
+dup 48 /zero put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 73 /I put
+dup 78 /N put
+dup 82 /R put
+dup 83 /S put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 124 /bar put
+dup 197 /Aring put
+dup 198 /AE put
+dup 216 /Oslash put
+dup 229 /aring put
+dup 230 /ae put
+dup 240 /eth put
+dup 246 /odieresis put
+dup 248 /oslash put
+readonly def
+/sfnts[
+<000100000008008000030000636D6170987C27580000008C000001E263767420002102790000
+027000000004676C7966D5ED745400000274000013B268656164E449F9E70000162800000036
+6868656105F4014F0000166000000024686D74784EA5093100001684000000CA6C6F6361707E
+755300001750000000686D6178700079007B000017B80000002000>
+<00000003000000030000001C00010000000000DC000300010000001C000400C00000002C0020
+0004000C002C002E003000450049004E0053005B005D007000770079007C00C600D800E600F0
+00F600F8014B2019FFFF0000002C002E003000410049004E0052005B005D006100720079007C
+00C500D800E500F000F600F8014B2019FFFFFFD8FFD7FFD6FFC6FFC3FFBFFFBCFFB5FFB4FFB1
+FFB0FFAFFFADFF66FF55FF49FF40FF3BFF3AFEDFDFEA00010000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000010600000100
+3000000000000102000000020000000000000000000000000000000100000000000000000000
+000000000400050006000000000000000000000000000000000708090A0B0000000C00000000
+0D0000000E0F0000000000000010001100000012131415161718191A1B1C1D1E1F2021002223
+242526270028000029000000002B000000000000000000002E00000000000000000000000000
+31000000000000000000000000000000000000002C2D00000000000000000000000000002F32
+0000000000000000000000000000000000000000000300000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000>
+<0021027900>
+<000200210000016E029A00030007002EB101002F3CB2070400ED32B10605DC3CB2030200ED32
+00B103002F3CB2050400ED32B2070601FC3CB2010200ED32331121112521112121014DFED401
+0BFEF5029AFD662102580001006801C7012E02BC00050000010607233637012E1D6D3C3C1C02
+BC886D767F0000010067FF0600AF00640003000017231133AF4848FA015E00010036014000B8
+01C2000F000013140706232227263534373633321716B8240D10281207240D10281207018128
+1207240D10281207240D0002000EFF62011500A20007000F0000250623223736333207362322
+07063332010D227B7B21227C7B7C1821211918212202A0A0A0A07373730000020034FFFE0228
+01EA00290037000025061716173217160F010623262706272627263534373637363332171617
+3637363B0132171607060706073635362726070607141716373601AD1301071E050303010C02
+084912414B5A2915061E603B3D55210302121B02063C06030304421B0F560901485127090136
+382B12E534342E040403053808014D4F01014E2A391E1E89482B4F0507222A05050505693D22
+171730640101B52B215101014F2200030034FFFE02E00299000B003500430000012315233523
+35333533153301061716173217160F0106232627062726272635343736373633321716173637
+363B0132171607060706073635362726070607141716373602E08A208A8A208AFECD1301071E
+050303010C02084912414B5A2915061E603B3D55210302121B02063C06030304421B0F560901
+485127090136382B1201EF8A8A208A8AFED634342E040403053808014D4F01014E2A391E1E89
+482B4F0507222A05050505693D22171730640101B52B215101014F2200030027FFF601E70297
+001F002F003F0000371633323736373627262322070607373637363332171607060706232227
+26270106070623222726373637363332171617060706232227263736373633321716331A5B31
+26130B1A260C134A3009090D2E490A0B68261B131C5F3A4547210804010808250D0D230A0403
+08250D0D230A04B307240E0D240A040308250D0E230904825052283578290E360A0C3C400A02
+543E59844027360C0E02162410061F0C0F2610051F0D0F241006200C0E260F061F0D00020037
+FFF6022D02BC001E002C00000107160702070623222726373633321736270727372623220737
+36333217370326272207060706171633323736022D422520367031406A271C1331B8421B1402
+58206B1329534A0D4A534B2B3C951E3F371D060A1A280D14462E0B0276226299FEFF441E543E
+59EB37672D2D2D3720363C363820FEB5340369172F78290EA42A0002003EFFF601C201CC0016
+001D00003733362726232207373633321716070607062322272637170617163332374AFA1302
+032E48460D454A602218131D5B353E602218137019320506431BEB5A172E253C2B543E598640
+25543E59267D0B0189000002000DFF110125029E000F001F0000170623222726371333030617
+1633323713060706232227263736373633321716B23931370401077671760D0F040614186708
+261010260C05030927100F260C05CB244B1B21022AFDD63A09020E02FC271208210F11281207
+210F0001002BFF5D01CE01CC0023000005060706232227262737161716333237363713362726
+2322070323133307363332171607017F11341B1D372603040A0E1A0403221102024B0A19090B
+252E48705F710F513F39130B091C4D26144806082C3A050135080801612E11063AFEB001C247
+5139232B0001002B0000017801C9000F0000371633323713330323370607062322273D121729
+3742705F711137280B0C0C0C5F0C3F0137FE3E4F460C04070001000CFF10019901CC00330000
+050607062322273716333237343F01062322273716333237363F013627262726373637363332
+1707262322070607061716171607013D17380C0D2E25090D10150E021A1D1E58480D47582818
+0703010B485D1007050F472F344D3C0D3C4D23150602083E66100605696C16052A2C143B0208
+6809243C24220A0A05341E262D1418482A1C243C2423090A2A1B2B35151800010024FF0600CE
+02EE000700001723113315231133CEAAAA6868FA03E83CFC900000010024FF0600CE02EE0007
+00001723353311233533CEAA6868AAFA3C03703C00020039FFF601E801CC000E001B00002123
+370623223736373633321737330726232207060706171633323701897109433A903328761719
+332D03707E1E203A1D070D170B0A2222282B35EBC222071A10400E5E18396D2220280002002B
+FFF601DA02BC000E001B00002506070623222707231333033633320736272623220703163332
+373601CD2B7B1415342A057095703E433A8FAC170B0A22202A3E1D213B1D08E1C91D051F1502
+BCFEDB35EB6D222028FEDD13651800010027FFF6019D01CC001F000037163332373637362726
+23220706073736373633321716070607062322272627331A5B3126130B1A260C134A3009090D
+2E490A0B68261B131C5F3A4547210804825052283578290E360A0C3C400A02543E5984402736
+0C0E00020039FFF6021E02BC000E001B00002123370623223736373633321713330326232207
+060706171633323701897109433A903328761719332D3871B41E203A1D070D170B0A2222282B
+35EBC222071A010AFEC60E5E18396D2220280002003EFFF601C201CC0016001D000025230617
+163332370706232227263736373633321716072736272623220701B6FA1302032E48460D454A
+602218131D5B353E602218137019320506431BD75A172E253C2B543E59864025543E59267D0B
+0189000100330000019802C6001700000126232207060F013307230323132337333736373633
+3217018F1B1E241202011A3A0C3B537053380C381B11341B1E3C31026E163906067D3CFE7A01
+863C7D4D26142C0000020039FF1001E801CC001A00270000050607062322273716333237363F
+0106232237363736333217373307262322070607061716333237017C133F282E4E470A2E3634
+1E080515433A903328761719332D03707E1E203A1D070D170B0A2222283C5D35222A2C144914
+156735EBC222071A10400E5E18396D2220280001002B000001CE02BC00130000212313362726
+2322070323133303363332171607018571450A19090B252E4870957044513F39130B0901452E
+11063AFEB002BCFEBF5139232B000002003BFFF60122029E000F001F00003706232227263713
+330306171633323713060706232227263736373633321716E03931370401074571450D0F0406
+14183608261010260C05030927100F260C051A244B1B210145FEBB3A09020E0217271208210F
+11281207210F0002FFC9FF100127029E000F001F000017060706232227371633323734371333
+370607062322272637363736333217168417380C0D2E25090D10150E0276702B08261010260C
+05030927100F260C05696C16052A2C143B0208022B9B271208210F11281207210F000001002B
+000001F202BC000A00002123270723133303373307019D735B347095705ED44CBDF4F402BCFE
+46C0AB000001003FFFF6013002BC000F000037062322272637133303061716333237E4393137
+0401077B707A0D0F040614181A244B1B21023FFDC13A09020E000001002B0000026B01CC0024
+0000212313362322070607032313362322070607032313330736333217161736373633321716
+07022171450F221F1D02024571450F221720010348705F710F4337320C010128440C0C360905
+08014545291408FEBB014545300304FEAD01C247513B08083D0C024120260001002B000001CE
+01CC001300002123133627262322070323133307363332171607018571450A19090B252E4870
+5F710F513F39130B0901452E11063AFEB001C2475139232B0002003CFFF601C301CC000F0019
+0000250607062322272637363736333217160736232207060706173201B92A8A1A1D8B06020C
+298A1B1D8A06028325413F250101254041E1C32206882B38C322068A2A37AFA50505AB040002
+FFF6FF1A01D601CC000E001B0000250607062322270723133307363332073627262322070316
+3332373601C92B7B1415322D3570907109433A8FAC170B0A22202A3F1E213B1D08E1C91D051A
+F602A82B35EB6D222028FED80E6518000001002B0000017801C9000F00000126232207032313
+330736373633321701661217293742705F711137280B0C0C0C016A0C3FFEC901C24F460C0407
+0001000CFFF6019901CC00250000250607062322273716333237363736272627263736373633
+32170726232207060706171617160170104B323758480D4758281808030C495D1007050F472F
+344D3C0D3C4D23150602093F661006884A2B1D243C24220C0D351D262D1418482A1C243C2423
+090A2B1A2B35150000010044FFF6013602580017000037062322373637132337323736373307
+3307230306173237DE362F3C080105392E0B42270C074420350C36380F161113232D5E141501
+09375E1D20963CFEF74203170001003DFFF601E001C200130000212337062322272637133303
+06171633323713330181710F4F4139130B094571450A19090B24304770475139232B0145FEBB
+2E11063A015000010052000001C401C20006000001032303331B0101C4EB5E29681EAE01C2FE
+3E01C2FEB5014B000001005A0000027601C2000C00000103230B012303331B01331B010276D0
+5C097C5C0F660A8D4A0A8D01C2FE3E010DFEF301C2FECF0131FECF0131000001003DFF1001E0
+01C2001F0000050607062322273716333237363F010623222726371333030617163332371333
+0174153D2328493F0A2630391A0101184C4139130B094571450A19090B252B4B703C64331D2A
+2C14680505734139232B0145FEBB2E11062B015F00010066019000AF02EE0003000013231333
+AE4801480190015E0001002BFF5D01CE01CC0023000005060706232227262737161716333237
+3637133627262322070323133307363332171607017F11341B1D372603040A0E1A0403221102
+024B0A19090B252E48705F710F513F39130B091C4D26144806082C3A050135080801612E1106
+3AFEB001C2475139232B0004002FFFF601CA02B1001C00290039004900002123370623222726
+37363736333217373627262322073736333217160F0137262322070607061716333213060706
+2322272637363736333217160736272623220706070617163332373601896E09443B5A160A09
+1556262C342E030F200F153C420A60544619110D951921202D1E0B050B1F0E12249D0A2D1717
+2E1109050A2E17172E11092E071907091E110502061907091E11052D3746222D6224101B1245
+1F0E222C3846313DBB790F32131535190B022B2F190C2715182F190C2715181D0C031D07081D
+0C031D0700030039FFF601E8028A000F001E002B000001140706232227263534373633321716
+132337062322373637363332173733072623220706070617163332370185240D10281207240D
+10281207047109433A903328761719332D03707E1E203A1D070D170B0A222228024928120724
+0D10281207240DFDA72B35EBC222071A10400E5E18396D2220280004003CFFF601E70297000F
+0019002900390000250607062322272637363736333217160736232207060706173213060706
+2322272637363736333217161706070623222726373637363332171601B92A8A1A1D8B06020C
+298A1B1D8A06028325413F2501012540411408250D0D230A040308250D0D230A04B307240E0D
+240A040308250D0E230904E1C32206882B38C322068A2A37AFA50505AB04022A2410061F0C0F
+2610051F0D0F241006200C0E260F061F0D0000040039FFF601E802B1000E001B002B003B0000
+2123370623223736373633321737330726232207060706171633323713060706232227263736
+3736333217160736272623220706070617163332373601897109433A903328761719332D0370
+7E1E203A1D070D170B0A222228800A2F16172E1108050A2E17172E11082D0717080A1F110402
+061907091E11042B35EBC222071A10400E5E18396D222028020330180C2715182F190C271518
+1C0C041E07071D0C031C080000030031FFF602BE01CC0022002F003600002523061716333237
+0706232227072337062322373637363332173733073633321716072526232207060706171633
+32372536272623220702B2FA1302032E48460D454A291F017109433A903328761719332D0370
+01272860221813FEAD1E203A1D070D170B0A222228012219320506431BD75A172E253C2B1107
+2B35EBC222071A100711543E59A10E5E18396D222028AD7D0B01890000020037FFF6022D02BC
+001E002C00000107160702070623222726373633321736270727372623220737363332173703
+26272207060706171633323736022D422520367031406A271C1331B8421B140258206B132953
+4A0D4A534B2B3C951E3F371D060A1A280D14462E0B0276226299FEFF441E543E59EB37672D2D
+2D3720363C363820FEB5340369172F78290EA42A0004003CFFF601E70297000F001900290039
+0000250607062322272637363736333217160736232207060706173213060706232227263736
+3736333217161706070623222726373637363332171601B92A8A1A1D8B06020C298A1B1D8A06
+028325413F2501012540411408250D0D230A040308250D0D230A04B307240E0D240A04030825
+0D0E230904E1C32206882B38C322068A2A37AFA50505AB04022A2410061F0C0F2610051F0D0F
+241006200C0E260F061F0D000003000BFFC901F401F90015001E002500002506070623222707
+23372637363736333217373307162726232207060706073736370716333201B92A8A1A1D2C20
+2C4B49271A298A1B1D2C1F2C4B49288C09193F25010106038B070191091941E1C322060F3C63
+3C79C322060F3C633D1B1CA505051C15312C05C41C0000000000000000>
+<00010000000100003F7D89BA5F0F3CF5000B03E800000000C1405B8700000000C1405B87FFC9
+FF0602E002EE00010008000200000000000000>
+<0001000002EEFF06005A02C2FFC9FF5402E000010000000000000000000000000000003200>
+<01B0002100000000014D000000EE00680116006700EE00360126000E01EB00340233003401CA
+002701E0003701C6003E0103000D01D6002B013E002B018C000C00F2002400F2002401DE0039
+01DE002B01CA002701DE003901C6003E0103003301DE003901D6002B0100003B00F0FFC901BA
+002B0104003F0272002B01D6002B01CA003C01DAFFF6013E002B018C000C0104004401D6003D
+01820052023B005A01D6003D0116006601D6002B01DE002F01DE003901CA003C01DE003902C2
+003101E0003701CA003C000B000000>
+<0000002B002B002B003C00480064008100D8013E01A001E80219024E028802A502F403050315
+0342037103A403D20403042C046A048E04C304F7050E052C0567058A05B605E5060306400668
+068B069F06BD06F106FE073807A707EB084608A208F6093E099909D700>
+<000100000033004A000400000000000200000001000100000040002E0000000000>
+] def
+/CharStrings 51 dict dup begin
+/.notdef 0 def
+/.null 1 def
+/nonmarkingreturn 2 def
+/quoteright 3 def
+/comma 4 def
+/period 5 def
+/zero 6 def
+/A 7 def
+/B 8 def
+/C 9 def
+/D 10 def
+/E 11 def
+/I 12 def
+/N 13 def
+/R 14 def
+/S 15 def
+/bracketleft 16 def
+/bracketright 17 def
+/a 18 def
+/b 19 def
+/c 20 def
+/d 21 def
+/e 22 def
+/f 23 def
+/g 24 def
+/h 25 def
+/i 26 def
+/j 27 def
+/k 28 def
+/l 29 def
+/m 30 def
+/n 31 def
+/o 32 def
+/p 33 def
+/r 34 def
+/s 35 def
+/t 36 def
+/u 37 def
+/v 38 def
+/w 39 def
+/y 40 def
+/bar 41 def
+/eng 42 def
+/Aring 43 def
+/AE 44 def
+/Oslash 45 def
+/aring 46 def
+/ae 47 def
+/eth 48 def
+/odieresis 49 def
+/oslash 50 def
+end readonly def
+FontName currentdict end definefont pop
diff --git a/Build/source/texk/lcdf-typetools/tests/FonetikaDaniaIwonaeBold.ttf b/Build/source/texk/lcdf-typetools/tests/FonetikaDaniaIwonaeBold.ttf
new file mode 100644
index 00000000000..5c1f4b6ca3b
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/FonetikaDaniaIwonaeBold.ttf
Binary files differ
diff --git a/Build/source/texk/lcdf-typetools/tests/t1.test b/Build/source/texk/lcdf-typetools/tests/t1.test
new file mode 100755
index 00000000000..10c0ece007e
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/t1.test
@@ -0,0 +1,58 @@
+#! /bin/sh
+
+# Copyright (C) 2012 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+failed=
+
+rm -rf uhv*
+
+t1dotlessj/t1dotlessj -a $srcdir/tests/uhvrrc8a.pfb uhv_dl.pfa \
+ && diff uhv_dl.pfa $srcdir/tests/uhv_dl.pfa \
+ && echo "t1dotlessj/asc tests OK" \
+ || failed="$failed t1dotlessj/asc"
+
+cat $srcdir/tests/uhvrrc8a.pfb | t1dotlessj/t1dotlessj -b >uhv_dl.pfb \
+ && cmp -s uhv_dl.pfb $srcdir/tests/uhv_dl.pfb \
+ && echo "t1dotlessj/bin tests OK" \
+ || failed="$failed t1dotlessj/bin"
+
+t1lint/t1lint uhv_dl.pfa \
+ && echo "t1lint/asc tests OK" \
+ || failed="$failed t1lint/asc"
+
+cat uhv_dl.pfb | t1lint/t1lint \
+ && echo "t1lint/bin tests OK" \
+ || failed="$failed t1lint/bin"
+
+t1testpage/t1testpage -o uhv_dl_a.ps uhv_dl.pfa \
+ && diff uhv_dl_a.ps $srcdir/tests/uhv_dl.ps \
+ && echo "t1testpage/asc tests OK" \
+ || failed="$failed t1testpage/asc"
+
+cat uhv_dl.pfb | t1testpage/t1testpage >uhv_dl_b.ps \
+ && diff uhv_dl_b.ps $srcdir/tests/uhv_dl.ps \
+ && echo "t1testpage/bin tests OK" \
+ || failed="$failed t1testpage/bin"
+
+t1reencode/t1reencode -e $srcdir/tests/t2c.enc -a $srcdir/tests/uhvrrc8a.pfb uhv_re.tmp \
+ && grep -v 'Created by t1reencode' uhv_re.tmp >uhv_re.pfa \
+ && diff uhv_re.pfa $srcdir/tests/uhv_re.pfa \
+ && echo "t1reencode/asc tests OK" \
+ || failed="$failed t1reencode/asc"
+
+t1rawafm/t1rawafm -o uhv_re_a.afm uhv_re.pfa \
+ && diff uhv_re_a.afm $srcdir/tests/uhv_re.afm \
+ && echo "t1rawafm/asc tests OK" \
+ || failed="$failed t1rawafm/asc"
+
+cat $srcdir/tests/uhvrrc8a.pfb | t1reencode/t1reencode -e $srcdir/tests/t2c.enc -b \
+ | t1rawafm/t1rawafm >uhv_re_b.afm \
+ && diff uhv_re_b.afm $srcdir/tests/uhv_re.afm \
+ && echo "t1reencode+t1rawafm/bin tests OK" \
+ || failed="$failed t1reencode+t1rawafm/bin"
+
+test -z "$failed" && exit 0
+echo "failed tests:$failed"
+exit 1
+
diff --git a/Build/source/texk/lcdf-typetools/tests/t2c.enc b/Build/source/texk/lcdf-typetools/tests/t2c.enc
new file mode 100644
index 00000000000..e55500e63a4
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/t2c.enc
@@ -0,0 +1,290 @@
+% This file is generated from `T2Cuni.map' and `glyphlist.txt'
+%
+% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ;
+% LIGKERN quoteleft quoteleft =: quotedblleft ;
+% LIGKERN quoteright quoteright =: quotedblright ;
+% LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ;
+% LIGKERN greater greater =: guillemotright ;
+% LIGKERN f f =: ff ; f i =: fi ; f l =: fl ; ff i =: ffi ; ff l =: ffl ;
+%
+% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ;
+% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ;
+% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ;
+% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ;
+% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ;
+% LIGKERN nine {} * ; * {} nine ;
+%
+/T2CAdobeEncoding [
+% 0x00
+/grave
+/acute
+/circumflex
+/tilde
+/dieresis
+/hungarumlaut
+/ring
+/caron
+/breve
+/macron
+/dotaccent
+/cedilla
+/ogonek
+/.notdef
+/angleleft
+/angleright
+% 0x10
+/quotedblleft
+/quotedblright
+/cyrflex
+/dblgrave
+/cyrbreve
+/endash
+/emdash
+/.notdef
+/.notdef
+/dotlessi
+/.notdef
+/ff
+/fi
+/fl
+/ffi
+/ffl
+% 0x20
+/.notdef
+/exclam
+/quotedbl
+/numbersign
+/dollar
+/percent
+/ampersand
+/quoteright
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/hyphen
+/period
+/slash
+% 0x30
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+% 0x40
+/at
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+% 0x50
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+/X
+/Y
+/Z
+/bracketleft
+/backslash
+/bracketright
+/asciicircum
+/underscore
+% 0x60
+/quoteleft
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+% 0x70
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+/x
+/y
+/z
+/braceleft
+/bar
+/braceright
+/asciitilde
+/hyphen
+% 0x80
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0x90
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/afii10145
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/afii10023
+/afii61352
+/currency
+/section
+% 0xA0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+% 0xB0
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/afii10193
+/.notdef
+/.notdef
+/.notdef
+/afii10846
+/.notdef
+/afii10071
+/quotedblbase
+/guillemotleft
+/guillemotright
+% 0xC0
+/afii10017
+/afii10018
+/afii10019
+/afii10020
+/afii10021
+/afii10022
+/afii10024
+/afii10025
+/afii10026
+/afii10027
+/afii10028
+/afii10029
+/afii10030
+/afii10031
+/afii10032
+/afii10033
+% 0xD0
+/afii10034
+/afii10035
+/afii10036
+/afii10037
+/afii10038
+/afii10039
+/afii10040
+/afii10041
+/afii10042
+/afii10043
+/afii10044
+/afii10045
+/afii10046
+/afii10047
+/afii10048
+/afii10049
+% 0xE0
+/afii10065
+/afii10066
+/afii10067
+/afii10068
+/afii10069
+/afii10070
+/afii10072
+/afii10073
+/afii10074
+/afii10075
+/afii10076
+/afii10077
+/afii10078
+/afii10079
+/afii10080
+/afii10081
+% 0xF0
+/afii10082
+/afii10083
+/afii10084
+/afii10085
+/afii10086
+/afii10087
+/afii10088
+/afii10089
+/afii10090
+/afii10091
+/afii10092
+/afii10093
+/afii10094
+/afii10095
+/afii10096
+/afii10097
+] def
diff --git a/Build/source/texk/lcdf-typetools/tests/texmfhome.otf b/Build/source/texk/lcdf-typetools/tests/texmfhome.otf
new file mode 100644
index 00000000000..d0af1152ff4
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/texmfhome.otf
Binary files differ
diff --git a/Build/source/texk/lcdf-typetools/tests/tmf.info b/Build/source/texk/lcdf-typetools/tests/tmf.info
new file mode 100644
index 00000000000..db7c3c839d3
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/tmf.info
@@ -0,0 +1,8 @@
+Family: texmfhome
+Subfamily: Medium
+Full name: texmfhome
+PostScript name: texmfhome
+Version: Version 001.000
+Unique ID: PfaEdit : texmfhome : 17-6-2010
+Copyright: Created by taco with FontForge 2.0 (http://fontforge.sf.net)
+Vendor ID: PfEd
diff --git a/Build/source/texk/lcdf-typetools/tests/tmf.pfa b/Build/source/texk/lcdf-typetools/tests/tmf.pfa
new file mode 100644
index 00000000000..512c10a6f5d
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/tmf.pfa
@@ -0,0 +1,195 @@
+%!PS-AdobeFont-1.0: texmfhome 001.000
+9 dict begin
+/FontName /texmfhome def
+/FontInfo 9 dict dup begin
+/version (001.000) readonly def
+/Notice (Created by taco with FontForge 2.0 \(http://fontforge.sf.net\) ) readonly def
+/FullName (texmfhome) readonly def
+/FamilyName (texmfhome) readonly def
+/Weight (Medium) readonly def
+/isFixedPitch true def
+/ItalicAngle 0 def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding StandardEncoding def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/StrokeWidth 0 def
+/FontBBox {17 0 507 611} readonly def
+currentdict end
+currentfile eexec
+8A776DF5437D053715F33367AD5C2F399F490C3C377EA6553EB427BAEE0B924B3EF673E285EC0C
+1078CA61959EC5E35844EC526506107737CF8BD3524F8AE01447B8090C2ABB680C35F02694D64F
+6FF22544B143DCBFFC763A72B7F5A7FE894951127BC7AE53040AC1D7B674A0302BEFDF70DB0319
+09A25FF691116431FDB007803108EAE2623E6E7F050C709A5ED08B482F66EA35D2045D89723406
+201EB465AE6B4E1864EDADC38F3B856CA55D9D49ACCBA4994BA0F8641AAFC5067A22577ACDCA27
+33F31D871C01AB90F1210F85B8158B108FB394C1B91120B926575CA86B910DA8639F189C07913A
+89356275D449956CE2BD1FE3F1C84F2E2CCAD5F1666CB376B897DFB049144434F4AB076F5E4F50
+A3F9BF36CC09B63AF52EC309D069DC90C7D719A2ADB8CC610A7E8397CCC2E7A6B6D3C543A0A344
+78F8343CD3C76B08F89757472AFE860682A8F65BBB0E7C4765F02CF3012B81E600979408843A7A
+E0854A225133A91814B06701F56511B57E0A8AFA1B2798B3C737A21790230DC019E92B14E5FD5D
+C72495C72FF221D9D635C30AE88C314123A21FCDAF0F0B176907F1C15039674CFDDAF16B1D6A74
+B8ABC54092E9211D7E889687061D66B27E3CB7FA9E9261B685B9CF527228CF1CF188967C261D91
+0B26F2B1B2DC6AD6C0CB2AFA8B56F62056C9F407167EFAB25663C1F923C59E35FF45EFF7F02491
+546A374F9DF315F190C12420D57FF4332924DDA695EE4FEDA8AE9EB4CBCE7AE22D753C4AADE6F4
+CC0CA59A7494B3BF6C0EA6AA22B1AD99B4A9FC5FD8B5A8C8E7F8952403F671392BF00FBCA653E6
+EE3CD08917B3436BE57989C5F21ED11CA12B14A49AD6EDBDD38B2D33C4E02173AB309C14853172
+2DD2F8E15717DD189FEB905C6736DF265500CBA309FA77ED56652AC3AB3A899BA0888C39FF09C7
+87AE2BEFB078F8C16DE0AFB1D0A3AE06ADAF0E9FDFC34E16DC23DC70D961A04C41B86CD92C26EF
+251F0312278E2CEC65A88B9CCBAEC510A5BF37DD1743BAB5CC56A691F1A98755F5135C142B04F0
+B3163DA29B72AD74426BD437D848EDD46E11B3D3ABB422AE01A866E1AF7AE92EC3A3ADCB460011
+8C3CE3822FDD10BDDCD22670E60862BDF4816C7CE4ED9F63EF7030D7CA5140BD7190897F10CC44
+BB2A70506DBDDF240EC18A5FB7928852E0A5C2B3985ED1977C74F2892E262CD2F43A4134394360
+CDBBBAE70864FCAA56EA9F63F7D7D5019E3CE27565A5A676A56886BCBBE03203CB4B007177BFC2
+77D91ABEB8368EB57B047C5F872FE1B0E037DE1C25D3DA915777B5785B47F28C20CEB3018A9661
+CDB72CE6CE8C7F4CE8E1D9B80AFD45E048E7A4CA97AE03883D59219162E57E21EC4A86E8CB8A14
+4F6DB3C7B7BEDE337F36457924ED9592AF34DF23763D9B750818D8DA1412A59989C681188FBCEF
+E4FE7B188FAE9DBD0AC2D182BA1B5BFEF5089BB3FA964BB44A5AEC8CFEE0436B872889CD577E42
+A99EFE3DC6CB0357DD4B15D0D25E2977E9C06CEC25F6A8D501E499127C5269311FD553D6124962
+AFBBA8CA792124F02E2AC4DA1C2DF10962571236500549B33DECE3684B902508651731E22734A2
+9973C30A64EDC222AF682ED66A0CE17E7C4E4470AD97541C23E25C8C3732089DDF470B6650984E
+CB76C0A7EBD8BD97E41FB7C153F7ED133529D9F1D92D5AADFACB1242479A31349DFE20A55A2A5B
+705C9CECF6D8B1A3AF15C6AEFAC2A2D9368A76E608CE6BE70FAA70C3F8D3A54FA88C4BAA0C4D8F
+4836AB1E75E2E21C1C6EC289CE91DBCE44561BBDD302FD7A3499F111C176A387FAC252C50D6B61
+41EEC790B56449E1FA715544AA1EE3EC5332D6CA85F86EE6B5D636EA182E8B1ECE399B2E3120F3
+F531DEC5CB58DB103D3FD14E3263B6B45E6271951E176E5132ADEF4F0A5C2410F561BDF3677D24
+E4B7FF9E9642D6982604968FD537345A1AE21D3260FE5388D9293D6223948277E0A97BFFA9F6F0
+B8C77E1B5E79ADF83D58DEA2EA800482F04CFAAEE21FDCBA598E0E0289B34B742F6C3194CBEEDA
+AE9F528E16AC31549932ED9621A77C9A0EDF0CAC8ABAB89ACDD51B051EB09E060ACC988BB011C4
+EFA88034E86B30F636E2CA86B3A8ACA59EB8629A8155594B93767A1A3E126544316EAE773E74EA
+303F33072AC571F4E8607BD82F69B21EBCF2C2C8C0FD4393A66FD94E63DCF1309D1A6CF6DA4C79
+8E7F76460DF0927441CFCACC512F998515DB0F0636E67032943A52FC93B31E520F3DB4A089CD2D
+F113A09BA2024E86346DD4D66DBE96F2184CE2DB0F2B9772DB6757ACF25ABE18D51F232C9085F3
+0E8DBB95A299030C8F1EE5DE4B9B9AF0C5DA0368B6E3CA8ECC6454B0982DAAED42ACF23EE60812
+FD3197359E30C510FB75024BC54E7388D13785E02D8C10589D3D6AD9E767A564F0FBC9A3C60212
+146B968D72BC8BF91C30C191065A0EB8195B12828E8DF5EA220FEAE54BF00864465F27B3BDEF64
+53F830BA3126570F96C2336562B4A352B01DBE82B029844D39B45AD5F21273B08FF447E05FF351
+D552B7848A3058C7EF83A52A750C5E61247AC8432507BE859BF8B789B7F5CE1F4F3FC1AF3F1F76
+A56A70819EBC9E137CA993A205E0B7FA0DB73C1C060D1F936136C14030214CE5579C02DAEEC481
+F6ABD3413D1EAEB406CBAB7D8B7CBF4ECA2065A92BC3CAB4B30A3291CBC434819335EFEE286832
+39207026CD6E0D53535B8EF3869815E6CE6F315408112546963C3B46CA96A1221C4CAF3506E091
+03629D4E83AEDEC6805571F4AB2C506DFA65570961C98C49618261E0E9B4579E7E80FE20C01E56
+753B143D140EEDB762657FEC356D15102CF6CD26ED82D9A515CF5D617A28EF4FC4FB349840E425
+783DA33640EFCDFF5AD04F36DAE69409F4AD59E5BBF3CDFE0B8554EEC10B87570283277BC9D250
+3DACE016053FE832D19365FF5FB56C89E564EA3659F514C756F5B07654C60868E89A9852A55A90
+5C183270B3A0B0ECCEDA1115CEB023B61ABFFF6678B8A4B01352E8E681E699A093B5D113DB87F2
+DB12ECC0978947E30942813AE525A79D0844612FEA0D2BF2A3D7202AB500DB086685F3A529C43B
+79FDA784E43518EC076F0952479768F2DD15007820802ECBB6BECFA78A627356C29AB307EBC89E
+B0CF3638A3FB8704A180E73B2A912F14D1D751A198148409810B1EC0B441E566E2A7B606BE8486
+098BB49CCDF7C2C44BFE161B5E69E90756A959E2C4CEDE14B8D57E20DC1846C83D89A0C3B0A12B
+0C3A83E052E54D8BBEE3DB72274D1F55CE54FC70B76093F84E7288A1AB7803137D2ABE6402C57A
+D8CFB196A1528F1F859937B66002879B4880C4CB73FE08D68C0CBDBBBB3D3BAA0283328E9679BF
+42D697A129BFE69CE62F71CCBF73735FC1E161F5637627AB4A3982ED29E23752C80FC4F4D3C941
+C1EFE7902661C63C76B78A13897BB0996D8B6FA326624B67604CBAE227B318C2C73981F088AAAF
+50880248B6D6F20E2AEFB44B360EB6925D94DD24445B4BF72CB2B0E736FC13501C6FCFE543280F
+D0E28556781135C3C7DF048505F8252F532EACFD0976D9D518D389DC907BB2AE247B1C99AB2068
+A875BF651F894743BF99A7777ECF9A9B9680AC167F44899EB19ED52C3AFB12BA046D25BAD3D960
+BCBFA3B6D1D726B20ED5A20BA233B2CF2BAF402BFB78C70E9D90C725DD6EF1BEEE0592E80D6CC4
+C21EDC86658E5C84947C9237CCA9D68FFEBC80C78E277582F41F4A0DFDDF51CBB34029690DA5C3
+58ABACD6115533D07AB6E6613D3F8426AD527B80EBBB9191364F9FB825F18F41C8C1A30A37A22A
+FDD33D3A6B72B2CEEC2763DC7ECA1436962296D9292A9717236F63935203D64B8EAE5C445813A4
+EC50DE2F9B00991DEAEB944298819F7C8EC869B77ADFF321F77DFA5FC6FA4889A3F9F9FBA23B17
+EA1CBFBEF56C02BB31276B827593B23658C3E4664FDC0E30A81428F85FDC991DCD9E616B6D6D49
+3D76160AA862FDEFBB38AC493C104802A23742367C8D9616F0186C870C6C6FD4E54F8337644D6B
+53C6DB6750EA715027391F147545E0D75E0646190AF5DB7CB31A063A7EB80377479099AD6EC9BD
+16E7B15D9ED3A4542E1322CE788525D098C2E3DF62C380BE98A127A793E6DDB94FC446DB4729D3
+44045895F5BBF3B0511B1A522141E4019A2055B40AD9904FCC21E82896C73080F7EC18FA0A9091
+95595B890C83B87260627A839EE7318249E4066C1F4F7C21E2342311AB7C532BE3021E6770F2A3
+D0C8F69FB249C9D707CE524CFE7FE1E2E0B877C1AC65CC24C089BC07334C90307985D4CBD0143E
+F84B6BA55218938ECC0BBCA3C1F05D53C54D6BFE5C1D36B649460BA43CB77983D2F65BF1F8467E
+712055FFEEF4B4CBD95ACD62CB223AA44C6BA3D7F32F17204A0DEC9511D1641C8472095CA0125F
+C7DEF0CE85FF532C5FA3C12FCF2CDEA2493A24B06A3251CF2E00BFBC94E8A66B925CFF55A5479E
+8E26DBF21D472DF760DEBB907D174512DB46B9A67E28DAB2DF7900C9AF6A2C61EFAB64235961C4
+8CFD299089B2F29E4E6C900E786172617B4FAA8A3D8DAA3DEFB3071A34B20A4394242D014E2359
+E07BB088CCB8D97EEC7F4E404D6FE95115AA87E5630D6AD4D0585C46D5B661A561F6F057DD01E3
+898C6797B154652D5FE35A262EC7BE21DFEA090CF1D26AF645E32E6ED681619DFD11891AA9D9FE
+5C5E6018AD5D86C8116BB1FF26868A8D48AFFE939FF35A2BDBD7BE6D239CB32C4CC11A97DB0E85
+5C2F07AA4C5F3EAE3FCDDEF5762D69EE5F09A3A1E60E27AEB9151B23E07A878F33BB52B8A3A264
+F6455A4725C259EC911284C781F7A23FE970A5E30D990DA4DAE8349461A1F2196F66759DA0CC1E
+CEC6BC804BAD65A74E4310F2E8AB5697D2D3AB15AB13FAA57985BB250C5F6B0F915E3D40D28D6E
+849484D87B6A85F7018B011011A32E96445F43D3C012B48A6BF657ACBCC3654DC38A4D3BE3B087
+A75E0A869478BCE6899F97968EEC2275CD549B8A54B7CA6CF88968C51933A15512F35B1479DA42
+380DF046A98F886445C14A832DE6139A90A39CC20BB825064E3BA99F6A4B616AFA50908D2981DC
+B59D510D7AE515BB357B0E107C1A692CCE83547572675D0EE379F2B0B0499A13CBAA95E77A1E93
+869DDE4A2C0F92DA82A1A4E825ABEC379D9054F649A97E5E230AF8B1907E9393B3137DC39CE27E
+1D6C1B6F6A8FED1EF7A6573824BAA90DB69D6F6D6DB8B9CA87D90F4E9C9AA91C2A856AB25A55A5
+4B9020552B549C75C9E848E67702519D9DB0358831A10F15E4DF902CA89BB92EEE887928190E89
+BC99F2E4C4FDFB99B71B6EFC34BCEDDFBC65BAF6438FA51796C8FA9EF319A33C6EA2061C303AE0
+CB35AB5E5EA488A9EC62CE502F52F96F8E98251795D9723FEF273E37815D51B2854551FDA9CBE2
+ECC666FAF81E9D9AE10BCAB2D0F1A00CC5314351D5207001B44F11B0E80E58C83169DB99ADC5FD
+42A8F1564BC34E56A99AFD6288EC44CE5E1C8F6C46E648BECC35EC9948E99E46FC213DE16D08FF
+CB2E9D2106FA166F04A4C84809A623C82635DC8FE6FE09B35F16D022FC6EB16F420529012D0120
+558DC4931C6718485D27B57A65433EF98BE5B0D7A0E39C3F38E1E2BC88CCA84A87A0856D80A1C2
+FB0268452138B2B93E34C1A4C5B527F2F71057F4E6C23CD3957A096E355B4E981AE3C6634700C7
+9A02B6C6E7B63717C2BC9A78DA6C222EE276F772C707DF3A2B45661394222D1F1F4A0791B21579
+853F4B6492FC0F8CBF9C6BCCCC53E897DF048A9A8AAC4D47F2E659181C2DA86453B3F91539DFB4
+D04B7644925C39ED47791DEC3E5B6D0D6C95B22C1EC07FC830D2B6D7EC0DBEDE3DA8BA28DA89B9
+B43566180AE3772FFAA19A4E3F908D0E5EE61A48665572CA8895A42702682D1C20A063155C6CBE
+1FEA065FB824AEE779ED0EEB16F6875C766D05F69A7ADF491FC5C6AF498541C75D046014D87F4B
+9192FA4A288F473ABCCA161FF59C16C66A1723AA99022F6E711D7088604C2924984FC8B5D43155
+A3D6DF58C0DB8A87965AB76D992266AEDF5B1C98C72F46CB73A73343D62DD8EB48808AFDC22221
+6A2C3A7A0CA65EF587444D0C598FF81BF573EA496870371FBD39E9326BAFA97782371DA1AA470D
+3C57BE2D65E3CDB7576B46DF369BC56774F40D304F29183E8F0D54F1BFC0A9B9CA9731457AD16D
+D8D01C9D93A9C4CDF8D4C389A807D7C3C91A119262F3BF2A9B79002D1D3B4D3EA9DBC84E3B3711
+4153276E8BC1A22EC37FC334B948134013931C02EA2F0E6254C45C8660E98EAE6955A93C3E33C8
+125024F5D0DB7EE9DB115B9396371F12B58456BDAAD22DFE71219058BAD8C9CB79687FD849B9FC
+0DF0817D2602264E6211331A66F69098E0EDC034B6D5FAA9928B570FD4B691F4969377B8215A8B
+838A0264261DFB9AE203E23BCA565EA70EF12E1EB4CFA18F1B78C1A7550BF571BE422D136754DA
+C03A72B36E8263C3CCBF0047A98B5DB9E681E9EDDDBE5DF0C1AAE9381AF59F15CBBCDCE69E2B56
+F930E3D894B4830D42A11226955698B865A3DF029B4E662F3A63459498848BDC5865AFF8D09B8D
+43D3BAD1E8398482B0787C5C494E0012257B7FBD5D43FE7E7C60DECC696D0D075A0FBEEE51F88A
+9F36843433737B416DA2BB0F979F569DBD0BFD37E28494B2F0F15890F36080468553454E4BD1FE
+9857E8002EA64EECF41010BADF4D433165AFE332C4AB0A7DFD4F5058F8C52C9459017E6886145B
+3DE4492D46EB265188B356C5D24D1F51FEDD551EC6B6B042257CDA7789CB19B40813DD3CD013A1
+F1699B8BFFD4AF6D1B4506B2BEC172BEE8129A811D1F10BD3EB1347508994CF051719BA49F9BE8
+2F05762E861A2A91A9ABDD06ECBC9DB61E7A534305A57B4C705521E3390821563A9A2F2D5BCD06
+F10487BB1340BA5C2BC74CBEDC624BF5ED969DC42AE3D8D01DB91E393E60291A5A48FBB0FCCFA9
+68B8791FF9B915BD5BD816D2C109C63185FA732E9211B0013925004F961548D87852D7D657E443
+E88571AC7DD58C2404669F1218A8AA1CC898EEEA02A22BE337445CCC27E29CCFF15F7CDED20E83
+BEBE87020BB3727A1FF96CDAF69D18754FC99082D7CB878D819EBEFE536286BE98D2D8D9D8356B
+E6D21E6ED2BE63622CDF9673ECD740A4CACF4E6C12EF5D64F8F45EE635CE0A487FC3C01B5798C1
+6C639503CEBB35BB027CB52ABCF2FDE1CEBD22BA69AE46E899904F9B52BABA043EF7E1A5D9B84D
+9D57D61101DA70E6A1909AEA4EC6935254DEE2EB0559CC417115D34C8A689F028E591215B329D8
+6F35376B15DFFE9323257F0B05143B8EDB7A358CA4B8519CBC3B3D622D772B9B9121B7B3E9CAF9
+774A9B0F7027A63527BCB63475833EFFEF07E8087F786302B6D637886B55EB18906ED1F6E8681B
+552372287C3C86D79F6EA4BB0D1FDADE94A33B2AE3165836E5BB3F83197B1E11C181EF071DB001
+BB45F953DC4396F0F3BB1EBE33B4EF1E2B4CE3A09FE4322C6EB4E263E83643D286805A12371253
+2457ED7B7FD8794C8BD959CF8A71FE63D916565682FF21A19B6E4EB51DA81B1F476421E2D7056D
+0583A4124A29B5F5D1A8D6B6785A85F7D4025FE99EB0A0D94D314C7692A3CCDB259E71080BC335
+C802178AD2D8E0D53779D6E56D7F8FC78C6BD4C49581F3FF8512CB0A8C91DE55DDB12E7FFAE085
+F67C1D9E087DE3F2BB894D660AB167E2679FD4DF6AE2445D0B6D1052E556D382A7D053CE0AFFBE
+157FE832233302349EDD1BC042D7D30026D926839E61B08938A0C3201681E392E90A59AB74D1E5
+6CF28F94B327C4C8E010E084D361FD93184C0DD08DB937995F325F2896EF0A4FAE756EF84DD93B
+3C9A149F5BDD8F1FB9D78D7DA692D7F755DC9C21578374E33AEA389EE55A389CF04E82B5F83283
+56686E98C9E28DFA93A6E800F89139B6013CCD1F8EB2E4454E8DAA27DEC2496E3B5DB7256A2184
+50C5174FDC0EE76479AE39784F5B0EA12008252177EEF36C178B7D3D32885DF72EF085F63C0883
+DC4615C360DDA0D4786D1C5F8404579113EAE37156F487AFA0AA7DB39CCB20694B03D9959B4260
+D441F282F7CAAD08959B8CB19D9D89D9F437A676727F3D33DD13B9FDC1B6B67463B40AB47B40C5
+7EBDF0FCB8DA1A5C8E5401A52997D43AD94B001EDCA457CAFB6FB6D7E8DDEE33E4EADBABAF3BF2
+627853DE6965BA42DF54F7006E81CE76D3AE2DBCCAE3C934CA2E5D2F1B6809B55EA366133ABB2F
+DDFD4256C13EA79E95A38B85FE3341FE4F6789C490A9E6AD560116E54DDB464484F1F7197D99AA
+6EF3300DE961F35061B43FFE7EF280FEC158BA64762B15175B10E8F978B9CB877373B7F1D48DA9
+20819382F06CE085DFCFF39426C5AD1BFF83339193785B4E052B1D750E8A1252A3681F34E59ED7
+406861DBACE7D8D36D33B7EFE5727BBD2B22B7CC582BE0926B1FAC19094C37755B9E917B7B060C
+5B33026E3DDAF3BA715D4DE125E15ED0261F539615555571DD718DF2E204EDC982FD01198ACDF8
+D27855E709842C6E7FF9AD1C3BA2AC9B809A4FFF326F5A93B1C760A6E7570BB96D3529EE7A6AB5
+DF94A8A80F9EEA14748343977E5EDAD7BA11E02FDA2C8E30FC707DCAA2083188B76DACA039F24E
+3FA05FC095AF4C065C19D698D95534A74681215010B1327931B4D2DEA0F74B8914FCED9AF22E0F
+B235E9EE4CC9B3739F66A274BB7A7C821A86C46953160D9DD7A475FE2F0F24B1A6898EF15381B1
+9B097B36FFA5F5582C1CBC38AB8A02B7D677B70C07CB4AAB5B638B7DE6DAE25F4E9EE1AA706F60
+34D90A0F27DDED7BD27C9E81526010E20A3606FA35039CC4B090FF7F04DF18461A5FCC7E31DD1F
+F55D527594FADCE087DB1DD66B2EFD1EB88270779212AE5F0ED1AD3528D5420407087CC8C56503
+DCD351B919989A5E0A8EE8B7DAD308D820053C8B1AD5E5180B05F5D7EF1C1B811053F63FC813AA
+77CB6A74321B46A5200196821A4859B4EBBEF8F1AF4DE1DAB0FFAC8340F2E0866308D62A545F6B
+7F7BA3D8333CB36C41E71C4D79AA096350F4445B9BAC95C7BE1B0365B76D7D938960F46E42B9E2
+D40000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
diff --git a/Build/source/texk/lcdf-typetools/tests/tmf.pfb b/Build/source/texk/lcdf-typetools/tests/tmf.pfb
new file mode 100644
index 00000000000..e9764c0f6cd
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/tmf.pfb
Binary files differ
diff --git a/Build/source/texk/lcdf-typetools/tests/tmf.tables b/Build/source/texk/lcdf-typetools/tests/tmf.tables
new file mode 100644
index 00000000000..a11a6699435
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/tmf.tables
@@ -0,0 +1,10 @@
+ 499 CFF
+ 28 FFTM
+ 96 OS/2
+ 322 cmap
+ 54 head
+ 36 hhea
+ 10 hmtx
+ 6 maxp
+ 618 name
+ 32 post
diff --git a/Build/source/texk/lcdf-typetools/tests/ttf.test b/Build/source/texk/lcdf-typetools/tests/ttf.test
new file mode 100755
index 00000000000..14ccd09507b
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/ttf.test
@@ -0,0 +1,48 @@
+#! /bin/sh
+
+# Copyright (C) 2012 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+failed=
+
+rm -rf Fon* tmf.*
+
+cfftot1/cfftot1 -a $srcdir/tests/texmfhome.otf tmf.pfa \
+ && diff tmf.pfa $srcdir/tests/tmf.pfa \
+ && echo "cfftot1/asc tests OK" \
+ || failed="$failed cfftot1/asc"
+
+cat $srcdir/tests/texmfhome.otf | cfftot1/cfftot1 -b >tmf.pfb \
+ && cmp -s tmf.pfb $srcdir/tests/tmf.pfb \
+ && echo "cfftot1/bin tests OK" \
+ || failed="$failed cfftot1/bin"
+
+ttftotype42/ttftotype42 $srcdir/tests/FonetikaDaniaIwonaeBold.ttf Fon_f.t42 \
+ && diff Fon_f.t42 $srcdir/tests/Fon.t42 \
+ && echo "ttftotype42/file tests OK" \
+ || failed="$failed ttftotype42/file"
+
+cat $srcdir/tests/FonetikaDaniaIwonaeBold.ttf | ttftotype42/ttftotype42 >Fon_t.t42 \
+ && diff Fon_t.t42 $srcdir/tests/Fon.t42 \
+ && echo "ttftotype42/term tests OK" \
+ || failed="$failed ttftotype42/term"
+
+otfinfo/otfinfo -t $srcdir/tests/texmfhome.otf >tmf.tables \
+ && diff tmf.tables $srcdir/tests/tmf.tables \
+ && echo "otfinfo/t tests OK" \
+ || failed="$failed otfinfo/t"
+
+cat $srcdir/tests/texmfhome.otf | otfinfo/otfinfo -i >tmf.info \
+ && diff tmf.info $srcdir/tests/tmf.info \
+ && echo "otfinfo/i tests OK" \
+ || failed="$failed otfinfo/i"
+
+cat $srcdir/tests/texmfhome.otf | otfinfo/otfinfo -T post >Fon.post \
+ && cmp -s Fon.post $srcdir/tests/Fon.post \
+ && echo "otfinfo/T tests OK" \
+ || failed="$failed otfinfo/T"
+
+test -z "$failed" && exit 0
+echo "failed tests:$failed"
+exit 1
+
diff --git a/Build/source/texk/lcdf-typetools/tests/uhv_dl.pfa b/Build/source/texk/lcdf-typetools/tests/uhv_dl.pfa
new file mode 100644
index 00000000000..494eedc7f57
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/uhv_dl.pfa
@@ -0,0 +1,190 @@
+%!PS-AdobeFont-1.0: NimbusSanL-ReguCondLCDFJ 001.005
+%%CreationDate: Wed Aug 3 1994
+% Copyright URW Software, Copyright 1994 by URW
+% URW Software, Copyright 1994 by URW
+9 dict begin
+/XUID [1 5020913 2322999] def
+/FontName /NimbusSanL-ReguCondLCDFJ def
+/FontInfo 10 dict dup begin
+/version (001.005) readonly def
+/Notice (URW Software, Copyright 1994 by URW) readonly def
+/Copyright (Copyright URW Software, Copyright 1994 by URW) readonly def
+/FullName (Nimbus Sans L Regular Condensed) readonly def
+/FamilyName (Nimbus Sans L) readonly def
+/Weight (Regular) readonly def
+/isFixedPitch false def
+/ItalicAngle 0 def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 106 /uni0237 put
+readonly def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
+/FontBBox {-136 -225 820 944} readonly def
+currentdict end
+currentfile eexec
+8A776DF5437D053715F33367AD5C2F399F4A3C4AA93FCBA250D54A7FA4D42ED633AA72E9BA3524
+9FEB6AB601831178A0690247FFCED3A15C9247FF52A6532CF582CFEB24204AEC140A2201F906F5
+B5CDF776DF1D8C3C1BB0985C38BBA74E00029BEDDF054A05B3B58985E702D2EB02E7FE3316CAC3
+A26DF2A45F5C8EAC11F6A49E79410F4873FBAB97238F123226CBFF6A289FB9E4691F8ED807C137
+C58417798F0381B07CB95AAF0FBF147DD54522894A29759A34CE5A8EF84645EE900D569DC6F224
+ED221522988299C62B184883B76599E2E9B764A8332728F100FBABFF0130700F37057D0803712C
+68D80564AD85A1FB1627D2D8A57A8C4F4E500671382801CCB781A28D3B7F94977D467410DBD713
+B6CEB0739972ADF0655BC62E41028E8F0F4807E7FC46B04028C7426B73282F6A0F1D927C2B967D
+2D1159E84555D3D137FDC7916C501EFC8CB198BB3CCEC4D6238810E0E2242D7ABD704CBAEA0BC5
+14290EFD29D231F461821D89C2A481CC3629806E3A19D4061AF6CE2EEC98258A60A9A0E55D83E8
+ABCDFE0CE041A71B0CE66B3975994FAE1A10501DDF574F108E3EC20B62565A2D197F37A43F04A3
+3234D8F830BA2182960BACC37DC421CB518066D9CA204CF47B1BA004E23C50D4E99FEB2C090924
+34FD9587B668585C24AA810D05602B972811AD643DC907720DABED3187D2A7C7CC5BBB0483C8AB
+8B30DE4946F745FE5886F8FE808436EA1C2297DC8AA1E8582F878F0B3D6739C1CF3DF8575CF84E
+EF242B72A1A46723C2B527D7DA458DFD9BD359A5F95971926EA5F9111BE912B187C98027EF1C13
+8CB8B8BF7CFA44701B6E876BC833A4809B58408574C26A511BB88DCC8679D6C5F2178A4A8FF769
+3E179E6B45BA2EF6CA772A67B0A03171063A2856A63267CA8E17FF61A03AA18C68882F92FE4123
+02F79B5C2966C55BC04E766DAADDF0F74DA7D0D09E4C618453074D3CC3E591AACD7F034D853307
+D2CE251B4B5A3D2443FA760ECEB2C63EAD4BF74F1E5CD3785271BA8CDCF28E81A7BE12403CAD2D
+9BCF7406708129D7FC702013FDCF84F433A2A4D940B2293215C6D7DCB9940033CE9BBC5626F299
+1C85D651A4F2A85A8FC036F3583ADCA56CC9D14534C83B14C8187AC73AEE2B63C6236AE04C475C
+4227EC552B74C12429D0658346B1FF72ED222187021BCD51B1AEF783C49A465871EE266F7BA65D
+B794FDDD92511EF7E76F8DD7086AF1F5633728C29E7F9F549867E769E288BAF33F4C31D3EBF1A6
+9D795A40252D021D5D219435A7D82AA92A612512C0441D2F688B2992950A37C85FD47298A73D16
+9DB7E9DD5020199893AADEC37D7C243D18C277A33F6077EE8B6E765FE6B7FDEC4A17880D72FFD3
+0150CB894D20093260CA64384BB666E51C9B69274DD20872149B42C82BB3224095393C24C1C1B5
+30F45559EAA5C3D510163CF44F589EC823A8B30341E8591593BCC282D65C974A0DA6CCB4EE6F28
+0A7E3F4F0AEC870BE8A81F78D4E635892BB1BED62A1F254C67CD0FB8F88F8B5FFC76EC01CA3F75
+F7B1FB2EF96B3529F7E2ADB2B07F3C170A809F85099B7B51748F5CB77B9A81071963D664E4485A
+2C2CDCB1EC6F3647986AFB6068FC0A6454AD6A780A327290D541EE553BCE526871486618560AD2
+CBAC0AC17C86511E6C7A1195B7548008B0B05962D00FB27916BED5135A63A36F7D29FDCB9F7B50
+129524F5DC0C82CD1D16B1171B21BFA756F59BD601DAA51A6C99F8BCAC305F2AD53269AD383BEF
+C71280725D2928A3EEABBCFB4367042978CC22EC2B6E450696DC045493849483FF641CB1712410
+D0754C4D18E600B50FBA052C966428ECCA0672626C4F77BFA5AFDFF28D4F65CB602CCFDBEF4850
+4E2D966DA6FDAEFCE351ADE2BD8E83150023F04C66788F0E6B5FAA3AC1CA9224634185A44BC5EF
+DF9EA935CC36E9F380079D3604CFC112031793288D22470EC75FEE26AA7E697F6ABF45973CFAA2
+C2532543994A113DED1343F1A6D6AD2C0C624B8EF5CA1BB4A3AB0F4503F961EE58527DBE9757C3
+5CF973571B396DFEDD71DBF542EDF6CFFE92CA0DE81693EC8C6C340FA8082A9925A02D566DB577
+B196ECDAE18620AB1572997885CDB45E62B1C2142D4D0E079F93779C797E3CF37094A948F4F2E9
+CFD277DBA13D88F26744DF9934C23CA78EE83E1D5FDE4B53D69B9ABC11D054084A9AEF2042D785
+2530C6DEABC52B155633287E8CB344F580BAFB335317D2CA3E2DA334F25A72D20B2A4D1B2768BA
+F763FF523EAA68E759BBD953AD5F3DCB1F36E47406A774032CA3AB287DF17292F6EA51681C8A7C
+7BB640D933C6B70B6A8AE98482E3251C33D0728F9860912DE29D306765B61DAEA0C392C5DE4938
+CF4E6E699BCE30DE0B0B290DA25D4F0C2405BE40DA104BEE43AAAC334B8F354E8F120F4FC0D819
+D5B88449D2E37A8C89E122212B514520B76CB5EB3104C798F3EE24F0B4AA8937F562583A793B8F
+07D220B72AB34F1546CE82184DEA7D3F4D29A41AD4400E48F851167E7A41FE0190AEF2CA75B2A7
+207C623F3F6ABD67B06AABAB336FC2E0F3553BFE1D8C5DD142BF19E8E6E20A375ED738D5A0A8C1
+5FFE65B704383B591C8B08648329FAF08AAB8194B0F4276A5DC36EBE0F1464003F2DFD0CA0B8CD
+A7CE1502B1939E4291D3B86E9B2C675197CF1A344C30B6822F9CB2ACC3263D253922761C341CDE
+988779EA6DA7CFAA713360FF05507E6B71FE667EBE7CFC187ED5AE5977F730111D33E2C5A3617C
+BB251A8E1CD68F8BDA899609F835279C3F13D8558D6C9B32B4F889048682EF71E69727097D4841
+27D2D806B038F74F59DFEAD03CBCB011870D59B0A46E1B823DA2233C5DD123DC0B09B21663A634
+5C77984B191B055E22171A935B3EFCCB7DDD1FA83011A3DD61EF9C621DCF2CC3381E3EA2D9DB31
+53EB875EDD0B30E0DCF84C486E71FE4FFCA2B879F24B54449D2B3007129F6D62BFEC498B5A9920
+B26E0A664C6D26399FDAA7E05AE7A5C1748C0EAD4E205C471DD6338748A2E0B75F0DFEE9849F7E
+324DC3187F5F253C366B34C09C69C279218C3CF6A4B5B07165FCF72F5ECA70EB1FA31FE6AC2EF5
+C1F7E82F87286F13CA6045FF156AF7F9869B367BD12B815DFF704CD46FF799332EB36733421CF9
+ED572DACCF08DD3A8F5123A2E49F81D76E0F12336CFFD8C02F5EE0B323C2D035F7080041985F5B
+75A933C0701C5F06686A355AA7540E69254D167E701D96FF9885D2E51FA1F11EF51322A438BB10
+66A7CC31A987F0AD60B16BB433932D347B81A04D973189D9CB7866DF03344548750274655A1C20
+D0A432A3CA8AB6BFEFFE683AF0632ECB1FA62031FE68FDD08ED586ACE7CB33E837D7983033A3CB
+000202F9551E481348505F7E6C1A974FE11FC0BE8E54071D5434889167C4D978B2CFEB06AB1170
+C900BA5206E90466BE5511E19AE5EB01059262E336FCF23ED925A4537D65D81E7397A3526897D9
+A4A34B57EA0722208E72FB281AE59759351F534C6FA434B58C5048A7673682AB3AD05C41276EE4
+F8C0E43F85E6A9856C2EB04AB36C62DAC1EEC99940DFC3E7312B6E04BD297036C1DC9AF1CBD1C7
+C2F607BE5B36CF86573F0351B8179FF968DD24B5EE0B6BE2226DF66FE6EF04E50F8EC8CE38212E
+2EF44D3FC3AB4042139CAC4BDBBA179B53B004E2C9ABCDE37FC30F444C900357F316D1BFD3F603
+F468F060709ED478547F081FC2365FCB53B316D05F4D8CCA1B69949399860F8B79805CD88E91E3
+E0DA59060A04C95B63851C5931297EE3A4578396B9C3F40ED3A8F2BA3E9D9A130459635426D7B9
+072E6ACCA278B95961300409A41EDCA6608CD09E8B03D23C567B085ACB99565827A8EF278CC669
+30C316D97065A2768A2CBB5F49597D45037283CAD68DFC023930F35C78D4BEDD9B27DDFD1F66FB
+F426BFAFF7191BAAE4CAE0FF7019DC227B545C014AE96C2B27978BB0E751C64182F53D3B093BD6
+4FDFDAF25F9A24D7719A14CC67EE8B69394AAB2A92B870D58AA223AE755DB7380E1E594E888C54
+06CA46C0585496152B7AC9E5F687C08A2150D5F7601ECACF3F0E622D9F335873D0B2662C041F25
+3E2724F25780D0D6E881BE543D73F1FEF2DBDCCC6051573AD32C5E385137ED7895D6E087466E25
+EB950EE954DB23C4974140397868DFAE2BF002C29C636F0F57E3B8F1E804B393ACB1FB1332658E
+371C78EA038EDD70006FEBF351AC3325679EC27F4B495EFEA5C2ACE5AABE13822812211A2383FC
+BCEEDCC9A674572E83E76D12C1B53834FFCCBC8C1E8BCBD2CC0C22C2E1A8DC854E0AB3A1114DF8
+51A8D19C1062FFB8C21425C2B0B0CEE5322903E89742A251CB5546D39F3067F77FC8ADC8CA97A2
+26B643B43A8306ACB45AC606E416FDEC9903EBCC7CEB9DAE3406C978797AED31FBBBF0C8770D50
+BCC7F5EF13CEB55FFDD4CC5A6AC8FE32115DE81749D7059ACC3E26FA0F698FE0D7ECB538CD06FE
+493B8A7C9C59D057CF2AD36CFA54FD40989228BD094A8C32A050407733536CAE2B38957B1A6D8C
+B41714CC9E6003123B6BB0E10A12D8BADBC2B0082A71D5574B33DCA8A9D67402B71767F4B8F16E
+462A74DDEF6AB0DFE3A03F08DDA38D8B8EC1CB9B3DD0EA934A132380E80B4ACB4D26B49448E5C5
+4FB2A3EEDB2795BE76EA690CF18ABAA29011A2F9ACD2762D40EE90D506095969C46726DA571061
+00F045AE6AECF877D1A5247A0C331BABEE744E42E59C36D5A342B3E64C716333673A52D0693BFB
+735BBC6F9DA1684B2F54A0171A1CC05787E9DEEC746EDD9FA53C1DE44D80994528044F51D14862
+3BF84A5EED86BC13FFCD2FE8C5CD01A1AEBCEAD756FFD1336CF2E7F81F3F0790D302E553C3904E
+399DE86B1B1A6EE2115795337586ACAEAF4D6FD1000FBB91179E345D2ADA6F9B668BD3C23E6355
+03066D11AC64CA0426E1D37DDE0068A2CE9F3846D2DD85BA475FA1868DB575E8118EEAD5D7F211
+DCEEAB4B15FED5F125DE96E75878CB0B3BBC80AD8D052223BA6FB95B972AA603C9130D70E3F28B
+C6C6E8462B6D82EA729555949194B94155D60A5C1174EA0D36A31F9050F95BF70407B0FF824B41
+337AC6DDEC50617D21F74F7CA6B6C85DEB08373CF0B3E4C29D5BE4F2B5797DB951C7E6E0313641
+DA7F0FB1DA1E74D733EAE053E4E54661D012C1B090C2E7B4B581AC4FF21BA87981C5FFA9768D77
+F9FFADE246BAFCF30A2985071E425EA2F5A40331AED05297831B43B5DC94C62E7E5D95082AB102
+BCE44682A8959CC43024DF7FBFBC8D0E60C28A8DAEE61D506340258099D97D0649069F3A8CCCC0
+67FEB9E6C782D1B867AE1392006D857A21BEE5EDFEE199D51C4D6619849D84BF8243EE94A34A39
+6557450E39F680B6A2854A58CD88DDCB2751F81EEB24FB4D091E787D6AC451C3FFC953DC2992AD
+6DAA0ECF16311D5CE57E8D9C240BD5B95CEBCB7B3747FB8D3E95D3BF98172C008FD0CD69A605DD
+1522C8424BBFB62B48F3C9C88A58E19B4FC051D4BD3C0B019D55AFCF4BE74B1907574606483E2D
+7DB5495D8C1AF25C14DBC4BBB39B17ED53EF6E69FCF6D26C2714442E471D04217504AC9A6E86E3
+B29BCE9A419C88B891AD681225ED86D059713A23A2753DDF1E607D6ED0FBB2FA535B5C89220F62
+AC9D912C06C8B73E25C02CDF4036E0DEFFB83A6F17121DF3E2DB6B20586A8B5E70DD350D6D693A
+2EBD81AC0D9E7E998D7E9B22676D0AD781098CB142A1671A77D548AAFF379A22076EC9481D732A
+3F5CD3E55944A0DD109E84280BA5C682CC0D00196BBCE1F4D49490065039333BCD761AD078E88E
+81DBE4C9070F7AECDDBD6C3F3C7CB8F6F126A084E185FEA045A80851BC60E75AE1F8F3F93CA6EE
+79233E3146B04C6CCB0892B45E8D138A39F8EA5D1DBC3113A376B924F6B7B27435FCA24C4D8598
+F3C8946A2713CE19F5D3E42DF12029F1E8D7B36A54DDEBB6CE8C00AD49396FAC68FF1D7226E331
+31DEDC6728C4E7A3E1287DE18EA76EAB9FDD06CE8705A22108F9BDC199C6E0F13CDFE7225274C0
+266C54E4E164A71AC5340401DA3CA9C7EA232C20BF2E8AD458AF982AA4262A2C86635FF5CEC54F
+54CE340360A87B664049C77780CD4FF6221C0E51D9B4792B85B55E08FF9A07F590369F79913211
+EB6DCDBFEEA5FA196D949ACF268211F58DD46B236465DF12E5091D995011B790C234611265B0F5
+76CE003E223A18991C2DE9689A55013BC4A8C4767C094B65F01145C03645E3A589E4C1DD335C1F
+36AE7BE810C423CF15F452529BAA450B7024F37B24CB0E0E1EB32CA98C6A17FE65BDF6836EE9DB
+5BB873F10D7FFA49816D53BD5C1279DEB333251CF0F64413D1F19FF118F069D18C6A31387003B9
+615DCB5C0BE9D44EDD0AD67806B106182E33BCBB84CA476E8D556FE6C96487BA247569A55A0262
+145572A67DE6CD3AD4DD6F9F45B4119F5D512FCC3A7B29706824639CD47E1DBDDA9A79D23BA81C
+7035C0CA48FB8A5473E97BE8335A6BD0ED83774DE50BA02708FDC3ED585F076B72A2799B0EAA69
+7AC9B6A0A09EAC551C34FC8370B99416865BC17B7D4E42872D96E4BCC41EE9BCF505287BD50BDA
+93C92F7A526F5505A45E801701CD1A135AE154B645D6EF997081CBCC670BD7694FF08FC9A7D617
+B9E1FB61E093DCFA92FB0FB7395BF9EB95BFEF8F3F8B7E45433F060EC06F9A62C933CF6516E0B4
+E9317CA50ECBB6EC2DE2C2F0D4A76010CD9E33FC245AF0B7D321505ECFA0A23C587C150A156031
+65308C1EADEEB363012AC20791AADD8A14DBD019CFA00ACC487ED49CCC042F6914027396ECA3DD
+547D872250B1963E25D0671E6B1804307F9A5EA35A965DCC58642D0ECFB0ABF8683EEF9C9C248C
+22EAE659F55278C280D232D62812F3348727136ECCD7EB5AE79D51782891EB5E7F49523900403C
+29AAD6FCA3FE2C841CC0538C93F780B42B9F6761C262493DDE2137E6AC654B29BE016F8F1E29B5
+41BCF929F25D2E5DD5C2430EE1E10FAA09A6827526A6002230676709B8F6822AF4E11D338627E7
+A0DA89A9F65F170A28166782053CEDB063D50D031A1FB5C6B3AE5A38C2342B4F7F46A073494378
+D749B1268F2536415D7D8C39D192EFC4EF5D3610B6E3785161C49B8FC641AA50E55A3E1A6A245E
+7BAB0E0F335F2D7F4A41582482FA9713F70B3EA2C17F1D47D5448663CB12D4C59CAB0B8379EA41
+B07AFE08688386EECC12CA510DFBFB29165837494E87EC3C4186B70DF1BAC6B75EFF871ADB09AC
+9D91DE8078597E559ADDD8FE92598C856C4D7A99A2150294BAE5D58A79D0B04E1577EECD8C2A12
+EBE4003A8E3026DEA2BD9AE969A73DA29C831772244F622490CB7385BC2690AC9858CF6975D85B
+64EA77B5AEC1F8DA0571378366869C93114B184C068BC28512260C2816C44A632285CC25CA1D79
+7DB0D901EECA675FFA1182AD6D48A8A96402D07A288CCC02F8A7CE0A39084DA379C5FD08743060
+851BD02A3C9CC298FFA0AEAC5F5E1928C46A6EBB427D2AF9D32BD0117A8CD7B453C66FF3916309
+2568B5A26F210900D466EA5CE01F14BC1F57BB0D3186BEE9BA1A5648A275A61B73ABA09C9C526A
+EAE2D8C613DC39AC57A0DBB95E2998643E5F3757AF5C388326B3E1A0A451D6C4539578AC643AA5
+C45296DC2E949B999A8F6594EB35FEE1109B8611CB6CC2C2073C6D7E6DCA96C93B7A5D18E1244C
+0C56C0A57D69540565B7C4F2A6F0C4CC62A0D7006DCF021C829ABF6DAED3ADD521703AF38E8C6D
+53EEA1C51B7587BC0FE053103291860A4EA3558FBEF392BE7D14266CB799E8C6A7FBA8086CC183
+FF6AC0B38DED37E87AC26AC0350AD5D8FD240FE6EB854B3A2F12C55D4B059ED87D7B9E53AFFC75
+A00C08AFAD9A879AB86EDBC442EAA1AB6F9FC47CED3938965D74745049D82B6CBA49A201694236
+B4EF3F050A18D3BEB24AC8B1EAFBFE08B2B900F04AEAD7DB7E52ECE94A223D107DD3730ACC06E4
+78A4D5246D21E1C13E8A3FE77B384E6B2E5F9A1A9796A0A60B69DFCE55276D265EDBDF31E16EAF
+47B0C8CA4D1CA69CAB9A3F3B4B4CBD2E6AAE08682595EDD310B61D473F52496131E9724B3F5ABD
+9409B548F310D8425A09FC7065DDAFE09F7BBCEBCCFBBDF469976295F014FC36F85D78CB477CF3
+82618E69D95D49E487AB3F1357F817CCB4BA552AA968CA538DF101E3707BEDE2FE4EE3199EBDF6
+24240386CFEE2D6748669ACB4A77804FEBD887C1E9DABFB6F92FCF44FF7E879E3F28E76D08ACFE
+2E6A61A9529121DF1E040F19C8BDE0EE67D6FFD7E49B91F7FCD818CC4EAB7F7D23C538A03F4FB2
+63A49D1F6E5A736F685CEFEEEC53BC7FDE3693DCC2CDC2CF600F9375E7C4A878B80D69A922C46A
+50C2D5DD16198CF90C084A43A52409F896D7E6CDE4F732FC64CF4860C33A5CF768FB14C34B036C
+48A8ED5370EA9D30219362FBE48278532B0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
diff --git a/Build/source/texk/lcdf-typetools/tests/uhv_dl.pfb b/Build/source/texk/lcdf-typetools/tests/uhv_dl.pfb
new file mode 100644
index 00000000000..657c19f3a61
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/uhv_dl.pfb
Binary files differ
diff --git a/Build/source/texk/lcdf-typetools/tests/uhv_dl.ps b/Build/source/texk/lcdf-typetools/tests/uhv_dl.ps
new file mode 100644
index 00000000000..be4e41bb28a
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/uhv_dl.ps
@@ -0,0 +1,218 @@
+%!PS-Adobe-3.0
+%%LanguageLevel: 2
+%%DocumentMedia: Plain 612 792 white ( )
+%%BeginProlog
+/magicstr 1 string def
+/magicbox { % row col char name encoding magicbox -
+ 5 3 roll 54 mul 36 add exch 54 mul neg 682 add moveto currentpoint
+ .8 setgray 54 0 rlineto 0 54 rlineto -54 0 rlineto closepath stroke
+ 0 setgray moveto
+ gsave /Helvetica 7 selectfont 3 1.5 rmoveto show grestore
+ gsave /Helvetica 7 selectfont 3 45.5 rmoveto show grestore
+ magicstr 0 3 -1 roll put
+ magicstr stringwidth pop 54 sub -2 div 16 rmoveto magicstr show
+} bind def
+%!PS-AdobeFont-1.0: NimbusSanL-ReguCondLCDFJ 001.005
+%%CreationDate: Wed Aug 3 1994
+% Copyright URW Software, Copyright 1994 by URW
+% URW Software, Copyright 1994 by URW
+9 dict begin
+/XUID [1 5020913 2322999] def
+/FontName /NimbusSanL-ReguCondLCDFJ def
+/FontInfo 10 dict dup begin
+/version (001.005) readonly def
+/Notice (URW Software, Copyright 1994 by URW) readonly def
+/Copyright (Copyright URW Software, Copyright 1994 by URW) readonly def
+/FullName (Nimbus Sans L Regular Condensed) readonly def
+/FamilyName (Nimbus Sans L) readonly def
+/Weight (Regular) readonly def
+/isFixedPitch false def
+/ItalicAngle 0 def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 106 /uni0237 put
+readonly def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
+/FontBBox {-136 -225 820 944} readonly def
+currentdict end
+currentfile eexec
+8A776DF5437D053715F33367AD5C2F399F4A3C4AA93FCBA250D54A7FA4D42ED633AA72E9BA3524
+9FEB6AB601831178A0690247FFCED3A15C9247FF52A6532CF582CFEB24204AEC140A2201F906F5
+B5CDF776DF1D8C3C1BB0985C38BBA74E00029BEDDF054A05B3B58985E702D2EB02E7FE3316CAC3
+A26DF2A45F5C8EAC11F6A49E79410F4873FBAB97238F123226CBFF6A289FB9E4691F8ED807C137
+C58417798F0381B07CB95AAF0FBF147DD54522894A29759A34CE5A8EF84645EE900D569DC6F224
+ED221522988299C62B184883B76599E2E9B764A8332728F100FBABFF0130700F37057D0803712C
+68D80564AD85A1FB1627D2D8A57A8C4F4E500671382801CCB781A28D3B7F94977D467410DBD713
+B6CEB0739972ADF0655BC62E41028E8F0F4807E7FC46B04028C7426B73282F6A0F1D927C2B967D
+2D1159E84555D3D137FDC7916C501EFC8CB198BB3CCEC4D6238810E0E2242D7ABD704CBAEA0BC5
+14290EFD29D231F461821D89C2A481CC3629806E3A19D4061AF6CE2EEC98258A60A9A0E55D83E8
+ABCDFE0CE041A71B0CE66B3975994FAE1A10501DDF574F108E3EC20B62565A2D197F37A43F04A3
+3234D8F830BA2182960BACC37DC421CB518066D9CA204CF47B1BA004E23C50D4E99FEB2C090924
+34FD9587B668585C24AA810D05602B972811AD643DC907720DABED3187D2A7C7CC5BBB0483C8AB
+8B30DE4946F745FE5886F8FE808436EA1C2297DC8AA1E8582F878F0B3D6739C1CF3DF8575CF84E
+EF242B72A1A46723C2B527D7DA458DFD9BD359A5F95971926EA5F9111BE912B187C98027EF1C13
+8CB8B8BF7CFA44701B6E876BC833A4809B58408574C26A511BB88DCC8679D6C5F2178A4A8FF769
+3E179E6B45BA2EF6CA772A67B0A03171063A2856A63267CA8E17FF61A03AA18C68882F92FE4123
+02F79B5C2966C55BC04E766DAADDF0F74DA7D0D09E4C618453074D3CC3E591AACD7F034D853307
+D2CE251B4B5A3D2443FA760ECEB2C63EAD4BF74F1E5CD3785271BA8CDCF28E81A7BE12403CAD2D
+9BCF7406708129D7FC702013FDCF84F433A2A4D940B2293215C6D7DCB9940033CE9BBC5626F299
+1C85D651A4F2A85A8FC036F3583ADCA56CC9D14534C83B14C8187AC73AEE2B63C6236AE04C475C
+4227EC552B74C12429D0658346B1FF72ED222187021BCD51B1AEF783C49A465871EE266F7BA65D
+B794FDDD92511EF7E76F8DD7086AF1F5633728C29E7F9F549867E769E288BAF33F4C31D3EBF1A6
+9D795A40252D021D5D219435A7D82AA92A612512C0441D2F688B2992950A37C85FD47298A73D16
+9DB7E9DD5020199893AADEC37D7C243D18C277A33F6077EE8B6E765FE6B7FDEC4A17880D72FFD3
+0150CB894D20093260CA64384BB666E51C9B69274DD20872149B42C82BB3224095393C24C1C1B5
+30F45559EAA5C3D510163CF44F589EC823A8B30341E8591593BCC282D65C974A0DA6CCB4EE6F28
+0A7E3F4F0AEC870BE8A81F78D4E635892BB1BED62A1F254C67CD0FB8F88F8B5FFC76EC01CA3F75
+F7B1FB2EF96B3529F7E2ADB2B07F3C170A809F85099B7B51748F5CB77B9A81071963D664E4485A
+2C2CDCB1EC6F3647986AFB6068FC0A6454AD6A780A327290D541EE553BCE526871486618560AD2
+CBAC0AC17C86511E6C7A1195B7548008B0B05962D00FB27916BED5135A63A36F7D29FDCB9F7B50
+129524F5DC0C82CD1D16B1171B21BFA756F59BD601DAA51A6C99F8BCAC305F2AD53269AD383BEF
+C71280725D2928A3EEABBCFB4367042978CC22EC2B6E450696DC045493849483FF641CB1712410
+D0754C4D18E600B50FBA052C966428ECCA0672626C4F77BFA5AFDFF28D4F65CB602CCFDBEF4850
+4E2D966DA6FDAEFCE351ADE2BD8E83150023F04C66788F0E6B5FAA3AC1CA9224634185A44BC5EF
+DF9EA935CC36E9F380079D3604CFC112031793288D22470EC75FEE26AA7E697F6ABF45973CFAA2
+C2532543994A113DED1343F1A6D6AD2C0C624B8EF5CA1BB4A3AB0F4503F961EE58527DBE9757C3
+5CF973571B396DFEDD71DBF542EDF6CFFE92CA0DE81693EC8C6C340FC6E867724F20F2D7EF1EA7
+C8BFB7B8D79D609458B6EDF1E27127BC4F3BA5E9E4F247CC70612241D64245CA5D33269AEDF4DF
+3A621CD7E167998BD17628376EDD03615680140785440936F8E4D8E14932CF8CE2833075460228
+837DBFC5495369BF90AFF399F5A6E40DF4B5B61327A3E94CBEDB80CA353AAFC80F3B2A0CD0C5EC
+2A742EAFFE9C424568BE25B851B2232EF4F4D17C0C03F497C096BAD2E328B486737D2A0C30B5C8
+A43F11A8522DFA17C5D2C6AB94741239794DECE434EA4E2BA417AFAF3B7019CAEA454D5B97BC91
+3DE74BAD9CA0E62327CF6D8E78E9D4F2A98F3C4C6A49977B7CE719B3DFE65053A96FAD4E2A8D6B
+BED6C20B040BDF0FF9F32B392EAA59266889ACDE26644F4CE568D5AABC6E1AF8A2462C4ABF9F0E
+D2274DCF8BA752C4FC5299F95C0DF6C59BD25C79D77D6600749580183C9F4542A6382ADEA829A1
+FFFC017CE1B3ABDB7DC3D9796AB2551305377EAF66D245558F442CEF1D4A51D67FB3C72CACBDE7
+4155CFCD2C6D8AF4A8C028D7BA7BABE733932695900A786CC78E92F8201BEDF5CC4827BEB83003
+36EAC56F98080C309DBA62F763837C5F661C33A0FA57CDF95FB67DCE7BC30352EEA70EFA79F559
+8E039FD4F350293BBD4996FAE9F0E2EAD3A2CD613FF3A2B6722FAA856155AA67D9F1FC972FA241
+92BAB82D35C223B38EB0EBD472F92ABED15435EC33FFE201609105D7B36BD442EFCF36C76D0C91
+EEAF1355318A44A60A6CDE7E4C190FF2D20FFE3CD9B9A9017ACFD5A99469002147E0573A758556
+6EDAA51B5885EA141983E4D124DA5551335FB87E5AB9582A51F5972E2CB61E86FCE7CAB78E53AD
+A7268688F6CB2AA3BD9D2CFD6169351CF0723645FB8AA8CC86B328A8AEEAFEE5999946586DC780
+DF3A7A3BAA7557E61845D3A77F33312C85FE6750B28011B36073A202352EDF5532AC592F9B489E
+E0D50D2601FC21F1BB885396FD3A31E89EFAD2D66ED4B60C04E8C5CF4CD5F41721DDAF67BD596E
+471739939E6C63B99F7C3E729684ADA42C40F51613E47227E28D71F45F1665B253D511BF6E42BD
+2EE4E15956C02B4FA2DFD9A59616FC7B40B8D0AE8FAB39E00A64C5ACDA890B3D05CD8B85394188
+BB9284255AA93CB7454701E4BC95DDDA2B3B3A9F9D3257390EB774718D57B1C58F15A09EA0BE01
+3A1C545577FAECAF1733CEBCEF249D5A9A015D53763772D206041CEFCD67DBEC9D612C3CE04066
+938F093D366B53D63AC5CE2D2952A92E37057BDB80FBF5C310E5644C6FEA29BB8F88FCA8C77C3F
+D3697FBD8D2243ED29B9E50E67DE4BA834D0BBCF12CC1FE3A576B3F5D7B1ED4C71632E906E4F91
+F7B9CE3840B690A30AE7621F628954A4034466A80D878C2153FCC18FB5771A74CCD199B829AA17
+9AD16D5049AE0A67D840CB7A3BA6E34C2B341D082207DBBA01205B0D3EB7CB698CFA985AEB5826
+72D10D67D2F5F04D4CDCE8506EED26967E5A2B1E123AE3DF654D00621AC373B54E0451E207242A
+136C63F624C4282BF248322B29C3C55FBC579F7A4E9B80AC0CC8AD875EA309F89F7BF8F9A8F692
+0F04FAF61CBD5CCE723DCC02FB2DCB78A33DAB4C90388EFC34380FFDBC097F14EEF887CC26EE9B
+355DF262C7873FA3452E4847E44787838CE02CF06E95D285557E271E5C24F33AB005C5856E1A6F
+8D1730CFFF5347BC2ECD417D8E3C0A8F33ADD7FBC70F1F8B83CCAB9EBDFC6CDDF84D58EEEBC42B
+C319A45B5568C2B4F2B7BFD0DF809566D977874750FDC00D3E246420F6B3D4962F4ACED52FB609
+8FBF3B2B2C6F2BBB5CAC7FE975F3988BD0EAE850869545D99CF124DEE6DFFF231DA95C02A88291
+F90DCC9B029A64A9CBD6609F29F4A8677B75E8A4CE3F1E4497C2322690C80B4359AECB51F993FA
+6FEA597A497790188E09F808840BAB44F3026A8B67C1CCE64EEA5A5599FC4FE0FDD9DAB110FD62
+EC9A73924143BC3149482CD4BFD9D963429B23F98AA2C9F6AEEFDCA013A410D6F00DFC88BB4C8B
+A0D4A985E767F139ABAF361372EEDB2F63B769DB53CFC3A2FABCF8CCC6DDE69C1F7B601D43C276
+4EEC734BE46FEBB1157B86F6F1929FFCFF6F145EF3AB6103C9ADA3A78E6C78CDC4FDA9646D7FCB
+7F005F00560B415322D5975A3767E4196EE86F878496B4799323C1E7A24DD0B26E9D5E46CB3B26
+A0F2193CB98AB104848B7F133BDE9E0DB446E84767396B762B025052CC0B875E2AE38705CAA97B
+EB79A31960AD35029993B709E8558F8AC118E4D35AECB7CD253B9F7A6618BED9473B4C6B1D2B28
+BAE23051E228F72F4C09558397BEC0C6FB32D1D4E9EB62F864BE2AC78EFE7BADC69A2ABBAA1F12
+13F275B5799247E1BDDE646249F4AB4530B93C593C8D4B8BEE6ED1621064CDC9638CB1C5A26070
+D56A50DAB8965EF4AAFE9D009FBA02984BE73033A5965240FD1BD2D1EB81EB3BA7FE135916D068
+9CE7BD0AB32B4FD4CC75FC97CC5476A60E344A0D58D0CC429B619A7B362B8390C01D9EEE7A6EF8
+EE06D04674F7E0273AF99CA790DAFE6635D5F2A5144C330939C2B0DCCA077020C7BBC9BBC6E2EC
+150BE1305EA995651F48649EE9A5C7C1A4F3F100E42B05EEB9E8A1827371DC988BCA36AB4BB9AE
+A9E52E37567ECB5308201E2EE7BAAB1D8268853E35B60669561C6A8D51B5A648C200FC477FA959
+D54A8B728AFE28DA747A83B041E2D3628720975D6CFA323B37675FCFEBDBCCAD8010A69666B3A3
+6C9DD801EA2ECA4ED7E9446120FC54A5D9CF6956DEEF7EFE89973EF3AD7A7624F41918469DF731
+9CD719FADEFFC8ABC578729207D77CD44B4DA16252A56A069E46C2BC3E627F98FBC3334BE3A172
+17090CD02FC933F6686F3E37E418FF4E9147333BBE21E150F0B167DB5834AC993FF606803EEB62
+E82A8BCA847FCA2656DAB74FB9F1BC22C99A18A67BDD7C88FCB7D4164B40155F2A686FF90EEDEC
+DAB94C2399D647FC3E233609F154B8D88D6104FB6DDB4558F40BE5C5634AF40845F19EFCF6D968
+6D4E47E00EA6C75A8389E2DF52600AA2A0BDE67D4B2C0E660E3ED2B6B3F7078F3664474C194731
+2555B28411865300F74E38CD1F9D51B83A9865E3BCE98710EF9C4FC02B20960325ECF89859DE96
+3D526FD92B764BF17A502EF61F2C0DDDFBEFABC79623B4C666FAF81E9D9AE8662A3AAB3B4D7CD2
+5EFF8314D306F8F7F3803095B30C111D154FEC9AB335B7FD3DD81828D10CDB8006D81FC186E1A2
+DD6FE8C388AE87B71BEC95774AF6203AC366C5547C7EC2BE320C2BEE758E0E325BDB9D6D6EEA0E
+DD042FAB742B219DCBB6DBE8CB2603087B02F01BD12FEC2E33DF4E309539784E43AD0D42A5E66B
+B102049E7B4148F6BF60D62C1A09EFEAD35164786D8F308095F6E4954BF05B5F7D3FFEA09038F8
+05AA6C2DA318683BDD7747D55F11BFF2BCFE9A51A68FD2BD8A400145E0F29E550C2640DC689CC7
+5B9EE14B95AACBCB8900DF6B786FA7BAA22DD7F317701ED3851BC73FF23F3AE1C359BBBDBB6BD3
+3A3C616DBCE141AFE0283A816ADEA72C1F8EDA2211C9FFE9F3B7B0D6A26FAE0A185A2BF1833C47
+F7E2BF7D96EA37E77CB44F7A512E2E3E0EDD6C7C7EA0727255128B16AD7138EB08B97D6C3A709B
+DCC280B1303DE86AA4967895AA3B8EA4C02BA57DE84463FA336E70C0FF5D52C5B136479680BFC9
+2B02197CC693E79B1D47FC0F0A26B1FCBC1D0B32E5222E13990F978D0CB5F975BD242EF519D557
+2FCAC60AF20A93303C2B51DFC43597233E531F4AAB337F74CCEFEA028299C2D64529FBB07997E2
+E16BB5E53A8C707E05AB536C5C06CBF88894691B006CCD17F3E5307569404B28DD849BFCDFB925
+0F24D262F467DF0DC6EF6CFBB0048B4F9D007ACB70493307AD808BD94D00B22A754A2C036F6ED6
+8016D19BC48DECE862A5410A35D0D69FDB513912DB46A38FC8429AC81F1192AEE721180DB5195C
+749596B8C8C56E01633F89730B9622501F8CB5D5F69FF4372403AAF037F7E76A1381E684432B23
+EF0EF19A0A9E96B569DE96125F850FBB100D78B780E008368BDB380BFEFE8186488B0091DBC764
+062ACCA2120AEF241CCEBA1EC7526F48FFEACC8B890286E8AF6CBF074BDB0B0FC1FB7E06C37037
+72B4837D9686E0C33BA40874378AF9D3021D4A442B0F3CA16795792E90CF0A3195195F711A7F7A
+63FB438904CF5DD1D78232ED6B9D231A0938FE9186E3126F13EFF09C108F3D1FDCD2D2210C8409
+1C23DA25C0DAB52472071AFA04BA40DC0C1501C70940E0097DC31EF852F2EA8FD07537206F5968
+DB67A918691B449152501D92FB427616E7360B9677DB1B87A8DB07C75CB9E40EDEC692B4227B38
+655851E57C7AB114F0CB9D13C6C4EF5FC2562314C6C76C0F8926DAE4CDFFA5D657DC0F484A1AB4
+B81B3A4FF18A352A12C1AFA4E2FBF618ED8536BD539A2C83EC53F94B55D7F77D1FBE23B16AD6A8
+2960905B1BCBEBEEA59FD514D21C5996AA27E08D5D27D90283144C86A2E247D33C8524EF74509C
+2E644BC61E93DF326924CEF77DC913FC9105E4311CE8833C8FACA87681E8C100387DA491C6830F
+E0106C6E1D609DB365E8E172B1B8EB03BA5FF3FA72D8185C844E1B9A44424AAF8E587DD0C905C4
+27E861441205E8E220369EFF1B6B478FC59CE3700BA6EB43533685FEA672BD59C4AA2686F03ACE
+667D5544B96BFE67D77E84384EA58F95C1BE89C4F01182F481E7E7224B3C31396796C46EB1ED97
+B9E4C0930889C322F07205A5FBBA900B3AE483F4B5FDE8D62A9682DADD4FDC69BA026E13DB24A1
+4DB2131EE302046BF90A42BC15C35C59B6B1890F3381AB442FF4979FA5A304F966C63FE43AB9C9
+E8A989AF06BEE31983DB02ADC1E2B7193996A1D20609E9194CD688F6A73BCE98E2B930976BCBD9
+77A4253AB70FDBC5C65CA66C42D71E943A117915D5480F819C48C2A0BA3A1674AF7E12083A7B94
+CBDB962CB658BDAE59ABE6D0C124A70B3A20CB5548126D8F089428CDA110602AF96747089994BA
+134D54AB1ABA72F3CC616D685AB3A332F23BC701AFD913458E7225841FFF41280B909FD9FC1EDB
+4734D25417C1AA850640549C01BC187B58332D570E6D5FEDBCC33C52140778039BAC71A626DD9C
+09E457C91AD4B91D14EBA70E617825FA81F656E7EA350B8321E20245AECA530423EA5A6AB93B0D
+9DD12517CD9AD8EB42925E6954FECE297134DC968319B61C04DB4D6B05A6CE3C4E0DE38F4776EE
+E68820853D24D116921317FC388DABA5B699249D5F5FE31115FAA8E327656B1D32C62668C14973
+CADCFBD4E95BB6A5DFD3342632926456F9202DB40D6B7D9B0FEB99E887BC9E537535E9538F7E98
+AD22ED9BC71F47CFEA882CDEABC2438E67055357BA7AC22A52F36D5C9A96A7151BE69CEEA51146
+18F966C2E05C34FD9E6ED3E10FDD10EE8BE4911F92D23FA5B97DCFAA2F85FE911960152ACA008C
+F33F4E24B62E517936718CF7337432327DCDD5B15322B69CEE13373FA4C18C291E79423F6ED02E
+EC264C9ECFB9663524F835AF622EAD4C5E4177023D38FA760EDF14820A7DB8FD5A2C3CA542DFBB
+DF58C8ED26A00F587C5FC1A4E12286AB99BB47D79913EC64DFA62F562E012657392A580EE58BE2
+82A6CB338305AD4A0A5D35918D3D50BA4D9B17F41AE9ED823CDDEB8DD0FF4B4412A1E9760AC27A
+0E6FB32F940DE204EF65AC49E628DAEA59D1F268AC385B0DDE5411AD6E6712ECC04B9B773CE9F1
+6D3FF6E501CFF06EA0946A1958EBA1C41E70946FB2F7E7C314E49360AFB43029BAE0D96E87CD33
+107FB4C07291DDFA09D22D9463622A7937B650CD3DAE653DF1D83809CD334AAD264564C8F647CE
+5BEB1603C36125C767806E0FE5E6573DB6FB5CFC23630DA74741387D8DFC11DC0B3C1520BBF4E8
+5D8598F0825CDA2E14EE00BAC6AC47410E66461767E3AEF40860169970740D3DE73BE82B1A92BA
+64B8ACB442DE081374BDFD3EE818C316B7D3FA7B5ADEE34D2366A488D21143B401BACC0D17A58F
+85FF033850F5BF21072F407F1134CA902CE03B5E354B240F7BC2353316D7461641C4AD31A431F4
+7CF67E6AD90E05329C381E57A872F7D70F07900A4634F45E442EF86BCE9D2FD33A7ADCA6DEB625
+73B58C577C719FB07C4AC08D1AD7D162AD48E315278328AEBE51248DF95ABF737385779A4979A0
+53313C6D1AC0F4755E5F5F19AE3A365167AE1DC0EF15E576EC84F134B52C36AFA90B26F1AB910D
+596E5879E00689F49AA47DA1C71EAEEE84563E9939D012FC8B90FC1CFF139A3634A715158BF960
+711772EAA2B52A9CBFD5EFAC057A4A44EC05C4E36C7AA8112B17E66B226E589F2635D1585624A1
+6E5AB678EEE8DFDC0E2A44FD2FC597D80000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndProlog
+%%Page: 1 1
+save
+/NimbusSanL-ReguCondLCDFJ findfont dup length dict begin
+ { 1 index /FID ne {def} {pop pop} ifelse } forall
+ /Encoding [ /.notdef /space /uni0237 ] def
+ currentdict end /X exch definefont pop
+/Helvetica-Bold 16 selectfont 36 742 moveto (NimbusSanL-ReguCondLCDFJ) show
+/X 24 selectfont
+0 0 0 (.notdef) ('\\000') magicbox
+0 1 1 (space) () magicbox
+0 2 2 (uni0237) ('j') magicbox
+showpage restore
+%%EOF
diff --git a/Build/source/texk/lcdf-typetools/tests/uhv_re.afm b/Build/source/texk/lcdf-typetools/tests/uhv_re.afm
new file mode 100644
index 00000000000..a48418688cf
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/uhv_re.afm
@@ -0,0 +1,254 @@
+StartFontMetrics 2.0
+Comment Generated by t1rawafm
+Version 001.005
+Notice URW Software, Copyright 1994 by URW
+FullName Nimbus Sans L Regular Condensed_T2CAdobeEncoding Enc
+FamilyName Nimbus Sans L
+Weight Regular
+ItalicAngle 0.0
+IsFixedPitch false
+UnderlinePosition -100
+UnderlineThickness 50
+Ascender 718
+XHeight 523
+Ascender 718
+Descender -207
+StdHW 78
+StdVW 73
+FontBBox -136 -225 820 944
+FontName NimbusSanL-ReguCondT2CAdobeEncoding
+Characters 231
+StartCharMetrics 231
+C 0 ; WX 273 ; N grave ; B 11 593 173 734 ;
+C 1 ; WX 273 ; N acute ; B 100 593 262 734 ;
+C 2 ; WX 273 ; N circumflex ; B 17 593 256 734 ;
+C 3 ; WX 273 ; N tilde ; B -3 606 276 722 ;
+C 4 ; WX 273 ; N dieresis ; B 33 604 240 706 ;
+C 5 ; WX 273 ; N hungarumlaut ; B 25 593 335 734 ;
+C 6 ; WX 273 ; N ring ; B 61 572 212 756 ;
+C 7 ; WX 273 ; N caron ; B 17 593 256 734 ;
+C 8 ; WX 273 ; N breve ; B 11 595 263 731 ;
+C 9 ; WX 273 ; N macron ; B 8 627 265 684 ;
+C 10 ; WX 273 ; N dotaccent ; B 99 604 174 706 ;
+C 11 ; WX 273 ; N cedilla ; B 37 -225 212 0 ;
+C 12 ; WX 273 ; N ogonek ; B 60 -225 235 0 ;
+C 16 ; WX 273 ; N quotedblleft ; B 31 469 252 725 ;
+C 17 ; WX 273 ; N quotedblright ; B 21 462 242 718 ;
+C 21 ; WX 456 ; N endash ; B 0 240 456 313 ;
+C 22 ; WX 820 ; N emdash ; B 0 240 820 313 ;
+C 25 ; WX 228 ; N dotlessi ; B 78 0 150 523 ;
+C 28 ; WX 410 ; N fi ; B 11 0 356 728 ;
+C 29 ; WX 410 ; N fl ; B 11 0 354 728 ;
+C 33 ; WX 228 ; N exclam ; B 74 0 153 718 ;
+C 34 ; WX 291 ; N quotedbl ; B 57 463 234 718 ;
+C 35 ; WX 456 ; N numbersign ; B 23 0 434 688 ;
+C 36 ; WX 456 ; N dollar ; B 26 -115 426 775 ;
+C 37 ; WX 729 ; N percent ; B 32 -19 697 703 ;
+C 38 ; WX 547 ; N ampersand ; B 36 -15 529 718 ;
+C 39 ; WX 182 ; N quoteright ; B 43 462 129 718 ;
+C 40 ; WX 273 ; N parenleft ; B 56 -207 245 733 ;
+C 41 ; WX 273 ; N parenright ; B 28 -207 217 733 ;
+C 42 ; WX 319 ; N asterisk ; B 32 431 286 718 ;
+C 43 ; WX 479 ; N plus ; B 32 0 447 505 ;
+C 44 ; WX 228 ; N comma ; B 71 -147 157 107 ;
+C 45 ; WX 273 ; N hyphen ; B 36 232 237 322 ;
+C 46 ; WX 228 ; N period ; B 71 0 157 107 ;
+C 47 ; WX 228 ; N slash ; B -14 -19 242 737 ;
+C 48 ; WX 456 ; N zero ; B 30 -19 426 703 ;
+C 49 ; WX 456 ; N one ; B 83 0 294 703 ;
+C 50 ; WX 456 ; N two ; B 21 0 416 703 ;
+C 51 ; WX 456 ; N three ; B 28 -19 428 703 ;
+C 52 ; WX 456 ; N four ; B 20 0 429 703 ;
+C 53 ; WX 456 ; N five ; B 26 -19 421 688 ;
+C 54 ; WX 456 ; N six ; B 31 -19 425 703 ;
+C 55 ; WX 456 ; N seven ; B 30 0 429 688 ;
+C 56 ; WX 456 ; N eight ; B 31 -19 424 703 ;
+C 57 ; WX 456 ; N nine ; B 34 -19 421 703 ;
+C 58 ; WX 228 ; N colon ; B 71 0 157 516 ;
+C 59 ; WX 228 ; N semicolon ; B 71 -147 157 516 ;
+C 60 ; WX 479 ; N less ; B 39 10 440 496 ;
+C 61 ; WX 479 ; N equal ; B 32 115 447 390 ;
+C 62 ; WX 479 ; N greater ; B 39 10 440 496 ;
+C 63 ; WX 456 ; N question ; B 46 0 403 727 ;
+C 64 ; WX 832 ; N at ; B 121 -19 712 737 ;
+C 65 ; WX 547 ; N A ; B 11 0 536 718 ;
+C 66 ; WX 547 ; N B ; B 61 0 514 718 ;
+C 67 ; WX 592 ; N C ; B 36 -19 558 737 ;
+C 68 ; WX 592 ; N D ; B 66 0 553 718 ;
+C 69 ; WX 547 ; N E ; B 71 0 505 718 ;
+C 70 ; WX 501 ; N F ; B 71 0 478 718 ;
+C 71 ; WX 638 ; N G ; B 39 -19 577 737 ;
+C 72 ; WX 592 ; N H ; B 63 0 530 718 ;
+C 73 ; WX 228 ; N I ; B 75 0 154 718 ;
+C 74 ; WX 410 ; N J ; B 14 -19 351 718 ;
+C 75 ; WX 547 ; N K ; B 62 0 544 718 ;
+C 76 ; WX 456 ; N L ; B 62 0 440 718 ;
+C 77 ; WX 683 ; N M ; B 60 0 624 718 ;
+C 78 ; WX 592 ; N N ; B 62 0 530 718 ;
+C 79 ; WX 638 ; N O ; B 32 -19 606 737 ;
+C 80 ; WX 547 ; N P ; B 71 0 510 718 ;
+C 81 ; WX 638 ; N Q ; B 32 -56 606 737 ;
+C 82 ; WX 592 ; N R ; B 72 0 561 718 ;
+C 83 ; WX 547 ; N S ; B 40 -19 508 737 ;
+C 84 ; WX 501 ; N T ; B 11 0 490 718 ;
+C 85 ; WX 592 ; N U ; B 65 -19 528 718 ;
+C 86 ; WX 547 ; N V ; B 16 0 531 718 ;
+C 87 ; WX 774 ; N W ; B 13 0 761 718 ;
+C 88 ; WX 547 ; N X ; B 16 0 531 718 ;
+C 89 ; WX 547 ; N Y ; B 11 0 535 718 ;
+C 90 ; WX 501 ; N Z ; B 19 0 482 718 ;
+C 91 ; WX 228 ; N bracketleft ; B 52 -196 205 722 ;
+C 92 ; WX 228 ; N backslash ; B -14 -19 242 737 ;
+C 93 ; WX 228 ; N bracketright ; B 23 -196 176 722 ;
+C 94 ; WX 385 ; N asciicircum ; B -11 264 396 688 ;
+C 95 ; WX 456 ; N underscore ; B 0 -125 456 -75 ;
+C 96 ; WX 182 ; N quoteleft ; B 53 469 139 725 ;
+C 97 ; WX 456 ; N a ; B 30 -15 435 538 ;
+C 98 ; WX 456 ; N b ; B 48 -15 424 718 ;
+C 99 ; WX 410 ; N c ; B 25 -15 391 538 ;
+C 100 ; WX 456 ; N d ; B 29 -15 409 718 ;
+C 101 ; WX 456 ; N e ; B 33 -15 423 538 ;
+C 102 ; WX 228 ; N f ; B 11 0 215 728 ;
+C 103 ; WX 456 ; N g ; B 33 -220 409 538 ;
+C 104 ; WX 456 ; N h ; B 53 0 403 718 ;
+C 105 ; WX 182 ; N i ; B 55 0 127 718 ;
+C 106 ; WX 182 ; N j ; B -13 -210 127 718 ;
+C 107 ; WX 410 ; N k ; B 55 0 411 718 ;
+C 108 ; WX 182 ; N l ; B 55 0 127 718 ;
+C 109 ; WX 683 ; N m ; B 53 0 631 538 ;
+C 110 ; WX 456 ; N n ; B 53 0 403 538 ;
+C 111 ; WX 456 ; N o ; B 29 -14 427 538 ;
+C 112 ; WX 456 ; N p ; B 48 -207 424 538 ;
+C 113 ; WX 456 ; N q ; B 29 -207 405 538 ;
+C 114 ; WX 273 ; N r ; B 63 0 272 538 ;
+C 115 ; WX 410 ; N s ; B 26 -15 380 538 ;
+C 116 ; WX 228 ; N t ; B 11 -7 211 669 ;
+C 117 ; WX 456 ; N u ; B 56 -15 401 523 ;
+C 118 ; WX 410 ; N v ; B 7 0 403 523 ;
+C 119 ; WX 592 ; N w ; B 11 0 581 523 ;
+C 120 ; WX 410 ; N x ; B 9 0 402 523 ;
+C 121 ; WX 410 ; N y ; B 9 -214 401 523 ;
+C 122 ; WX 410 ; N z ; B 25 0 385 523 ;
+C 123 ; WX 274 ; N braceleft ; B 34 -196 239 722 ;
+C 124 ; WX 213 ; N bar ; B 77 -19 137 737 ;
+C 125 ; WX 274 ; N braceright ; B 34 -196 239 722 ;
+C 126 ; WX 479 ; N asciitilde ; B 50 181 429 322 ;
+C 158 ; WX 456 ; N currency ; B 23 99 433 603 ;
+C 159 ; WX 456 ; N section ; B 35 -191 420 737 ;
+C 189 ; WX 273 ; N quotedblbase ; B 21 -149 242 107 ;
+C 190 ; WX 456 ; N guillemotleft ; B 80 108 376 446 ;
+C 191 ; WX 456 ; N guillemotright ; B 80 108 376 446 ;
+C -1 ; WX 547 ; N Adieresis ; B 11 0 536 901 ;
+C -1 ; WX 547 ; N Aacute ; B 11 0 536 929 ;
+C -1 ; WX 547 ; N Agrave ; B 11 0 536 929 ;
+C -1 ; WX 547 ; N Acircumflex ; B 11 0 536 929 ;
+C -1 ; WX 547 ; N Atilde ; B 11 0 536 917 ;
+C -1 ; WX 547 ; N Aring ; B 11 0 536 944 ;
+C -1 ; WX 547 ; N Edieresis ; B 71 0 505 901 ;
+C -1 ; WX 547 ; N Eacute ; B 71 0 505 929 ;
+C -1 ; WX 547 ; N Egrave ; B 71 0 505 929 ;
+C -1 ; WX 547 ; N Ecircumflex ; B 71 0 505 929 ;
+C -1 ; WX 228 ; N Idieresis ; B 11 0 218 901 ;
+C -1 ; WX 228 ; N Iacute ; B 75 0 240 903 ;
+C -1 ; WX 228 ; N Igrave ; B -11 0 153 929 ;
+C -1 ; WX 228 ; N Icircumflex ; B -5 0 234 929 ;
+C -1 ; WX 592 ; N Ntilde ; B 62 0 530 917 ;
+C -1 ; WX 638 ; N Odieresis ; B 32 -19 606 901 ;
+C -1 ; WX 638 ; N Oacute ; B 32 -19 606 929 ;
+C -1 ; WX 638 ; N Ograve ; B 32 -19 606 929 ;
+C -1 ; WX 638 ; N Ocircumflex ; B 32 -19 606 929 ;
+C -1 ; WX 638 ; N Otilde ; B 32 -19 606 917 ;
+C -1 ; WX 547 ; N Scaron ; B 40 -19 508 929 ;
+C -1 ; WX 592 ; N Udieresis ; B 65 -19 528 901 ;
+C -1 ; WX 592 ; N Uacute ; B 65 -19 528 929 ;
+C -1 ; WX 592 ; N Ugrave ; B 65 -19 528 929 ;
+C -1 ; WX 592 ; N Ucircumflex ; B 65 -19 528 929 ;
+C -1 ; WX 547 ; N Yacute ; B 11 0 535 929 ;
+C -1 ; WX 501 ; N Zcaron ; B 19 0 482 929 ;
+C -1 ; WX 547 ; N Ydieresis ; B 11 0 535 901 ;
+C -1 ; WX 456 ; N adieresis ; B 30 -15 435 706 ;
+C -1 ; WX 456 ; N aacute ; B 30 -15 435 734 ;
+C -1 ; WX 456 ; N agrave ; B 30 -15 435 734 ;
+C -1 ; WX 456 ; N acircumflex ; B 30 -15 435 734 ;
+C -1 ; WX 456 ; N atilde ; B 30 -15 435 722 ;
+C -1 ; WX 456 ; N aring ; B 30 -15 435 769 ;
+C -1 ; WX 456 ; N edieresis ; B 33 -15 423 706 ;
+C -1 ; WX 456 ; N eacute ; B 33 -15 423 734 ;
+C -1 ; WX 456 ; N egrave ; B 33 -15 423 734 ;
+C -1 ; WX 456 ; N ecircumflex ; B 33 -15 423 734 ;
+C -1 ; WX 228 ; N idieresis ; B 11 0 218 706 ;
+C -1 ; WX 228 ; N iacute ; B 78 0 240 734 ;
+C -1 ; WX 228 ; N igrave ; B -11 0 151 734 ;
+C -1 ; WX 228 ; N icircumflex ; B -5 0 234 734 ;
+C -1 ; WX 456 ; N ntilde ; B 53 0 403 722 ;
+C -1 ; WX 456 ; N odieresis ; B 29 -14 427 706 ;
+C -1 ; WX 456 ; N oacute ; B 29 -14 427 734 ;
+C -1 ; WX 456 ; N ograve ; B 29 -14 427 734 ;
+C -1 ; WX 456 ; N ocircumflex ; B 29 -14 427 734 ;
+C -1 ; WX 456 ; N otilde ; B 29 -14 427 722 ;
+C -1 ; WX 410 ; N scaron ; B 26 -15 380 734 ;
+C -1 ; WX 456 ; N udieresis ; B 56 -15 401 706 ;
+C -1 ; WX 456 ; N uacute ; B 56 -15 401 734 ;
+C -1 ; WX 456 ; N ugrave ; B 56 -15 401 734 ;
+C -1 ; WX 456 ; N ucircumflex ; B 56 -15 401 734 ;
+C -1 ; WX 410 ; N yacute ; B 9 -214 401 734 ;
+C -1 ; WX 410 ; N zcaron ; B 25 0 385 734 ;
+C -1 ; WX 410 ; N ydieresis ; B 9 -214 401 706 ;
+C -1 ; WX 820 ; N AE ; B 7 0 780 718 ;
+C -1 ; WX 820 ; N OE ; B 30 -19 791 737 ;
+C -1 ; WX 638 ; N Oslash ; B 32 -19 607 737 ;
+C -1 ; WX 592 ; N Ccedilla ; B 36 -225 558 737 ;
+C -1 ; WX 592 ; N Eth ; B 0 0 553 718 ;
+C -1 ; WX 456 ; N Lslash ; B -16 0 440 718 ;
+C -1 ; WX 547 ; N Thorn ; B 71 0 510 718 ;
+C -1 ; WX 729 ; N ae ; B 30 -15 695 538 ;
+C -1 ; WX 774 ; N oe ; B 29 -15 740 538 ;
+C -1 ; WX 501 ; N oslash ; B 23 -22 440 545 ;
+C -1 ; WX 501 ; N germandbls ; B 55 -15 468 728 ;
+C -1 ; WX 410 ; N ccedilla ; B 25 -225 391 538 ;
+C -1 ; WX 182 ; N lslash ; B -16 0 198 718 ;
+C -1 ; WX 456 ; N eth ; B 29 -15 428 737 ;
+C -1 ; WX 456 ; N thorn ; B 48 -207 424 718 ;
+C -1 ; WX 456 ; N sterling ; B 27 -16 442 718 ;
+C -1 ; WX 456 ; N cent ; B 42 -115 421 623 ;
+C -1 ; WX 456 ; N florin ; B -9 -207 411 737 ;
+C -1 ; WX 456 ; N yen ; B 2 0 453 688 ;
+C -1 ; WX 273 ; N onesuperior ; B 35 281 182 703 ;
+C -1 ; WX 273 ; N twosuperior ; B 3 280 265 714 ;
+C -1 ; WX 273 ; N threesuperior ; B 4 270 266 714 ;
+C -1 ; WX 228 ; N periodcentered ; B 63 190 166 315 ;
+C -1 ; WX 228 ; N middot ; B 63 190 166 315 ;
+C -1 ; WX 820 ; N ellipsis ; B 94 0 726 107 ;
+C -1 ; WX 273 ; N exclamdown ; B 97 -195 176 523 ;
+C -1 ; WX 501 ; N questiondown ; B 75 -201 432 525 ;
+C -1 ; WX 273 ; N guilsinglright ; B 72 108 201 446 ;
+C -1 ; WX 273 ; N guilsinglleft ; B 72 108 201 446 ;
+C -1 ; WX 273 ; N sfthyphen ; B 36 232 237 322 ;
+C -1 ; WX 456 ; N dagger ; B 35 -159 421 718 ;
+C -1 ; WX 456 ; N daggerdbl ; B 35 -159 421 718 ;
+C -1 ; WX 157 ; N quotesingle ; B 48 463 108 718 ;
+C -1 ; WX 328 ; N degree ; B 44 411 284 703 ;
+C -1 ; WX 479 ; N minus ; B 32 216 447 289 ;
+C -1 ; WX 479 ; N multiply ; B 32 0 447 506 ;
+C -1 ; WX 479 ; N divide ; B 32 -19 447 524 ;
+C -1 ; WX 820 ; N trademark ; B 38 306 740 718 ;
+C -1 ; WX 440 ; N paragraph ; B 15 -173 408 718 ;
+C -1 ; WX 182 ; N quotesinglbase ; B 43 -149 129 107 ;
+C -1 ; WX 303 ; N ordfeminine ; B 20 304 284 737 ;
+C -1 ; WX 299 ; N ordmasculine ; B 20 304 280 737 ;
+C -1 ; WX 479 ; N plusminus ; B 32 0 447 561 ;
+C -1 ; WX 684 ; N onehalf ; B 35 -19 634 703 ;
+C -1 ; WX 684 ; N onequarter ; B 60 -19 620 703 ;
+C -1 ; WX 684 ; N threequarters ; B 37 -19 664 714 ;
+C -1 ; WX 137 ; N fraction ; B -136 -19 273 703 ;
+C -1 ; WX 820 ; N perthousand ; B 6 -19 815 703 ;
+C -1 ; WX 604 ; N copyright ; B -11 -19 617 737 ;
+C -1 ; WX 604 ; N registered ; B -11 -19 617 737 ;
+C -1 ; WX 228 ; N space ; B 0 0 0 0 ;
+C -1 ; WX 228 ; N nbspace ; B 0 0 0 0 ;
+C -1 ; WX 287 ; N bullet ; B 15 202 273 517 ;
+C -1 ; WX 479 ; N logicalnot ; B 32 108 447 390 ;
+C -1 ; WX 213 ; N brokenbar ; B 77 -19 137 737 ;
+C -1 ; WX 456 ; N mu ; B 56 -207 401 523 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/Build/source/texk/lcdf-typetools/tests/uhv_re.pfa b/Build/source/texk/lcdf-typetools/tests/uhv_re.pfa
new file mode 100644
index 00000000000..c728c2a1c4b
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/uhv_re.pfa
@@ -0,0 +1,901 @@
+%!PS-AdobeFont-1.0: NimbusSanL-ReguCond 001.005
+%%CreationDate: Wed Aug 3 1994
+% Copyright URW Software, Copyright 1994 by URW
+% URW Software, Copyright 1994 by URW
+%% T1reencode is free software. See <http://www.lcdf.org/type/>.
+11 dict begin
+/FontInfo 10 dict dup begin
+/version (001.005) readonly def
+/Notice (URW Software, Copyright 1994 by URW) readonly def
+/Copyright (Copyright URW Software, Copyright 1994 by URW) readonly def
+/FullName (Nimbus Sans L Regular Condensed_T2CAdobeEncoding Enc) readonly def
+/FamilyName (Nimbus Sans L) readonly def
+/Weight (Regular) readonly def
+/ItalicAngle 0.0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/XUID [1 5020913 2552790 13843793 16426425 3718337 7959197 2293760] def
+/FontName /NimbusSanL-ReguCondT2CAdobeEncoding def
+/PaintType 0 def
+/FontBBox {-136 -225 820 944} readonly def
+/FontType 1 def
+/FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /grave put
+dup 1 /acute put
+dup 2 /circumflex put
+dup 3 /tilde put
+dup 4 /dieresis put
+dup 5 /hungarumlaut put
+dup 6 /ring put
+dup 7 /caron put
+dup 8 /breve put
+dup 9 /macron put
+dup 10 /dotaccent put
+dup 11 /cedilla put
+dup 12 /ogonek put
+dup 14 /angleleft put
+dup 15 /angleright put
+dup 16 /quotedblleft put
+dup 17 /quotedblright put
+dup 18 /cyrflex put
+dup 19 /dblgrave put
+dup 20 /cyrbreve put
+dup 21 /endash put
+dup 22 /emdash put
+dup 25 /dotlessi put
+dup 27 /ff put
+dup 28 /fi put
+dup 29 /fl put
+dup 30 /ffi put
+dup 31 /ffl put
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+dup 127 /hyphen put
+dup 150 /afii10145 put
+dup 156 /afii10023 put
+dup 157 /afii61352 put
+dup 158 /currency put
+dup 159 /section put
+dup 182 /afii10193 put
+dup 186 /afii10846 put
+dup 188 /afii10071 put
+dup 189 /quotedblbase put
+dup 190 /guillemotleft put
+dup 191 /guillemotright put
+dup 192 /afii10017 put
+dup 193 /afii10018 put
+dup 194 /afii10019 put
+dup 195 /afii10020 put
+dup 196 /afii10021 put
+dup 197 /afii10022 put
+dup 198 /afii10024 put
+dup 199 /afii10025 put
+dup 200 /afii10026 put
+dup 201 /afii10027 put
+dup 202 /afii10028 put
+dup 203 /afii10029 put
+dup 204 /afii10030 put
+dup 205 /afii10031 put
+dup 206 /afii10032 put
+dup 207 /afii10033 put
+dup 208 /afii10034 put
+dup 209 /afii10035 put
+dup 210 /afii10036 put
+dup 211 /afii10037 put
+dup 212 /afii10038 put
+dup 213 /afii10039 put
+dup 214 /afii10040 put
+dup 215 /afii10041 put
+dup 216 /afii10042 put
+dup 217 /afii10043 put
+dup 218 /afii10044 put
+dup 219 /afii10045 put
+dup 220 /afii10046 put
+dup 221 /afii10047 put
+dup 222 /afii10048 put
+dup 223 /afii10049 put
+dup 224 /afii10065 put
+dup 225 /afii10066 put
+dup 226 /afii10067 put
+dup 227 /afii10068 put
+dup 228 /afii10069 put
+dup 229 /afii10070 put
+dup 230 /afii10072 put
+dup 231 /afii10073 put
+dup 232 /afii10074 put
+dup 233 /afii10075 put
+dup 234 /afii10076 put
+dup 235 /afii10077 put
+dup 236 /afii10078 put
+dup 237 /afii10079 put
+dup 238 /afii10080 put
+dup 239 /afii10081 put
+dup 240 /afii10082 put
+dup 241 /afii10083 put
+dup 242 /afii10084 put
+dup 243 /afii10085 put
+dup 244 /afii10086 put
+dup 245 /afii10087 put
+dup 246 /afii10088 put
+dup 247 /afii10089 put
+dup 248 /afii10090 put
+dup 249 /afii10091 put
+dup 250 /afii10092 put
+dup 251 /afii10093 put
+dup 252 /afii10094 put
+dup 253 /afii10095 put
+dup 254 /afii10096 put
+dup 255 /afii10097 put
+readonly def
+%/UniqueID 5020913 def
+currentdict end
+currentfile eexec
+8A776DF5437D053715F33367AD5C2F399F4A3FF62A0B04E82D8B2B3129A2D94C7258D26C332618
+F779811EFC1D3D3AB02536EE4A92FF127539FF8455AE9134B9E14338C9759A08FE695F2CC43E73
+D6F64F8BFD9DA10ACABA4512E1CFD3807AD18E8BA5ED2C9F5EA8241B128A8EFE0CE041D06EB102
+DC2468B2728E69F2EDF084EA67DB23EEA2237E3437C1A30FD9148411119F00772297ECA2C9242B
+9B16CC8362FFEC5103D95D1CE64EB8A6D26326DCABAD6EB67FF9CFBAC864E8E69920EC1F8A0C80
+F960B1628072A35F541CD03660EA32BC80231A1502D931515940235964389EBF353B55BA8BFDFF
+1DBED1185F46B8D08D8109743F6374137E0ECB096DBBD52F5F76EA14324732041C7EF90686F91C
+0265E252E778873A5C6463C98C8685736A368DEBDED7A53C4F471D55E592DF4944CECD9D58B2AB
+987CFEC520C3DA3688E06626D829D808992C9639864E1C1C1A781B9BC262F0118DD3256846FC67
+FF9B4D61A957F0FA47C3B8C844408C1957FF0EA33CAF062CDC572A1AE06FE6C03BD745B08FCE35
+0E1DEF72B145CF69EA554A7879C7375992DA64C7AA2518D984336FD28238D4D3D18D83551C5EFD
+1354DC5FE1C17800082C38EEDAAB0B182529694C57CC8CDD97B3BFAE6A04037E6C17C63E22625D
+CC1DE0FA4E53ADF8652EB58D08093F7028CE2A5F8A08E743FD342CB8D9AE11D2C73AE9505E3FD3
+6302C2B3B2401009E9A501882B5CD80FD12A508489D9F9EDC38F69726B4E1A223C2A5D283D04C5
+FC885FE55BDCA67790129DFF3DF9348FAC84DEAAD2AF6FDE945FA70275AB10FF33E2E5979052D5
+BB2375B8A895B9A38DC5EE96313063DE00DF60D5353D434F774636A9FFF31264A9F33F451AA260
+D8814D8D0AF9D58C2C05CED6BA29801B04D418CC268A996AE3CD407CF55D95CB86557434082BA3
+4B031A15A3B01E3BBE9196428BBD0C58E6DBF1441D2C0CD755EC8B4E070E305CA8C05898686E59
+2150F3FF10FBFADCBB587FD9DF73E86C0A34C5B87DDE3846BEE1C88E7CB9BF23D0A9900EF022C9
+5BEE407E64C60B1BA96DD7A7FCB3C21A4A3456AD2DA23E3C07C05F5B0B60DD6119D858E8966921
+51624AC4192929EDE4BE53A5A195DC0C6C3BC7A8B6E4E27EC9CE8CCF381A425988CCCB3AE7B47C
+75CE05C293DF0411EE8F0A4E9099C24E6E98BF53E7E3094ED1DC944FBA25BC27B4A9E38FC7EEAE
+0D92B8CDF30CA7A54D37059BD2BB016786BCD3A049201A3900A74C5D5127C02C4D84CA7CDA4998
+FBD636E8E80626EAFDDE9081916416A25685D4C723CB3B985442E287F034805FF4F4D115579DE0
+CC45B3E713DD69949D61F4522E9FB8EDE4CF8B3A8C271BB7DF77721E72541A0BE5DD9D57684284
+ED1924042C7DC87E6B8B65CABB0BE1852F5835DDAD4A444DEA6BAAF360AA60875475F4C5D7FB1C
+539DB35AF55AD17A4AD907DED12510CFC96D718C9E791C36CEE74F5C1302197F9F95D72A65F33B
+AE3889DE2420B3E3A28D735C59BBD20B3596D3C5720B93A3E935AA652C0B70E655FCE2A9A26CB9
+826CF9D4504C5BF429DD5A2EFDC3EA043702CAB57B9DC5BF9831F86E8620A1DBC98AA9EB784534
+D3E9CA3F5AFD8F3024F3D8C69DB194030EDF6D422042E63BE84EAA60FFC2EE9EDEF46B33520D61
+0B432F0107E5999E8DBD1FCB20446987CEA1944FB89C57280D0F05B24866BE32C0B817A866AC9E
+FBF6A6E720A938F5774FFEBCE0A319FB410F1FB095C2F2F772B9BA195B0F5957BD3B18556087D7
+52B3E4605B81B6BE387BAD1B3AEF0CFA7DD1FF26176EFBDC4AEA160F30F006AA61152CE88441C8
+F53D6071CAB17379BD4014EAD85D6E7D1FD1E1AB35834E914915376A127D87C0A5C4790DF18AE8
+DE50106FF1EC54033394AC3B0032D6CF19AD2181D6D5F5CF689544A82D323604BD9F35A475A417
+0B011701815CEE9018765F47F68F126C87B8D5D7C986B6C56E0CDB2DC3F0F6517C9C418DA0915E
+CD245C1F860C6CFDEBC08F620DAB1C824E4A4E81527F6BEB4CCDA9D43835A12F424499373B1524
+4E34F01A8F3E17FA83D956CF068911EFD0CFB29AA376B984192FA321C96B32DF48ED0085B8BF72
+9B4B746748E2949006474B0D562584D0CF3CCF83795AD9FC2853ADB945EE86DE717473AB8FF8D3
+F43372160E71C50DD21993E7B054F31FB6DA5B2FB5917CDE4233587AAAEFB379C7B77014262EC5
+E6192F3C79B2DEAF6AC043B02CA8FEF643E56D5F3FDB37464D62F20B23A5BE7CC7A1CDFAE9467A
+87F64B3248679D577BD8E0D6A709EF1E9E5C5A8CE0E93D45BF7F3448BDFF59C3991CCE32CC8748
+B240428832B7F084787FD6F808766C760085F06217AD8CA80C36E4673267B824B722ECB3C7D589
+B1CA0D09649D1DD383BE2942320C0FEC10032BF30B0E620BAE0FBCAF1A7D47083C93E891FC663F
+9B2361F6EC1BEAFBCFDD6CE0837FEAA3D0AB44A5531C61328C3A456AD61FFB0D81C7B8F67EE6A3
+B2815208711ED945E18B4BBCED695318992A4F794D9232AAA0B75434E59690EC85B6F0E99FA842
+3A31321CB720BB2C5A1C967666B5EA77D05D1547586057151E3D414A2ACBC0849424FB01045EF1
+F9BCE363057D4D92AECAFA6BCB9525C64DC3A052D9AD33F2925757D3FD361873A28E804673BA07
+604609110A3209EF82CCC1C2C782164FBA84819CCDE8CF8FF1E99D5CDCD3DADAA8DCE582630222
+0B18AFE97EE3DA8004C6FCC4C66DC34C99EF928ED2F026D10B213D6C151EE604604BC4A0A97D3B
+7E8CD1CBEDE0CBCF1AC4B24358CFB5FD67019F58E487767E9EB04D61062BA5099C8A058F33D90B
+FFBD2D6CD8DDC5CA410219525E9A18D7EBD7ACD5B620C90EA9AAD1CD73018F1DB8499694F7EDFE
+BBD558DBD65C3291903992D4367BE302F479FDF5509C9DCA17F461FCFD95E0E2A54A2856791B34
+9EC4076E4CF713510205469804E8602231BCE241DA6E4E5BEE16C0E56B2711938D605AAC06AD3D
+EEBC6B4FDF37FC4C6C7EAA4ECA9E96FAB2DDD749480B53B920424EA7F5CD9AC21D2B6007099C99
+02475E6CE9C732262C30BFC67D25A52AB9D3DEEC9129B1D55B0090A639F4D808F5477ECB58CEF4
+049428C0FE7677606954A9AAA9107C634BF2BEB34B051A1079F3FBA009F08605A3523FDA0FAD5B
+D595859E07AF8899B15063066CC08EC9F141E924205F569730EC13B26E6EA154CA8E535AF7DE10
+188BC531A1E670FD2D2605351A9B37B048CC5044D989BCAECB85E82B0A56973E51B882C137C4C5
+347F360780EE965675DB1FEA0085C0A04187F4D555951736F0A19D30B3AFF83C13AF40E46F02F5
+7FBED9B3482548F53AC507D2EB6EBD2BC01221F7E1FDC2437CFCA9F2D5BFD0073C61262008D38C
+9441E636CBC5AC1AA3CA6182DCD980B4C19CD32D765D280086DC2F11DF9F876539D7F0ED8FBDBA
+63C29C3A672873F6CF95F901CD7DA38FAAC43EFCB6CEAC5E7EADF0CD32C3477C6632BEFE3A661E
+E61CA7424D972E95B21C7EE640EBCF67D4A10D8B0F60C9BE082494F73F5C2262E3FCC8D23546C5
+9FB9C93F939FFC5263B6A6025DF1589DA9180169A94CC461D1A7679F4887B52A559569A0122B88
+BEBEB462DFEE4836C38AB10211C00CAB352F8AC1164626E8C0E014323EAF3522B627ACEBE11657
+3F3B0E5BF06D0F86AD72B1620CC16BCBF8E6854D2A1985F09548CC9A7812ED8195495B80BFBDE5
+755BC00415757FC99E100791B6056EA7E06DD28D3D36095DEE6D200535DC536B4EED1C64D62E79
+6AB87D226F5A682139F85FD44F45D747692BFDD1BEAC8BB139E6FCABA356F58CAF474C4E35E3CA
+1FCBEF057DEFE3B80D652F356910A7D912D58FB29732811950130437BAEEB5116CCB19F5CE99E2
+51B04E45CFFB06873B4666C4CD8712E5D5238A30CFCFBBF0C1C465D0522D84A89D6014EE2E9FFB
+5FD3E793AE57AF6C3AED437E6A4480E4C472727523B5B88FE01EDB904CD04BDD20F1AB4E92D57A
+A8AA4D61F19C1C2F3ECF5A1194DFB7C62E858B45A4DACE7DC3CD18379B90E9FD4D59F28CFE907B
+F054277C41C28075A972ED162DC30EDDBB288EA85E15E79DA145A47733F0656773AA2A5F075D57
+D8F96BD2AEFF513FB161FDCEDE6EC6E117CE27CFB25E72365F282422B7C80EBFCD13335BFA551C
+7AA8F633A8E0129935C31A215496F3248D55AD7163D6D9B782384FE4957C7542BC10E7F9CF2FE4
+F5DDF853C0EAE7BD440A759F69D60EF7062A1BFC0DC7B8213D06DF774E0A127D3D849193A6B19E
+DC49A660527E4D887AFA0963BA6AD59D100E37DC48FF2AFF328A8E8E537444EB00F80CF79EEE03
+CF3D9FA9F2D87F0FF3EABCD681246D5BD0A3FAEED6FBEDCC43893291BD0430918A994BBB4A7A28
+53892BE9E1F0182040C3E1AE738EDEF1375818D85E00D626CC47D247CC92FF707C955750A56E24
+7ADBD9A6BD665496C24A4D6C86F05088BD364B6FF4EF3CEAA8FEF4C2CF83F39A20A5C76CA998B1
+F660EE780BFE92FDDFF01DC1A3FE0884B7EB9D5E9139B40C9E3BD4B9EE8AE3784E113CFDF97442
+865E8E126671E1209638FA5A60BC3719653EDC3CAC57B8F1F331FE17B52B8D4A0BA65202BC770F
+D40658178F3A0251C3988123F88C2854066CB05849777FF435A74FE221974698D9573D963E72ED
+9079834A996F5E9012352C93F8DB09970296D14DD447BED6510B225CBC584160893D523EB78739
+2C92F2282FBD398422F52D24E12643CFFAC71DE2160403ECB24BF40712464EEA52BAC4411A2A35
+A4581AB3426B888F777CAEABEAA1DAF42271B2DCA94840CA27299D0378585712E1E8108E295017
+B376071BAD7B187CE519B5402A19464CB4DC953DEFC2222CA45282FC98ADD44640348F2B1E0620
+679FE1E6BA4E70CB6EE944C5EE7644A5B7667130B227430CF55057B05CF0A1849C7B78410581CA
+F9848D14F5C60236E7CD7344DE2F9977B43D1B260B2FDC354A3ADB591EAEBEAE3918638A7A9178
+D12F421F27464F1713E66B8FD1E066FB45F29E0001866B5EDD0305502489B24AE5C7D95BCF7733
+C8EC7213307B78378F6A458F698E20C51E2684199E653648323088F89CA37760EB59D590B5D576
+CDFD6C9B3E98788FF2044EDCDCAEADEDEAE8FD846035CA2CD000E9BE45CBF924941391819066BE
+37FD1DB54D80EE209CC66F76350A951CBE47CC7499A6E2C94BD8F6B16BB95C79E0E29C578948CA
+7987EFD698405574AF2C61E04E8B49FBA3C2072D491D12A43EBA069CFA2C9917F00EF62272B67A
+56AE10A9864C6B0F32865F0E9ED4FC26425B1CCB1FF2FDBD14B53D5408099DD810D93D90DC382B
+271C13BBF9F8D05A5AA406400383B9BAF01315D2F53A866C95D455702CF8467DEDB41EE13C10CE
+461085D9DF5AC20881826A306E1DFDB6C3A0237F672D582FA224EB57F66B55D454480D223AB149
+1C319EC22482817D4677D759AA89358DB022D88D3FB37A6C2E7350ADFB75462745D9E5E3A12E32
+BA31E409C2835B77624B250F783E877E632A639E1FD66B020C5A86277FBA9418D70A47888B75EA
+9FAECA66192930CE11FDF85027FA57C0BDA3244FE4D108DA2252CF5F412674AE2AF2ECD1CF672A
+E03FC22615F73817C4C576C14B5734929785833F1F712FC633016FAB69B243B4A90FF47EF7C6E6
+8E2E18EBBB32137D1B4A8F90B59B2486E3981516AFFBBC84D20CB779951CC9EE1418A0FFBFEB4E
+6E0473CAD3F3FE409EDBAB64F2749FAB513205F0A84149A8F7130B58931FC45BF90D73FAC395CF
+E2EC175A491609EBDD1F7E2A2A45299C1422AE724EFDC9D2726DF2C1E1D2DD3482E65F2CDB8FA5
+3FE1DF2310AABC6D4746E0A7F926FE27DCEAA6812287979059A2FDC8E25B0AA70C75C28A7336FC
+489C50D8D3F9C1EC7CA4249E88B67A19039DF7DB2C4C5B32C7BD683654DD202FAEE17D5F90056A
+E238AE29B23A4A845136EBF0783540DF9FE7C7425C3C9506054A5911CEB8696DC29F72B038A82F
+59FDD0DA6EA4493739DA653E039F1AB18B99AA740300CC2654A3F30B510AE5F39A73ACDC8B4A63
+513400D385CD3BAEB0AA59D7AFAE4A2886F5EE7C5F85FF0F9AF5A1E173349FDB82E523BE6E6ADD
+BC411E6EA111C06D8448EB462D9975951B82A1AAA35F86CD08BDD7C5C6F77AB0433E5A59647092
+77237732DDC1190AF61B7273CBB70860BF304F643C6EB7D17F7F4048EF98505A0A8E3EEE44C3C8
+55C7995CE7D29711B655EFC1D0B3D0257B07C5C3F9C64E940C876EBA5F099A475D569C82D02423
+9D2B81BFCB53D2F703EF1B1D99A92FA4AC33BAB41070423AA2163245564FF76F05A99C92D2DB79
+1ADE0D58B50937201EB350D84B73B8B78639682E6EFFBE4DE6A0B5083ACA0DFFAF62D9DF36FA1C
+2418992B3061D71E2CA9E48DF380D3D8236E616F73B0C524D7C89733D7A97C0FE4D035A50D0FA2
+EAE0C2119F4FEA0439BAB334503F9F4AD872C715EDCB1254473F5FF20087406E3652324E9C37FE
+CC26324BACB8D287AACA6EBEF110CAB8928AD2D3BBF522C7180032EEA74CC0CD3429BCBF631D61
+036AF2A021FCB5252F56989F4B398FD87BC2FED9189B02342164BD0FEAB5B2AC9D388F49EAE956
+F9812F3D1F7BA81BDD91D4B88BC6F4D49FBF9D01B564B5FC6694DEBFDDB9792B207CED6E30AC81
+F9DEDAFDC13B4207219A41D5CC2AC38BAE02E9270DCADEDC84E87DCA66B84699C15D3972B2FB08
+417E3A019F9BF0E9B31093D89813C44CF95888F37293E68108B122674C6AEA3F95D00B096DCF90
+22E2ADE59460C435361B9E624F943CD982B5E5EDF65D845302F716DECFF91CC1B3E1D0C22CAA7B
+C9EF0AA007DD372C8D7BAAEF3885D2B6E447A751622525F754C7CF84E39CE3B141289AAEB178CA
+687A59E229CC89255D8E477E6169355E7DB85DB9DD3217537F7F723DB71C7082654869E37E18B6
+0C5E387D3B9D157C656DA4C017EBF96D173F0004B2BAE0C1F913CAB9E67492C574C35F93269D83
+D318AF65DBD63A8A12476536996D29B4A70557FB77168C28BD3BDCACE2D5D3F4BFB06092AC2C72
+201F9BF2742F7B29D1C7A2217A1444DD567919B88AF2B1CFD04E1F92DCBAD4CD87BBE26175FF75
+E703812D9491A77D5F7D0B60DCE3633FD159C855C4CCC6BE6D54961AC58BE8ABF8F02C2D847365
+CB1C3E339DE7E44B4EEDAB9B29B3BE9EF0D5FF3C37B3E656F9F3D53D87804A0641547F952AE97D
+D78841D54768747E2A5C9D237D526C339E04836A947F007D0139DC8A32BCFEBFDB16D75AFE6992
+14F45E972A0188273D70F7AE355C2A57257329D734601424814F2BCF083E7C52D5C7E5F78A72F3
+4A64763FDFB4A7490917C9199521DA6B008825445FB7AAEE8186BAB66C138BE3BDA2BE402C5FEE
+76AA26666BE886B331512F54A07BE35B8B410143F5DC7A8D6BBBA68E94139A3CB5FA2E584F2106
+6327922289B1839B46719AD15B81CB7ADF3FF9FEA39D7FE050C86E0D8DD38A52F34923E7C6495D
+795519FAE3D9B4141D2534B0E1378923E26F43E730D9D3D0462F063323494329E7F9345B2B0D78
+9408CBED950586CC31F7C8D64951AA5CFA497E5760A5AD17F8BA2B2095B90D45EA2262FF51B57C
+4E9D118444273E23255DEB3D39C8E6D404422EC449E379567069E9C9B7C0656B85559D7D3FB739
+C5FA03B1B61B1ED7148B9DBEAF8DFABDFD8C51941B644D69538C4EEBA4B6DC37ACF9B2CA711565
+A2DC875E0D7375B95EC14F9F1A18B3CE204270CCE76467E3D2673848294887261846808EBF6C2D
+3AAD2F46EAEA4A33B0EECF57F0F10430C50E907C72052513A1C17CD92669B62D191561E5A2E320
+8E0DAB95919FDFCCEF0A928C3ED794D9212D9EA02F6C2264246FC9FA8E7B1F559461AA54B54EC9
+30925D82E944114CE454186605D495AE1344726B311E9FDAD71AC7212D241286BDA1EA6C1C9514
+09B0E69BB7A0E60BE1A90AB9B612496DA5FEC323E08D97F0278C356C482522975BC6A60E77A37D
+5DF1AE6FB84A6DC1B2450D42BD399CA27410F20BD462F7E493F07602CF8AAFA7F60FD2E571B76E
+627AC2A9170334E427E897A23F70AF28F9389D57B4D5F9FD416ADE36EA52D48DB6445A99DE978B
+0D7D8FB7C2E77329D3069BCF1128EFC766B45BE761841AF5E460F93015F8F7D4BCCF3638857C25
+3B32356A178D9EA595E3A663542C2E9343FF9A295E5E09A714F9ADF0BD1D8133976243C9B988E0
+5B8B9AD1176592428A291824982D97D74DCEA11B229BCFE8851AA373EE168285C8D0DE9507E97E
+FDFB7A992C736CC6A369680233B5FEED8CB98B9D8ED744BEE85F2CE3934893BE49182AC7C468AE
+A016332252171B30132CB709E940233CDFEBA68C46B8A633E82EABFF88FCC591F381708E6975ED
+145598D93064D975906ED50D31CA6D27699E31F5115E7854523E2DBE10C9CBEB655A8DC253451E
+A126D18661BEFA2DD3A85105C9AFC36137C2137DE0D7989EDE455E402FD23247F6803C3DC832E3
+55BF20CAF97BC9BC71AD3A4D6862F0EEA282746DCC9F3A33FF6C77CE97F920D8860D1656643F02
+77CF4EDA370F066579161D6EA21F225F83C46669A8D8AB83101E90A5EED0AA43FB629F97C08C59
+E92D1E0B627D220C89DF8C7471DB49604240DC92E2CF8880A9D1B1B7DD42DFB8A8A34D060296E9
+2438D94C9A0DA68BDCAA68B56E57C6BD029C1FD1E51080228E2C3016C92CAD9474769337102E8F
+5FE7FE5D7AD099C3DE3140C46A7199C7510F9BD682B8CE240C8A5848022B136183432D749F1047
+95114861476A8EED63F5281ED9CE9C66B4DA7213D57D8E78EE6ADB8154B42C58F384DC27B11B33
+8A9B8C31887D0A4C231FE009050FBB8D0FC6072DD60E8E4085439BE5FF343B69F77A375A6DC516
+B8924CB71AC037AECD69CDA9BCEA13908EFCD0860DF231DD695C638A7B6712E9276B14C5440F3D
+D5A24DA0CAD3A079C60649618BE2D9C20CC12726E74BFC41F53B01AE338566E89483345B40DF0F
+BA3CE446FC3616B0E630AFDA8B00E1410AA59FCB4DA0746F5CDAFB6F9575E3E50759184F7FD88B
+3162A88C2066E255AF31114B3B3A6D4E542924F4BF5B4F3426491E482EECD99F193A3A64291189
+86781FD9F068B3CD80B50E8015C2B2EC1AF75DA3AC2A2BF8AB40CF9C30FCDDCC723A92C5D8E7B0
+BA6947F50B3A93FF5A9AA5FB8B87BF658EDC786857B9053B03ABBDA91AD361B5F0E0EA0C4DB496
+7A7EC2F082CB4CFAAEB7CAABDE84F4D237CF216C043BA9C0D798DD34FAB24DCA5CB189CE619B87
+78B4E07497DA38E13F2E5B773DC3E558E37CFA0F21C1058E8C66894FC363685E19C472AEF35500
+0CA307E8DA03B2DA7EE772562F0C9B1B0E0CAC4900EEB789AC03CA093B867020A0D25E5E8DEC5A
+A6CE89C42E81D07489D1CA76D765E25D6C79CEC1FBB379D033079367C0699DE5E038AABE015BC3
+0E226B6C27192E1E0B905C962BA2A7823543B30F5E9BB69562E82863F6C00136CBA2A21A343495
+7D494B7FAFF5351C78E086FDE13BE885069B6F405B0524A05FF4A1B9F2B6346FF9DDD523FE710F
+F61D76F34393FB029963BBAB206480AF1F6DA7DC14581EC747E56B775D1B3E7D0C13512B17EBB1
+79163088E6A9D3D9030124AE1F0C03465EC70EB6499EEDCCF98CFCEBCEA3E00072D3FC3B3755CB
+42EE075B94EF9D879BB2E5DFEC6FC9F368FC0042FAA6AB46840BC95DAA39628981D190A07B7A5B
+08F4536ADF922BE760F64560F50B891F3EE6E60D918BA871F38B6DFEAC28757F90EC65401DCDFC
+4BF636ED0C0F6C802EDB640C3C81392CF26F6DF07199C0A6745CCF19920D0587A8CC4B2CA846EF
+DAF3EE5A95D75C9D830842D7D30370C611998ACB0444D2DC05CB749DEC79FBBA92A2796576FE01
+90061CAFBA62D534F42D6A55F8A6FEC575C47CFA7186191EC8ECEB2F8BED68C8FDAF61670E9938
+36E4771AF3DA8C6ABA85783FC7E4A3B1A3A1A2D4E090C44449A797FD5E9BEC84602658E7F92BA0
+11A14094FF9A979F405FAAA05DF40DD01416A06EB673698586538205DDB5A12229A949A1850D67
+7F0DCDA96622FBBB1475EC41C9E6F2D411CEA0AE2AC6EAE817493D08599AFB28638D5724DB7D8B
+2793914B835F9A04FE2B6A1BE2F7ADADF3654EF09ED3CF5A916576E58BC101BB145C5ED7516FE1
+B86D47954316804614DFF2D5D04BBF772750C9F555F693F6B6846823CB6FE8B88B5AB77A2FB55F
+6E4F84509D755A5D767C5ADD2039E4DC748DAF271377FA7A0BE6F978011726EDF163E4197779BF
+277691B39896318A73A09EE8C413E18A2B01929ACC7E1FA027FFC22A5FE30AEE67CFC3C3A922CB
+4BB9C9A4571E2FBB8FF622C8E99AA1B0922CE1B2C0EE14A35A9DCC920A5FC0D620E053A5956C6B
+77CEB4E4700810576035630566715C2A253B6D5DD3E7CA546E98C2C3A80DC5E3CEACD48BCD0A1B
+D1FDA8FBA2B83727EE140A4461F4A629CEDC343350B9BA3E137D44541F9CA66DB956F8E6715CCB
+25ADA57600D753A9E486B916E5FD62863D9D9EF07CCD344BBFEA43F10F04BA1F811CD774AE033F
+A56118C8D43EE34A6DA31C3D30681A1387AD17F5D861CB6DD7B32B1C5C5BC66504CC1614E41B23
+F58C044F2BC4E8EDCCFA95C2ECEA63496BE00FAAA681E2AA07F3B02D43A8BD673B4178D6338DA7
+27B3BEDA3878361AFD55DFDD816A1FFD78BE5780849F13BE58CC190AE43451297C504624AAE17C
+6E0F0B5FFA08D8044C96672F063086F784277D54F0F332F87401373886FF9B5EF7EA2760D75655
+2D3AAFC7D54B06B92072E7167F77A5B9A35386812DD23C42F085787B14F60D064D9CB0089C91D6
+A134F96B2D85D15BA37E0DB0A9DE2DC1FA18598254927E231F8D58935B74A3C071F676163BA9BD
+22299DA9DC600CF94E98C2C366469D72D6D072DE38D9BFBFC094C2ED15998364B3ACBE362644C9
+EA4B9A4830BB6AE0E0D10657D37CB8D47CD3F02581A8F82CAEF30F74D98444B473D2912D41FE75
+A291D20F3E1F16237E99EB1579FE624B1AED5AA20113C24F9B2E31EA836A7E20ABFF81329A79CB
+D704C59C71AAF26E6D76FA4F523036D9224D04D717AE899B9AF5487BB8A4599737576CE9CC7437
+0F490E335BCB7BF0D0DA706A530FC88A87435D769AB84F24F517ED326030FC372DB5C1506AB8C1
+A9954E52154A256327783B61CB438D4B01C9E2357E25C2ADE3E7EA49AABA75AEEE50E99060FD65
+B7C4FFB81A6F4896870490AC2018C8765E0260BD852635C015069E18F0DA611045BD9EBEC8F1EA
+FA9B8AE554CA6C791097D8ECD1DB564D73EFC635858E1E8CDE134870D041615681AD0DE841A325
+B76A5CBFD07AFBC9394BA9319D8847C8AF55B9B542BDB09BC5A6BF0C4208E94C7BFCF201AB5A36
+1D3FB9BC4652517D3373AB3F15F7488C0E67B4D3F1E0DCEC8EFF0CBD5A7C2D8903846A72FDD2E2
+B35615F01D9CCD067F04CA21C640B04A51FC667F7D4674BAF7C1B52A067A88E934AB0AE515A2A0
+CFA144143CA34673483FF5854C71F4FFE138B8FD510E3768147F88E89FE4DC50CE5970E735F0FE
+E5F90D5AA9E8C08822243E60FFB37EF6213D02CBE99C25D02AA7AB55FE4C3FB77DAF9FEA0211DC
+FB47CB4FAE580AF6FE140A6AE50E4864DB001EBDE6E725585D2B21DD3966F2CE596167763D1385
+EB244634E34386435C61E14463042B74C72430C349E0C64CE5CF05346F714F4283C92A31ED854E
+B3493AA0FC8573DBBFADF0E55B584CA8BD74966B52EFC923B7828659DCDD7D5FFECB834D0F1579
+70EB8A74A53744BDE6C1234E00C4A3E0A6B87159888C6918EBB51D8C20377EA97CF5472401174F
+FE76273D0A94C865930801CEB1687954FAC07C715551C207AD6934CB7B78D899B69F576C5302B1
+4F53E3DD250A3B74F2D99B48E8F29169E0E9A0CCFDA3D04BB2CF77CF0FE3595C8AA1BA225F83C5
+C59D67F1EC7718E78EC3C154D8E7E75AA69B5BFF8192A3D4825DC8EA7B32DCEB16A0EF91466498
+DF0767C20AA59E84AB3C6EDA3A7CB67611DB78C9856D188067E36ED4F3FBB4680191BE2E29F1EF
+53509E0DB0167996CC6E6B1C79CF8C24B5A79A2A9019B0F50F683B2FBF406ECE11502306079C56
+EB493F51F447652005984DB264DCEADEC7EC5518A72587195D19E534E029B35C057C4A16BCD860
+63F4997A6CF20AC79B6145C92480F90C5A5DA23FFB51CCB5F3F364BDF01554AF7B66229FD49466
+30ED14770D2B772E1A9EA3D000AA5DC07343C220FB3E57BF52A015DFA5E3B70832DC311CDC73A9
+B8789B0D020ECC73823282130F34C975B1EBD2E982960DE384086E55758874706381E06CABC255
+FEA04884B43DBCA66DC862F7FF5FE9DB12E17F3F30E20C488A75985B62641D36002B9F10B97DD3
+98A7D3A42D0D06F3B2F1E6A5248ACCA1EBBA0099653B6B76A31C0027F970D98F9C82E6DD2B90E2
+201CD306671AE128BB3EA5BFCB9E6C93F62E5E348A9420A0E301F5A1FA1D59C37887A65FD129EB
+F6780EC8C350525A4516F8E7B7797D44610D6472DA9A1E641EAC906A5EF0F91FA155F150C70FAB
+4BEF1C44AAFE9020F11AF0EA1EB17593FCEB19DD7742FD69615075DAE57769042EA9ACE067104A
+948A8AEEEB9BB0D05404F65DCCF7991FE4EFF0125D56310B1DC96FA0AE11052874628AFE2F0F56
+D348B5BD0F1459B3A5CF0746117F7A46FA318FC93A67F897AEF6412E3DD1D77E1082B17752A88C
+7F320A7085378A1C97ECA99ACAD52D972A9543B280E8B7B48ECA10C31A6EAB3908E32F93DE40DB
+EBCFB6D79CF3AACD1496866F36A9976C0A0F10AEDC608CBA7018CCD04C09E6EC50B444E7BE8F20
+291E8B5ECE9F253293022A2B234F9CC18CF70284FFB7B3B41FDB548A76BF3EA06E7825BEDC188A
+C57CC66228D0F9478322215E9F9137344296559BDB85E1E7507533B88E7B1FF389A5B3FEF16FED
+9B530C6643FB5C42E4E77C10D577A07EEF5191B9AC2F2B5D58186E361D5AEC69851B55F03405AD
+C53B413ED1BC18342B605C972A2E32A1E5BA96A160E8071470D637D76C3E3EF65E3F55778D58E2
+B8F5831A6AC1F5591D6155A0C99F15DD1C191E73DEF6394B99EFBC357CB2D2674DDFE552C7F367
+AC1A02C88518AE998F12C22A52F519D53BA8D0DB877800CB0257A8D61122776E6A138C624B3767
+3109543A7277A734114801E7BC5E2DADAB450F6B8CC6A4BA049E543597A99D8DC0817DE9816A41
+6126AD32ED7B1D4E8C9A8F632562FEEF27ED2AE88735DBF65744637EF765FD1332BBEE90833315
+63BF90AD83FD368631B87C317981CE591EA2580529BA1552C4C9CF3BCAF87B1865E2E3FBAD3BBC
+8CD732E7E9DC435D6882AEA8ACE86656AE556C493F84316857E36AF878D1B31138E776A0E6B0BC
+F0115B22E541D7E831E8A75D272F98AAFD6140F028EFA9B74D24AE8F8EB78D4A0438B594DA68AF
+5FE9FCF3AF6C629162F054E9DAC669CBE95409CABEE04AD8219512A093B226C97E14B31227B338
+5DCE17F4851845337BD53C17D4A05917266A3A8A1D7EA0B714324B97CCBDE06E3D947889179ADF
+668E5A818C3E67E197C52CB92E657BED3FAA6DC23497B4537B6B795B734EEC868437B04DA08203
+4C222DE20285979C4568B180153B2F21F098A899469A330E01710B1313AEDB59F4B6CC8D036A49
+7AA3CB58D0CB0F3B84EF96117D1843061EBE271DB80A1971A34DA62A20E889EF0B0D51117733FD
+687B484345DC5B52E13D2482B861C4CE1513740C56EC3267BBDC69585F4505D56D08CFFD886CC4
+076763E36D40F57ED0A59B457092A07CBF1BD05B6887CC61A6E88B4B31A68902DD51621680185A
+906643C4CD5656A08295869AA5387A90B1586F02657B72A8298630263CD1B2910996ACC9D8C6F1
+203440D09337D583DCE4F484154912CEE6243A95E97C252D233534F4ACCF940669EB0459407320
+DE3F6BC3FE3D2EDFA04494EB590AA8FC25CDFE6F73B5A83A0609C7521AEC7F35935736415FDAB5
+5C7765DDE12A4233AE507EF60681644C10B383F9B842DE2913037AD91C43CD75D9A48792974E09
+C2413E9C519BD01A3ED99189553F6F6DADC1DE7873B5B2836F4764656944DB5F4002C3557DA890
+6082CB1B2C5494E4D6C9B4E062754B55C758D3D804BB1A274D6C6B50FFE7048A9429D0C2EB5C17
+A239A66210D663454FEC69D596F8D700E718250A1A1CA74FA445AE729850A86165E65B4B10EFBB
+34C5584518A9AB5938648898082BC2FAEE626E7D6779828C671BED553C6EF5FDF43CE2F63D044E
+8AAEE91E1C8A47AF2E2FB79ADC7AF9A1EDC3B6AE71AF805CA4CE843374C46A26F5E0F91D0B2F1D
+32CF1EB7C95091D79701A817EB251CDB56EA847F8171FFD73783D0C7C6535EB759B17AD84B0C41
+4D41BBBAE343306DFFEC2DEE68234130129D4637AF7B797B53ABA05461DA4024859A10B42CFDAE
+6CAF3550AD84F7D87F82771B88A0D7B231035F21A83F68A48DCFEE0EE53DF4B191E5A30E3E4B39
+BA3D212C29187E3520E50E444D026DBFFCB2C3DF4E23A07F6C0E13450F599AD4848BDCD85BFD0A
+A35947F0DBA5420F9A903F2619280626BBBD715F578AE5A7283D4BCFBB97CA04C48A4AE7C3BC5F
+4F52E8B6DC77408848ADBA787F3F76F6138AC7B430553ED32ACB1B1CC28EC90DB1CC9D7BBA703A
+1E047EB00BD8EBEBF2FEB5B61A6D1A86B4093FFD3C0EE41D46D6C824E9AC1BC95FCFBF725A249B
+C5AA9A5D4B1B8931E7EBD4C4503C97B79E1B7577F6B1328F18DD4A11C8BD927F3E840E0D9D6ADF
+38C30F5423BED048CF3FC205F8AC536494AB03DCDE85D262EEC61685C1CA9913F3BC9B50F5103B
+904958E74CD385527CDABEC674B135424F72E8041B2BD5D9998B094FFAD2FAF64C4605B909021E
+7720C1A97D528C0B1CA7C209EA4F31AB69B2D960FC17734BAEE80F2971A143737D515EC73259E2
+70122C8E624DE037CF538491135084AE16A347EB6CDE0558823854A9BB7FC862CE2995C7619143
+FB05D220027E6ED9237997927209B06B56C3A12DF8754CE26C2073F19307BA64B42E64228D18DB
+72B79483DE686EC877DC28701DA0490A170141ED88BFC09A6D2608A76C07B705C7A344F9121E2A
+A53ECDAF2E96A59504622CA76737327D6051BF979218851BD68AFC734FA47AD4B5B5737DE8B555
+A46DDB495E18397A5999A6BE11B4D3EB832B87B1E2DE71F302FC21FBF0354FFBC4E14001D5C7FB
+829A07DD469573C6C3BA770039FEBCB79FD3C8A3E9AE32A242376536EAC505E1446F5FA06B67A6
+5DE03CFC1C68D8DDCA3FA90B6F298060E5A72510D754E6E8471006EEDC81BB1537F507A8A08AC2
+84ACF48773386A092FCC335E275ABD920A0E46C5BE2ED36B735FB7428BA5E60D7A431860EC33AE
+E2D39EB734BD7F6F58B6A1CD41D9C0CF1F6D13313FE44742EDB101B2FFEB1BC120CF5F4780184C
+6B7EDAD584BC92F1DFD2AC79835B7660970F66F2061390443C6C5E4329D34BD5604C7AC04AB404
+DDE5DD1EE6F0C862742F9A5F88025AA7BE6A1DAB0D7F74FF67FFEF4A7C5DF08C2A9EC21D2AD33C
+ABEBBCE463656A8AB038E967788494B59B22BBE07A8EE5EB5C6F48E911168D9202D721436EA54B
+DA89A2AB4E360EA5A3DDA0180E8333769BF901861D7B74AFEBBE92DB48F5FC2BFDB492E4BD8847
+F3C7E39F86DD91CC4C4F4C07F6C8B9165A1BE24B1735D307562AEDC895B0BA816AC3DE4EB6F0BD
+111D4024AE597FED386EE680768E3EE12711AA1AFD8D75C6A5A6E34EC116229E2E87D10BE4A1B5
+D53A4D2F8DC83D75138A571F618FC44E1B0554DB5BC11EAAD1697FAF5703F015A210D918B6C7AD
+DBD2BEE0FC7009E777BCFEA522D34CD7622A648B5FF910C7D611EF254667AC3201CA13A49270AF
+61E440213E242E5B6ECCEF6780855DFC04B07E62722360586C534E22929D8632C4BD13F15EB73B
+DF11D14EA140613ECC158FA516A75A7AFCDFD5EDCB6C88A4648A8FF47E6D94A4A7426EADEEDA9A
+D5D7C2EA6C6A6B6092068183459B1E9CA7A2BB27359D600A404A92161FEFB087E2DC9D0DE1CE53
+492AFB7B4B06A1A30E922D90AF51299409ABCCF6961416F90375CC3ACA42DC7C041FC54DE8A3BB
+1763740535B375A2434FEF066DAA839E171A83BAB34AC87698183159793E36D51ADCF1C85CF17D
+E282B5B606298468742D19B3F4823042D8455DF37191DDEC7D03D9B4C1440A3F707BCC00A03393
+083FF4CFDEA52DCEFCF40C85EF38BEB3844B319014F63440721CC769ED61FC2BBAF998FF391B7B
+6F562910BBCE6823FDAC5ED961740D317B373FC6B85930AD260D4DA2E221BD185AA4BA2D3BA0D1
+2A2B1B821DEBE8FC78AD9C7279E56471CFEB591D3C4E77E4AC2BDB47FF01CE718CB56F97133D33
+B86022C15275D0C8CCF82BF90DD23A2956BAA6E8CA65B6DDEDB949DD467A53CE440081AC56D530
+81BF87608885D8F393D96C3D2F7D694AD80E5B5C115F971328320AFF62CAB890098349653B6F57
+9A6DDBBF356D9B2C6372B965244BFF90DF16803393B5E062AEA9F239AEB3F9069077FD2F1F8FB9
+D2BC50E79E3E7C52547F6A3CF266C1789B78E38C6CC83090AB1C674CC7F1E6E30679B95E8B1BC7
+79FF76F05799699AC0EB968C072BC66DC78AE50ED3518AF32E5C3204111A041B1B4DDEA3301ADE
+EE21F7E807ECC3562EE580D6997C77C58D5A009A27D7191B779FFB25357D6BD492619051B02589
+538DF1E3980B4376908AFBF7EF2A4FE994DAA9CA64C0783C3B72EB01785EA638BEA84D20C6CC38
+E31E394B73818CF83E02352EB4E1BCECFE49EB23FAF78C1EB855DA02598640477034C5731918E2
+F70C608E6487B3DD51363E08B7B54F9F1F421AF0BCCD87B83EFE8B63CC9BDA85F9776656557EB4
+3BC0DE9F80D0E2C57514B41AAD9E100C22BC5C421CF66EC819179E3591DD4C29841719CF417F12
+DB131173A1F9B9F0FF7AF282BACEB19D20F896508FBCF4AC97BA41656B1F7694EEFA05DE215212
+78C4636381D7604E0AF5E21956571DB30074BFFB42F60A3D98EB3E924C092535C916D0A729B86D
+92AB4645471E3D1EB499347D281BC7279ADC3311762C80A8A652217D7D4EDF6E122547B3B8A766
+0198FD1E6D25C223905B8162D076CD1A3CB00BDD837272905653F6A699EAABBB54F82FCFD0BCFE
+D77D5A514D1B12666FB270FFDC706B2EB21DB35D46E856403AB5E1972BF7F981F4E5DF503E225D
+BD59C01C6F862FBA243FBB7AF76C2367A9F4EA8A63E20E845D4DBE50102F3ECEA72195D2F1BD6D
+8D646A2132D4AC410A4F92947B05E32B2B21523731E69459CD81525F392C477942573A4C293BBE
+150FEB08A81BEB33DB6D779B654150041D9586574AFBCFEC7798950F7D4123D577F49E538EF46D
+3DC8C4527837DB940A9590C88B32FC6A35A1836C3E8B13CA39976907DA7FA829BA79C4AD6B57C7
+0092A268EFE8CB588B4A4486990981035AAE9C4A9DEBB7B3B0C67EEA459841B684EA3A5A3EFDDD
+B2F71E7C398FFD64582861FDF18BDCB42FF64E38E861AFED894C46D53224A239268479552A5D4F
+AD51E0F968495E10F1D5A68C1002E7C6E1BF98AA00092D2C04FCED78A110571EFC5D708DD8D506
+8F7977E3C974D62B6E2E9573138FFE9B66DB3951509B9CC7FA2AE82C09D25E99618FC27579EE7F
+F7BC639858D70511005BD11E55B42B6D4AED6E419FB7983977BF26DDB7D614719D409CD258B2EA
+50E342C18A2BA1B6F637A82DACF858742DAE0080690D4EBFF7FDD4D274DF0C1D4C49B16773DDC6
+79766A1FEB0371774B068837D853F3F4EA4976564D21A46683BF1BFE4E58A831F51F8CE57D3585
+9464649D4D7BE75394DF7A383F3AA2872FD2A2E76C948D4FF999BB480853BAF07E37431EA850A6
+3286BCF58E594B3805DDC82804F6E31EF557FDFA2AEE2013094D5630BA862E3609CD425495FC25
+9328A2445A81F36918F7C9ACED41A1A80B5ECF9E153BAD5FCE52E2016BE1FC932543EF831324A9
+35D5C9CB2921A43979AF1FD7EE064E9FB7A58E5D9252A0A976308D50D5CBBC96D888519793E6F4
+CFA1A7BC155937CA2A96BB4F0E4BAB6AE14C911BC2FB985D031CB2B907986EB6CE3F2E988ECB54
+400B0064D2FA549AD4D2996BC118BE86281FF3655D328670680D32D2C238E9E5F207B58C6B83C1
+FE6768B7A2A4917107F7516F2F61D5F0E5FD8350AB88D8032B2DFED91D04ACDE197A7FDD1D96D7
+F0EC30D5E1110FDC89D197778A7B1E8F291923D5C6A9F3B664F72274C0871A3823EDA8E2FBACB8
+D30E14015002E9B99C80A5E0712D4DCC9B2AA8079105D51AE75992C765F9A8590961909962A95F
+F9169CA0E858676FAAF5EF160682BB4D43B34FE4BA7C53B5A670EE5169534FE4A254550DE257C1
+E5D37D9BD147A2D7C01F0DEEC0A96D655E71214672AB8AE5BB16F8FA6EAD54577C214E30D9D1B8
+A94E7C189A947680748FE661768B20D9C33AD85384E3A8CFF7B0353B625355D84FEBBF3EFD95E8
+4C93C8DA1D3A57FFA9D3496C2C53DF225C0772ADA930D2C0BCA3D1B558411D8DB4F00AD68BC508
+0028D066E730C3DA50C82D391BA228211C06AAD962A8AF12AF1F4BF50F50DA15627D8A64FA8E5A
+4247433ABFA2A9282DA520112CCB46C1A45F9AC3D22567553AF30A282BC96F288EE71C107DD938
+82785B04E8BAD801177B0EFA57E368BDE511692F65A1414321A3E0BF72481CFF1680F0AF2B03C4
+5D2BBE261D700FBEADE5A23C751014185DE96466A678275F5F310D0A316F8FC1FC9D2522C64A41
+4648D64D2F35795530EEE6FF17F1DB11ACF1306DB24E88BA708C5E840543357C7998C611D2675E
+3AE71453F95760F38C40D97EB7B69E7CEF6BB535E548C2178EB9D88CF93478FADD2EA43E9464CC
+7814655375106117193A896D1B3602CF35C8E419430ED2E30B07361E238FC4B5244692539D3075
+CC6BF5482A79BA1E9FC86446EF313AE910CF60A7C2C51AAD53E21FCCE13F2A8F2C80D3C3158521
+43770C33841EA40AB8DECD8628B2A52C30ABA07CF07313B2B7C94DBA4B23E8477664781F772C28
+7851925A1DFE45D6877C22320C3F0094354709E1B1233B4065F3EA39A9F09919D1BF1CD37B688C
+B2FF958198FB207843A19B570EC3ECD75AB01F24E47F0CF0D94D87FB33DB8D57FBE4789AE8699F
+0EE9F27F0FB2D338D1811E3358E32302597BFF0F12D77C6161586D7E0F3A2188F83AFCA129227D
+18D6C4334BD48B52A4664F86703CD5E0693FB6AF02EBDF3F4257E7E6C2D091E019437621B47970
+F72C598B7171260A64B8BC63E99B7F7C0E0383D0E06ACD64557DA74B423C6EC0CD35B115898ACE
+C66FE295037330C40F779CFD3849717041043058C0D4693B9120BCC42030EED9D903BEE7591576
+2106C92542720F5FEC065B43980CB3573B020AADCFFC5DF653C2A77065610EDFDB7EDC3A4C6C35
+79A0FE2F0A962798A10530D515D85F39C733DEAB8DB7C5148808C5C51F34A13BC10976ED77FC22
+3B3E7945CEEEB0F286984F4E7F132CD2352674425959F118C4D8CB9089DE5CC2DDB69793B041DB
+6269BA66D08DCFE402F7CE6F60429232110F36668729822D6CA93817EDEAB4F611CBCE85D8DC02
+6D61C96A70259D738241FDD1CEF267852962275FAB164453AB30FDEAEA9D3096542555A04553B6
+40576E786DAEB066F14DAC4828F193C03409C7DC78E6C9058CA4994F6AD3FD0AF67CF1D798AA12
+B5B71114459D8A1E82F5B266E5FAECC224CF3DFCEF76CCAF24897777AC7EE2CFA0FD3A6C1B550C
+5AAF132A27B8099C8B0E7D1E13A2D8DBCFE093F2E0236E7AFDA104E3F643D808A8985919188C42
+79147C22C26BB9D32B729F05AAB76C4327BB42D868C445399DA321ED9CEA65A2ED652F5FFA5A47
+4ED0AB269E80D45F45CB345548F1853D8D61590337782181173BDD31E9D71D4A58AB4CE4E844F7
+6BCF783B934F4358A7989B0BF7127894B8F155BA31D586FFC4B0714B8887D6ADF80C755BB8F93E
+65F4BCCC7098F425F3DFB9F4859A3A6BC8E571F5F25AAB7D4579108E129E21FA6DF0D3075DF8CB
+DFBA76F4EEFB69EBC64A0E183CC87BA98F5A41859EFE1D206A8F6057931811BED78FE753A7AD9B
+2AFA306311472E778D711D0554AA2022A9F69166582F5B016A2165860A35FE877EE3FD5E528C7A
+023D543F8FEAEAD885CB894554369577BB57755CC627A0C9345E5A69AE5FABD13E221881101450
+E9CAB71F3FCA9DB59A32719B116B3A2BA129C01889943D8E893E49EDE1DC7C5F87B6E2A4F4C041
+06FEF6C860F6A43D83BA0CEAE8B93D1D2D4C7BA09A18255B04350BE3CC7A59C10E53DC260C84B2
+F981E4C44E87A5A8F252036285697ACD7959EB2CFE6CBEA7050B42E4DA801806691E97F3F1BFDD
+2A4B17EAA1C2A4FF4CA0AD5E4F3E5B579CD67229F252733BAB5B2F62F74D1AD05F45B1B41225A8
+1172E9BDA7EEA81A80DE0C48005FE837EE8BE4720077F1A207A3FD1B9398931A072E389AAEA068
+E1A214BAE8EBDB9FA5FF0FF7A96909B68461ED200156E59BE32815A32FE6CF1931CC31019775B3
+5A4F5C6B2121B81137CE14A52C8AC18AB5303754F2565384CA74BBA49A39D273E269BDD2C7164F
+042CF18094225321B6506489D8ABD68955AC32452B2D7976FDA668651CDCB6BDE900BBF3E87AB2
+8DBDE7177EAE3865A9567C19E0CC614CEDC327B746C04254A94494AD78ED6DA26677F8A0E70880
+8750689EED2CEAB8214765CAD629C514173D82B2EB0AA673E250E68EA6D8AD640A25BF742A7456
+BF8EFA2AFE142F22E96C1F904BB7153AB261C6E4FE55574BBFC95A0BFEFE906F52025C06DAB62F
+ABF2C8796B24DCA62728A0FD5982B91ABD80D421527EC232B86B80F9786F16A6FA15EC4E7ACA40
+FE0AD25E10D961F067B41CB3443E0AB5F73DB39CD3186414FC72762ABFC3985948B8BC7711FFA2
+40901B58F4C869320A430E1D68F10B8D2D8FC3C2D5D12529AF7B8D5C3E501427AF5BEFE3E8C02D
+9A5EB4A3960DD0C7BB36A0D7120B62390093E49E707AA7411CA9CABB3B4EB49FA7007ADF22A552
+7201BB8260622FAB015E016223FA59F5B3610EB075236ACB344764E223BFACE353032F45526FF0
+5C051E3AA283D1F1857C3D1A50BCFE49BE1F83C6C91F433059E7D9ECBF5A649CA18F97FBAE3534
+7782629653A668DC86DE2033261E3D701B4D324FC1023A6A3E35DD0DD33938B72D5B75C6309749
+D4468B73405563EAAC98F4BF055A524058940B1D09A1603AA6F40FA5C5D98351F5341C57A14AF8
+EA6EBEB17D34C090BEAD2A4FAEA9039D8DDDFB26676B1FD2E35A02DD1298F7C3661F545CEEB0AB
+CD9D4EB60707F4B7C3161EB13F649FB118AE135988598A509CC4595555BFCD320CA0294186873C
+53272CD5472A6BD4158EA0602BBEE13AD5DABFE374B80749FAD51E962AD4A0A5BC563056B5D055
+C416008CC22C8735BCD8406B1503DA330CBB62DFE9417674EE52320EEEB5D277D7A10C7D0FE624
+5EC17EEA4F47BB5D78BD0A0177D7AC005C1CB45F13CED23AF3BEDE97DA7EFD8F0A504A76DCBC86
+C03F8530ABD68993F4945A7C7006151A9F05A92915EDC7021D9340EC694603B33679F697186AD0
+6E9068EC4518F848653BF3FCA0B4B462DECD3AA8462BE335CA9BC02E99326B4A8E691E8329AF81
+507A0227905AE3F482F8A6BC92E5EFD23C8BD5E54D5BF01F436D7E229E408AF757C02B10483CA9
+2D27541D61D1F975FF37A8362B984F2C47143546E5B3D99956A825F820DFD1913E779B60F6AF63
+CFFEE206A8EE4D6F90A5980D3B394BBD789C42517FEE14C1A0B9B8D883C3540EB9A59FF2D53BE9
+F84249A5450581AFD2AFCA927CE4DAE3EAF1D21B321E5F9D845A8538AC19E73C2D7B998C561ABE
+01BCEAFD166C8E649230B92FF215BC072EC36BC2EDCF59A93C8E20667B4CCCF7858E196B2F1D15
+5CB85EADABA6BB5DAE835D38BE3B2CB362C91BC91C1D418F06C5C83BE1137FB629ED65A5673EF6
+D0D111CD2FBCF60BF0ECC804EB20502085BA99044C4B8C28C797819A69DD4CA5DE1A81F6A00526
+8025D22C28A3E29FC18E871604985BD477DAD38E566CB9528D804516AB308BF06EE3B2472DC013
+D88627029473563CC865D417C00F2F0169C39B4DB3D90C092ED090DAFB8D0582E70F742F608861
+2F139418F8AFBCE3688C83C173E651DC27029DA6C2DD8EE199E7F0BAC48FE66EE0028AC4C4C18F
+5E111678402678707DE91A0CB50F15B77BA1869966AB23C993BAE7243F96127B5285504CA6DC0E
+536DF06A96180B92F0F1BE14BC816617AA7415ECB963C4964C72023D1D35967E0631E2EAF1E4FB
+75BAFAD7F30E5FE1A9A8BFA4F2126929F49F9DF7B42370AE3B7F4102FD48490240333ABC9318EA
+EAD6647AB3987E2595BD0C10F521E535BC254E5379AB49F9FD83DC32556184A4865F514F0A4FDF
+D206894AE3B4D31E16F63B4C14FE8064BE8338D8AE123EF9BC64B0BCED20108AC6D70EE59212D7
+FA5FDE1F97CA4670BD623C92BFA5F03D934D16F642F1417A5CC20ACDF1DB8812F03EE20E2FC563
+8ACEB462FCE79E1157671CD9413E6955B7EF61D8766E2B040829AC4CE58BE5EADF080B11710AC6
+BBFD764C456C0CEF4232A99B0DF0B9A451321F91EC4A4C39BDC4678903DAC833F4E21A9CDE857F
+5B1514DED5D94660D5D5DDBAB6116D53BF50D62DBA84BFC08C58135C7A8B8C8348E3905985E6EB
+492F23A45F6073AFF72F34A3837F075A17D4D3B68F789C5B3C2F07FDEB0F06D2ED7A476597AD1A
+859692B9F1B81E9B5E811EA87D587330F027EAF401964369F07EAA8AB6993527FA92A0D321845E
+D818D12EFEEA61A877CB0FBCCCF41500F9FC68071EAB9324B20CED4C74D557CEFB1DE37F26DED9
+083B036D0B96A0B07142D4283FCF63A392F9AA4624C8E40D0008E6EE523A79CA2266DC5996650A
+E44EE0C843E2E8FB8A9C1AD69B12914F33A1EC9CA631A0C15757D257E17EC7E463A0884C38BC9C
+EF76BC8B3900E438E18AA2A5A50FA89D019CCAB1695EEBD62810D7539DA66FE556747A21872610
+8D17D4B43DDF4F734AE3A3C840B3B6CDA736C080D382256FA54FCEC31A17FCAF7BC12AB051A65E
+A250FBAA8D251409136DAB0AC433D91F570A80C8C58370FBF63BBEAE2BCA72C280F9E9E4494E05
+77F45694BA1E0F7CFB510DE9D6E1E0AE6A900E644CDABF499EFF0EC0F65D3AA4509BFC866C7788
+0C70147753E076B797B31769C65B53D74AFB3D38DA15A10388DD5A848C39184A54697E997F86F0
+BBA545C34D240C747B7FE1B37FD97E92826C116D56F10FB92105E68E4246775341D84CEB6DE34C
+02DA1A20D684590B44103C1A6989323D129D1A51A2EC98621975FEDFD5E190880F5F0F68DC12FE
+1DEB8B8AE8DF2C4807FA5B65ED92296F808D8D9008D9403EAEF135253D56E0CA33CF7974203D0B
+F3A3C7921F47923EFD0D6076BC93C0D2FA5EE9DFFE3B660DA1262CA8C3C98D909718EB2D1A1821
+B0D4647D1F4C188FF79E9E16EE3F8EE8CCA2F9F2A58520E71629E5E027EA837EDAF9DBBFDFA822
+120B13B0A0AAB59CCF125040EE43AC2F29B7D414EE47FB53AC5223A2AA40C8C9EF067F8D40466B
+E9B73968C0DC26FB3BAE743DACE0B8CA7D88108C7A3A5D80162A3A93D06DB24A64C45636F8B299
+AAB5FFB252E8C2C4854845921E0A22EA5786978C8CFDDB4C45594D7BB2D510C56991279473E0C4
+9E5066BDCA09D98CFD2B40A40FD3AAE16886CC0030E1C308CB0B3EEFFFD92BC90A39C3D3427E73
+E2EB5974FFED2079706A40F0BCD6C390FB4FF4B0331E70B770016E6336CAD071C9577C18C3706E
+97C9019BCDCE23B6F295DD09ABABFF5069D64B7FE8380736B9767336F3DDF61B55412219855D57
+658BF0302EF809CF1D3AD68095BC391A1EA365EA28D5D6D61A44B367962E6577E77B6926C417F8
+E8F76EE89F9686C9CEDA3068A417FA8F90C54DBCDBC382A6CFDF923E37986169D078BCB11FFB4C
+CD9E45022A81934C4735AF57277B3478B6C8F676C0824C46849B539C9D3460EF967EC434FC8A35
+B79A94AE68250596F653096F75B308A2FACBBC2157150A7F6A86D52E1D31638C631908693C4D08
+5523A9C685C9C467DCDCA13185F8EB81EF37096DC7ADA8138420CEC0BE60396FE22E584B1197B3
+632C1B01B163FF586D0430D5A0C590CA7BB521FB3B05AC5C3E6D130BF4087E3A7EB76470CC8E24
+D2325D9F9087C04230D464EC742037DE6C54FADA454ABE28B9FAEFCF5BD74B30BDA9C2833BBFBD
+8C6DCDC0479BCEAF8697E8FB14EA81DAB6B87BA3D89BE0DE3B574F8CE23B18E58FFAEA08F08696
+A69C3FC79581F49BA5CA0CC228C3DE74BDEF328C7EE9ABC6688C42B174D8AB7DA088BB99A03341
+A1487CADB86624B48811B20CCD0982DD0B0192E7B40C1F3F3558865C48CA33712457CA452D842F
+5A21FA58FDF4BB9F3032E4B941C664F7A2785D039C1DD9A67337758B75F5ECCDF5AD13AFA671F4
+FCB18C3AA8E3EB3B2154DAD5542641B0652A382120A4B5EC6D73D95219FD0E7E973154DFDDEB72
+D97D43DE5921E62CAFCF12EA9A3A26C5A6A506F054D5030F865E3E1FDE6959E1F17EB5BE3161A5
+0B491E5DE3179C705A452929A608562C2AD3E04208444D69734EB63F86A23FEFFC008826B3F277
+9744A5E220C54663AF8B15B0ACA6B61F7E15B9AD101D6E444F05E20891198C385F1FBEA22A5C87
+B2A7C9F1FB6FEB8C732A21C1FE13884282130125C9A436CB9D86A3A53D6D922E5D54C8528E8AF5
+F836E643782B1360C303F735B2353CD93E0B924C274F7E0AE62511FD1FA67429855F3533A29400
+2AB0B10D45D233D2F4A7CDA1519D7302E4209B3C2AF8761389DDEC69419FE8EF2049DD33D75017
+399FA7BCBFF8DF10A6DE8CDB5F7866FBE9D5059EC0F50DD5048CB049B97CF3ED3BCF4A57D1DE7A
+C87B744F8D823CC2D140216F501BB29EB3FE9CB43E287D09EA8448D964F228BE3A2A5B65FB98B3
+D5490243A5377CC1668D127A59D1C0F04E7F4FC1026FA9A2C02A140E3C2B986558A8153B5AC783
+21FFE3A1F6F087A283D58DCC83DF287376D5F96FDA04CD053C610C0DE90F597032212E98A7E53C
+BE5ABF0ACEBFD2076A5080FF1D5712F2035E22D8575A4178330E93949C611474221CA4D8221886
+4561A6F0555F290C65E72CEABB0E7D680B29DCEAF0D19AF0695D73C2CD9A14C53968F52F571B2E
+AFB715F7F49E62D933794B7DF7986EFBF23FB1FBBB796990F6209991C1711C776BDEA4DA2B3D31
+322519D82B541C856702C2F07370A130536231B7BBBA0E4F8DD050469B687A1A95EFC8A3188E02
+834CC1283C2E08ED3275D0F2D6FF432945A61B10E9F2002B653E9A8D6890F4E2E9F033072EC34F
+0D08DF4EDA8A7E68699F3238FA4ED1C2A79767376011468FF1D3A47631FA650E96F3651D38A6E5
+2DAE01FA1E0163DDE3740886171B92B69E5A46090BA00E130005334351E57CA0BBE8072167D5E8
+07D2814090AB1A7C37958AB5745243B1138DEAD9E8DF94E800AE8DC00810E43066514C07B90380
+860144BEE44F34E8A75A95B523B2D9724F12AD267312DDC113131ED3FA088F7E08D828FF48E50F
+14BC4BE5E203763412A11A8C2D0AE9D1AF457BA4838ED958C2C7E3566CE43659F07942DD79B853
+ACAE63C294AEF5EFA938715C7520A5A1257580837A2189DDA84462027E995BD798C2F359BA84C8
+CF26BC6ED0E501B46B92BFB72A54D13F865318A387415558C959D2E5B6B6358D73201FAF94699D
+EB452BC41F84A14A2B104C6153FD459550E996C16CC8D608C7D31D280B4DBDCAA4F0FCFB640102
+4FA1FAD06F61C5DD9C0DDFF09EAFAA8DBE62B967704FF1884A8D167DFE026BB414ABA771FE49F8
+9EFB220586C4F6D1DC91D2E11AEF151F68A9A1CE45EA9D502CA7C498BD4296D98F12C1D44A4280
+4BA103077AC45D283A88660F5B2855CAA974A16C3A5559CC8E6B210EF5292EEF76A5BB2229C8B0
+D4A9DF09F347E519F45CE1306C40D8F7E1E5C0E4DAA18CAD888D6E8E337270944EFA860DDFCD6E
+4AF1498AD3117FF2E4585CAE02092F99DE77180C34B52D30B0AA4A92D8DFAA72275AA69399B3FF
+DF31199B30CEB932537667676FC402EC37E8179DC7EAC98DC8423EFB3F3ACF30512FDDC8530783
+5466B302C962789C65AF0E278A8535069F09A4FB950E1B5471A07BB9ADDCE479D10DDC15F58B3D
+29F23C60FD1319394B199D2C9919A668D83B462FC0BD10624C44B2BE451B47AF5AE66DF1DEE648
+0F42D642548F25932EB6A47E325EEE333B54D9925ED2ACCF319258BD22684E8E6E5243B7D0FD11
+B81BD02950A78AB7829DFF6CB31FA26E2A4A8382873A83CE556EB4FB97C440D5D49AD9F95C4C10
+F5A6E5326B34761D2299C9617A62CA7D0215D94BE19D1E1C77F1BDD38A1F135F25CF896F18916A
+6CF891C0260BCFC579453C4C26EBDE619BE97B73FB50FBD4C221431A515E3DDA4E3BF80740920F
+A58FC61E503D83C1735E28C8E5B1E29983867F13255F5E82159CEECA9AD1A901D6705C0B2502C3
+7EAB1450203748C7AC54A8778D6D87D4A57531CFD67DD5A41B668CDBB46D1735C882BF1433F938
+E2F2AC9239FB79506A275950FEA6D8B28036A5DD4B772C4D1D00122111D82E34F1E2F4B8E4DC7E
+A8116BFE939FB924F1A064F54747314ACDCFED284030FB2B4B5B80C7AFDCF63F1E02A930484BF4
+45407CD7033114B78F4464E4EACFDB463A328CE81D55AC19C690B4A01C13090BCD9CA9153F5DB1
+C53D23A1F2ED756EE1A9BD064840CA2F1C84AB5DF377373C97F3F16C5FA35F57A2421A4097A360
+CADC760651BB7D68F047EAB47269FAE869229C1090FE48AAE6E06DD96C87B1BAE4A173D5A2AFD0
+FD9CD73385D9CB51BC2036A4F40F1745684C1EBA4CF80B3FFBE773350D5EC759B0A4F1E58853E0
+3DB7FA5A50CCEF0A26AEFDD8B0CD6D0B4463389108E68080B746B1760B3A228489546FEDDCDEBF
+A579F565AA5AF94158B8E0BABC45F84F8A51F0BD8EC1AD329B69A19D737DCF0E9A615A945E6ADB
+0C8D23AF44B4BA1A17109788EB046B3CB1DDDCAE862456B1F9057BC08D286CA604765BAD26D3B4
+ECF7B6596D449E52490C2C2C79F24489715BD865A48988CA249D60FEDDCD86D6A488C3BD63DCE2
+0D5E37E6C29F9CFC7C62489948749CCD84F20F540080315923095E79D4F35A95396D3E6F364F7A
+83A42B00AA8918FFD623802F7BE71D0E4D0DF4EB49F4B7A9BF8ECCCAB90754E4E1FDB4C187F64A
+FA8CCC762E0F699974626FADD85E774D6DFD92CA9890F1D1A9DB6A1BF4647920BCF5BD83B2EB3B
+CB16D69F4CA279570A6CDDB06229004B4A5688C9484D144F327B61270C9F37048BBC1A0EA9C43D
+902A02A71A523CDA7876006090FB32B4FFA2FF741A5A8344CA79E65D242CBD7953ADA946672F13
+8FD6A42A80B2BE25805B07411F34CBD9939723A1FCF9D2BA73E278546301FAF08D6A4E15A0AB21
+650E485316468042550ED97390763B73CEB56C557D2BAA6389BCBA728A2DB8328ECB60B51A16A8
+1A45960C0B396A5A9EC69ADC7A267F2A55E8B05E9742E28B9D33219EF0D7FA2B13981A220E4CD7
+3AEE557631FCAA673E323BE5D63D09F93FB079F364E8DFCD34CBB073198E1370BE398B2783A210
+75A9C512E2E8812C39C5A2F4F6345A28C13E0CAC8DB00214427E0E59945CB648EC7B3CD8BBBEB3
+3024DAB75866FE26CD37A62F07BC8FCE74076177D517E721896AF3248DB633EA0DF7B42BAF9550
+E1FC8EDC7FFB3BDC4EC209094D54BC5ABD832D8A8D6D35123450EC928FE8BB6E62886E826B1E34
+FE1B3FC3A9B4A184CF47CE7B13D36057C42732EA8F1B805C012EC18A542F1855CCDF3DA9CFC7C3
+CE8AD49B830C73647C187BFD9BD9C19E9800F1F063D4113C2718494696035020B53996AFD62DBF
+C90A145098496D688F5A6A7C31E0345EDB25665463439D7D15C52EFA5ADDF66F6E83E81FD841E2
+72EE934C1B0B12E0AD50B433B3A9926B2374F897EAB9DD3AA637C87A1B4699D58D1CDAF109A881
+72395DBCDD1EB3C98F7C7A2567EE373E34ECA7955A3625B775D5DA827A425A272B90F6864B176A
+E297116D134883D8FC8D1D426C6958CED69EF58A217C870B4C9A5FA271AAAF232E4B37D76958B9
+1BA75D70CC557835048778CA3EF3B26255733A3503F60462E60407143B5C837588551F0A9E0D43
+4BC1A75ED36225C6A6023D6E01921ACD3C80D7F0EF2FE12D210EA9CA67F435AF53DA4F89DA3E31
+25E54219C4216C70B2A82D0A2748023DDD83021A4D46CD9E4065233031E33C28AB116236386575
+D402D6EEE0045C4F6736621EB29167B0AF724419B8C988456CCC88E5E0B52221E82C3ABD5EC685
+C665F364F712E914122629FFD39BA7BEAB41427C017BA6BCDBBD61075BD7016C40CFD2027C16F3
+A693228E8AB25D4E354779810B802CE959D76FBAFBDB8DABB97E4D5E27B9001E6ADAAB860EDB9E
+2F57F3D8FD4F20248E3C382F58714C3DD03550E9D96C596AF6840624CA37C0A56D9F96711B6508
+CF0D63B4DEB13F196D4E8355F1B46D68999731A8847C247286DF46C1AAE634BDD77A5D62B914E3
+18A463E20484A3219BE81A6DE5B8E58973D4DB3E6212739A383689D828CB83129E5EBDD19953B2
+5715DD63A14FE70B1B44625E5DB819AA83F6C0A2C37376A5613F490AC382099341DF9A8DA674EA
+6BD3BB2742190D7BCE38B476D4CAA093A069FD24652D0FD705E5319CE02B7795FF9352343A3B58
+4667744685C37F6544958575EAA75C6489DE45B985491328C9364C36269BE548A8C5C139DAEE40
+E607F65672B3FF735CFF990327587C55DD2193895D73BE0728F32D3D4203872470CD3D0F907586
+8D9838FDCF570A288B351C7AE33259808F2484A42365FBA8127A530A5BADC430BB84FD61322F1F
+B69E5CF80CD79693AB6D07BC6F3374CDF907C01D18FF6848A634ED584A66952BE2A0C09E1BD241
+636479CE4665527D51BEF49C1AD23B144D3D3A5018DDB4C237E8C2FDE6B64C866C76C2E06817C3
+0BE29C61C6512E1E59A02DCD607919D6F0B2D672449DEF953CA52825FC21B7F8292FA8433A7F73
+2BC333B635C81BDC2B454EB6A067F946C2209F9081B59AF825B0596D392CFBDC70B46BED6B45B4
+F3CB9551C770417FF4C5916618D17A6E8D362CB0CA0832F5C0FBA202F39972B2DD9EE708DAA646
+2953C4781B9EC8DC3FFAE55FAB9BD2EC94D84F73079A45BF3CB2506CE23CBE4674FAAFCD89BE6C
+65104B2BC60D687071B0608261597F70A0BB35ED937F8DB3BB1A7E0F6D8881F5B5E64729408A97
+08144693E2E68819A5F06002DF183A55FFED1149BEB06FBB7B7413A5DAD9DFF25B84B7FCE54B2E
+C4E0F6D44E63FF51765C8C886F45432112F3937D6C620E5BAE9D1A690959E54BE34D4FC3526099
+D1EFA0A6DB3F1BBEDDDC054FB4B2F11B601CB43E821FCFE6415D21032C1BFA35E5C7AD401AA628
+BD4147D0EB7EC9BD7E8ED1CD3CE085E2DCF35123A7ACDC2F480420B888415DEF745C6CF3C8EF70
+219B1776EA6E1DE091CF9294E325853DDB99F6F2DD3FB451B828A1946A11B4AEC60AA0067D415B
+01AA38E37013632ABC02DD4A7C1F1A6624E67E5E822E48CBC24114FAEDCC9135C58F8FC3FD31F3
+12D6E2E4E3D9D133A03C924085B778520163CC7B619370323A089E62A7DFD661C694993FECCDED
+F261F9F42AE8B81B83ED5627C2766040B15E2A29FBCD57C708AF106FDE487C90E62AEE4892D581
+A8266F4B00F020001C3907D7E2E0C019272C6D34DFBA9CDA49CF2ED412A365B6E86D6344C355A9
+5D8BCD32D54B22AECB5F4AA3386106DFE3E98C597A8D8696052BA719CE8661FA354ECFEE639550
+1D3EF450704C4B6403E37F18912938D8237A72D9F809E07C7AB3534B55E29357B9A2BB4A95870D
+015B2233245F8C7BCA4CE4FB1F112A4CE92564200136550E6A62748419F33CEECAC381CD0EED4C
+DE24ED2E095AACADDF5426EA8F7052693BB233A73E5FD55EBE9C212A1AF24D04752145CA890D89
+4DA8EF13BCEEDDA796179613EC34DF2A5C9EC2E6732364FD2A2F84D0A47E8CA1D615D242631E46
+BBEBB34693F2F5AAB03B9A2C92E748DC9FC9ECF2FDC8456496876FBDC4FD6EFEFC8DB4E96715BD
+1339571198DE48E541AD1F080A993C3C7487B713A8F741319FB25488221D47DB3F06EC72D46682
+F3D45B30BAA90E79B775660C900016168F6FF0EC0E2E1C04728A6F262802FED82ECECEF5B5D363
+B2DACE82537EE3BEA924FF50E7AF46B48ACE21A2D997BC738952FB50C9E8113FC62A47CFD980C8
+E84FC90F2672BBE891FCA392A12F68E50EB4D452ABE4ED8C1918BEEDB380026F89F98A54E37585
+9C4B1DAF86E3EE30F2572D98DCB45124265A1FE3EBD2A31D8FFDA93260384F4A51C61B1F9C526E
+97CC8F013F34BC5647E0C38280C48FCD03CCA57AD0B77C912575F79F94677664F9300F6D9D24FA
+57C0BDA3244FE481F912CE434C67704BEF6862C6D5B9B261A42F28DD8B14BD1B31ACFDB6C10E6D
+16809E5741962D31B65CDEEB93CDF35DB69E9124E163A6FBC3077C2C4460C5E12C84989D53EB4A
+FA7C15332836B837FB479171F67EB0CAE81B5F00046C432B44A6E26D75DA2662DE2534E9E53A1F
+E54984DB13604366883DB192134315D439C87CD202062E9D5015C96DFBA8B575B0F694FDACC331
+B996665AB8D0968EBE59C9C85D4B6452C5CCEAF8CAE3E5702F0AC1EC5C8F086F234A89BA3D8A87
+AD1640D7AED32A610FE0E9E112B8F62325DFB3968FC4FCA25F7C10969113B613EBF9E1BB715B11
+1138836BE5CF911D1572CE6AF8820866148B54E14041BE8BDD70D34858DD7AAF8A60C8535364BF
+60F2ACBD85FAA524EFA76F2DDFC2C0D88439269A8B13AAD60FF2451C5D792CAB89DC298EF429E2
+60EF2B7A7BB873886E9D19D6575886B97EBDCB3ACF92DFE2A759C4982BB896E5D9D42ECE7BBBF0
+C81A633AF86C8AFE612FE33B7623ED35A9488016DC83F66833256DED114D34BFFF5197A3B45842
+7710D75815D71E935A1C04AE3BD5A31E39CA805250CBC211DBE6108974DCD630D9CDA6652083A0
+8849FE43980D8D763B4E47293003BCC8850385CF2E16065299157D7AB8D589F95EB920B49C6938
+C82A7A6F99D80E14D8E02C1DAD0932D3434B5386363063DD5560C5E1887DECA4F5964FCC8B2619
+762C1B0A7686B1C68DDF221E29CBAD600CB69CEB7B2B1A29999F304B1200B4DD9944A7B13E2590
+33404D237575F969A739F71DEBB828671CC95C760140AB5FAB1DF5535A26098B22C86E02A3D36D
+CD1D710562385A85D68003DC714852373A4E39604F29692586C034941159605869100FB8FE2D04
+943120B7B76E26A8A19303A2A720826DB7809F4DAFD350F4ED9D57467FFE5680EA8E81812F3BBF
+A2557B9AF43EC5F030588392775E9FF92745134D10CC82AB5782706A85965EBE00783DF8C4E471
+0C6BB2083BF6D92383D114E95758DBBAB20B332AA0968C050E2FEF569F0772BE69F55E778069CE
+79AB1FE1DC588C61A82251E8BDE904956D566ED49A54337D373B3228A4A9A6BC7585137502330E
+557DCA031CD1EAAFB04D46246C61C6E5280649DC2E14267DCA971F3048D65E8CC7E90A62B6AFBE
+BF7F2767EF7E2EB5AC954D1C88070195DAD24FBBC6BCAA7BE6D6C88D08B1898B6CABC01F5F358F
+2BA39BF4E40603D04AA5CAEC5BA1F6C36A5EC05053C954242F83879F1308B7EC6843EE977E8F4E
+D89D1850CAE9379564AA7B2645AFB18C16C25E43865E17257ACC2A916A7A29F2823B9A1E5F9815
+5B2CD0C303924CC25E324B43B983C66367E42D048E451E05833FCA1835F37FFF39D2B7D68D8C79
+DDA0AB0DD02D5E252775300DDF7F463E009DA930C5B35ABB5B2C0825CD41404046968E5928D631
+26D581E9393BC89F7D2FA289A8CF036AF97BDB026B23FB866D819204590E0859FD05D0560EFEFA
+2B46D445D4D435721CFB9B08B1D743D418EFAA96FC5EB6CA66ECF85E0FB515E35A127ACE03C235
+5D5A12B6CE9392773A3C4A7C725D3DCCCCDA9CEF7C0D43D2E568D7471AD16F9AEA075609087FEC
+CB710052F4C0FC15D90FD4B157451011FBD0E7F5219CA9C586B593ECD8BF1BC5CA6F5B0E8FC7B3
+24E516BE6FF0405F500D45CEFBBB0A72A5CDBEDB7069C3ACF43E577DBBAABF787D427C4753858E
+AF11F2E4CF54A9445F0BD781E2DF0FEBAD210EFA8641E94BB9973DBD3D5FA9E3D14FB55702576D
+30A131D0DC7F5518110EE78E01EC0679439D393D6C96D06DE21A033AA1BB60F1716AFDE3F72B30
+1DB2A6EF5F0978B398CFFB44444B5428518363D8FA536EA55C9BF79D3AF34A209A6482CA6B4B6E
+8D81D36B53778D47C3A8D229821947B6D7C1400C3EE6FC726C2262353B7C1481938EF28DCF5F76
+5D994CBB72EAA65E35476D86667EFF35E2B88D59747C2C330BBC339FE3F03B90DF8E572EC73500
+90D40D76C1DA3D7BF1A37AA73A7B7ADD6D275C9E910115FDAAA1911CB8466DE224E07077D0A022
+3EB7A839BE44FA118217092A3FEE0B9BB623B66124203536CBA47AA3A865E4361BE80A7FA4DBA6
+0912A9F5E603CDD7FC331F59BF27E291EA1C169019FE4CBC219198317DF46B188E906B106C9DDA
+A367C74398D6440EF50F702201C0BD23F6C01BD9B43F0811BFFAC5A3C14544F068343D9BDD39A3
+EF5BF43F0139C1CCED0ABD641B00E382427188BEA59594F1A9C59D1A04EC693E60A9D7654D7FD5
+3A8B65D15103117F33F6F18B409B0DF129BF2DA8592EE386D6BEA725ED9A44065536A9896B42FB
+D527BEE9B16ECD00EA00C5564C57D3FBADB8C221B99A83B3C9525931B40FBA37253B4FAF9BDD46
+65D782CBE74138178DC68A0081AE38FB70DDE1E205429D9E2B419EDD81709D1555FBB215684A51
+BB3DB9F08EDD3146F069085155B5777F23340193745DEF7B3DE2A35680E05F07F832AD9C0A4598
+A55CAFAF0ABD1719C22BA06CDBAB2445442DBB3648F7645076FAF8DF53C9BCFF69C0872E829B50
+F9C953D567120E000F8418EFEF3C199FC7D530B2884B5634F87CDE82E46CA66F5A215F44ECCC44
+85271144AAD85F7D14DF0C14BB472341B814B8DDE80D46151B1AD56C879DCC65A57EA8A15D7703
+6FBC9A67BFA81181CCB02F69147BFD65EB2C53521E40939B68ADE7080B2059E709FBB73ED99C00
+A3F430F1D5E046B19757CD45F59C9D6FF117511129C2EB526FC41299A20B78D9C625E7A61BE199
+48D066D52CCE4A7E04CEE4F8633C48BAB8DDD605A1D472C5DC59233BE942CFF744581E0D96F812
+63DC54ADDE1DC06679FF0D8EF5A8ADC89619EC8FF273F22DCB79673FC1DD0490DEA3D627FDEBEF
+686B242BB7641FBF0A6EEF2158424A4F2CAA2CA842457ED90265DDEA68ACA37DF65309BCE5D47B
+AF4E4796CFBDEFF4DE11ABF268F400DFF85F94C7C4FCA63E3916DFBABEE8ECDAEB1A2CC8765E02
+492B202D921D0828533B4A011BD76FF8489964073B1E153236449C4691556CEA6BFFBD509CF63B
+B9A45C25425B18718F9D19475942183D32360227306BB63DDF2348237FF65BCBA3E5F5D6E63157
+D55C7CE9B6B364045ED751DBAFA6F4CEB81C8B042B271C516ED34EAAD5DE53530E3C84D31C00B6
+9194FE247A1CC2A7400C2A1547E10A818A7D9E642CBA34672B785214D39ACDEF57F65009B3B6B7
+C0CC45DF732874F6D5878EBCDA9527500AA396C3C6BF02B3A6A44BDB99BECFA75E6410E4836F54
+A79CC880B005E243C9536086563CDB7BE27F5EF2C98DA2C8BC073D00617574DB6A55738F4F75CC
+4178B60BD604D90CE5687B5C665F2EC1E4270C96C60D23DF86E34A1024C18ADAFF3446E5DDEDCC
+D3274FC57D2ABB3E77FC89105C7063E9A2B73CCE6CF6A566CDE4CFFE30934DF726DE5C9C71335C
+4458369AFC3A85F8343A4A95D15F9EE79355CBC2960AD990BE454990CD51AD6B9CBC542F60DCC5
+8AACA357744005594AE91D63E8DB5FEC4273FB3295FCA089A57FF5E5B6A386D9110F9A12C55CA1
+8ED38D962B5487EBFABB8B3F84AC82A094675731FAF0CF81FC329A90D74B5443F716241D90AE43
+85877655980782097AA01639D51E1E8D6EBF5DB7FCB6081B9F315F66A0C2BCFF3EA35C450ED911
+E89E021CA023213253E672387C56ACE512DFB7D942BC03F10A028215E3470B4B433388955409D2
+93C5D09CAD44342551BEF6BA3351A5801359C682B8CD5F375C07105669122D86E83BFD5D1E3035
+7F6BF160513871950A265DE83CC1A9E70C60185E2058D32198678229AAB3ED641A48ED761ABD13
+3664B82C86B1D9199913F7A141157AD4888F6FDC030A84398BD3EB1798CB9C98546E9B247E280C
+C4A86B8A52BFC33F113CFEBD114027C294FBB8FA63EC4708372028E07FC8BA2DDBC4B713A39D65
+A0C2C1E00F7E68AE3C0752106BFDE83C51F6EDCF2412B0A938BAABAA3A65848283893756DEAAF9
+E0BE4FB5FE474D994C1A66014DD0FED90BA8001268FD87612549BDEB9C89B952F61112EA8B5F75
+14D810A100825C62AA5706D772C87D4B5263FF9A6E6BBDFF1C06635C34C89D3853567CAE87F784
+72384D9901FCAFDD94F16889344F121AFEB571D9C1BFCC714B98FCFE19BF851B2FFA159A726607
+B5803CB705BCFA9ED3CF2B73CE527683ED7CAF3F1A4F9B31C51FC569080AED7B824E489DCBF24E
+5146AD35C5B3A99045B93103510287175F7CF02052EC73C6BA8A7D0187E2B1CB361E6CBFDDF894
+35ABB3BBEAA60A6A428EE0811BF0406CE1E72F7255998A9BB23D42180423BC9779F641CAF9541F
+1A7B291C1AB2EB138F6C0239010E1AEA43D3EAE6F80AC698D4E7C1A6DE606252A72C233985F6B6
+89A469B0B2D9652586EFCC7E1D008E9DA1034E99D90E0BBD77795D0E7A7A5346C3451417DEB2FD
+C5A5F2B3558975C6C213C9F61C1FD5A30BE894185D37474A2C16187A45FDAFD2CBE4574E54B2FB
+1AECC04783067487DA0CBA39935A150FA333DD4BB0EA7050B57FCA416DD4CA1CB3E5938659CF80
+9A5BFD4A7C2EFD7834A6EF13C7A1D24353FB378A6DDE916F06560F575643FEC5AF8A39E7043317
+C322FF30051BACB8A3B81D1FE45BC8CA76A9C75AF67F8EBE4731E9F92E9EE4F2FC2764F52DC679
+F7E41F2BA1D44042BCCDE3352052A90025BD12F72BB6BD8FA671D4F616D0A12E06D9556B51E846
+14D8068D3313E48F7A5C869E2077A648472C1C83B095601B400274F9FF080B5F50E41A0E3D8A43
+633C31C2924A436FB5095FC38F0365C1C12D5D6C0E2658D01C207838583EC2CD413CC9ACB0A29A
+26A0A145679363CBEC2EDBA55061ADBA688E27C15A5F2E02F2191D70A61186DCEDA9CC9AD49E50
+A5F87B5BF42C160FBA5BEC989CB389ABCC6D3FAF0CDA873C979694A60D92FA061E47DCFC77266A
+D57AD5C13AD7388AB7258EC43ED293D02C857EBD8734E60C09927EFCD0D7645A6DBEFEB4702CED
+FECFB1F6AC60D986AE88BEDE84CB8FB34B844881C3FDF5391A66B171CC486469BBFD11003A5B6D
+3BD979976FC9F28EBB3DDD1FA11FFEE828191E00FC88110DD15CE7856DAF3CAC9C28651042EC1B
+2EFAE309F2F9501FCB173DFAF6B3374B05D410CDCB9B922D547A70B521E4311A5D18B99D5956A8
+3F45B5011CF94DA3D438650D14388206AA25A74FF837FB62A3FDDEF5FE605A633AB31CE549E78A
+88BE7913502E562FB73B0C99B3FB8D6642B99C720C6AE9412B92469D4BC8FF30DFC990EE4565A6
+225F775D986E5934B8EC02D3EFD92B56C3AA4FCEA1A9EF9EA69BEBA985CFEE14856941669DAA45
+612E5849B2126BA4A510139607E092C2CD8E0B19EAB8165BC1104AF67922AD95AA92DE63CBAB3A
+980DB1606EA30F139059B463CCD4AF0A0BB436D0FCA3C73E9099FAA7C646242612E1519C563BB9
+14B7A10A1EFA6FBAB8F2CB45B8EBABC22E6540B76684D7308EA7BBD6FE2564EE9C2AEFCFFE0F75
+25BD8A3506135F5C0865BD1F0952F26C364524C88D6E649177F84FD61110F178D59AA036A64AD3
+CE9C7D83CE66106E32856DD62F7F82DC8D578BF33213F7A70637760AABA819479132F06479AFBB
+1004BA1568E59F915329C7217AC60C101A73F0D12A6AC9E8B36D7E68F1F75E55D28ACD1783C81D
+5A35FE276EBB494F87E51DDFBEAF65EB7B28077AFF83C86038251F6DF9C265D3FF4E61A0C62051
+4CD5008E9BD19C95385EA512C341053AECA3FB273427699086BB41DCE2100E5CB13BE744767564
+611202F27E531C78B0E176ACA47C71AC3FE4AFCB3E4D4E84B2D6A10B4A242D68A424F6E980D51F
+9A9BB8833B0D91A874F95BE8DF4CE9169F8FCB6E0FE14E31F16BBB3D974661C956710D440CCEE8
+BACB2A1CE47B0007171AC6681EDCF7FC3990ED6FBCE65CDE14D54BF4AF85D70032AB6119B01D32
+D90E1407523877FA2D780912DC97A01D56F4C025B7BC2E872157E85A5E58AEDC569F06EDB8F821
+831FA0520CAE97AB99031DCF2A4601DAB17CDF9F5169BD38E92F02D2EB2E2ECE37FE1C58FA3811
+A68346966D59437C10F28C43BE9546E3193F18EE3410BDBA68175A87A894910029A9F6E0723596
+E1AA2457684B853B5A0BBBC063CCA9F425B0DCBC0D86AA21988A0EBD306B7C8A4C7E5DE43A898C
+95D6F5BDD6DD23F81C9268431B4D465932DEF9CF37BCFBC05B07DDA75087377A5132904DC12F2D
+B322E15E3A2A9305E3B4C81A5A523A57F95DBE48FE4DA1BBF630401164F38B8FC237D3BF7B5CE9
+55389B0F7501BDFDE99763EB3965EE6C792130411B7BD7DEA605DE4F376D3F130877D0337CDF0A
+807588683D85B7548606E78C3C1F3EDEBB2C1755DA24C64792E3B82D46A1CDF34FE0E8E3810C8F
+9460570BBCFC4F98D42A0B048C8E0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
diff --git a/Build/source/texk/lcdf-typetools/tests/uhvrrc8a.pfb b/Build/source/texk/lcdf-typetools/tests/uhvrrc8a.pfb
new file mode 100644
index 00000000000..09b04db7613
--- /dev/null
+++ b/Build/source/texk/lcdf-typetools/tests/uhvrrc8a.pfb
Binary files differ