summaryrefslogtreecommitdiffstats
path: root/office/texlive
diff options
context:
space:
mode:
Diffstat (limited to 'office/texlive')
-rw-r--r--office/texlive/README14
-rw-r--r--office/texlive/README.tlpkg17
-rw-r--r--office/texlive/doinst.sh5
-rw-r--r--office/texlive/patches/20180625.diff688
-rw-r--r--office/texlive/patches/texlive-20170524-source-gcc7-1.patch33
-rw-r--r--office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch451
-rw-r--r--office/texlive/patches/texlive-poppler-0.59.patch1142
-rw-r--r--office/texlive/prep/dump.unused.internal.libraries.from.sources.sh15
-rw-r--r--office/texlive/prep/texmf_get.sh1054
-rw-r--r--office/texlive/slack-desc19
-rw-r--r--office/texlive/texlive.SlackBuild249
-rw-r--r--office/texlive/texlive.info12
12 files changed, 0 insertions, 3699 deletions
diff --git a/office/texlive/README b/office/texlive/README
deleted file mode 100644
index d08796d591..0000000000
--- a/office/texlive/README
+++ /dev/null
@@ -1,14 +0,0 @@
-TeXLive (TeXLive binaries, support files, TeX formats)
-
-This package contains binaries and many support files, TeX formats and
-packages, and other files included in the TeXLive TeX distribution.
-This should be adequate for the needs of most TeX users.
-
-The remaining stuff can be found in texlive-extra and texlive-docs,
-all of which are also available at SlackBuilds.org.
-
-Have a look at the scripts in the prep/ directory to see how the texmf
-archives were created from the original Texlive netarchives.
-
-Note that this package conflicts with the tetex packages in Slackware,
-so you'll need to remove tetex and tetex-doc before installing TeXLive.
diff --git a/office/texlive/README.tlpkg b/office/texlive/README.tlpkg
deleted file mode 100644
index 7a6f790ca8..0000000000
--- a/office/texlive/README.tlpkg
+++ /dev/null
@@ -1,17 +0,0 @@
-The TeXLive Package Manager, i.e. tlmgr(1), is not shipped with this
-TeXLive package, as it's not expected to work properly (if at all).
-The general consensus from the TeXLive users mailing list is that
-distributions should not be shipping tlpkg.
-
-The *proper* way to upgrade the TeXLive Slackware package (or any
-part of it) is through your Slackware's package manager. If you
-elect to try tlmgr(1), and it doesn't work at all, or worse, it messes
-up part of your TeXLive installation, too bad. On the other hand,
-if you are able to document exactly what we need to do in order to
-make it:
- 1) work
- 2) put updates and such in a user-specific directory, i.e.
- *not* alter/replace system package contents
-then we would love to hear from you. :-)
-
---rworkman :-)
diff --git a/office/texlive/doinst.sh b/office/texlive/doinst.sh
deleted file mode 100644
index f864e767d6..0000000000
--- a/office/texlive/doinst.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-chroot . /usr/bin/mktexlsr 1>/dev/null 2>/dev/null
-printf "y\n" | chroot . /usr/bin/updmap-sys --syncwithtrees 1>/dev/null 2>/dev/null
-chroot . /usr/bin/updmap-sys 1>/dev/null 2>/dev/null
-chroot . /usr/bin/fmtutil-sys --all 1>/dev/null 2>/dev/null
-chroot . /usr/bin/mtxrun --generate 1>/dev/null 2>/dev/null
diff --git a/office/texlive/patches/20180625.diff b/office/texlive/patches/20180625.diff
deleted file mode 100644
index 583d99486d..0000000000
--- a/office/texlive/patches/20180625.diff
+++ /dev/null
@@ -1,688 +0,0 @@
-diff -ur ./texk/dvipdfm-x/ChangeLog ../b18/texk/dvipdfm-x/ChangeLog
---- ./texk/dvipdfm-x/ChangeLog 2018-03-03 11:27:37.000000000 +0100
-+++ ../b18/texk/dvipdfm-x/ChangeLog 2018-06-25 22:07:46.343277185 +0200
-@@ -1,3 +1,16 @@
-+2018-05-06 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
-+
-+ * tt_cmap.c: Revert a part of changes in 2017-12-09,
-+ which breaks to give tounicode entries for ligatures.
-+ http://tug.org/pipermail/tex-live/2018-May/041608.html.
-+ * configure.ac: Version 20180506.
-+
-+ 2018-04-28 Stefan Br\"uns <stefan.bruens@rwth-aachen.de>
-+
-+ * pngimage.c: Fix a bug which causes a segfault with 1/2/4-bit
-+ transparent indexed PNGs.
-+ * configure.ac: Version 20180428.
-+
- 2018-03-03 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
-
- * xbb.c: Remove unused lines.
-diff -ur ./texk/dvipdfm-x/configure ../b18/texk/dvipdfm-x/configure
---- ./texk/dvipdfm-x/configure 2018-02-17 09:41:35.000000000 +0100
-+++ ../b18/texk/dvipdfm-x/configure 2018-06-25 22:07:47.183276612 +0200
-@@ -1,6 +1,6 @@
- #! /bin/sh
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.69 for dvipdfm-x (TeX Live) 20180217.
-+# Generated by GNU Autoconf 2.69 for dvipdfm-x (TeX Live) 20180506.
- #
- # Report bugs to <tex-k@tug.org>.
- #
-@@ -590,8 +590,8 @@
- # Identity of this package.
- PACKAGE_NAME='dvipdfm-x (TeX Live)'
- PACKAGE_TARNAME='dvipdfm-x--tex-live-'
--PACKAGE_VERSION='20180217'
--PACKAGE_STRING='dvipdfm-x (TeX Live) 20180217'
-+PACKAGE_VERSION='20180506'
-+PACKAGE_STRING='dvipdfm-x (TeX Live) 20180506'
- PACKAGE_BUGREPORT='tex-k@tug.org'
- PACKAGE_URL=''
-
-@@ -1350,7 +1350,7 @@
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
--\`configure' configures dvipdfm-x (TeX Live) 20180217 to adapt to many kinds of systems.
-+\`configure' configures dvipdfm-x (TeX Live) 20180506 to adapt to many kinds of systems.
-
- Usage: $0 [OPTION]... [VAR=VALUE]...
-
-@@ -1421,7 +1421,7 @@
-
- if test -n "$ac_init_help"; then
- case $ac_init_help in
-- short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20180217:";;
-+ short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20180506:";;
- esac
- cat <<\_ACEOF
-
-@@ -1551,7 +1551,7 @@
- test -n "$ac_init_help" && exit $ac_status
- if $ac_init_version; then
- cat <<\_ACEOF
--dvipdfm-x (TeX Live) configure 20180217
-+dvipdfm-x (TeX Live) configure 20180506
- generated by GNU Autoconf 2.69
-
- Copyright (C) 2012 Free Software Foundation, Inc.
-@@ -2390,7 +2390,7 @@
- This file contains any messages produced by compilers while
- running configure, to aid debugging if configure makes a mistake.
-
--It was created by dvipdfm-x (TeX Live) $as_me 20180217, which was
-+It was created by dvipdfm-x (TeX Live) $as_me 20180506, which was
- generated by GNU Autoconf 2.69. Invocation command line was
-
- $ $0 $@
-@@ -8075,7 +8075,7 @@
-
- # Define the identity of the package.
- PACKAGE='dvipdfm-x--tex-live-'
-- VERSION='20180217'
-+ VERSION='20180506'
-
-
- cat >>confdefs.h <<_ACEOF
-@@ -14744,7 +14744,7 @@
- Report bugs to <bug-libtool@gnu.org>."
-
- lt_cl_version="\
--dvipdfm-x (TeX Live) config.lt 20180217
-+dvipdfm-x (TeX Live) config.lt 20180506
- configured by $0, generated by GNU Autoconf 2.69.
-
- Copyright (C) 2011 Free Software Foundation, Inc.
-@@ -16624,7 +16624,7 @@
- # report actual input values of CONFIG_FILES etc. instead of their
- # values after options handling.
- ac_log="
--This file was extended by dvipdfm-x (TeX Live) $as_me 20180217, which was
-+This file was extended by dvipdfm-x (TeX Live) $as_me 20180506, which was
- generated by GNU Autoconf 2.69. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
-@@ -16694,7 +16694,7 @@
- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
- ac_cs_version="\\
--dvipdfm-x (TeX Live) config.status 20180217
-+dvipdfm-x (TeX Live) config.status 20180506
- configured by $0, generated by GNU Autoconf 2.69,
- with options \\"\$ac_cs_config\\"
-
-diff -ur ./texk/dvipdfm-x/configure.ac ../b18/texk/dvipdfm-x/configure.ac
---- ./texk/dvipdfm-x/configure.ac 2018-02-28 00:14:55.000000000 +0100
-+++ ../b18/texk/dvipdfm-x/configure.ac 2018-06-25 22:07:47.183276612 +0200
-@@ -7,7 +7,7 @@
- dnl gives unlimited permission to copy and/or distribute it,
- dnl with or without modifications, as long as this notice is preserved.
- dnl
--AC_INIT([dvipdfm-x (TeX Live)], [20180217], [tex-k@tug.org])
-+AC_INIT([dvipdfm-x (TeX Live)], [20180506], [tex-k@tug.org])
- AC_PREREQ([2.65])
- AC_CONFIG_SRCDIR([agl.c])
- AC_CONFIG_AUX_DIR([../../build-aux])
-diff -ur ./texk/dvipdfm-x/pngimage.c ../b18/texk/dvipdfm-x/pngimage.c
---- ./texk/dvipdfm-x/pngimage.c 2018-02-17 09:41:35.000000000 +0100
-+++ ../b18/texk/dvipdfm-x/pngimage.c 2018-06-25 22:07:49.306275165 +0200
-@@ -964,12 +964,16 @@
- png_bytep trans;
- int num_trans;
- png_uint_32 i;
-+ png_byte bpc, mask, shift;
-
- if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ||
- !png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL)) {
- WARN("%s: PNG does not have valid tRNS chunk but tRNS is requested.", PNG_DEBUG_STR);
- return NULL;
- }
-+ bpc = png_get_bit_depth(png_ptr, info_ptr);
-+ mask = 0xff >> (8 - bpc);
-+ shift = 8 - bpc;
-
- smask = pdf_new_stream(STREAM_COMPRESS);
- dict = pdf_stream_dict(smask);
-@@ -981,7 +985,8 @@
- pdf_add_dict(dict, pdf_new_name("ColorSpace"), pdf_new_name("DeviceGray"));
- pdf_add_dict(dict, pdf_new_name("BitsPerComponent"), pdf_new_number(8));
- for (i = 0; i < width*height; i++) {
-- png_byte idx = image_data_ptr[i];
-+ /* data is packed for 1/2/4 bpc formats, msb first */
-+ png_byte idx = (image_data_ptr[bpc * i / 8] >> (shift - bpc * i % 8)) & mask;
- smask_data_ptr[i] = (idx < num_trans) ? trans[idx] : 0xff;
- }
- pdf_add_stream(smask, (char *)smask_data_ptr, width*height);
-diff -ur ./texk/dvipdfm-x/tt_cmap.c ../b18/texk/dvipdfm-x/tt_cmap.c
---- ./texk/dvipdfm-x/tt_cmap.c 2017-12-09 15:07:09.000000000 +0100
-+++ ../b18/texk/dvipdfm-x/tt_cmap.c 2018-06-25 22:07:49.617274953 +0200
-@@ -1,6 +1,6 @@
- /* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
-
-- Copyright (C) 2007-2017 by Jin-Hwan Cho and Shunsaku Hirata,
-+ Copyright (C) 2007-2018 by Jin-Hwan Cho and Shunsaku Hirata,
- the dvipdfmx project team.
-
- This program is free software; you can redistribute it and/or modify
-@@ -928,19 +928,12 @@
- }
- #undef MAX_UNICODES
- if (unicode_count == -1) {
--#if defined(LIBDPX)
- if(verbose > VERBOSE_LEVEL_MIN) {
- if (name)
- MESG("No Unicode mapping available: GID=%u, name=%s\n", gid, name);
- else
- MESG("No Unicode mapping available: GID=%u\n", gid);
- }
--#else
-- if (name)
-- MESG("No Unicode mapping available: GID=%u, name=%s\n", gid, name);
-- else
-- MESG("No Unicode mapping available: GID=%u\n", gid);
--#endif /* LIBDPX */
- } else {
- /* the Unicode characters go into wbuf[2] and following, in UTF16BE */
- /* we rely on WBUF_SIZE being more than adequate for MAX_UNICODES */
-@@ -1021,13 +1014,7 @@
- {
- USHORT count = 0;
- USHORT cid = cffont ? cff_charsets_lookup_inverse(cffont, gid) : gid;
--
-- /* Skip PUA characters and alphabetic presentation forms, allowing
-- * handle_subst_glyphs() as it might find better mapping. Fixes the
-- * mapping of ligatures encoded in PUA in fonts like Linux Libertine
-- * and old Adobe fonts.
-- */
-- if (is_used_char2(used_chars, cid) && !is_PUA_or_presentation(ch)) {
-+ if (is_used_char2(used_chars, cid)) {
- int len;
- unsigned char *p = wbuf + 2;
-
-@@ -1038,11 +1025,18 @@
- len = UC_UTF16BE_encode_char((int32_t) ch, &p, wbuf + WBUF_SIZE);
- CMap_add_bfchar(cmap, wbuf, 2, wbuf + 2, len);
-
-- /* Avoid duplicate entry
-- * There are problem when two Unicode code is mapped to
-- * single glyph...
-+ /* Skip PUA characters and alphabetic presentation forms, allowing
-+ * handle_subst_glyphs() as it might find better mapping. Fixes the
-+ * mapping of ligatures encoded in PUA in fonts like Linux Libertine
-+ * and old Adobe fonts.
- */
-- used_chars[cid / 8] &= ~(1 << (7 - (cid % 8)));
-+ if (!is_PUA_or_presentation(ch)) {
-+ /* Avoid duplicate entry
-+ * There are problem when two Unicode code is mapped to
-+ * single glyph...
-+ */
-+ used_chars[cid / 8] &= ~(1 << (7 - (cid % 8)));
-+ }
- }
-
- return count;
-diff -ur ./texk/web2c/ptexdir/ChangeLog ../b18/texk/web2c/ptexdir/ChangeLog
---- ./texk/web2c/ptexdir/ChangeLog 2018-02-05 13:35:05.000000000 +0100
-+++ ../b18/texk/web2c/ptexdir/ChangeLog 2018-06-25 22:08:39.566240911 +0200
-@@ -1,3 +1,16 @@
-+2018-05-06 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
-+
-+ * kanji.c: More strict check kanji token.
-+
-+2018-04-14 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
-+
-+ * ptex-base.ch: Fix issue GitHub:texjporg/tex-jp-build#57
-+ that discontinuous KINSOKU/INHIBIT table cannot be
-+ searched properly.
-+ (regression caused by a commmit of 2017-09-11)
-+ * tests/free_pena.tex, tests/free_ixsp.tex: Added.
-+ * ptex_version.h: pTeX version p3.8.1.
-+
- 2018-02-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
-
- * ptex-base.ch: Set subtype for JFM glue in math list.
-diff -ur ./texk/web2c/ptexdir/kanji.c ../b18/texk/web2c/ptexdir/kanji.c
---- ./texk/web2c/ptexdir/kanji.c 2016-11-25 19:24:38.000000000 +0100
-+++ ../b18/texk/web2c/ptexdir/kanji.c 2018-06-25 22:08:39.675240837 +0200
-@@ -4,6 +4,7 @@
- */
-
- #include "kanji.h"
-+#define CS_TOKEN_FLAG 0xFFFF
-
- #if !defined(WIN32)
- int sjisterminal;
-@@ -12,7 +13,8 @@
- /* TOKEN */
- boolean check_kanji(integer c)
- {
-- return is_char_kanji(c);
-+ if (c >= CS_TOKEN_FLAG) return false;
-+ else return is_char_kanji(c);
- }
-
- boolean is_char_ascii(integer c)
-diff -ur ./texk/web2c/ptexdir/ptex-base.ch ../b18/texk/web2c/ptexdir/ptex-base.ch
---- ./texk/web2c/ptexdir/ptex-base.ch 2018-02-05 13:35:05.000000000 +0100
-+++ ../b18/texk/web2c/ptexdir/ptex-base.ch 2018-06-25 22:08:39.677240836 +0200
-@@ -58,6 +58,7 @@
- % pTeX p3.7.1.
- % (2017-09-07) HK pTeX p3.7.2 More restrictions on direction change commands.
- % (2018-01-21) HK Added \ptexversion primitive and co. pTeX p3.8.
-+% (2018-04-14) HK pTeX p3.8.1 Bug fix for discontinuous KINSOKU table.
- %
-
- @x
-@@ -73,8 +74,8 @@
- @y
- @d pTeX_version=3
- @d pTeX_minor_version=8
--@d pTeX_revision==".0"
--@d pTeX_version_string=='-p3.8.0' {current \pTeX\ version}
-+@d pTeX_revision==".1"
-+@d pTeX_version_string=='-p3.8.1' {current \pTeX\ version}
- @#
- @d pTeX_banner=='This is pTeX, Version 3.14159265',pTeX_version_string
- @d pTeX_banner_k==pTeX_banner
-@@ -6397,6 +6398,8 @@
- @d inhibit_both=0 {disable to insert space before 2byte-char and after it}
- @d inhibit_previous=1 {disable to insert space before 2byte-char}
- @d inhibit_after=2 {disable to insert space after 2byte-char}
-+@d inhibit_none=3 {enable to insert space before/after 2byte-char}
-+@d inhibit_unused=4 {unused entry}
- @d no_entry=1000
- @d new_pos=0
- @d cur_pos=1
-@@ -6427,14 +6430,15 @@
- begin s:=calc_pos(c); p:=s;
- if n=new_pos then
- begin repeat
-- if (inhibit_xsp_code(p)=0)or(inhibit_xsp_code(p)=c) then goto done;
-+ if (inhibit_xsp_type(p)=inhibit_unused)or(inhibit_xsp_code(p)=0)
-+ or(inhibit_xsp_code(p)=c) then goto done;
- incr(p); if p>255 then p:=0;
- until s=p; p:=no_entry;
- end
- else
- begin repeat
-- if inhibit_xsp_code(p)=0 then goto done1;
-- if inhibit_xsp_code(p)=c then goto done;
-+ if inhibit_xsp_code(p)=0 then goto done1
-+ else if (inhibit_xsp_type(p)<>inhibit_unused)and(inhibit_xsp_code(p)=c) then goto done;
- incr(p); if p>255 then p:=0;
- until s=p;
- done1: p:=no_entry;
-@@ -6447,9 +6451,10 @@
- begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int;
- if is_char_kanji(n) then
- begin j:=get_inhibit_pos(tokanji(n),new_pos);
-- if (j<>no_entry)and(cur_val>inhibit_after)and(global or cur_level=level_one) then
-- begin n:=0; cur_val:=0 end
-- { remove the entry from inhibit table }
-+ if (j<>no_entry)and(cur_val>inhibit_after) then
-+ begin if global or(cur_level=level_one) then cur_val:=inhibit_unused
-+ { remove the entry from inhibit table }
-+ else cur_val:=inhibit_none; end
- else if j=no_entry then
- begin print_err("Inhibit table is full!!");
- help1("I'm skipping this control sequences.");@/
-@@ -6466,7 +6471,7 @@
-
- @ @<Fetch inhibit type from some table@>=
- begin scan_int; q:=get_inhibit_pos(tokanji(cur_val),cur_pos);
--cur_val_level:=int_val; cur_val:=3;
-+cur_val_level:=int_val; cur_val:=inhibit_none;
- if q<>no_entry then cur_val:=inhibit_xsp_type(q);
- end
-
-@@ -6476,6 +6481,7 @@
-
- @d pre_break_penalty_code=1
- @d post_break_penalty_code=2
-+@d kinsoku_unused_code=3
-
- @<Put each...@>=
- primitive("prebreakpenalty",assign_kinsoku,pre_break_penalty_code);
-@@ -6502,15 +6508,16 @@
- gubed
- if n=new_pos then
- begin repeat
-- if (kinsoku_type(p)=0)or(kinsoku_code(p)=c) then goto done;
-+ if (kinsoku_type(p)=0)or(kinsoku_type(p)=kinsoku_unused_code)
-+ or(kinsoku_code(p)=c) then goto done;
- incr(p); if p>255 then p:=0;
- until s=p;
- p:=no_entry;
- end
- else
- begin repeat
-- if kinsoku_type(p)=0 then goto done1;
-- if kinsoku_code(p)=c then goto done;
-+ if kinsoku_type(p)=0 then goto done1
-+ else if (kinsoku_type(p)<>kinsoku_unused_code)and(kinsoku_code(p)=c) then goto done;
- incr(p); if p>255 then p:=0;
- until s=p;
- done1: p:=no_entry;
-@@ -6523,8 +6530,8 @@
- begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int;
- if is_char_ascii(n) or is_char_kanji(n) then
- begin j:=get_kinsoku_pos(tokanji(n),new_pos);
-- if (j<>no_entry)and(cur_val=0)and(global or cur_level=level_one) then
-- define(kinsoku_base+j,0,0) { remove the entry from KINSOKU table }
-+ if (j<>no_entry)and(cur_val=0)and(global or(cur_level=level_one)) then
-+ define(kinsoku_base+j,kinsoku_unused_code,0) { remove the entry from KINSOKU table }
- else begin
- if j=no_entry then begin
- print_err("KINSOKU table is full!!");
-diff -ur ./texk/web2c/ptexdir/ptex_version.h ../b18/texk/web2c/ptexdir/ptex_version.h
---- ./texk/web2c/ptexdir/ptex_version.h 2018-01-21 04:48:06.000000000 +0100
-+++ ../b18/texk/web2c/ptexdir/ptex_version.h 2018-06-25 22:08:39.678240835 +0200
-@@ -1 +1 @@
--#define PTEX_VERSION "p3.8.0"
-+#define PTEX_VERSION "p3.8.1"
-diff -ur ./texk/web2c/uptexdir/kanji.c ../b18/texk/web2c/uptexdir/kanji.c
---- ./texk/web2c/uptexdir/kanji.c 2018-02-25 01:31:25.000000000 +0100
-+++ ../b18/texk/web2c/uptexdir/kanji.c 2018-06-25 22:08:41.864239345 +0200
-@@ -18,7 +18,7 @@
- /* TOKEN */
- boolean check_kanji (integer c)
- {
-- if (c > CS_TOKEN_FLAG) return false;
-+ if (c >= CS_TOKEN_FLAG) return false;
- else if (!(XXHi(c)>=KCAT_KANJI && XXHi(c)<=KCAT_HANGUL)) return false;
- else return is_char_kanji(c);
- }
-diff -ur ./utils/README ../b18/utils/README
---- ./utils/README 2018-04-08 22:08:33.000000000 +0200
-+++ ../b18/utils/README 2018-06-25 22:08:45.738236705 +0200
-@@ -1,4 +1,4 @@
--$Id: README 47384 2018-04-08 20:08:33Z karl $
-+$Id: README 47642 2018-05-08 16:06:43Z karl $
- Public domain. Originally written 2005 by Karl Berry.
-
- Extra utilities we (optionally) compile for TeX Live.
-@@ -16,7 +16,7 @@
-
- lacheck - maintained here, by us
-
--m-tx 0.63 - checked 09jan18
-+m-tx 0.63a - checked 29apr18
- http://ctan.org/pkg/m-tx/
-
- pmx 2.8.4 - checked 14feb18
-diff -ur ./utils/m-tx/ChangeLog ../b18/utils/m-tx/ChangeLog
---- ./utils/m-tx/ChangeLog 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/ChangeLog 2018-06-25 22:08:49.771233956 +0200
-@@ -1,3 +1,7 @@
-+2018-04-29 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
-+
-+ * Import m-tx 0.63a.
-+
- 2018-01-09 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
-
- * Import m-tx 0.63.
-diff -ur ./utils/m-tx/TLpatches/ChangeLog ../b18/utils/m-tx/TLpatches/ChangeLog
---- ./utils/m-tx/TLpatches/ChangeLog 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/TLpatches/ChangeLog 2018-06-25 22:08:49.772233956 +0200
-@@ -1,3 +1,7 @@
-+2018-04-29 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
-+
-+ * patch-01-write-bin: Update for 0.63a.
-+
- 2018-01-09 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
-
- * patch-01-write-bin: Update for 0.63.
-diff -ur ./utils/m-tx/TLpatches/TL-Changes ../b18/utils/m-tx/TLpatches/TL-Changes
---- ./utils/m-tx/TLpatches/TL-Changes 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/TLpatches/TL-Changes 2018-06-25 22:08:49.772233956 +0200
-@@ -1,4 +1,4 @@
--Changes applied to the mtx-0.63 tree as obtained from:
-+Changes applied to the mtx-0.63a tree as obtained from:
- http://www.ctan.org/tex-archive/support/m-tx/
-
- Remove:
-diff -ur ./utils/m-tx/TLpatches/patch-01-write-bin ../b18/utils/m-tx/TLpatches/patch-01-write-bin
---- ./utils/m-tx/TLpatches/patch-01-write-bin 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/TLpatches/patch-01-write-bin 2018-06-25 22:08:49.772233956 +0200
-@@ -1,6 +1,21 @@
--diff -ur mtx-0.63.orig/globals.c mtx-0.63/globals.c
----- mtx-0.63.orig/globals.c Tue Jan 09 01:39:42 2018
--+++ mtx-0.63/globals.c Tue Jan 09 08:46:40 2018
-+diff -ur mtx-0.63a/files.c mtx-src/files.c
-+--- mtx-0.63a/files.c Tue Jan 09 01:39:42 2018
-++++ mtx-src/files.c Wed Apr 25 18:07:12 2018
-+@@ -289,9 +289,9 @@
-+ pushFile(infilename);
-+ strcpy(outfile_NAME, outfilename);
-+ if (outfile != NULL)
-+- outfile = freopen(outfile_NAME, "w", outfile);
-++ outfile = freopen(outfile_NAME, "wb", outfile);
-+ else
-+- outfile = fopen(outfile_NAME, "w");
-++ outfile = fopen(outfile_NAME, "wb");
-+ _SETIO(outfile != NULL, FileNotFound);
-+ strcpy(stylefile_NAME, stylefilename);
-+ if (stylefile != NULL)
-+diff -ur mtx-0.63a/globals.c mtx-src/globals.c
-+--- mtx-0.63a/globals.c Tue Jan 09 01:39:42 2018
-++++ mtx-src/globals.c Wed Apr 25 18:07:37 2018
- @@ -230,7 +230,7 @@
- if (outfile != NULL)
- fclose(outfile);
-diff -ur ./utils/m-tx/configure ../b18/utils/m-tx/configure
---- ./utils/m-tx/configure 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/configure 2018-06-25 22:08:49.879233883 +0200
-@@ -1,6 +1,6 @@
- #! /bin/sh
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.69 for m-tx (TeX Live) 0.63.
-+# Generated by GNU Autoconf 2.69 for m-tx (TeX Live) 0.63a.
- #
- # Report bugs to <tex-k@tug.org>.
- #
-@@ -580,8 +580,8 @@
- # Identity of this package.
- PACKAGE_NAME='m-tx (TeX Live)'
- PACKAGE_TARNAME='m-tx--tex-live-'
--PACKAGE_VERSION='0.63'
--PACKAGE_STRING='m-tx (TeX Live) 0.63'
-+PACKAGE_VERSION='0.63a'
-+PACKAGE_STRING='m-tx (TeX Live) 0.63a'
- PACKAGE_BUGREPORT='tex-k@tug.org'
- PACKAGE_URL=''
-
-@@ -1275,7 +1275,7 @@
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
--\`configure' configures m-tx (TeX Live) 0.63 to adapt to many kinds of systems.
-+\`configure' configures m-tx (TeX Live) 0.63a to adapt to many kinds of systems.
-
- Usage: $0 [OPTION]... [VAR=VALUE]...
-
-@@ -1341,7 +1341,7 @@
-
- if test -n "$ac_init_help"; then
- case $ac_init_help in
-- short | recursive ) echo "Configuration of m-tx (TeX Live) 0.63:";;
-+ short | recursive ) echo "Configuration of m-tx (TeX Live) 0.63a:";;
- esac
- cat <<\_ACEOF
-
-@@ -1438,7 +1438,7 @@
- test -n "$ac_init_help" && exit $ac_status
- if $ac_init_version; then
- cat <<\_ACEOF
--m-tx (TeX Live) configure 0.63
-+m-tx (TeX Live) configure 0.63a
- generated by GNU Autoconf 2.69
-
- Copyright (C) 2012 Free Software Foundation, Inc.
-@@ -1861,7 +1861,7 @@
- This file contains any messages produced by compilers while
- running configure, to aid debugging if configure makes a mistake.
-
--It was created by m-tx (TeX Live) $as_me 0.63, which was
-+It was created by m-tx (TeX Live) $as_me 0.63a, which was
- generated by GNU Autoconf 2.69. Invocation command line was
-
- $ $0 $@
-@@ -3784,7 +3784,7 @@
-
- # Define the identity of the package.
- PACKAGE='m-tx--tex-live-'
-- VERSION='0.63'
-+ VERSION='0.63a'
-
-
- cat >>confdefs.h <<_ACEOF
-@@ -5868,7 +5868,7 @@
- # report actual input values of CONFIG_FILES etc. instead of their
- # values after options handling.
- ac_log="
--This file was extended by m-tx (TeX Live) $as_me 0.63, which was
-+This file was extended by m-tx (TeX Live) $as_me 0.63a, which was
- generated by GNU Autoconf 2.69. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
-@@ -5925,7 +5925,7 @@
- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
- ac_cs_version="\\
--m-tx (TeX Live) config.status 0.63
-+m-tx (TeX Live) config.status 0.63a
- configured by $0, generated by GNU Autoconf 2.69,
- with options \\"\$ac_cs_config\\"
-
-diff -ur ./utils/m-tx/mtx-src/Corrections ../b18/utils/m-tx/mtx-src/Corrections
---- ./utils/m-tx/mtx-src/Corrections 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/mtx-src/Corrections 2018-06-25 22:08:49.880233882 +0200
-@@ -3,6 +3,12 @@
-
- Newest items at top. You might also want to look at file `MAINTENANCE`.
-
-+Version 0.63a
-+-------------
-+
-+Commented out apparently spurious begin...end block in preambleDefaults
-+in preamble.pas. (RDT)
-+
- Version 0.63
- ------------
-
-diff -ur ./utils/m-tx/mtx-src/files.c ../b18/utils/m-tx/mtx-src/files.c
---- ./utils/m-tx/mtx-src/files.c 2016-11-25 19:24:43.000000000 +0100
-+++ ../b18/utils/m-tx/mtx-src/files.c 2018-06-25 22:08:49.882233881 +0200
-@@ -289,9 +289,9 @@
- pushFile(infilename);
- strcpy(outfile_NAME, outfilename);
- if (outfile != NULL)
-- outfile = freopen(outfile_NAME, "w", outfile);
-+ outfile = freopen(outfile_NAME, "wb", outfile);
- else
-- outfile = fopen(outfile_NAME, "w");
-+ outfile = fopen(outfile_NAME, "wb");
- _SETIO(outfile != NULL, FileNotFound);
- strcpy(stylefile_NAME, stylefilename);
- if (stylefile != NULL)
-diff -ur ./utils/m-tx/mtx-src/libp2c/p2clib.c ../b18/utils/m-tx/mtx-src/libp2c/p2clib.c
---- ./utils/m-tx/mtx-src/libp2c/p2clib.c 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/mtx-src/libp2c/p2clib.c 2018-06-25 22:08:49.883233880 +0200
-@@ -73,8 +73,8 @@
- {
- register char *dd = (char *)d, *ss = (char *)s;
- if (dd < ss || dd - ss >= n) {
--#if defined(bcopy) && defined(memcpy)
-- my_memcpy(dd, ss, n);
-+#if defined(bcopy) && defined(memcpy)
-+ Anyptr my_memcpy(Anyptr d, Const Anyptr s, size_t n);
- #else
- memcpy(dd, ss, n);
- #endif
-diff -ur ./utils/m-tx/mtx-src/preamble.c ../b18/utils/m-tx/mtx-src/preamble.c
---- ./utils/m-tx/mtx-src/preamble.c 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/mtx-src/preamble.c 2018-06-25 22:08:49.953233832 +0200
-@@ -801,8 +801,8 @@
- stave_size[i] = unspec;
- for (i = 0; i <= maxstaves; i++)
- nspace[i] = unspec;
-- nspace[i] = unspec;
-- stave_size[i-1] = unspec;
-+ /* next line seems to be spurious. 0.63a RDT */
-+ /* begin nspace[i]:=unspec; stave_size[i]:=unspec; end; */
- n_pages = 1;
- n_systems = 1;
- readStyles();
-diff -ur ./utils/m-tx/mtx-src/preamble.pas ../b18/utils/m-tx/mtx-src/preamble.pas
---- ./utils/m-tx/mtx-src/preamble.pas 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/mtx-src/preamble.pas 2018-06-25 22:08:49.953233832 +0200
-@@ -501,7 +501,8 @@
- for i:=1 to maxvoices do setVocal(i,false);
- for i:=1 to maxstaves do stave_size[i]:=unspec;
- for i:=0 to maxstaves do nspace[i]:=unspec;
-- begin nspace[i]:=unspec; stave_size[i]:=unspec; end;
-+ { next line seems to be spurious. 0.63a RDT }
-+ { begin nspace[i]:=unspec; stave_size[i]:=unspec; end; }
- n_pages:=1; n_systems:=1;
- readStyles; old_known_styles := known_styles;
- for i:=1 to lines_in_paragraph do omit_line[i]:=false;
-diff -ur ./utils/m-tx/mtx-src/prepmx.c ../b18/utils/m-tx/mtx-src/prepmx.c
---- ./utils/m-tx/mtx-src/prepmx.c 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/mtx-src/prepmx.c 2018-06-25 22:08:49.954233832 +0200
-@@ -66,8 +66,8 @@
-
- /** M-Tx preprocessor to PMX Dirk Laurie */
-
--#define version "0.63"
--#define version_date "<7 January 2018>"
-+#define version "0.63a"
-+#define version_date "<8 April 2018>"
-
- /** See file "Corrections" for updates */
-
-@@ -758,7 +758,7 @@
- Static void topOfPMXfile(void)
- {
- Char STR2[24];
-- Char STR3[32];
-+ Char STR3[30];
-
- putLine("---");
- sprintf(STR2, "\\def\\mtxversion{%s}", version);
-diff -ur ./utils/m-tx/mtx-src/prepmx.pas ../b18/utils/m-tx/mtx-src/prepmx.pas
---- ./utils/m-tx/mtx-src/prepmx.pas 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/mtx-src/prepmx.pas 2018-06-25 22:08:49.954233832 +0200
-@@ -5,8 +5,8 @@
- { CMO: addition/change by Christian Mondrup }
-
- {* M-Tx preprocessor to PMX Dirk Laurie }
--const version = '0.63';
-- version_date = '<7 January 2018>';
-+const version = '0.63a';
-+ version_date = '<8 April 2018>';
-
- {* See file "Corrections" for updates }
-
-diff -ur ./utils/m-tx/tests/mozart.pmx ../b18/utils/m-tx/tests/mozart.pmx
---- ./utils/m-tx/tests/mozart.pmx 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/tests/mozart.pmx 2018-06-25 22:08:50.059233760 +0200
-@@ -1,6 +1,6 @@
- ---
--\def\mtxversion{0.63}
--\def\mtxdate{<7 January 2018>}
-+\def\mtxversion{0.63a}
-+\def\mtxdate{<8 April 2018>}
- \input mtx
- \mtxComposerLine{}{W. A. Mozart (1756--1791)}
- \mtxTitleLine{Riff in C}
-diff -ur ./utils/m-tx/version.ac ../b18/utils/m-tx/version.ac
---- ./utils/m-tx/version.ac 2018-01-09 04:41:12.000000000 +0100
-+++ ../b18/utils/m-tx/version.ac 2018-06-25 22:08:50.059233760 +0200
-@@ -8,4 +8,4 @@
- dnl --------------------------------------------------------
- dnl
- dnl m4-include this file to define the current mtx version
--m4_define([mtx_version], [0.63])
-+m4_define([mtx_version], [0.63a])
diff --git a/office/texlive/patches/texlive-20170524-source-gcc7-1.patch b/office/texlive/patches/texlive-20170524-source-gcc7-1.patch
deleted file mode 100644
index c2d3521a5b..0000000000
--- a/office/texlive/patches/texlive-20170524-source-gcc7-1.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
-Date: 2017-06-05
-Initial Package Version: 20170524
-Upstream Status: Unknown
-Origin: http://tug.org/pipermail/tex-live/2017-June/040192.html
-Description: From Dr. Werner Fink of SuSe, fixes compilation with gcc-7.1
-
-diff -Naur texlive-20170524-source.orig/texk/web2c/luatexdir/luaffi/ctype.c texlive-20170524-source/texk/web2c/luatexdir/luaffi/ctype.c
---- texlive-20170524-source.orig/texk/web2c/luatexdir/luaffi/ctype.c 2017-02-10 01:03:59.000000000 +0000
-+++ texlive-20170524-source/texk/web2c/luatexdir/luaffi/ctype.c 2017-06-05 02:32:34.548531839 +0100
-@@ -245,6 +245,10 @@
-
- lua_pop(L, 1); /* mt */
- cd = (struct cdata*) lua_touserdata(L, idx);
-+ if (!cd) {
-+ lua_pushnil(L);
-+ return NULL;
-+ }
- *ct = cd->type;
- lua_getuservalue(L, idx);
-
-diff -Naur texlive-20170524-source.orig/texk/web2c/luatexdir/luaffi/ffi.h texlive-20170524-source/texk/web2c/luatexdir/luaffi/ffi.h
---- texlive-20170524-source.orig/texk/web2c/luatexdir/luaffi/ffi.h 2017-03-11 01:04:06.000000000 +0000
-+++ texlive-20170524-source/texk/web2c/luatexdir/luaffi/ffi.h 2017-06-05 02:32:34.548531839 +0100
-@@ -370,7 +370,7 @@
- #endif
- struct cdata {
- const struct ctype type
--#ifdef __GNUC__
-+#if 0 /* def __GNUC__ */
- __attribute__ ((aligned(16)))
- #endif
- ;
diff --git a/office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch b/office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch
deleted file mode 100644
index e4ea52e28c..0000000000
--- a/office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch
+++ /dev/null
@@ -1,451 +0,0 @@
-Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
-Date: 2017-06-13
-Initial Package Version: 2017-05-25
-Upstream Status: Applied
-Origin: Upstream
-Description: Consolidated fixes for luatex.
-
-1. Removes debugging code which was accidentally left in
-luatex, which made the (infrequently needed) io.popen useless. Also
-disables io.saved_popen and changes the reported date of the luatex
-version.
-
-2. Fix for io.lines (fixed in r44572).
-
-diff -Naur a/texk/web2c/luatexdir/lua/liolibext.c b/texk/web2c/luatexdir/lua/liolibext.c
---- a/texk/web2c/luatexdir/lua/liolibext.c 2017-03-11 01:04:06.000000000 +0000
-+++ b/texk/web2c/luatexdir/lua/liolibext.c 2017-06-11 01:49:11.813308882 +0100
-@@ -365,7 +365,7 @@
- lua_pushliteral(L,"all command execution is disabled");
- } else if (restrictedshell == 0) {
- lua_pushboolean(L,1);
-- lua_pushliteral(L,"all commands are permitted");
-+ lua_pushstring(L,filename);
- } else {
- char *safecmd = NULL;
- char *cmdname = NULL;
-@@ -374,10 +374,6 @@
- lua_pushboolean(L,0);
- lua_pushliteral(L, "specific command execution disabled");
- break;
-- case 1:
-- lua_pushboolean(L,1);
-- lua_pushstring(L,filename);
-- break;
- case 2:
- lua_pushboolean(L,1);
- lua_pushstring(L,safecmd);
-diff -Naur a/texk/web2c/luatexdir/lua/luatex-core.c b/texk/web2c/luatexdir/lua/luatex-core.c
---- a/texk/web2c/luatexdir/lua/luatex-core.c 2017-04-19 11:07:10.000000000 +0100
-+++ b/texk/web2c/luatexdir/lua/luatex-core.c 2017-06-12 19:34:37.320003411 +0100
-@@ -52,7 +52,7 @@
- 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6f, 0x5f,
- 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
-- 0x6c, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x6c, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73,
- 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64,
- 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x69,
-@@ -84,169 +84,175 @@
- 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x2d, 0x2d, 0x20,
- 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64,
-- 0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f,
-- 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20,
-- 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76,
-- 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d,
-- 0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c,
-- 0x79, 0x0a, 0x6d, 0x74, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x74,
-- 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73,
-- 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
-- 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78,
-- 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f,
-- 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x6f,
-- 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68,
-- 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64,
-- 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69,
-+ 0x0a, 0x2d, 0x2d, 0x20, 0x28, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72,
-+ 0x20, 0x74, 0x6c, 0x31, 0x37, 0x20, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x29, 0x20, 0x69,
-+ 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x70, 0x6f,
-+ 0x70, 0x65, 0x6e, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72,
-+ 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64,
-+ 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20,
-+ 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a,
-+ 0x6d, 0x74, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x74, 0x5f, 0x6c,
-+ 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72,
-+ 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66,
-+ 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69,
- 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29,
-- 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x68,
-- 0x6f, 0x77, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x27, 0x20,
-- 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x77, 0x27,
-- 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c,
-- 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x0a,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63,
-- 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65,
-- 0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e,
-- 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-- 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
-- 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65,
-- 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e,
-- 0x6c, 0x79, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20,
-- 0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20,
-- 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x67, 0x73, 0x75, 0x62, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27,
-- 0x5b, 0x5e, 0x72, 0x62, 0x5d, 0x27, 0x2c, 0x27, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20,
-- 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20,
-+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x6f, 0x77, 0x20,
-+ 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77,
-+ 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20,
- 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f,
- 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20,
- 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66,
-- 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x72, 0x27,
-- 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-- 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
-- 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65,
-- 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c,
-- 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f,
-- 0x6b, 0x61, 0x79, 0x2c, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6f,
-- 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
-- 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x6b,
-- 0x61, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65,
-- 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-- 0x20, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2c,
-- 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64,
-- 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-- 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73,
-- 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
-- 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d,
-- 0x65, 0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20,
-- 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-- 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x68, 0x6f, 0x77,
-+ 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x27, 0x20, 0x61, 0x6e,
-+ 0x64, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x20,
-+ 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e,
-+ 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x0a, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72,
-+ 0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27,
-+ 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
-+ 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-+ 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
-+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f,
-+ 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79,
-+ 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-+ 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20,
-+ 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f,
-+ 0x77, 0x20, 0x3d, 0x20, 0x67, 0x73, 0x75, 0x62, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x5b, 0x5e,
-+ 0x72, 0x62, 0x5d, 0x27, 0x2c, 0x27, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20, 0x74, 0x68,
-+ 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68,
-+ 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20,
-+ 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70,
-+ 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20,
-+ 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c,
-+ 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a,
-+ 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-+ 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
-+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f,
-+ 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x2e, 0x2e,
-+ 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x6b, 0x61,
-+ 0x79, 0x2c, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x63,
-+ 0x68, 0x65, 0x63, 0x6b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x28, 0x6e,
-+ 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x6b, 0x61, 0x79,
-+ 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x69,
-+ 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2c, 0x2e, 0x2e,
-+ 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a,
-+ 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c,
-+ 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x28, 0x6e,
-+ 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
-+ 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f,
-+ 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x20, 0x6f, 0x72, 0x20,
-+ 0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
-+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
-+ 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f,
-+ 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65,
-+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-+ 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65,
-+ 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75,
-+ 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f,
-+ 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20,
-+ 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-+ 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
- 0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66,
-- 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20,
-- 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
-- 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78,
-- 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a,
-- 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
-- 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-- 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e,
-- 0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64,
-- 0x0a, 0x0a, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61,
-- 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x0a, 0x6d, 0x74, 0x2e,
-- 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69,
-- 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x57,
-- 0x65, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d,
-- 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
-- 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63,
-- 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x2e, 0x20, 0x54,
-- 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x61,
-- 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x54, 0x65, 0x58, 0x74, 0x2e, 0x0a, 0x0a,
-- 0x69, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x31,
-- 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70,
-- 0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f,
-- 0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65,
-- 0x6e, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f,
-- 0x70, 0x65, 0x6e, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66,
-- 0x65, 0x72, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68,
-- 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75,
-- 0x74, 0x65, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e,
-- 0x73, 0x70, 0x61, 0x77, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20,
-- 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e,
-- 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x65, 0x6e, 0x76,
-- 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x74,
-- 0x65, 0x6d, 0x70, 0x64, 0x69, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20,
-- 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e,
-- 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20,
-- 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e,
-- 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20,
-- 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e,
-- 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x74, 0x6d, 0x70, 0x66, 0x69,
-- 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e,
-- 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20,
-- 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x63, 0x68, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20,
-- 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6c, 0x6f, 0x63, 0x6b,
-- 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73,
-- 0x2e, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20,
-- 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x72, 0x6d, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e,
-- 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6d, 0x6b, 0x64, 0x69, 0x72,
-- 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e,
-- 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x6e, 0x69,
-- 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6f,
-- 0x70, 0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f,
-- 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a,
-- 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65, 0x72, 0x6f, 0x70, 0x74,
-- 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x73, 0x68, 0x65, 0x6c,
-- 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x7e, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65,
-- 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x71,
-- 0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x66, 0x66, 0x69, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
-- 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20, 0x6e, 0x65, 0x78, 0x74,
-- 0x2c, 0x20, 0x66, 0x66, 0x69, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x69, 0x66, 0x20, 0x6b, 0x20, 0x7e, 0x3d, 0x20, 0x27, 0x67, 0x63, 0x27, 0x20, 0x74, 0x68,
-- 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66,
-- 0x66, 0x69, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
-- 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x65,
-- 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x6f, 0x73, 0x2e, 0x5b, 0x65, 0x78, 0x65, 0x63, 0x75,
-- 0x74, 0x65, 0x7c, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x7c, 0x6f, 0x73, 0x2e, 0x65,
-- 0x78, 0x65, 0x63, 0x5d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x61, 0x72, 0x65,
-- 0x20, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x61, 0x77, 0x61,
-- 0x72, 0x65, 0x29, 0x0a, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6d, 0x64, 0x35, 0x20, 0x74, 0x68, 0x65,
-- 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d,
-- 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x0a, 0x20, 0x20,
-- 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x73, 0x75, 0x62, 0x20, 0x20, 0x20, 0x3d,
-- 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, 0x0a, 0x20, 0x20, 0x20,
-- 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x3d, 0x20,
-- 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x20, 0x20,
-- 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x20, 0x20, 0x3d,
-- 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x79, 0x74, 0x65, 0x0a, 0x0a, 0x20, 0x20,
-- 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73,
-- 0x75, 0x6d, 0x68, 0x65, 0x78, 0x61, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73,
-- 0x75, 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63,
-- 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61,
-- 0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x78, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29,
-- 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a,
-- 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e,
-- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x48, 0x45, 0x58,
-- 0x41, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-- 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29,
-- 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28,
-- 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72,
-- 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30,
-- 0x32, 0x58, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20,
-- 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65,
-- 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x00
-+ 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69,
-+ 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78,
-+ 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x0a, 0x6d, 0x74, 0x2e, 0x6c, 0x69, 0x6e,
-+ 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x72,
-+ 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x57, 0x65, 0x20, 0x61,
-+ 0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74,
-+ 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20,
-+ 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65,
-+ 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73,
-+ 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20,
-+ 0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x54, 0x65, 0x58, 0x74, 0x2e, 0x0a, 0x0a, 0x69, 0x66, 0x20,
-+ 0x6b, 0x70, 0x73, 0x65, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68,
-+ 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20,
-+ 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65,
-+ 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x3d,
-+ 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e,
-+ 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65, 0x72, 0x6f,
-+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a,
-+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20,
-+ 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61,
-+ 0x77, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f,
-+ 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
-+ 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x65, 0x6e, 0x76, 0x20, 0x20, 0x3d,
-+ 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x74, 0x65, 0x6d, 0x70,
-+ 0x64, 0x69, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-+ 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
-+ 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x3d,
-+ 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x6e,
-+ 0x61, 0x6d, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f,
-+ 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
-+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x74, 0x6d, 0x70, 0x66, 0x69, 0x6c, 0x65, 0x20,
-+ 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x75, 0x74,
-+ 0x70, 0x75, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-+ 0x6c, 0x66, 0x73, 0x2e, 0x63, 0x68, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c,
-+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x20, 0x20,
-+ 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x74, 0x6f,
-+ 0x75, 0x63, 0x68, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c,
-+ 0x66, 0x73, 0x2e, 0x72, 0x6d, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
-+ 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6d, 0x6b, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d,
-+ 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76,
-+ 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65,
-+ 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e,
-+ 0x6c, 0x79, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65,
-+ 0x72, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x6f, 0x72, 0x20,
-+ 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x7e, 0x3d, 0x20, 0x31,
-+ 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d,
-+ 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x66, 0x66, 0x69, 0x27, 0x29, 0x0a,
-+ 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20,
-+ 0x6e, 0x65, 0x78, 0x74, 0x2c, 0x20, 0x66, 0x66, 0x69, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6b, 0x20, 0x7e, 0x3d, 0x20, 0x27, 0x67, 0x63,
-+ 0x27, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20,
-+ 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x69,
-+ 0x6c, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x6f, 0x73, 0x2e, 0x5b, 0x65,
-+ 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x7c, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x7c,
-+ 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x5d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79,
-+ 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65,
-+ 0x20, 0x61, 0x77, 0x61, 0x72, 0x65, 0x29, 0x0a, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6d, 0x64, 0x35,
-+ 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
-+ 0x20, 0x73, 0x75, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75,
-+ 0x6d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x73, 0x75, 0x62,
-+ 0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62,
-+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61,
-+ 0x74, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61,
-+ 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65,
-+ 0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x79, 0x74, 0x65,
-+ 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d,
-+ 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x68, 0x65, 0x78, 0x61, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73,
-+ 0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20,
-+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66,
-+ 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x78, 0x22, 0x2c, 0x62, 0x79, 0x74,
-+ 0x65, 0x28, 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e,
-+ 0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-+ 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75,
-+ 0x6d, 0x48, 0x45, 0x58, 0x41, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, 0x75,
-+ 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
-+ 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-+ 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
-+ 0x28, 0x22, 0x25, 0x30, 0x32, 0x58, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29,
-+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20,
-+ 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x00
- };
- return luaL_dostring(L, (const char*) luatex_core_lua);
- }
-\ No newline at end of file
-diff -Naur a/texk/web2c/luatexdir/lua/luatex-core.lua b/texk/web2c/luatexdir/lua/luatex-core.lua
---- a/texk/web2c/luatexdir/lua/luatex-core.lua 2017-04-19 11:07:10.000000000 +0100
-+++ b/texk/web2c/luatexdir/lua/luatex-core.lua 2017-06-12 19:34:37.320003411 +0100
-@@ -16,7 +16,7 @@
-
- local io_open = io.open
- local io_popen = io.popen
--local io_line = io.lines
-+local io_lines = io.lines
-
- local fio_readline = fio.readline
- local fio_checkpermission = fio.checkpermission
-@@ -29,7 +29,7 @@
- local kpseused = status.kpse_used -- 0 1
-
- io.saved_open = io_open -- can be protected
--io.saved_popen = io_popen -- can be protected
-+-- (deleted for tl17 rebuild) io.saved_popen = io_popen -- can be protected
- io.saved_lines = io_lines -- always readonly
- mt.saved_lines = mt_lines -- always readonly
-
-@@ -71,12 +71,16 @@
- end
- end
-
--local function luatex_io_lines(name)
-- local f = io_open(name,'r')
-- if f then
-- return function()
-- return fio_readline(f)
-+local function luatex_io_lines(name,how)
-+ if name then
-+ local f = io_open(name,how or 'r')
-+ if f then
-+ return function()
-+ return fio_readline(f)
-+ end
- end
-+ else
-+ return io_lines()
- end
- end
-
-@@ -122,7 +126,6 @@
- lfs.rmdir = nil
- lfs.mkdir = nil
-
-- io.saved_popen = nil
- io.saved_open = luatex_io_open_readonly
-
- end
-diff -Naur a/texk/web2c/luatexdir/luatex.c b/texk/web2c/luatexdir/luatex.c
---- a/texk/web2c/luatexdir/luatex.c 2017-03-31 14:27:09.000000000 +0100
-+++ b/texk/web2c/luatexdir/luatex.c 2017-06-11 01:49:11.813308882 +0100
-@@ -28,9 +28,11 @@
-
- #define TeX
-
-+/* for tl17 update, change luatex_date_info but nothing else,
-+ as context depends on the numeric version number. */
- int luatex_version = 100; /* \.{\\luatexversion} */
- int luatex_revision = '4'; /* \.{\\luatexrevision} */
--int luatex_date_info = 2017033109; /* the compile date is now hardwired :YEAR MONTH DAY HOUR*/
-+int luatex_date_info = 2017060901; /* the compile date is now hardwired :YEAR MONTH DAY HOUR*/
- const char *luatex_version_string = "1.0.4";
- const char *engine_name = my_name; /* the name of this engine */
-
diff --git a/office/texlive/patches/texlive-poppler-0.59.patch b/office/texlive/patches/texlive-poppler-0.59.patch
deleted file mode 100644
index 401315a64c..0000000000
--- a/office/texlive/patches/texlive-poppler-0.59.patch
+++ /dev/null
@@ -1,1142 +0,0 @@
-diff -ur source.orig/texk/web2c/luatexdir/image/pdftoepdf.w source/texk/web2c/luatexdir/image/pdftoepdf.w
---- source.orig/texk/web2c/luatexdir/image/pdftoepdf.w 2017-05-08 22:39:36.639375783 +0200
-+++ source/texk/web2c/luatexdir/image/pdftoepdf.w 2017-09-19 11:23:36.586768739 +0200
-@@ -224,7 +224,7 @@
- free(checksum);
- }
- if (pdf_doc->doc == NULL) {
-- docmemstream = new MemStream( docstream,0,streamsize, obj.initNull() );
-+ docmemstream = new MemStream( docstream,0,streamsize, Object(objNull) );
- doc = new PDFDoc(docmemstream); /* takes ownership of docmemstream */
- pdf_doc->pc++;
- if (!doc->isOk() || !doc->okToPrint()) {
-@@ -408,9 +408,8 @@
- Object obj1;
- pdf_begin_array(pdf);
- for (i = 0, l = array->getLength(); i < l; ++i) {
-- array->getNF(i, &obj1);
-+ obj1 = array->getNF(i);
- copyObject(pdf, pdf_doc, &obj1);
-- obj1.free();
- }
- pdf_end_array(pdf);
- }
-@@ -422,9 +421,8 @@
- pdf_begin_dict(pdf);
- for (i = 0, l = dict->getLength(); i < l; ++i) {
- copyName(pdf, dict->getKey(i));
-- dict->getValNF(i, &obj1);
-+ obj1 = dict->getValNF(i);
- copyObject(pdf, pdf_doc, &obj1);
-- obj1.free();
- }
- pdf_end_dict(pdf);
- }
-@@ -510,13 +508,12 @@
- PDFDoc *doc = pdf_doc->doc;
- xref = doc->getXRef();
- for (r = pdf_doc->inObjList; r != NULL;) {
-- xref->fetch(r->ref.num, r->ref.gen, &obj1);
-+ obj1 = xref->fetch(r->ref.num, r->ref.gen);
- if (obj1.isStream())
- pdf_begin_obj(pdf, r->num, OBJSTM_NEVER);
- else
- pdf_begin_obj(pdf, r->num, 2);
- copyObject(pdf, pdf_doc, &obj1);
-- obj1.free();
- pdf_end_obj(pdf);
- n = r->next;
- delete r;
-@@ -740,7 +737,7 @@
- catalog = doc->getCatalog();
- page = catalog->getPage(img_pagenum(idict));
- pageref = catalog->getPageRef(img_pagenum(idict));
-- doc->getXRef()->fetch(pageref->num, pageref->gen, &pageobj);
-+ pageobj = doc->getXRef()->fetch(pageref->num, pageref->gen);
- pageDict = pageobj.getDict();
- /* write the Page header */
- pdf_begin_obj(pdf, img_objnum(idict), OBJSTM_NEVER);
-@@ -757,12 +754,11 @@
- pdf_dict_add_int(pdf, "PTEX.PageNumber", (int) img_pagenum(idict));
- }
- if ((suppress_optional_info & 8) == 0) {
-- doc->getDocInfoNF(&obj1);
-+ obj1 = doc->getDocInfoNF();
- if (obj1.isRef()) {
- /* the info dict must be indirect (PDF Ref p. 61) */
- pdf_dict_add_ref(pdf, "PTEX.InfoDict", addInObj(pdf, pdf_doc, obj1.getRef()));
- }
-- obj1.free();
- }
- if (img_is_bbox(idict)) {
- bbox[0] = sp2bp(img_bbox(idict)[0]);
-@@ -788,19 +784,17 @@
- Now all relevant parts of the Page dictionary are copied. Metadata validity
- check is needed(as a stream it must be indirect).
- */
-- pageDict->lookupNF("Metadata", &obj1);
-+ obj1 = pageDict->lookupNF("Metadata");
- if (!obj1.isNull() && !obj1.isRef())
- formatted_warning("pdf inclusion","/Metadata must be indirect object");
-- obj1.free();
- /* copy selected items in Page dictionary */
- for (i = 0; pagedictkeys[i] != NULL; i++) {
-- pageDict->lookupNF(pagedictkeys[i], &obj1);
-+ obj1 = pageDict->lookupNF(pagedictkeys[i]);
- if (!obj1.isNull()) {
- pdf_add_name(pdf, pagedictkeys[i]);
- /* preserves indirection */
- copyObject(pdf, pdf_doc, &obj1);
- }
-- obj1.free();
- }
- /*
- If there are no Resources in the Page dict of the embedded page,
-@@ -808,32 +802,28 @@
- PDF file, climbing up the tree until the Resources are found.
- (This fixes a problem with Scribus 1.3.3.14.)
- */
-- pageDict->lookupNF("Resources", &obj1);
-+ obj1 = pageDict->lookupNF("Resources");
- if (obj1.isNull()) {
- op1 = &pagesobj1;
- op2 = &pagesobj2;
-- pageDict->lookup("Parent", op1);
-+ *op1 = pageDict->lookup("Parent");
- while (op1->isDict()) {
-- obj1.free();
-- op1->dictLookupNF("Resources", &obj1);
-+ obj1 = op1->dictLookupNF("Resources");
- if (!obj1.isNull()) {
- pdf_add_name(pdf, "Resources");
- copyObject(pdf, pdf_doc, &obj1);
- break;
- }
-- op1->dictLookup("Parent", op2);
-+ *op2 = op1->dictLookup("Parent");
- optmp = op1;
- op1 = op2;
- op2 = optmp;
-- op2->free();
- };
- if (!op1->isDict())
- formatted_warning("pdf inclusion","Page /Resources missing");
-- op1->free();
- }
-- obj1.free();
- /* Write the Page contents. */
-- page->getContents(&contents);
-+ contents = page->getContents();
- if (contents.isStream()) {
- /*
- Variant A: get stream and recompress under control of \pdfcompresslevel
-@@ -844,27 +834,23 @@
-
- Variant B: copy stream without recompressing
- */
-- contents.streamGetDict()->lookup("F", &obj1);
-+ obj1 = contents.streamGetDict()->lookup("F");
- if (!obj1.isNull()) {
- normal_error("pdf inclusion","unsupported external stream");
- }
-- obj1.free();
-- contents.streamGetDict()->lookup("Length", &obj1);
-+ obj1 = contents.streamGetDict()->lookup("Length");
- pdf_add_name(pdf, "Length");
- copyObject(pdf, pdf_doc, &obj1);
-- obj1.free();
-- contents.streamGetDict()->lookup("Filter", &obj1);
-+ obj1 = contents.streamGetDict()->lookup("Filter");
- if (!obj1.isNull()) {
- pdf_add_name(pdf, "Filter");
- copyObject(pdf, pdf_doc, &obj1);
-- obj1.free();
-- contents.streamGetDict()->lookup("DecodeParms", &obj1);
-+ obj1 = contents.streamGetDict()->lookup("DecodeParms");
- if (!obj1.isNull()) {
- pdf_add_name(pdf, "DecodeParms");
- copyObject(pdf, pdf_doc, &obj1);
- }
- }
-- obj1.free();
- pdf_end_dict(pdf);
- pdf_begin_stream(pdf);
- copyStreamStream(pdf, contents.getStream()->getUndecodedStream());
-@@ -875,8 +861,8 @@
- pdf_end_dict(pdf);
- pdf_begin_stream(pdf);
- for (i = 0, l = contents.arrayGetLength(); i < l; ++i) {
-- copyStreamStream(pdf, (contents.arrayGet(i, &obj1))->getStream());
-- obj1.free();
-+ obj1 = contents.arrayGet(i);
-+ copyStreamStream(pdf, obj1.getStream());
- if (i < (l - 1)) {
- /*
- Put a space between streams to be on the safe side (streams
-@@ -897,8 +883,6 @@
- }
- /* write out all indirect objects */
- writeRefs(pdf, pdf_doc);
-- contents.free();
-- pageobj.free();
- /*
- unrefPdfDocument() must come after contents.free() and pageobj.free()!
- TH: The next line makes repeated pdf inclusion unacceptably slow
-diff -ur source.orig/texk/web2c/luatexdir/lua/lepdflib.cc source/texk/web2c/luatexdir/lua/lepdflib.cc
---- source.orig/texk/web2c/luatexdir/lua/lepdflib.cc 2017-05-08 22:39:36.689375107 +0200
-+++ source/texk/web2c/luatexdir/lua/lepdflib.cc 2017-09-19 09:48:19.658021769 +0200
-@@ -538,7 +538,7 @@
- pdfdoc_changed_error(L); \
- uout = new_Object_userdata(L); \
- uout->d = new Object(); \
-- ((in *) uin->d)->function((Object *) uout->d); \
-+ *((Object *)uout->d) = ((in *) uin->d)->function(); \
- uout->atype = ALLOC_LEPDF; \
- uout->pc = uin->pc; \
- uout->pd = uin->pd; \
-@@ -668,13 +668,11 @@
-
- static int m_Array_incRef(lua_State * L)
- {
-- int i;
- udstruct *uin;
- uin = (udstruct *) luaL_checkudata(L, 1, M_Array);
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
-- i = ((Array *) uin->d)->incRef();
-- lua_pushinteger(L, i);
-+ lua_pushinteger(L, 1);
- return 1;
- }
-
-@@ -685,8 +683,7 @@
- uin = (udstruct *) luaL_checkudata(L, 1, M_Array);
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
-- i = ((Array *) uin->d)->decRef();
-- lua_pushinteger(L, i);
-+ lua_pushinteger(L, 1);
- return 1;
- }
-
-@@ -702,7 +699,7 @@
- if ((uin->pd != NULL && uin->pd->pc != uin->pc)
- || (uobj->pd != NULL && uobj->pd->pc != uobj->pc))
- pdfdoc_changed_error(L);
-- ((Array *) uin->d)->add(((Object *) uobj->d));
-+ ((Array *) uin->d)->add(std::move(*((Object *) uobj->d)));
- return 0;
- }
-
-@@ -718,7 +715,7 @@
- if (i > 0 && i <= len) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Array *) uin->d)->get(i - 1, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Array *) uin->d)->get(i - 1);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -739,7 +736,7 @@
- if (i > 0 && i <= len) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Array *) uin->d)->getNF(i - 1, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -953,25 +950,21 @@
-
- static int m_Dict_incRef(lua_State * L)
- {
-- int i;
- udstruct *uin;
- uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
-- i = ((Dict *) uin->d)->incRef();
-- lua_pushinteger(L, i);
-+ lua_pushinteger(L, 1);
- return 1;
- }
-
- static int m_Dict_decRef(lua_State * L)
- {
-- int i;
- udstruct *uin;
- uin = (udstruct *) luaL_checkudata(L, 1, M_Dict);
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
-- i = ((Dict *) uin->d)->decRef();
-- lua_pushinteger(L, i);
-+ lua_pushinteger(L, 1);
- return 1;
- }
-
-@@ -986,7 +979,7 @@
- pdfdoc_changed_error(L);
- s = copyString(luaL_checkstring(L, 2));
- uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
-- ((Dict *) uin->d)->add(s, ((Object *) uobj->d));
-+ ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d)));
- return 0;
- }
-
-@@ -999,7 +992,7 @@
- pdfdoc_changed_error(L);
- s = luaL_checkstring(L, 2);
- uobj = (udstruct *) luaL_checkudata(L, 3, M_Object);
-- ((Dict *) uin->d)->set(s, ((Object *) uobj->d));
-+ ((Dict *) uin->d)->set(s, std::move(*((Object *) uobj->d)));
- return 0;
- }
-
-@@ -1027,7 +1020,7 @@
- s = luaL_checkstring(L, 2);
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Dict *) uin->d)->lookup(s, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Dict *) uin->d)->lookup(s);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1044,7 +1037,7 @@
- s = luaL_checkstring(L, 2);
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Dict *) uin->d)->lookupNF(s, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1096,7 +1089,7 @@
- if (i > 0 && i <= len) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Dict *) uin->d)->getVal(i - 1, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Dict *) uin->d)->getVal(i - 1);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1117,7 +1110,7 @@
- if (i > 0 && i <= len) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Dict *) uin->d)->getValNF(i - 1, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1381,9 +1374,9 @@
- pdfdoc_changed_error(L);
- luaL_checktype(L, 2, LUA_TBOOLEAN);
- if (lua_toboolean(L, 2) != 0)
-- ((Object *) uin->d)->initBool(gTrue);
-+ *((Object *) uin->d) = Object(gTrue);
- else
-- ((Object *) uin->d)->initBool(gFalse);
-+ *((Object *) uin->d) = Object(gFalse);
- return 0;
- }
-
-@@ -1395,7 +1388,7 @@
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
- i = luaL_checkint(L, 2);
-- ((Object *) uin->d)->initInt(i);
-+ *((Object *) uin->d) = Object(i);
- return 0;
- }
-
-@@ -1407,7 +1400,7 @@
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
- d = luaL_checknumber(L, 2);
-- ((Object *) uin->d)->initReal(d);
-+ *((Object *) uin->d) = Object(d);
- return 0;
- }
-
-@@ -1422,7 +1415,7 @@
- pdfdoc_changed_error(L);
- s = luaL_checklstring(L, 2, &len);
- gs = new GooString(s, len);
-- ((Object *) uin->d)->initString(gs);
-+ *((Object *) uin->d) = Object(gs);
- return 0;
- }
-
-@@ -1434,7 +1427,7 @@
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
- s = luaL_checkstring(L, 2);
-- ((Object *) uin->d)->initName(s);
-+ *((Object *) uin->d) = Object(objName, s);
- return 0;
- }
-
-@@ -1444,13 +1437,14 @@
- uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
-- ((Object *) uin->d)->initNull();
-+ *((Object *) uin->d) = Object(objNull);
- return 0;
- }
-
- static int m_Object_initArray(lua_State * L)
- {
- udstruct *uin, *uxref;
-+ Array *a;
- uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
- uxref = (udstruct *) luaL_checkudata(L, 2, M_XRef);
- if (uin->pd != NULL && uxref->pd != NULL && uin->pd != uxref->pd)
-@@ -1458,7 +1452,8 @@
- if ((uin->pd != NULL && uin->pd->pc != uin->pc)
- || (uxref->pd != NULL && uxref->pd->pc != uxref->pc))
- pdfdoc_changed_error(L);
-- ((Object *) uin->d)->initArray((XRef *) uxref->d);
-+ a = new Array((XRef *) uxref->d);
-+ *((Object *) uin->d) = Object(a);
- return 0;
- }
-
-@@ -1469,6 +1464,7 @@
- static int m_Object_initDict(lua_State * L)
- {
- udstruct *uin, *uxref;
-+ Dict *d;
- uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
- uxref = (udstruct *) luaL_checkudata(L, 2, M_XRef);
- if (uin->pd != NULL && uxref->pd != NULL && uin->pd != uxref->pd)
-@@ -1476,7 +1472,8 @@
- if ((uin->pd != NULL && uin->pd->pc != uin->pc)
- || (uxref->pd != NULL && uxref->pd->pc != uxref->pc))
- pdfdoc_changed_error(L);
-- ((Object *) uin->d)->initDict((XRef *) uxref->d);
-+ d = new Dict((XRef *) uxref->d);
-+ *((Object *) uin->d) = Object(d);
- return 0;
- }
-
-@@ -1490,7 +1487,7 @@
- if ((uin->pd != NULL && uin->pd->pc != uin->pc)
- || (ustream->pd != NULL && ustream->pd->pc != ustream->pc))
- pdfdoc_changed_error(L);
-- ((Object *) uin->d)->initStream((Stream *) ustream->d);
-+ *((Object *) uin->d) = Object((Stream *) ustream->d);
- return 0;
- }
-
-@@ -1503,7 +1500,7 @@
- pdfdoc_changed_error(L);
- num = luaL_checkint(L, 2);
- gen = luaL_checkint(L, 3);
-- ((Object *) uin->d)->initRef(num, gen);
-+ *((Object *) uin->d) = Object(num, gen);
- return 0;
- }
-
-@@ -1515,7 +1512,7 @@
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
- s = luaL_checkstring(L, 2);
-- ((Object *) uin->d)->initCmd(CHARP_CAST s);
-+ *((Object *) uin->d) = Object(objCmd, CHARP_CAST s);
- return 0;
- }
-
-@@ -1525,7 +1522,7 @@
- uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
-- ((Object *) uin->d)->initError();
-+ *((Object *) uin->d) = Object(objError);
- return 0;
- }
-
-@@ -1535,7 +1532,7 @@
- uin = (udstruct *) luaL_checkudata(L, 1, M_Object);
- if (uin->pd != NULL && uin->pd->pc != uin->pc)
- pdfdoc_changed_error(L);
-- ((Object *) uin->d)->initEOF();
-+ *((Object *) uin->d) = Object(objEOF);
- return 0;
- }
-
-@@ -1551,7 +1548,7 @@
- pdfdoc_changed_error(L);
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Object *) uin->d)->fetch((XRef *) uxref->d, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Object *) uin->d)->fetch((XRef *) uxref->d);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1816,7 +1813,7 @@
- pdfdoc_changed_error(L);
- if (!((Object *) uin->d)->isArray())
- luaL_error(L, "Object is not an Array");
-- ((Object *) uin->d)->arrayAdd((Object *) uobj->d);
-+ ((Object *) uin->d)->arrayAdd(std::move(*((Object *) uobj->d)));
- return 0;
- }
-
-@@ -1833,7 +1830,7 @@
- if (i > 0 && i <= len) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Object *) uin->d)->arrayGet(i - 1, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Object *) uin->d)->arrayGet(i - 1);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1857,7 +1854,7 @@
- if (i > 0 && i <= len) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Object *) uin->d)->arrayGetNF(i - 1, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1897,7 +1894,7 @@
- pdfdoc_changed_error(L);
- if (!((Object *) uin->d)->isDict())
- luaL_error(L, "Object is not a Dict");
-- ((Object *) uin->d)->dictAdd(copyString(s), (Object *) uobj->d);
-+ ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d)));
- return 0;
- }
-
-@@ -1915,7 +1912,7 @@
- pdfdoc_changed_error(L);
- if (!((Object *) uin->d)->isDict())
- luaL_error(L, "Object is not a Dict");
-- ((Object *) uin->d)->dictSet(s, (Object *) uobj->d);
-+ ((Object *) uin->d)->dictSet(s, std::move(*((Object *) uobj->d)));
- return 0;
- }
-
-@@ -1930,7 +1927,7 @@
- if (((Object *) uin->d)->isDict()) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Object *) uin->d)->dictLookup(s, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Object *) uin->d)->dictLookup(s);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1950,7 +1947,7 @@
- if (((Object *) uin->d)->isDict()) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Object *) uin->d)->dictLookupNF(s, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -1991,7 +1988,7 @@
- if (i > 0 && i <= len) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Object *) uin->d)->dictGetVal(i - 1, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Object *) uin->d)->dictGetVal(i - 1);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -2015,7 +2012,7 @@
- if (i > 0 && i <= len) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((Object *) uin->d)->dictGetValNF(i - 1, (Object *) uout->d);
-+ *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -2243,7 +2240,7 @@
- m_poppler_get_poppler(Page, Dict, getPieceInfo);
- m_poppler_get_poppler(Page, Dict, getSeparationInfo);
- m_poppler_get_poppler(Page, Dict, getResourceDict);
--m_poppler_get_OBJECT(Page, getAnnots);
-+m_poppler_get_OBJECT(Page, getAnnotsObject);
-
- m_poppler_get_OBJECT(Page, getContents);
-
-@@ -2270,7 +2267,7 @@
- {"getPieceInfo", m_Page_getPieceInfo},
- {"getSeparationInfo", m_Page_getSeparationInfo},
- {"getResourceDict", m_Page_getResourceDict},
-- {"getAnnots", m_Page_getAnnots},
-+ {"getAnnots", m_Page_getAnnotsObject},
- {"getContents", m_Page_getContents},
- {"__tostring", m_Page__tostring},
- {NULL, NULL} // sentinel
-@@ -2520,7 +2517,7 @@
- if (((PdfDocument *) uin->d)->doc->getXRef()->isOk()) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((PdfDocument *) uin->d)->doc->getDocInfo((Object *) uout->d);
-+ *((Object *) uout->d) = ((PdfDocument *) uin->d)->doc->getDocInfo();
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -2538,7 +2535,7 @@
- if (((PdfDocument *) uin->d)->doc->getXRef()->isOk()) {
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((PdfDocument *) uin->d)->doc->getDocInfoNF((Object *) uout->d);
-+ *((Object *) uout->d) = ((PdfDocument *) uin->d)->doc->getDocInfoNF();
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -2841,7 +2838,7 @@
- uout = new_Object_userdata(L);
- uout->d = new Object();
- origin = (Object *) (((Attribute *) uin->d)->getValue());
-- origin->copy ( ((Object *)uout->d) );
-+ *((Object *) uout->d) = origin->copy();
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -3320,7 +3317,7 @@
- parent = root->findParentElement(i-1);
- if (parent != NULL) {
- uout = new_StructElement_userdata(L);
-- uout->d = new StructElement( *parent );
-+ uout->d = (StructElement *) parent;
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-@@ -3370,7 +3367,7 @@
- gen = luaL_checkint(L, 3);
- uout = new_Object_userdata(L);
- uout->d = new Object();
-- ((XRef *) uin->d)->fetch(num, gen, (Object *) uout->d);
-+ *((Object *) uout->d) = ((XRef *) uin->d)->fetch(num, gen);
- uout->atype = ALLOC_LEPDF;
- uout->pc = uin->pc;
- uout->pd = uin->pd;
-diff -ur source.orig/texk/web2c/luatexdir/lua/lpdfscannerlib.cc source/texk/web2c/luatexdir/lua/lpdfscannerlib.cc
---- source.orig/texk/web2c/luatexdir/lua/lpdfscannerlib.cc 2017-05-08 22:39:36.692708395 +0200
-+++ source/texk/web2c/luatexdir/lua/lpdfscannerlib.cc 2017-09-19 09:48:19.658021769 +0200
-@@ -634,7 +634,7 @@
- int i;
- for (i=0;i<count;i++) {
- Object *val = new Object();
-- arrayref->get(i, val);
-+ *val = arrayref->get(i);
- if (val->isStream()) {
- ObjectList *rover = self->_streams;
- ObjectList *item = (ObjectList *)priv_xmalloc (sizeof(ObjectList));
-diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexdir/pdftoepdf.cc
---- source.orig/texk/web2c/pdftexdir/pdftoepdf.cc 2017-06-16 21:49:09.293857387 +0200
-+++ source/texk/web2c/pdftexdir/pdftoepdf.cc 2017-09-19 09:48:19.661355046 +0200
-@@ -84,31 +84,6 @@
- #define MASK_SUPPRESS_PTEX_PAGENUMBER 0x04
- #define MASK_SUPPRESS_PTEX_INFODICT 0x08
-
--// PdfObject encapsulates the xpdf Object type,
--// and properly frees its resources on destruction.
--// Use obj-> to access members of the Object,
--// and &obj to get a pointer to the object.
--// It is no longer necessary to call Object::free explicitely.
--
--class PdfObject {
-- public:
-- PdfObject() { // nothing
-- } ~PdfObject() {
-- iObject.free();
-- }
-- Object *operator->() {
-- return &iObject;
-- }
-- Object *operator&() {
-- return &iObject;
-- }
-- private: // no copying or assigning
-- PdfObject(const PdfObject &);
-- void operator=(const PdfObject &);
-- public:
-- Object iObject;
--};
--
- // When copying the Resources of the selected page, all objects are copied
- // recusively top-down. Indirect objects however are not fetched during
- // copying, but get a new object number from pdfTeX and then will be
-@@ -212,18 +187,6 @@
- delete pdf_doc;
- }
-
--// Replacement for
--// Object *initDict(Dict *dict1){ initObj(objDict); dict = dict1; return this; }
--
--static void initDictFromDict(PdfObject & obj, Dict * dict)
--{
-- obj->initDict(xref);
-- for (int i = 0, l = dict->getLength(); i < l; i++) {
-- Object obj1;
-- obj->dictAdd(copyString(dict->getKey(i)), dict->getValNF(i, &obj1));
-- }
--}
--
- // --------------------------------------------------------------------
-
- static int addEncoding(GfxFont * gfont)
-@@ -320,10 +283,10 @@
-
- static void copyDictEntry(Object * obj, int i)
- {
-- PdfObject obj1;
-+ Object obj1;
- copyName(obj->dictGetKey(i));
- pdf_puts(" ");
-- obj->dictGetValNF(i, &obj1);
-+ obj1 = obj->dictGetValNF(i);
- copyObject(&obj1);
- pdf_puts("\n");
- }
-@@ -376,17 +339,17 @@
- static void copyProcSet(Object * obj)
- {
- int i, l;
-- PdfObject procset;
-+ Object procset;
- if (!obj->isArray())
- pdftex_fail("PDF inclusion: invalid ProcSet array type <%s>",
- obj->getTypeName());
- pdf_puts("/ProcSet [ ");
- for (i = 0, l = obj->arrayGetLength(); i < l; ++i) {
-- obj->arrayGetNF(i, &procset);
-- if (!procset->isName())
-+ procset = obj->arrayGetNF(i);
-+ if (!procset.isName())
- pdftex_fail("PDF inclusion: invalid ProcSet entry type <%s>",
-- procset->getTypeName());
-- copyName(procset->getName());
-+ procset.getTypeName());
-+ copyName(procset.getName());
- pdf_puts(" ");
- }
- pdf_puts("]\n");
-@@ -394,10 +357,29 @@
-
- #define REPLACE_TYPE1C true
-
-+static bool embeddableFont(Object * fontdesc)
-+{
-+ Object fontfile, ffsubtype;
-+
-+ if (!fontdesc->isDict())
-+ return false;
-+ fontfile = fontdesc->dictLookup("FontFile");
-+ if (fontfile.isStream())
-+ return true;
-+ if (REPLACE_TYPE1C) {
-+ fontfile = fontdesc->dictLookup("FontFile3");
-+ if (!fontfile.isStream())
-+ return false;
-+ ffsubtype = fontfile.streamGetDict()->lookup("Subtype");
-+ return ffsubtype.isName() && !strcmp(ffsubtype.getName(), "Type1C");
-+ }
-+ return false;
-+}
-+
- static void copyFont(char *tag, Object * fontRef)
- {
-- PdfObject fontdict, subtype, basefont, fontdescRef, fontdesc, charset,
-- fontfile, ffsubtype, stemV;
-+ Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset,
-+ stemV;
- GfxFont *gfont;
- fd_entry *fd;
- fm_entry *fontmap;
-@@ -413,33 +395,39 @@
- }
- // Only handle included Type1 (and Type1C) fonts; anything else will be copied.
- // Type1C fonts are replaced by Type1 fonts, if REPLACE_TYPE1C is true.
-- if (!fixedinclusioncopyfont && fontRef->fetch(xref, &fontdict)->isDict()
-- && fontdict->dictLookup("Subtype", &subtype)->isName()
-- && !strcmp(subtype->getName(), "Type1")
-- && fontdict->dictLookup("BaseFont", &basefont)->isName()
-- && fontdict->dictLookupNF("FontDescriptor", &fontdescRef)->isRef()
-- && fontdescRef->fetch(xref, &fontdesc)->isDict()
-- && (fontdesc->dictLookup("FontFile", &fontfile)->isStream()
-- || (REPLACE_TYPE1C
-- && fontdesc->dictLookup("FontFile3", &fontfile)->isStream()
-- && fontfile->streamGetDict()->lookup("Subtype",
-- &ffsubtype)->isName()
-- && !strcmp(ffsubtype->getName(), "Type1C")))
-- && (fontmap = lookup_fontmap(basefont->getName())) != NULL) {
-+ fontdict = fontRef->fetch(xref);
-+ fontdesc = Object(objNull);
-+ if (fontdict.isDict()) {
-+ subtype = fontdict.dictLookup("Subtype");
-+ basefont = fontdict.dictLookup("BaseFont");
-+ fontdescRef = fontdict.dictLookupNF("FontDescriptor");
-+ if (fontdescRef.isRef()) {
-+ fontdesc = fontdescRef.fetch(xref);
-+ }
-+ }
-+ if (!fixedinclusioncopyfont && fontdict.isDict()
-+ && subtype.isName()
-+ && !strcmp(subtype.getName(), "Type1")
-+ && basefont.isName()
-+ && fontdescRef.isRef()
-+ && fontdesc.isDict()
-+ && embeddableFont(&fontdesc)
-+ && (fontmap = lookup_fontmap(basefont.getName())) != NULL) {
- // round /StemV value, since the PDF input is a float
- // (see Font Descriptors in PDF reference), but we only store an
- // integer, since we don't want to change the struct.
-- fontdesc->dictLookup("StemV", &stemV);
-- fd = epdf_create_fontdescriptor(fontmap, zround(stemV->getNum()));
-- if (fontdesc->dictLookup("CharSet", &charset) &&
-- charset->isString() && is_subsetable(fontmap))
-- epdf_mark_glyphs(fd, charset->getString()->getCString());
-+ stemV = fontdesc.dictLookup("StemV");
-+ fd = epdf_create_fontdescriptor(fontmap, zround(stemV.getNum()));
-+ charset = fontdesc.dictLookup("CharSet");
-+ if (!charset.isNull() &&
-+ charset.isString() && is_subsetable(fontmap))
-+ epdf_mark_glyphs(fd, charset.getString()->getCString());
- else
- embed_whole_font(fd);
-- addFontDesc(fontdescRef->getRef(), fd);
-+ addFontDesc(fontdescRef.getRef(), fd);
- copyName(tag);
- gfont = GfxFont::makeFont(xref, tag, fontRef->getRef(),
-- fontdict->getDict());
-+ fontdict.getDict());
- pdf_printf(" %d 0 R ", addFont(fontRef->getRef(), fd,
- addEncoding(gfont)));
- } else {
-@@ -451,24 +439,24 @@
-
- static void copyFontResources(Object * obj)
- {
-- PdfObject fontRef;
-+ Object fontRef;
- int i, l;
- if (!obj->isDict())
- pdftex_fail("PDF inclusion: invalid font resources dict type <%s>",
- obj->getTypeName());
- pdf_puts("/Font << ");
- for (i = 0, l = obj->dictGetLength(); i < l; ++i) {
-- obj->dictGetValNF(i, &fontRef);
-- if (fontRef->isRef())
-+ fontRef = obj->dictGetValNF(i);
-+ if (fontRef.isRef())
- copyFont(obj->dictGetKey(i), &fontRef);
-- else if (fontRef->isDict()) { // some programs generate pdf with embedded font object
-+ else if (fontRef.isDict()) { // some programs generate pdf with embedded font object
- copyName(obj->dictGetKey(i));
- pdf_puts(" ");
- copyObject(&fontRef);
- }
- else
- pdftex_fail("PDF inclusion: invalid font in reference type <%s>",
-- fontRef->getTypeName());
-+ fontRef.getTypeName());
- }
- pdf_puts(">>\n");
- }
-@@ -557,7 +545,7 @@
-
- static void copyObject(Object * obj)
- {
-- PdfObject obj1;
-+ Object obj1;
- int i, l, c;
- Ref ref;
- char *p;
-@@ -601,8 +589,8 @@
- } else if (obj->isArray()) {
- pdf_puts("[");
- for (i = 0, l = obj->arrayGetLength(); i < l; ++i) {
-- obj->arrayGetNF(i, &obj1);
-- if (!obj1->isName())
-+ obj1 = obj->arrayGetNF(i);
-+ if (!obj1.isName())
- pdf_puts(" ");
- copyObject(&obj1);
- }
-@@ -612,9 +600,8 @@
- copyDict(obj);
- pdf_puts(">>");
- } else if (obj->isStream()) {
-- initDictFromDict(obj1, obj->streamGetDict());
- pdf_puts("<<\n");
-- copyDict(&obj1);
-+ copyDict(obj->getStream()->getDictObject());
- pdf_puts(">>\n");
- pdf_puts("stream\n");
- copyStream(obj->getStream()->getUndecodedStream());
-@@ -638,9 +625,8 @@
- InObj *r;
- for (r = inObjList; r != 0; r = r->next) {
- if (!r->written) {
-- Object obj1;
- r->written = 1;
-- xref->fetch(r->ref.num, r->ref.gen, &obj1);
-+ Object obj1 = xref->fetch(r->ref.num, r->ref.gen);
- if (r->type == objFont) {
- assert(!obj1.isStream());
- pdfbeginobj(r->num, 2); // \pdfobjcompresslevel = 2 is for this
-@@ -656,7 +642,6 @@
- pdf_puts("\n");
- pdfendobj();
- }
-- obj1.free();
- }
- }
- }
-@@ -839,8 +824,8 @@
- Page *page;
- Ref *pageRef;
- Dict *pageDict;
-- PdfObject contents, obj1, obj2, pageObj, dictObj;
-- PdfObject groupDict;
-+ Object contents, obj1, obj2, pageObj, dictObj;
-+ Object groupDict;
- bool writeSepGroup = false;
- Object info;
- char *key;
-@@ -867,8 +852,8 @@
- encodingList = 0;
- page = pdf_doc->doc->getCatalog()->getPage(epdf_selected_page);
- pageRef = pdf_doc->doc->getCatalog()->getPageRef(epdf_selected_page);
-- xref->fetch(pageRef->num, pageRef->gen, &pageObj);
-- pageDict = pageObj->getDict();
-+ pageObj = xref->fetch(pageRef->num, pageRef->gen);
-+ pageDict = pageObj.getDict();
- rotate = page->getRotate();
- PDFRectangle *pagebox;
- // write the Page header
-@@ -886,7 +871,7 @@
- pdf_printf("/%s.PageNumber %i\n", pdfkeyprefix, (int) epdf_selected_page);
- }
- if ((suppress_ptex_info & MASK_SUPPRESS_PTEX_INFODICT) == 0) {
-- pdf_doc->doc->getDocInfoNF(&info);
-+ info = pdf_doc->doc->getDocInfoNF();
- if (info.isRef()) {
- // the info dict must be indirect (PDF Ref p. 61)
- pdf_printf("/%s.InfoDict ", pdfkeyprefix);
-@@ -942,14 +927,14 @@
- pdf_puts(stripzeros(s));
-
- // Metadata validity check (as a stream it must be indirect)
-- pageDict->lookupNF("Metadata", &dictObj);
-- if (!dictObj->isNull() && !dictObj->isRef())
-+ dictObj = pageDict->lookupNF("Metadata");
-+ if (!dictObj.isNull() && !dictObj.isRef())
- pdftex_warn("PDF inclusion: /Metadata must be indirect object");
-
- // copy selected items in Page dictionary except Resources & Group
- for (i = 0; pageDictKeys[i] != NULL; i++) {
-- pageDict->lookupNF(pageDictKeys[i], &dictObj);
-- if (!dictObj->isNull()) {
-+ dictObj = pageDict->lookupNF(pageDictKeys[i]);
-+ if (!dictObj.isNull()) {
- pdf_newline();
- pdf_printf("/%s ", pageDictKeys[i]);
- copyObject(&dictObj); // preserves indirection
-@@ -957,8 +942,8 @@
- }
-
- // handle page group
-- pageDict->lookupNF("Group", &dictObj);
-- if (!dictObj->isNull()) {
-+ dictObj = pageDict->lookupNF("Group");
-+ if (!dictObj.isNull()) {
- if (pdfpagegroupval == 0) {
- // another pdf with page group was included earlier on the
- // same page; copy the Group entry as is. See manual for
-@@ -972,11 +957,11 @@
- copyObject(&dictObj);
- } else {
- // write Group dict as a separate object, since the Page dict also refers to it
-- pageDict->lookup("Group", &dictObj);
-- if (!dictObj->isDict())
-+ dictObj = pageDict->lookup("Group");
-+ if (!dictObj.isDict())
- pdftex_fail("PDF inclusion: /Group dict missing");
- writeSepGroup = true;
-- initDictFromDict(groupDict, page->getGroup());
-+ groupDict = Object(page->getGroup());
- pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval);
- }
- }
-@@ -989,14 +974,14 @@
- pdftex_warn
- ("PDF inclusion: /Resources missing. 'This practice is not recommended' (PDF Ref)");
- } else {
-- initDictFromDict(obj1, page->getResourceDict());
-+ Object *obj1 = page->getResourceDictObject();
- if (!obj1->isDict())
- pdftex_fail("PDF inclusion: invalid resources dict type <%s>",
- obj1->getTypeName());
- pdf_newline();
- pdf_puts("/Resources <<\n");
- for (i = 0, l = obj1->dictGetLength(); i < l; ++i) {
-- obj1->dictGetVal(i, &obj2);
-+ obj2 = obj1->dictGetVal(i);
- key = obj1->dictGetKey(i);
- if (strcmp("Font", key) == 0)
- copyFontResources(&obj2);
-@@ -1009,8 +994,8 @@
- }
-
- // write the page contents
-- page->getContents(&contents);
-- if (contents->isStream()) {
-+ contents = page->getContents();
-+ if (contents.isStream()) {
-
- // Variant A: get stream and recompress under control
- // of \pdfcompresslevel
-@@ -1021,36 +1006,35 @@
-
- // Variant B: copy stream without recompressing
- //
-- contents->streamGetDict()->lookup("F", &obj1);
-- if (!obj1->isNull()) {
-+ obj1 = contents.streamGetDict()->lookup("F");
-+ if (!obj1.isNull()) {
- pdftex_fail("PDF inclusion: Unsupported external stream");
- }
-- contents->streamGetDict()->lookup("Length", &obj1);
-- assert(!obj1->isNull());
-+ obj1 = contents.streamGetDict()->lookup("Length");
-+ assert(!obj1.isNull());
- pdf_puts("/Length ");
- copyObject(&obj1);
- pdf_puts("\n");
-- contents->streamGetDict()->lookup("Filter", &obj1);
-- if (!obj1->isNull()) {
-+ obj1 = contents.streamGetDict()->lookup("Filter");
-+ if (!obj1.isNull()) {
- pdf_puts("/Filter ");
- copyObject(&obj1);
- pdf_puts("\n");
-- contents->streamGetDict()->lookup("DecodeParms", &obj1);
-- if (!obj1->isNull()) {
-+ obj1 = contents.streamGetDict()->lookup("DecodeParms");
-+ if (!obj1.isNull()) {
- pdf_puts("/DecodeParms ");
- copyObject(&obj1);
- pdf_puts("\n");
- }
- }
- pdf_puts(">>\nstream\n");
-- copyStream(contents->getStream()->getUndecodedStream());
-+ copyStream(contents.getStream()->getUndecodedStream());
- pdfendstream();
-- } else if (contents->isArray()) {
-+ } else if (contents.isArray()) {
- pdfbeginstream();
-- for (i = 0, l = contents->arrayGetLength(); i < l; ++i) {
-- Object contentsobj;
-- copyStream((contents->arrayGet(i, &contentsobj))->getStream());
-- contentsobj.free();
-+ for (i = 0, l = contents.arrayGetLength(); i < l; ++i) {
-+ Object contentsobj = contents.arrayGet(i);
-+ copyStream(contentsobj.getStream());
- if (i < l - 1)
- pdf_newline(); // add a newline after each stream except the last
- }
-diff -ur source.orig/texk/web2c/pdftexdir/pdftosrc.cc source/texk/web2c/pdftexdir/pdftosrc.cc
---- source.orig/texk/web2c/pdftexdir/pdftosrc.cc 2017-06-16 21:49:09.297190679 +0200
-+++ source/texk/web2c/pdftexdir/pdftosrc.cc 2017-09-19 09:48:19.661355046 +0200
-@@ -86,22 +86,20 @@
- objgen = atoi(argv[3]);
- }
- xref = doc->getXRef();
-- catalogDict.initNull();
-- xref->getCatalog(&catalogDict);
-+ catalogDict = xref->getCatalog();
- if (!catalogDict.isDict("Catalog")) {
- fprintf(stderr, "No Catalog found\n");
- exit(1);
- }
-- srcStream.initNull();
-+ srcStream = Object(objNull);
- if (objnum == 0) {
-- catalogDict.dictLookup("SourceObject", &srcStream);
-+ srcStream = catalogDict.dictLookup("SourceObject");
- static char const_SourceFile[] = "SourceFile";
- if (!srcStream.isStream(const_SourceFile)) {
- fprintf(stderr, "No SourceObject found\n");
- exit(1);
- }
-- srcName.initNull();
-- srcStream.getStream()->getDict()->lookup("SourceName", &srcName);
-+ srcName = srcStream.getStream()->getDict()->lookup("SourceName");
- if (!srcName.isString()) {
- fprintf(stderr, "No SourceName found\n");
- exit(1);
-@@ -110,7 +108,7 @@
- // We cannot free srcName, as objname shares its string.
- // srcName.free();
- } else if (objnum > 0) {
-- xref->fetch(objnum, objgen, &srcStream);
-+ srcStream = xref->fetch(objnum, objgen);
- if (!srcStream.isStream()) {
- fprintf(stderr, "Not a Stream object\n");
- exit(1);
-@@ -159,29 +157,26 @@
- int localOffset = 0;
- Guint firstOffset;
-
-- assert(xref->fetch(e->offset, 0, &objStr)->isStream());
-- nObjects = objStr.streamGetDict()->lookup("N", &obj1)->getInt();
-- obj1.free();
-- first = objStr.streamGetDict()->lookup("First", &obj1)->getInt();
-- obj1.free();
-+ objStr = xref->fetch(e->offset, 0);
-+ assert(objStr.isStream());
-+ obj1 = objStr.streamGetDict()->lookup("N");
-+ nObjects = obj1.getInt();
-+ obj1 = objStr.streamGetDict()->lookup("First");
-+ first = obj1.getInt();
- firstOffset = objStr.getStream()->getBaseStream()->getStart() + first;
-
- // parse the header: object numbers and offsets
- objStr.streamReset();
-- obj1.initNull();
-- str = new EmbedStream(objStr.getStream(), &obj1, gTrue, first);
-+ str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first);
- parser = new Parser(xref, new Lexer(xref, str), gFalse);
- for (n = 0; n < nObjects; ++n) {
-- parser->getObj(&obj1);
-- parser->getObj(&obj2);
-+ obj1 = parser->getObj();
-+ obj2 = parser->getObj();
- if (n == e->gen)
- localOffset = obj2.getInt();
-- obj1.free();
-- obj2.free();
- }
- while (str->getChar() != EOF) ;
- delete parser;
-- objStr.free();
-
- fprintf(outfile, "%.10lu 00000 n\n",
- (long unsigned)(firstOffset + localOffset));
-@@ -192,7 +187,6 @@
- s->reset();
- while ((c = s->getChar()) != EOF)
- fputc(c, outfile);
-- srcStream.free();
- }
- if (objnum == 0)
- fprintf(stderr, "Source file extracted to %s\n", outname);
-@@ -201,7 +195,6 @@
- else
- fprintf(stderr, "Cross-reference table extracted to %s\n", outname);
- fclose(outfile);
-- catalogDict.free();
- delete doc;
- delete globalParams;
- }
diff --git a/office/texlive/prep/dump.unused.internal.libraries.from.sources.sh b/office/texlive/prep/dump.unused.internal.libraries.from.sources.sh
deleted file mode 100644
index 71ab0b53db..0000000000
--- a/office/texlive/prep/dump.unused.internal.libraries.from.sources.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-# Repacks the texlive tarball to remove unused sources.
-
-VERSION=${VERSION:-$(echo texlive-*source.tar.?z* | rev | cut -f 2 -d - | cut -f 1 -d - | rev)}
-
-tar xf texlive-${VERSION}-source.tar.xz || exit 1
-mv texlive-${VERSION}-source.tar.xz texlive-${VERSION}-source.tar.xz.orig
-( cd texlive-${VERSION}-source/libs && rm -rf cairo freetype2 gd gmp mpfr icu libpng pixman zlib )
-( cd texlive-${VERSION}-source/utils && rm -rf asymptote )
-tar cf texlive-${VERSION}-source.tar texlive-${VERSION}-source
-rm -r texlive-${VERSION}-source
-#xz -9 texlive-${VERSION}-source.tar
-xz texlive-${VERSION}-source.tar
-touch -r texlive-${VERSION}-source.tar.xz.orig texlive-${VERSION}-source.tar.xz
-rm texlive-${VERSION}-source.tar.xz.orig
diff --git a/office/texlive/prep/texmf_get.sh b/office/texlive/prep/texmf_get.sh
deleted file mode 100644
index 7d7c37d2d2..0000000000
--- a/office/texlive/prep/texmf_get.sh
+++ /dev/null
@@ -1,1054 +0,0 @@
-#!/bin/bash
-
-# texmf_get.sh (c) 2016-2018 Johannes Schoepfer, Germany, slackbuilds[at]schoepfer[dot]info
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# V 15.0.0
-#
-# Prepare xz-compressed tarballs of texlive-texmf-trees based on texlive.tlpdb
-# This script takes care of dependencies(as far as these are present in texlive.tlpdb)
-# of collections and packages, and that every texlive-package is included only once.
-# The editions(base/extra/docs) should contain no binaries(exception biber)
-# -base: the most usefull stuff, most binaries/scripts,
-# manpages for compiled binaries 65mb 2017-11-07
-# -docs: -base documentation only, no manpages/GNU infofiles
-# -extra: remaining stuff
-#
-# texlive netarchive policy: Every package is included as dependency
-# in exactly one collection. A package may have dependencies on other
-# packages from any collection.
-
-# package source: http://mirror.ctan.org/systems/texlive/tlnet/archive/
-
-#set -e
-MAJORVERSION=2018
-
-# -excluded packages, which are
-# -useless without tlmgr-installer
-# -non-linux
-# -covered by an external package e.g. asymptote on SBo
-# -obsolete
-# -binaries provided already by texlive.Slackbuild
-# -does only contain sources, or hyphen directives, e.g. metatype1, patch, ...
-# -does only contain hyphen directives, e.g. hyphen-farsi ...
-
-global_exclude="
- hyphen-farsi
- hyphen-arabic
- asymptote
- tlcockpit
- tlshell
- texlive.infra
- texlive-docindex
- texlive-scripts
- texlive-msg-translations
- texosquery
- texliveonfly
- texworks
- aleph
- omega
- antomega
- omegaware
- lambda
- otibet
- ocherokee
- oinuit
- cslatex
- bibarts
- metatype1
- patch
- wintools.win32
- dviout.win32
- "
-
- # special packages, move their type1 fonts(if metfonts are present)
- # and/or docs to -extra
-special_packages="
- koma-script
- velthuis
- armtex
- montex
- vntex
- pl
- cc-pl
- cs
- musixtex-fonts
- tipa
- cbfonts
- ptex-fonts
- uptex-fonts
- "
-#Todo: split type1 fonts, or keep subset of type1 fonts in base
-# cm-super
-
-# keep precompiled binaries, list binary, not package name
-keep_precompiled="
- biber
- "
-
-texmf_editions () {
-
- # "excludes from -base", also dependencies are excluded
- PACKAGES="
- cm-super
- biber
- bib2gls
- knitting
- pgfornament
- pgfplots
- pst-cox
- pst-poker
- pst-vectorian
- pst-geo
- bclogo
- $(grep ^"name .*biblatex" $db | cut -d' ' -f2 )
- " texmfget extra || exit 1
-
- # packages/collections and their dependencies for -base
- PACKAGES="
- $(cat $corepackages)
- etoolbox
- xcolor
- memoir
- velthuis
- wasy
- ptex
- platex
- revtex
- uptex
- uplatex
- collection-basic
- collection-latex
- collection-metapost
- collection-plaingeneric
- collection-luatex
- collection-context
- collection-fontutils
- collection-langczechslovak
- collection-langeuropean
- collection-langenglish
- collection-langfrench
- collection-langitalian
- collection-langpolish
- collection-langportuguese
- collection-langspanish
- collection-latexrecommended
- $(collection_by_size fontsextra 70000 || exit 1)
- $(collection_by_size publishers 10000 || exit 1)
- " texmfget base
-
- # packages/collections and their dependencies for -extra
- PACKAGES="
- amiri
- arabi
- arabi-add
- arara
- arev
- bangorcsthesis
- beamer2thesis
- beamertheme-detlevcm
- beamertheme-epyt
- beamertheme-saintpetersburg
- beebe
- bhcexam
- bxtexlogo
- churchslavonic
- collection-fontsextra
- collection-langchinese
- collection-langcjk
- collection-langjapanese
- collection-langkorean
- collection-publishers
- collection-texworks
- collection-wintools
- ctan-o-mat
- ctanify
- ctanupload
- dad
- ethiop-t1
- fibeamer
- fithesis
- ghsystem
- gregoriotex
- hustthesis
- ijsra
- iwhdp
- jpsj
- kerkis
- ketcindy
- kpfonts
- langsci
- latex2nemeth
- libertine
- lilyglyphs
- lni
- luatexko
- media9
- musuos
- mwe
- newtx
- nwejm
- padauk
- pdfwin
- pdfx
- powerdot-tuliplab
- powerdot-FUBerlin
- quran
- resumecls
- sanskrit-t1
- sapthesis
- sduthesis
- seuthesix
- simurgh
- skaknew
- stellenbosch
- suanpan
- tudscr
- uantwerpendocs
- ucs
- udesoftec
- universalis
- uowthesis
- wasy2-ps
- xduthesis
- xetexko
- xq
- " texmfget extra || exit 1
-
- # What's left, for base again
- PACKAGES="
- collection-fontsrecommended
- collection-xetex
- collection-langcyrillic
- collection-langarabic
- collection-langgerman
- collection-langgreek
- collection-langother
- collection-humanities
- collection-mathscience
- collection-pictures
- collection-pstricks
- collection-music
- collection-games
- collection-binextra
- collection-bibtexextra
- collection-formatsextra
- collection-latexextra
- " texmfget base || exit 1
-
-}
-
-# ==== Nothing to edit beyond this line ====
-
-usage () {
- echo
- echo "Generate texmf trees/editions based on collections/packages"
- echo "and their (hard)dependencies."
- echo "./texmf_get.sh [base|docs|extra|lint]"
- echo
- echo "-base: texfiles, no docs"
- echo "-docs: docs of -base"
- echo "-extra: remaining texfiles and docs"
- echo "[lint]: compare filename contents of all generated editions,"
- echo " to detect overlapping files"
- echo
- echo "Only new/updated/missing tex packages are downloaded."
- echo "The first run takes \"long\", tex packages(about 2500Mb)"
- echo "need to be downloaded."
- echo "To check out a new version/release, delete"
- echo "$db"
- echo "A new ascii index file/database(texlive.tlpdb) is will be"
- echo "pulled on the next run, and a new version yymmdd will be set."
- echo
- echo "All generated tarballs, logs etc. are going to"
- echo "$TMP"
- echo
-}
-
-collection_by_size () {
- # from collection $1, pull packages smaller $2 bytes
- start_n="$(grep -n ^"name collection-$1"$ $db | cut -d':' -f1)"
- # find end of package/collection
- for emptyline in $emptylines
- do
- if [ "$emptyline" -gt "$start_n" ]
- then
- end_n=$emptyline
- break
- fi
- done
- extrapackages="$(sed "${start_n},${end_n}!d" $db | grep ^"depend " | grep -v ^"depend collection" | sed "s/^depend//g" )"
-
- # add if smaller than ...
- for checksize in $extrapackages
- do
- package_meta $checksize || exit 1
- size=$(grep ^"containersize " $texmf/$checksize.meta | cut -d' ' -f2)
- # for $2, e.g. 3000 means 3kb
- [ $size -lt $2 ] && echo $checksize
- done
-}
-
-package_meta () {
- if [ ! -s "$texmf/$1.meta" ]
- then
- # collection start linenumer
- start_n="$(grep -n ^"name ${1}"$ $db | cut -d':' -f1)"
- [ -z "$start_n" ] && echo "$1 was not found in $db, bye." && exit 1
- # find end of package/collection
- for emptyline in $emptylines
- do
- if [ "$emptyline" -gt "$start_n" ]
- then
- end_n=$emptyline
- break
- fi
- done
- # Don't handle collections as dependency of other collections
- sed "${start_n},${end_n}!d;/^depend collection/d" $db > $texmf/$1.meta
- fi
-}
-
-download () {
- # Download packages, if not already available. Not every packages has a corresponding .doc package.
- # Try three times if package isn't present, with -t1 to get another mirror the second time
- cd $texmf
- if [ ! -s "${1}${flavour}.tar.xz" ]
- then
- for run in {1..10}
- do
- wget -t1 -c ${mirror}archive/${1}${flavour}.tar.xz
- [ -s "${1}${flavour}.tar.xz" ] && break
- done
- fi
- # If no success by downloading, write error log
- [ ! -s ${1}${flavour}.tar.xz ] && echo "Downloading ${1}${flavour}.tar.xz did not work, writing to $errorlog" && echo "$VERSION" >> $errorlog && echo "Error downloading ${1}${flavour}.tar.xz" >> $errorlog && exit 1
-
- # check sha512, give three tries for downloading again(diffrent mirrors are used automatically)
- if [ "$flavour" = ".doc" ]
- then
- sha512="$(grep ^doccontainerchecksum $texmf/$1.meta | cut -d' ' -f2 )"
- else
- sha512="$(grep ^containerchecksum $texmf/$1.meta | cut -d' ' -f2 )"
- fi
-
- for run in {1..10}
- do
- if [ "$(sha512sum ${1}${flavour}.tar.xz | cut -d' ' -f1 )" != "$sha512" ]
- then
- # Download (hopefully) newer file
- rm ${1}${flavour}.tar.xz
- wget -t1 -c ${mirror}archive/${1}${flavour}.tar.xz
- else
- break
- fi
- done
- # check sha512 again, exit if it fails
- if [ "$(sha512sum ${1}${flavour}.tar.xz | cut -d' ' -f1 )" != "$sha512" ]
- then
- echo "sha512sum $(sha512sum ${1}${flavour}.tar.xz | cut -d' ' -f1 ) of"
- echo "${package}${flavour}.tar.xz doesn't match with $db"
- # delete metafile on failure to get generated again on next run, where new $db may be in use
- rm $texmf/$1.meta
- echo "sha512sum $sha512"
- echo "Delete ${db}* to be current again, and try again."
- exit 1
- fi
-}
-
-untar () {
- # leave if $1 has no content
- if [ -s "$1" ]
- then
- while read package
- do
- echo "untar $package"
- # untar all packages, check for relocation, "relocate 1" -> untar in texmf-dist
- download $package || exit 1
- # untar the tex package, relocate to texmf-dist if necessary, binpackages always need relocation
- relocated='.'
- [ -n "$(grep -w ^"relocated 1" $texmf/$package.meta)" -o -n "$(grep ^"binfiles " $texmf/$package.meta)" ] && relocated="texmf-dist"
- # if not .doc package, investigate files for dependencies/provides
- if [ -n "$flavour" ]
- then
- tar xf ${package}${flavour}.tar.xz --exclude tlpkg -C $relocated || exit 1
- else
- #tar vxf ${package}${flavour}.tar.xz --exclude tlpkg -C $relocated
- tar vxf ${package}${flavour}.tar.xz --exclude tlpkg -C $relocated | egrep '\.sty$|\.bbx$|\.cls$' > $texmf/$package.deps
- if [ -n "$texmf/$package.deps" ]
- then
- unset provide
- unset depends
- for depfile in $(cat $texmf/$package.deps)
- do
- filename="$( echo $depfile | rev | cut -d'.' -f2- | cut -d'/' -f1 | rev)"
- # always add $filename as "ProvidesPackage", if it's a .sty
- echo $depfile | grep '\.sty'$ &>/dev/null
- [ $? = 0 ] && provide+="${filename},"
- # remove comments, if there are backslashes ignore that content, except it is \filename
- #provide+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -n "s/.*\\\ProvidesPackage{\([^}]*\)}.*/\1/p" | sed "s/\\\filename/$filename/g;/\\\/d" | sort -u | tr '\n' ',')"
- #sed -z "s/.*\\\Provides\(Package\|ExplPackage\|File\|Class\)*.\n//g" | sed "s/[[:space:]]//
- #provide+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -z "s/.*\\\Provides\(Package\|ExplPackage\|File\|Class\)*.\n//g" | sed "s/[[:space:]]// | sed -n "s/.*\\\Provides\(Package\|ExplPackage\|File\|Class\){\([^}]*\)}.*/\2/p" | sed "s/\\\filename/$filename/g;s/\\\ExplFileName/$filename/g;/\\\/d" | sed "s/\(\.sty$\|\.cls$\)//g" | sort -u | tr '\n' ',')"
- provide+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -z "s/\(Package\|ExplPackage\|File\|Class\)\n/\1/g" | sed "s/[[:space:]]//" | sed -n "s/.*\\\Provides\(Package\|ExplPackage\|File\|Class\){\([^}]*\)}.*/\2/p" | sed "s/\\\filename/$filename/g;s/\\\ExplFileName/$filename/g" | sed "s/\(\.sty$\|\.cls$\)//g" | sort -u | tr '\n' ',')"
- #depends+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -n "s/.*\(\\\require\|\\\use\)package{\([^}]*\)}.*/\2/p" | sed "/\\\/d" | sort -u | tr '\n' ',')"
- depends+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -n "s/.*\(\\\require\|\\\use\)package{\([^}]*\)}.*/\2/p" | sort -u | tr '\n' ',')"
- #depends+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -n "s/.*\\\\(require\|use\)package{\([^}]*\)}.*/\2/p" | sed "/\\\/d" | sort -u | tr '\n' ',')"
- done
- if [ -n "$provide" ]
- then
- #echo "$package $provide | sort -u | tr '\n' ',' " >> $TMP/provides.run.$edition
- echo "$package $provide" >> $TMP/provides.run.$edition
- fi
- if [ -n "$depends" ]
- then
- echo "$package $depends" >> $TMP/depends.run.$edition
- fi
- fi
- fi
-
- # Check for binaries, delete them as these should be provided
- # by texlive.Slackbuild, keep symlinks and scripts
-
- unset binaries
- unset scripts
- for arch in $platforms
- do
- if [ -d $texmf/texmf-dist/bin/$arch ]
- then
- [ ! -d $texmf/texmf-dist/linked_scripts ] \
- && mkdir $texmf/texmf-dist/linked_scripts
- # rewrite link target to fit systemwide installation
- for link in $(find $texmf/texmf-dist/bin/$arch -type l)
- do
- ln -sf $(readlink $link | sed "s/^..\/..\(.*\)/..\/share\1/" ) $link || exit 1
- done
- # move symlinks/scripts to linked_scripts
- find $texmf/texmf-dist/bin/$arch -type l -exec mv '{}' $texmf/texmf-dist/linked_scripts/ \;
-
- binaries="$(find $texmf/texmf-dist/bin/$arch -type f -exec file '{}' + | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : )"
- for bin in $binaries
- do
- # keep binaries of special packages
- for binary in $keep_precompiled
- do
- if [ "$(echo $bin | rev | cut -d'/' -f1 | rev )" != "$binary" ]
- then
- rm $bin
- echo $bin | rev | cut -d'/' -f1 | rev >> $binary_removed.$edition
- fi
- done
- done
- # move scripts to linked-scripts
- scripts="$(find $texmf/texmf-dist/bin/$arch -type f -exec file '{}' + | grep -wv ELF | cut -f 1 -d : )"
- for script in $scripts
- do
- mv $script $texmf/texmf-dist/linked_scripts/
- done
- fi
- done
-
- if [ "$flavour" = ".doc" ]
- then
- size=$(grep ^doccontainersize $texmf/$package.meta | cut -d' ' -f2)
- else
- size=$(grep ^containersize $texmf/$package.meta | cut -d' ' -f2)
- fi
- shortdesc="$(grep ^shortdesc $texmf/$package.meta | cut -d' ' -f2- )"
- echo "$size byte, $package$flavour: $shortdesc" >> $output.meta
- # make index of uncompressed size of each package
- echo "$(xz -l --verbose ${package}${flavour}.tar.xz | grep "Uncompressed size" | cut -d'(' -f2 | cut -d' ' -f1 ) byte, $package$flavour: $shortdesc" >> $output.meta.uncompressed
- done < $1
-
- # copy packages index to texmf-dist, so included packages are known in later installation
- # don't list binary packages, as the binaries itself are not contained, only the symlinks.
- cat $output.meta | grep -v '\-linux:' >> $output.$edition.meta
- cat $output.meta.uncompressed | grep -v '\-linux:' >> $output.$edition.meta.uncompressed
-
- # cleanup
- [ -f $output.meta ] && rm $output.meta
- [ -f $output.meta.uncompressed ] && rm $output.meta.uncompressed
- fi
-}
-
-remove_cruft () {
- # Remove m$-stuff, ConTeXt single-user-system stuff, source leftovers and pdf-versions of manpages
- rm -rf texmf-dist/source
- rm -rf texmf-dist/scripts/context/stubs/source/
- find texmf-dist/ -type d -name 'win32' -exec rm -rf {} +
- find texmf-dist/ -type d -name 'win64' -exec rm -rf {} +
- find texmf-dist/ -type d -name 'mswin' -exec rm -rf {} +
- find texmf-dist/ -type d -name 'win' -exec rm -rf {} +
- find texmf-dist/ -type d -name 'setup' -exec rm -rf {} +
- find texmf-dist/ -type d -name 'install' -exec rm -rf {} +
- find texmf-dist/ -type f -name 'uninstall*.sh' -delete
- find texmf-dist/ -type f -name '*.bat' -delete
- find texmf-dist/ -type f -name '*.bat.w95' -delete
- find texmf-dist/ -type f -name '*win32*' -delete
- find texmf-dist/ -type f -name 'winansi*' -delete
- find texmf-dist/ -type f -name '*man1.pdf' -delete
- find texmf-dist/ -type f -name '*man5.pdf' -delete
- # Remove zero-length files, as these appear e.g. in hyph-utf8 tex-package.
- # find texmf-dist/ -type f -size 0c -delete
- find texmf-dist/ -type f -empty -delete
- # Remove empty directories recursively
- find texmf-dist/ -type d -empty -delete
-}
-
-texmfget () {
- # make sure no package is added more than once.
- echo "Preparing index of packages to be added to -${1} ..."
- echo "$PACKAGES" | sed "s/[[:space:]]//g;/^$/d" > $collections_tobedone
- # Remove outputfile if already present
- >$output
- >$output_doc
-
- # Only do something if $collection wasn't already done before
- while [ -s $collections_tobedone ]
- do
- collection=$(tail -n1 $collections_tobedone)
-
- # continue with next collection if collection was already done
- if [ -s "$collections_done" ]
- then
- grep -w "^${collection}$" $collections_done &> /dev/null
- if [ $? = 0 ]
- then
- # remove from $collections_tobedone
- sed -i "/^$collection$/d" $collections_tobedone
- if [ -n "$(grep "^${collection} added to" $logfile)" ]
- then
- echo "$collection already added " >> $logfile
- fi
- continue
- fi
- fi
-
- package_meta $collection || exit 1
-
- # If $collection is a singel package(not a collection-), add it here
- if [ -n "$(head -n1 $texmf/$collection.meta | fgrep -v "name collection" )" ]
- then
- addpackage=no
- # if package contains docs, add to docpackages
- if [ -n "$(grep ^docfiles $texmf/$collection.meta)" ]
- then
- echo "$collection" >> $output_doc
- echo "$collection added to docs $1" >> $logfile
- addpackage=yes
- fi
- if [ -n "$(grep ^runfiles $texmf/$collection.meta)" -o -n "$(grep ^binfiles $texmf/$collection.meta)" ]
- then
- echo "$collection" >> $output
- echo "$collection added to -$1" >> $logfile
- addpackage=yes
- fi
- # very package should be added to one edition, abort if that didn't work
- if [ $addpackage = no ]
- then
- echo "$collection doesn't contain any docfiles/runfiles/binfiles"
- echo "Please exclude package/report to upstream mailinglist tex-live@tug.org, bye."
- exit 1
- fi
- fi
-
- # Don't handle collections as dependency of other collections, as this destroys control over what packages to be added
- # add dependend packages, but no binary(ARCH) and no packages conataining a '.'. Packges with dot indicate binary/texlive-manager/windows packages
-
- grep ^"depend " $texmf/$collection.meta | cut -d' ' -f2- > $dependencies
-
- if [ -s "$dependencies" ]
- then
- # check for .ARCH packages which may be binaries, scripts or links
- # Binaries should all come from the sourcebuild(exception biber)
- for dependency in $(cat $dependencies)
- do
- echo $dependency | grep '\.ARCH'$ &>/dev/null
- if [ $? = 0 ]
- then
- for arch in $platforms
- do
- archpackage="$(echo $dependency | sed "s/\.ARCH$/\.$arch/")"
- grep ^"name $archpackage"$ $db &>/dev/null && echo "$archpackage" >> $dependencies.verified_arch
- done
- else
- echo $dependency >> $dependencies.verified_arch
- fi
- done
- if [ -f $dependencies.verified_arch ]
- then
- mv $dependencies.verified_arch $dependencies
- else
- rm $dependencies
- fi
- fi
-
- if [ -s "$dependencies" ]
- then
- echo "----------------" >> $logfile
- echo "Dependencies of $collection: $(cat $dependencies | tr '\n' ' ')" >> $logfile
- for dependency in $(cat $dependencies)
- do
- if [ -n "$(grep ^"${dependency}"$ $collections_done)" ]
- then
- sed -i "/^${dependency}$/d" $dependencies
- continue
- else
- for exclude in $global_exclude
- do
- if [ "$exclude" = "$dependency" ]
- then
- sed -i "/^${exclude}$/d" $dependencies
- echo "$exclude excluded, see \$global_exclude" >> $logfile
- fi
- done
- fi
- done
- cat $dependencies >> $collections_tobedone
- echo "----------------" >> $logfile
- fi
-
- sed -i "/^${collection}$/d" $collections_tobedone
- echo "$collection" >> $collections_done
- done
- # handle package index list per edition
- cat $output >> $TMP/packages.$1
- # handle doc package index, one for each edition
- cat $output_doc >> $TMP/packages.$1.doc
-
- # untar only one $edition, untar docs together with -extra edition
- if [ "$1" = $edition -o docs = $edition ]
- then
- cd $texmf
-
- # Cleanup tar-directory
- [ -d $texmf/texmf-dist ] && rm -rf $texmf/texmf-dist
- mkdir $texmf/texmf-dist
-
- # Make tarball/checksum reproducible by setting mtime(clamp-mtime), owner, group and sort content
- # --clamp-mtime --mtime doesn't work with tar 1.13, when makepkg creates the tarball:
- # tar-1.13: time_t value 9223372036854775808 too large (max=68719476735)
- echo "Adding files to $( echo $tarball | rev | cut -d'/' -f1 | rev ) ..."
- case $edition in
- base)
- unset flavour
- untar $output || exit 1
- remove_cruft || exit 1
- tar rf $tarball --owner=0 --group=0 --sort=name texmf-dist || exit 1
- rm -rf texmf-dist
- ;;
- extra)
- unset flavour
- untar $output || exit 1
- export flavour=".doc"
- untar $output_doc || exit 1
- remove_cruft || exit 1
- #tar vrf $tarball --clamp-mtime --mtime --owner=0 --group=0 --sort=name texmf-dist || exit 1
- tar rf $tarball --owner=0 --group=0 --sort=name texmf-dist || exit 1
- rm -rf texmf-dist
- ;;
- docs)
- export flavour=".doc"
- # only add -base docs to -docs
- if [ $1 = base ]
- then
- untar $output_doc || exit 1
- remove_cruft || exit 1
- #tar vrf $tarball --clamp-mtime --mtime --owner=0 --group=0 --sort=name texmf-dist || exit 1
- tar rf $tarball --owner=0 --group=0 --sort=name texmf-dist || exit 1
- rm -rf texmf-dist
- fi
- ;;
- esac
- fi
-}
-
-lint () {
-
-echo "Comparing content of all editions, this may take a while ...";
-cd $TMP
-# check if all editions of same VERSION are there, take -base as reference
-lint_version=$( ls texlive-base-*tar.xz | head -n1 | cut -d'.' -f2 || exit 1)
-if [ -s texlive-extra-$MAJORVERSION.$lint_version.tar.xz \
- -a -s texlive-docs-$MAJORVERSION.$lint_version.tar.xz ]
-then
- for edition in base extra docs
- do
- echo "Extracting index of texlive-${edition}-$MAJORVERSION.$lint_version.tar.xz ..."
- # don't list directories
- tar tf texlive-${edition}-$MAJORVERSION.$lint_version.tar.xz | grep -v '/'$ > $TMP/packages.$edition.lint
- done
-
- # compare content
- for edition in base extra docs
- do
- >$TMP/packages.$edition.lint.dup
- case $edition in
- base)
- echo "check if files of base are present in another edition"
- while read line
- do
- grep ^"$line"$ $TMP/packages.extra.lint >> $TMP/packages.base.lint.dup
- grep ^"$line"$ $TMP/packages.docs.lint >> $TMP/packages.base.lint.dup
- done < $TMP/packages.$edition.lint
- ;;
- esac
- done
-else
- echo "Not all editions are present to lint them. Create them first by"
- echo "$0 [base|docs|extra]"
- echo "bye."
- exit 1
-fi
-
-exit 0
-
-}
-
-# Main
-
-# release mirror
-mirror="http://mirror.ctan.org/systems/texlive/tlnet/"
-# pre-test mirror 2016
-# mirror="http://ftp.cstug.cz/pub/tex/local/tlpretest/"
-LANG=C
-TMP=$PWD/tmp
-output=$TMP/packages
-output_doc=$TMP/packages.doc.tmp
-errorlog=$TMP/error.log
-texmf=$TMP/texmf
-db=$TMP/texlive.tlpdb
-tmpfile=$TMP/tmpfile
-collections_done=$TMP/done
-collections_tobedone=$TMP/tobedone
-corepackages=$TMP/corepackages
-allcollections=$TMP/allcollections
-binary_removed=$TMP/binaries.removed
-manpages=$TMP/manpages
-dependencies=$TMP/deps
-packages_base=$TMP/packages.base
-packages_extra=$TMP/packages.extra
-packages_manpages=$TMP/packages.manpages
-files_split=$TMP/files.split
-platforms="x86_64-linux i386-linux"
-
-mkdir -p $texmf
-cd $TMP
-
-case "$1" in
- base|docs|extra) edition=$1;;
- lint) lint ;;
- *) usage; exit 0 ;;
-esac
-
-echo "Building $edition tarball ..."
-
-# Set VERSION, get texlive.tlpdb and keep unshorten $db.orig
-if [ ! -s ${db}.orig -o ! -s $db -o ! -s VERSION ]
-then
- echo $MAJORVERSION.$(date +%y%m%d) > VERSION
- wget -c -O ${db}.orig ${mirror}tlpkg/texlive.tlpdb
- # remove most content from $db to be faster on later processing.
- # keep dependencies/manpages/binfiles/shortdesc/sizes
- egrep \
- '^\S|^ RELOC/doc/man|^ texmf-dist/doc/man/man|^ RELOC/doc/info/|^ texmf-dist/doc/info/|^ bin|^$' \
- ${db}.orig | grep -v ^longdesc > $db
-
- # As $db (might be)/is new, remove the meta-files, might created again with (pontentionally) new content
- rm -rf $texmf/*.meta
-fi
-
-# Get linenumbers of empty lines from $db
-emptylines="$(grep -n ^$ $db | cut -d':' -f1)"
-
-# Provide TLCore packages for -base, as these packages(and their dependencies) should be present in any case.
-grep -B1 ^'category TLCore' $db | grep -v ^'category TLCore' | grep -v ^-- | grep -v '\.' | cut -d' ' -f2 > $corepackages
-
-# Make a list of all collections
-grep ^"name collection-" $db | cut -d' ' -f2 > $allcollections
-
-# translate .ARCH to platforms in excludes, to make .ARCH packages excludeable by $global_exclude
-for exclude in $global_exclude
-do
- if [ -n "$(echo $exclude | grep '\.ARCH'$ )" ]
- then
- for arch in $platforms
- do
- global_exclude+=" $(echo $exclude | sed "s/\.ARCH$/\.$arch/")"
- done
- global_exclude=${global_exclude/$exclude/}
- fi
-done
-# globally exclude from $corepackages
-for exclude in $global_exclude
-do
- sed -i "/^${exclude}$/d" $corepackages
-done
-
-VERSION=$(cat $TMP/VERSION)
-tarball=$TMP/texlive-$edition-$VERSION.tar
-# set logfile
-logfile=$TMP/$VERSION.log
-
-# reset some files
->$logfile
->$tarball
->$collections_done
->$files_split
->$manpages
->$packages_manpages
->$packages_base
->$packages_extra
->$packages_base.doc
->$packages_extra.doc
->$TMP/packages.$edition.meta
->$TMP/packages.$edition.meta.uncompressed
->$TMP/provides.run.$edition
->$TMP/depends.run.$edition
->$binary_removed.$edition
-
-# put the editions base/extra together
-texmf_editions || exit 1
-
-# Check if all collections are part in at least one edition
-while read collection
-do
- grep -w "$collection" $collections_done &> /dev/null
- if [ $? != 0 ]
- then
- echo "Error: $collection was not handled."
- echo "Edit packages/collections in the texmfget function." | tee -a $logfile
- exit 1
- fi
-done < $allcollections
-
-# cleanup
-rm $allcollections
-rm $corepackages
-rm $collections_done
-rm $collections_tobedone
-rm $output
-rm $output_doc
-rm $dependencies
-
-# untar special- and manpage packages to be splitted/moved to other editions
-# splitting special packages, files index
-echo "Prepare index of to be splitted/moved files from -base"
-[ ! -d texmf-dist ] && mkdir texmf-dist
-for package in $special_packages
-do
- echo "Splitting $package"
- # special packages have to be in -base, as only here are special
- # tasks done to reduce size of -base edition
- if [ -z "$( grep ^"$package"$ $packages_base )" ]
- then
- echo "$package was not found to be part of -base"
- echo "Edit \$special_packages in $0"
- echo "to contain only packages from -base, bye."
- exit 1
- fi
- unset relocated
- pathprefix="texmf-dist/"
- [ -n "$(grep -w ^"relocated 1" $texmf/$package.meta)" ] && \
- relocated="-C texmf-dist" && unset pathprefix
- # avoid big pdf docs which are also present as html
- # move (big)type1 fonts to -extra
- # $files_split lists files to be moved from -base -extra
- if [ $package = "cm-super" ]
- then
- # cm-super minimal for -base, create index of extended cm-super
- tar tf $texmf/$package.tar.xz | sed \
- "/1000\.pfb$/d;/^tlpkg/d;/\.sty$/d;/\.enc$/d;/\.GS$/d" \
- | tee -a $files_split > $files_split.tmp
- else
- tar tf $texmf/${package}.tar.xz | sed \
- -ne "/.*doc\/latex\/.*\.pdf$/p" \
- -ne "/.*fonts\/map\/.*\.map$/p" \
- -ne "/.*fonts\/enc\/.*\.enc$/p" \
- -ne "/.*fonts\/afm\/.*\.\(afm\|afm\.gz\)$/p" \
- -ne "/.*fonts\/type1\/.*\.pfb$/p" \
- -ne "/.*fonts\/vf\/.*\.vf$/p" \
- | tee -a $files_split > $files_split.tmp
- fi
-
- if [ $edition = base ]
- then
- # Calculate package-minimal size, uncompressed and compressed
- mkdir -p calculate/texmf-dist
- tar xf $texmf/$package.tar.xz -C calculate/texmf-dist --exclude-from=$files_split.tmp
- tar cf calculate/calc.tar.xz -I 'xz -9' calculate/texmf-dist
- size_minimal=$(du -bc calculate/calc.tar.xz | tail -n1 | sed "s/[[:space:]].*//")
- size_minimal_uncompressed="$(xz -l --verbose calculate/calc.tar.xz | grep "Uncompressed size" | cut -d'(' -f2 | cut -d' ' -f1 )"
- sed -i \
- -e "s/^[0-9]* byte, $package: /$size_minimal byte, $package-minimal: /" \
- $output.base.meta
- sed -i \
- -e "s/^[0-9]* byte, $package: /$size_minimal_uncompressed byte, $package-minimal: /" \
- $output.base.meta.uncompressed
- rm -rf calculate
- fi
-
- if [ $edition = extra ]
- then
- mkdir -p calculate/texmf-dist
- tar xf $texmf/${package}.tar.xz -C calculate/texmf-dist $(paste $files_split.tmp)
- tar cf calculate/calc.tar.xz -I 'xz -9' calculate/texmf-dist
- size_extended=$(du -bc calculate/calc.tar.xz | tail -n1 | sed "s/[[:space:]].*//")
- size_extended_uncompressed="$(xz -l --verbose calculate/calc.tar.xz | \
- grep "Uncompressed size" | cut -d'(' -f2 | cut -d' ' -f1 )"
-
- # put new sizes in package index uncompressed
- sed -i \
- -e "s/^[0-9]* byte, $package: /$size_extended byte, $package-extended: /" \
- $output.extra.meta
- sed -i \
- -e "s/^[0-9]* byte, $package: /$size_extended_uncompressed byte, $package-extended: /" \
- $output.extra.meta.uncompressed
- rm -rf calculate
- fi
-
- # untar to provide files for -extra
- tar xf $texmf/${package}.tar.xz $relocated $(paste $files_split.tmp)
- if [ $package = "cm-super" ]
- then
- # create cm-super- minimal config/maps with 10pt glyphs only
- sed "s/cm-super/cm-super-minimal/g" $texmf/texmf-dist/dvips/cm-super/config.cm-super \
- > $texmf/texmf-dist/dvips/cm-super/config-minimal.cm-super
- for map in t1 t2a t2b t2c ts1 x2
- do
- grep 1000 $texmf/texmf-dist/fonts/map/dvips/cm-super/cm-super-$map.map \
- > $texmf/texmf-dist/fonts/map/dvips/cm-super/cm-super-minimal-$map.map
- sed -i "/.*1000\.pfb/d" $texmf/texmf-dist/fonts/map/dvips/cm-super/cm-super-$map.map
- done
- fi
-
-done
-
-
-# cleanup
-rm $files_split.tmp
-# fix relocation in index for splitted packages
-sed -i \
- -e "s|^doc|texmf-dist\/doc|g" \
- -e "s|^fonts|texmf-dist\/fonts|g" \
- -e "s|^dvips|texmf-dist\/dvips|g" \
- $files_split
-
-# sort meta data about added packages
-sort -n $output.$edition.meta > $tmpfile
-mv $tmpfile $output.$edition.meta
-sort -n $output.$edition.meta.uncompressed > $tmpfile
-mv $tmpfile $output.$edition.meta.uncompressed
-
-sort -u $binary_removed.$edition > $tmpfile
-mv $tmpfile $binary_removed.$edition
-
-# include manpages/GNU infofiles in -base, write index for later exclution from other editions.
-# In -extra/-docs there should not be any manpage left.
-echo "Looking for manpages/GNU infofiles to be included in -base ..."
-for package in $(paste -s $packages_base.doc | sort -u)
-do
- if [ -n "$(egrep "(doc/man/man|doc/info/)" $texmf/$package.meta )" ]
- then
- echo "Adding manpage from $package.doc to -base"
- flavour=".doc" download $package || exit 1
- unset relocated
- pathprefix="texmf-dist/"
- [ -n "$(grep -w ^"relocated 1" $texmf/$package.meta)" ] \
- && relocated="-C texmf-dist" && unset pathprefix
- tar tf $texmf/${package}.doc.tar.xz | sed \
- -ne "/.*doc\/man\/.*\.1$/p" \
- -ne "/.*doc\/man\/.*\.5$/p" \
- -ne "/.*doc\/info\/.*\.info$/p" \
- | tee -a $manpages > $manpages.tmp
- # untar to provide files for -/extra/-docs
- tar xf $texmf/${package}.doc.tar.xz $relocated $(paste $manpages.tmp)
- echo "$package" >> $packages_manpages
- fi
-done
-# cleanup
-rm $manpages.tmp
-sed -i \
- -e "s/^doc/texmf-dist\/doc/g" \
- $manpages
-
-case $edition in
- base)
- # Content info
- cat << EOF | gzip -9 >> $texmf/texmf-dist/packages.$edition.gz
-Content of -$edition:
-$(sed "/-linux$/d" $packages_base | sort)
-EOF
-#Splitted packages, type1 fonts/docs moved to -extra:
-#$(echo $special_packages)
-#EOF
-
-# add manpages/GNU infofiles to the tarball
- tar rf $tarball --owner=0 --group=0 --sort=name \
- texmf-dist/doc/man/ texmf-dist/doc/info/ \
- texmf-dist/packages.$edition.gz \
- || exit 1
-# # add cm-super minimal maps/config
-# tar rf $tarball --owner=0 --group=0 --sort=name \
-# texmf-dist/dvips/cm-super/config-minimal.cm-super \
-# --wildcards texmf-dist/fonts/map/dvips/cm-super/cm-super-minimal-*.map \
-# || exit 1
- echo "Removing files -from base, splitted from special packages to be included in -extra"
- tar f $tarball --delete $(paste $files_split) || exit 1
- ;;
- extra)
- echo "Removing manpages from $edition which now reside in -base"
- tar f $tarball --delete $(paste $manpages) 2>/dev/null
- # content info
- echo "Content of -$edition, including documentation:" > $texmf/texmf-dist/packages.$edition
- sed "/-linux$/d" $TMP/packages.$edition | sort >> $texmf/texmf-dist/packages.$edition
- gzip -9 $texmf/texmf-dist/packages.$edition
-# # remove cm-super minimal config, which resides in -base
-# rm \
-# $texmf/texmf-dist/dvips/cm-super/config-minimal.cm-super \
-# $texmf/texmf-dist/fonts/map/dvips/cm-super/cm-super-minimal-*.map
- tar rf $tarball --owner=0 --group=0 --sort=name \
- --exclude texmf-dist/doc \
- texmf-dist \
- || exit 1
- ;;
- docs)
- # add docs splittet from base from special packages, add packages index
- # content info, this edition contains all docs from -base
- echo "Content of -$edition, documentation for -base:" > $texmf/texmf-dist/packages.$edition
- sort $packages_base.doc >> $texmf/texmf-dist/packages.$edition
- gzip -9 $texmf/texmf-dist/packages.$edition
- tar rf $tarball --owner=0 --group=0 --sort=name \
- texmf-dist/doc/ \
- texmf-dist/packages.$edition.gz \
- || exit 1
- echo "Removing manpages from $edition which now reside in -base"
- tar f $tarball --delete $(paste $manpages) || exit 1
- ;;
-esac
-
-rm -rf texmf-dist
-
-# compress the tarball as everything is in place now
-echo "Compressing $tarball ..."
-[ -f $tarball.xz ] && rm $tarball.xz
-xz -9 -T0 $tarball || exit 1
-md5sum $tarball.xz
-ls -lh $tarball.xz
-echo "Logfile: $logfile"
diff --git a/office/texlive/slack-desc b/office/texlive/slack-desc
deleted file mode 100644
index 4e573a1608..0000000000
--- a/office/texlive/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-texlive: texlive (TeX binaries, support files, and formats)
-texlive:
-texlive: This package contains binaries, support files, TeX formats and
-texlive: packages,and other files included in the TeXLive TeX distribution.
-texlive: Included are input files for TeX, runtime configuration files,
-texlive: hyphenation tables, manpages, and the computer modern fonts.
-texlive:
-texlive: SlackBuilds.org has more texmf files and documentation in the
-texlive: texlive-extra and texlive-docs packages.
-texlive:
-texlive:
diff --git a/office/texlive/texlive.SlackBuild b/office/texlive/texlive.SlackBuild
deleted file mode 100644
index 63b97c33a5..0000000000
--- a/office/texlive/texlive.SlackBuild
+++ /dev/null
@@ -1,249 +0,0 @@
-#!/bin/sh
-
-# TeXLive build script for Slackware
-
-# Copyright 2009, 2017 - 2018 Patrick J. Volkerding, Sebeka, MN, USA
-# Copyright 2009 - 2014 Robby Workman, Northport, AL, USA
-# Copyright 2016 - 2017 Johannes Schoepfer, Germany
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# URL: ftp://tug.org/historic/systems/texlive/
-# Testrelease: ftp://tug.org/texlive/Images/test/
-# Upstream stable fixes: svn://tug.org/texlive/branches/branch2018/Build/source
-
-PRGNAM=texlive
-SOURCEVERSION=20180414
-VERSION=${VERSION:-2018.180630}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-
-CWD=$(pwd)
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-texlive
-OUTPUT=${OUTPUT:-/tmp}
-
-set -e
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-# NOTE: Using the system version of poppler will require texlive to be
-# recompiled with pretty much every poppler update, as they almost always
-# bump the shared library version. But sometimes you do what you have
-# to do...
-SYSTEMPOPPLER=${SYSTEMPOPPLER:-NO}
-if [ "$SYSTEMPOPPLER" = "NO" ]; then
- POPPLER="--without-system-poppler --without-system-xpdf"
-else
- POPPLER="--with-system-poppler --with-system-xpdf"
-fi
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf texlive-$SOURCEVERSION-source
-tar xvf $CWD/texlive-${SOURCEVERSION}-source.tar.xz || exit 1
-cd texlive-$SOURCEVERSION-source || exit 1
-chown -R root:root .
-chmod -R u+w,go-w,a+rX-st .
-
-export LANG=C
-export PATH="$PKG/usr/bin:$PATH"
-export LD_LIBRARY_PATH="$PKG/usr/lib${LIBDIRSUFFIX}:$LD_LIBRARY_PATH"
-
-# set TEXMFROOT and TEXMFLOCAL
-sed -i \
- -e 's|^TEXMFROOT.*|TEXMFROOT = $SELFAUTODIR/share|' \
- -e 's|^TEXMFLOCAL.*|TEXMFLOCAL = $TEXMFROOT/texmf-local|' \
- texk/kpathsea/texmf.cnf
-
-# prevent compiling Xdvi with libXp
-sed -i 's|-lXp ||' texk/xdvik/configure
-
-# Upstream stable fixes
-patch -Np0 -i $CWD/patches/20180625.diff || exit 1
-
-# Needed on -current, 2018-05-06
-# The 2018 version of texlive ships with support for poppler-0.57.0 and older,
-# but it includes alternative newpoppler files which enable building with
-# poppler-0.62.0 or newer.
-#if [ ! "$SYSTEMPOPPLER" = "NO" ]; then
-# mv -v texk/web2c/pdftexdir/pdftoepdf{-newpoppler,}.cc || exit 1
-# mv -v texk/web2c/pdftexdir/pdftosrc{-newpoppler,}.cc || exit 1
-#fi
-
-# --with-system-harfbuzz requires graphite2 (and harfbuzz linked to it)
-mkdir build
-cd build
- CFLAGS="$SLKCFLAGS" \
- CXXFLAGS="$SLKCFLAGS -fpermissive" \
- ../configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --with-banner-add=' on Slackware (SlackBuilds.org)' \
- --disable-native-texlive-build \
- --enable-largefile \
- --enable-shared \
- --disable-static \
- --disable-missing \
- --disable-multiplatform \
- --disable-debug \
- --with-x \
- --enable-xindy \
- --disable-xindy-docs \
- --disable-xindy-rules \
- --with-clisp-runtime=system \
- --enable-gc=system \
- --with-system-zlib \
- --with-system-libpng \
- --with-system-t1lib \
- --with-system-gd \
- --with-system-freetype2 \
- --with-system-libgs \
- --with-system-icu \
- --with-system-pixman \
- --with-system-cairo \
- --with-system-gmp \
- --with-system-mpfr \
- --with-system-fontconfig \
- --with-system-ncurses \
- --without-system-harfbuzz \
- --disable-aleph \
- --disable-dump-share \
- --disable-linked-scripts \
- $POPPLER \
- --build=$ARCH-slackware-linux || exit 1
-
- make || exit 1
- # make check || exit 1
- make install-strip DESTDIR=$PKG || exit 1
-
-cd ..
-
-# Don't ship .la files:
-rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la
-
-# Remove all files which are covered by tlnet
-rm -rf $PKG/usr/share $PKG/usr/man $PKG/usr/info
-
-# install the tlnet stuff
-mkdir -p $PKG/usr/share
-tar xvf $CWD/texlive-base-$VERSION.tar.xz -C $PKG/usr/share || exit 1
-chown -R root:root $PKG
-chmod -R u+w,go-w,a+rX-st $PKG
-
-# use symlinks/scripts from tlnet
-mv $PKG/usr/share/texmf-dist/linked_scripts/* $PKG/usr/bin
-rmdir $PKG/usr/share/texmf-dist/linked_scripts
-
-# set some paths
-sed -i \
- -e 's|^TEXMFROOT.*|TEXMFROOT = $SELFAUTODIR/share|' \
- -e 's|^TEXMFLOCAL.*|TEXMFLOCAL = $TEXMFROOT/texmf-local|' \
- -e 's|^OSFONTDIR.*|OSFONTDIR = ~/.fonts:/usr/share/fonts|' \
- $PKG/usr/share/texmf-dist/web2c/texmf.cnf
-
-# disable obsolete aleph/lamed/cslatex/pdfcslatex
-sed -i \
- -e 's|^aleph|#! aleph|' \
- -e 's|^lamed|#! lamed|' \
- -e 's|^cslatex|#! cslatex|' \
- -e 's|^pdfcslatex|#! pdfcslatex|' \
- $PKG/usr/share/texmf-dist/web2c/fmtutil.cnf
-
-# make ConTeXt work, and remove unused settings
-sed -i \
- -e 's|selfautoparent:|/usr/share/|g' \
- -e 's|\(TEXMFLOCAL[ ]*=[ ]*\)[^,]*|\1"/usr/share/texmf-local"|' \
- -e '/selfautodir/d' \
- -e '/texmflocal/d' \
- $PKG/usr/share/texmf-dist/web2c/texmfcnf.lua
-
-# provide texlive fonts optionally for other system apps
-mkdir -p $PKG/etc/fonts/conf.avail
-cat > $PKG/etc/fonts/conf.avail/09-texlive.conf << EOF
-<?xml version='1.0'?>
-<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-<fontconfig>
- <dir>/usr/share/texmf-dist/fonts/opentype</dir>
- <dir>/usr/share/texmf-dist/fonts/truetype</dir>
-</fontconfig>
-EOF
-
-# Install the docs while we're still here
-mkdir -p $PKG/usr/doc/texlive-$VERSION
-cp -a ChangeLog README* $PKG/usr/doc/texlive-$VERSION
-# Install index of provided tex packages to the docs
-mv $PKG/usr/share/texmf-dist/packages.base.gz $PKG/usr/doc/texlive-$VERSION
-
-# Put a symlink to /usr/share/texmf-dist/doc in our Slackware docdir
-ln -s ../../share/texmf-dist/doc $PKG/usr/doc/texlive-$VERSION/doc
-
-# We won't make tlmgr easily available; it's still there, but
-# we'll make it harder to void the warranty :-)
-rm -f $PKG/usr/bin/tlmgr
-cat $CWD/README.tlpkg > $PKG/usr/doc/texlive-$VERSION/README.tlpkg
-
-# Create some directories to make it clear that they're owned by this package
-mkdir -p $PKG/usr/share/{texmf-config,texmf-var,texmf-local}
-
-# Add some perl modules, at least one of which is required by updmap
-mkdir -p $PKG/usr/share/perl5
-mv texk/tests/TeXLive $PKG/usr/share/perl5/
-
-# Move manual pages to the correct place
-mkdir $PKG/usr/man
-mv $PKG/usr/share/texmf-dist/doc/man/man1 $PKG/usr/man
-mv $PKG/usr/share/texmf-dist/doc/man/man5 $PKG/usr/man
-rmdir $PKG/usr/share/texmf-dist/doc/man
-mv $PKG/usr/share/texmf-dist/doc/info $PKG/usr
-
-# Handle the man pages
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $(find $PKG/usr/man -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
-
-# Handle the GNU info pages
-rm -f $PKG/usr/info/dir
-gzip -9 $PKG/usr/info/*
-
-mkdir -p $PKG/install
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -p -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/office/texlive/texlive.info b/office/texlive/texlive.info
deleted file mode 100644
index bf3d620f39..0000000000
--- a/office/texlive/texlive.info
+++ /dev/null
@@ -1,12 +0,0 @@
-PRGNAM="texlive"
-VERSION="2018.180630"
-HOMEPAGE="http://tug.org/texlive/"
-DOWNLOAD="http://mirrors.ctan.org/systems/texlive/Source/texlive-20180414-source.tar.xz \
- http://slackware.schoepfer.info/slackbuilds/texlive/2018/texlive/texlive-base-2018.180630.tar.xz"
-MD5SUM="41d1e8874d266935c656fe51b440a413 \
- afd68de4f3548bb1f7bb1594d2a2b9bd"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Johannes Schoepfer"
-EMAIL="slackbuilds[at]schoepfer[dot]info"