author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2014-04-04 17:09:03 (GMT) |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2014-04-04 18:55:18 (GMT) |
commit | 6786b974a95ee8a263a76381074c55083faf123c (patch) | |
tree | bac4e8bf2e42c97f747ec3632a32925ad8844256 | |
parent | b8b045192272ddfd7d7707da3ac148f973388355 (diff) | |
parent | d9e0c438e10e2155513e5d26498af472c5137d65 (diff) | |
download | busybox-6786b974a95ee8a263a76381074c55083faf123c.zip busybox-6786b974a95ee8a263a76381074c55083faf123c.tar.gz busybox-6786b974a95ee8a263a76381074c55083faf123c.tar.bz2 |
Merge branch '1_22_stable' of git://git.busybox.net/busybox into 1.22
Change-Id: I670b5234b100649bdf916f69f99e76048e2ec82c
292 files changed, 17013 insertions, 11914 deletions
@@ -161,12 +161,13 @@ config UNICODE_USING_LOCALE Internal implementation is smaller. config FEATURE_CHECK_UNICODE_IN_ENV - bool "Check $LANG environment variable" + bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables" default n depends on UNICODE_SUPPORT && !UNICODE_USING_LOCALE help With this option on, Unicode support is activated - only if LANG variable has the value of the form "xxxx.utf8" + only if locale-related variables have the value of the form + "xxxx.utf8" Otherwise, Unicode support will be always enabled and active. @@ -1,7 +1,7 @@ VERSION = 1 -PATCHLEVEL = 21 +PATCHLEVEL = 22 SUBLEVEL = 1 -EXTRAVERSION = -kk +EXTRAVERSION = NAME = bionic # *DOCUMENTATION* diff --git a/Makefile.custom b/Makefile.custom index 6da79e6..8c95ef2 100644 --- a/Makefile.custom +++ b/Makefile.custom @@ -3,7 +3,12 @@ # ========================================================================== busybox.links: $(srctree)/applets/busybox.mkll $(objtree)/include/autoconf.h include/applets.h - $(Q)-$(SHELL) $^ >$@ + $(Q)-$(SHELL) $^ > $@ + +busybox.cfg.suid: $(srctree)/applets/busybox.mksuid $(objtree)/include/autoconf.h include/applets.h + $(Q)-SUID="yes" $(SHELL) $^ > $@ +busybox.cfg.nosuid: $(srctree)/applets/busybox.mksuid $(objtree)/include/autoconf.h include/applets.h + $(Q)-SUID="DROP" $(SHELL) $^ > $@ .PHONY: install ifeq ($(CONFIG_INSTALL_APPLET_SYMLINKS),y) @@ -69,6 +74,10 @@ release: distclean -print \ -exec rm -r -f {} \; ; \ find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \ + -name .gitignore \ + -print \ + -exec rm -f {} \; ; \ + find busybox-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)/ -type f \ -name .\#* \ -print \ -exec rm -f {} \; ; \ @@ -127,20 +127,6 @@ patch And while we're at it, a new patch filename quoting format is apparently coming soon: http://marc.theaimsgroup.com/?l=git&m=112927316408690&w=2 ---- -stty / catv - stty's visible() function and catv's guts are identical. Merge them into - an appropriate libbb function. ---- -struct suffix_mult - Several duplicate users of: grep -r "1024\*1024" * -B2 -A1 - Merge to a single size_suffixes[] in libbb. - Users: head tail od_bloaty hexdump and (partially as it wouldn't hurt) svlogd ---- -tail - ./busybox tail -f foo.c~ TODO - should not print fmt=header_fmt for subsequent date >> TODO; i.e. only - fmt+ if another (not the current) file did change Architectural issues: @@ -234,8 +220,6 @@ Minor stuff: See grep -r strtod Alot of duplication that wants cleanup. --- - in_ether duplicated in network/{interface,ifconfig}.c ---- unify progress_meter. wget, flash_eraseall, pipe_progress, fbsplash, setfiles. --- support start-stop-daemon -d <chdir-path> diff --git a/android/regex/regex.h b/android/regex/regex.h index eb1b406..20e8b1e 100644 --- a/android/regex/regex.h +++ b/android/regex/regex.h @@ -134,6 +134,27 @@ typedef unsigned reg_syntax_t; without further backtracking. */ #define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1) +/* If this bit is set, do not process the GNU regex operators. + If not set, then the GNU regex operators are recognized. */ +#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1) + +/* If this bit is set, turn on internal regex debugging. + If not set, and debugging was on, turn it off. + This only works if regex.c is compiled -DDEBUG. + We define this bit always, so that all that's needed to turn on + debugging is to recompile regex.c; the calling code can always have + this bit set, and it won't affect anything in the normal case. */ +#define RE_DEBUG (RE_NO_GNU_OPS << 1) + +/* If this bit is set, a syntactically invalid interval is treated as + a string of ordinary characters. For example, the ERE 'a{1' is + treated as 'a\{1'. */ +#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1) + +/* If this bit is set, then ignore case when matching. + If not set, then case is significant. */ +#define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1) + /* This global variable defines the particular regexp syntax to use (for some interfaces). When a regexp is compiled, the syntax used is stored in the pattern buffer, so changing this does not affect diff --git a/applets/applet_tables.c b/applets/applet_tables.c index 152d5f4..94b974e 100644 --- a/applets/applet_tables.c +++ b/applets/applet_tables.c @@ -53,7 +53,7 @@ int main(int argc, char **argv) { int i; int ofs; - unsigned MAX_APPLET_NAME_LEN = 1; +// unsigned MAX_APPLET_NAME_LEN = 1; qsort(applets, NUM_APPLETS, sizeof(applets[0]), cmp_name); @@ -89,8 +89,8 @@ int main(int argc, char **argv) printf("const char applet_names[] ALIGN1 = \"\"\n"); for (i = 0; i < NUM_APPLETS; i++) { printf("\"%s\" \"\\0\"\n", applets[i].name); - if (MAX_APPLET_NAME_LEN < strlen(applets[i].name)) - MAX_APPLET_NAME_LEN = strlen(applets[i].name); +// if (MAX_APPLET_NAME_LEN < strlen(applets[i].name)) +// MAX_APPLET_NAME_LEN = strlen(applets[i].name); } printf(";\n\n"); @@ -130,8 +130,8 @@ int main(int argc, char **argv) printf("};\n"); #endif //printf("#endif /* SKIP_definitions */\n"); - printf("\n"); - printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN); +// printf("\n"); +// printf("#define MAX_APPLET_NAME_LEN %u\n", MAX_APPLET_NAME_LEN); if (argv[2]) { char line_old[80]; diff --git a/applets/busybox.mksuid b/applets/busybox.mksuid new file mode 100755 index 0000000..6492c07 --- a/dev/null +++ b/applets/busybox.mksuid @@ -0,0 +1,54 @@ +#!/bin/sh +# Make list of configuration variables regarding suid handling + +# input $1: full path to autoconf.h +# input $2: full path to applets.h +# input $3: full path to .config +# output (stdout): list of CONFIG_ that do or may require suid + +# If the environment variable SUID is not set or set to DROP, +# lists all config options that do not require suid permissions. +# Otherwise, lists all config options for applets that DO or MAY require +# suid permissions. + +# Maintainer: Bernhard Reutner-Fischer + +export LC_ALL=POSIX +export LC_CTYPE=POSIX + +CONFIG_H=${1:-include/autoconf.h} +APPLETS_H=${2:-include/applets.h} +DOT_CONFIG=${3:-.config} + +case ${SUID:-DROP} in +[dD][rR][oO][pP]) USE="DROP" ;; +*) USE="suid" ;; +esac + +$HOSTCC -E -DMAKE_SUID -include $CONFIG_H $APPLETS_H | + awk -v USE=${USE} ' + /^SUID[ \t]/{ + if (USE == "DROP") { + if ($2 != "BB_SUID_DROP") next + } else { + if ($2 == "BB_SUID_DROP") next + } + cfg = $NF + gsub("\"", "", cfg) + cfg = substr(cfg, 8) + s[i++] = "CONFIG_" cfg + s[i++] = "CONFIG_FEATURE_" cfg "_.*" + } + END{ + while (getline < ARGV[2]) { + for (j in s) { + if ($0 ~ "^" s[j] "=y$") { + sub(/=.*/, "") + print + if (s[j] !~ /\*$/) delete s[j] # can drop this applet now + } + } + } + } +' - $DOT_CONFIG + diff --git a/applets/usage_compressed b/applets/usage_compressed index af66bc5..fb6e1c2 100755 --- a/applets/usage_compressed +++ b/applets/usage_compressed @@ -10,20 +10,20 @@ test "$SED" || SED=sed test "$DD" || DD=dd # Some people were bitten by their system lacking a (proper) od -od -v -t x1 </dev/null >/dev/null +od -v -b </dev/null >/dev/null if test $? != 0; then - echo 'od tool is not installed or cannot accept "-v -t x1" options' + echo 'od tool is not installed or cannot accept "-v -b" options' exit 1 fi exec >"$target.$$" echo '#define UNPACKED_USAGE "" \' -"$loc/usage" | od -v -t x1 \ +"$loc/usage" | od -v -b \ | $SED -e 's/^[^ ]*//' \ -e 's/ //g' \ -e '/^$/d' \ - -e 's/\(..\)/\\x\1/g' \ + -e 's/\(...\)/\\\1/g' \ -e 's/^/"/' \ -e 's/$/" \\/' echo '' @@ -39,11 +39,11 @@ echo '#define PACKED_USAGE \' ## -e '/^$/d' \ ## -e 's/\(..\)\(..\)/0x\2,0x\1,/g' ## -e 's/$/ \\/' -"$loc/usage" | bzip2 -1 | $DD bs=2 skip=1 2>/dev/null | od -v -t x1 \ +"$loc/usage" | bzip2 -1 | $DD bs=2 skip=1 2>/dev/null | od -v -b \ | $SED -e 's/^[^ ]*//' \ -e 's/ //g' \ -e '/^$/d' \ - -e 's/\(..\)/0x\1,/g' \ + -e 's/\(...\)/0\1,/g' \ -e 's/$/ \\/' echo '' diff --git a/archival/Config.src b/archival/Config.src index ae1afc5..76635ba 100644 --- a/archival/Config.src +++ b/archival/Config.src @@ -5,8 +5,6 @@ menu "Archival Utilities" -INSERT - config FEATURE_SEAMLESS_XZ bool "Make tar, rpm, modprobe etc understand .xz data" default y @@ -37,352 +35,6 @@ config FEATURE_SEAMLESS_Z help Make tar, rpm, modprobe etc understand .Z data. -config AR - bool "ar" - default n # needs to be improved to be able to replace binutils ar - help - ar is an archival utility program used to create, modify, and - extract contents from archives. An archive is a single file holding - a collection of other files in a structure that makes it possible to - retrieve the original individual files (called archive members). - The original files' contents, mode (permissions), timestamp, owner, - and group are preserved in the archive, and can be restored on - extraction. - - The stored filename is limited to 15 characters. (for more information - see long filename support). - ar has 60 bytes of overheads for every stored file. - - This implementation of ar can extract archives, it cannot create or - modify them. - On an x86 system, the ar applet adds about 1K. - - Unless you have a specific application which requires ar, you should - probably say N here. - -config FEATURE_AR_LONG_FILENAMES - bool "Support for long filenames (not needed for debs)" - default y - depends on AR - help - By default the ar format can only store the first 15 characters - of the filename, this option removes that limitation. - It supports the GNU ar long filename method which moves multiple long - filenames into a the data section of a new ar entry. - -config FEATURE_AR_CREATE - bool "Support archive creation" - default y - depends on AR - help - This enables archive creation (-c and -r) with busybox ar. - -config BUNZIP2 - bool "bunzip2" - default y - help - bunzip2 is a compression utility using the Burrows-Wheeler block - sorting text compression algorithm, and Huffman coding. Compression - is generally considerably better than that achieved by more - conventional LZ77/LZ78-based compressors, and approaches the - performance of the PPM family of statistical compressors. - - Unless you have a specific application which requires bunzip2, you - should probably say N here. - -config BZIP2 - bool "bzip2" - default y - help - bzip2 is a compression utility using the Burrows-Wheeler block - sorting text compression algorithm, and Huffman coding. Compression - is generally considerably better than that achieved by more - conventional LZ77/LZ78-based compressors, and approaches the - performance of the PPM family of statistical compressors. - - Unless you have a specific application which requires bzip2, you - should probably say N here. - -config CPIO - bool "cpio" - default y - help - cpio is an archival utility program used to create, modify, and - extract contents from archives. - cpio has 110 bytes of overheads for every stored file. - - This implementation of cpio can extract cpio archives created in the - "newc" or "crc" format, it cannot create or modify them. - - Unless you have a specific application which requires cpio, you - should probably say N here. - -config FEATURE_CPIO_O - bool "Support for archive creation" - default y - depends on CPIO - help - This implementation of cpio can create cpio archives in the "newc" - format only. - -config FEATURE_CPIO_P - bool "Support for passthrough mode" - default y - depends on FEATURE_CPIO_O - help - Passthrough mode. Rarely used. - -config DPKG - bool "dpkg" - default n - select FEATURE_SEAMLESS_GZ - help - dpkg is a medium-level tool to install, build, remove and manage - Debian packages. - - This implementation of dpkg has a number of limitations, - you should use the official dpkg if possible. - -config DPKG_DEB - bool "dpkg_deb" - default n - select FEATURE_SEAMLESS_GZ - help - dpkg-deb unpacks and provides information about Debian archives. - - This implementation of dpkg-deb cannot pack archives. - - Unless you have a specific application which requires dpkg-deb, - say N here. - -config FEATURE_DPKG_DEB_EXTRACT_ONLY - bool "Extract only (-x)" - default n - depends on DPKG_DEB - help - This reduces dpkg-deb to the equivalent of - "ar -p <deb> data.tar.gz | tar -zx". However it saves space as none - of the extra dpkg-deb, ar or tar options are needed, they are linked - to internally. - -config GUNZIP - bool "gunzip" - default y - help - gunzip is used to decompress archives created by gzip. - You can use the `-t' option to test the integrity of - an archive, without decompressing it. - -config GZIP - bool "gzip" - default y - help - gzip is used to compress files. - It's probably the most widely used UNIX compression program. - -config FEATURE_GZIP_LONG_OPTIONS - bool "Enable long options" - default y - depends on GZIP && LONG_OPTS - help - Enable use of long options, increases size by about 106 Bytes - -config GZIP_FAST - int "Trade memory for gzip speed (0:small,slow - 2:fast,big)" - default 0 - range 0 2 - depends on GZIP - help - Enable big memory options for gzip. - 0: small buffers, small hash-tables - 1: larger buffers, larger hash-tables - 2: larger buffers, largest hash-tables - Larger models may give slightly better compression - -config LZOP - bool "lzop" - default y - help - Lzop compression/decompresion. - -config LZOP_COMPR_HIGH - bool "lzop compression levels 7,8,9 (not very useful)" - default n - depends on LZOP - help - High levels (7,8,9) of lzop compression. These levels - are actually slower than gzip at equivalent compression ratios - and take up 3.2K of code. - -config RPM2CPIO - bool "rpm2cpio" - default y - help - Converts a RPM file into a CPIO archive. - -config RPM - bool "rpm" - default y - help - Mini RPM applet - queries and extracts RPM packages. - -config TAR - bool "tar" - default y - help - tar is an archiving program. It's commonly used with gzip to - create compressed archives. It's probably the most widely used - UNIX archive program. - -config FEATURE_TAR_CREATE - bool "Enable archive creation" - default y - depends on TAR - help - If you enable this option you'll be able to create - tar archives using the `-c' option. - -config FEATURE_TAR_AUTODETECT - bool "Autodetect compressed tarballs" - default y - depends on TAR && (FEATURE_SEAMLESS_Z || FEATURE_SEAMLESS_GZ || FEATURE_SEAMLESS_BZ2 || FEATURE_SEAMLESS_LZMA || FEATURE_SEAMLESS_XZ) - help - With this option tar can automatically detect compressed - tarballs. Currently it works only on files (not pipes etc). - -config FEATURE_TAR_FROM - bool "Enable -X (exclude from) and -T (include from) options)" - default y - depends on TAR - help - If you enable this option you'll be able to specify - a list of files to include or exclude from an archive. - -config FEATURE_TAR_OLDGNU_COMPATIBILITY - bool "Support for old tar header format" - default y - depends on TAR || DPKG - help - This option is required to unpack archives created in - the old GNU format; help to kill this old format by - repacking your ancient archives with the new format. - -config FEATURE_TAR_OLDSUN_COMPATIBILITY - bool "Enable untarring of tarballs with checksums produced by buggy Sun tar" - default y - depends on TAR || DPKG - help - This option is required to unpack archives created by some old - version of Sun's tar (it was calculating checksum using signed - arithmetic). It is said to be fixed in newer Sun tar, but "old" - tarballs still exist. - -config FEATURE_TAR_GNU_EXTENSIONS - bool "Support for GNU tar extensions (long filenames)" - default y - depends on TAR || DPKG - help - With this option busybox supports GNU long filenames and - linknames. - -config FEATURE_TAR_LONG_OPTIONS - bool "Enable long options" - default y - depends on TAR && LONG_OPTS - help - Enable use of long options, increases size by about 400 Bytes - -config FEATURE_TAR_TO_COMMAND - bool "Support for writing to an external program" - default y - depends on TAR && FEATURE_TAR_LONG_OPTIONS - help - If you enable this option you'll be able to instruct tar to send - the contents of each extracted file to the standard input of an - external program. - -config FEATURE_TAR_UNAME_GNAME - bool "Enable use of user and group names" - default y - depends on TAR - help - Enables use of user and group names in tar. This affects contents - listings (-t) and preserving permissions when unpacking (-p). - +200 bytes. - -config FEATURE_TAR_NOPRESERVE_TIME - bool "Enable -m (do not preserve time) option" - default y - depends on TAR - help - With this option busybox supports GNU tar -m - (do not preserve time) option. - -config FEATURE_TAR_SELINUX - bool "Support for extracting SELinux labels" - default n - depends on TAR && SELINUX - help - With this option busybox supports restoring SELinux labels - when extracting files from tar archives. - -config UNCOMPRESS - bool "uncompress" - default n - help - uncompress is used to decompress archives created by compress. - Not much used anymore, replaced by gzip/gunzip. - -config UNLZMA - bool "unlzma" - default y - help - unlzma is a compression utility using the Lempel-Ziv-Markov chain - compression algorithm, and range coding. Compression - is generally considerably better than that achieved by the bzip2 - compressors. - - The BusyBox unlzma applet is limited to decompression only. - On an x86 system, this applet adds about 4K. - -config FEATURE_LZMA_FAST - bool "Optimize unlzma for speed" - default n - depends on UNLZMA - help - This option reduces decompression time by about 25% at the cost of - a 1K bigger binary. - -config LZMA - bool "Provide lzma alias which supports only unpacking" - default y - depends on UNLZMA - help - Enable this option if you want commands like "lzma -d" to work. - IOW: you'll get lzma applet, but it will always require -d option. - -config UNXZ - bool "unxz" - default y - help - unxz is a unlzma successor. - -config XZ - bool "Provide xz alias which supports only unpacking" - default y - depends on UNXZ - help - Enable this option if you want commands like "xz -d" to work. - IOW: you'll get xz applet, but it will always require -d option. - -config UNZIP - bool "unzip" - default y - help - unzip will list or extract files from a ZIP archive, - commonly found on DOS/WIN systems. The default behavior - (with no options) is to extract the archive into the - current directory. Use the `-d' option to extract to a - directory of your choice. +INSERT endmenu diff --git a/archival/Kbuild.src b/archival/Kbuild.src index 3466452..a6fd2ea 100644 --- a/archival/Kbuild.src +++ b/archival/Kbuild.src @@ -9,22 +9,3 @@ libs-y += libarchive/ lib-y:= INSERT - -lib-$(CONFIG_AR) += ar.o -lib-$(CONFIG_CPIO) += cpio.o -lib-$(CONFIG_DPKG) += dpkg.o -lib-$(CONFIG_DPKG_DEB) += dpkg_deb.o -lib-$(CONFIG_RPM2CPIO) += rpm2cpio.o -lib-$(CONFIG_RPM) += rpm.o -lib-$(CONFIG_TAR) += tar.o -lib-$(CONFIG_UNZIP) += unzip.o - -lib-$(CONFIG_LZOP) += lzop.o bbunzip.o -lib-$(CONFIG_GZIP) += gzip.o bbunzip.o -lib-$(CONFIG_BZIP2) += bzip2.o bbunzip.o - -lib-$(CONFIG_UNXZ) += bbunzip.o -lib-$(CONFIG_UNLZMA) += bbunzip.o -lib-$(CONFIG_BUNZIP2) += bbunzip.o -lib-$(CONFIG_GUNZIP) += bbunzip.o -lib-$(CONFIG_UNCOMPRESS) += bbunzip.o diff --git a/archival/ar.c b/archival/ar.c index 88236e8..f86c52d 100644 --- a/archival/ar.c +++ b/archival/ar.c @@ -17,6 +17,49 @@ * http://www.unix-systems.org/single_unix_specification_v2/xcu/ar.html */ +//config:config AR +//config: bool "ar" +//config: default n # needs to be improved to be able to replace binutils ar +//config: help +//config: ar is an archival utility program used to create, modify, and +//config: extract contents from archives. An archive is a single file holding +//config: a collection of other files in a structure that makes it possible to +//config: retrieve the original individual files (called archive members). +//config: The original files' contents, mode (permissions), timestamp, owner, +//config: and group are preserved in the archive, and can be restored on +//config: extraction. +//config: +//config: The stored filename is limited to 15 characters. (for more information +//config: see long filename support). +//config: ar has 60 bytes of overheads for every stored file. +//config: +//config: This implementation of ar can extract archives, it cannot create or +//config: modify them. +//config: On an x86 system, the ar applet adds about 1K. +//config: +//config: Unless you have a specific application which requires ar, you should +//config: probably say N here. +//config: +//config:config FEATURE_AR_LONG_FILENAMES +//config: bool "Support for long filenames (not needed for debs)" +//config: default y +//config: depends on AR +//config: help +//config: By default the ar format can only store the first 15 characters +//config: of the filename, this option removes that limitation. +//config: It supports the GNU ar long filename method which moves multiple long +//config: filenames into a the data section of a new ar entry. +//config: +//config:config FEATURE_AR_CREATE +//config: bool "Support archive creation" +//config: default y +//config: depends on AR +//config: help +//config: This enables archive creation (-c and -r) with busybox ar. + +//applet:IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_AR) += ar.o + //usage:#define ar_trivial_usage //usage: "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES" //usage:#define ar_full_usage "\n\n" diff --git a/archival/bbunzip.c b/archival/bbunzip.c index 94d8a81..b3fb90f 100644 --- a/archival/bbunzip.c +++ b/archival/bbunzip.c @@ -7,13 +7,19 @@ #include "libbb.h" #include "bb_archive.h" +/* lzop_main() uses bbunpack(), need this: */ +//kbuild:lib-$(CONFIG_LZOP) += bbunzip.o + +/* Note: must be kept in sync with archival/lzop.c */ enum { OPT_STDOUT = 1 << 0, OPT_FORCE = 1 << 1, /* only some decompressors: */ OPT_VERBOSE = 1 << 2, - OPT_DECOMPRESS = 1 << 3, - OPT_TEST = 1 << 4, + OPT_QUIET = 1 << 3, + OPT_DECOMPRESS = 1 << 4, + OPT_TEST = 1 << 5, + SEAMLESS_MAGIC = (1 << 31) * SEAMLESS_COMPRESSION, }; static @@ -39,7 +45,7 @@ int FAST_FUNC bbunpack(char **argv, ) { struct stat stat_buf; - IF_DESKTOP(long long) int status; + IF_DESKTOP(long long) int status = 0; char *filename, *new_name; smallint exitcode = 0; transformer_aux_data_t aux; @@ -54,13 +60,27 @@ int FAST_FUNC bbunpack(char **argv, /* Open src */ if (filename) { - if (stat(filename, &stat_buf) != 0) { - bb_simple_perror_msg(filename); + if (!(option_mask32 & SEAMLESS_MAGIC)) { + if (stat(filename, &stat_buf) != 0) { + err_name: + bb_simple_perror_msg(filename); err: - exitcode = 1; - goto free_name; + exitcode = 1; + goto free_name; + } + if (open_to_or_warn(STDIN_FILENO, filename, O_RDONLY, 0)) + goto err; + } else { + /* "clever zcat" with FILE */ + int fd = open_zipped(filename); + if (fd < 0) + goto err_name; + xmove_fd(fd, STDIN_FILENO); } - if (open_to_or_warn(STDIN_FILENO, filename, O_RDONLY, 0)) + } else + if (option_mask32 & SEAMLESS_MAGIC) { + /* "clever zcat" on stdin */ + if (setup_unzip_on_fd(STDIN_FILENO, /*fail_if_not_detected*/ 0)) goto err; } @@ -68,7 +88,7 @@ int FAST_FUNC bbunpack(char **argv, if (option_mask32 & (OPT_STDOUT|OPT_TEST)) { if (option_mask32 & OPT_TEST) if (open_to_or_warn(STDOUT_FILENO, bb_dev_null, O_WRONLY, 0)) - goto err; + xfunc_die(); filename = NULL; } @@ -93,23 +113,32 @@ int FAST_FUNC bbunpack(char **argv, } /* Check that the input is sane */ - if (isatty(STDIN_FILENO) && (option_mask32 & OPT_FORCE) == 0) { + if (!(option_mask32 & OPT_FORCE) && isatty(STDIN_FILENO)) { bb_error_msg_and_die("compressed data not read from terminal, " "use -f to force it"); } - init_transformer_aux_data(&aux); - aux.check_signature = 1; - status = unpacker(&aux); - if (status < 0) - exitcode = 1; + if (!(option_mask32 & SEAMLESS_MAGIC)) { + init_transformer_aux_data(&aux); + aux.check_signature = 1; + status = unpacker(&aux); + if (status < 0) + exitcode = 1; + } else { + if (bb_copyfd_eof(STDIN_FILENO, STDOUT_FILENO) < 0) + /* Disk full, tty closed, etc. No point in continuing */ + xfunc_die(); + } if (!(option_mask32 & OPT_STDOUT)) xclose(STDOUT_FILENO); /* with error check! */ if (filename) { char *del = new_name; + if (status >= 0) { + unsigned new_name_len; + /* TODO: restore other things? */ if (aux.mtime != 0) { struct timeval times[2]; @@ -123,22 +152,29 @@ int FAST_FUNC bbunpack(char **argv, utimes(new_name, times); /* ignoring errors */ } - /* Delete _compressed_ file */ + if (ENABLE_DESKTOP) + new_name_len = strlen(new_name); + /* Restore source filename (unless tgz -> tar case) */ + if (new_name == filename) { + new_name_len = strlen(filename); + filename[new_name_len] = '.'; + } + /* Extreme bloat for gunzip compat */ + /* Some users do want this info... */ + if (ENABLE_DESKTOP && (option_mask32 & OPT_VERBOSE)) { + unsigned percent = status + ? ((uoff_t)stat_buf.st_size * 100u / (unsigned long long)status) + : 0; + fprintf(stderr, "%s: %u%% - replaced with %.*s\n", + filename, + 100u - percent, + new_name_len, new_name + ); + } + /* Delete _source_ file */ del = filename; - /* restore extension (unless tgz -> tar case) */ - if (new_name == filename) - filename[strlen(filename)] = '.'; } xunlink(del); - -#if 0 /* Currently buggy - wrong name: "a.gz: 261% - replaced with a.gz" */ - /* Extreme bloat for gunzip compat */ - if (ENABLE_DESKTOP && (option_mask32 & OPT_VERBOSE) && status >= 0) { - fprintf(stderr, "%s: %u%% - replaced with %s\n", - filename, (unsigned)(stat_buf.st_size*100 / (status+1)), new_name); - } -#endif - free_name: if (new_name != filename) free(new_name); @@ -172,7 +208,6 @@ char* FAST_FUNC make_new_name_generic(char *filename, const char *expected_ext) * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ - //usage:#define uncompress_trivial_usage //usage: "[-cf] [FILE]..." //usage:#define uncompress_full_usage "\n\n" @@ -180,6 +215,15 @@ char* FAST_FUNC make_new_name_generic(char *filename, const char *expected_ext) //usage: "\n -c Write to stdout" //usage: "\n -f Overwrite" +//config:config UNCOMPRESS +//config: bool "uncompress" +//config: default n +//config: help +//config: uncompress is used to decompress archives created by compress. +//config: Not much used anymore, replaced by gzip/gunzip. + +//applet:IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_UNCOMPRESS) += bbunzip.o #if ENABLE_UNCOMPRESS static IF_DESKTOP(long long) int FAST_FUNC unpack_uncompress(transformer_aux_data_t *aux) @@ -220,11 +264,7 @@ int uncompress_main(int argc UNUSED_PARAM, char **argv) * Portions of the lzw code are derived from the public domain 'compress' * written by Spencer Thomas, Joe Orost, James Woods, Jim McKie, Steve Davies, * Ken Turkowski, Dave Mack and Peter Jannesen. - * - * See the license_msg below and the file COPYING for the software license. - * See the file algorithm.doc for the compression algorithms and file formats. */ - //usage:#define gunzip_trivial_usage //usage: "[-cft] [FILE]..." //usage:#define gunzip_full_usage "\n\n" @@ -241,10 +281,22 @@ int uncompress_main(int argc UNUSED_PARAM, char **argv) //usage: "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar\n" //usage: //usage:#define zcat_trivial_usage -//usage: "FILE" +//usage: "[FILE]..." //usage:#define zcat_full_usage "\n\n" //usage: "Decompress to stdout" +//config:config GUNZIP +//config: bool "gunzip" +//config: default y +//config: help +//config: gunzip is used to decompress archives created by gzip. +//config: You can use the `-t' option to test the integrity of +//config: an archive, without decompressing it. + +//applet:IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP)) +//applet:IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat)) +//kbuild:lib-$(CONFIG_GZIP) += bbunzip.o +//kbuild:lib-$(CONFIG_GUNZIP) += bbunzip.o #if ENABLE_GUNZIP static char* FAST_FUNC make_new_name_gunzip(char *filename, const char *expected_ext UNUSED_PARAM) @@ -292,11 +344,15 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_gunzip(transformer_aux_data_t *aux) int gunzip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int gunzip_main(int argc UNUSED_PARAM, char **argv) { - getopt32(argv, "cfvdtn"); + getopt32(argv, "cfvqdtn"); argv += optind; - /* if called as zcat */ + + /* If called as zcat... + * Normally, "zcat" is just "gunzip -c". + * But if seamless magic is enabled, then we are much more clever. + */ if (applet_name[1] == 'c') - option_mask32 |= OPT_STDOUT; + option_mask32 |= OPT_STDOUT | SEAMLESS_MAGIC; return bbunpack(argv, unpack_gunzip, make_new_name_gunzip, /*unused:*/ NULL); } @@ -316,11 +372,27 @@ int gunzip_main(int argc UNUSED_PARAM, char **argv) //usage: "\n -c Write to stdout" //usage: "\n -f Force" //usage:#define bzcat_trivial_usage -//usage: "FILE" +//usage: "[FILE]..." //usage:#define bzcat_full_usage "\n\n" //usage: "Decompress to stdout" + +//config:config BUNZIP2 +//config: bool "bunzip2" +//config: default y +//config: help +//config: bunzip2 is a compression utility using the Burrows-Wheeler block +//config: sorting text compression algorithm, and Huffman coding. Compression +//config: is generally considerably better than that achieved by more +//config: conventional LZ77/LZ78-based compressors, and approaches the +//config: performance of the PPM family of statistical compressors. +//config: +//config: Unless you have a specific application which requires bunzip2, you +//config: should probably say N here. + //applet:IF_BUNZIP2(APPLET(bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) //applet:IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP, bzcat)) +//kbuild:lib-$(CONFIG_BZIP2) += bbunzip.o +//kbuild:lib-$(CONFIG_BUNZIP2) += bbunzip.o #if ENABLE_BUNZIP2 static IF_DESKTOP(long long) int FAST_FUNC unpack_bunzip2(transformer_aux_data_t *aux) @@ -330,7 +402,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_bunzip2(transformer_aux_data_t *aux) int bunzip2_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int bunzip2_main(int argc UNUSED_PARAM, char **argv) { - getopt32(argv, "cfvdt"); + getopt32(argv, "cfvqdt"); argv += optind; if (applet_name[2] == 'c') /* bzcat */ option_mask32 |= OPT_STDOUT; @@ -348,7 +420,6 @@ int bunzip2_main(int argc UNUSED_PARAM, char **argv) * * Licensed under GPLv2, see file LICENSE in this source tree. */ - //usage:#define unlzma_trivial_usage //usage: "[-cf] [FILE]..." //usage:#define unlzma_full_usage "\n\n" @@ -365,7 +436,7 @@ int bunzip2_main(int argc UNUSED_PARAM, char **argv) //usage: "\n -f Force" //usage: //usage:#define lzcat_trivial_usage -//usage: "FILE" +//usage: "[FILE]..." //usage:#define lzcat_full_usage "\n\n" //usage: "Decompress to stdout" //usage: @@ -385,10 +456,42 @@ int bunzip2_main(int argc UNUSED_PARAM, char **argv) //usage: "\n -f Force" //usage: //usage:#define xzcat_trivial_usage -//usage: "FILE" +//usage: "[FILE]..." //usage:#define xzcat_full_usage "\n\n" //usage: "Decompress to stdout" +//config:config UNLZMA +//config: bool "unlzma" +//config: default y +//config: help +//config: unlzma is a compression utility using the Lempel-Ziv-Markov chain +//config: compression algorithm, and range coding. Compression +//config: is generally considerably better than that achieved by the bzip2 +//config: compressors. +//config: +//config: The BusyBox unlzma applet is limited to decompression only. +//config: On an x86 system, this applet adds about 4K. +//config: +//config:config FEATURE_LZMA_FAST +//config: bool "Optimize unlzma for speed" +//config: default n +//config: depends on UNLZMA +//config: help +//config: This option reduces decompression time by about 25% at the cost of +//config: a 1K bigger binary. +//config: +//config:config LZMA +//config: bool "Provide lzma alias which supports only unpacking" +//config: default y +//config: depends on UNLZMA +//config: help +//config: Enable this option if you want commands like "lzma -d" to work. +//config: IOW: you'll get lzma applet, but it will always require -d option. + +//applet:IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP)) +//applet:IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat)) +//applet:IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma)) +//kbuild:lib-$(CONFIG_UNLZMA) += bbunzip.o #if ENABLE_UNLZMA static IF_DESKTOP(long long) int FAST_FUNC unpack_unlzma(transformer_aux_data_t *aux) @@ -398,7 +501,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_unlzma(transformer_aux_data_t *aux) int unlzma_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int unlzma_main(int argc UNUSED_PARAM, char **argv) { - IF_LZMA(int opts =) getopt32(argv, "cfvdt"); + IF_LZMA(int opts =) getopt32(argv, "cfvqdt"); # if ENABLE_LZMA /* lzma without -d or -t? */ if (applet_name[2] == 'm' && !(opts & (OPT_DECOMPRESS|OPT_TEST))) @@ -414,6 +517,24 @@ int unlzma_main(int argc UNUSED_PARAM, char **argv) #endif +//config:config UNXZ +//config: bool "unxz" +//config: default y +//config: help +//config: unxz is a unlzma successor. +//config: +//config:config XZ +//config: bool "Provide xz alias which supports only unpacking" +//config: default y +//config: depends on UNXZ +//config: help +//config: Enable this option if you want commands like "xz -d" to work. +//config: IOW: you'll get xz applet, but it will always require -d option. + +//applet:IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP)) +//applet:IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat)) +//applet:IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz)) +//kbuild:lib-$(CONFIG_UNXZ) += bbunzip.o #if ENABLE_UNXZ static IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(transformer_aux_data_t *aux) @@ -423,7 +544,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(transformer_aux_data_t *aux) int unxz_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int unxz_main(int argc UNUSED_PARAM, char **argv) { - IF_XZ(int opts =) getopt32(argv, "cfvdt"); + IF_XZ(int opts =) getopt32(argv, "cfvqdt"); # if ENABLE_XZ /* xz without -d or -t? */ if (applet_name[2] == '\0' && !(opts & (OPT_DECOMPRESS|OPT_TEST))) diff --git a/archival/bzip2.c b/archival/bzip2.c index dd77c8e..f7718b4 100644 --- a/archival/bzip2.c +++ b/archival/bzip2.c @@ -7,6 +7,22 @@ * about bzip2 library code. */ +//config:config BZIP2 +//config: bool "bzip2" +//config: default y +//config: help +//config: bzip2 is a compression utility using the Burrows-Wheeler block +//config: sorting text compression algorithm, and Huffman coding. Compression +//config: is generally considerably better than that achieved by more +//config: conventional LZ77/LZ78-based compressors, and approaches the +//config: performance of the PPM family of statistical compressors. +//config: +//config: Unless you have a specific application which requires bzip2, you +//config: should probably say N here. + +//applet:IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_BZIP2) += bzip2.o + //usage:#define bzip2_trivial_usage //usage: "[OPTIONS] [FILE]..." //usage:#define bzip2_full_usage "\n\n" diff --git a/archival/cpio.c b/archival/cpio.c index 12b7f9a..5fb5327 100644 --- a/archival/cpio.c +++ b/archival/cpio.c @@ -9,11 +9,42 @@ * Limitations: * Doesn't check CRC's * Only supports new ASCII and CRC formats - * */ #include "libbb.h" #include "bb_archive.h" +//config:config CPIO +//config: bool "cpio" +//config: default y +//config: help +//config: cpio is an archival utility program used to create, modify, and +//config: extract contents from archives. +//config: cpio has 110 bytes of overheads for every stored file. +//config: +//config: This implementation of cpio can extract cpio archives created in the +//config: "newc" or "crc" format, it cannot create or modify them. +//config: +//config: Unless you have a specific application which requires cpio, you +//config: should probably say N here. +//config: +//config:config FEATURE_CPIO_O +//config: bool "Support for archive creation" +//config: default y +//config: depends on CPIO +//config: help +//config: This implementation of cpio can create cpio archives in the "newc" +//config: format only. +//config: +//config:config FEATURE_CPIO_P +//config: bool "Support for passthrough mode" +//config: default y +//config: depends on FEATURE_CPIO_O +//config: help +//config: Passthrough mode. Rarely used. + +//applet:IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_CPIO) += cpio.o + //usage:#define cpio_trivial_usage //usage: "[-dmvu] [-F FILE]" IF_FEATURE_CPIO_O(" [-H newc]") //usage: " [-ti"IF_FEATURE_CPIO_O("o")"]" IF_FEATURE_CPIO_P(" [-p DIR]") diff --git a/archival/dpkg.c b/archival/dpkg.c index ed86f33..2893cfc 100644 --- a/archival/dpkg.c +++ b/archival/dpkg.c @@ -14,7 +14,6 @@ * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ - /* * known difference between busybox dpkg and the official dpkg that i don't * consider important, its worth keeping a note of differences anyway, just to @@ -25,9 +24,22 @@ * * bugs that need to be fixed * - (unknown, please let me know when you find any) - * */ +//config:config DPKG +//config: bool "dpkg" +//config: default n +//config: select FEATURE_SEAMLESS_GZ +//config: help +//config: dpkg is a medium-level tool to install, build, remove and manage +//config: Debian packages. +//config: +//config: This implementation of dpkg has a number of limitations, +//config: you should use the official dpkg if possible. + +//applet:IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_DPKG) += dpkg.o + //usage:#define dpkg_trivial_usage //usage: "[-ilCPru] [-F OPT] PACKAGE" //usage:#define dpkg_full_usage "\n\n" diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c index a04ec94..13f9db9 100644 --- a/archival/dpkg_deb.c +++ b/archival/dpkg_deb.c @@ -5,8 +5,33 @@ * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +//config:config DPKG_DEB +//config: bool "dpkg_deb" +//config: default n +//config: select FEATURE_SEAMLESS_GZ +//config: help +//config: dpkg-deb unpacks and provides information about Debian archives. +//config: +//config: This implementation of dpkg-deb cannot pack archives. +//config: +//config: Unless you have a specific application which requires dpkg-deb, +//config: say N here. +//config: +//config:config FEATURE_DPKG_DEB_EXTRACT_ONLY +//config: bool "Extract only (-x)" +//config: default n +//config: depends on DPKG_DEB +//config: help +//config: This reduces dpkg-deb to the equivalent of +//config: "ar -p <deb> data.tar.gz | tar -zx". However it saves space as none +//config: of the extra dpkg-deb, ar or tar options are needed, they are linked +//config: to internally. + +//applet:IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb)) +//kbuild:lib-$(CONFIG_DPKG_DEB) += dpkg_deb.o + //usage:#define dpkg_deb_trivial_usage -//usage: "[-cefxX] FILE [argument" +//usage: "[-cefxX] FILE [argument]" //usage:#define dpkg_deb_full_usage "\n\n" //usage: "Perform actions on Debian packages (.debs)\n" //usage: "\n -c List contents of filesystem tree" diff --git a/archival/gzip.c b/archival/gzip.c index 31ccab3..1e779c9 100644 --- a/archival/gzip.c +++ b/archival/gzip.c @@ -15,7 +15,6 @@ * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ - /* big objects in bss: * 00000020 b bl_count * 00000074 b base_length @@ -31,7 +30,6 @@ * 00000480 b static_ltree * 000008f4 b dyn_ltree */ - /* TODO: full support for -v for DESKTOP * "/usr/bin/gzip -v a bogus aa" should say: a: 85.1% -- replaced with a.gz @@ -39,6 +37,35 @@ gzip: bogus: No such file or directory aa: 85.1% -- replaced with aa.gz */ +//config:config GZIP +//config: bool "gzip" +//config: default y +//config: help +//config: gzip is used to compress files. +//config: It's probably the most widely used UNIX compression program. +//config: +//config:config FEATURE_GZIP_LONG_OPTIONS +//config: bool "Enable long options" +//config: default y +//config: depends on GZIP && LONG_OPTS +//config: help +//config: Enable use of long options, increases size by about 106 Bytes +//config: +//config:config GZIP_FAST +//config: int "Trade memory for gzip speed (0:small,slow - 2:fast,big)" +//config: default 0 +//config: range 0 2 +//config: depends on GZIP +//config: help +//config: Enable big memory options for gzip. +//config: 0: small buffers, small hash-tables +//config: 1: larger buffers, larger hash-tables +//config: 2: larger buffers, largest hash-tables +//config: Larger models may give slightly better compression + +//applet:IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_GZIP) += gzip.o + //usage:#define gzip_trivial_usage //usage: "[-cfd] [FILE]..." //usage:#define gzip_full_usage "\n\n" diff --git a/archival/libarchive/Kbuild.src b/archival/libarchive/Kbuild.src index 1517c8c..968fdf8 100644 --- a/archival/libarchive/Kbuild.src +++ b/archival/libarchive/Kbuild.src @@ -38,23 +38,38 @@ DPKG_FILES:= \ INSERT -lib-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o -lib-$(CONFIG_BUNZIP2) += decompress_bunzip2.o -lib-$(CONFIG_UNLZMA) += decompress_unlzma.o -lib-$(CONFIG_UNXZ) += decompress_unxz.o -lib-$(CONFIG_CPIO) += get_header_cpio.o lib-$(CONFIG_DPKG) += $(DPKG_FILES) lib-$(CONFIG_DPKG_DEB) += $(DPKG_FILES) -lib-$(CONFIG_GUNZIP) += open_transformer.o decompress_gunzip.o -lib-$(CONFIG_RPM2CPIO) += decompress_gunzip.o get_header_cpio.o -lib-$(CONFIG_RPM) += open_transformer.o decompress_gunzip.o get_header_cpio.o + +lib-$(CONFIG_AR) += get_header_ar.o unpack_ar_archive.o +lib-$(CONFIG_CPIO) += get_header_cpio.o lib-$(CONFIG_TAR) += get_header_tar.o -lib-$(CONFIG_UNCOMPRESS) += decompress_uncompress.o -lib-$(CONFIG_UNZIP) += decompress_gunzip.o +lib-$(CONFIG_FEATURE_TAR_TO_COMMAND) += data_extract_to_command.o lib-$(CONFIG_LZOP) += lzo1x_1.o lzo1x_1o.o lzo1x_d.o lib-$(CONFIG_LZOP_COMPR_HIGH) += lzo1x_9x.o +lib-$(CONFIG_BUNZIP2) += open_transformer.o decompress_bunzip2.o +lib-$(CONFIG_UNLZMA) += open_transformer.o decompress_unlzma.o +lib-$(CONFIG_UNXZ) += open_transformer.o decompress_unxz.o +lib-$(CONFIG_GUNZIP) += open_transformer.o decompress_gunzip.o +lib-$(CONFIG_UNCOMPRESS) += open_transformer.o decompress_uncompress.o +lib-$(CONFIG_UNZIP) += open_transformer.o decompress_gunzip.o +lib-$(CONFIG_RPM2CPIO) += open_transformer.o decompress_gunzip.o get_header_cpio.o +lib-$(CONFIG_RPM) += open_transformer.o decompress_gunzip.o get_header_cpio.o + +lib-$(CONFIG_GZIP) += open_transformer.o +lib-$(CONFIG_BZIP2) += open_transformer.o +lib-$(CONFIG_LZOP) += open_transformer.o +lib-$(CONFIG_MAN) += open_transformer.o +lib-$(CONFIG_SETFONT) += open_transformer.o +lib-$(CONFIG_FEATURE_2_4_MODULES) += open_transformer.o lib-$(CONFIG_MODINFO) += open_transformer.o lib-$(CONFIG_INSMOD) += open_transformer.o +lib-$(CONFIG_DEPMOD) += open_transformer.o +lib-$(CONFIG_RMMOD) += open_transformer.o +lib-$(CONFIG_LSMOD) += open_transformer.o +lib-$(CONFIG_MODPROBE) += open_transformer.o +lib-$(CONFIG_MODPROBE_SMALL) += open_transformer.o + lib-$(CONFIG_FEATURE_SEAMLESS_Z) += open_transformer.o decompress_uncompress.o lib-$(CONFIG_FEATURE_SEAMLESS_GZ) += open_transformer.o decompress_gunzip.o lib-$(CONFIG_FEATURE_SEAMLESS_BZ2) += open_transformer.o decompress_bunzip2.o @@ -62,7 +77,6 @@ lib-$(CONFIG_FEATURE_SEAMLESS_LZMA) += open_transformer.o decompress_unlzma. lib-$(CONFIG_FEATURE_SEAMLESS_XZ) += open_transformer.o decompress_unxz.o lib-$(CONFIG_FEATURE_COMPRESS_USAGE) += open_transformer.o decompress_bunzip2.o lib-$(CONFIG_FEATURE_COMPRESS_BBCONFIG) += open_transformer.o decompress_bunzip2.o -lib-$(CONFIG_FEATURE_TAR_TO_COMMAND) += data_extract_to_command.o ifneq ($(lib-y),) lib-y += $(COMMON_FILES) diff --git a/archival/libarchive/bz/compress.c b/archival/libarchive/bz/compress.c index e9f1afd..23de9d3 100644 --- a/archival/libarchive/bz/compress.c +++ b/archival/libarchive/bz/compress.c @@ -249,7 +249,7 @@ void generateMTFValues(EState* s) static NOINLINE void sendMTFValues(EState* s) { - int32_t v, t, i, j, gs, ge, totc, bt, bc, iter; + int32_t v, t, i, j, gs, ge, bt, bc, iter; int32_t nSelectors, alphaSize, minLen, maxLen, selCtr; int32_t nGroups; @@ -345,7 +345,6 @@ void sendMTFValues(EState* s) } #endif nSelectors = 0; - totc = 0; gs = 0; while (1) { /*--- Set group start & end marks. --*/ @@ -411,7 +410,6 @@ void sendMTFValues(EState* s) bt = t; } } - totc += bc; fave[bt]++; s->selector[nSelectors] = bt; nSelectors++; @@ -501,14 +499,14 @@ void sendMTFValues(EState* s) for (i = 0; i < 16; i++) { if (sizeof(long) <= 4) { inUse16 = inUse16*2 + - ((*(uint32_t*)&(s->inUse[i * 16 + 0]) - | *(uint32_t*)&(s->inUse[i * 16 + 4]) - | *(uint32_t*)&(s->inUse[i * 16 + 8]) - | *(uint32_t*)&(s->inUse[i * 16 + 12])) != 0); + ((*(bb__aliased_uint32_t*)&(s->inUse[i * 16 + 0]) + | *(bb__aliased_uint32_t*)&(s->inUse[i * 16 + 4]) + | *(bb__aliased_uint32_t*)&(s->inUse[i * 16 + 8]) + | *(bb__aliased_uint32_t*)&(s->inUse[i * 16 + 12])) != 0); } else { /* Our CPU can do better */ inUse16 = inUse16*2 + - ((*(uint64_t*)&(s->inUse[i * 16 + 0]) - | *(uint64_t*)&(s->inUse[i * 16 + 8])) != 0); + ((*(bb__aliased_uint64_t*)&(s->inUse[i * 16 + 0]) + | *(bb__aliased_uint64_t*)&(s->inUse[i * 16 + 8])) != 0); } } diff --git a/archival/libarchive/data_extract_all.c b/archival/libarchive/data_extract_all.c index aaab437..f8a562c 100644 --- a/archival/libarchive/data_extract_all.c +++ b/archival/libarchive/data_extract_all.c @@ -106,15 +106,28 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle) switch (file_header->mode & S_IFMT) { case S_IFREG: { /* Regular file */ + char *dst_name; int flags = O_WRONLY | O_CREAT | O_EXCL; if (archive_handle->ah_flags & ARCHIVE_O_TRUNC) flags = O_WRONLY | O_CREAT | O_TRUNC; - dst_fd = xopen3(file_header->name, + dst_name = file_header->name; +#ifdef ARCHIVE_REPLACE_VIA_RENAME + if (archive_handle->ah_flags & ARCHIVE_REPLACE_VIA_RENAME) + /* rpm-style temp file name */ + dst_name = xasprintf("%s;%x", dst_name, (int)getpid()); +#endif + dst_fd = xopen3(dst_name, flags, file_header->mode ); bb_copyfd_exact_size(archive_handle->src_fd, dst_fd, file_header->size); close(dst_fd); +#ifdef ARCHIVE_REPLACE_VIA_RENAME + if (archive_handle->ah_flags & ARCHIVE_REPLACE_VIA_RENAME) { + xrename(dst_name, file_header->name); + free(dst_name); + } +#endif break; } case S_IFDIR: diff --git a/archival/libarchive/data_extract_to_command.c b/archival/libarchive/data_extract_to_command.c index 354e958..5cf14b3 100644 --- a/archival/libarchive/data_extract_to_command.c +++ b/archival/libarchive/data_extract_to_command.c @@ -103,7 +103,7 @@ void FAST_FUNC data_extract_to_command(archive_handle_t *archive_handle) archive_handle->tar__to_command_shell, "-c", archive_handle->tar__to_command, - NULL); + (char *)0); bb_perror_msg_and_die("can't execute '%s'", archive_handle->tar__to_command_shell); } close(p[0]); diff --git a/archival/libarchive/decompress_bunzip2.c b/archival/libarchive/decompress_bunzip2.c index 24438a2..0e3ab43 100644 --- a/archival/libarchive/decompress_bunzip2.c +++ b/archival/libarchive/decompress_bunzip2.c @@ -818,7 +818,6 @@ static char *const bunzip_errors[] = { /* Dumb little test thing, decompress stdin to stdout */ int main(int argc, char **argv) { - int i; char c; int i = unpack_bz2_stream(0, 1); diff --git a/archival/libarchive/decompress_gunzip.c b/archival/libarchive/decompress_gunzip.c index ddf59bc..d27f428 100644 --- a/archival/libarchive/decompress_gunzip.c +++ b/archival/libarchive/decompress_gunzip.c @@ -336,7 +336,7 @@ static int huft_build(const unsigned *b, const unsigned n, } /* Find minimum and maximum length, bound *m by those */ - for (j = 1; (c[j] == 0) && (j <= BMAX); j++) + for (j = 1; (j <= BMAX) && (c[j] == 0); j++) continue; k = j; /* minimum code length */ for (i = BMAX; (c[i] == 0) && i; i--) diff --git a/archival/libarchive/decompress_unlzma.c b/archival/libarchive/decompress_unlzma.c index cfde8ea..ca32bd8 100644 --- a/archival/libarchive/decompress_unlzma.c +++ b/archival/libarchive/decompress_unlzma.c @@ -45,16 +45,16 @@ typedef struct { #define RC_MODEL_TOTAL_BITS 11 -/* Called twice: once at startup (LZMA_FAST only) and once in rc_normalize() */ -static size_inline void rc_read(rc_t *rc) +/* Called once in rc_do_normalize() */ +static void rc_read(rc_t *rc) { int buffer_size = safe_read(rc->fd, RC_BUFFER, RC_BUFFER_SIZE); //TODO: return -1 instead //This will make unlzma delete broken unpacked file on unpack errors if (buffer_size <= 0) bb_error_msg_and_die("unexpected EOF"); - rc->ptr = RC_BUFFER; rc->buffer_end = RC_BUFFER + buffer_size; + rc->ptr = RC_BUFFER; } /* Called twice, but one callsite is in speed_inline'd rc_is_bit_1() */ @@ -65,6 +65,12 @@ static void rc_do_normalize(rc_t *rc) rc->range <<= 8; rc->code = (rc->code << 8) | *rc->ptr++; } +static ALWAYS_INLINE void rc_normalize(rc_t *rc) +{ + if (rc->range < (1 << RC_TOP_BITS)) { + rc_do_normalize(rc); + } +} /* Called once */ static ALWAYS_INLINE rc_t* rc_init(int fd) /*, int buffer_size) */ @@ -78,15 +84,9 @@ static ALWAYS_INLINE rc_t* rc_init(int fd) /*, int buffer_size) */ /* rc->ptr = rc->buffer_end; */ for (i = 0; i < 5; i++) { -#if ENABLE_FEATURE_LZMA_FAST - if (rc->ptr >= rc->buffer_end) - rc_read(rc); - rc->code = (rc->code << 8) | *rc->ptr++; -#else rc_do_normalize(rc); -#endif } - rc->range = 0xFFFFFFFF; + rc->range = 0xffffffff; return rc; } @@ -96,13 +96,6 @@ static ALWAYS_INLINE void rc_free(rc_t *rc) free(rc); } -static ALWAYS_INLINE void rc_normalize(rc_t *rc) -{ - if (rc->range < (1 << RC_TOP_BITS)) { - rc_do_normalize(rc); - } -} - /* rc_is_bit_1 is called 9 times */ static speed_inline int rc_is_bit_1(rc_t *rc, uint16_t *p) { @@ -120,7 +113,7 @@ static speed_inline int rc_is_bit_1(rc_t *rc, uint16_t *p) } /* Called 4 times in unlzma loop */ -static speed_inline int rc_get_bit(rc_t *rc, uint16_t *p, int *symbol) +static ALWAYS_INLINE int rc_get_bit(rc_t *rc, uint16_t *p, int *symbol) { int ret = rc_is_bit_1(rc, p); *symbol = *symbol * 2 + ret; diff --git a/archival/libarchive/get_header_ar.c b/archival/libarchive/get_header_ar.c index 23c4124..c66bb3e 100644 --- a/archival/libarchive/get_header_ar.c +++ b/archival/libarchive/get_header_ar.c @@ -8,11 +8,19 @@ #include "bb_archive.h" #include "ar.h" -static unsigned read_num(const char *str, int base) +/* WARNING: Clobbers str[len], so fields must be read in reverse order! */ +static unsigned read_num(char *str, int base, int len) { + int err; + + /* ar fields are fixed length text strings (padded with spaces). + * Ensure bb_strtou doesn't read past the field in case the full + * width is used. */ + str[len] = 0; + /* This code works because * on misformatted numbers bb_strtou returns all-ones */ - int err = bb_strtou(str, NULL, base); + err = bb_strtou(str, NULL, base); if (err == -1) bb_error_msg_and_die("invalid ar header"); return err; @@ -51,11 +59,13 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle) if (ar.formatted.magic[0] != '`' || ar.formatted.magic[1] != '\n') bb_error_msg_and_die("invalid ar header"); - /* FIXME: more thorough routine would be in order here - * (we have something like that in tar) - * but for now we are lax. */ - ar.formatted.magic[0] = '\0'; /* else 4G-2 file will have size="4294967294`\n..." */ - typed->size = size = read_num(ar.formatted.size, 10); + /* + * Note that the fields MUST be read in reverse order as + * read_num() clobbers the next byte after the field! + * Order is: name, date, uid, gid, mode, size, magic. + */ + typed->size = size = read_num(ar.formatted.size, 10, + sizeof(ar.formatted.size)); /* special filenames have '/' as the first character */ if (ar.formatted.name[0] == '/') { @@ -87,10 +97,10 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle) * long filename pseudo file. Thus we decode the rest * after dealing with long filename pseudo file. */ - typed->mode = read_num(ar.formatted.mode, 8); - typed->mtime = read_num(ar.formatted.date, 10); - typed->uid = read_num(ar.formatted.uid, 10); - typed->gid = read_num(ar.formatted.gid, 10); + typed->mode = read_num(ar.formatted.mode, 8, sizeof(ar.formatted.mode)); + typed->gid = read_num(ar.formatted.gid, 10, sizeof(ar.formatted.gid)); + typed->uid = read_num(ar.formatted.uid, 10, sizeof(ar.formatted.uid)); + typed->mtime = read_num(ar.formatted.date, 10, sizeof(ar.formatted.date)); #if ENABLE_FEATURE_AR_LONG_FILENAMES if (ar.formatted.name[0] == '/') { @@ -98,7 +108,8 @@ char FAST_FUNC get_header_ar(archive_handle_t *archive_handle) /* The number after the '/' indicates the offset in the ar data section * (saved in ar_long_names) that conatains the real filename */ - long_offset = read_num(&ar.formatted.name[1], 10); + long_offset = read_num(&ar.formatted.name[1], 10, + sizeof(ar.formatted.name) - 1); if (long_offset >= ar_long_name_size) { bb_error_msg_and_die("can't resolve long filename"); } diff --git a/archival/libarchive/get_header_tar.c b/archival/libarchive/get_header_tar.c index bc09756..32f8420 100644 --- a/archival/libarchive/get_header_tar.c +++ b/archival/libarchive/get_header_tar.c @@ -198,13 +198,13 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle) * the message and we don't check whether we indeed * saw zero block directly before this. */ if (i == 0) { - xfunc_error_retval = 0; - short_read: - bb_error_msg_and_die("short read"); + bb_error_msg("short read"); + /* this merely signals end of archive, not exit(1): */ + return EXIT_FAILURE; } if (i != 512) { IF_FEATURE_TAR_AUTODETECT(goto autodetect;) - goto short_read; + bb_error_msg_and_die("short read"); } #else @@ -221,10 +221,10 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle) */ while (full_read(archive_handle->src_fd, &tar, 512) == 512) continue; - return EXIT_FAILURE; + return EXIT_FAILURE; /* "end of archive" */ } archive_handle->tar__end = 1; - return EXIT_SUCCESS; + return EXIT_SUCCESS; /* "decoded one header" */ } archive_handle->tar__end = 0; @@ -471,5 +471,5 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle) free(file_header->tar__uname); free(file_header->tar__gname); #endif - return EXIT_SUCCESS; + return EXIT_SUCCESS; /* "decoded one header" */ } diff --git a/archival/libarchive/lzo1x_9x.c b/archival/libarchive/lzo1x_9x.c index 8971329..2b490ae 100644 --- a/archival/libarchive/lzo1x_9x.c +++ b/archival/libarchive/lzo1x_9x.c @@ -94,7 +94,7 @@ typedef struct { ( ((0x9f5f * ((((b[p]<<5)^b[p+1])<<5) ^ b[p+2])) >> 5) & (SWD_HSIZE-1) ) #if defined(LZO_UNALIGNED_OK_2) -# define HEAD2(b,p) (* (uint16_t *) &(b[p])) +# define HEAD2(b,p) (* (bb__aliased_uint16_t *) &(b[p])) #else # define HEAD2(b,p) (b[p] ^ ((unsigned)b[p+1]<<8)) #endif @@ -466,7 +466,6 @@ static int find_match(lzo1x_999_t *c, lzo_swd_p s, } s->m_len = 1; - s->m_len = 1; #ifdef SWD_BEST_OFF if (s->use_best_off) memset(s->best_pos, 0, sizeof(s->best_pos)); diff --git a/archival/libarchive/open_transformer.c b/archival/libarchive/open_transformer.c index dae04aa..4e98264 100644 --- a/archival/libarchive/open_transformer.c +++ b/archival/libarchive/open_transformer.c @@ -34,6 +34,7 @@ void check_errors_in_children(int signo) if (!signo) { /* block waiting for any child */ if (wait(&status) < 0) +//FIXME: check EINTR? return; /* probably there are no children */ goto check_status; } @@ -41,14 +42,18 @@ void check_errors_in_children(int signo) /* Wait for any child without blocking */ for (;;) { if (wait_any_nohang(&status) < 0) +//FIXME: check EINTR? /* wait failed?! I'm confused... */ return; check_status: - if (WIFEXITED(status) && WEXITSTATUS(status) == 0) + /*if (WIFEXITED(status) && WEXITSTATUS(status) == 0)*/ + /* On Linux, the above can be checked simply as: */ + if (status == 0) /* this child exited with 0 */ continue; - /* Cannot happen? - if (!WIFSIGNALED(status) && !WIFEXITED(status)) ???; */ + /* Cannot happen: + if (!WIFSIGNALED(status) && !WIFEXITED(status)) ???; + */ bb_got_signal = 1; } } @@ -74,16 +79,17 @@ void FAST_FUNC open_transformer(int fd, const char *transform_prog) // FIXME: error check? #if BB_MMU { + IF_DESKTOP(long long) int r; transformer_aux_data_t aux; init_transformer_aux_data(&aux); aux.check_signature = check_signature; - transformer(&aux, fd, fd_pipe.wr); + r = transformer(&aux, fd, fd_pipe.wr); if (ENABLE_FEATURE_CLEAN_UP) { close(fd_pipe.wr); /* send EOF */ close(fd); } /* must be _exit! bug was actually seen here */ - _exit(EXIT_SUCCESS); + _exit(/*error if:*/ r < 0); } #else { diff --git a/archival/libarchive/unxz/README b/archival/libarchive/unxz/README index c5972f6..a849120 100644 --- a/archival/libarchive/unxz/README +++ b/archival/libarchive/unxz/README @@ -7,7 +7,7 @@ XZ Embedded XZ Embedded was written for use in the Linux kernel, but the code can be easily used in other environments too, including regular userspace - applications. + applications. See userspace/xzminidec.c for an example program. This README contains information that is useful only when the copy of XZ Embedded isn't part of the Linux kernel tree. You should also @@ -55,7 +55,7 @@ Compiler requirements code is modified not to support large files, which needs some more care than just using 32-bit integer instead of 64-bit). - If you use GCC, try to use a recent version. For example, on x86, + If you use GCC, try to use a recent version. For example, on x86-32, xz_dec_lzma2.c compiled with GCC 3.3.6 is 15-25 % slower than when compiled with GCC 4.3.3. @@ -93,7 +93,7 @@ BCJ filter support them always #defined doesn't hurt either. #define Instruction set BCJ filter endianness - XZ_DEC_X86 x86 or x86-64 Little endian only + XZ_DEC_X86 x86-32 or x86-64 Little endian only XZ_DEC_POWERPC PowerPC Big endian only XZ_DEC_IA64 Itanium (IA-64) Big or little endian XZ_DEC_ARM ARM Little endian only diff --git a/archival/libarchive/unxz/xz.h b/archival/libarchive/unxz/xz.h index c6c071c..e0b22db 100644 --- a/archival/libarchive/unxz/xz.h +++ b/archival/libarchive/unxz/xz.h @@ -19,6 +19,10 @@ # include <stdint.h> #endif +#ifdef __cplusplus +extern "C" { +#endif + /* In Linux, this is used to make extern functions static when needed. */ #ifndef XZ_EXTERN # define XZ_EXTERN extern @@ -70,7 +74,7 @@ enum xz_mode { * @XZ_UNSUPPORTED_CHECK: Integrity check type is not supported. Decoding * is still possible in multi-call mode by simply * calling xz_dec_run() again. - * NOTE: This return value is used only if + * Note that this return value is used only if * XZ_DEC_ANY_CHECK was defined at build time, * which is not used in the kernel. Unsupported * check types return XZ_OPTIONS_ERROR if @@ -105,7 +109,7 @@ enum xz_mode { * stream that is truncated or otherwise corrupt. * * In single-call mode, XZ_BUF_ERROR is returned only when the output buffer - * is too small, or the compressed input is corrupt in a way that makes the + * is too small or the compressed input is corrupt in a way that makes the * decoder produce more output than the caller expected. When it is * (relatively) clear that the compressed input is truncated, XZ_DATA_ERROR * is used instead of XZ_BUF_ERROR. @@ -207,8 +211,8 @@ XZ_EXTERN struct xz_dec * XZ_FUNC xz_dec_init( * The possible return values depend on build options and operation mode. * See enum xz_ret for details. * - * NOTE: If an error occurs in single-call mode (return value is not - * XZ_STREAM_END), b->in_pos and b->out_pos are not modified, and the + * Note that if an error occurs in single-call mode (return value is not + * XZ_STREAM_END), b->in_pos and b->out_pos are not modified and the * contents of the output buffer from b->out[b->out_pos] onward are * undefined. This is true even after XZ_BUF_ERROR, because with some filter * chains, there may be a second pass over the output buffer, and this pass @@ -268,4 +272,9 @@ XZ_EXTERN void XZ_FUNC xz_crc32_init(void); XZ_EXTERN uint32_t XZ_FUNC xz_crc32( const uint8_t *buf, size_t size, uint32_t crc); #endif + +#ifdef __cplusplus +} +#endif + #endif diff --git a/archival/libarchive/unxz/xz_dec_bcj.c b/archival/libarchive/unxz/xz_dec_bcj.c index 09162b5..e0f913a 100644 --- a/archival/libarchive/unxz/xz_dec_bcj.c +++ b/archival/libarchive/unxz/xz_dec_bcj.c @@ -77,10 +77,13 @@ struct xz_dec_bcj { #ifdef XZ_DEC_X86 /* - * This is macro used to test the most significant byte of a memory address + * This is used to test the most significant byte of a memory address * in an x86 instruction. */ -#define bcj_x86_test_msbyte(b) ((b) == 0x00 || (b) == 0xFF) +static inline int bcj_x86_test_msbyte(uint8_t b) +{ + return b == 0x00 || b == 0xFF; +} static noinline_for_stack size_t XZ_FUNC bcj_x86( struct xz_dec_bcj *s, uint8_t *buf, size_t size) @@ -443,8 +446,12 @@ XZ_EXTERN enum xz_ret XZ_FUNC xz_dec_bcj_run(struct xz_dec_bcj *s, * next filter in the chain. Apply the BCJ filter on the new data * in the output buffer. If everything cannot be filtered, copy it * to temp and rewind the output buffer position accordingly. + * + * This needs to be always run when temp.size == 0 to handle a special + * case where the output buffer is full and the next filter has no + * more output coming but hasn't returned XZ_STREAM_END yet. */ - if (s->temp.size < b->out_size - b->out_pos) { + if (s->temp.size < b->out_size - b->out_pos || s->temp.size == 0) { out_start = b->out_pos; memcpy(b->out + b->out_pos, s->temp.buf, s->temp.size); b->out_pos += s->temp.size; @@ -467,16 +474,25 @@ XZ_EXTERN enum xz_ret XZ_FUNC xz_dec_bcj_run(struct xz_dec_bcj *s, s->temp.size = b->out_pos - out_start; b->out_pos -= s->temp.size; memcpy(s->temp.buf, b->out + b->out_pos, s->temp.size); + + /* + * If there wasn't enough input to the next filter to fill + * the output buffer with unfiltered data, there's no point + * to try decoding more data to temp. + */ + if (b->out_pos + s->temp.size < b->out_size) + return XZ_OK; } /* - * If we have unfiltered data in temp, try to fill by decoding more - * data from the next filter. Apply the BCJ filter on temp. Then we - * hopefully can fill the actual output buffer by copying filtered - * data from temp. A mix of filtered and unfiltered data may be left - * in temp; it will be taken care on the next call to this function. + * We have unfiltered data in temp. If the output buffer isn't full + * yet, try to fill the temp buffer by decoding more data from the + * next filter. Apply the BCJ filter on temp. Then we hopefully can + * fill the actual output buffer by copying filtered data from temp. + * A mix of filtered and unfiltered data may be left in temp; it will + * be taken care on the next call to this function. */ - if (s->temp.size > 0) { + if (b->out_pos < b->out_size) { /* Make b->out{,_pos,_size} temporarily point to s->temp. */ s->out = b->out; s->out_pos = b->out_pos; diff --git a/archival/libarchive/unxz/xz_dec_lzma2.c b/archival/libarchive/unxz/xz_dec_lzma2.c index da71cb4..3c2dc88 100644 --- a/archival/libarchive/unxz/xz_dec_lzma2.c +++ b/archival/libarchive/unxz/xz_dec_lzma2.c @@ -407,7 +407,6 @@ static void XZ_FUNC dict_uncompressed( b->out_pos += copy_size; b->in_pos += copy_size; - } } @@ -972,6 +971,9 @@ XZ_EXTERN NOINLINE enum xz_ret XZ_FUNC xz_dec_lzma2_run( */ tmp = b->in[b->in_pos++]; + if (tmp == 0x00) + return XZ_STREAM_END; + if (tmp >= 0xE0 || tmp == 0x01) { s->lzma2.need_props = true; s->lzma2.need_dict_reset = false; @@ -1004,9 +1006,6 @@ XZ_EXTERN NOINLINE enum xz_ret XZ_FUNC xz_dec_lzma2_run( lzma_reset(s); } } else { - if (tmp == 0x00) - return XZ_STREAM_END; - if (tmp > 0x02) return XZ_DATA_ERROR; diff --git a/archival/libarchive/unxz/xz_stream.h b/archival/libarchive/unxz/xz_stream.h index 36f2a7c..66cb5a7 100644 --- a/archival/libarchive/unxz/xz_stream.h +++ b/archival/libarchive/unxz/xz_stream.h @@ -25,15 +25,20 @@ #define STREAM_HEADER_SIZE 12 -#define HEADER_MAGIC "\3757zXZ\0" +#define HEADER_MAGIC "\3757zXZ" #define HEADER_MAGIC_SIZE 6 #define FOOTER_MAGIC "YZ" #define FOOTER_MAGIC_SIZE 2 /* - * Variable-length integer can hold a 63-bit unsigned integer, or a special - * value to indicate that the value is unknown. + * Variable-length integer can hold a 63-bit unsigned integer or a special + * value indicating that the value is unknown. + * + * Experimental: vli_type can be defined to uint32_t to save a few bytes + * in code size (no effect on speed). Doing so limits the uncompressed and + * compressed size of the file to less than 256 MiB and may also weaken + * error detection slightly. */ typedef uint64_t vli_type; diff --git a/archival/lzop.c b/archival/lzop.c index 56003d4..5062d93 100644 --- a/archival/lzop.c +++ b/archival/lzop.c @@ -25,6 +25,26 @@ "Minimalized" for busybox by Alain Knaff */ +//config:config LZOP +//config: bool "lzop" +//config: default y +//config: help +//config: Lzop compression/decompresion. +//config: +//config:config LZOP_COMPR_HIGH +//config: bool "lzop compression levels 7,8,9 (not very useful)" +//config: default n +//config: depends on LZOP +//config: help +//config: High levels (7,8,9) of lzop compression. These levels +//config: are actually slower than gzip at equivalent compression ratios +//config: and take up 3.2K of code. + +//applet:IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP)) +//applet:IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat)) +//applet:IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop)) +//kbuild:lib-$(CONFIG_LZOP) += lzop.o + //usage:#define lzop_trivial_usage //usage: "[-cfvd123456789CF] [FILE]..." //usage:#define lzop_full_usage "\n\n" @@ -436,25 +456,27 @@ struct globals { //#define LZOP_VERSION_STRING "1.01" //#define LZOP_VERSION_DATE "Apr 27th 2003" -#define OPTION_STRING "cfvdt123456789CF" +#define OPTION_STRING "cfvqdt123456789CF" +/* Note: must be kept in sync with archival/bbunzip.c */ enum { OPT_STDOUT = (1 << 0), OPT_FORCE = (1 << 1), OPT_VERBOSE = (1 << 2), - OPT_DECOMPRESS = (1 << 3), - OPT_TEST = (1 << 4), - OPT_1 = (1 << 5), - OPT_2 = (1 << 6), - OPT_3 = (1 << 7), - OPT_4 = (1 << 8), - OPT_5 = (1 << 9), - OPT_6 = (1 << 10), - OPT_789 = (7 << 11), - OPT_7 = (1 << 11), - OPT_8 = (1 << 12), - OPT_C = (1 << 14), - OPT_F = (1 << 15), + OPT_QUIET = (1 << 3), + OPT_DECOMPRESS = (1 << 4), + OPT_TEST = (1 << 5), + OPT_1 = (1 << 6), + OPT_2 = (1 << 7), + OPT_3 = (1 << 8), + OPT_4 = (1 << 9), + OPT_5 = (1 << 10), + OPT_6 = (1 << 11), + OPT_789 = (7 << 12), + OPT_7 = (1 << 13), + OPT_8 = (1 << 14), + OPT_C = (1 << 15), + OPT_F = (1 << 16), }; /**********************************************************************/ @@ -1093,7 +1115,7 @@ int lzop_main(int argc UNUSED_PARAM, char **argv) if (applet_name[4] == 'c') option_mask32 |= (OPT_STDOUT | OPT_DECOMPRESS); /* unlzop? */ - if (applet_name[0] == 'u') + if (applet_name[4] == 'o') option_mask32 |= OPT_DECOMPRESS; global_crc32_table = crc32_filltable(NULL, 0); diff --git a/archival/rpm.c b/archival/rpm.c index 6757a6c..885eddd 100644 --- a/archival/rpm.c +++ b/archival/rpm.c @@ -7,6 +7,15 @@ * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +//config:config RPM +//config: bool "rpm" +//config: default y +//config: help +//config: Mini RPM applet - queries and extracts RPM packages. + +//applet:IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_RPM) += rpm.o + //usage:#define rpm_trivial_usage //usage: "-i PACKAGE.rpm; rpm -qp[ildc] PACKAGE.rpm" //usage:#define rpm_full_usage "\n\n" @@ -14,10 +23,10 @@ //usage: "\nCommands:" //usage: "\n -i Install package" //usage: "\n -qp Query package" -//usage: "\n -i Show information" -//usage: "\n -l List contents" -//usage: "\n -d List documents" -//usage: "\n -c List config files" +//usage: "\n -qpi Show information" +//usage: "\n -qpl List contents" +//usage: "\n -qpd List documents" +//usage: "\n -qpc List config files" #include "libbb.h" #include "bb_archive.h" @@ -79,136 +88,13 @@ typedef struct { uint32_t count; /* 4 byte count */ } rpm_index; -static void *map; -static rpm_index **mytags; -static int tagcount; - -static void extract_cpio(int fd, const char *source_rpm); -static rpm_index **rpm_gettags(int fd, int *num_tags); -static int bsearch_rpmtag(const void *key, const void *item); -static char *rpm_getstr(int tag, int itemindex); -static int rpm_getint(int tag, int itemindex); -static int rpm_getcount(int tag); -static void fileaction_dobackup(char *filename, int fileref); -static void fileaction_setowngrp(char *filename, int fileref); -static void loop_through_files(int filetag, void (*fileaction)(char *filename, int fileref)); - -int rpm_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -int rpm_main(int argc, char **argv) -{ - int opt = 0, func = 0, rpm_fd, offset; - const int pagesize = getpagesize(); - - while ((opt = getopt(argc, argv, "iqpldc")) != -1) { - switch (opt) { - case 'i': /* First arg: Install mode, with q: Information */ - if (!func) func = rpm_install; - else func |= rpm_query_info; - break; - case 'q': /* First arg: Query mode */ - if (func) bb_show_usage(); - func = rpm_query; - break; - case 'p': /* Query a package */ - func |= rpm_query_package; - break; - case 'l': /* List files in a package */ - func |= rpm_query_list; - break; - case 'd': /* List doc files in a package (implies list) */ - func |= rpm_query_list; - func |= rpm_query_list_doc; - break; - case 'c': /* List config files in a package (implies list) */ - func |= rpm_query_list; - func |= rpm_query_list_config; - break; - default: - bb_show_usage(); - } - } - argv += optind; - //argc -= optind; - if (!argv[0]) { - bb_show_usage(); - } - - while (*argv) { - const char *source_rpm; - - rpm_fd = xopen(*argv++, O_RDONLY); - mytags = rpm_gettags(rpm_fd, &tagcount); - if (!mytags) - bb_error_msg_and_die("error reading rpm header"); - offset = xlseek(rpm_fd, 0, SEEK_CUR); - /* Mimimum is one page */ - map = mmap(0, offset > pagesize ? (offset + offset % pagesize) : pagesize, PROT_READ, MAP_PRIVATE, rpm_fd, 0); - - source_rpm = rpm_getstr(TAG_SOURCERPM, 0); - - if (func & rpm_install) { - /* Backup any config files */ - loop_through_files(TAG_BASENAMES, fileaction_dobackup); - /* Extact the archive */ - extract_cpio(rpm_fd, source_rpm); - /* Set the correct file uid/gid's */ - loop_through_files(TAG_BASENAMES, fileaction_setowngrp); - } - else if ((func & (rpm_query|rpm_query_package)) == (rpm_query|rpm_query_package)) { - if (!(func & (rpm_query_info|rpm_query_list))) { - /* If just a straight query, just give package name */ - printf("%s-%s-%s\n", rpm_getstr(TAG_NAME, 0), rpm_getstr(TAG_VERSION, 0), rpm_getstr(TAG_RELEASE, 0)); - } - if (func & rpm_query_info) { - /* Do the nice printout */ - time_t bdate_time; - struct tm *bdate_ptm; - char bdatestring[50]; - const char *p; - - p = rpm_getstr(TAG_PREFIXS, 0); - if (!p) p = "(not relocateable)"; - printf("Name : %-29sRelocations: %s\n", rpm_getstr(TAG_NAME, 0), p); - p = rpm_getstr(TAG_VENDOR, 0); - if (!p) p = "(none)"; - printf("Version : %-34sVendor: %s\n", rpm_getstr(TAG_VERSION, 0), p); - bdate_time = rpm_getint(TAG_BUILDTIME, 0); - bdate_ptm = localtime(&bdate_time); - strftime(bdatestring, 50, "%a %d %b %Y %T %Z", bdate_ptm); - printf("Release : %-30sBuild Date: %s\n", rpm_getstr(TAG_RELEASE, 0), bdatestring); - printf("Install date: %-30sBuild Host: %s\n", "(not installed)", rpm_getstr(TAG_BUILDHOST, 0)); - printf("Group : %-30sSource RPM: %s\n", rpm_getstr(TAG_GROUP, 0), source_rpm); - printf("Size : %-33dLicense: %s\n", rpm_getint(TAG_SIZE, 0), rpm_getstr(TAG_LICENSE, 0)); - printf("URL : %s\n", rpm_getstr(TAG_URL, 0)); - printf("Summary : %s\n", rpm_getstr(TAG_SUMMARY, 0)); - printf("Description :\n%s\n", rpm_getstr(TAG_DESCRIPTION, 0)); - } - if (func & rpm_query_list) { - int count, it, flags; - count = rpm_getcount(TAG_BASENAMES); - for (it = 0; it < count; it++) { - flags = rpm_getint(TAG_FILEFLAGS, it); - switch (func & (rpm_query_list_doc|rpm_query_list_config)) { - case rpm_query_list_doc: - if (!(flags & RPMFILE_DOC)) continue; - break; - case rpm_query_list_config: - if (!(flags & RPMFILE_CONFIG)) continue; - break; - case rpm_query_list_doc|rpm_query_list_config: - if (!(flags & (RPMFILE_CONFIG|RPMFILE_DOC))) continue; - break; - } - printf("%s%s\n", - rpm_getstr(TAG_DIRNAMES, rpm_getint(TAG_DIRINDEXES, it)), - rpm_getstr(TAG_BASENAMES, it)); - } - } - } - free(mytags); - } - return 0; -} +struct globals { + void *map; + rpm_index **mytags; + int tagcount; +} FIX_ALIASING; +#define G (*(struct globals*)&bb_common_bufsiz1) +#define INIT_G() do { } while (0) static void extract_cpio(int fd, const char *source_rpm) { @@ -231,8 +117,8 @@ static void extract_cpio(int fd, const char *source_rpm) /* compat: overwrite existing files. * try "rpm -i foo.src.rpm" few times in a row - * standard rpm will not complain. - * (TODO? real rpm creates "file;1234" and then renames it) */ - | ARCHIVE_UNLINK_OLD; + */ + | ARCHIVE_REPLACE_VIA_RENAME; archive_handle->src_fd = fd; /*archive_handle->offset = 0; - init_handle() did it */ @@ -294,7 +180,7 @@ static int bsearch_rpmtag(const void *key, const void *item) static int rpm_getcount(int tag) { rpm_index **found; - found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); + found = bsearch(&tag, G.mytags, G.tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); if (!found) return 0; return found[0]->count; @@ -303,7 +189,7 @@ static int rpm_getcount(int tag) static char *rpm_getstr(int tag, int itemindex) { rpm_index **found; - found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); + found = bsearch(&tag, G.mytags, G.tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); if (!found || itemindex >= found[0]->count) return NULL; if (found[0]->type == RPM_STRING_TYPE @@ -311,7 +197,7 @@ static char *rpm_getstr(int tag, int itemindex) || found[0]->type == RPM_STRING_ARRAY_TYPE ) { int n; - char *tmpstr = (char *) map + found[0]->offset; + char *tmpstr = (char *) G.map + found[0]->offset; for (n = 0; n < itemindex; n++) tmpstr = tmpstr + strlen(tmpstr) + 1; return tmpstr; @@ -322,32 +208,25 @@ static char *rpm_getstr(int tag, int itemindex) static int rpm_getint(int tag, int itemindex) { rpm_index **found; - int *tmpint; /* NB: using int8_t* would be easier to code */ + char *tmpint; /* gcc throws warnings here when sizeof(void*)!=sizeof(int) ... * it's ok to ignore it because tag won't be used as a pointer */ - found = bsearch(&tag, mytags, tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); + found = bsearch(&tag, G.mytags, G.tagcount, sizeof(struct rpmtag *), bsearch_rpmtag); if (!found || itemindex >= found[0]->count) return -1; - tmpint = (int *) ((char *) map + found[0]->offset); - + tmpint = (char *) G.map + found[0]->offset; if (found[0]->type == RPM_INT32_TYPE) { - tmpint = (int *) ((char *) tmpint + itemindex*4); - /*return ntohl(*tmpint);*/ - /* int can be != int32_t */ + tmpint += itemindex*4; return ntohl(*(int32_t*)tmpint); } if (found[0]->type == RPM_INT16_TYPE) { - tmpint = (int *) ((char *) tmpint + itemindex*2); - /* ??? read int, and THEN ntohs() it?? */ - /*return ntohs(*tmpint);*/ + tmpint += itemindex*2; return ntohs(*(int16_t*)tmpint); } if (found[0]->type == RPM_INT8_TYPE) { - tmpint = (int *) ((char *) tmpint + itemindex); - /* ??? why we don't read byte here??? */ - /*return ntohs(*tmpint);*/ + tmpint += itemindex; return *(int8_t*)tmpint; } return -1; @@ -392,3 +271,134 @@ static void loop_through_files(int filetag, void (*fileaction)(char *filename, i free(filename); } } + +int rpm_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int rpm_main(int argc, char **argv) +{ + int opt, func = 0; + const unsigned pagesize = getpagesize(); + + while ((opt = getopt(argc, argv, "iqpldc")) != -1) { + switch (opt) { + case 'i': /* First arg: Install mode, with q: Information */ + if (!func) func = rpm_install; + else func |= rpm_query_info; + break; + case 'q': /* First arg: Query mode */ + if (func) bb_show_usage(); + func = rpm_query; + break; + case 'p': /* Query a package */ + func |= rpm_query_package; + break; + case 'l': /* List files in a package */ + func |= rpm_query_list; + break; + case 'd': /* List doc files in a package (implies list) */ + func |= rpm_query_list; + func |= rpm_query_list_doc; + break; + case 'c': /* List config files in a package (implies list) */ + func |= rpm_query_list; + func |= rpm_query_list_config; + break; + default: + bb_show_usage(); + } + } + argv += optind; + //argc -= optind; + if (!argv[0]) { + bb_show_usage(); + } + + while (*argv) { + int rpm_fd; + unsigned mapsize; + const char *source_rpm; + + rpm_fd = xopen(*argv++, O_RDONLY); + G.mytags = rpm_gettags(rpm_fd, &G.tagcount); + if (!G.mytags) + bb_error_msg_and_die("error reading rpm header"); + mapsize = xlseek(rpm_fd, 0, SEEK_CUR); + mapsize = (mapsize + pagesize) & -(int)pagesize; + /* Some NOMMU systems prefer MAP_PRIVATE over MAP_SHARED */ + G.map = mmap(0, mapsize, PROT_READ, MAP_PRIVATE, rpm_fd, 0); +//FIXME: error check? + + source_rpm = rpm_getstr(TAG_SOURCERPM, 0); + + if (func & rpm_install) { + /* Backup any config files */ + loop_through_files(TAG_BASENAMES, fileaction_dobackup); + /* Extact the archive */ + extract_cpio(rpm_fd, source_rpm); + /* Set the correct file uid/gid's */ + loop_through_files(TAG_BASENAMES, fileaction_setowngrp); + } + else if ((func & (rpm_query|rpm_query_package)) == (rpm_query|rpm_query_package)) { + if (!(func & (rpm_query_info|rpm_query_list))) { + /* If just a straight query, just give package name */ + printf("%s-%s-%s\n", rpm_getstr(TAG_NAME, 0), rpm_getstr(TAG_VERSION, 0), rpm_getstr(TAG_RELEASE, 0)); + } + if (func & rpm_query_info) { + /* Do the nice printout */ + time_t bdate_time; + struct tm *bdate_ptm; + char bdatestring[50]; + const char *p; + + printf("%-12s: %s\n", "Name" , rpm_getstr(TAG_NAME, 0)); + /* TODO compat: add "Epoch" here */ + printf("%-12s: %s\n", "Version" , rpm_getstr(TAG_VERSION, 0)); + printf("%-12s: %s\n", "Release" , rpm_getstr(TAG_RELEASE, 0)); + /* add "Architecture" */ + printf("%-12s: %s\n", "Install Date", "(not installed)"); + printf("%-12s: %s\n", "Group" , rpm_getstr(TAG_GROUP, 0)); + printf("%-12s: %d\n", "Size" , rpm_getint(TAG_SIZE, 0)); + printf("%-12s: %s\n", "License" , rpm_getstr(TAG_LICENSE, 0)); + /* add "Signature" */ + printf("%-12s: %s\n", "Source RPM" , source_rpm ? source_rpm : "(none)"); + bdate_time = rpm_getint(TAG_BUILDTIME, 0); + bdate_ptm = localtime(&bdate_time); + strftime(bdatestring, 50, "%a %d %b %Y %T %Z", bdate_ptm); + printf("%-12s: %s\n", "Build Date" , bdatestring); + printf("%-12s: %s\n", "Build Host" , rpm_getstr(TAG_BUILDHOST, 0)); + p = rpm_getstr(TAG_PREFIXS, 0); + printf("%-12s: %s\n", "Relocations" , p ? p : "(not relocatable)"); + /* add "Packager" */ + p = rpm_getstr(TAG_VENDOR, 0); + printf("%-12s: %s\n", "Vendor" , p ? p : "(none)"); + printf("%-12s: %s\n", "URL" , rpm_getstr(TAG_URL, 0)); + printf("%-12s: %s\n", "Summary" , rpm_getstr(TAG_SUMMARY, 0)); + printf("Description :\n%s\n", rpm_getstr(TAG_DESCRIPTION, 0)); + } + if (func & rpm_query_list) { + int count, it, flags; + count = rpm_getcount(TAG_BASENAMES); + for (it = 0; it < count; it++) { + flags = rpm_getint(TAG_FILEFLAGS, it); + switch (func & (rpm_query_list_doc|rpm_query_list_config)) { + case rpm_query_list_doc: + if (!(flags & RPMFILE_DOC)) continue; + break; + case rpm_query_list_config: + if (!(flags & RPMFILE_CONFIG)) continue; + break; + case rpm_query_list_doc|rpm_query_list_config: + if (!(flags & (RPMFILE_CONFIG|RPMFILE_DOC))) continue; + break; + } + printf("%s%s\n", + rpm_getstr(TAG_DIRNAMES, rpm_getint(TAG_DIRINDEXES, it)), + rpm_getstr(TAG_BASENAMES, it)); + } + } + } + munmap(G.map, mapsize); + free(G.mytags); + close(rpm_fd); + } + return 0; +} diff --git a/archival/rpm2cpio.c b/archival/rpm2cpio.c index f3dfa51..61adde7 100644 --- a/archival/rpm2cpio.c +++ b/archival/rpm2cpio.c @@ -7,6 +7,15 @@ * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +//config:config RPM2CPIO +//config: bool "rpm2cpio" +//config: default y +//config: help +//config: Converts a RPM file into a CPIO archive. + +//applet:IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_RPM2CPIO) += rpm2cpio.o + //usage:#define rpm2cpio_trivial_usage //usage: "package.rpm" //usage:#define rpm2cpio_full_usage "\n\n" diff --git a/archival/tar.c b/archival/tar.c index baca798..fa2deb5 100644 --- a/archival/tar.c +++ b/archival/tar.c @@ -22,7 +22,6 @@ * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ - /* TODO: security with -C DESTDIR option can be enhanced. * Consider tar file created via: * $ tar cvf bug.tar anything.txt @@ -42,6 +41,109 @@ * This doesn't feel right, and IIRC GNU tar doesn't do that. */ +//config:config TAR +//config: bool "tar" +//config: default y +//config: help +//config: tar is an archiving program. It's commonly used with gzip to +//config: create compressed archives. It's probably the most widely used +//config: UNIX archive program. +//config: +//config:config FEATURE_TAR_CREATE +//config: bool "Enable archive creation" +//config: default y +//config: depends on TAR +//config: help +//config: If you enable this option you'll be able to create +//config: tar archives using the `-c' option. +//config: +//config:config FEATURE_TAR_AUTODETECT +//config: bool "Autodetect compressed tarballs" +//config: default y +//config: depends on TAR && (FEATURE_SEAMLESS_Z || FEATURE_SEAMLESS_GZ || FEATURE_SEAMLESS_BZ2 || FEATURE_SEAMLESS_LZMA || FEATURE_SEAMLESS_XZ) +//config: help +//config: With this option tar can automatically detect compressed +//config: tarballs. Currently it works only on files (not pipes etc). +//config: +//config:config FEATURE_TAR_FROM +//config: bool "Enable -X (exclude from) and -T (include from) options)" +//config: default y +//config: depends on TAR +//config: help +//config: If you enable this option you'll be able to specify +//config: a list of files to include or exclude from an archive. +//config: +//config:config FEATURE_TAR_OLDGNU_COMPATIBILITY +//config: bool "Support for old tar header format" +//config: default y +//config: depends on TAR || DPKG +//config: help +//config: This option is required to unpack archives created in +//config: the old GNU format; help to kill this old format by +//config: repacking your ancient archives with the new format. +//config: +//config:config FEATURE_TAR_OLDSUN_COMPATIBILITY +//config: bool "Enable untarring of tarballs with checksums produced by buggy Sun tar" +//config: default y +//config: depends on TAR || DPKG +//config: help +//config: This option is required to unpack archives created by some old +//config: version of Sun's tar (it was calculating checksum using signed +//config: arithmetic). It is said to be fixed in newer Sun tar, but "old" +//config: tarballs still exist. +//config: +//config:config FEATURE_TAR_GNU_EXTENSIONS +//config: bool "Support for GNU tar extensions (long filenames)" +//config: default y +//config: depends on TAR || DPKG +//config: help +//config: With this option busybox supports GNU long filenames and +//config: linknames. +//config: +//config:config FEATURE_TAR_LONG_OPTIONS +//config: bool "Enable long options" +//config: default y +//config: depends on TAR && LONG_OPTS +//config: help +//config: Enable use of long options, increases size by about 400 Bytes +//config: +//config:config FEATURE_TAR_TO_COMMAND +//config: bool "Support for writing to an external program" +//config: default y +//config: depends on TAR && FEATURE_TAR_LONG_OPTIONS +//config: help +//config: If you enable this option you'll be able to instruct tar to send +//config: the contents of each extracted file to the standard input of an +//config: external program. +//config: +//config:config FEATURE_TAR_UNAME_GNAME +//config: bool "Enable use of user and group names" +//config: default y +//config: depends on TAR +//config: help +//config: Enables use of user and group names in tar. This affects contents +//config: listings (-t) and preserving permissions when unpacking (-p). +//config: +200 bytes. +//config: +//config:config FEATURE_TAR_NOPRESERVE_TIME +//config: bool "Enable -m (do not preserve time) option" +//config: default y +//config: depends on TAR +//config: help +//config: With this option busybox supports GNU tar -m +//config: (do not preserve time) option. +//config: +//config:config FEATURE_TAR_SELINUX +//config: bool "Support for extracting SELinux labels" +//config: default n +//config: depends on TAR && SELINUX +//config: help +//config: With this option busybox supports restoring SELinux labels +//config: when extracting files from tar archives. + +//applet:IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_TAR) += tar.o + #include <fnmatch.h> #include "libbb.h" #include "bb_archive.h" @@ -566,7 +668,7 @@ static void NOINLINE vfork_compressor(int tar_fd, int gzip) xmove_fd(gzipDataPipe.rd, 0); xmove_fd(tar_fd, 1); /* exec gzip/bzip2 program/applet */ - BB_EXECLP(zip_exec, zip_exec, "-f", NULL); + BB_EXECLP(zip_exec, zip_exec, "-f", (char *)0); vfork_exec_errno = errno; _exit(EXIT_FAILURE); } @@ -678,14 +780,12 @@ static llist_t *append_file_list_to_list(llist_t *list) char *cp = last_char_is(line, '/'); if (cp > line) *cp = '\0'; - llist_add_to(&newlist, line); + llist_add_to_end(&newlist, line); } fclose(src_stream); } return newlist; } -#else -# define append_file_list_to_list(x) 0 #endif //usage:#define tar_trivial_usage @@ -1095,8 +1195,14 @@ int tar_main(int argc UNUSED_PARAM, char **argv) /*tar_handle->offset = 0; - already is */ } + /* Zero processed headers (== empty file) is not a valid tarball. + * We (ab)use bb_got_signal as exitcode here, + * because check_errors_in_children() uses _it_ as error indicator. + */ + bb_got_signal = EXIT_FAILURE; + while (get_header_tar(tar_handle) == EXIT_SUCCESS) - continue; + bb_got_signal = EXIT_SUCCESS; /* saw at least one header, good */ /* Check that every file that should have been extracted was */ while (tar_handle->accept) { @@ -1112,8 +1218,9 @@ int tar_main(int argc UNUSED_PARAM, char **argv) close(tar_handle->src_fd); if (SEAMLESS_COMPRESSION || OPT_COMPRESS) { + /* Set bb_got_signal to 1 if a child died with !0 exitcode */ check_errors_in_children(0); - return bb_got_signal; } - return EXIT_SUCCESS; + + return bb_got_signal; } diff --git a/archival/unzip.c b/archival/unzip.c index 9add637..c9625ab 100644 --- a/archival/unzip.c +++ b/archival/unzip.c @@ -9,16 +9,27 @@ * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ - /* For reference see * http://www.pkware.com/company/standards/appnote/ * http://www.info-zip.org/pub/infozip/doc/appnote-iz-latest.zip - */ - -/* TODO + * + * TODO * Zip64 + other methods */ +//config:config UNZIP +//config: bool "unzip" +//config: default y +//config: help +//config: unzip will list or extract files from a ZIP archive, +//config: commonly found on DOS/WIN systems. The default behavior +//config: (with no options) is to extract the archive into the +//config: current directory. Use the `-d' option to extract to a +//config: directory of your choice. + +//applet:IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP)) +//kbuild:lib-$(CONFIG_UNZIP) += unzip.o + //usage:#define unzip_trivial_usage //usage: "[-lnopq] FILE[.zip] [FILE]... [-x FILE...] [-d DIR]" //usage:#define unzip_full_usage "\n\n" @@ -163,7 +174,17 @@ enum { zip_fd = 3 }; #if ENABLE_DESKTOP -#define PEEK_FROM_END 16384 +/* Seen in the wild: + * Self-extracting PRO2K3XP_32.exe contains 19078464 byte zip archive, + * where CDE was nearly 48 kbytes before EOF. + * (Surprisingly, it also apparently has *another* CDE structure + * closer to the end, with bogus cdf_offset). + * To make extraction work, bumped PEEK_FROM_END from 16k to 64k. + */ +#define PEEK_FROM_END (64*1024) + +/* This value means that we failed to find CDF */ +#define BAD_CDF_OFFSET ((uint32_t)0xffffffff) /* NB: does not preserve file position! */ static uint32_t find_cdf_offset(void) @@ -180,6 +201,7 @@ static uint32_t find_cdf_offset(void) xlseek(zip_fd, end, SEEK_SET); full_read(zip_fd, buf, PEEK_FROM_END); + cde_header.formatted.cdf_offset = BAD_CDF_OFFSET; p = buf; while (p <= buf + PEEK_FROM_END - CDE_HEADER_LEN - 4) { if (*p != 'P') { @@ -195,11 +217,17 @@ static uint32_t find_cdf_offset(void) /* we found CDE! */ memcpy(cde_header.raw, p + 1, CDE_HEADER_LEN); FIX_ENDIANNESS_CDE(cde_header); - free(buf); - return cde_header.formatted.cdf_offset; + /* + * I've seen .ZIP files with seemingly valid CDEs + * where cdf_offset points past EOF - ?? + * Ignore such CDEs: + */ + if (cde_header.formatted.cdf_offset < end + (p - buf)) + break; + cde_header.formatted.cdf_offset = BAD_CDF_OFFSET; } - //free(buf); - bb_error_msg_and_die("can't find file table"); + free(buf); + return cde_header.formatted.cdf_offset; }; static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr) @@ -211,13 +239,15 @@ static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr) if (!cdf_offset) cdf_offset = find_cdf_offset(); - xlseek(zip_fd, cdf_offset + 4, SEEK_SET); - xread(zip_fd, cdf_ptr->raw, CDF_HEADER_LEN); - FIX_ENDIANNESS_CDF(*cdf_ptr); - cdf_offset += 4 + CDF_HEADER_LEN - + cdf_ptr->formatted.file_name_length - + cdf_ptr->formatted.extra_field_length - + cdf_ptr->formatted.file_comment_length; + if (cdf_offset != BAD_CDF_OFFSET) { + xlseek(zip_fd, cdf_offset + 4, SEEK_SET); + xread(zip_fd, cdf_ptr->raw, CDF_HEADER_LEN); + FIX_ENDIANNESS_CDF(*cdf_ptr); + cdf_offset += 4 + CDF_HEADER_LEN + + cdf_ptr->formatted.file_name_length + + cdf_ptr->formatted.extra_field_length + + cdf_ptr->formatted.file_comment_length; + } xlseek(zip_fd, org, SEEK_SET); return cdf_offset; @@ -226,8 +256,9 @@ static uint32_t read_next_cdf(uint32_t cdf_offset, cdf_header_t *cdf_ptr) static void unzip_skip(off_t skip) { - if (lseek(zip_fd, skip, SEEK_CUR) == (off_t)-1) - bb_copyfd_exact_size(zip_fd, -1, skip); + if (skip != 0) + if (lseek(zip_fd, skip, SEEK_CUR) == (off_t)-1) + bb_copyfd_exact_size(zip_fd, -1, skip); } static void unzip_create_leading_dirs(const char *fn) @@ -267,6 +298,14 @@ static void unzip_extract(zip_header_t *zip_header, int dst_fd) } } +static void my_fgets80(char *buf80) +{ + fflush_all(); + if (!fgets(buf80, 80, stdin)) { + bb_perror_msg_and_die("can't read standard input"); + } +} + int unzip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int unzip_main(int argc, char **argv) { @@ -291,7 +330,7 @@ int unzip_main(int argc, char **argv) llist_t *zreject = NULL; char *base_dir = NULL; int i, opt; - char key_buf[80]; + char key_buf[80]; /* must match size used by my_fgets80 */ struct stat stat_buf; /* -q, -l and -v: UnZip 5.52 of 28 February 2005, by Info-ZIP: @@ -520,21 +559,31 @@ int unzip_main(int argc, char **argv) bb_error_msg_and_die("zip flag 1 (encryption) is not supported"); } - { + if (cdf_offset != BAD_CDF_OFFSET) { cdf_header_t cdf_header; cdf_offset = read_next_cdf(cdf_offset, &cdf_header); + /* + * Note: cdf_offset can become BAD_CDF_OFFSET after the above call. + */ if (zip_header.formatted.zip_flags & SWAP_LE16(0x0008)) { /* 0x0008 - streaming. [u]cmpsize can be reliably gotten - * only from Central Directory. See unzip_doc.txt */ + * only from Central Directory. See unzip_doc.txt + */ zip_header.formatted.crc32 = cdf_header.formatted.crc32; zip_header.formatted.cmpsize = cdf_header.formatted.cmpsize; zip_header.formatted.ucmpsize = cdf_header.formatted.ucmpsize; } if ((cdf_header.formatted.version_made_by >> 8) == 3) { - /* this archive is created on Unix */ + /* This archive is created on Unix */ dir_mode = file_mode = (cdf_header.formatted.external_file_attributes >> 16); } } + if (cdf_offset == BAD_CDF_OFFSET + && (zip_header.formatted.zip_flags & SWAP_LE16(0x0008)) + ) { + /* If it's a streaming zip, we _require_ CDF */ + bb_error_msg_and_die("can't find file table"); + } #endif /* Read filename */ @@ -624,10 +673,7 @@ int unzip_main(int argc, char **argv) i = 'y'; } else { printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", dst_fn); - fflush_all(); - if (!fgets(key_buf, sizeof(key_buf), stdin)) { - bb_perror_msg_and_die("can't read input"); - } + my_fgets80(key_buf); i = key_buf[0]; } } else { /* File is not regular file */ @@ -668,9 +714,7 @@ int unzip_main(int argc, char **argv) case 'r': /* Prompt for new name */ printf("new name: "); - if (!fgets(key_buf, sizeof(key_buf), stdin)) { - bb_perror_msg_and_die("can't read input"); - } + my_fgets80(key_buf); free(dst_fn); dst_fn = xstrdup(key_buf); chomp(dst_fn); diff --git a/busybox-full.sources b/busybox-full.sources index 17cdd00..e050ef4 100644 --- a/busybox-full.sources +++ b/busybox-full.sources @@ -17,7 +17,7 @@ findutils/find.c findutils/grep.c findutils/xargs.c init/halt.c init/mesg.c -libbb/appletlib.c libbb/ask_confirmation.c libbb/bb_askpass.c libbb/bb_do_delay.c libbb/bb_pwd.c libbb/bb_qsort.c libbb/bb_strtonum.c libbb/change_identity.c libbb/chomp.c libbb/compare_string_array.c libbb/concat_path_file.c libbb/concat_subpath_file.c libbb/copy_file.c libbb/copyfd.c libbb/crc32.c libbb/create_icmp6_socket.c libbb/create_icmp_socket.c libbb/percent_decode.c libbb/default_error_retval.c libbb/device_open.c libbb/dump.c libbb/execable.c libbb/fclose_nonstdin.c libbb/fflush_stdout_and_exit.c libbb/fgets_str.c libbb/find_mount_point.c libbb/find_pid_by_name.c libbb/find_root_device.c libbb/full_write.c libbb/get_console.c libbb/get_last_path_component.c libbb/get_line_from_file.c libbb/get_volsize.c libbb/getopt32.c libbb/getpty.c libbb/herror_msg.c libbb/human_readable.c libbb/inet_cksum.c libbb/inet_common.c libbb/info_msg.c libbb/inode_hash.c libbb/isdirectory.c libbb/kernel_version.c libbb/last_char_is.c libbb/lineedit.c libbb/lineedit_ptr_hack.c libbb/llist.c libbb/login.c libbb/loop.c libbb/make_directory.c libbb/makedev.c libbb/match_fstype.c libbb/hash_md5_sha.c libbb/bb_bswap_64.c libbb/messages.c libbb/mode_string.c libbb/mtab.c libbb/parse_config.c libbb/parse_mode.c libbb/perror_msg.c libbb/perror_nomsg.c libbb/perror_nomsg_and_die.c libbb/pidfile.c libbb/platform.c libbb/print_flags.c libbb/printable.c libbb/printable_string.c libbb/process_escape_sequence.c libbb/procps.c libbb/progress.c libbb/ptr_to_globals.c libbb/read.c libbb/read_key.c libbb/read_printf.c libbb/recursive_action.c libbb/remove_file.c libbb/run_shell.c libbb/safe_gethostname.c libbb/safe_poll.c libbb/safe_strncpy.c libbb/safe_write.c libbb/setup_environment.c libbb/signals.c libbb/simplify_path.c libbb/single_argv.c libbb/skip_whitespace.c libbb/speed_table.c libbb/str_tolower.c libbb/strrstr.c libbb/time.c libbb/trim.c libbb/u_signal_names.c libbb/udp_io.c libbb/unicode.c libbb/uuencode.c libbb/vdprintf.c libbb/verror_msg.c libbb/vfork_daemon_rexec.c libbb/warn_ignoring_args.c libbb/wfopen.c libbb/wfopen_input.c libbb/write.c libbb/xatonum.c libbb/xconnect.c libbb/xfunc_die.c libbb/xfuncs.c libbb/xfuncs_printf.c libbb/xgetcwd.c libbb/xgethostbyname.c libbb/xreadlink.c libbb/xrealloc_vector.c libbb/xregcomp.c libbb/get_cpu_count.c libbb/get_shell_name.c +libbb/appletlib.c libbb/ask_confirmation.c libbb/bb_askpass.c libbb/bb_do_delay.c libbb/bb_pwd.c libbb/bb_qsort.c libbb/bb_strtonum.c libbb/change_identity.c libbb/chomp.c libbb/compare_string_array.c libbb/concat_path_file.c libbb/concat_subpath_file.c libbb/copy_file.c libbb/copyfd.c libbb/crc32.c libbb/percent_decode.c libbb/default_error_retval.c libbb/device_open.c libbb/dump.c libbb/execable.c libbb/fclose_nonstdin.c libbb/fflush_stdout_and_exit.c libbb/fgets_str.c libbb/find_mount_point.c libbb/find_pid_by_name.c libbb/find_root_device.c libbb/full_write.c libbb/get_console.c libbb/get_last_path_component.c libbb/get_line_from_file.c libbb/get_volsize.c libbb/getopt32.c libbb/getpty.c libbb/herror_msg.c libbb/human_readable.c libbb/inet_cksum.c libbb/inet_common.c libbb/info_msg.c libbb/inode_hash.c libbb/isdirectory.c libbb/kernel_version.c libbb/last_char_is.c libbb/lineedit.c libbb/lineedit_ptr_hack.c libbb/llist.c libbb/login.c libbb/loop.c libbb/make_directory.c libbb/makedev.c libbb/match_fstype.c libbb/hash_md5_sha.c libbb/bb_bswap_64.c libbb/messages.c libbb/mode_string.c libbb/mtab.c libbb/parse_config.c libbb/parse_mode.c libbb/perror_msg.c libbb/perror_nomsg.c libbb/perror_nomsg_and_die.c libbb/pidfile.c libbb/platform.c libbb/print_flags.c libbb/printable.c libbb/printable_string.c libbb/process_escape_sequence.c libbb/procps.c libbb/progress.c libbb/ptr_to_globals.c libbb/read.c libbb/read_key.c libbb/read_printf.c libbb/recursive_action.c libbb/remove_file.c libbb/run_shell.c libbb/safe_gethostname.c libbb/safe_poll.c libbb/safe_strncpy.c libbb/safe_write.c libbb/setup_environment.c libbb/signals.c libbb/simplify_path.c libbb/single_argv.c libbb/skip_whitespace.c libbb/speed_table.c libbb/str_tolower.c libbb/strrstr.c libbb/time.c libbb/trim.c libbb/u_signal_names.c libbb/udp_io.c libbb/unicode.c libbb/uuencode.c libbb/vdprintf.c libbb/verror_msg.c libbb/vfork_daemon_rexec.c libbb/warn_ignoring_args.c libbb/wfopen.c libbb/wfopen_input.c libbb/write.c libbb/xatonum.c libbb/xconnect.c libbb/xfunc_die.c libbb/xfuncs.c libbb/xfuncs_printf.c libbb/xgetcwd.c libbb/xgethostbyname.c libbb/xreadlink.c libbb/xrealloc_vector.c libbb/xregcomp.c libbb/get_cpu_count.c libbb/get_shell_name.c libbb/endofname.c libbb/in_ether.c libpwdgrp/uidgid_get.c @@ -46,5 +46,5 @@ util-linux/more.c util-linux/mount.c util-linux/rdev.c util-linux/rev.c util-lin util-linux/volume_id/get_devname.c util-linux/volume_id/volume_id.c util-linux/volume_id/util.c util-linux/volume_id/ext.c util-linux/volume_id/fat.c util-linux/volume_id/iso9660.c util-linux/volume_id/ntfs.c util-linux/volume_id/linux_swap.c -util-linux/volume_id/exfat.c util-linux/volume_id/squashfs.c +util-linux/volume_id/exfat.c util-linux/volume_id/squashfs.c util-linux/volume_id/f2fs.c diff --git a/busybox-minimal.sources b/busybox-minimal.sources index 4e31001..880bdb7 100644 --- a/busybox-minimal.sources +++ b/busybox-minimal.sources @@ -13,7 +13,7 @@ e2fsprogs/e2fs_lib.c e2fsprogs/chattr.c e2fsprogs/lsattr.c e2fsprogs/tune2fs.c editors/awk.c editors/cmp.c editors/diff.c editors/patch.c editors/sed.c findutils/find.c findutils/grep.c findutils/xargs.c -libbb/appletlib.c libbb/ask_confirmation.c libbb/bb_askpass.c libbb/bb_do_delay.c libbb/bb_pwd.c libbb/bb_qsort.c libbb/bb_strtonum.c libbb/change_identity.c libbb/chomp.c libbb/compare_string_array.c libbb/concat_path_file.c libbb/concat_subpath_file.c libbb/copy_file.c libbb/copyfd.c libbb/crc32.c libbb/create_icmp6_socket.c libbb/create_icmp_socket.c libbb/default_error_retval.c libbb/device_open.c libbb/dump.c libbb/execable.c libbb/fclose_nonstdin.c libbb/fflush_stdout_and_exit.c libbb/fgets_str.c libbb/find_mount_point.c libbb/find_pid_by_name.c libbb/find_root_device.c libbb/full_write.c libbb/get_console.c libbb/get_last_path_component.c libbb/get_line_from_file.c libbb/get_shell_name.c libbb/get_volsize.c libbb/getopt32.c libbb/getpty.c libbb/herror_msg.c libbb/human_readable.c libbb/inet_common.c libbb/info_msg.c libbb/inode_hash.c libbb/isdirectory.c libbb/kernel_version.c libbb/last_char_is.c libbb/lineedit.c libbb/lineedit_ptr_hack.c libbb/llist.c libbb/login.c libbb/loop.c libbb/make_directory.c libbb/makedev.c libbb/match_fstype.c libbb/hash_md5_sha.c libbb/bb_bswap_64.c libbb/messages.c libbb/mode_string.c libbb/mtab.c libbb/parse_config.c libbb/parse_mode.c libbb/perror_msg.c libbb/perror_nomsg.c libbb/perror_nomsg_and_die.c libbb/pidfile.c libbb/platform.c libbb/print_flags.c libbb/printable.c libbb/printable_string.c libbb/process_escape_sequence.c libbb/procps.c libbb/progress.c libbb/ptr_to_globals.c libbb/read.c libbb/read_key.c libbb/read_printf.c libbb/recursive_action.c libbb/remove_file.c libbb/run_shell.c libbb/safe_gethostname.c libbb/safe_poll.c libbb/safe_strncpy.c libbb/safe_write.c libbb/setup_environment.c libbb/signals.c libbb/simplify_path.c libbb/single_argv.c libbb/skip_whitespace.c libbb/speed_table.c libbb/str_tolower.c libbb/strrstr.c libbb/time.c libbb/trim.c libbb/u_signal_names.c libbb/udp_io.c libbb/uuencode.c libbb/vdprintf.c libbb/verror_msg.c libbb/vfork_daemon_rexec.c libbb/warn_ignoring_args.c libbb/wfopen.c libbb/wfopen_input.c libbb/write.c libbb/xatonum.c libbb/xconnect.c libbb/xfunc_die.c libbb/xfuncs.c libbb/xfuncs_printf.c libbb/xgetcwd.c libbb/xgethostbyname.c libbb/xreadlink.c libbb/xrealloc_vector.c libbb/xregcomp.c libbb/unicode.c +libbb/appletlib.c libbb/ask_confirmation.c libbb/bb_askpass.c libbb/bb_do_delay.c libbb/bb_pwd.c libbb/bb_qsort.c libbb/bb_strtonum.c libbb/change_identity.c libbb/chomp.c libbb/compare_string_array.c libbb/concat_path_file.c libbb/concat_subpath_file.c libbb/copy_file.c libbb/copyfd.c libbb/crc32.c libbb/default_error_retval.c libbb/device_open.c libbb/dump.c libbb/execable.c libbb/fclose_nonstdin.c libbb/fflush_stdout_and_exit.c libbb/fgets_str.c libbb/find_mount_point.c libbb/find_pid_by_name.c libbb/find_root_device.c libbb/full_write.c libbb/get_console.c libbb/get_last_path_component.c libbb/get_line_from_file.c libbb/get_shell_name.c libbb/endofname.c libbb/in_ether.c libbb/get_volsize.c libbb/getopt32.c libbb/getpty.c libbb/herror_msg.c libbb/human_readable.c libbb/inet_common.c libbb/info_msg.c libbb/inode_hash.c libbb/isdirectory.c libbb/kernel_version.c libbb/last_char_is.c libbb/lineedit.c libbb/lineedit_ptr_hack.c libbb/llist.c libbb/login.c libbb/loop.c libbb/make_directory.c libbb/makedev.c libbb/match_fstype.c libbb/hash_md5_sha.c libbb/bb_bswap_64.c libbb/messages.c libbb/mode_string.c libbb/mtab.c libbb/parse_config.c libbb/parse_mode.c libbb/perror_msg.c libbb/perror_nomsg.c libbb/perror_nomsg_and_die.c libbb/pidfile.c libbb/platform.c libbb/print_flags.c libbb/printable.c libbb/printable_string.c libbb/process_escape_sequence.c libbb/procps.c libbb/progress.c libbb/ptr_to_globals.c libbb/read.c libbb/read_key.c libbb/read_printf.c libbb/recursive_action.c libbb/remove_file.c libbb/run_shell.c libbb/safe_gethostname.c libbb/safe_poll.c libbb/safe_strncpy.c libbb/safe_write.c libbb/setup_environment.c libbb/signals.c libbb/simplify_path.c libbb/single_argv.c libbb/skip_whitespace.c libbb/speed_table.c libbb/str_tolower.c libbb/strrstr.c libbb/time.c libbb/trim.c libbb/u_signal_names.c libbb/udp_io.c libbb/uuencode.c libbb/vdprintf.c libbb/verror_msg.c libbb/vfork_daemon_rexec.c libbb/warn_ignoring_args.c libbb/wfopen.c libbb/wfopen_input.c libbb/write.c libbb/xatonum.c libbb/xconnect.c libbb/xfunc_die.c libbb/xfuncs.c libbb/xfuncs_printf.c libbb/xgetcwd.c libbb/xgethostbyname.c libbb/xreadlink.c libbb/xrealloc_vector.c libbb/xregcomp.c libbb/unicode.c libpwdgrp/uidgid_get.c miscutils/bbconfig.c miscutils/dc.c miscutils/devmem.c miscutils/less.c miscutils/makedevs.c miscutils/mountpoint.c miscutils/nandwrite.c @@ -31,5 +31,5 @@ util-linux/more.c util-linux/mount.c util-linux/rdev.c util-linux/rev.c util-lin util-linux/volume_id/get_devname.c util-linux/volume_id/volume_id.c util-linux/volume_id/util.c util-linux/volume_id/ext.c util-linux/volume_id/fat.c util-linux/volume_id/iso9660.c util-linux/volume_id/ntfs.c util-linux/volume_id/linux_swap.c -util-linux/volume_id/exfat.c util-linux/volume_id/squashfs.c +util-linux/volume_id/exfat.c util-linux/volume_id/squashfs.c util-linux/volume_id/f2fs.c diff --git a/console-tools/dumpkmap.c b/console-tools/dumpkmap.c index 6b923d2..bf8d690 100644 --- a/console-tools/dumpkmap.c +++ b/console-tools/dumpkmap.c @@ -36,47 +36,56 @@ int dumpkmap_main(int argc UNUSED_PARAM, char **argv) { struct kbentry ke; int i, j, fd; - RESERVE_CONFIG_BUFFER(flags, MAX_NR_KEYMAPS); +#define flags bb_common_bufsiz1 /* When user accidentally runs "dumpkmap FILE" * instead of "dumpkmap >FILE", we'd dump binary stuff to tty. - * Let's prevent it: */ + * Let's prevent it: + */ if (argv[1]) bb_show_usage(); /* bb_warn_ignoring_args(argv[1]);*/ fd = get_console_fd_or_die(); +#if 0 write(STDOUT_FILENO, "bkeymap", 7); - /* Here we want to set everything to 0 except for indexes: - * [0-2] [4-6] [8-10] [12] */ - memset(flags, 0x00, MAX_NR_KEYMAPS); + * [0-2] [4-6] [8-10] [12] + */ + /*memset(flags, 0x00, MAX_NR_KEYMAPS); - already is */ memset(flags, 0x01, 13); flags[3] = flags[7] = flags[11] = 0; - /* dump flags */ write(STDOUT_FILENO, flags, MAX_NR_KEYMAPS); +#define flags7 flags +#else + /* Same effect */ + /* 0 1 2 3 4 5 6 7 8 9 a b c=12 */ + memcpy(flags, "bkeymap\1\1\1\0\1\1\1\0\1\1\1\0\1", + /* Can use sizeof, or sizeof-1. sizeof is even, using that */ + /****/ sizeof("bkeymap\1\1\1\0\1\1\1\0\1\1\1\0\1") + ); + write(STDOUT_FILENO, flags, 7 + MAX_NR_KEYMAPS); +#define flags7 (flags + 7) +#endif - for (i = 0; i < MAX_NR_KEYMAPS; i++) { - if (flags[i] == 1) { + for (i = 0; i < 13; i++) { + if (flags7[i]) { for (j = 0; j < NR_KEYS; j++) { ke.kb_index = j; ke.kb_table = i; if (!ioctl_or_perror(fd, KDGKBENT, &ke, - "ioctl failed with %s, %s, %p", - (char *)&ke.kb_index, - (char *)&ke.kb_table, - &ke.kb_value) + "ioctl(KDGKBENT{%d,%d}) failed", + j, i) ) { - write(STDOUT_FILENO, (void*)&ke.kb_value, 2); + write(STDOUT_FILENO, &ke.kb_value, 2); } } } } if (ENABLE_FEATURE_CLEAN_UP) { close(fd); - RELEASE_CONFIG_BUFFER(flags); } return EXIT_SUCCESS; } diff --git a/console-tools/loadkmap.c b/console-tools/loadkmap.c index bcffe16..66ec3b0 100644 --- a/console-tools/loadkmap.c +++ b/console-tools/loadkmap.c @@ -48,6 +48,7 @@ int loadkmap_main(int argc UNUSED_PARAM, char **argv) if (argv[1]) bb_show_usage(); /* bb_warn_ignoring_args(argv[1]); */ + fd = get_console_fd_or_die(); /* or maybe: opt = getopt32(argv, "C:", &tty_name); @@ -61,14 +62,24 @@ int loadkmap_main(int argc UNUSED_PARAM, char **argv) xread(STDIN_FILENO, flags, MAX_NR_KEYMAPS); for (i = 0; i < MAX_NR_KEYMAPS; i++) { - if (flags[i] == 1) { - xread(STDIN_FILENO, ibuff, NR_KEYS * sizeof(uint16_t)); - for (j = 0; j < NR_KEYS; j++) { - ke.kb_index = j; - ke.kb_table = i; - ke.kb_value = ibuff[j]; - ioctl(fd, KDSKBENT, &ke); - } + if (flags[i] != 1) + continue; + xread(STDIN_FILENO, ibuff, NR_KEYS * sizeof(uint16_t)); + for (j = 0; j < NR_KEYS; j++) { + ke.kb_index = j; + ke.kb_table = i; + ke.kb_value = ibuff[j]; + /* + * Note: table[idx:0] can contain special value + * K_ALLOCATED (marks allocated tables in kernel). + * dumpkmap saves the value as-is; but attempts + * to load it here fail, since it isn't a valid + * key value: it is K(KT_SPEC,126) == 2<<8 + 126, + * whereas last valid KT_SPEC is + * K_BARENUMLOCK == K(KT_SPEC,19). + * So far we just ignore these errors: + */ + ioctl(fd, KDSKBENT, &ke); } } diff --git a/coreutils/Kbuild.src b/coreutils/Kbuild.src index f796b57..9970c8f 100644 --- a/coreutils/Kbuild.src +++ b/coreutils/Kbuild.src @@ -35,7 +35,6 @@ lib-$(CONFIG_EXPAND) += expand.o lib-$(CONFIG_FALSE) += false.o lib-$(CONFIG_FOLD) += fold.o lib-$(CONFIG_FSYNC) += fsync.o -lib-$(CONFIG_HEAD) += head.o lib-$(CONFIG_INSTALL) += install.o #lib-$(CONFIG_LENGTH) += length.o lib-$(CONFIG_LN) += ln.o @@ -72,7 +71,6 @@ lib-$(CONFIG_STTY) += stty.o lib-$(CONFIG_SUM) += sum.o lib-$(CONFIG_SYNC) += sync.o lib-$(CONFIG_TAC) += tac.o -lib-$(CONFIG_TAIL) += tail.o lib-$(CONFIG_TEE) += tee.o lib-$(CONFIG_TRUE) += true.o lib-$(CONFIG_TTY) += tty.o diff --git a/coreutils/cal.c b/coreutils/cal.c index c631327..5d97d61 100644 --- a/coreutils/cal.c +++ b/coreutils/cal.c @@ -165,7 +165,7 @@ int cal_main(int argc UNUSED_PARAM, char **argv) char lineout[30]; day_array(month, year, dp); - len = sprintf(lineout, "%s %d", month_names[month - 1], year); + len = sprintf(lineout, "%s %u", month_names[month - 1], year); printf("%*s%s\n%s\n", ((7*julian + WEEK_LEN) - len) / 2, "", lineout, day_headings); diff --git a/coreutils/catv.c b/coreutils/catv.c index 214b431..e3499c5 100644 --- a/coreutils/catv.c +++ b/coreutils/catv.c @@ -25,14 +25,23 @@ int catv_main(int argc UNUSED_PARAM, char **argv) { int retval = EXIT_SUCCESS; int fd; - unsigned flags; - - flags = getopt32(argv, "etv"); + unsigned opts; #define CATV_OPT_e (1<<0) #define CATV_OPT_t (1<<1) #define CATV_OPT_v (1<<2) - flags ^= CATV_OPT_v; + typedef char BUG_const_mismatch[ + CATV_OPT_e == VISIBLE_ENDLINE && CATV_OPT_t == VISIBLE_SHOW_TABS + ? 1 : -1 + ]; + + opts = getopt32(argv, "etv"); argv += optind; +#if 0 /* These consts match, we can just pass "opts" to visible() */ + if (opts & CATV_OPT_e) + flags |= VISIBLE_ENDLINE; + if (opts & CATV_OPT_t) + flags |= VISIBLE_SHOW_TABS; +#endif /* Read from stdin if there's nothing else to do. */ if (!argv[0]) @@ -50,29 +59,17 @@ int catv_main(int argc UNUSED_PARAM, char **argv) res = read(fd, read_buf, COMMON_BUFSIZE); if (res < 0) retval = EXIT_FAILURE; - if (res < 1) + if (res <= 0) break; for (i = 0; i < res; i++) { unsigned char c = read_buf[i]; - - if (c > 126 && (flags & CATV_OPT_v)) { - if (c == 127) { - printf("^?"); - continue; - } - printf("M-"); - c -= 128; - } - if (c < 32) { - if (c == 10) { - if (flags & CATV_OPT_e) - bb_putchar('$'); - } else if (flags & (c==9 ? CATV_OPT_t : CATV_OPT_v)) { - printf("^%c", c+'@'); - continue; - } + if (opts & CATV_OPT_v) { + putchar(c); + } else { + char buf[sizeof("M-^c")]; + visible(c, buf, opts); + fputs(buf, stdout); } - bb_putchar(c); } } if (ENABLE_FEATURE_CLEAN_UP && fd) diff --git a/coreutils/dd.c b/coreutils/dd.c index 96602eb..2838f63 100644 --- a/coreutils/dd.c +++ b/coreutils/dd.c @@ -30,10 +30,10 @@ //usage: "\n conv=noerror Continue after read errors" //usage: "\n conv=sync Pad blocks with zeros" //usage: "\n conv=fsync Physically write data out before finishing" +//usage: "\n conv=swab Swap every pair of bytes" //usage: ) //usage: "\n" -//usage: "\nNumbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024)," -//usage: "\nMD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824)" +//usage: "\nN may be suffixed by c (1), w (2), b (512), kD (1000), k (1024), MD, M, GD, G" //usage: //usage:#define dd_example_usage //usage: "$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4\n" @@ -151,13 +151,14 @@ int dd_main(int argc UNUSED_PARAM, char **argv) enum { /* Must be in the same order as OP_conv_XXX! */ /* (see "flags |= (1 << what)" below) */ - FLAG_NOTRUNC = 1 << 0, - FLAG_SYNC = 1 << 1, - FLAG_NOERROR = 1 << 2, - FLAG_FSYNC = 1 << 3, + FLAG_NOTRUNC = (1 << 0) * ENABLE_FEATURE_DD_IBS_OBS, + FLAG_SYNC = (1 << 1) * ENABLE_FEATURE_DD_IBS_OBS, + FLAG_NOERROR = (1 << 2) * ENABLE_FEATURE_DD_IBS_OBS, + FLAG_FSYNC = (1 << 3) * ENABLE_FEATURE_DD_IBS_OBS, + FLAG_SWAB = (1 << 4) * ENABLE_FEATURE_DD_IBS_OBS, /* end of conv flags */ - FLAG_TWOBUFS = 1 << 4, - FLAG_COUNT = 1 << 5, + FLAG_TWOBUFS = (1 << 5) * ENABLE_FEATURE_DD_IBS_OBS, + FLAG_COUNT = 1 << 6, }; static const char keywords[] ALIGN1 = "bs\0""count\0""seek\0""skip\0""if\0""of\0" @@ -167,7 +168,7 @@ int dd_main(int argc UNUSED_PARAM, char **argv) ; #if ENABLE_FEATURE_DD_IBS_OBS static const char conv_words[] ALIGN1 = - "notrunc\0""sync\0""noerror\0""fsync\0"; + "notrunc\0""sync\0""noerror\0""fsync\0""swab\0"; #endif enum { OP_bs = 0, @@ -185,11 +186,11 @@ int dd_main(int argc UNUSED_PARAM, char **argv) OP_conv_sync, OP_conv_noerror, OP_conv_fsync, + OP_conv_swab, /* Unimplemented conv=XXX: */ //nocreat do not create the output file //excl fail if the output file already exists //fdatasync physically write output file data before finishing - //swab swap every pair of input bytes //lcase change upper case to lower case //ucase change lower case to upper case //block pad newline-terminated records with spaces to cbs-size @@ -197,22 +198,33 @@ int dd_main(int argc UNUSED_PARAM, char **argv) //ascii from EBCDIC to ASCII //ebcdic from ASCII to EBCDIC //ibm from ASCII to alternate EBCDIC + /* Partially implemented: */ + //swab swap every pair of input bytes: will abort on non-even reads #endif }; - int exitcode = EXIT_FAILURE; - size_t ibs = 512, obs = 512; - ssize_t n, w; - char *ibuf, *obuf; - /* And these are all zeroed at once! */ + smallint exitcode = EXIT_FAILURE; + int i; + size_t ibs = 512; + char *ibuf; +#if ENABLE_FEATURE_DD_IBS_OBS + size_t obs = 512; + char *obuf; +#else +# define obs ibs +# define obuf ibuf +#endif + /* These are all zeroed at once! */ struct { int flags; size_t oc; + ssize_t prev_read_size; /* for detecting swab failure */ off_t count; off_t seek, skip; const char *infile, *outfile; } Z; #define flags (Z.flags ) #define oc (Z.oc ) +#define prev_read_size (Z.prev_read_size) #define count (Z.count ) #define seek (Z.seek ) #define skip (Z.skip ) @@ -223,10 +235,10 @@ int dd_main(int argc UNUSED_PARAM, char **argv) INIT_G(); //fflush_all(); - is this needed because of NOEXEC? - for (n = 1; argv[n]; n++) { + for (i = 1; argv[i]; i++) { int what; char *val; - char *arg = argv[n]; + char *arg = argv[i]; #if ENABLE_DESKTOP /* "dd --". NB: coreutils 6.9 will complain if they see @@ -255,6 +267,7 @@ int dd_main(int argc UNUSED_PARAM, char **argv) } if (what == OP_conv) { while (1) { + int n; /* find ',', replace them with NUL so we can use val for * index_in_strings() without copying. * We rely on val being non-null, else strchr would fault. @@ -262,20 +275,21 @@ int dd_main(int argc UNUSED_PARAM, char **argv) arg = strchr(val, ','); if (arg) *arg = '\0'; - what = index_in_strings(conv_words, val); - if (what < 0) + n = index_in_strings(conv_words, val); + if (n < 0) bb_error_msg_and_die(bb_msg_invalid_arg, val, "conv"); - flags |= (1 << what); + flags |= (1 << n); if (!arg) /* no ',' left, so this was the last specifier */ break; /* *arg = ','; - to preserve ps listing? */ val = arg + 1; /* skip this keyword and ',' */ } - continue; /* we trashed 'what', can't fall through */ + /*continue;*/ } #endif if (what == OP_bs) { - ibs = obs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, dd_suffixes); + ibs = xatoul_range_sfx(val, 1, ((size_t)-1L)/2, dd_suffixes); + obs = ibs; /*continue;*/ } /* These can be large: */ @@ -300,14 +314,17 @@ int dd_main(int argc UNUSED_PARAM, char **argv) outfile = val; /*continue;*/ } - } /* end of "for (argv[n])" */ + } /* end of "for (argv[i])" */ //XXX:FIXME for huge ibs or obs, malloc'ing them isn't the brightest idea ever - ibuf = obuf = xmalloc(ibs); + ibuf = xmalloc(ibs); + obuf = ibuf; +#if ENABLE_FEATURE_DD_IBS_OBS if (ibs != obs) { flags |= FLAG_TWOBUFS; obuf = xmalloc(obs); } +#endif #if ENABLE_FEATURE_DD_SIGNAL_HANDLING signal_SA_RESTART_empty_mask(SIGUSR1, dd_output_status); @@ -316,12 +333,12 @@ int dd_main(int argc UNUSED_PARAM, char **argv) G.begin_time_us = monotonic_us(); #endif - if (infile != NULL) + if (infile) { xmove_fd(xopen(infile, O_RDONLY), ifd); - else { + } else { infile = bb_msg_standard_input; } - if (outfile != NULL) { + if (outfile) { int oflag = O_WRONLY | O_CREAT; if (!seek && !(flags & FLAG_NOTRUNC)) @@ -346,13 +363,13 @@ int dd_main(int argc UNUSED_PARAM, char **argv) } if (skip) { if (lseek(ifd, skip * ibs, SEEK_CUR) < 0) { - while (skip-- > 0) { - n = safe_read(ifd, ibuf, ibs); + do { + ssize_t n = safe_read(ifd, ibuf, ibs); if (n < 0) goto die_infile; if (n == 0) break; - } + } while (--skip != 0); } } if (seek) { @@ -361,6 +378,8 @@ int dd_main(int argc UNUSED_PARAM, char **argv) } while (!(flags & FLAG_COUNT) || (G.in_full + G.in_part != count)) { + ssize_t n; + n = safe_read(ifd, ibuf, ibs); if (n == 0) break; @@ -375,6 +394,27 @@ int dd_main(int argc UNUSED_PARAM, char **argv) * conv=noerror just ignores input bad blocks */ n = 0; } + if (flags & FLAG_SWAB) { + uint16_t *p16; + ssize_t n2; + + /* Our code allows only last read to be odd-sized */ + if (prev_read_size & 1) + bb_error_msg_and_die("can't swab %lu byte buffer", + (unsigned long)prev_read_size); + prev_read_size = n; + + /* If n is odd, last byte is not swapped: + * echo -n "qwe" | dd conv=swab + * prints "wqe". + */ + p16 = (void*) ibuf; + n2 = (n >> 1); + while (--n2 >= 0) { + *p16 = bswap_16(*p16); + p16++; + } + } if ((size_t)n == ibs) G.in_full++; else { @@ -401,8 +441,10 @@ int dd_main(int argc UNUSED_PARAM, char **argv) oc = 0; } } - } else if (write_and_stats(ibuf, n, obs, outfile)) - goto out_status; + } else { + if (write_and_stats(ibuf, n, obs, outfile)) + goto out_status; + } if (flags & FLAG_FSYNC) { if (fsync(ofd) < 0) @@ -411,9 +453,8 @@ int dd_main(int argc UNUSED_PARAM, char **argv) } if (ENABLE_FEATURE_DD_IBS_OBS && oc) { - w = full_write_or_warn(obuf, oc, outfile); - if (w < 0) goto out_status; - if (w > 0) G.out_part++; + if (write_and_stats(obuf, oc, obs, outfile)) + goto out_status; } if (close(ifd) < 0) { die_infile: diff --git a/coreutils/expand.c b/coreutils/expand.c index ac5ad5b..9a83fad 100644 --- a/coreutils/expand.c +++ b/coreutils/expand.c @@ -78,11 +78,7 @@ static void expand(FILE *file, unsigned tab_size, unsigned opt) unsigned len; *ptr = '\0'; # if ENABLE_UNICODE_SUPPORT - { - uni_stat_t uni_stat; - printable_string(&uni_stat, ptr_strbeg); - len = uni_stat.unicode_width; - } + len = unicode_strwidth(ptr_strbeg); # else len = ptr - ptr_strbeg; # endif @@ -138,12 +134,9 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt) printf("%*s%.*s", len, "", n, ptr); # if ENABLE_UNICODE_SUPPORT { - char c; - uni_stat_t uni_stat; - c = ptr[n]; + char c = ptr[n]; ptr[n] = '\0'; - printable_string(&uni_stat, ptr); - len = uni_stat.unicode_width; + len = unicode_strwidth(ptr); ptr[n] = c; } # else diff --git a/coreutils/head.c b/coreutils/head.c index ec45127..9388b02 100644 --- a/coreutils/head.c +++ b/coreutils/head.c @@ -11,6 +11,8 @@ /* BB_AUDIT GNU compatible -c, -q, and -v options in 'fancy' configuration. */ /* http://www.opengroup.org/onlinepubs/007904975/utilities/head.html */ +//kbuild:lib-$(CONFIG_HEAD) += head.o + //usage:#define head_trivial_usage //usage: "[OPTIONS] [FILE]..." //usage:#define head_full_usage "\n\n" @@ -18,7 +20,8 @@ //usage: "With more than one FILE, precede each with a filename header.\n" //usage: "\n -n N[kbm] Print first N lines" //usage: IF_FEATURE_FANCY_HEAD( -//usage: "\n -c N[kbm] Print first N bytes" +//usage: "\n -n -N[kbm] Print all except N last lines" +//usage: "\n -c [-]N[kbm] Print first N bytes" //usage: "\n -q Never print headers" //usage: "\n -v Always print headers" //usage: ) @@ -34,6 +37,110 @@ /* This is a NOEXEC applet. Be very careful! */ +#if !ENABLE_FEATURE_FANCY_HEAD +# define print_first_N(fp,count,bytes) print_first_N(fp,count) +#endif +static void +print_first_N(FILE *fp, unsigned long count, bool count_bytes) +{ +#if !ENABLE_FEATURE_FANCY_HEAD + const int count_bytes = 0; +#endif + while (count) { + int c = getc(fp); + if (c == EOF) + break; + if (count_bytes || (c == '\n')) + --count; + putchar(c); + } +} + +#if ENABLE_FEATURE_FANCY_HEAD +static void +print_except_N_last_bytes(FILE *fp, unsigned count) +{ + unsigned char *circle = xmalloc(++count); + unsigned head = 0; + for(;;) { + int c; + c = getc(fp); + if (c == EOF) + goto ret; + circle[head++] = c; + if (head == count) + break; + } + for (;;) { + int c; + if (head == count) + head = 0; + putchar(circle[head]); + c = getc(fp); + if (c == EOF) + goto ret; + circle[head] = c; + head++; + } + ret: + free(circle); +} + +static void +print_except_N_last_lines(FILE *fp, unsigned count) +{ + char **circle = xzalloc((++count) * sizeof(circle[0])); + unsigned head = 0; + for(;;) { + char *c; + c = xmalloc_fgets(fp); + if (!c) + goto ret; + circle[head++] = c; + if (head == count) + break; + } + for (;;) { + char *c; + if (head == count) + head = 0; + fputs(circle[head], stdout); + c = xmalloc_fgets(fp); + if (!c) + goto ret; + free(circle[head]); + circle[head++] = c; + } + ret: + head = 0; + for(;;) { + free(circle[head++]); + if (head == count) + break; + } + free(circle); +} +#else +/* Must never be called */ +void print_except_N_last_bytes(FILE *fp, unsigned count); +void print_except_N_last_lines(FILE *fp, unsigned count); +#endif + +#if !ENABLE_FEATURE_FANCY_HEAD +# define eat_num(negative_N,p) eat_num(p) +#endif +static unsigned long +eat_num(bool *negative_N, const char *p) +{ +#if ENABLE_FEATURE_FANCY_HEAD + if (*p == '-') { + *negative_N = 1; + p++; + } +#endif + return xatoul_sfx(p, bkm_suffixes); +} + static const char head_opts[] ALIGN1 = "n:" #if ENABLE_FEATURE_FANCY_HEAD @@ -41,29 +148,25 @@ static const char head_opts[] ALIGN1 = #endif ; -static const struct suffix_mult head_suffixes[] = { - { "b", 512 }, - { "k", 1024 }, - { "m", 1024*1024 }, - { "", 0 } -}; - #define header_fmt_str "\n==> %s <==\n" int head_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int head_main(int argc, char **argv) { unsigned long count = 10; - unsigned long i; #if ENABLE_FEATURE_FANCY_HEAD - int count_bytes = 0; int header_threshhold = 1; + bool count_bytes = 0; + bool negative_N = 0; +#else +# define header_threshhold 1 +# define count_bytes 0 +# define negative_N 0 #endif FILE *fp; const char *fmt; char *p; int opt; - int c; int retval = EXIT_SUCCESS; #if ENABLE_INCLUDE_SUSv2 || ENABLE_FEATURE_FANCY_HEAD @@ -73,7 +176,7 @@ int head_main(int argc, char **argv) ) { --argc; ++argv; - p = (*argv) + 1; + p = argv[0] + 1; goto GET_COUNT; } #endif @@ -97,7 +200,7 @@ int head_main(int argc, char **argv) #if ENABLE_INCLUDE_SUSv2 || ENABLE_FEATURE_FANCY_HEAD GET_COUNT: #endif - count = xatoul_sfx(p, head_suffixes); + count = eat_num(&negative_N, p); break; default: bb_show_usage(); @@ -110,19 +213,17 @@ int head_main(int argc, char **argv) *--argv = (char*)"-"; fmt = header_fmt_str + 1; -#if ENABLE_FEATURE_FANCY_HEAD if (argc <= header_threshhold) { +#if ENABLE_FEATURE_FANCY_HEAD header_threshhold = 0; - } #else - if (argc <= 1) { fmt += 11; /* "" */ - } - /* Now define some things here to avoid #ifdefs in the code below. - * These should optimize out of the if conditions below. */ -#define header_threshhold 1 -#define count_bytes 0 #endif + } + if (negative_N) { + if (count >= INT_MAX / sizeof(char*)) + bb_error_msg("count is too big: %lu", count); + } do { fp = fopen_or_warn_stdin(*argv); @@ -133,18 +234,20 @@ int head_main(int argc, char **argv) if (header_threshhold) { printf(fmt, *argv); } - i = count; - while (i && ((c = getc(fp)) != EOF)) { - if (count_bytes || (c == '\n')) { - --i; + if (negative_N) { + if (count_bytes) { + print_except_N_last_bytes(fp, count); + } else { + print_except_N_last_lines(fp, count); } - putchar(c); + } else { + print_first_N(fp, count, count_bytes); } + die_if_ferror_stdout(); if (fclose_if_not_stdin(fp)) { bb_simple_perror_msg(*argv); retval = EXIT_FAILURE; } - die_if_ferror_stdout(); } else { retval = EXIT_FAILURE; } diff --git a/coreutils/hostid.c b/coreutils/hostid.c index 5c1a4e0..e5b1f51 100644 --- a/coreutils/hostid.c +++ b/coreutils/hostid.c @@ -36,7 +36,8 @@ int hostid_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) bb_show_usage(); } - printf("%08lx\n", gethostid()); + /* POSIX says gethostid returns a "32-bit identifier" */ + printf("%08x\n", (unsigned)(uint32_t)gethostid()); return fflush_all(); } diff --git a/coreutils/id.c b/coreutils/id.c index 1f20b75..1f3e1c4 100644 --- a/coreutils/id.c +++ b/coreutils/id.c @@ -64,12 +64,10 @@ /* This is a NOEXEC applet. Be very careful! */ #if !ENABLE_USE_BB_PWD_GRP -#if defined(__UCLIBC_MAJOR__) && (__UCLIBC_MAJOR__ == 0) -#if (__UCLIBC_MINOR__ < 9) || (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ < 30) +#if defined(__UCLIBC__) && UCLIBC_VERSION < KERNEL_VERSION(0, 9, 30) #error "Sorry, you need at least uClibc version 0.9.30 for id applet to build" #endif #endif -#endif enum { PRINT_REAL = (1 << 0), diff --git a/coreutils/md5_sha1_sum.c b/coreutils/md5_sha1_sum.c index 92a4d44..1a5342e 100644 --- a/coreutils/md5_sha1_sum.c +++ b/coreutils/md5_sha1_sum.c @@ -151,7 +151,9 @@ static uint8_t *hash_file(const char *filename) update(&context, in_buf, count); } hash_value = NULL; - if (count == 0) { + if (count < 0) + bb_perror_msg("can't read '%s'", filename); + else /* count == 0 */ { final(&context, in_buf); hash_value = hash_bin_to_hex(in_buf, hash_len); } diff --git a/coreutils/od_bloaty.c b/coreutils/od_bloaty.c index a632489..6b00a43 100644 --- a/coreutils/od_bloaty.c +++ b/coreutils/od_bloaty.c @@ -1166,12 +1166,6 @@ parse_old_offset(const char *s, off_t *offset) int od_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int od_main(int argc UNUSED_PARAM, char **argv) { - static const struct suffix_mult bkm[] = { - { "b", 512 }, - { "k", 1024 }, - { "m", 1024*1024 }, - { "", 0 } - }; #if ENABLE_LONG_OPTS static const char od_longopts[] ALIGN1 = "skip-bytes\0" Required_argument "j" @@ -1230,7 +1224,7 @@ int od_main(int argc UNUSED_PARAM, char **argv) address_pad_len_char = doxn_address_pad_len_char[pos]; } if (opt & OPT_N) { - max_bytes_to_format = xstrtooff_sfx(str_N, 0, bkm); + max_bytes_to_format = xstrtooff_sfx(str_N, 0, bkm_suffixes); } if (opt & OPT_a) decode_format_string("a"); if (opt & OPT_b) decode_format_string("oC"); @@ -1239,7 +1233,7 @@ int od_main(int argc UNUSED_PARAM, char **argv) if (opt & OPT_f) decode_format_string("fF"); if (opt & OPT_h) decode_format_string("x2"); if (opt & OPT_i) decode_format_string("d2"); - if (opt & OPT_j) n_bytes_to_skip = xstrtooff_sfx(str_j, 0, bkm); + if (opt & OPT_j) n_bytes_to_skip = xstrtooff_sfx(str_j, 0, bkm_suffixes); if (opt & OPT_l) decode_format_string("d4"); if (opt & OPT_o) decode_format_string("o2"); while (lst_t) { @@ -1248,7 +1242,7 @@ int od_main(int argc UNUSED_PARAM, char **argv) if (opt & OPT_x) decode_format_string("x2"); if (opt & OPT_s) decode_format_string("d2"); if (opt & OPT_S) { - string_min = xstrtou_sfx(str_S, 0, bkm); + string_min = xstrtou_sfx(str_S, 0, bkm_suffixes); } // Bloat: diff --git a/coreutils/readlink.c b/coreutils/readlink.c index f7ad791..d73ef4d 100644 --- a/coreutils/readlink.c +++ b/coreutils/readlink.c @@ -39,7 +39,10 @@ * -q, --quiet, -s, --silent suppress most error messages * -v, --verbose report error messages * - * bbox supports: -f -n -v (fully), -q -s (accepts but ignores) + * bbox supports: -f (partially) -n -v (fully), -q -s (accepts but ignores) + * Note: we export the -f flag, but our -f behaves like coreutils' -e. + * Unfortunately, there isn't a C lib function we can leverage to get this + * behavior which means we'd have to implement the full stack ourselves :(. */ int readlink_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; diff --git a/coreutils/split.c b/coreutils/split.c index 11e6404..1e1673e 100644 --- a/coreutils/split.c +++ b/coreutils/split.c @@ -23,17 +23,15 @@ #include "libbb.h" -static const struct suffix_mult split_suffices[] = { #if ENABLE_FEATURE_SPLIT_FANCY +static const struct suffix_mult split_suffixes[] = { { "b", 512 }, -#endif { "k", 1024 }, { "m", 1024*1024 }, -#if ENABLE_FEATURE_SPLIT_FANCY { "g", 1024*1024*1024 }, -#endif { "", 0 } }; +#endif /* Increment the suffix part of the filename. * Returns NULL if we are out of filenames. @@ -86,7 +84,10 @@ int split_main(int argc UNUSED_PARAM, char **argv) if (opt & SPLIT_OPT_l) cnt = XATOOFF(count_p); if (opt & SPLIT_OPT_b) // FIXME: also needs XATOOFF - cnt = xatoull_sfx(count_p, split_suffices); + cnt = xatoull_sfx(count_p, + IF_FEATURE_SPLIT_FANCY(split_suffixes) + IF_NOT_FEATURE_SPLIT_FANCY(km_suffixes) + ); sfx = "x"; argv += optind; diff --git a/coreutils/stat.c b/coreutils/stat.c index c8677eb..dc9d81c 100644 --- a/coreutils/stat.c +++ b/coreutils/stat.c @@ -127,7 +127,7 @@ static const char *human_time(time_t t) /*static char buf[sizeof("YYYY-MM-DD HH:MM:SS.000000000")] ALIGN1;*/ #define buf bb_common_bufsiz1 - strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S.000000000", localtime(&t)); + strcpy(strftime_YYYYMMDDHHMMSS(buf, sizeof(buf), &t), ".000000000"); return buf; #undef buf } diff --git a/coreutils/stty.c b/coreutils/stty.c index 96754dd..378a848 100644 --- a/coreutils/stty.c +++ b/coreutils/stty.c @@ -246,10 +246,21 @@ enum speed_setting { /* Which member(s) of 'struct termios' a mode uses */ enum { - /* Do NOT change the order or values, as mode_type_flag() - * depends on them */ control, input, output, local, combination }; +static tcflag_t *get_ptr_to_tcflag(unsigned type, const struct termios *mode) +{ + static const uint8_t tcflag_offsets[] ALIGN1 = { + offsetof(struct termios, c_cflag), /* control */ + offsetof(struct termios, c_iflag), /* input */ + offsetof(struct termios, c_oflag), /* output */ + offsetof(struct termios, c_lflag) /* local */ + }; + if (type <= local) { + return (tcflag_t*) (((char*)mode) + tcflag_offsets[type]); + } + return NULL; +} /* Flags for 'struct mode_info' */ #define SANE_SET 1 /* Set in 'sane' mode */ @@ -770,51 +781,6 @@ struct globals { G.max_col = 80; \ } while (0) - -/* Return a string that is the printable representation of character CH */ -/* Adapted from 'cat' by Torbjorn Granlund */ -static const char *visible(unsigned ch) -{ - char *bpout = G.buf; - - if (ch == _POSIX_VDISABLE) - return "<undef>"; - - if (ch >= 128) { - ch -= 128; - *bpout++ = 'M'; - *bpout++ = '-'; - } - - if (ch < 32) { - *bpout++ = '^'; - *bpout++ = ch + 64; - } else if (ch < 127) { - *bpout++ = ch; - } else { - *bpout++ = '^'; - *bpout++ = '?'; - } - - *bpout = '\0'; - return G.buf; -} - -static tcflag_t *mode_type_flag(unsigned type, const struct termios *mode) -{ - static const uint8_t tcflag_offsets[] ALIGN1 = { - offsetof(struct termios, c_cflag), /* control */ - offsetof(struct termios, c_iflag), /* input */ - offsetof(struct termios, c_oflag), /* output */ - offsetof(struct termios, c_lflag) /* local */ - }; - - if (type <= local) { - return (tcflag_t*) (((char*)mode) + tcflag_offsets[type]); - } - return NULL; -} - static void set_speed_or_die(enum speed_setting type, const char *arg, struct termios *mode) { @@ -1042,6 +1008,7 @@ static void do_display(const struct termios *mode, int all) #endif for (i = 0; i != CIDX_min; ++i) { + char ch; /* If swtch is the same as susp, don't print both */ #if VSWTCH == VSUSP if (i == CIDX_swtch) @@ -1055,8 +1022,12 @@ static void do_display(const struct termios *mode, int all) continue; } #endif - wrapf("%s = %s;", nth_string(control_name, i), - visible(mode->c_cc[control_info[i].offset])); + ch = mode->c_cc[control_info[i].offset]; + if (ch == _POSIX_VDISABLE) + strcpy(G.buf, "<undef>"); + else + visible(ch, G.buf, 0); + wrapf("%s = %s;", nth_string(control_name, i), G.buf); } #if VEOF == VMIN if ((mode->c_lflag & ICANON) == 0) @@ -1072,7 +1043,7 @@ static void do_display(const struct termios *mode, int all) prev_type = mode_info[i].type; } - bitsp = mode_type_flag(mode_info[i].type, mode); + bitsp = get_ptr_to_tcflag(mode_info[i].type, mode); mask = mode_info[i].mask ? mode_info[i].mask : mode_info[i].bits; if ((*bitsp & mask) == mode_info[i].bits) { if (all || (mode_info[i].flags & SANE_UNSET)) @@ -1091,7 +1062,6 @@ static void do_display(const struct termios *mode, int all) static void sane_mode(struct termios *mode) { int i; - tcflag_t *bitsp; for (i = 0; i < NUM_control_info; ++i) { #if VMIN == VEOF @@ -1102,14 +1072,17 @@ static void sane_mode(struct termios *mode) } for (i = 0; i < NUM_mode_info; ++i) { + tcflag_t val; + tcflag_t *bitsp = get_ptr_to_tcflag(mode_info[i].type, mode); + + if (!bitsp) + continue; + val = *bitsp & ~((unsigned long)mode_info[i].mask); if (mode_info[i].flags & SANE_SET) { - bitsp = mode_type_flag(mode_info[i].type, mode); - *bitsp = (*bitsp & ~((unsigned long)mode_info[i].mask)) - | mode_info[i].bits; - } else if (mode_info[i].flags & SANE_UNSET) { - bitsp = mode_type_flag(mode_info[i].type, mode); - *bitsp = *bitsp & ~((unsigned long)mode_info[i].mask) - & ~mode_info[i].bits; + *bitsp = val | mode_info[i].bits; + } else + if (mode_info[i].flags & SANE_UNSET) { + *bitsp = val & ~mode_info[i].bits; } } } @@ -1119,17 +1092,18 @@ static void set_mode(const struct mode_info *info, int reversed, { tcflag_t *bitsp; - bitsp = mode_type_flag(info->type, mode); + bitsp = get_ptr_to_tcflag(info->type, mode); if (bitsp) { + tcflag_t val = *bitsp & ~info->mask; if (reversed) - *bitsp = *bitsp & ~info->mask & ~info->bits; + *bitsp = val & ~info->bits; else - *bitsp = (*bitsp & ~info->mask) | info->bits; + *bitsp = val | info->bits; return; } - /* Combination mode */ + /* !bitsp - it's a "combination" mode */ if (info == &mode_info[IDX_evenp] || info == &mode_info[IDX_parity]) { if (reversed) mode->c_cflag = (mode->c_cflag & ~PARENB & ~CSIZE) | CS8; @@ -1534,7 +1508,12 @@ int stty_main(int argc UNUSED_PARAM, char **argv) perror_on_device_and_die("%s"); if (memcmp(&mode, &new_mode, sizeof(mode)) != 0) { -#if CIBAUD +/* + * I think the below chunk is not necessary on Linux. + * If you are deleting it, also delete STTY_speed_was_set bit - + * it is only ever checked here. + */ +#if 0 /* was "if CIBAUD" */ /* SunOS 4.1.3 (at least) has the problem that after this sequence, tcgetattr (&m1); tcsetattr (&m1); tcgetattr (&m2); sometimes (m1 != m2). The only difference is in the four bits diff --git a/coreutils/sum.c b/coreutils/sum.c index 75f6ef6..deb068e 100644 --- a/coreutils/sum.c +++ b/coreutils/sum.c @@ -70,9 +70,9 @@ static unsigned sum_file(const char *file, unsigned type) if (type >= SUM_SYSV) { r = (s & 0xffff) + ((s & 0xffffffff) >> 16); s = (r & 0xffff) + (r >> 16); - printf("%d %llu %s\n", s, (total_bytes + 511) / 512, file); + printf("%u %llu %s\n", s, (total_bytes + 511) / 512, file); } else - printf("%05d %5llu %s\n", s, (total_bytes + 1023) / 1024, file); + printf("%05u %5llu %s\n", s, (total_bytes + 1023) / 1024, file); return 1; #undef buf } diff --git a/coreutils/tail.c b/coreutils/tail.c index 96fd011..0e12443 100644 --- a/coreutils/tail.c +++ b/coreutils/tail.c @@ -24,6 +24,8 @@ * 7) lseek attempted when count==0 even if arg was +0 (from top) */ +//kbuild:lib-$(CONFIG_TAIL) += tail.o + //usage:#define tail_trivial_usage //usage: "[OPTIONS] [FILE]..." //usage:#define tail_full_usage "\n\n" @@ -34,14 +36,13 @@ //usage: "\n -s SECONDS Wait SECONDS between reads with -f" //usage: ) //usage: "\n -n N[kbm] Print last N lines" +//usage: "\n -n +N[kbm] Start on Nth line and print the rest" //usage: IF_FEATURE_FANCY_TAIL( -//usage: "\n -c N[kbm] Print last N bytes" +//usage: "\n -c [+]N[kbm] Print last N bytes" //usage: "\n -q Never print headers" //usage: "\n -v Always print headers" //usage: "\n" //usage: "\nN may be suffixed by k (x1024), b (x512), or m (x1024^2)." -//usage: "\nIf N starts with a '+', output begins with the Nth item from the start" -//usage: "\nof each file, not from the end." //usage: ) //usage: //usage:#define tail_example_usage @@ -50,13 +51,6 @@ #include "libbb.h" -static const struct suffix_mult tail_suffixes[] = { - { "b", 512 }, - { "k", 1024 }, - { "m", 1024*1024 }, - { "", 0 } -}; - struct globals { bool from_top; bool exitcode; @@ -73,15 +67,6 @@ static void tail_xprint_header(const char *fmt, const char *filename) static ssize_t tail_read(int fd, char *buf, size_t count) { ssize_t r; - off_t current; - struct stat sbuf; - - /* /proc files report zero st_size, don't lseek them. */ - if (fstat(fd, &sbuf) == 0 && sbuf.st_size > 0) { - current = lseek(fd, 0, SEEK_CUR); - if (sbuf.st_size < current) - xlseek(fd, 0, SEEK_SET); - } r = full_read(fd, buf, count); if (r < 0) { @@ -102,7 +87,7 @@ static unsigned eat_num(const char *p) p++; G.from_top = 1; } - return xatou_sfx(p, tail_suffixes); + return xatou_sfx(p, bkm_suffixes); } int tail_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; @@ -120,6 +105,7 @@ int tail_main(int argc, char **argv) int *fds; const char *fmt; + int prev_fd; INIT_G(); @@ -324,6 +310,7 @@ int tail_main(int argc, char **argv) xwrite(STDOUT_FILENO, tailbuf, taillen); } } while (++i < nfiles); + prev_fd = fds[i-1]; tailbuf = xrealloc(tailbuf, BUFSIZ); @@ -367,10 +354,23 @@ int tail_main(int argc, char **argv) if (nfiles > header_threshhold) { fmt = header_fmt_str; } - while ((nread = tail_read(fd, tailbuf, BUFSIZ)) > 0) { - if (fmt) { + for (;;) { + /* tail -f keeps following files even if they are truncated */ + struct stat sbuf; + /* /proc files report zero st_size, don't lseek them */ + if (fstat(fd, &sbuf) == 0 && sbuf.st_size > 0) { + off_t current = lseek(fd, 0, SEEK_CUR); + if (sbuf.st_size < current) + xlseek(fd, 0, SEEK_SET); + } + + nread = tail_read(fd, tailbuf, BUFSIZ); + if (nread <= 0) + break; + if (fmt && (fd != prev_fd)) { tail_xprint_header(fmt, filename); fmt = NULL; + prev_fd = fd; } xwrite(STDOUT_FILENO, tailbuf, nread); } diff --git a/coreutils/touch.c b/coreutils/touch.c index 1216ca2..293a968 100644 --- a/coreutils/touch.c +++ b/coreutils/touch.c @@ -26,6 +26,14 @@ //config: touch is used to create or change the access and/or //config: modification timestamp of specified files. //config: +//config:config FEATURE_TOUCH_NODEREF +//config: bool "Add support for -h" +//config: default y +//config: depends on TOUCH +//config: help +//config: Enable touch to have the -h option. +//config: This requires libc support for lutimes() function. +//config: //config:config FEATURE_TOUCH_SUSV3 //config: bool "Add support for SUSV3 features (-d -t -r)" //config: default y @@ -42,6 +50,9 @@ //usage:#define touch_full_usage "\n\n" //usage: "Update the last-modified date on the given FILE[s]\n" //usage: "\n -c Don't create files" +//usage: IF_FEATURE_TOUCH_NODEREF( +//usage: "\n -h Don't follow links" +//usage: ) //usage: IF_FEATURE_TOUCH_SUSV3( //usage: "\n -d DT Date/time to use" //usage: "\n -t DT Date/time to use" @@ -65,6 +76,7 @@ * parse STRING and use it instead of current time * -f (ignored, BSD compat) * -m change only the modification time + * -h, --no-dereference * -r, --reference=FILE * use this file's times instead of current time * -t STAMP @@ -79,6 +91,13 @@ int touch_main(int argc UNUSED_PARAM, char **argv) int fd; int status = EXIT_SUCCESS; int opts; + enum { + OPT_c = (1 << 0), + OPT_r = (1 << 1) * ENABLE_FEATURE_TOUCH_SUSV3, + OPT_d = (1 << 2) * ENABLE_FEATURE_TOUCH_SUSV3, + OPT_t = (1 << 3) * ENABLE_FEATURE_TOUCH_SUSV3, + OPT_h = (1 << 4) * ENABLE_FEATURE_TOUCH_NODEREF, + }; #if ENABLE_FEATURE_TOUCH_SUSV3 # if ENABLE_LONG_OPTS static const char touch_longopts[] ALIGN1 = @@ -86,6 +105,7 @@ int touch_main(int argc UNUSED_PARAM, char **argv) "no-create\0" No_argument "c" "reference\0" Required_argument "r" "date\0" Required_argument "d" + IF_FEATURE_TOUCH_NODEREF("no-dereference\0" No_argument "h") ; # endif char *reference_file = NULL; @@ -105,13 +125,13 @@ int touch_main(int argc UNUSED_PARAM, char **argv) * accepted data format differs a bit between -d and -t. * We accept the same formats for both */ opts = getopt32(argv, "c" IF_FEATURE_TOUCH_SUSV3("r:d:t:") + IF_FEATURE_TOUCH_NODEREF("h") /*ignored:*/ "fma" IF_FEATURE_TOUCH_SUSV3(, &reference_file) IF_FEATURE_TOUCH_SUSV3(, &date_str) IF_FEATURE_TOUCH_SUSV3(, &date_str) ); - opts &= 1; /* only -c bit is left */ argv += optind; if (!*argv) { bb_show_usage(); @@ -121,6 +141,10 @@ int touch_main(int argc UNUSED_PARAM, char **argv) struct stat stbuf; xstat(reference_file, &stbuf); timebuf[1].tv_sec = timebuf[0].tv_sec = stbuf.st_mtime; + /* Can use .st_mtim.tv_nsec + * (or is it .st_mtimensec?? see date.c) + * to set microseconds too. + */ } if (date_str) { @@ -141,9 +165,16 @@ int touch_main(int argc UNUSED_PARAM, char **argv) } do { - if (utimes(*argv, (reference_file || date_str) ? timebuf : NULL) != 0) { - if (errno == ENOENT) { /* no such file */ - if (opts) { /* creation is disabled, so ignore */ + int result; + result = ( +#if ENABLE_FEATURE_TOUCH_NODEREF + (opts & OPT_h) ? lutimes : +#endif + utimes)(*argv, (reference_file || date_str) ? timebuf : NULL); + if (result != 0) { + if (errno == ENOENT) { /* no such file? */ + if (opts & OPT_c) { + /* Creation is disabled, so ignore */ continue; } /* Try to create the file */ diff --git a/debianutils/run_parts.c b/debianutils/run_parts.c index 005b304..527fae2 100644 --- a/debianutils/run_parts.c +++ b/debianutils/run_parts.c @@ -21,24 +21,24 @@ * taken from debian-utils. I've only removed the long options and the * report mode. As the original run-parts support only long options, I've * broken compatibility because the BusyBox policy doesn't allow them. - * The supported options are: - * -t test. Print the name of the files to be executed, without - * execute them. - * -a ARG argument. Pass ARG as an argument the program executed. It can - * be repeated to pass multiple arguments. - * -u MASK umask. Set the umask of the program executed to MASK. */ //usage:#define run_parts_trivial_usage -//usage: "[-t"IF_FEATURE_RUN_PARTS_FANCY("l")"] [-a ARG]... [-u MASK] DIRECTORY" +//usage: "[-a ARG]... [-u UMASK] " +//usage: IF_FEATURE_RUN_PARTS_LONG_OPTIONS("[--reverse] [--test] [--exit-on-error] "IF_FEATURE_RUN_PARTS_FANCY("[--list] ")) +//usage: "DIRECTORY" //usage:#define run_parts_full_usage "\n\n" //usage: "Run a bunch of scripts in DIRECTORY\n" -//usage: "\n -t Dry run" +//usage: "\n -a ARG Pass ARG as argument to scripts" +//usage: "\n -u UMASK Set UMASK before running scripts" +//usage: IF_FEATURE_RUN_PARTS_LONG_OPTIONS( +//usage: "\n --reverse Reverse execution order" +//usage: "\n --test Dry run" +//usage: "\n --exit-on-error Exit if a script exits with non-zero" //usage: IF_FEATURE_RUN_PARTS_FANCY( -//usage: "\n -l Print names of matching files even if they are not executable" +//usage: "\n --list Print names of matching files even if they are not executable" +//usage: ) //usage: ) -//usage: "\n -a ARG Pass ARG as argument to programs" -//usage: "\n -u MASK Set umask to MASK before running programs" //usage: //usage:#define run_parts_example_usage //usage: "$ run-parts -a start /etc/init.d\n" @@ -59,7 +59,7 @@ struct globals { char **names; int cur; - char *cmd[1]; + char *cmd[2 /* using 1 provokes compiler warning */]; } FIX_ALIASING; #define G (*(struct globals*)&bb_common_bufsiz1) #define names (G.names) @@ -70,19 +70,15 @@ struct globals { enum { NUM_CMD = (COMMON_BUFSIZE - sizeof(G)) / sizeof(cmd[0]) - 1 }; enum { - OPT_r = (1 << 0), - OPT_a = (1 << 1), - OPT_u = (1 << 2), - OPT_t = (1 << 3), - OPT_l = (1 << 4) * ENABLE_FEATURE_RUN_PARTS_FANCY, + OPT_a = (1 << 0), + OPT_u = (1 << 1), + OPT_r = (1 << 2) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS, + OPT_t = (1 << 3) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS, + OPT_e = (1 << 4) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS, + OPT_l = (1 << 5) * ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS + * ENABLE_FEATURE_RUN_PARTS_FANCY, }; -#if ENABLE_FEATURE_RUN_PARTS_FANCY -#define list_mode (option_mask32 & OPT_l) -#else -#define list_mode 0 -#endif - /* Is this a valid filename (upper/lower alpha, digits, * underscores, and hyphens only?) */ @@ -110,7 +106,7 @@ static int FAST_FUNC act(const char *file, struct stat *statbuf, void *args UNUS if (depth == 2 && ( !(statbuf->st_mode & (S_IFREG | S_IFLNK)) || invalid_name(file) - || (!list_mode && access(file, X_OK) != 0)) + || (!(option_mask32 & OPT_l) && access(file, X_OK) != 0)) ) { return SKIP; } @@ -126,11 +122,12 @@ static int FAST_FUNC act(const char *file, struct stat *statbuf, void *args UNUS static const char runparts_longopts[] ALIGN1 = "arg\0" Required_argument "a" "umask\0" Required_argument "u" - "test\0" No_argument "t" -#if ENABLE_FEATURE_RUN_PARTS_FANCY - "list\0" No_argument "l" - "reverse\0" No_argument "r" //TODO: "verbose\0" No_argument "v" + "reverse\0" No_argument "\xf0" + "test\0" No_argument "\xf1" + "exit-on-error\0" No_argument "\xf2" +#if ENABLE_FEATURE_RUN_PARTS_FANCY + "list\0" No_argument "\xf3" #endif ; #endif @@ -150,7 +147,7 @@ int run_parts_main(int argc UNUSED_PARAM, char **argv) #endif /* We require exactly one argument: the directory name */ opt_complementary = "=1:a::"; - getopt32(argv, "ra:u:t"IF_FEATURE_RUN_PARTS_FANCY("l"), &arg_list, &umask_p); + getopt32(argv, "a:u:", &arg_list, &umask_p); umask(xstrtou_range(umask_p, 8, 0, 07777)); @@ -193,6 +190,9 @@ int run_parts_main(int argc UNUSED_PARAM, char **argv) bb_perror_msg("can't execute '%s'", name); else /* ret > 0 */ bb_error_msg("%s exited with code %d", name, ret & 0xff); + + if (option_mask32 & OPT_e) + xfunc_die(); } return n; diff --git a/docs/keep_data_small.txt b/docs/keep_data_small.txt index 21d7326..9fc7996 100644 --- a/docs/keep_data_small.txt +++ b/docs/keep_data_small.txt @@ -138,13 +138,6 @@ less readable, use #defines: #define sector (G.sector) - Word of caution - -If applet doesn't use much of global data, converting it to use -one of above methods is not worth the resulting code obfuscation. -If you have less than ~300 bytes of global data - don't bother. - - Finding non-shared duplicated strings strings busybox | sort | uniq -c | sort -nr @@ -224,6 +217,14 @@ Result (non-static busybox built against glibc): Keeping code small +Use scripts/bloat-o-meter to check whether introduced changes +didn't generate unnecessary bloat. This script needs unstripped binaries +to generate a detailed report. To automate this, just use +"make bloatcheck". It requires busybox_old binary to be present, +use "make baseline" to generate it from unmodified source, or +copy busybox_unstripped to busybox_old before modifying sources +and rebuilding. + Set CONFIG_EXTRA_CFLAGS="-fno-inline-functions-called-once", produce "make bloatcheck", see the biggest auto-inlined functions. Now, set CONFIG_EXTRA_CFLAGS back to "", but add NOINLINE diff --git a/docs/mdev.txt b/docs/mdev.txt index 61f93c9..b24025f 100644 --- a/docs/mdev.txt +++ b/docs/mdev.txt @@ -51,9 +51,9 @@ device nodes if your system needs something more than the default root/root 660 permissions. The file has the format: - [-]<device regex> <uid>:<gid> <permissions> + [-][envmatch]<device regex> <uid>:<gid> <permissions> or - @<maj[,min1[-min2]]> <uid>:<gid> <permissions> + [envmatch]@<maj[,min1[-min2]]> <uid>:<gid> <permissions> or $envvar=<regex> <uid>:<gid> <permissions> diff --git a/docs/tcp.txt b/docs/tcp.txt new file mode 100644 index 0000000..2000f31 --- a/dev/null +++ b/docs/tcp.txt @@ -0,0 +1,93 @@ + Some less-widely known details of TCP connections. + + Properly closing the connection. + +After this code sequence: + + sock = socket(AF_INET, SOCK_STREAM, 0); + connect(sock, &remote, sizeof(remote)); + write(sock, buffer, 1000000); + +a large block of data is only buffered by kernel, it can't be sent all at once. +What will happen if we close the socket? + +"A host MAY implement a 'half-duplex' TCP close sequence, so that + an application that has called close() cannot continue to read + data from the connection. If such a host issues a close() call + while received data is still pending in TCP, or if new data is + received after close() is called, its TCP SHOULD send a RST + to show that data was lost." + +IOW: if we just close(sock) now, kernel can reset the TCP connection +(send RST packet). + +This is problematic for two reasons: it discards some not-yet sent +data, and it may be reported as error, not EOF, on peer's side. + +What can be done about it? + +Solution #1: block until sending is done: + + /* When enabled, a close(2) or shutdown(2) will not return until + * all queued messages for the socket have been successfully sent + * or the linger timeout has been reached. + */ + struct linger { + int l_onoff; /* linger active */ + int l_linger; /* how many seconds to linger for */ + } linger; + linger.l_onoff = 1; + linger.l_linger = SOME_NUM; + setsockopt(sock, SOL_SOCKET, SO_LINGER, &linger, sizeof(linger)); + close(sock); + +Solution #2: tell kernel that you are done sending. +This makes kernel send FIN after all data is written: + + shutdown(sock, SHUT_WR); + close(sock); + +However, experiments on Linux 3.9.4 show that kernel can return from +shutdown() and from close() before all data is sent, +and if peer sends any data to us after this, kernel still responds with +RST before all our data is sent. + +In practice the protocol in use often does not allow peer to send +such data to us, in which case this solution is acceptable. + +Solution #3: if you know that peer is going to close its end after it sees +our FIN (as EOF), it might be a good idea to perform a read after shutdown(). +When read finishes with 0-sized result, we conclude that peer received all +the data, saw EOF, and closed its end. + +However, this incurs small performance penalty (we run for a longer time) +and requires safeguards (nonblocking reads, timeouts etc) against +malicious peers which don't close the connection. + +Solutions #1 and #2 can be combined: + + /* ...set up struct linger... then: */ + setsockopt(sock, SOL_SOCKET, SO_LINGER, &linger, sizeof(linger)); + shutdown(sock, SHUT_WR); + /* At this point, kernel sent FIN packet, not RST, to the peer, */ + /* even if there is buffered read data from the peer. */ + close(sock); + + Defeating Nagle. + +Method #1: manually control whether partial sends are allowed: + +This prevents partially filled packets being sent: + + int state = 1; + setsockopt(fd, IPPROTO_TCP, TCP_CORK, &state, sizeof(state)); + +and this forces last, partially filled packet (if any) to be sent: + + int state = 0; + setsockopt(fd, IPPROTO_TCP, TCP_CORK, &state, sizeof(state)); + +Method #2: make any write to immediately send data, even if it's partial: + + int state = 1; + setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &state, sizeof(state)); diff --git a/e2fsprogs/old_e2fsprogs/blkid/blkidP.h b/e2fsprogs/old_e2fsprogs/blkid/blkidP.h index d6b2b42..bbadc8e 100644 --- a/e2fsprogs/old_e2fsprogs/blkid/blkidP.h +++ b/e2fsprogs/old_e2fsprogs/blkid/blkidP.h @@ -179,8 +179,4 @@ extern int blkid_set_tag(blkid_dev dev, const char *name, extern blkid_dev blkid_new_dev(void); extern void blkid_free_dev(blkid_dev dev); -#ifdef __cplusplus -} -#endif - #endif diff --git a/e2fsprogs/old_e2fsprogs/blkid/cache.c b/e2fsprogs/old_e2fsprogs/blkid/cache.c index d1d2914..251e499 100644 --- a/e2fsprogs/old_e2fsprogs/blkid/cache.c +++ b/e2fsprogs/old_e2fsprogs/blkid/cache.c @@ -115,7 +115,7 @@ int main(int argc, char** argv) argv[0], ret); exit(1); } - if ((ret = blkid_probe_all(cache) < 0)) + if ((ret = blkid_probe_all(cache)) < 0) fprintf(stderr, "error probing devices\n"); blkid_put_cache(cache); diff --git a/e2fsprogs/old_e2fsprogs/blkid/dev.c b/e2fsprogs/old_e2fsprogs/blkid/dev.c index bb0cc91..260e49c 100644 --- a/e2fsprogs/old_e2fsprogs/blkid/dev.c +++ b/e2fsprogs/old_e2fsprogs/blkid/dev.c @@ -153,7 +153,7 @@ extern int optind; void usage(char *prog) { fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask]\n", prog); - fprintf(stderr, "\tList all devices and exit\n", prog); + fprintf(stderr, "\tList all devices and exit\n"); exit(1); } @@ -176,7 +176,7 @@ int main(int argc, char **argv) case 'm': blkid_debug_mask = strtoul (optarg, &tmp, 0); if (*tmp) { - fprintf(stderr, "Invalid debug mask: %d\n", + fprintf(stderr, "Invalid debug mask: %s\n", optarg); exit(1); } diff --git a/e2fsprogs/old_e2fsprogs/blkid/read.c b/e2fsprogs/old_e2fsprogs/blkid/read.c index f795a5d..feeda51 100644 --- a/e2fsprogs/old_e2fsprogs/blkid/read.c +++ b/e2fsprogs/old_e2fsprogs/blkid/read.c @@ -385,7 +385,7 @@ void blkid_read_cache(blkid_cache cache) continue; end = strlen(buf) - 1; /* Continue reading next line if it ends with a backslash */ - while (buf[end] == '\\' && end < sizeof(buf) - 2 && + while (end < sizeof(buf) - 2 && buf[end] == '\\' && fgets(buf + end, sizeof(buf) - end, file)) { end = strlen(buf) - 1; lineno++; diff --git a/e2fsprogs/old_e2fsprogs/blkid/tag.c b/e2fsprogs/old_e2fsprogs/blkid/tag.c index 8337b46..7424ede 100644 --- a/e2fsprogs/old_e2fsprogs/blkid/tag.c +++ b/e2fsprogs/old_e2fsprogs/blkid/tag.c @@ -356,7 +356,7 @@ void usage(char *prog) fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask] device " "[type value]\n", prog); - fprintf(stderr, "\tList all tags for a device and exit\n", prog); + fprintf(stderr, "\tList all tags for a device and exit\n"); exit(1); } @@ -382,7 +382,7 @@ int main(int argc, char **argv) case 'm': blkid_debug_mask = strtoul (optarg, &tmp, 0); if (*tmp) { - fprintf(stderr, "Invalid debug mask: %d\n", + fprintf(stderr, "Invalid debug mask: %s\n", optarg); exit(1); } @@ -407,7 +407,7 @@ int main(int argc, char **argv) dev = blkid_get_dev(cache, devname, flags); if (!dev) { - fprintf(stderr, "%s: cannot find device in blkid cache\n"); + fprintf(stderr, "%s: cannot find device in blkid cache\n", devname); exit(1); } if (search_type) { diff --git a/e2fsprogs/old_e2fsprogs/e2fsck.c b/e2fsprogs/old_e2fsprogs/e2fsck.c index 373e8ce..8400a92 100644 --- a/e2fsprogs/old_e2fsprogs/e2fsck.c +++ b/e2fsprogs/old_e2fsprogs/e2fsck.c @@ -1050,7 +1050,7 @@ static errcode_t ea_refcount_create(int size, ext2_refcount_t *ret) refcount->size = size; bytes = (size_t) (size * sizeof(struct ea_refcount_el)); #ifdef DEBUG - printf("Refcount allocated %d entries, %d bytes.\n", + printf("Refcount allocated %d entries, %lu bytes.\n", refcount->size, bytes); #endif retval = ext2fs_get_mem(bytes, &refcount->list); @@ -3424,7 +3424,7 @@ static void e2fsck_pass1(e2fsck_t ctx) continue; } if ((inode->i_links_count || inode->i_blocks || - inode->i_blocks || inode->i_block[0]) && + inode->i_block[0]) && fix_problem(ctx, PR_1_JOURNAL_INODE_NOT_CLEAR, &pctx)) { memset(inode, 0, inode_size); @@ -12195,11 +12195,7 @@ static void swap_filesys(e2fsck_t ctx) void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned int size, const char *description) { - void *ret; - char buf[256]; - - ret = xzalloc(size); - return ret; + return xzalloc(size); } static char *string_copy(const char *str, int len) diff --git a/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c b/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c index da2d151..240335b 100644 --- a/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c +++ b/e2fsprogs/old_e2fsprogs/ext2fs/initialize.c @@ -83,7 +83,7 @@ static int calc_reserved_gdt_blocks(ext2_filsys fs) if (rsv_gdb > EXT2_ADDR_PER_BLOCK(sb)) rsv_gdb = EXT2_ADDR_PER_BLOCK(sb); #ifdef RES_GDT_DEBUG - printf("max_blocks %lu, rsv_groups = %lu, rsv_gdb = %lu\n", + printf("max_blocks %lu, rsv_groups = %lu, rsv_gdb = %u\n", max_blocks, rsv_groups, rsv_gdb); #endif diff --git a/e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c b/e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c index 474f073..3c95829 100644 --- a/e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c +++ b/e2fsprogs/old_e2fsprogs/ext2fs/unix_io.c @@ -544,7 +544,7 @@ static errcode_t unix_read_blk(io_channel channel, unsigned long block, /* If it's in the cache, use it! */ if ((cache = find_cached_block(data, block, &reuse[0]))) { #ifdef DEBUG - printf("Using cached block %d\n", block); + printf("Using cached block %lu\n", block); #endif memcpy(cp, cache->buf, channel->block_size); count--; @@ -560,7 +560,7 @@ static errcode_t unix_read_blk(io_channel channel, unsigned long block, if (find_cached_block(data, block+i, &reuse[i])) break; #ifdef DEBUG - printf("Reading %d blocks starting at %d\n", i, block); + printf("Reading %d blocks starting at %lu\n", i, block); #endif if ((retval = raw_read_blk(channel, data, block, i, cp))) return retval; diff --git a/e2fsprogs/old_e2fsprogs/fsck.c b/e2fsprogs/old_e2fsprogs/fsck.c index 3a0743b..91cce97 100644 --- a/e2fsprogs/old_e2fsprogs/fsck.c +++ b/e2fsprogs/old_e2fsprogs/fsck.c @@ -1239,7 +1239,6 @@ static void PRS(int argc, char **argv) progress_fd = 0; else { goto next_arg; - i++; } } break; diff --git a/e2fsprogs/old_e2fsprogs/mke2fs.c b/e2fsprogs/old_e2fsprogs/mke2fs.c index 35d717a..ebcb46c 100644 --- a/e2fsprogs/old_e2fsprogs/mke2fs.c +++ b/e2fsprogs/old_e2fsprogs/mke2fs.c @@ -239,7 +239,7 @@ static void test_disk(ext2_filsys fs, badblocks_list *bb_list) errcode_t retval; char buf[1024]; - sprintf(buf, "badblocks -b %d %s%s%s %d", fs->blocksize, + sprintf(buf, "badblocks -b %u %s%s%s %d", fs->blocksize, quiet ? "" : "-s ", (cflag > 1) ? "-w " : "", fs->device_name, fs->super->s_blocks_count); mke2fs_verbose("Running command: %s\n", buf); @@ -385,7 +385,7 @@ static errcode_t zero_blocks(ext2_filsys fs, blk_t blk, int num, struct progress_struct *progress, blk_t *ret_blk, int *ret_count) { - int j, count, next_update, next_update_incr; + int j, count, next_update; static char *buf; errcode_t retval; @@ -403,9 +403,7 @@ static errcode_t zero_blocks(ext2_filsys fs, blk_t blk, int num, } /* OK, do the write loop */ next_update = 0; - next_update_incr = num / 100; - if (next_update_incr < 1) - next_update_incr = 1; + for (j=0; j < num; j += STRIDE_LENGTH, blk += STRIDE_LENGTH) { count = num - j; if (count > STRIDE_LENGTH) diff --git a/e2fsprogs/old_e2fsprogs/tune2fs.c b/e2fsprogs/old_e2fsprogs/tune2fs.c index 3c3f4af..bbe30e5 100644 --- a/e2fsprogs/old_e2fsprogs/tune2fs.c +++ b/e2fsprogs/old_e2fsprogs/tune2fs.c @@ -607,7 +607,7 @@ int tune2fs_main(int argc, char **argv) if (e_flag) { sb->s_errors = errors; ext2fs_mark_super_dirty(fs); - printf("Setting error behavior to %d\n", errors); + printf("Setting error behavior to %u\n", errors); } if (g_flag) { sb->s_def_resgid = resgid; diff --git a/e2fsprogs/old_e2fsprogs/util.c b/e2fsprogs/old_e2fsprogs/util.c index a61abc2..3e7ee8e 100644 --- a/e2fsprogs/old_e2fsprogs/util.c +++ b/e2fsprogs/old_e2fsprogs/util.c @@ -117,7 +117,7 @@ void parse_journal_opts(char **journal_device, int *journal_flags, } if (strcmp(token, "device") == 0) { *journal_device = blkid_get_devname(NULL, arg, NULL); - if (!journal_device) { + if (!*journal_device) { journal_usage++; continue; } @@ -239,7 +239,7 @@ void make_journal_blocks(ext2_filsys fs, int journal_size, int journal_flags, in return; } if (!quiet) - printf("Creating journal (%ld blocks): ", journal_blocks); + printf("Creating journal (%lu blocks): ", journal_blocks); fflush(stdout); retval = ext2fs_add_journal_inode(fs, journal_blocks, journal_flags); diff --git a/editors/Config.src b/editors/Config.src index af1e1de..c6e9d92 100644 --- a/editors/Config.src +++ b/editors/Config.src @@ -7,66 +7,6 @@ menu "Editors" INSERT -config AWK - bool "awk" - default y - help - Awk is used as a pattern scanning and processing language. This is - the BusyBox implementation of that programming language. - -config FEATURE_AWK_LIBM - bool "Enable math functions (requires libm)" - default y - depends on AWK - help - Enable math functions of the Awk programming language. - NOTE: This will require libm to be present for linking. - -config CMP - bool "cmp" - default y - help - cmp is used to compare two files and returns the result - to standard output. - -config DIFF - bool "diff" - default y - help - diff compares two files or directories and outputs the - differences between them in a form that can be given to - the patch command. - -config FEATURE_DIFF_LONG_OPTIONS - bool "Enable long options" - default y - depends on DIFF && LONG_OPTS - help - Enable use of long options. - -config FEATURE_DIFF_DIR - bool "Enable directory support" - default y - depends on DIFF - help - This option enables support for directory and subdirectory - comparison. - -config ED - bool "ed" - default y - help - The original 1970's Unix text editor, from the days of teletypes. - Small, simple, evil. Part of SUSv3. If you're not already using - this, you don't need it. - -config SED - bool "sed" - default y - help - sed is used to perform text transformations on a file - or input from a pipeline. - config FEATURE_ALLOW_EXEC bool "Allow vi and awk to execute shell commands" default y diff --git a/editors/Kbuild.src b/editors/Kbuild.src index 8888cba..6b4fb74 100644 --- a/editors/Kbuild.src +++ b/editors/Kbuild.src @@ -7,8 +7,3 @@ lib-y:= INSERT -lib-$(CONFIG_AWK) += awk.o -lib-$(CONFIG_CMP) += cmp.o -lib-$(CONFIG_DIFF) += diff.o -lib-$(CONFIG_ED) += ed.o -lib-$(CONFIG_SED) += sed.o diff --git a/editors/awk.c b/editors/awk.c index d8c393f..b511361 100644 --- a/editors/awk.c +++ b/editors/awk.c @@ -7,12 +7,45 @@ * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +//config:config AWK +//config: bool "awk" +//config: default y +//config: help +//config: Awk is used as a pattern scanning and processing language. This is +//config: the BusyBox implementation of that programming language. +//config: +//config:config FEATURE_AWK_LIBM +//config: bool "Enable math functions (requires libm)" +//config: default y +//config: depends on AWK +//config: help +//config: Enable math functions of the Awk programming language. +//config: NOTE: This will require libm to be present for linking. +//config: +//config:config FEATURE_AWK_GNU_EXTENSIONS +//config: bool "Enable a few GNU extensions" +//config: default y +//config: depends on AWK +//config: help +//config: Enable a few features from gawk: +//config: * command line option -e AWK_PROGRAM +//config: * simultaneous use of -f and -e on the command line. +//config: This enables the use of awk library files. +//config: Ex: awk -f mylib.awk -e '{print myfunction($1);}' ... + +//applet:IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk)) + +//kbuild:lib-$(CONFIG_AWK) += awk.o + //usage:#define awk_trivial_usage //usage: "[OPTIONS] [AWK_PROGRAM] [FILE]..." //usage:#define awk_full_usage "\n\n" //usage: " -v VAR=VAL Set variable" //usage: "\n -F SEP Use SEP as field separator" //usage: "\n -f FILE Read program from FILE" +//usage: IF_FEATURE_AWK_GNU_EXTENSIONS( +//usage: "\n -e AWK_PROGRAM" +//usage: ) #include "libbb.h" #include "xregex.h" @@ -38,6 +71,25 @@ #endif +#define OPTSTR_AWK \ + "F:v:f:" \ + IF_FEATURE_AWK_GNU_EXTENSIONS("e:") \ + "W:" +#define OPTCOMPLSTR_AWK \ + "v::f::" \ + IF_FEATURE_AWK_GNU_EXTENSIONS("e::") +enum { + OPTBIT_F, /* define field separator */ + OPTBIT_v, /* define variable */ + OPTBIT_f, /* pull in awk program from file */ + IF_FEATURE_AWK_GNU_EXTENSIONS(OPTBIT_e,) /* -e AWK_PROGRAM */ + OPTBIT_W, /* -W ignored */ + OPT_F = 1 << OPTBIT_F, + OPT_v = 1 << OPTBIT_v, + OPT_f = 1 << OPTBIT_f, + OPT_e = IF_FEATURE_AWK_GNU_EXTENSIONS((1 << OPTBIT_e)) + 0, + OPT_W = 1 << OPTBIT_W +}; #define MAXVARFMT 240 #define MINNVBLOCK 64 @@ -190,7 +242,7 @@ typedef struct tsplitter_s { /* combined token classes */ #define TC_BINOP (TC_BINOPX | TC_COMMA | TC_PIPE | TC_IN) -#define TC_UNARYOP (TC_UOPPRE | TC_UOPPOST) +//#define TC_UNARYOP (TC_UOPPRE | TC_UOPPOST) #define TC_OPERAND (TC_VARIABLE | TC_ARRAY | TC_FUNCTION \ | TC_BUILTIN | TC_GETLINE | TC_SEQSTART | TC_STRING | TC_NUMBER) @@ -2015,8 +2067,8 @@ static int fmt_num(char *b, int size, const char *format, double n, int int_as_i char c; const char *s = format; - if (int_as_int && n == (int)n) { - r = snprintf(b, size, "%d", (int)n); + if (int_as_int && n == (long long)n) { + r = snprintf(b, size, "%lld", (long long)n); } else { do { c = *s; } while (c && *++s); if (strchr("diouxX", c)) { @@ -2661,7 +2713,8 @@ static var *evaluate(node *op, var *res) var *vbeg, *v; const char *sv_progname; - if (!op->r.f->body.first) + /* The body might be empty, still has to eval the args */ + if (!op->r.n->info && !op->r.f->body.first) syntax_error(EMSG_UNDEF_FUNC); vbeg = v = nvalloc(op->r.f->nargs + 1); @@ -2732,7 +2785,7 @@ static var *evaluate(node *op, var *res) switch (opn) { case F_in: - R_d = (int)L_d; + R_d = (long long)L_d; break; case F_rn: @@ -2783,8 +2836,16 @@ static var *evaluate(node *op, var *res) break; case F_le: - if (!op1) + debug_printf_eval("length: L.s:'%s'\n", L.s); + if (!op1) { L.s = getvar_s(intvar[F0]); + debug_printf_eval("length: L.s='%s'\n", L.s); + } + else if (L.v->type & VF_ARRAY) { + R_d = L.v->x.array->nel; + debug_printf_eval("length: array_len:%d\n", L.v->x.array->nel); + break; + } R_d = strlen(L.s); break; @@ -2930,7 +2991,7 @@ static var *evaluate(node *op, var *res) case '%': if (R_d == 0) syntax_error(EMSG_DIV_BY_ZERO); - L_d -= (int)(L_d / R_d) * R_d; + L_d -= (long long)(L_d / R_d) * R_d; break; } debug_printf_eval("BINARY/REPLACE result:%f\n", L_d); @@ -3078,6 +3139,9 @@ int awk_main(int argc, char **argv) char *opt_F; llist_t *list_v = NULL; llist_t *list_f = NULL; +#if ENABLE_FEATURE_AWK_GNU_EXTENSIONS + llist_t *list_e = NULL; +#endif int i, j; var *v; var tv; @@ -3136,47 +3200,51 @@ int awk_main(int argc, char **argv) *s1 = '='; } } - opt_complementary = "v::f::"; /* -v and -f can occur multiple times */ - opt = getopt32(argv, "F:v:f:W:", &opt_F, &list_v, &list_f, NULL); + opt_complementary = OPTCOMPLSTR_AWK; + opt = getopt32(argv, OPTSTR_AWK, &opt_F, &list_v, &list_f, IF_FEATURE_AWK_GNU_EXTENSIONS(&list_e,) NULL); argv += optind; argc -= optind; - if (opt & 0x1) { /* -F */ + if (opt & OPT_W) + bb_error_msg("warning: option -W is ignored"); + if (opt & OPT_F) { unescape_string_in_place(opt_F); setvar_s(intvar[FS], opt_F); } - while (list_v) { /* -v */ + while (list_v) { if (!is_assignment(llist_pop(&list_v))) bb_show_usage(); } - if (list_f) { /* -f */ - do { - char *s = NULL; - FILE *from_file; - - g_progname = llist_pop(&list_f); - from_file = xfopen_stdin(g_progname); - /* one byte is reserved for some trick in next_token */ - for (i = j = 1; j > 0; i += j) { - s = xrealloc(s, i + 4096); - j = fread(s + i, 1, 4094, from_file); - } - s[i] = '\0'; - fclose(from_file); - parse_program(s + 1); - free(s); - } while (list_f); - argc++; - } else { // no -f: take program from 1st parameter - if (!argc) + while (list_f) { + char *s = NULL; + FILE *from_file; + + g_progname = llist_pop(&list_f); + from_file = xfopen_stdin(g_progname); + /* one byte is reserved for some trick in next_token */ + for (i = j = 1; j > 0; i += j) { + s = xrealloc(s, i + 4096); + j = fread(s + i, 1, 4094, from_file); + } + s[i] = '\0'; + fclose(from_file); + parse_program(s + 1); + free(s); + } + g_progname = "cmd. line"; +#if ENABLE_FEATURE_AWK_GNU_EXTENSIONS + while (list_e) { + parse_program(llist_pop(&list_e)); + } +#endif + if (!(opt & (OPT_f | OPT_e))) { + if (!*argv) bb_show_usage(); - g_progname = "cmd. line"; parse_program(*argv++); + argc--; } - if (opt & 0x8) // -W - bb_error_msg("warning: option -W is ignored"); /* fill in ARGV array */ - setvar_i(intvar[ARGC], argc); + setvar_i(intvar[ARGC], argc + 1); setari_u(intvar[ARGV], 0, "awk"); i = 0; while (*argv) diff --git a/editors/cmp.c b/editors/cmp.c index fbe6b97..a4af6f4 100644 --- a/editors/cmp.c +++ b/editors/cmp.c @@ -10,6 +10,17 @@ /* BB_AUDIT SUSv3 (virtually) compliant -- uses nicer GNU format for -l. */ /* http://www.opengroup.org/onlinepubs/007904975/utilities/cmp.html */ +//config:config CMP +//config: bool "cmp" +//config: default y +//config: help +//config: cmp is used to compare two files and returns the result +//config: to standard output. + +//kbuild:lib-$(CONFIG_CMP) += cmp.o + +//applet:IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP)) + //usage:#define cmp_trivial_usage //usage: "[-l] [-s] FILE1 [FILE2" IF_DESKTOP(" [SKIP1 [SKIP2]]") "]" //usage:#define cmp_full_usage "\n\n" diff --git a/editors/diff.c b/editors/diff.c index 0c55820..1961de6 100644 --- a/editors/diff.c +++ b/editors/diff.c @@ -76,6 +76,33 @@ * 6n words for files of length n. */ +//config:config DIFF +//config: bool "diff" +//config: default y +//config: help +//config: diff compares two files or directories and outputs the +//config: differences between them in a form that can be given to +//config: the patch command. +//config: +//config:config FEATURE_DIFF_LONG_OPTIONS +//config: bool "Enable long options" +//config: default y +//config: depends on DIFF && LONG_OPTS +//config: help +//config: Enable use of long options. +//config: +//config:config FEATURE_DIFF_DIR +//config: bool "Enable directory support" +//config: default y +//config: depends on DIFF +//config: help +//config: This option enables support for directory and subdirectory +//config: comparison. + +//kbuild:lib-$(CONFIG_DIFF) += diff.o + +//applet:IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP)) + //usage:#define diff_trivial_usage //usage: "[-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2" //usage:#define diff_full_usage "\n\n" diff --git a/editors/ed.c b/editors/ed.c index dbb5130..3087fb0 100644 --- a/editors/ed.c +++ b/editors/ed.c @@ -7,6 +7,18 @@ * The "ed" built-in command (much simplified) */ +//config:config ED +//config: bool "ed" +//config: default y +//config: help +//config: The original 1970's Unix text editor, from the days of teletypes. +//config: Small, simple, evil. Part of SUSv3. If you're not already using +//config: this, you don't need it. + +//kbuild:lib-$(CONFIG_ED) += ed.o + +//applet:IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP)) + //usage:#define ed_trivial_usage "" //usage:#define ed_full_usage "" diff --git a/editors/patch_bbox.c b/editors/patch_bbox.c index 78aa5fd..aae7b79 100644 --- a/editors/patch_bbox.c +++ b/editors/patch_bbox.c @@ -188,8 +188,8 @@ int patch_main(int argc UNUSED_PARAM, char **argv) unsigned src_last_line = 1; unsigned dst_last_line = 1; - if ((sscanf(patch_line, "@@ -%d,%d +%d,%d", &src_beg_line, &src_last_line, &dst_beg_line, &dst_last_line) < 3) - && (sscanf(patch_line, "@@ -%d +%d,%d", &src_beg_line, &dst_beg_line, &dst_last_line) < 2) + if ((sscanf(patch_line, "@@ -%u,%u +%u,%u", &src_beg_line, &src_last_line, &dst_beg_line, &dst_last_line) < 3) + && (sscanf(patch_line, "@@ -%u +%u,%u", &src_beg_line, &dst_beg_line, &dst_last_line) < 2) ) { /* No more hunks for this file */ break; diff --git a/editors/sed.c b/editors/sed.c index f8ca5d3..e18e48a 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -23,9 +23,6 @@ * resulting sed_cmd_t structures are appended to a linked list * (G.sed_cmd_head/G.sed_cmd_tail). * - * add_input_file() adds a FILE* to the list of input files. We need to - * know all input sources ahead of time to find the last line for the $ match. - * * process_files() does actual sedding, reading data lines from each input FILE* * (which could be stdin) and applying the sed command list (sed_cmd_head) to * each of the resulting lines. @@ -58,16 +55,27 @@ * http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html */ +//config:config SED +//config: bool "sed" +//config: default y +//config: help +//config: sed is used to perform text transformations on a file +//config: or input from a pipeline. + +//kbuild:lib-$(CONFIG_SED) += sed.o + +//applet:IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP)) + //usage:#define sed_trivial_usage -//usage: "[-inr] [-f FILE]... [-e CMD]... [FILE]...\n" -//usage: "or: sed [-inr] CMD [FILE]..." +//usage: "[-inrE] [-f FILE]... [-e CMD]... [FILE]...\n" +//usage: "or: sed [-inrE] CMD [FILE]..." //usage:#define sed_full_usage "\n\n" //usage: " -e CMD Add CMD to sed commands to be executed" //usage: "\n -f FILE Add FILE contents to sed commands to be executed" //usage: "\n -i[SFX] Edit files in-place (otherwise sends to stdout)" //usage: "\n Optionally back files up, appending SFX" //usage: "\n -n Suppress automatic printing of pattern space" -//usage: "\n -r Use extended regex syntax" +//usage: "\n -r,-E Use extended regex syntax" //usage: "\n" //usage: "\nIf no -e or -f, the first non-option argument is the sed command string." //usage: "\nRemaining arguments are input files (stdin if none)." @@ -124,12 +132,15 @@ static const char semicolon_whitespace[] ALIGN1 = "; \n\r\t\v"; struct globals { /* options */ int be_quiet, regex_type; + FILE *nonstdout; char *outname, *hold_space; + smallint exitcode; - /* List of input files */ - int input_file_count, current_input_file; - FILE **input_file_list; + /* list of input files */ + int current_input_file, last_input_file; + char **input_file_list; + FILE *current_fp; regmatch_t regmatch[10]; regex_t *previous_regex_ptr; @@ -137,7 +148,7 @@ struct globals { /* linked list of sed commands */ sed_cmd_t *sed_cmd_head, **sed_cmd_tail; - /* Linked list of append lines */ + /* linked list of append lines */ llist_t *append_head; char *add_cmd_line; @@ -189,8 +200,8 @@ static void sed_free_and_close_stuff(void) free(G.hold_space); - while (G.current_input_file < G.input_file_count) - fclose(G.input_file_list[G.current_input_file++]); + if (G.current_fp) + fclose(G.current_fp); } #else void sed_free_and_close_stuff(void); @@ -330,7 +341,7 @@ static int get_address(const char *my_str, int *linenum, regex_t ** regex) next = index_of_next_unescaped_regexp_delim(delimiter, ++pos); temp = copy_parsing_escapes(pos, next); *regex = xzalloc(sizeof(regex_t)); - xregcomp(*regex, temp, G.regex_type|REG_NEWLINE); + xregcomp(*regex, temp, G.regex_type); free(temp); /* Move position to next character after last delimiter */ pos += (next+1); @@ -370,7 +381,7 @@ static int parse_subst_cmd(sed_cmd_t *sed_cmd, const char *substr) /* * A substitution command should look something like this: - * s/match/replace/ #gIpw + * s/match/replace/ #giIpw * || | ||| * mandatory optional */ @@ -418,6 +429,7 @@ static int parse_subst_cmd(sed_cmd_t *sed_cmd, const char *substr) break; } /* Ignore case (gnu exension) */ + case 'i': case 'I': cflags |= REG_ICASE; break; @@ -649,6 +661,12 @@ static void add_cmd(const char *cmdstr) sed_cmd->cmd = *cmdstr++; cmdstr = parse_cmd_args(sed_cmd, cmdstr); + /* cmdstr now points past args. + * GNU sed requires a separator, if there are more commands, + * else it complains "char N: extra characters after command". + * Example: "sed 'p;d'". We also allow "sed 'pd'". + */ + /* Add the command to the command array */ *G.sed_cmd_tail = sed_cmd; G.sed_cmd_tail = &sed_cmd->next; @@ -842,46 +860,100 @@ static sed_cmd_t *branch_to(char *label) static void append(char *s) { - llist_add_to_end(&G.append_head, xstrdup(s)); + llist_add_to_end(&G.append_head, s); +} + +/* Output line of text. */ +/* Note: + * The tricks with NO_EOL_CHAR and last_puts_char are there to emulate gnu sed. + * Without them, we had this: + * echo -n thingy >z1 + * echo -n again >z2 + * >znull + * sed "s/i/z/" z1 z2 znull | hexdump -vC + * output: + * gnu sed 4.1.5: + * 00000000 74 68 7a 6e 67 79 0a 61 67 61 7a 6e |thzngy.agazn| + * bbox: + * 00000000 74 68 7a 6e 67 79 61 67 61 7a 6e |thzngyagazn| + */ +enum { + NO_EOL_CHAR = 1, + LAST_IS_NUL = 2, +}; +static void puts_maybe_newline(char *s, FILE *file, char *last_puts_char, char last_gets_char) +{ + char lpc = *last_puts_char; + + /* Need to insert a '\n' between two files because first file's + * last line wasn't terminated? */ + if (lpc != '\n' && lpc != '\0') { + fputc('\n', file); + lpc = '\n'; + } + fputs(s, file); + + /* 'x' - just something which is not '\n', '\0' or NO_EOL_CHAR */ + if (s[0]) + lpc = 'x'; + + /* had trailing '\0' and it was last char of file? */ + if (last_gets_char == LAST_IS_NUL) { + fputc('\0', file); + lpc = 'x'; /* */ + } else + /* had trailing '\n' or '\0'? */ + if (last_gets_char != NO_EOL_CHAR) { + fputc(last_gets_char, file); + lpc = last_gets_char; + } + + if (ferror(file)) { + xfunc_error_retval = 4; /* It's what gnu sed exits with... */ + bb_error_msg_and_die(bb_msg_write_error); + } + *last_puts_char = lpc; } -static void flush_append(void) +static void flush_append(char *last_puts_char, char last_gets_char) { char *data; /* Output appended lines. */ while ((data = (char *)llist_pop(&G.append_head))) { - fprintf(G.nonstdout, "%s\n", data); + puts_maybe_newline(data, G.nonstdout, last_puts_char, last_gets_char); free(data); } } -static void add_input_file(FILE *file) -{ - G.input_file_list = xrealloc_vector(G.input_file_list, 2, G.input_file_count); - G.input_file_list[G.input_file_count++] = file; -} - /* Get next line of input from G.input_file_list, flushing append buffer and * noting if we ran out of files without a newline on the last line we read. */ -enum { - NO_EOL_CHAR = 1, - LAST_IS_NUL = 2, -}; -static char *get_next_line(char *gets_char) +static char *get_next_line(char *gets_char, char *last_puts_char, char last_gets_char) { char *temp = NULL; int len; char gc; - flush_append(); + flush_append(last_puts_char, last_gets_char); /* will be returned if last line in the file * doesn't end with either '\n' or '\0' */ gc = NO_EOL_CHAR; - while (G.current_input_file < G.input_file_count) { - FILE *fp = G.input_file_list[G.current_input_file]; + for (; G.current_input_file <= G.last_input_file; G.current_input_file++) { + FILE *fp = G.current_fp; + if (!fp) { + const char *path = G.input_file_list[G.current_input_file]; + fp = stdin; + if (path != bb_msg_standard_input) { + fp = fopen_or_warn(path, "r"); + if (!fp) { + G.exitcode = EXIT_FAILURE; + continue; + } + } + G.current_fp = fp; + } /* Read line up to a newline or NUL byte, inclusive, * return malloc'ed char[]. length of the chunk read * is stored in len. NULL if EOF/error */ @@ -912,61 +984,13 @@ static char *get_next_line(char *gets_char) * (note: *no* newline after "b bang"!) */ } /* Close this file and advance to next one */ - fclose(fp); - G.current_input_file++; + fclose_if_not_stdin(fp); + G.current_fp = NULL; } *gets_char = gc; return temp; } -/* Output line of text. */ -/* Note: - * The tricks with NO_EOL_CHAR and last_puts_char are there to emulate gnu sed. - * Without them, we had this: - * echo -n thingy >z1 - * echo -n again >z2 - * >znull - * sed "s/i/z/" z1 z2 znull | hexdump -vC - * output: - * gnu sed 4.1.5: - * 00000000 74 68 7a 6e 67 79 0a 61 67 61 7a 6e |thzngy.agazn| - * bbox: - * 00000000 74 68 7a 6e 67 79 61 67 61 7a 6e |thzngyagazn| - */ -static void puts_maybe_newline(char *s, FILE *file, char *last_puts_char, char last_gets_char) -{ - char lpc = *last_puts_char; - - /* Need to insert a '\n' between two files because first file's - * last line wasn't terminated? */ - if (lpc != '\n' && lpc != '\0') { - fputc('\n', file); - lpc = '\n'; - } - fputs(s, file); - - /* 'x' - just something which is not '\n', '\0' or NO_EOL_CHAR */ - if (s[0]) - lpc = 'x'; - - /* had trailing '\0' and it was last char of file? */ - if (last_gets_char == LAST_IS_NUL) { - fputc('\0', file); - lpc = 'x'; /* */ - } else - /* had trailing '\n' or '\0'? */ - if (last_gets_char != NO_EOL_CHAR) { - fputc(last_gets_char, file); - lpc = last_gets_char; - } - - if (ferror(file)) { - xfunc_error_retval = 4; /* It's what gnu sed exits with... */ - bb_error_msg_and_die(bb_msg_write_error); - } - *last_puts_char = lpc; -} - #define sed_puts(s, n) (puts_maybe_newline(s, G.nonstdout, &last_puts_char, n)) static int beg_match(sed_cmd_t *sed_cmd, const char *pattern_space) @@ -989,7 +1013,7 @@ static void process_files(void) int substituted; /* Prime the pump */ - next_line = get_next_line(&next_gets_char); + next_line = get_next_line(&next_gets_char, &last_puts_char, '\n' /*last_gets_char*/); /* Go through every line in each file */ again: @@ -1003,7 +1027,7 @@ static void process_files(void) /* Read one line in advance so we can act on the last line, * the '$' address */ - next_line = get_next_line(&next_gets_char); + next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char); linenum++; /* For every line, go through all the commands */ @@ -1175,7 +1199,7 @@ static void process_files(void) /* Append line to linked list to be printed later */ case 'a': - append(sed_cmd->string); + append(xstrdup(sed_cmd->string)); break; /* Insert text before this line */ @@ -1197,11 +1221,10 @@ static void process_files(void) rfile = fopen_for_read(sed_cmd->string); if (rfile) { char *line; - while ((line = xmalloc_fgetline(rfile)) != NULL) append(line); - xprint_and_close_file(rfile); + fclose(rfile); } break; @@ -1222,7 +1245,7 @@ static void process_files(void) free(pattern_space); pattern_space = next_line; last_gets_char = next_gets_char; - next_line = get_next_line(&next_gets_char); + next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char); substituted = 0; linenum++; break; @@ -1258,7 +1281,7 @@ static void process_files(void) pattern_space[len] = '\n'; strcpy(pattern_space + len+1, next_line); last_gets_char = next_gets_char; - next_line = get_next_line(&next_gets_char); + next_line = get_next_line(&next_gets_char, &last_puts_char, last_gets_char); linenum++; break; } @@ -1362,7 +1385,7 @@ static void process_files(void) /* Delete and such jump here. */ discard_line: - flush_append(); + flush_append(&last_puts_char, last_gets_char); free(pattern_space); goto again; @@ -1371,7 +1394,7 @@ static void process_files(void) /* It is possible to have a command line argument with embedded * newlines. This counts as multiple command lines. * However, newline can be escaped: 's/e/z\<newline>z/' - * We check for this. + * add_cmd() handles this. */ static void add_cmd_block(char *cmdstr) @@ -1381,22 +1404,8 @@ static void add_cmd_block(char *cmdstr) cmdstr = sv = xstrdup(cmdstr); do { eol = strchr(cmdstr, '\n'); - next: - if (eol) { - /* Count preceding slashes */ - int slashes = 0; - char *sl = eol; - - while (sl != cmdstr && *--sl == '\\') - slashes++; - /* Odd number of preceding slashes - newline is escaped */ - if (slashes & 1) { - overlapping_strcpy(eol - 1, eol); - eol = strchr(eol, '\n'); - goto next; - } + if (eol) *eol = '\0'; - } add_cmd(cmdstr); cmdstr = eol + 1; } while (eol); @@ -1421,8 +1430,6 @@ int sed_main(int argc UNUSED_PARAM, char **argv) "file\0" Required_argument "f"; #endif - int status = EXIT_SUCCESS; - INIT_G(); /* destroy command strings on exit */ @@ -1443,15 +1450,21 @@ int sed_main(int argc UNUSED_PARAM, char **argv) IF_LONG_OPTS(applet_long_options = sed_longopts); /* -i must be first, to match OPT_in_place definition */ - opt = getopt32(argv, "i::rne:f:", &opt_i, &opt_e, &opt_f, + /* -E is a synonym of -r: + * GNU sed 4.2.1 mentions it in neither --help + * nor manpage, but does recognize it. + */ + opt = getopt32(argv, "i::rEne:f:", &opt_i, &opt_e, &opt_f, &G.be_quiet); /* counter for -n */ //argc -= optind; argv += optind; if (opt & OPT_in_place) { // -i atexit(cleanup_outname); } - if (opt & 0x2) G.regex_type |= REG_EXTENDED; // -r - //if (opt & 0x4) G.be_quiet++; // -n + if (opt & (2|4)) + G.regex_type |= REG_EXTENDED; // -r or -E + //if (opt & 8) + // G.be_quiet++; // -n (implemented with a counter instead) while (opt_e) { // -e add_cmd_block(llist_pop(&opt_e)); } @@ -1466,7 +1479,7 @@ int sed_main(int argc UNUSED_PARAM, char **argv) fclose(cmdfile); } /* if we didn't get a pattern from -e or -f, use argv[0] */ - if (!(opt & 0x18)) { + if (!(opt & 0x30)) { if (!*argv) bb_show_usage(); add_cmd_block(*argv++); @@ -1480,42 +1493,38 @@ int sed_main(int argc UNUSED_PARAM, char **argv) /* argv[0..(argc-1)] should be names of file to process. If no * files were specified or '-' was specified, take input from stdin. * Otherwise, we process all the files specified. */ - if (argv[0] == NULL) { + G.input_file_list = argv; + if (!argv[0]) { if (opt & OPT_in_place) bb_error_msg_and_die(bb_msg_requires_arg, "-i"); - add_input_file(stdin); + argv[0] = (char*)bb_msg_standard_input; + /* G.last_input_file = 0; - already is */ } else { - int i; + goto start; - for (i = 0; argv[i]; i++) { + for (; *argv; argv++) { struct stat statbuf; int nonstdoutfd; - FILE *file; sed_cmd_t *sed_cmd; - if (LONE_DASH(argv[i]) && !(opt & OPT_in_place)) { - add_input_file(stdin); - process_files(); - continue; - } - file = fopen_or_warn(argv[i], "r"); - if (!file) { - status = EXIT_FAILURE; - continue; - } - add_input_file(file); + G.last_input_file++; + start: if (!(opt & OPT_in_place)) { + if (LONE_DASH(*argv)) { + *argv = (char*)bb_msg_standard_input; + process_files(); + } continue; } /* -i: process each FILE separately: */ - G.outname = xasprintf("%sXXXXXX", argv[i]); + G.outname = xasprintf("%sXXXXXX", *argv); nonstdoutfd = xmkstemp(G.outname); G.nonstdout = xfdopen_for_write(nonstdoutfd); /* Set permissions/owner of output file */ - fstat(fileno(file), &statbuf); + stat(*argv, &statbuf); /* chmod'ing AFTER chown would preserve suid/sgid bits, * but GNU sed 4.2.1 does not preserve them either */ fchmod(nonstdoutfd, statbuf.st_mode); @@ -1526,12 +1535,12 @@ int sed_main(int argc UNUSED_PARAM, char **argv) G.nonstdout = stdout; if (opt_i) { - char *backupname = xasprintf("%s%s", argv[i], opt_i); - xrename(argv[i], backupname); + char *backupname = xasprintf("%s%s", *argv, opt_i); + xrename(*argv, backupname); free(backupname); } - /* else unlink(argv[i]); - rename below does this */ - xrename(G.outname, argv[i]); //TODO: rollback backup on error? + /* else unlink(*argv); - rename below does this */ + xrename(G.outname, *argv); //TODO: rollback backup on error? free(G.outname); G.outname = NULL; @@ -1541,12 +1550,13 @@ int sed_main(int argc UNUSED_PARAM, char **argv) } } /* Here, to handle "sed 'cmds' nonexistent_file" case we did: - * if (G.current_input_file >= G.input_file_count) - * return status; + * if (G.current_input_file[G.current_input_file] == NULL) + * return G.exitcode; * but it's not needed since process_files() works correctly * in this case too. */ } + process_files(); - return status; + return G.exitcode; } diff --git a/editors/vi.c b/editors/vi.c index 5d214e2..16729d9 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -478,6 +478,7 @@ static void flash(int); // flash the terminal screen static void show_status_line(void); // put a message on the bottom line static void status_line(const char *, ...); // print to status buf static void status_line_bold(const char *, ...); +static void status_line_bold_errno(const char *fn); static void not_implemented(const char *); // display "Not implemented" message static int format_edit_status(void); // format file status on status line static void redraw(int); // force a full screen refresh @@ -1051,7 +1052,7 @@ static void colon(char *buf) #endif // how many lines in text[]? li = count_lines(text, end - 1); - status_line("\"%s\"%s" + status_line("'%s'%s" IF_FEATURE_VI_READONLY("%s") " %dL, %dC", current_filename, (file_size(fn) < 0 ? " [New file]" : ""), @@ -1167,7 +1168,7 @@ static void colon(char *buf) goto ret; // nothing was inserted // how many lines in text[]? li = count_lines(q, q + ch - 1); - status_line("\"%s\"" + status_line("'%s'" IF_FEATURE_VI_READONLY("%s") " %dL, %dC", fn, IF_FEATURE_VI_READONLY((readonly_mode ? " [Readonly]" : ""),) @@ -1300,7 +1301,7 @@ static void colon(char *buf) } #if ENABLE_FEATURE_VI_READONLY if (readonly_mode && !useforce) { - status_line_bold("\"%s\" File is read only", fn); + status_line_bold("'%s' is read only", fn); goto ret; } #endif @@ -1323,9 +1324,9 @@ static void colon(char *buf) } if (l < 0) { if (l == -1) - status_line_bold("\"%s\" %s", fn, strerror(errno)); + status_line_bold_errno(fn); } else { - status_line("\"%s\" %dL, %dC", fn, li, l); + status_line("'%s' %dL, %dC", fn, li, l); if (q == text && r == end - 1 && l == ch) { file_modified = 0; last_file_modified = -1; @@ -1708,65 +1709,53 @@ static char *new_screen(int ro, int co) // search for pattern starting at p static char *char_search(char *p, const char *pat, int dir, int range) { - char *q; struct re_pattern_buffer preg; + const char *err; + char *q; int i; int size; re_syntax_options = RE_SYNTAX_POSIX_EXTENDED; - preg.translate = 0; - preg.fastmap = 0; - preg.buffer = 0; - preg.allocated = 0; + if (ignorecase) + re_syntax_options = RE_SYNTAX_POSIX_EXTENDED | RE_ICASE; + + memset(&preg, 0, sizeof(preg)); + err = re_compile_pattern(pat, strlen(pat), &preg); + if (err != NULL) { + status_line_bold("bad search pattern '%s': %s", pat, err); + return p; + } // assume a LIMITED forward search - q = next_line(p); - q = end_line(q); q = end - 1; - if (dir == BACK) { - q = prev_line(p); + if (dir == BACK) q = text; - } - // count the number of chars to search over, forward or backward - size = q - p; - if (size < 0) - size = p - q; // RANGE could be negative if we are searching backwards range = q - p; - - q = (char *)re_compile_pattern(pat, strlen(pat), (struct re_pattern_buffer *)&preg); - if (q != 0) { - // The pattern was not compiled - status_line_bold("bad search pattern: \"%s\": %s", pat, q); - i = 0; // return p if pattern not compiled - goto cs1; - } - q = p; + size = range; if (range < 0) { + size = -size; q = p - size; if (q < text) q = text; } // search for the compiled pattern, preg, in p[] - // range < 0- search backward - // range > 0- search forward + // range < 0: search backward + // range > 0: search forward // 0 < start < size - // re_search() < 0 not found or error - // re_search() > 0 index of found pattern - // struct pattern char int int int struct reg - // re_search (*pattern_buffer, *string, size, start, range, *regs) - i = re_search(&preg, q, size, 0, range, 0); - if (i == -1) { - p = 0; - i = 0; // return NULL if pattern not found - } - cs1: - if (dir == FORWARD) { + // re_search() < 0: not found or error + // re_search() >= 0: index of found pattern + // struct pattern char int int int struct reg + // re_search(*pattern_buffer, *string, size, start, range, *regs) + i = re_search(&preg, q, size, /*start:*/ 0, range, /*struct re_registers*:*/ NULL); + regfree(&preg); + if (i < 0) + return NULL; + if (dir == FORWARD) p = p + i; - } else { + else p = p - i; - } return p; } @@ -1791,7 +1780,7 @@ static char *char_search(char *p, const char *pat, int dir, int range) len = strlen(pat); if (dir == FORWARD) { - stop = end - 1; // assume range is p - end-1 + stop = end - 1; // assume range is p..end-1 if (range == LIMITED) stop = next_line(p); // range is to next line for (start = p; start < stop; start++) { @@ -1800,7 +1789,7 @@ static char *char_search(char *p, const char *pat, int dir, int range) } } } else if (dir == BACK) { - stop = text; // assume range is text - p + stop = text; // assume range is text..p if (range == LIMITED) stop = prev_line(p); // range is to prev line for (start = p - len; start >= stop; start--) { @@ -2505,12 +2494,12 @@ static int file_insert(const char *fn, char *p, int update_ro_status) /* Validate file */ if (stat(fn, &statbuf) < 0) { - status_line_bold("\"%s\" %s", fn, strerror(errno)); + status_line_bold_errno(fn); goto fi0; } if (!S_ISREG(statbuf.st_mode)) { // This is not a regular file - status_line_bold("\"%s\" Not a regular file", fn); + status_line_bold("'%s' is not a regular file", fn); goto fi0; } if (p < text || p > end) { @@ -2521,19 +2510,19 @@ static int file_insert(const char *fn, char *p, int update_ro_status) // read file to buffer fd = open(fn, O_RDONLY); if (fd < 0) { - status_line_bold("\"%s\" %s", fn, strerror(errno)); + status_line_bold_errno(fn); goto fi0; } - size = statbuf.st_size; + size = (statbuf.st_size < INT_MAX ? (int)statbuf.st_size : INT_MAX); p += text_hole_make(p, size); cnt = safe_read(fd, p, size); if (cnt < 0) { - status_line_bold("\"%s\" %s", fn, strerror(errno)); + status_line_bold_errno(fn); p = text_hole_delete(p, p + size - 1); // un-do buffer insert } else if (cnt < size) { // There was a partial read, shrink unused space text[] - p = text_hole_delete(p + cnt, p + (size - cnt) - 1); // un-do buffer insert - status_line_bold("can't read all of file \"%s\"", fn); + p = text_hole_delete(p + cnt, p + size - 1); // un-do buffer insert + status_line_bold("can't read '%s'", fn); } if (cnt >= size) file_modified++; @@ -2719,6 +2708,11 @@ static void status_line_bold(const char *format, ...) have_status_msg = 1 + sizeof(ESC_BOLD_TEXT) + sizeof(ESC_NORM_TEXT) - 2; } +static void status_line_bold_errno(const char *fn) +{ + status_line_bold("'%s' %s", fn, strerror(errno)); +} + // format status buffer static void status_line(const char *format, ...) { @@ -3471,7 +3465,7 @@ static void do_cmd(int c) } else { file_modified = 0; last_file_modified = -1; - status_line("\"%s\" %dL, %dC", current_filename, count_lines(text, end - 1), cnt); + status_line("'%s' %dL, %dC", current_filename, count_lines(text, end - 1), cnt); if (p[0] == 'x' || p[1] == 'q' || p[1] == 'n' || p[0] == 'X' || p[1] == 'Q' || p[1] == 'N' ) { @@ -3669,7 +3663,7 @@ static void do_cmd(int c) } if (file_modified) { if (ENABLE_FEATURE_VI_READONLY && readonly_mode) { - status_line_bold("\"%s\" File is read only", current_filename); + status_line_bold("'%s' is read only", current_filename); break; } cnt = file_write(current_filename, text, end - 1); diff --git a/examples/inittab b/examples/inittab index c4e0af5..01ceaef 100644 --- a/examples/inittab +++ b/examples/inittab @@ -15,10 +15,7 @@ # the specified process to run on. The contents of this field are # appended to "/dev/" and used as-is. There is no need for this field to # be unique, although if it isn't you may have strange results. If this -# field is left blank, it is completely ignored. Also note that if -# BusyBox detects that a serial console is in use, then all entries -# containing non-empty id fields will be ignored. BusyBox init does -# nothing with utmp. We don't need no stinkin' utmp. +# field is left blank, then the init's stdin/out will be used. # # <runlevels>: The runlevels field is completely ignored. # @@ -43,9 +40,6 @@ # ::shutdown:/sbin/swapoff -a # ::shutdown:/bin/umount -a -r # ::restart:/sbin/init -# -# if it detects that /dev/console is _not_ a serial console, it will -# also run: # tty2::askfirst:/bin/sh # tty3::askfirst:/bin/sh # tty4::askfirst:/bin/sh diff --git a/examples/mdev.conf.change_blockdev.sh b/examples/mdev.conf.change_blockdev.sh new file mode 100755 index 0000000..512e43f --- a/dev/null +++ b/examples/mdev.conf.change_blockdev.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +# Seconds to try to reread partition table +cnt=60 + +exec </dev/null +exec >"/tmp/${0##*/}.$$.out" +exec 2>&1 + +( +echo "Running: $0" +echo "Env:" +env | sort + +while sleep 1; test $cnt != 0; do + echo "Trying to reread partition table on $DEVNAME ($cnt)" + : $((cnt--)) + # If device node doesn't exist, it means the device was removed. + # Stop trying. + test -e "$DEVNAME" || { echo "$DEVNAME doesn't exist, aborting"; exit 1; } + #echo "$DEVNAME exists" + if blockdev --rereadpt "$DEVNAME"; then + echo "blockdev --rereadpt succeeded" + exit 0 + fi + echo "blockdev --rereadpt failed, exit code: $?" +done +echo "Timed out" +) & diff --git a/examples/mdev_fat.conf b/examples/mdev_fat.conf index ceba3a7..f2a15f3 100644 --- a/examples/mdev_fat.conf +++ b/examples/mdev_fat.conf @@ -7,9 +7,9 @@ # instead of the default 0:0 660. # # Syntax: -# [-]devicename_regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] -# [-]$ENVVAR=regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] -# [-]@maj,min[-min2] user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] +# [-][ENVVAR=regex;]...devicename_regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] +# [-][ENVVAR=regex;]...@maj,min[-min2] user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] +# [-]$ENVVAR=regex user:group mode [=path]|[>path]|[!] [@|$|*cmd args...] # # [-]: do not stop on this match, continue reading mdev.conf # =: move, >: move and create a symlink @@ -53,6 +53,7 @@ sr[0-9]* root:cdrom 660 @ln -sf $MDEV cdrom fd[0-9]* root:floppy 660 # net devices +SUBSYSTEM=net;.* root:root 600 @nameif tun[0-9]* root:root 600 =net/ tap[0-9]* root:root 600 =net/ @@ -111,3 +112,33 @@ usbdev[0-9].[0-9]_.* root:root 660 # zaptel devices zap(.*) root:dialout 660 =zap/%1 dahdi!(.*) root:dialout 660 =dahdi/%1 + +# HTC Android +# Attaching it via USB cable causes a flurry of activity: +# +# mdev[1271]: 48.639459 ACTION:add SUBSYSTEM:usb DEVNAME:bus/usb/001/009 DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5 +# mdev[1271]: mknod bus/usb/001/009 (189,8) 20660 0:0 +# mdev[1272]: 48.642354 ACTION:add SUBSYSTEM:usb DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0 +# mdev[1272]: running: modprobe "$MODALIAS" +# mdev[1273]: 48.650078 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11 +# mdev[1274]: 48.651297 ACTION:add SUBSYSTEM:scsi_host DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/scsi_host/host11 +# mdev[1275]: 49.649422 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0 +# mdev[1276]: 49.650703 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0 +# mdev[1276]: running: modprobe "$MODALIAS" +# modprobe: module scsi:t-0x00 not found in modules.dep +# mdev[1277]: 49.658002 ACTION:add SUBSYSTEM:scsi_disk DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/scsi_disk/11:0:0:0 +# mdev[1278]: 49.659244 ACTION:add SUBSYSTEM:scsi_device DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/scsi_device/11:0:0: +# mdev[1279]: 49.660535 ACTION:add SUBSYSTEM:bsg DEVNAME:bsg/11:0:0:0 DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/bsg/11:0:0:0 +# mdev[1279]: mknod bsg/11:0:0:0 (253,1) 20660 0:0 +# mdev[1280]: 49.663516 ACTION:add SUBSYSTEM:bdi DEVNAME:(null) DEVPATH:/devices/virtual/bdi/8:16 +# mdev[1281]: 49.664748 ACTION:add SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb +# mdev[1281]: mknod sdb (8,16) 60660 0:0 +# mdev[1282]: 49.677597 ACTION:change SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb +# mdev[1283]: 50.692936 ACTION:change SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb +# +# We are hooking to the last events. To avoid having two scripts running, +# we check for DISK_MEDIA_CHANGE=1 (prev to last event has it, +# and it's the _only_ difference in env for these two events as of kernel 3.7.7) +# Unfortunately, there is no event for "user pressed [Turn USB storage] btn"! +# Script merely backgrounds and tries to rescan partition table for 1 minute: +ACTION=change;SUBSYSTEM=block;DISK_MEDIA_CHANGE=1;.* 0:0 660 */etc/mdev.conf.change_blockdev.sh diff --git a/examples/udhcp/simple.script b/examples/udhcp/simple.script index 40ee738..2a917eb 100755 --- a/examples/udhcp/simple.script +++ b/examples/udhcp/simple.script @@ -29,18 +29,23 @@ case "$1" in metric=0 for i in $router ; do echo "Adding router $i" - route add default gw $i dev $interface metric $((metric++)) + route add default gw $i dev $interface metric $metric + : $(( metric += 1 )) done fi echo "Recreating $RESOLV_CONF" - echo -n > $RESOLV_CONF-$$ - [ -n "$domain" ] && echo "search $domain" >> $RESOLV_CONF-$$ + # If the file is a symlink somewhere (like /etc/resolv.conf + # pointing to /run/resolv.conf), make sure things work. + realconf=$(readlink -f "$RESOLV_CONF" 2>/dev/null || echo "$RESOLV_CONF") + tmpfile="$realconf-$$" + > "$tmpfile" + [ -n "$domain" ] && echo "search $domain" >> "$tmpfile" for i in $dns ; do echo " Adding DNS server $i" - echo "nameserver $i" >> $RESOLV_CONF-$$ + echo "nameserver $i" >> "$tmpfile" done - mv $RESOLV_CONF-$$ $RESOLV_CONF + mv "$tmpfile" "$realconf" ;; esac diff --git a/findutils/find.c b/findutils/find.c index 67cb47d..4c9f9d8 100644 --- a/findutils/find.c +++ b/findutils/find.c @@ -231,12 +231,13 @@ //kbuild:lib-$(CONFIG_FIND) += find.o //usage:#define find_trivial_usage -//usage: "[PATH]... [OPTIONS] [ACTIONS]" +//usage: "[-HL] [PATH]... [OPTIONS] [ACTIONS]" //usage:#define find_full_usage "\n\n" //usage: "Search for files and perform actions on them.\n" //usage: "First failed action stops processing of current file.\n" //usage: "Defaults: PATH is current directory, action is '-print'\n" -//usage: "\n -follow Follow symlinks" +//usage: "\n -L,-follow Follow symlinks" +//usage: "\n -H ...on command line only" //usage: IF_FEATURE_FIND_XDEV( //usage: "\n -xdev Don't descend directories on other filesystems" //usage: ) @@ -814,6 +815,31 @@ static const char* plus_minus_num(const char* str) } #endif +/* Say no to GCCism */ +#define USE_NESTED_FUNCTION 0 + +#if !USE_NESTED_FUNCTION +struct pp_locals { + action*** appp; + unsigned cur_group; + unsigned cur_action; + IF_FEATURE_FIND_NOT( bool invert_flag; ) +}; +static action* alloc_action(struct pp_locals *ppl, int sizeof_struct, action_fp f) +{ + action *ap = xzalloc(sizeof_struct); + action **app; + action ***group = &ppl->appp[ppl->cur_group]; + *group = app = xrealloc(*group, (ppl->cur_action+2) * sizeof(ppl->appp[0][0])); + app[ppl->cur_action++] = ap; + app[ppl->cur_action] = NULL; + ap->f = f; + IF_FEATURE_FIND_NOT( ap->invert = ppl->invert_flag; ) + IF_FEATURE_FIND_NOT( ppl->invert_flag = 0; ) + return ap; +} +#endif + static action*** parse_params(char **argv) { enum { @@ -900,10 +926,18 @@ static action*** parse_params(char **argv) IF_FEATURE_FIND_MAXDEPTH("-mindepth\0""-maxdepth\0") ; +#if !USE_NESTED_FUNCTION + struct pp_locals ppl; +#define appp (ppl.appp ) +#define cur_group (ppl.cur_group ) +#define cur_action (ppl.cur_action ) +#define invert_flag (ppl.invert_flag) +#define ALLOC_ACTION(name) (action_##name*)alloc_action(&ppl, sizeof(action_##name), (action_fp) func_##name) +#else action*** appp; - unsigned cur_group = 0; - unsigned cur_action = 0; - IF_FEATURE_FIND_NOT( bool invert_flag = 0; ) + unsigned cur_group; + unsigned cur_action; + IF_FEATURE_FIND_NOT( bool invert_flag; ) /* This is the only place in busybox where we use nested function. * So far more standard alternatives were bigger. */ @@ -912,7 +946,7 @@ static action*** parse_params(char **argv) action* alloc_action(int sizeof_struct, action_fp f) { action *ap; - appp[cur_group] = xrealloc(appp[cur_group], (cur_action+2) * sizeof(*appp)); + appp[cur_group] = xrealloc(appp[cur_group], (cur_action+2) * sizeof(appp[0][0])); appp[cur_group][cur_action++] = ap = xzalloc(sizeof_struct); appp[cur_group][cur_action] = NULL; ap->f = f; @@ -920,9 +954,12 @@ static action*** parse_params(char **argv) IF_FEATURE_FIND_NOT( invert_flag = 0; ) return ap; } - #define ALLOC_ACTION(name) (action_##name*)alloc_action(sizeof(action_##name), (action_fp) func_##name) +#endif + cur_group = 0; + cur_action = 0; + IF_FEATURE_FIND_NOT( invert_flag = 0; ) appp = xzalloc(2 * sizeof(appp[0])); /* appp[0],[1] == NULL */ while (*argv) { @@ -948,8 +985,8 @@ static action*** parse_params(char **argv) */ /* Options */ if (parm == OPT_FOLLOW) { - dbg("follow enabled: %d", __LINE__); - G.recurse_flags |= ACTION_FOLLOWLINKS | ACTION_DANGLING_OK; + dbg("follow enabled: %d", __LINE__); + G.recurse_flags |= ACTION_FOLLOWLINKS | ACTION_DANGLING_OK; } #if ENABLE_FEATURE_FIND_XDEV else if (parm == OPT_XDEV) { @@ -987,7 +1024,7 @@ static action*** parse_params(char **argv) dbg("%d", __LINE__); /* start new OR group */ cur_group++; - appp = xrealloc(appp, (cur_group+2) * sizeof(*appp)); + appp = xrealloc(appp, (cur_group+2) * sizeof(appp[0])); /*appp[cur_group] = NULL; - already NULL */ appp[cur_group+1] = NULL; cur_action = 0; @@ -1245,16 +1282,46 @@ static action*** parse_params(char **argv) dbg("exiting %s", __func__); return appp; #undef ALLOC_ACTION +#undef appp +#undef cur_action +#undef invert_flag } int find_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int find_main(int argc UNUSED_PARAM, char **argv) { int i, firstopt, status = EXIT_SUCCESS; + char **past_HLP, *saved; INIT_G(); - argv++; + /* "find -type f" + getopt("+HLP") => disaster. + * Need to avoid getopt running into a non-HLP option. + * Do this by temporarily storing NULL there: + */ + past_HLP = argv; + for (;;) { + saved = *++past_HLP; + if (!saved) + break; + if (saved[0] != '-') + break; + if (!saved[1]) + break; /* it is "-" */ + if ((saved+1)[strspn(saved+1, "HLP")] != '\0') + break; + } + *past_HLP = NULL; + /* "+": stop on first non-option */ + i = getopt32(argv, "+HLP"); + if (i & (1<<0)) + G.recurse_flags |= ACTION_FOLLOWLINKS_L0 | ACTION_DANGLING_OK; + if (i & (1<<1)) + G.recurse_flags |= ACTION_FOLLOWLINKS | ACTION_DANGLING_OK; + /* -P is default and is ignored */ + argv = past_HLP; /* same result as "argv += optind;" */ + *past_HLP = saved; + for (firstopt = 0; argv[firstopt]; firstopt++) { if (argv[firstopt][0] == '-') break; diff --git a/findutils/grep.c b/findutils/grep.c index a64a735..22101f3 100644 --- a/findutils/grep.c +++ b/findutils/grep.c @@ -373,6 +373,11 @@ static int grep_file(FILE *file) opt_f_not_found: ; } } else { +#if ENABLE_EXTRA_COMPAT + unsigned start_pos; +#endif + char *match_at; + if (!(gl->flg_mem_alocated_compiled & COMPILED)) { gl->flg_mem_alocated_compiled |= COMPILED; #if !ENABLE_EXTRA_COMPAT @@ -387,33 +392,56 @@ static int grep_file(FILE *file) #if !ENABLE_EXTRA_COMPAT gl->matched_range.rm_so = 0; gl->matched_range.rm_eo = 0; +#else + start_pos = 0; #endif + match_at = line; + opt_w_again: +//bb_error_msg("'%s' start_pos:%d line_len:%d", match_at, start_pos, line_len); if ( #if !ENABLE_EXTRA_COMPAT - regexec(&gl->compiled_regex, line, 1, &gl->matched_range, 0) == 0 + regexec(&gl->compiled_regex, match_at, 1, &gl->matched_range, 0) == 0 #else - re_search(&gl->compiled_regex, line, line_len, - /*start:*/ 0, /*range:*/ line_len, + re_search(&gl->compiled_regex, match_at, line_len, + start_pos, /*range:*/ line_len, &gl->matched_range) >= 0 #endif ) { if (option_mask32 & OPT_x) { found = (gl->matched_range.rm_so == 0 - && line[gl->matched_range.rm_eo] == '\0'); + && match_at[gl->matched_range.rm_eo] == '\0'); } else if (!(option_mask32 & OPT_w)) { found = 1; } else { char c = ' '; if (gl->matched_range.rm_so) - c = line[gl->matched_range.rm_so - 1]; + c = match_at[gl->matched_range.rm_so - 1]; if (!isalnum(c) && c != '_') { - c = line[gl->matched_range.rm_eo]; - if (!c || (!isalnum(c) && c != '_')) + c = match_at[gl->matched_range.rm_eo]; + if (!c || (!isalnum(c) && c != '_')) { found = 1; + } else { + /* + * Why check gl->matched_range.rm_eo? + * Zero-length match makes -w skip the line: + * "echo foo | grep ^" prints "foo", + * "echo foo | grep -w ^" prints nothing. + * Without such check, we can loop forever. + */ +#if !ENABLE_EXTRA_COMPAT + if (gl->matched_range.rm_eo != 0) { + match_at += gl->matched_range.rm_eo; + goto opt_w_again; + } +#else + if (gl->matched_range.rm_eo > start_pos) { + start_pos = gl->matched_range.rm_eo; + goto opt_w_again; + } +#endif + } } -//BUG: "echo foop foo | grep -w foo" should match, but doesn't: -//we bail out on first "mismatch" because it's not a word. } } } @@ -710,7 +738,7 @@ int grep_main(int argc UNUSED_PARAM, char **argv) option_mask32 |= OPT_F; #if !ENABLE_EXTRA_COMPAT - if (!(option_mask32 & (OPT_o | OPT_w))) + if (!(option_mask32 & (OPT_o | OPT_w | OPT_x))) reflags = REG_NOSUB; #endif diff --git a/include-full/applet_tables.h b/include-full/applet_tables.h index 7a6238f..f86d391 100644 --- a/include-full/applet_tables.h +++ b/include-full/applet_tables.h @@ -670,5 +670,3 @@ const uint16_t applet_nameofs[] ALIGN2 = { 0x055f, }; - -#define MAX_APPLET_NAME_LEN 13 diff --git a/include-full/applets.h b/include-full/applets.h index 7b47429..f24268a 100644 --- a/include-full/applets.h +++ b/include-full/applets.h @@ -53,6 +53,12 @@ s - suid type: # define APPLET_NOEXEC(name,main,l,s,name2) LINK l name # define APPLET_NOFORK(name,main,l,s,name2) LINK l name +#elif defined(MAKE_SUID) +# define APPLET(name,l,s) SUID s l name +# define APPLET_ODDNAME(name,main,l,s,name2) SUID s l name +# define APPLET_NOEXEC(name,main,l,s,name2) SUID s l name +# define APPLET_NOFORK(name,main,l,s,name2) SUID s l name + #else static struct bb_applet applets[] = { /* name, main, location, need_suid */ # define APPLET(name,l,s) { #name, #name, l, s }, @@ -67,8 +73,30 @@ s - suid type: #endif +IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP)) +IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP)) +IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat)) IF_BUNZIP2(APPLET(bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP, bzcat)) +IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat)) +IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma)) +IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat)) +IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz)) +IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP)) +IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb)) +IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP)) +IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP)) +IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat)) +IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop)) +IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP)) +IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP)) +IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_DATE(APPLET(date, BB_DIR_BIN, BB_SUID_DROP)) IF_HOSTID(APPLET_NOFORK(hostid, hostid, BB_DIR_USR_BIN, BB_SUID_DROP, hostid)) IF_GROUPS(APPLET_NOEXEC(groups, id, BB_DIR_USR_BIN, BB_SUID_DROP, groups)) @@ -77,7 +105,12 @@ IF_TOUCH(APPLET_NOFORK(touch, touch, BB_DIR_BIN, BB_SUID_DROP, touch)) IF_BASE64(APPLET(base64, BB_DIR_BIN, BB_SUID_DROP)) IF_USERS(APPLET_ODDNAME(users, who, BB_DIR_USR_BIN, BB_SUID_DROP, users)) IF_WHO( APPLET( who, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk)) +IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP)) IF_PATCH(APPLET(patch, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP)) IF_VI(APPLET(vi, BB_DIR_BIN, BB_SUID_DROP)) IF_FIND(APPLET_NOEXEC(find, find, BB_DIR_USR_BIN, BB_SUID_DROP, find)) IF_GREP(APPLET(grep, BB_DIR_BIN, BB_SUID_DROP)) @@ -95,7 +128,8 @@ IF_ADD_SHELL( APPLET_ODDNAME(add-shell , add_remove_shell, BB_DIR_USR_SBIN, IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, remove_shell)) IF_CONSPY(APPLET(conspy, BB_DIR_BIN, BB_SUID_DROP)) IF_NANDWRITE(APPLET(nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump)) +IF_NANDDUMP(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump)) +IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_SETSERIAL(APPLET(setserial, BB_DIR_BIN, BB_SUID_DROP)) IF_UBIATTACH(APPLET_ODDNAME(ubiattach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiattach)) IF_UBIDETACH(APPLET_ODDNAME(ubidetach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubidetach)) @@ -103,16 +137,17 @@ IF_UBIMKVOL(APPLET_ODDNAME(ubimkvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, u IF_UBIRMVOL(APPLET_ODDNAME(ubirmvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirmvol)) IF_UBIRSVOL(APPLET_ODDNAME(ubirsvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirsvol)) IF_UBIUPDATEVOL(APPLET_ODDNAME(ubiupdatevol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiupdatevol)) +IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) IF_DEPMOD(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP)) IF_INSMOD(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP)) IF_LSMOD(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP)) IF_MODINFO(APPLET(modinfo, BB_DIR_SBIN, BB_SUID_DROP)) +IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe)) IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe)) IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe)) IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe)) -IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) IF_RMMOD(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP)) IF_NBDCLIENT(APPLET_ODDNAME(nbd-client, nbdclient, BB_DIR_USR_SBIN, BB_SUID_DROP, nbdclient)) IF_PING(APPLET(ping, BB_DIR_BIN, BB_SUID_MAYBE)) @@ -146,16 +181,13 @@ IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP)) IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP)) -IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP)) IF_ARPING(APPLET(arping, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk)) IF_BASENAME(APPLET_NOFORK(basename, basename, BB_DIR_USR_BIN, BB_SUID_DROP, basename)) IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP)) IF_BEEP(APPLET(beep, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_BLKID(APPLET(blkid, BB_DIR_SBIN, BB_SUID_DROP)) IF_BRCTL(APPLET(brctl, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CAL(APPLET(cal, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat)) IF_CATV(APPLET(catv, BB_DIR_BIN, BB_SUID_DROP)) @@ -172,10 +204,8 @@ IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CKSUM(APPLET_NOEXEC(cksum, cksum, BB_DIR_USR_BIN, BB_SUID_DROP, cksum)) IF_CLEAR(APPLET(clear, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp)) -IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP)) IF_CROND(APPLET(crond, BB_DIR_USR_SBIN, BB_SUID_DROP)) /* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */ IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) @@ -190,21 +220,17 @@ IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP)) IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP)) IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP)) IF_DHCPRELAY(APPLET(dhcprelay, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname)) IF_DMESG(APPLET(dmesg, BB_DIR_BIN, BB_SUID_DROP)) IF_DNSD(APPLET(dnsd, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, BB_DIR_BIN, BB_SUID_DROP, dnsdomainname)) IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix)) -IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb)) IF_DU(APPLET(du, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_DUMPKMAP(APPLET(dumpkmap, BB_DIR_BIN, BB_SUID_DROP)) IF_DUMPLEASES(APPLET(dumpleases, BB_DIR_USR_BIN, BB_SUID_DROP)) //IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP)) //IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label)) IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo)) -IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP)) IF_EJECT(APPLET(eject, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_ENV(APPLET_NOEXEC(env, env, BB_DIR_USR_BIN, BB_SUID_DROP, env)) IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envdir)) @@ -243,8 +269,6 @@ IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP)) IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP)) -IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP)) -IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP)) IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd)) IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP)) IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head)) @@ -303,13 +327,9 @@ IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls)) IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP)) IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_LSUSB(APPLET(lsusb, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat)) -IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma)) -IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP)) -IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat)) IF_MAKEDEVS(APPLET(makedevs, BB_DIR_SBIN, BB_SUID_DROP)) IF_MAKEMIME(APPLET(makemime, BB_DIR_BIN, BB_SUID_DROP)) -IF_MAN(APPLET(man, BB_DIR_SBIN, BB_SUID_DROP)) +IF_MAN(APPLET(man, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_MATCHPATHCON(APPLET(matchpathcon, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, md5sum)) IF_MICROCOM(APPLET(microcom, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -370,12 +390,9 @@ IF_RENICE(APPLET(renice, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESET(APPLET(reset, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESIZE(APPLET(resize, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, BB_DIR_SBIN, BB_SUID_DROP, restorecon)) -IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_RM(APPLET_NOFORK(rm, rm, BB_DIR_BIN, BB_SUID_DROP, rm)) IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir)) IF_ROUTE(APPLET(route, BB_DIR_SBIN, BB_SUID_DROP)) -IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP)) -IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RTCWAKE(APPLET(rtcwake, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts)) IF_RUNCON(APPLET(runcon, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -385,7 +402,6 @@ IF_RUNSVDIR(APPLET(runsvdir, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RX(APPLET(rx, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_SCRIPT(APPLET(script, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_SCRIPTREPLAY(APPLET(scriptreplay, BB_DIR_BIN, BB_SUID_DROP)) -IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP)) IF_SELINUXENABLED(APPLET(selinuxenabled, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_SENDMAIL(APPLET(sendmail, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_SEQ(APPLET_NOFORK(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq)) @@ -429,7 +445,6 @@ IF_BB_SYSCTL(APPLET(sysctl, BB_DIR_SBIN, BB_SUID_DROP)) IF_SYSLOGD(APPLET(syslogd, BB_DIR_SBIN, BB_SUID_DROP)) IF_TAC(APPLET_NOEXEC(tac, tac, BB_DIR_USR_BIN, BB_SUID_DROP, tac)) IF_TAIL(APPLET(tail, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP)) IF_TASKSET(APPLET(taskset, BB_DIR_USR_BIN, BB_SUID_DROP)) /* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */ IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, tcpsvd)) @@ -458,14 +473,9 @@ IF_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd)) IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP)) IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP)) -IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP)) IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand)) IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos)) -IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop)) -IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep)) IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -474,21 +484,17 @@ IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP)) /* Needs to be run by root or be suid root - needs to change uid and gid: */ IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP)) -/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */ -IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP)) IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP)) IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami)) -IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat)) -IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz)) IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes)) -IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat)) IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP)) -#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) +#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) \ + && !defined(MAKE_LINKS) && !defined(MAKE_SUID) }; #endif diff --git a/include-full/autoconf.h b/include-full/autoconf.h index e2f304b..006a504 100644 --- a/include-full/autoconf.h +++ b/include-full/autoconf.h @@ -1,12 +1,16 @@ /* * Automatically generated C config: don't edit - * Busybox version: 1.21.1-kk + * Busybox version: 1.22.1 */ -#define AUTOCONF_TIMESTAMP "2013-11-24 11:52 +0100" +#define AUTOCONF_TIMESTAMP "2014-04-04 19:53 +0100" #define CONFIG_HAVE_DOT_CONFIG 1 #define ENABLE_HAVE_DOT_CONFIG 1 -#define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__ "CONFIG_HAVE_DOT_CONFIG" +#else +# define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__ +#endif #define IF_NOT_HAVE_DOT_CONFIG(...) /* @@ -34,11 +38,19 @@ #define IF_NOT_USE_PORTABLE_CODE(...) __VA_ARGS__ #define CONFIG_PLATFORM_LINUX 1 #define ENABLE_PLATFORM_LINUX 1 -#define IF_PLATFORM_LINUX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PLATFORM_LINUX(...) __VA_ARGS__ "CONFIG_PLATFORM_LINUX" +#else +# define IF_PLATFORM_LINUX(...) __VA_ARGS__ +#endif #define IF_NOT_PLATFORM_LINUX(...) #define CONFIG_FEATURE_BUFFERS_USE_MALLOC 1 #define ENABLE_FEATURE_BUFFERS_USE_MALLOC 1 -#define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__ "CONFIG_FEATURE_BUFFERS_USE_MALLOC" +#else +# define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BUFFERS_USE_MALLOC(...) #undef CONFIG_FEATURE_BUFFERS_GO_ON_STACK #define ENABLE_FEATURE_BUFFERS_GO_ON_STACK 0 @@ -50,15 +62,27 @@ #define IF_NOT_FEATURE_BUFFERS_GO_IN_BSS(...) __VA_ARGS__ #define CONFIG_SHOW_USAGE 1 #define ENABLE_SHOW_USAGE 1 -#define IF_SHOW_USAGE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHOW_USAGE(...) __VA_ARGS__ "CONFIG_SHOW_USAGE" +#else +# define IF_SHOW_USAGE(...) __VA_ARGS__ +#endif #define IF_NOT_SHOW_USAGE(...) #define CONFIG_FEATURE_VERBOSE_USAGE 1 #define ENABLE_FEATURE_VERBOSE_USAGE 1 -#define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__ "CONFIG_FEATURE_VERBOSE_USAGE" +#else +# define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VERBOSE_USAGE(...) #define CONFIG_FEATURE_COMPRESS_USAGE 1 #define ENABLE_FEATURE_COMPRESS_USAGE 1 -#define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__ "CONFIG_FEATURE_COMPRESS_USAGE" +#else +# define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_COMPRESS_USAGE(...) #undef CONFIG_FEATURE_INSTALLER #define ENABLE_FEATURE_INSTALLER 0 @@ -66,7 +90,11 @@ #define IF_NOT_FEATURE_INSTALLER(...) __VA_ARGS__ #define CONFIG_INSTALL_NO_USR 1 #define ENABLE_INSTALL_NO_USR 1 -#define IF_INSTALL_NO_USR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INSTALL_NO_USR(...) __VA_ARGS__ "CONFIG_INSTALL_NO_USR" +#else +# define IF_INSTALL_NO_USR(...) __VA_ARGS__ +#endif #define IF_NOT_INSTALL_NO_USR(...) #undef CONFIG_LOCALE_SUPPORT #define ENABLE_LOCALE_SUPPORT 0 @@ -74,7 +102,11 @@ #define IF_NOT_LOCALE_SUPPORT(...) __VA_ARGS__ #define CONFIG_UNICODE_SUPPORT 1 #define ENABLE_UNICODE_SUPPORT 1 -#define IF_UNICODE_SUPPORT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNICODE_SUPPORT(...) __VA_ARGS__ "CONFIG_UNICODE_SUPPORT" +#else +# define IF_UNICODE_SUPPORT(...) __VA_ARGS__ +#endif #define IF_NOT_UNICODE_SUPPORT(...) #undef CONFIG_UNICODE_USING_LOCALE #define ENABLE_UNICODE_USING_LOCALE 0 @@ -86,11 +118,19 @@ #define IF_NOT_FEATURE_CHECK_UNICODE_IN_ENV(...) __VA_ARGS__ #define CONFIG_SUBST_WCHAR 63 #define ENABLE_SUBST_WCHAR 1 -#define IF_SUBST_WCHAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SUBST_WCHAR(...) __VA_ARGS__ "CONFIG_SUBST_WCHAR" +#else +# define IF_SUBST_WCHAR(...) __VA_ARGS__ +#endif #define IF_NOT_SUBST_WCHAR(...) #define CONFIG_LAST_SUPPORTED_WCHAR 0 #define ENABLE_LAST_SUPPORTED_WCHAR 1 -#define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__ "CONFIG_LAST_SUPPORTED_WCHAR" +#else +# define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__ +#endif #define IF_NOT_LAST_SUPPORTED_WCHAR(...) #undef CONFIG_UNICODE_COMBINING_WCHARS #define ENABLE_UNICODE_COMBINING_WCHARS 0 @@ -98,7 +138,11 @@ #define IF_NOT_UNICODE_COMBINING_WCHARS(...) __VA_ARGS__ #define CONFIG_UNICODE_WIDE_WCHARS 1 #define ENABLE_UNICODE_WIDE_WCHARS 1 -#define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__ "CONFIG_UNICODE_WIDE_WCHARS" +#else +# define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__ +#endif #define IF_NOT_UNICODE_WIDE_WCHARS(...) #undef CONFIG_UNICODE_BIDI_SUPPORT #define ENABLE_UNICODE_BIDI_SUPPORT 0 @@ -110,15 +154,27 @@ #define IF_NOT_UNICODE_NEUTRAL_TABLE(...) __VA_ARGS__ #define CONFIG_UNICODE_PRESERVE_BROKEN 1 #define ENABLE_UNICODE_PRESERVE_BROKEN 1 -#define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__ "CONFIG_UNICODE_PRESERVE_BROKEN" +#else +# define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__ +#endif #define IF_NOT_UNICODE_PRESERVE_BROKEN(...) #define CONFIG_LONG_OPTS 1 #define ENABLE_LONG_OPTS 1 -#define IF_LONG_OPTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LONG_OPTS(...) __VA_ARGS__ "CONFIG_LONG_OPTS" +#else +# define IF_LONG_OPTS(...) __VA_ARGS__ +#endif #define IF_NOT_LONG_OPTS(...) #define CONFIG_FEATURE_DEVPTS 1 #define ENABLE_FEATURE_DEVPTS 1 -#define IF_FEATURE_DEVPTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DEVPTS(...) __VA_ARGS__ "CONFIG_FEATURE_DEVPTS" +#else +# define IF_FEATURE_DEVPTS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DEVPTS(...) #undef CONFIG_FEATURE_CLEAN_UP #define ENABLE_FEATURE_CLEAN_UP 0 @@ -138,11 +194,19 @@ #define IF_NOT_FEATURE_PIDFILE(...) __VA_ARGS__ #define CONFIG_PID_FILE_PATH "" #define ENABLE_PID_FILE_PATH 1 -#define IF_PID_FILE_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PID_FILE_PATH(...) __VA_ARGS__ "CONFIG_PID_FILE_PATH" +#else +# define IF_PID_FILE_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_PID_FILE_PATH(...) #define CONFIG_FEATURE_SUID 1 #define ENABLE_FEATURE_SUID 1 -#define IF_FEATURE_SUID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SUID(...) __VA_ARGS__ "CONFIG_FEATURE_SUID" +#else +# define IF_FEATURE_SUID(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SUID(...) #undef CONFIG_FEATURE_SUID_CONFIG #define ENABLE_FEATURE_SUID_CONFIG 0 @@ -162,15 +226,27 @@ #define IF_NOT_FEATURE_PREFER_APPLETS(...) __VA_ARGS__ #define CONFIG_BUSYBOX_EXEC_PATH "/proc/self/exe" #define ENABLE_BUSYBOX_EXEC_PATH 1 -#define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__ "CONFIG_BUSYBOX_EXEC_PATH" +#else +# define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_BUSYBOX_EXEC_PATH(...) #define CONFIG_FEATURE_SYSLOG 1 #define ENABLE_FEATURE_SYSLOG 1 -#define IF_FEATURE_SYSLOG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SYSLOG(...) __VA_ARGS__ "CONFIG_FEATURE_SYSLOG" +#else +# define IF_FEATURE_SYSLOG(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SYSLOG(...) #define CONFIG_FEATURE_HAVE_RPC 1 #define ENABLE_FEATURE_HAVE_RPC 1 -#define IF_FEATURE_HAVE_RPC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_HAVE_RPC(...) __VA_ARGS__ "CONFIG_FEATURE_HAVE_RPC" +#else +# define IF_FEATURE_HAVE_RPC(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_HAVE_RPC(...) /* @@ -206,23 +282,43 @@ #define IF_NOT_LFS(...) __VA_ARGS__ #define CONFIG_CROSS_COMPILER_PREFIX "arm-eabi-" #define ENABLE_CROSS_COMPILER_PREFIX 1 -#define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__ "CONFIG_CROSS_COMPILER_PREFIX" +#else +# define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__ +#endif #define IF_NOT_CROSS_COMPILER_PREFIX(...) #define CONFIG_SYSROOT "" #define ENABLE_SYSROOT 1 -#define IF_SYSROOT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SYSROOT(...) __VA_ARGS__ "CONFIG_SYSROOT" +#else +# define IF_SYSROOT(...) __VA_ARGS__ +#endif #define IF_NOT_SYSROOT(...) #define CONFIG_EXTRA_CFLAGS "-Os -fno-short-enums -fgcse-after-reload -frerun-cse-after-loop -frename-registers" #define ENABLE_EXTRA_CFLAGS 1 -#define IF_EXTRA_CFLAGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXTRA_CFLAGS(...) __VA_ARGS__ "CONFIG_EXTRA_CFLAGS" +#else +# define IF_EXTRA_CFLAGS(...) __VA_ARGS__ +#endif #define IF_NOT_EXTRA_CFLAGS(...) #define CONFIG_EXTRA_LDFLAGS "" #define ENABLE_EXTRA_LDFLAGS 1 -#define IF_EXTRA_LDFLAGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXTRA_LDFLAGS(...) __VA_ARGS__ "CONFIG_EXTRA_LDFLAGS" +#else +# define IF_EXTRA_LDFLAGS(...) __VA_ARGS__ +#endif #define IF_NOT_EXTRA_LDFLAGS(...) #define CONFIG_EXTRA_LDLIBS "" #define ENABLE_EXTRA_LDLIBS 1 -#define IF_EXTRA_LDLIBS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXTRA_LDLIBS(...) __VA_ARGS__ "CONFIG_EXTRA_LDLIBS" +#else +# define IF_EXTRA_LDLIBS(...) __VA_ARGS__ +#endif #define IF_NOT_EXTRA_LDLIBS(...) /* @@ -242,7 +338,11 @@ #define IF_NOT_WERROR(...) __VA_ARGS__ #define CONFIG_NO_DEBUG_LIB 1 #define ENABLE_NO_DEBUG_LIB 1 -#define IF_NO_DEBUG_LIB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NO_DEBUG_LIB(...) __VA_ARGS__ "CONFIG_NO_DEBUG_LIB" +#else +# define IF_NO_DEBUG_LIB(...) __VA_ARGS__ +#endif #define IF_NOT_NO_DEBUG_LIB(...) #undef CONFIG_DMALLOC #define ENABLE_DMALLOC 0 @@ -258,7 +358,11 @@ */ #define CONFIG_INSTALL_APPLET_SYMLINKS 1 #define ENABLE_INSTALL_APPLET_SYMLINKS 1 -#define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__ "CONFIG_INSTALL_APPLET_SYMLINKS" +#else +# define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__ +#endif #define IF_NOT_INSTALL_APPLET_SYMLINKS(...) #undef CONFIG_INSTALL_APPLET_HARDLINKS #define ENABLE_INSTALL_APPLET_HARDLINKS 0 @@ -286,7 +390,11 @@ #define IF_NOT_INSTALL_SH_APPLET_SCRIPT_WRAPPER(...) __VA_ARGS__ #define CONFIG_PREFIX "./_install" #define ENABLE_PREFIX 1 -#define IF_PREFIX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PREFIX(...) __VA_ARGS__ "CONFIG_PREFIX" +#else +# define IF_PREFIX(...) __VA_ARGS__ +#endif #define IF_NOT_PREFIX(...) /* @@ -298,23 +406,43 @@ #define IF_NOT_FEATURE_SYSTEMD(...) __VA_ARGS__ #define CONFIG_FEATURE_RTMINMAX 1 #define ENABLE_FEATURE_RTMINMAX 1 -#define IF_FEATURE_RTMINMAX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_RTMINMAX(...) __VA_ARGS__ "CONFIG_FEATURE_RTMINMAX" +#else +# define IF_FEATURE_RTMINMAX(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_RTMINMAX(...) #define CONFIG_PASSWORD_MINLEN 6 #define ENABLE_PASSWORD_MINLEN 1 -#define IF_PASSWORD_MINLEN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PASSWORD_MINLEN(...) __VA_ARGS__ "CONFIG_PASSWORD_MINLEN" +#else +# define IF_PASSWORD_MINLEN(...) __VA_ARGS__ +#endif #define IF_NOT_PASSWORD_MINLEN(...) #define CONFIG_MD5_SMALL 1 #define ENABLE_MD5_SMALL 1 -#define IF_MD5_SMALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MD5_SMALL(...) __VA_ARGS__ "CONFIG_MD5_SMALL" +#else +# define IF_MD5_SMALL(...) __VA_ARGS__ +#endif #define IF_NOT_MD5_SMALL(...) #define CONFIG_SHA3_SMALL 1 #define ENABLE_SHA3_SMALL 1 -#define IF_SHA3_SMALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA3_SMALL(...) __VA_ARGS__ "CONFIG_SHA3_SMALL" +#else +# define IF_SHA3_SMALL(...) __VA_ARGS__ +#endif #define IF_NOT_SHA3_SMALL(...) #define CONFIG_FEATURE_FAST_TOP 1 #define ENABLE_FEATURE_FAST_TOP 1 -#define IF_FEATURE_FAST_TOP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FAST_TOP(...) __VA_ARGS__ "CONFIG_FEATURE_FAST_TOP" +#else +# define IF_FEATURE_FAST_TOP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FAST_TOP(...) #undef CONFIG_FEATURE_ETC_NETWORKS #define ENABLE_FEATURE_ETC_NETWORKS 0 @@ -322,27 +450,51 @@ #define IF_NOT_FEATURE_ETC_NETWORKS(...) __VA_ARGS__ #define CONFIG_FEATURE_USE_TERMIOS 1 #define ENABLE_FEATURE_USE_TERMIOS 1 -#define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__ "CONFIG_FEATURE_USE_TERMIOS" +#else +# define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_USE_TERMIOS(...) #define CONFIG_FEATURE_EDITING 1 #define ENABLE_FEATURE_EDITING 1 -#define IF_FEATURE_EDITING(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING" +#else +# define IF_FEATURE_EDITING(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING(...) #define CONFIG_FEATURE_EDITING_MAX_LEN 1024 #define ENABLE_FEATURE_EDITING_MAX_LEN 1 -#define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_MAX_LEN" +#else +# define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_MAX_LEN(...) #define CONFIG_FEATURE_EDITING_VI 1 #define ENABLE_FEATURE_EDITING_VI 1 -#define IF_FEATURE_EDITING_VI(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_VI(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_VI" +#else +# define IF_FEATURE_EDITING_VI(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_VI(...) #define CONFIG_FEATURE_EDITING_HISTORY 256 #define ENABLE_FEATURE_EDITING_HISTORY 1 -#define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_HISTORY" +#else +# define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_HISTORY(...) #define CONFIG_FEATURE_EDITING_SAVEHISTORY 1 #define ENABLE_FEATURE_EDITING_SAVEHISTORY 1 -#define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_SAVEHISTORY" +#else +# define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_SAVEHISTORY(...) #undef CONFIG_FEATURE_EDITING_SAVE_ON_EXIT #define ENABLE_FEATURE_EDITING_SAVE_ON_EXIT 0 @@ -350,11 +502,19 @@ #define IF_NOT_FEATURE_EDITING_SAVE_ON_EXIT(...) __VA_ARGS__ #define CONFIG_FEATURE_REVERSE_SEARCH 1 #define ENABLE_FEATURE_REVERSE_SEARCH 1 -#define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__ "CONFIG_FEATURE_REVERSE_SEARCH" +#else +# define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_REVERSE_SEARCH(...) #define CONFIG_FEATURE_TAB_COMPLETION 1 #define ENABLE_FEATURE_TAB_COMPLETION 1 -#define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__ "CONFIG_FEATURE_TAB_COMPLETION" +#else +# define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAB_COMPLETION(...) #undef CONFIG_FEATURE_USERNAME_COMPLETION #define ENABLE_FEATURE_USERNAME_COMPLETION 0 @@ -362,15 +522,27 @@ #define IF_NOT_FEATURE_USERNAME_COMPLETION(...) __VA_ARGS__ #define CONFIG_FEATURE_EDITING_FANCY_PROMPT 1 #define ENABLE_FEATURE_EDITING_FANCY_PROMPT 1 -#define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_FANCY_PROMPT" +#else +# define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_FANCY_PROMPT(...) #define CONFIG_FEATURE_EDITING_ASK_TERMINAL 1 #define ENABLE_FEATURE_EDITING_ASK_TERMINAL 1 -#define IF_FEATURE_EDITING_ASK_TERMINAL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_ASK_TERMINAL(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_ASK_TERMINAL" +#else +# define IF_FEATURE_EDITING_ASK_TERMINAL(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_ASK_TERMINAL(...) #define CONFIG_FEATURE_NON_POSIX_CP 1 #define ENABLE_FEATURE_NON_POSIX_CP 1 -#define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__ "CONFIG_FEATURE_NON_POSIX_CP" +#else +# define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_NON_POSIX_CP(...) #undef CONFIG_FEATURE_VERBOSE_CP_MESSAGE #define ENABLE_FEATURE_VERBOSE_CP_MESSAGE 0 @@ -378,19 +550,35 @@ #define IF_NOT_FEATURE_VERBOSE_CP_MESSAGE(...) __VA_ARGS__ #define CONFIG_FEATURE_COPYBUF_KB 4 #define ENABLE_FEATURE_COPYBUF_KB 1 -#define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__ "CONFIG_FEATURE_COPYBUF_KB" +#else +# define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_COPYBUF_KB(...) #define CONFIG_FEATURE_SKIP_ROOTFS 1 #define ENABLE_FEATURE_SKIP_ROOTFS 1 -#define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__ "CONFIG_FEATURE_SKIP_ROOTFS" +#else +# define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SKIP_ROOTFS(...) #define CONFIG_MONOTONIC_SYSCALL 1 #define ENABLE_MONOTONIC_SYSCALL 1 -#define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__ "CONFIG_MONOTONIC_SYSCALL" +#else +# define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__ +#endif #define IF_NOT_MONOTONIC_SYSCALL(...) #define CONFIG_IOCTL_HEX2STR_ERROR 1 #define ENABLE_IOCTL_HEX2STR_ERROR 1 -#define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__ "CONFIG_IOCTL_HEX2STR_ERROR" +#else +# define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__ +#endif #define IF_NOT_IOCTL_HEX2STR_ERROR(...) #undef CONFIG_FEATURE_HWIB #define ENABLE_FEATURE_HWIB 0 @@ -406,19 +594,35 @@ */ #define CONFIG_FEATURE_SEAMLESS_XZ 1 #define ENABLE_FEATURE_SEAMLESS_XZ 1 -#define IF_FEATURE_SEAMLESS_XZ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SEAMLESS_XZ(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_XZ" +#else +# define IF_FEATURE_SEAMLESS_XZ(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SEAMLESS_XZ(...) #define CONFIG_FEATURE_SEAMLESS_LZMA 1 #define ENABLE_FEATURE_SEAMLESS_LZMA 1 -#define IF_FEATURE_SEAMLESS_LZMA(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SEAMLESS_LZMA(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_LZMA" +#else +# define IF_FEATURE_SEAMLESS_LZMA(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SEAMLESS_LZMA(...) #define CONFIG_FEATURE_SEAMLESS_BZ2 1 #define ENABLE_FEATURE_SEAMLESS_BZ2 1 -#define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_BZ2" +#else +# define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SEAMLESS_BZ2(...) #define CONFIG_FEATURE_SEAMLESS_GZ 1 #define ENABLE_FEATURE_SEAMLESS_GZ 1 -#define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_GZ" +#else +# define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SEAMLESS_GZ(...) #undef CONFIG_FEATURE_SEAMLESS_Z #define ENABLE_FEATURE_SEAMLESS_Z 0 @@ -436,25 +640,101 @@ #define ENABLE_FEATURE_AR_CREATE 0 #define IF_FEATURE_AR_CREATE(...) #define IF_NOT_FEATURE_AR_CREATE(...) __VA_ARGS__ +#define CONFIG_UNCOMPRESS 1 +#define ENABLE_UNCOMPRESS 1 +#ifdef MAKE_SUID +# define IF_UNCOMPRESS(...) __VA_ARGS__ "CONFIG_UNCOMPRESS" +#else +# define IF_UNCOMPRESS(...) __VA_ARGS__ +#endif +#define IF_NOT_UNCOMPRESS(...) +#define CONFIG_GUNZIP 1 +#define ENABLE_GUNZIP 1 +#ifdef MAKE_SUID +# define IF_GUNZIP(...) __VA_ARGS__ "CONFIG_GUNZIP" +#else +# define IF_GUNZIP(...) __VA_ARGS__ +#endif +#define IF_NOT_GUNZIP(...) #define CONFIG_BUNZIP2 1 #define ENABLE_BUNZIP2 1 -#define IF_BUNZIP2(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BUNZIP2(...) __VA_ARGS__ "CONFIG_BUNZIP2" +#else +# define IF_BUNZIP2(...) __VA_ARGS__ +#endif #define IF_NOT_BUNZIP2(...) +#define CONFIG_UNLZMA 1 +#define ENABLE_UNLZMA 1 +#ifdef MAKE_SUID +# define IF_UNLZMA(...) __VA_ARGS__ "CONFIG_UNLZMA" +#else +# define IF_UNLZMA(...) __VA_ARGS__ +#endif +#define IF_NOT_UNLZMA(...) +#define CONFIG_FEATURE_LZMA_FAST 1 +#define ENABLE_FEATURE_LZMA_FAST 1 +#ifdef MAKE_SUID +# define IF_FEATURE_LZMA_FAST(...) __VA_ARGS__ "CONFIG_FEATURE_LZMA_FAST" +#else +# define IF_FEATURE_LZMA_FAST(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_LZMA_FAST(...) +#define CONFIG_LZMA 1 +#define ENABLE_LZMA 1 +#ifdef MAKE_SUID +# define IF_LZMA(...) __VA_ARGS__ "CONFIG_LZMA" +#else +# define IF_LZMA(...) __VA_ARGS__ +#endif +#define IF_NOT_LZMA(...) +#define CONFIG_UNXZ 1 +#define ENABLE_UNXZ 1 +#ifdef MAKE_SUID +# define IF_UNXZ(...) __VA_ARGS__ "CONFIG_UNXZ" +#else +# define IF_UNXZ(...) __VA_ARGS__ +#endif +#define IF_NOT_UNXZ(...) +#define CONFIG_XZ 1 +#define ENABLE_XZ 1 +#ifdef MAKE_SUID +# define IF_XZ(...) __VA_ARGS__ "CONFIG_XZ" +#else +# define IF_XZ(...) __VA_ARGS__ +#endif +#define IF_NOT_XZ(...) #define CONFIG_BZIP2 1 #define ENABLE_BZIP2 1 -#define IF_BZIP2(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BZIP2(...) __VA_ARGS__ "CONFIG_BZIP2" +#else +# define IF_BZIP2(...) __VA_ARGS__ +#endif #define IF_NOT_BZIP2(...) #define CONFIG_CPIO 1 #define ENABLE_CPIO 1 -#define IF_CPIO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CPIO(...) __VA_ARGS__ "CONFIG_CPIO" +#else +# define IF_CPIO(...) __VA_ARGS__ +#endif #define IF_NOT_CPIO(...) #define CONFIG_FEATURE_CPIO_O 1 #define ENABLE_FEATURE_CPIO_O 1 -#define IF_FEATURE_CPIO_O(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CPIO_O(...) __VA_ARGS__ "CONFIG_FEATURE_CPIO_O" +#else +# define IF_FEATURE_CPIO_O(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CPIO_O(...) #define CONFIG_FEATURE_CPIO_P 1 #define ENABLE_FEATURE_CPIO_P 1 -#define IF_FEATURE_CPIO_P(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CPIO_P(...) __VA_ARGS__ "CONFIG_FEATURE_CPIO_P" +#else +# define IF_FEATURE_CPIO_P(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CPIO_P(...) #undef CONFIG_DPKG #define ENABLE_DPKG 0 @@ -468,25 +748,37 @@ #define ENABLE_FEATURE_DPKG_DEB_EXTRACT_ONLY 0 #define IF_FEATURE_DPKG_DEB_EXTRACT_ONLY(...) #define IF_NOT_FEATURE_DPKG_DEB_EXTRACT_ONLY(...) __VA_ARGS__ -#define CONFIG_GUNZIP 1 -#define ENABLE_GUNZIP 1 -#define IF_GUNZIP(...) __VA_ARGS__ -#define IF_NOT_GUNZIP(...) #define CONFIG_GZIP 1 #define ENABLE_GZIP 1 -#define IF_GZIP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GZIP(...) __VA_ARGS__ "CONFIG_GZIP" +#else +# define IF_GZIP(...) __VA_ARGS__ +#endif #define IF_NOT_GZIP(...) #define CONFIG_FEATURE_GZIP_LONG_OPTIONS 1 #define ENABLE_FEATURE_GZIP_LONG_OPTIONS 1 -#define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_GZIP_LONG_OPTIONS" +#else +# define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GZIP_LONG_OPTIONS(...) #define CONFIG_GZIP_FAST 2 #define ENABLE_GZIP_FAST 1 -#define IF_GZIP_FAST(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GZIP_FAST(...) __VA_ARGS__ "CONFIG_GZIP_FAST" +#else +# define IF_GZIP_FAST(...) __VA_ARGS__ +#endif #define IF_NOT_GZIP_FAST(...) #define CONFIG_LZOP 1 #define ENABLE_LZOP 1 -#define IF_LZOP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LZOP(...) __VA_ARGS__ "CONFIG_LZOP" +#else +# define IF_LZOP(...) __VA_ARGS__ +#endif #define IF_NOT_LZOP(...) #undef CONFIG_LZOP_COMPR_HIGH #define ENABLE_LZOP_COMPR_HIGH 0 @@ -502,19 +794,35 @@ #define IF_NOT_RPM(...) __VA_ARGS__ #define CONFIG_TAR 1 #define ENABLE_TAR 1 -#define IF_TAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TAR(...) __VA_ARGS__ "CONFIG_TAR" +#else +# define IF_TAR(...) __VA_ARGS__ +#endif #define IF_NOT_TAR(...) #define CONFIG_FEATURE_TAR_CREATE 1 #define ENABLE_FEATURE_TAR_CREATE 1 -#define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_CREATE" +#else +# define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_CREATE(...) #define CONFIG_FEATURE_TAR_AUTODETECT 1 #define ENABLE_FEATURE_TAR_AUTODETECT 1 -#define IF_FEATURE_TAR_AUTODETECT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_AUTODETECT(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_AUTODETECT" +#else +# define IF_FEATURE_TAR_AUTODETECT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_AUTODETECT(...) #define CONFIG_FEATURE_TAR_FROM 1 #define ENABLE_FEATURE_TAR_FROM 1 -#define IF_FEATURE_TAR_FROM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_FROM(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_FROM" +#else +# define IF_FEATURE_TAR_FROM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_FROM(...) #undef CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY #define ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY 0 @@ -526,55 +834,55 @@ #define IF_NOT_FEATURE_TAR_OLDSUN_COMPATIBILITY(...) __VA_ARGS__ #define CONFIG_FEATURE_TAR_GNU_EXTENSIONS 1 #define ENABLE_FEATURE_TAR_GNU_EXTENSIONS 1 -#define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_GNU_EXTENSIONS" +#else +# define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_GNU_EXTENSIONS(...) #define CONFIG_FEATURE_TAR_LONG_OPTIONS 1 #define ENABLE_FEATURE_TAR_LONG_OPTIONS 1 -#define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_LONG_OPTIONS" +#else +# define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_LONG_OPTIONS(...) #define CONFIG_FEATURE_TAR_TO_COMMAND 1 #define ENABLE_FEATURE_TAR_TO_COMMAND 1 -#define IF_FEATURE_TAR_TO_COMMAND(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_TO_COMMAND(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_TO_COMMAND" +#else +# define IF_FEATURE_TAR_TO_COMMAND(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_TO_COMMAND(...) #define CONFIG_FEATURE_TAR_UNAME_GNAME 1 #define ENABLE_FEATURE_TAR_UNAME_GNAME 1 -#define IF_FEATURE_TAR_UNAME_GNAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_UNAME_GNAME(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_UNAME_GNAME" +#else +# define IF_FEATURE_TAR_UNAME_GNAME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_UNAME_GNAME(...) #define CONFIG_FEATURE_TAR_NOPRESERVE_TIME 1 #define ENABLE_FEATURE_TAR_NOPRESERVE_TIME 1 -#define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_NOPRESERVE_TIME" +#else +# define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_NOPRESERVE_TIME(...) #undef CONFIG_FEATURE_TAR_SELINUX #define ENABLE_FEATURE_TAR_SELINUX 0 #define IF_FEATURE_TAR_SELINUX(...) #define IF_NOT_FEATURE_TAR_SELINUX(...) __VA_ARGS__ -#define CONFIG_UNCOMPRESS 1 -#define ENABLE_UNCOMPRESS 1 -#define IF_UNCOMPRESS(...) __VA_ARGS__ -#define IF_NOT_UNCOMPRESS(...) -#define CONFIG_UNLZMA 1 -#define ENABLE_UNLZMA 1 -#define IF_UNLZMA(...) __VA_ARGS__ -#define IF_NOT_UNLZMA(...) -#define CONFIG_FEATURE_LZMA_FAST 1 -#define ENABLE_FEATURE_LZMA_FAST 1 -#define IF_FEATURE_LZMA_FAST(...) __VA_ARGS__ -#define IF_NOT_FEATURE_LZMA_FAST(...) -#define CONFIG_LZMA 1 -#define ENABLE_LZMA 1 -#define IF_LZMA(...) __VA_ARGS__ -#define IF_NOT_LZMA(...) -#define CONFIG_UNXZ 1 -#define ENABLE_UNXZ 1 -#define IF_UNXZ(...) __VA_ARGS__ -#define IF_NOT_UNXZ(...) -#define CONFIG_XZ 1 -#define ENABLE_XZ 1 -#define IF_XZ(...) __VA_ARGS__ -#define IF_NOT_XZ(...) #define CONFIG_UNZIP 1 #define ENABLE_UNZIP 1 -#define IF_UNZIP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNZIP(...) __VA_ARGS__ "CONFIG_UNZIP" +#else +# define IF_UNZIP(...) __VA_ARGS__ +#endif #define IF_NOT_UNZIP(...) /* @@ -582,19 +890,35 @@ */ #define CONFIG_BASENAME 1 #define ENABLE_BASENAME 1 -#define IF_BASENAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BASENAME(...) __VA_ARGS__ "CONFIG_BASENAME" +#else +# define IF_BASENAME(...) __VA_ARGS__ +#endif #define IF_NOT_BASENAME(...) #define CONFIG_CAT 1 #define ENABLE_CAT 1 -#define IF_CAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CAT(...) __VA_ARGS__ "CONFIG_CAT" +#else +# define IF_CAT(...) __VA_ARGS__ +#endif #define IF_NOT_CAT(...) #define CONFIG_DATE 1 #define ENABLE_DATE 1 -#define IF_DATE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DATE(...) __VA_ARGS__ "CONFIG_DATE" +#else +# define IF_DATE(...) __VA_ARGS__ +#endif #define IF_NOT_DATE(...) #define CONFIG_FEATURE_DATE_ISOFMT 1 #define ENABLE_FEATURE_DATE_ISOFMT 1 -#define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__ "CONFIG_FEATURE_DATE_ISOFMT" +#else +# define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DATE_ISOFMT(...) #undef CONFIG_FEATURE_DATE_NANO #define ENABLE_FEATURE_DATE_NANO 0 @@ -602,7 +926,11 @@ #define IF_NOT_FEATURE_DATE_NANO(...) __VA_ARGS__ #define CONFIG_FEATURE_DATE_COMPAT 1 #define ENABLE_FEATURE_DATE_COMPAT 1 -#define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__ "CONFIG_FEATURE_DATE_COMPAT" +#else +# define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DATE_COMPAT(...) #undef CONFIG_HOSTID #define ENABLE_HOSTID 0 @@ -610,15 +938,27 @@ #define IF_NOT_HOSTID(...) __VA_ARGS__ #define CONFIG_ID 1 #define ENABLE_ID 1 -#define IF_ID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ID(...) __VA_ARGS__ "CONFIG_ID" +#else +# define IF_ID(...) __VA_ARGS__ +#endif #define IF_NOT_ID(...) #define CONFIG_GROUPS 1 #define ENABLE_GROUPS 1 -#define IF_GROUPS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GROUPS(...) __VA_ARGS__ "CONFIG_GROUPS" +#else +# define IF_GROUPS(...) __VA_ARGS__ +#endif #define IF_NOT_GROUPS(...) #define CONFIG_TEST 1 #define ENABLE_TEST 1 -#define IF_TEST(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TEST(...) __VA_ARGS__ "CONFIG_TEST" +#else +# define IF_TEST(...) __VA_ARGS__ +#endif #define IF_NOT_TEST(...) #undef CONFIG_FEATURE_TEST_64 #define ENABLE_FEATURE_TEST_64 0 @@ -626,19 +966,39 @@ #define IF_NOT_FEATURE_TEST_64(...) __VA_ARGS__ #define CONFIG_TOUCH 1 #define ENABLE_TOUCH 1 -#define IF_TOUCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TOUCH(...) __VA_ARGS__ "CONFIG_TOUCH" +#else +# define IF_TOUCH(...) __VA_ARGS__ +#endif #define IF_NOT_TOUCH(...) +#undef CONFIG_FEATURE_TOUCH_NODEREF +#define ENABLE_FEATURE_TOUCH_NODEREF 0 +#define IF_FEATURE_TOUCH_NODEREF(...) +#define IF_NOT_FEATURE_TOUCH_NODEREF(...) __VA_ARGS__ #define CONFIG_FEATURE_TOUCH_SUSV3 1 #define ENABLE_FEATURE_TOUCH_SUSV3 1 -#define IF_FEATURE_TOUCH_SUSV3(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOUCH_SUSV3(...) __VA_ARGS__ "CONFIG_FEATURE_TOUCH_SUSV3" +#else +# define IF_FEATURE_TOUCH_SUSV3(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOUCH_SUSV3(...) #define CONFIG_TR 1 #define ENABLE_TR 1 -#define IF_TR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TR(...) __VA_ARGS__ "CONFIG_TR" +#else +# define IF_TR(...) __VA_ARGS__ +#endif #define IF_NOT_TR(...) #define CONFIG_FEATURE_TR_CLASSES 1 #define ENABLE_FEATURE_TR_CLASSES 1 -#define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__ "CONFIG_FEATURE_TR_CLASSES" +#else +# define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TR_CLASSES(...) #undef CONFIG_FEATURE_TR_EQUIV #define ENABLE_FEATURE_TR_EQUIV 0 @@ -646,7 +1006,11 @@ #define IF_NOT_FEATURE_TR_EQUIV(...) __VA_ARGS__ #define CONFIG_BASE64 1 #define ENABLE_BASE64 1 -#define IF_BASE64(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BASE64(...) __VA_ARGS__ "CONFIG_BASE64" +#else +# define IF_BASE64(...) __VA_ARGS__ +#endif #define IF_NOT_BASE64(...) #undef CONFIG_WHO #define ENABLE_WHO 0 @@ -658,31 +1022,59 @@ #define IF_NOT_USERS(...) __VA_ARGS__ #define CONFIG_CAL 1 #define ENABLE_CAL 1 -#define IF_CAL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CAL(...) __VA_ARGS__ "CONFIG_CAL" +#else +# define IF_CAL(...) __VA_ARGS__ +#endif #define IF_NOT_CAL(...) #define CONFIG_CATV 1 #define ENABLE_CATV 1 -#define IF_CATV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CATV(...) __VA_ARGS__ "CONFIG_CATV" +#else +# define IF_CATV(...) __VA_ARGS__ +#endif #define IF_NOT_CATV(...) #define CONFIG_CHGRP 1 #define ENABLE_CHGRP 1 -#define IF_CHGRP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHGRP(...) __VA_ARGS__ "CONFIG_CHGRP" +#else +# define IF_CHGRP(...) __VA_ARGS__ +#endif #define IF_NOT_CHGRP(...) #define CONFIG_CHMOD 1 #define ENABLE_CHMOD 1 -#define IF_CHMOD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHMOD(...) __VA_ARGS__ "CONFIG_CHMOD" +#else +# define IF_CHMOD(...) __VA_ARGS__ +#endif #define IF_NOT_CHMOD(...) #define CONFIG_CHOWN 1 #define ENABLE_CHOWN 1 -#define IF_CHOWN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHOWN(...) __VA_ARGS__ "CONFIG_CHOWN" +#else +# define IF_CHOWN(...) __VA_ARGS__ +#endif #define IF_NOT_CHOWN(...) #define CONFIG_FEATURE_CHOWN_LONG_OPTIONS 1 #define ENABLE_FEATURE_CHOWN_LONG_OPTIONS 1 -#define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_CHOWN_LONG_OPTIONS" +#else +# define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CHOWN_LONG_OPTIONS(...) #define CONFIG_CHROOT 1 #define ENABLE_CHROOT 1 -#define IF_CHROOT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHROOT(...) __VA_ARGS__ "CONFIG_CHROOT" +#else +# define IF_CHROOT(...) __VA_ARGS__ +#endif #define IF_NOT_CHROOT(...) #undef CONFIG_CKSUM #define ENABLE_CKSUM 0 @@ -690,127 +1082,251 @@ #define IF_NOT_CKSUM(...) __VA_ARGS__ #define CONFIG_COMM 1 #define ENABLE_COMM 1 -#define IF_COMM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_COMM(...) __VA_ARGS__ "CONFIG_COMM" +#else +# define IF_COMM(...) __VA_ARGS__ +#endif #define IF_NOT_COMM(...) #define CONFIG_CP 1 #define ENABLE_CP 1 -#define IF_CP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CP(...) __VA_ARGS__ "CONFIG_CP" +#else +# define IF_CP(...) __VA_ARGS__ +#endif #define IF_NOT_CP(...) #define CONFIG_FEATURE_CP_LONG_OPTIONS 1 #define ENABLE_FEATURE_CP_LONG_OPTIONS 1 -#define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_CP_LONG_OPTIONS" +#else +# define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CP_LONG_OPTIONS(...) #define CONFIG_CUT 1 #define ENABLE_CUT 1 -#define IF_CUT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CUT(...) __VA_ARGS__ "CONFIG_CUT" +#else +# define IF_CUT(...) __VA_ARGS__ +#endif #define IF_NOT_CUT(...) #define CONFIG_DD 1 #define ENABLE_DD 1 -#define IF_DD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DD(...) __VA_ARGS__ "CONFIG_DD" +#else +# define IF_DD(...) __VA_ARGS__ +#endif #define IF_NOT_DD(...) #define CONFIG_FEATURE_DD_SIGNAL_HANDLING 1 #define ENABLE_FEATURE_DD_SIGNAL_HANDLING 1 -#define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__ "CONFIG_FEATURE_DD_SIGNAL_HANDLING" +#else +# define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DD_SIGNAL_HANDLING(...) #define CONFIG_FEATURE_DD_THIRD_STATUS_LINE 1 #define ENABLE_FEATURE_DD_THIRD_STATUS_LINE 1 -#define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__ "CONFIG_FEATURE_DD_THIRD_STATUS_LINE" +#else +# define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DD_THIRD_STATUS_LINE(...) #define CONFIG_FEATURE_DD_IBS_OBS 1 #define ENABLE_FEATURE_DD_IBS_OBS 1 -#define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__ "CONFIG_FEATURE_DD_IBS_OBS" +#else +# define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DD_IBS_OBS(...) #define CONFIG_DF 1 #define ENABLE_DF 1 -#define IF_DF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DF(...) __VA_ARGS__ "CONFIG_DF" +#else +# define IF_DF(...) __VA_ARGS__ +#endif #define IF_NOT_DF(...) #define CONFIG_FEATURE_DF_FANCY 1 #define ENABLE_FEATURE_DF_FANCY 1 -#define IF_FEATURE_DF_FANCY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DF_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_DF_FANCY" +#else +# define IF_FEATURE_DF_FANCY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DF_FANCY(...) #define CONFIG_DIRNAME 1 #define ENABLE_DIRNAME 1 -#define IF_DIRNAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DIRNAME(...) __VA_ARGS__ "CONFIG_DIRNAME" +#else +# define IF_DIRNAME(...) __VA_ARGS__ +#endif #define IF_NOT_DIRNAME(...) #define CONFIG_DOS2UNIX 1 #define ENABLE_DOS2UNIX 1 -#define IF_DOS2UNIX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DOS2UNIX(...) __VA_ARGS__ "CONFIG_DOS2UNIX" +#else +# define IF_DOS2UNIX(...) __VA_ARGS__ +#endif #define IF_NOT_DOS2UNIX(...) #define CONFIG_UNIX2DOS 1 #define ENABLE_UNIX2DOS 1 -#define IF_UNIX2DOS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNIX2DOS(...) __VA_ARGS__ "CONFIG_UNIX2DOS" +#else +# define IF_UNIX2DOS(...) __VA_ARGS__ +#endif #define IF_NOT_UNIX2DOS(...) #define CONFIG_DU 1 #define ENABLE_DU 1 -#define IF_DU(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DU(...) __VA_ARGS__ "CONFIG_DU" +#else +# define IF_DU(...) __VA_ARGS__ +#endif #define IF_NOT_DU(...) #define CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K 1 #define ENABLE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K 1 -#define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__ "CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K" +#else +# define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) #define CONFIG_ECHO 1 #define ENABLE_ECHO 1 -#define IF_ECHO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ECHO(...) __VA_ARGS__ "CONFIG_ECHO" +#else +# define IF_ECHO(...) __VA_ARGS__ +#endif #define IF_NOT_ECHO(...) #define CONFIG_FEATURE_FANCY_ECHO 1 #define ENABLE_FEATURE_FANCY_ECHO 1 -#define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_ECHO" +#else +# define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FANCY_ECHO(...) #define CONFIG_ENV 1 #define ENABLE_ENV 1 -#define IF_ENV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ENV(...) __VA_ARGS__ "CONFIG_ENV" +#else +# define IF_ENV(...) __VA_ARGS__ +#endif #define IF_NOT_ENV(...) #define CONFIG_FEATURE_ENV_LONG_OPTIONS 1 #define ENABLE_FEATURE_ENV_LONG_OPTIONS 1 -#define IF_FEATURE_ENV_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_ENV_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_ENV_LONG_OPTIONS" +#else +# define IF_FEATURE_ENV_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_ENV_LONG_OPTIONS(...) #define CONFIG_EXPAND 1 #define ENABLE_EXPAND 1 -#define IF_EXPAND(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXPAND(...) __VA_ARGS__ "CONFIG_EXPAND" +#else +# define IF_EXPAND(...) __VA_ARGS__ +#endif #define IF_NOT_EXPAND(...) #define CONFIG_FEATURE_EXPAND_LONG_OPTIONS 1 #define ENABLE_FEATURE_EXPAND_LONG_OPTIONS 1 -#define IF_FEATURE_EXPAND_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EXPAND_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_EXPAND_LONG_OPTIONS" +#else +# define IF_FEATURE_EXPAND_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EXPAND_LONG_OPTIONS(...) #define CONFIG_EXPR 1 #define ENABLE_EXPR 1 -#define IF_EXPR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXPR(...) __VA_ARGS__ "CONFIG_EXPR" +#else +# define IF_EXPR(...) __VA_ARGS__ +#endif #define IF_NOT_EXPR(...) #define CONFIG_EXPR_MATH_SUPPORT_64 1 #define ENABLE_EXPR_MATH_SUPPORT_64 1 -#define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__ "CONFIG_EXPR_MATH_SUPPORT_64" +#else +# define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__ +#endif #define IF_NOT_EXPR_MATH_SUPPORT_64(...) #define CONFIG_FALSE 1 #define ENABLE_FALSE 1 -#define IF_FALSE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FALSE(...) __VA_ARGS__ "CONFIG_FALSE" +#else +# define IF_FALSE(...) __VA_ARGS__ +#endif #define IF_NOT_FALSE(...) #define CONFIG_FOLD 1 #define ENABLE_FOLD 1 -#define IF_FOLD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FOLD(...) __VA_ARGS__ "CONFIG_FOLD" +#else +# define IF_FOLD(...) __VA_ARGS__ +#endif #define IF_NOT_FOLD(...) #define CONFIG_FSYNC 1 #define ENABLE_FSYNC 1 -#define IF_FSYNC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FSYNC(...) __VA_ARGS__ "CONFIG_FSYNC" +#else +# define IF_FSYNC(...) __VA_ARGS__ +#endif #define IF_NOT_FSYNC(...) #define CONFIG_HEAD 1 #define ENABLE_HEAD 1 -#define IF_HEAD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_HEAD(...) __VA_ARGS__ "CONFIG_HEAD" +#else +# define IF_HEAD(...) __VA_ARGS__ +#endif #define IF_NOT_HEAD(...) #define CONFIG_FEATURE_FANCY_HEAD 1 #define ENABLE_FEATURE_FANCY_HEAD 1 -#define IF_FEATURE_FANCY_HEAD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FANCY_HEAD(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_HEAD" +#else +# define IF_FEATURE_FANCY_HEAD(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FANCY_HEAD(...) #define CONFIG_INSTALL 1 #define ENABLE_INSTALL 1 -#define IF_INSTALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INSTALL(...) __VA_ARGS__ "CONFIG_INSTALL" +#else +# define IF_INSTALL(...) __VA_ARGS__ +#endif #define IF_NOT_INSTALL(...) #define CONFIG_FEATURE_INSTALL_LONG_OPTIONS 1 #define ENABLE_FEATURE_INSTALL_LONG_OPTIONS 1 -#define IF_FEATURE_INSTALL_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_INSTALL_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_INSTALL_LONG_OPTIONS" +#else +# define IF_FEATURE_INSTALL_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_INSTALL_LONG_OPTIONS(...) #define CONFIG_LN 1 #define ENABLE_LN 1 -#define IF_LN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LN(...) __VA_ARGS__ "CONFIG_LN" +#else +# define IF_LN(...) __VA_ARGS__ +#endif #define IF_NOT_LN(...) #undef CONFIG_LOGNAME #define ENABLE_LOGNAME 0 @@ -818,35 +1334,67 @@ #define IF_NOT_LOGNAME(...) __VA_ARGS__ #define CONFIG_LS 1 #define ENABLE_LS 1 -#define IF_LS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LS(...) __VA_ARGS__ "CONFIG_LS" +#else +# define IF_LS(...) __VA_ARGS__ +#endif #define IF_NOT_LS(...) #define CONFIG_FEATURE_LS_FILETYPES 1 #define ENABLE_FEATURE_LS_FILETYPES 1 -#define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__ "CONFIG_FEATURE_LS_FILETYPES" +#else +# define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_FILETYPES(...) #define CONFIG_FEATURE_LS_FOLLOWLINKS 1 #define ENABLE_FEATURE_LS_FOLLOWLINKS 1 -#define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__ "CONFIG_FEATURE_LS_FOLLOWLINKS" +#else +# define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_FOLLOWLINKS(...) #define CONFIG_FEATURE_LS_RECURSIVE 1 #define ENABLE_FEATURE_LS_RECURSIVE 1 -#define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__ "CONFIG_FEATURE_LS_RECURSIVE" +#else +# define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_RECURSIVE(...) #define CONFIG_FEATURE_LS_SORTFILES 1 #define ENABLE_FEATURE_LS_SORTFILES 1 -#define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__ "CONFIG_FEATURE_LS_SORTFILES" +#else +# define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_SORTFILES(...) #define CONFIG_FEATURE_LS_TIMESTAMPS 1 #define ENABLE_FEATURE_LS_TIMESTAMPS 1 -#define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__ "CONFIG_FEATURE_LS_TIMESTAMPS" +#else +# define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_TIMESTAMPS(...) #define CONFIG_FEATURE_LS_USERNAME 1 #define ENABLE_FEATURE_LS_USERNAME 1 -#define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__ "CONFIG_FEATURE_LS_USERNAME" +#else +# define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_USERNAME(...) #define CONFIG_FEATURE_LS_COLOR 1 #define ENABLE_FEATURE_LS_COLOR 1 -#define IF_FEATURE_LS_COLOR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_COLOR(...) __VA_ARGS__ "CONFIG_FEATURE_LS_COLOR" +#else +# define IF_FEATURE_LS_COLOR(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_COLOR(...) #undef CONFIG_FEATURE_LS_COLOR_IS_DEFAULT #define ENABLE_FEATURE_LS_COLOR_IS_DEFAULT 0 @@ -854,131 +1402,259 @@ #define IF_NOT_FEATURE_LS_COLOR_IS_DEFAULT(...) __VA_ARGS__ #define CONFIG_MD5SUM 1 #define ENABLE_MD5SUM 1 -#define IF_MD5SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MD5SUM(...) __VA_ARGS__ "CONFIG_MD5SUM" +#else +# define IF_MD5SUM(...) __VA_ARGS__ +#endif #define IF_NOT_MD5SUM(...) #define CONFIG_MKDIR 1 #define ENABLE_MKDIR 1 -#define IF_MKDIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKDIR(...) __VA_ARGS__ "CONFIG_MKDIR" +#else +# define IF_MKDIR(...) __VA_ARGS__ +#endif #define IF_NOT_MKDIR(...) #define CONFIG_FEATURE_MKDIR_LONG_OPTIONS 1 #define ENABLE_FEATURE_MKDIR_LONG_OPTIONS 1 -#define IF_FEATURE_MKDIR_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MKDIR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_MKDIR_LONG_OPTIONS" +#else +# define IF_FEATURE_MKDIR_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MKDIR_LONG_OPTIONS(...) #define CONFIG_MKFIFO 1 #define ENABLE_MKFIFO 1 -#define IF_MKFIFO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKFIFO(...) __VA_ARGS__ "CONFIG_MKFIFO" +#else +# define IF_MKFIFO(...) __VA_ARGS__ +#endif #define IF_NOT_MKFIFO(...) #define CONFIG_MKNOD 1 #define ENABLE_MKNOD 1 -#define IF_MKNOD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKNOD(...) __VA_ARGS__ "CONFIG_MKNOD" +#else +# define IF_MKNOD(...) __VA_ARGS__ +#endif #define IF_NOT_MKNOD(...) #define CONFIG_MV 1 #define ENABLE_MV 1 -#define IF_MV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MV(...) __VA_ARGS__ "CONFIG_MV" +#else +# define IF_MV(...) __VA_ARGS__ +#endif #define IF_NOT_MV(...) #define CONFIG_FEATURE_MV_LONG_OPTIONS 1 #define ENABLE_FEATURE_MV_LONG_OPTIONS 1 -#define IF_FEATURE_MV_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MV_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_MV_LONG_OPTIONS" +#else +# define IF_FEATURE_MV_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MV_LONG_OPTIONS(...) #define CONFIG_NICE 1 #define ENABLE_NICE 1 -#define IF_NICE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NICE(...) __VA_ARGS__ "CONFIG_NICE" +#else +# define IF_NICE(...) __VA_ARGS__ +#endif #define IF_NOT_NICE(...) #define CONFIG_NOHUP 1 #define ENABLE_NOHUP 1 -#define IF_NOHUP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NOHUP(...) __VA_ARGS__ "CONFIG_NOHUP" +#else +# define IF_NOHUP(...) __VA_ARGS__ +#endif #define IF_NOT_NOHUP(...) #define CONFIG_OD 1 #define ENABLE_OD 1 -#define IF_OD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_OD(...) __VA_ARGS__ "CONFIG_OD" +#else +# define IF_OD(...) __VA_ARGS__ +#endif #define IF_NOT_OD(...) #define CONFIG_PRINTENV 1 #define ENABLE_PRINTENV 1 -#define IF_PRINTENV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PRINTENV(...) __VA_ARGS__ "CONFIG_PRINTENV" +#else +# define IF_PRINTENV(...) __VA_ARGS__ +#endif #define IF_NOT_PRINTENV(...) #define CONFIG_PRINTF 1 #define ENABLE_PRINTF 1 -#define IF_PRINTF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PRINTF(...) __VA_ARGS__ "CONFIG_PRINTF" +#else +# define IF_PRINTF(...) __VA_ARGS__ +#endif #define IF_NOT_PRINTF(...) #define CONFIG_PWD 1 #define ENABLE_PWD 1 -#define IF_PWD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PWD(...) __VA_ARGS__ "CONFIG_PWD" +#else +# define IF_PWD(...) __VA_ARGS__ +#endif #define IF_NOT_PWD(...) #define CONFIG_READLINK 1 #define ENABLE_READLINK 1 -#define IF_READLINK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_READLINK(...) __VA_ARGS__ "CONFIG_READLINK" +#else +# define IF_READLINK(...) __VA_ARGS__ +#endif #define IF_NOT_READLINK(...) #define CONFIG_FEATURE_READLINK_FOLLOW 1 #define ENABLE_FEATURE_READLINK_FOLLOW 1 -#define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__ "CONFIG_FEATURE_READLINK_FOLLOW" +#else +# define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_READLINK_FOLLOW(...) #define CONFIG_REALPATH 1 #define ENABLE_REALPATH 1 -#define IF_REALPATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_REALPATH(...) __VA_ARGS__ "CONFIG_REALPATH" +#else +# define IF_REALPATH(...) __VA_ARGS__ +#endif #define IF_NOT_REALPATH(...) #define CONFIG_RM 1 #define ENABLE_RM 1 -#define IF_RM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RM(...) __VA_ARGS__ "CONFIG_RM" +#else +# define IF_RM(...) __VA_ARGS__ +#endif #define IF_NOT_RM(...) #define CONFIG_RMDIR 1 #define ENABLE_RMDIR 1 -#define IF_RMDIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RMDIR(...) __VA_ARGS__ "CONFIG_RMDIR" +#else +# define IF_RMDIR(...) __VA_ARGS__ +#endif #define IF_NOT_RMDIR(...) #define CONFIG_FEATURE_RMDIR_LONG_OPTIONS 1 #define ENABLE_FEATURE_RMDIR_LONG_OPTIONS 1 -#define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_RMDIR_LONG_OPTIONS" +#else +# define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_RMDIR_LONG_OPTIONS(...) #define CONFIG_SEQ 1 #define ENABLE_SEQ 1 -#define IF_SEQ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SEQ(...) __VA_ARGS__ "CONFIG_SEQ" +#else +# define IF_SEQ(...) __VA_ARGS__ +#endif #define IF_NOT_SEQ(...) #define CONFIG_SHA1SUM 1 #define ENABLE_SHA1SUM 1 -#define IF_SHA1SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA1SUM(...) __VA_ARGS__ "CONFIG_SHA1SUM" +#else +# define IF_SHA1SUM(...) __VA_ARGS__ +#endif #define IF_NOT_SHA1SUM(...) #define CONFIG_SHA256SUM 1 #define ENABLE_SHA256SUM 1 -#define IF_SHA256SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA256SUM(...) __VA_ARGS__ "CONFIG_SHA256SUM" +#else +# define IF_SHA256SUM(...) __VA_ARGS__ +#endif #define IF_NOT_SHA256SUM(...) #define CONFIG_SHA512SUM 1 #define ENABLE_SHA512SUM 1 -#define IF_SHA512SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA512SUM(...) __VA_ARGS__ "CONFIG_SHA512SUM" +#else +# define IF_SHA512SUM(...) __VA_ARGS__ +#endif #define IF_NOT_SHA512SUM(...) #define CONFIG_SHA3SUM 1 #define ENABLE_SHA3SUM 1 -#define IF_SHA3SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA3SUM(...) __VA_ARGS__ "CONFIG_SHA3SUM" +#else +# define IF_SHA3SUM(...) __VA_ARGS__ +#endif #define IF_NOT_SHA3SUM(...) #define CONFIG_SLEEP 1 #define ENABLE_SLEEP 1 -#define IF_SLEEP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SLEEP(...) __VA_ARGS__ "CONFIG_SLEEP" +#else +# define IF_SLEEP(...) __VA_ARGS__ +#endif #define IF_NOT_SLEEP(...) #define CONFIG_FEATURE_FANCY_SLEEP 1 #define ENABLE_FEATURE_FANCY_SLEEP 1 -#define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_SLEEP" +#else +# define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FANCY_SLEEP(...) #define CONFIG_FEATURE_FLOAT_SLEEP 1 #define ENABLE_FEATURE_FLOAT_SLEEP 1 -#define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__ "CONFIG_FEATURE_FLOAT_SLEEP" +#else +# define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FLOAT_SLEEP(...) #define CONFIG_SORT 1 #define ENABLE_SORT 1 -#define IF_SORT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SORT(...) __VA_ARGS__ "CONFIG_SORT" +#else +# define IF_SORT(...) __VA_ARGS__ +#endif #define IF_NOT_SORT(...) #define CONFIG_FEATURE_SORT_BIG 1 #define ENABLE_FEATURE_SORT_BIG 1 -#define IF_FEATURE_SORT_BIG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SORT_BIG(...) __VA_ARGS__ "CONFIG_FEATURE_SORT_BIG" +#else +# define IF_FEATURE_SORT_BIG(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SORT_BIG(...) #define CONFIG_SPLIT 1 #define ENABLE_SPLIT 1 -#define IF_SPLIT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SPLIT(...) __VA_ARGS__ "CONFIG_SPLIT" +#else +# define IF_SPLIT(...) __VA_ARGS__ +#endif #define IF_NOT_SPLIT(...) #define CONFIG_FEATURE_SPLIT_FANCY 1 #define ENABLE_FEATURE_SPLIT_FANCY 1 -#define IF_FEATURE_SPLIT_FANCY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SPLIT_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_SPLIT_FANCY" +#else +# define IF_FEATURE_SPLIT_FANCY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SPLIT_FANCY(...) #define CONFIG_STAT 1 #define ENABLE_STAT 1 -#define IF_STAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_STAT(...) __VA_ARGS__ "CONFIG_STAT" +#else +# define IF_STAT(...) __VA_ARGS__ +#endif #define IF_NOT_STAT(...) #undef CONFIG_FEATURE_STAT_FORMAT #define ENABLE_FEATURE_STAT_FORMAT 0 @@ -986,39 +1662,75 @@ #define IF_NOT_FEATURE_STAT_FORMAT(...) __VA_ARGS__ #define CONFIG_STTY 1 #define ENABLE_STTY 1 -#define IF_STTY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_STTY(...) __VA_ARGS__ "CONFIG_STTY" +#else +# define IF_STTY(...) __VA_ARGS__ +#endif #define IF_NOT_STTY(...) #define CONFIG_SUM 1 #define ENABLE_SUM 1 -#define IF_SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SUM(...) __VA_ARGS__ "CONFIG_SUM" +#else +# define IF_SUM(...) __VA_ARGS__ +#endif #define IF_NOT_SUM(...) #define CONFIG_SYNC 1 #define ENABLE_SYNC 1 -#define IF_SYNC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SYNC(...) __VA_ARGS__ "CONFIG_SYNC" +#else +# define IF_SYNC(...) __VA_ARGS__ +#endif #define IF_NOT_SYNC(...) #define CONFIG_TAC 1 #define ENABLE_TAC 1 -#define IF_TAC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TAC(...) __VA_ARGS__ "CONFIG_TAC" +#else +# define IF_TAC(...) __VA_ARGS__ +#endif #define IF_NOT_TAC(...) #define CONFIG_TAIL 1 #define ENABLE_TAIL 1 -#define IF_TAIL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TAIL(...) __VA_ARGS__ "CONFIG_TAIL" +#else +# define IF_TAIL(...) __VA_ARGS__ +#endif #define IF_NOT_TAIL(...) #define CONFIG_FEATURE_FANCY_TAIL 1 #define ENABLE_FEATURE_FANCY_TAIL 1 -#define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_TAIL" +#else +# define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FANCY_TAIL(...) #define CONFIG_TEE 1 #define ENABLE_TEE 1 -#define IF_TEE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TEE(...) __VA_ARGS__ "CONFIG_TEE" +#else +# define IF_TEE(...) __VA_ARGS__ +#endif #define IF_NOT_TEE(...) #define CONFIG_FEATURE_TEE_USE_BLOCK_IO 1 #define ENABLE_FEATURE_TEE_USE_BLOCK_IO 1 -#define IF_FEATURE_TEE_USE_BLOCK_IO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TEE_USE_BLOCK_IO(...) __VA_ARGS__ "CONFIG_FEATURE_TEE_USE_BLOCK_IO" +#else +# define IF_FEATURE_TEE_USE_BLOCK_IO(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TEE_USE_BLOCK_IO(...) #define CONFIG_TRUE 1 #define ENABLE_TRUE 1 -#define IF_TRUE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TRUE(...) __VA_ARGS__ "CONFIG_TRUE" +#else +# define IF_TRUE(...) __VA_ARGS__ +#endif #define IF_NOT_TRUE(...) #undef CONFIG_TTY #define ENABLE_TTY 0 @@ -1026,35 +1738,67 @@ #define IF_NOT_TTY(...) __VA_ARGS__ #define CONFIG_UNAME 1 #define ENABLE_UNAME 1 -#define IF_UNAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNAME(...) __VA_ARGS__ "CONFIG_UNAME" +#else +# define IF_UNAME(...) __VA_ARGS__ +#endif #define IF_NOT_UNAME(...) #define CONFIG_UNEXPAND 1 #define ENABLE_UNEXPAND 1 -#define IF_UNEXPAND(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNEXPAND(...) __VA_ARGS__ "CONFIG_UNEXPAND" +#else +# define IF_UNEXPAND(...) __VA_ARGS__ +#endif #define IF_NOT_UNEXPAND(...) #define CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS 1 #define ENABLE_FEATURE_UNEXPAND_LONG_OPTIONS 1 -#define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS" +#else +# define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_UNEXPAND_LONG_OPTIONS(...) #define CONFIG_UNIQ 1 #define ENABLE_UNIQ 1 -#define IF_UNIQ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNIQ(...) __VA_ARGS__ "CONFIG_UNIQ" +#else +# define IF_UNIQ(...) __VA_ARGS__ +#endif #define IF_NOT_UNIQ(...) #define CONFIG_USLEEP 1 #define ENABLE_USLEEP 1 -#define IF_USLEEP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_USLEEP(...) __VA_ARGS__ "CONFIG_USLEEP" +#else +# define IF_USLEEP(...) __VA_ARGS__ +#endif #define IF_NOT_USLEEP(...) #define CONFIG_UUDECODE 1 #define ENABLE_UUDECODE 1 -#define IF_UUDECODE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UUDECODE(...) __VA_ARGS__ "CONFIG_UUDECODE" +#else +# define IF_UUDECODE(...) __VA_ARGS__ +#endif #define IF_NOT_UUDECODE(...) #define CONFIG_UUENCODE 1 #define ENABLE_UUENCODE 1 -#define IF_UUENCODE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UUENCODE(...) __VA_ARGS__ "CONFIG_UUENCODE" +#else +# define IF_UUENCODE(...) __VA_ARGS__ +#endif #define IF_NOT_UUENCODE(...) #define CONFIG_WC 1 #define ENABLE_WC 1 -#define IF_WC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WC(...) __VA_ARGS__ "CONFIG_WC" +#else +# define IF_WC(...) __VA_ARGS__ +#endif #define IF_NOT_WC(...) #undef CONFIG_FEATURE_WC_LARGE #define ENABLE_FEATURE_WC_LARGE 0 @@ -1062,11 +1806,19 @@ #define IF_NOT_FEATURE_WC_LARGE(...) __VA_ARGS__ #define CONFIG_WHOAMI 1 #define ENABLE_WHOAMI 1 -#define IF_WHOAMI(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WHOAMI(...) __VA_ARGS__ "CONFIG_WHOAMI" +#else +# define IF_WHOAMI(...) __VA_ARGS__ +#endif #define IF_NOT_WHOAMI(...) #define CONFIG_YES 1 #define ENABLE_YES 1 -#define IF_YES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_YES(...) __VA_ARGS__ "CONFIG_YES" +#else +# define IF_YES(...) __VA_ARGS__ +#endif #define IF_NOT_YES(...) /* @@ -1074,7 +1826,11 @@ */ #define CONFIG_FEATURE_PRESERVE_HARDLINKS 1 #define ENABLE_FEATURE_PRESERVE_HARDLINKS 1 -#define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__ "CONFIG_FEATURE_PRESERVE_HARDLINKS" +#else +# define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PRESERVE_HARDLINKS(...) /* @@ -1082,7 +1838,11 @@ */ #define CONFIG_FEATURE_AUTOWIDTH 1 #define ENABLE_FEATURE_AUTOWIDTH 1 -#define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__ "CONFIG_FEATURE_AUTOWIDTH" +#else +# define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_AUTOWIDTH(...) /* @@ -1090,7 +1850,11 @@ */ #define CONFIG_FEATURE_HUMAN_READABLE 1 #define ENABLE_FEATURE_HUMAN_READABLE 1 -#define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__ "CONFIG_FEATURE_HUMAN_READABLE" +#else +# define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_HUMAN_READABLE(...) /* @@ -1098,7 +1862,11 @@ */ #define CONFIG_FEATURE_MD5_SHA1_SUM_CHECK 1 #define ENABLE_FEATURE_MD5_SHA1_SUM_CHECK 1 -#define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__ "CONFIG_FEATURE_MD5_SHA1_SUM_CHECK" +#else +# define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MD5_SHA1_SUM_CHECK(...) /* @@ -1114,7 +1882,11 @@ #define IF_NOT_FGCONSOLE(...) __VA_ARGS__ #define CONFIG_CLEAR 1 #define ENABLE_CLEAR 1 -#define IF_CLEAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CLEAR(...) __VA_ARGS__ "CONFIG_CLEAR" +#else +# define IF_CLEAR(...) __VA_ARGS__ +#endif #define IF_NOT_CLEAR(...) #undef CONFIG_DEALLOCVT #define ENABLE_DEALLOCVT 0 @@ -1142,11 +1914,19 @@ #define IF_NOT_OPENVT(...) __VA_ARGS__ #define CONFIG_RESET 1 #define ENABLE_RESET 1 -#define IF_RESET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RESET(...) __VA_ARGS__ "CONFIG_RESET" +#else +# define IF_RESET(...) __VA_ARGS__ +#endif #define IF_NOT_RESET(...) #define CONFIG_RESIZE 1 #define ENABLE_RESIZE 1 -#define IF_RESIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RESIZE(...) __VA_ARGS__ "CONFIG_RESIZE" +#else +# define IF_RESIZE(...) __VA_ARGS__ +#endif #define IF_NOT_RESIZE(...) #undef CONFIG_FEATURE_RESIZE_PRINT #define ENABLE_FEATURE_RESIZE_PRINT 0 @@ -1154,7 +1934,11 @@ #define IF_NOT_FEATURE_RESIZE_PRINT(...) __VA_ARGS__ #define CONFIG_SETCONSOLE 1 #define ENABLE_SETCONSOLE 1 -#define IF_SETCONSOLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SETCONSOLE(...) __VA_ARGS__ "CONFIG_SETCONSOLE" +#else +# define IF_SETCONSOLE(...) __VA_ARGS__ +#endif #define IF_NOT_SETCONSOLE(...) #undef CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS #define ENABLE_FEATURE_SETCONSOLE_LONG_OPTIONS 0 @@ -1170,7 +1954,11 @@ #define IF_NOT_FEATURE_SETFONT_TEXTUAL_MAP(...) __VA_ARGS__ #define CONFIG_DEFAULT_SETFONT_DIR "" #define ENABLE_DEFAULT_SETFONT_DIR 1 -#define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__ "CONFIG_DEFAULT_SETFONT_DIR" +#else +# define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__ +#endif #define IF_NOT_DEFAULT_SETFONT_DIR(...) #undef CONFIG_SETKEYCODES #define ENABLE_SETKEYCODES 0 @@ -1198,23 +1986,43 @@ */ #define CONFIG_MKTEMP 1 #define ENABLE_MKTEMP 1 -#define IF_MKTEMP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKTEMP(...) __VA_ARGS__ "CONFIG_MKTEMP" +#else +# define IF_MKTEMP(...) __VA_ARGS__ +#endif #define IF_NOT_MKTEMP(...) #define CONFIG_PIPE_PROGRESS 1 #define ENABLE_PIPE_PROGRESS 1 -#define IF_PIPE_PROGRESS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PIPE_PROGRESS(...) __VA_ARGS__ "CONFIG_PIPE_PROGRESS" +#else +# define IF_PIPE_PROGRESS(...) __VA_ARGS__ +#endif #define IF_NOT_PIPE_PROGRESS(...) #define CONFIG_RUN_PARTS 1 #define ENABLE_RUN_PARTS 1 -#define IF_RUN_PARTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RUN_PARTS(...) __VA_ARGS__ "CONFIG_RUN_PARTS" +#else +# define IF_RUN_PARTS(...) __VA_ARGS__ +#endif #define IF_NOT_RUN_PARTS(...) #define CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS 1 #define ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS 1 -#define IF_FEATURE_RUN_PARTS_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_RUN_PARTS_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS" +#else +# define IF_FEATURE_RUN_PARTS_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_RUN_PARTS_LONG_OPTIONS(...) #define CONFIG_FEATURE_RUN_PARTS_FANCY 1 #define ENABLE_FEATURE_RUN_PARTS_FANCY 1 -#define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_RUN_PARTS_FANCY" +#else +# define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_RUN_PARTS_FANCY(...) #undef CONFIG_START_STOP_DAEMON #define ENABLE_START_STOP_DAEMON 0 @@ -1230,107 +2038,215 @@ #define IF_NOT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_WHICH 1 #define ENABLE_WHICH 1 -#define IF_WHICH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WHICH(...) __VA_ARGS__ "CONFIG_WHICH" +#else +# define IF_WHICH(...) __VA_ARGS__ +#endif #define IF_NOT_WHICH(...) /* * Editors */ +#define CONFIG_AWK 1 +#define ENABLE_AWK 1 +#ifdef MAKE_SUID +# define IF_AWK(...) __VA_ARGS__ "CONFIG_AWK" +#else +# define IF_AWK(...) __VA_ARGS__ +#endif +#define IF_NOT_AWK(...) +#define CONFIG_FEATURE_AWK_LIBM 1 +#define ENABLE_FEATURE_AWK_LIBM 1 +#ifdef MAKE_SUID +# define IF_FEATURE_AWK_LIBM(...) __VA_ARGS__ "CONFIG_FEATURE_AWK_LIBM" +#else +# define IF_FEATURE_AWK_LIBM(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_AWK_LIBM(...) +#define CONFIG_FEATURE_AWK_GNU_EXTENSIONS 1 +#define ENABLE_FEATURE_AWK_GNU_EXTENSIONS 1 +#ifdef MAKE_SUID +# define IF_FEATURE_AWK_GNU_EXTENSIONS(...) __VA_ARGS__ "CONFIG_FEATURE_AWK_GNU_EXTENSIONS" +#else +# define IF_FEATURE_AWK_GNU_EXTENSIONS(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_AWK_GNU_EXTENSIONS(...) +#define CONFIG_CMP 1 +#define ENABLE_CMP 1 +#ifdef MAKE_SUID +# define IF_CMP(...) __VA_ARGS__ "CONFIG_CMP" +#else +# define IF_CMP(...) __VA_ARGS__ +#endif +#define IF_NOT_CMP(...) +#define CONFIG_DIFF 1 +#define ENABLE_DIFF 1 +#ifdef MAKE_SUID +# define IF_DIFF(...) __VA_ARGS__ "CONFIG_DIFF" +#else +# define IF_DIFF(...) __VA_ARGS__ +#endif +#define IF_NOT_DIFF(...) +#define CONFIG_FEATURE_DIFF_LONG_OPTIONS 1 +#define ENABLE_FEATURE_DIFF_LONG_OPTIONS 1 +#ifdef MAKE_SUID +# define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_DIFF_LONG_OPTIONS" +#else +# define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_DIFF_LONG_OPTIONS(...) +#define CONFIG_FEATURE_DIFF_DIR 1 +#define ENABLE_FEATURE_DIFF_DIR 1 +#ifdef MAKE_SUID +# define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__ "CONFIG_FEATURE_DIFF_DIR" +#else +# define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_DIFF_DIR(...) +#define CONFIG_ED 1 +#define ENABLE_ED 1 +#ifdef MAKE_SUID +# define IF_ED(...) __VA_ARGS__ "CONFIG_ED" +#else +# define IF_ED(...) __VA_ARGS__ +#endif +#define IF_NOT_ED(...) #define CONFIG_PATCH 1 #define ENABLE_PATCH 1 -#define IF_PATCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PATCH(...) __VA_ARGS__ "CONFIG_PATCH" +#else +# define IF_PATCH(...) __VA_ARGS__ +#endif #define IF_NOT_PATCH(...) +#define CONFIG_SED 1 +#define ENABLE_SED 1 +#ifdef MAKE_SUID +# define IF_SED(...) __VA_ARGS__ "CONFIG_SED" +#else +# define IF_SED(...) __VA_ARGS__ +#endif +#define IF_NOT_SED(...) #define CONFIG_VI 1 #define ENABLE_VI 1 -#define IF_VI(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_VI(...) __VA_ARGS__ "CONFIG_VI" +#else +# define IF_VI(...) __VA_ARGS__ +#endif #define IF_NOT_VI(...) #define CONFIG_FEATURE_VI_MAX_LEN 256 #define ENABLE_FEATURE_VI_MAX_LEN 1 -#define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__ "CONFIG_FEATURE_VI_MAX_LEN" +#else +# define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_MAX_LEN(...) #define CONFIG_FEATURE_VI_8BIT 1 #define ENABLE_FEATURE_VI_8BIT 1 -#define IF_FEATURE_VI_8BIT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_8BIT(...) __VA_ARGS__ "CONFIG_FEATURE_VI_8BIT" +#else +# define IF_FEATURE_VI_8BIT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_8BIT(...) #define CONFIG_FEATURE_VI_COLON 1 #define ENABLE_FEATURE_VI_COLON 1 -#define IF_FEATURE_VI_COLON(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_COLON(...) __VA_ARGS__ "CONFIG_FEATURE_VI_COLON" +#else +# define IF_FEATURE_VI_COLON(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_COLON(...) #define CONFIG_FEATURE_VI_YANKMARK 1 #define ENABLE_FEATURE_VI_YANKMARK 1 -#define IF_FEATURE_VI_YANKMARK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_YANKMARK(...) __VA_ARGS__ "CONFIG_FEATURE_VI_YANKMARK" +#else +# define IF_FEATURE_VI_YANKMARK(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_YANKMARK(...) #define CONFIG_FEATURE_VI_SEARCH 1 #define ENABLE_FEATURE_VI_SEARCH 1 -#define IF_FEATURE_VI_SEARCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_SEARCH(...) __VA_ARGS__ "CONFIG_FEATURE_VI_SEARCH" +#else +# define IF_FEATURE_VI_SEARCH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_SEARCH(...) #define CONFIG_FEATURE_VI_REGEX_SEARCH 1 #define ENABLE_FEATURE_VI_REGEX_SEARCH 1 -#define IF_FEATURE_VI_REGEX_SEARCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_REGEX_SEARCH(...) __VA_ARGS__ "CONFIG_FEATURE_VI_REGEX_SEARCH" +#else +# define IF_FEATURE_VI_REGEX_SEARCH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_REGEX_SEARCH(...) #define CONFIG_FEATURE_VI_USE_SIGNALS 1 #define ENABLE_FEATURE_VI_USE_SIGNALS 1 -#define IF_FEATURE_VI_USE_SIGNALS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_USE_SIGNALS(...) __VA_ARGS__ "CONFIG_FEATURE_VI_USE_SIGNALS" +#else +# define IF_FEATURE_VI_USE_SIGNALS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_USE_SIGNALS(...) #define CONFIG_FEATURE_VI_DOT_CMD 1 #define ENABLE_FEATURE_VI_DOT_CMD 1 -#define IF_FEATURE_VI_DOT_CMD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_DOT_CMD(...) __VA_ARGS__ "CONFIG_FEATURE_VI_DOT_CMD" +#else +# define IF_FEATURE_VI_DOT_CMD(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_DOT_CMD(...) #define CONFIG_FEATURE_VI_READONLY 1 #define ENABLE_FEATURE_VI_READONLY 1 -#define IF_FEATURE_VI_READONLY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_READONLY(...) __VA_ARGS__ "CONFIG_FEATURE_VI_READONLY" +#else +# define IF_FEATURE_VI_READONLY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_READONLY(...) #define CONFIG_FEATURE_VI_SETOPTS 1 #define ENABLE_FEATURE_VI_SETOPTS 1 -#define IF_FEATURE_VI_SETOPTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_SETOPTS(...) __VA_ARGS__ "CONFIG_FEATURE_VI_SETOPTS" +#else +# define IF_FEATURE_VI_SETOPTS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_SETOPTS(...) #define CONFIG_FEATURE_VI_SET 1 #define ENABLE_FEATURE_VI_SET 1 -#define IF_FEATURE_VI_SET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_SET(...) __VA_ARGS__ "CONFIG_FEATURE_VI_SET" +#else +# define IF_FEATURE_VI_SET(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_SET(...) #define CONFIG_FEATURE_VI_WIN_RESIZE 1 #define ENABLE_FEATURE_VI_WIN_RESIZE 1 -#define IF_FEATURE_VI_WIN_RESIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_WIN_RESIZE(...) __VA_ARGS__ "CONFIG_FEATURE_VI_WIN_RESIZE" +#else +# define IF_FEATURE_VI_WIN_RESIZE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_WIN_RESIZE(...) #define CONFIG_FEATURE_VI_ASK_TERMINAL 1 #define ENABLE_FEATURE_VI_ASK_TERMINAL 1 -#define IF_FEATURE_VI_ASK_TERMINAL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_ASK_TERMINAL(...) __VA_ARGS__ "CONFIG_FEATURE_VI_ASK_TERMINAL" +#else +# define IF_FEATURE_VI_ASK_TERMINAL(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_ASK_TERMINAL(...) -#define CONFIG_AWK 1 -#define ENABLE_AWK 1 -#define IF_AWK(...) __VA_ARGS__ -#define IF_NOT_AWK(...) -#define CONFIG_FEATURE_AWK_LIBM 1 -#define ENABLE_FEATURE_AWK_LIBM 1 -#define IF_FEATURE_AWK_LIBM(...) __VA_ARGS__ -#define IF_NOT_FEATURE_AWK_LIBM(...) -#define CONFIG_CMP 1 -#define ENABLE_CMP 1 -#define IF_CMP(...) __VA_ARGS__ -#define IF_NOT_CMP(...) -#define CONFIG_DIFF 1 -#define ENABLE_DIFF 1 -#define IF_DIFF(...) __VA_ARGS__ -#define IF_NOT_DIFF(...) -#define CONFIG_FEATURE_DIFF_LONG_OPTIONS 1 -#define ENABLE_FEATURE_DIFF_LONG_OPTIONS 1 -#define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__ -#define IF_NOT_FEATURE_DIFF_LONG_OPTIONS(...) -#define CONFIG_FEATURE_DIFF_DIR 1 -#define ENABLE_FEATURE_DIFF_DIR 1 -#define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__ -#define IF_NOT_FEATURE_DIFF_DIR(...) -#define CONFIG_ED 1 -#define ENABLE_ED 1 -#define IF_ED(...) __VA_ARGS__ -#define IF_NOT_ED(...) -#define CONFIG_SED 1 -#define ENABLE_SED 1 -#define IF_SED(...) __VA_ARGS__ -#define IF_NOT_SED(...) #define CONFIG_FEATURE_ALLOW_EXEC 1 #define ENABLE_FEATURE_ALLOW_EXEC 1 -#define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__ "CONFIG_FEATURE_ALLOW_EXEC" +#else +# define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_ALLOW_EXEC(...) /* @@ -1338,39 +2254,75 @@ */ #define CONFIG_FIND 1 #define ENABLE_FIND 1 -#define IF_FIND(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FIND(...) __VA_ARGS__ "CONFIG_FIND" +#else +# define IF_FIND(...) __VA_ARGS__ +#endif #define IF_NOT_FIND(...) #define CONFIG_FEATURE_FIND_PRINT0 1 #define ENABLE_FEATURE_FIND_PRINT0 1 -#define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PRINT0" +#else +# define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PRINT0(...) #define CONFIG_FEATURE_FIND_MTIME 1 #define ENABLE_FEATURE_FIND_MTIME 1 -#define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MTIME" +#else +# define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_MTIME(...) #define CONFIG_FEATURE_FIND_MMIN 1 #define ENABLE_FEATURE_FIND_MMIN 1 -#define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MMIN" +#else +# define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_MMIN(...) #define CONFIG_FEATURE_FIND_PERM 1 #define ENABLE_FEATURE_FIND_PERM 1 -#define IF_FEATURE_FIND_PERM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PERM(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PERM" +#else +# define IF_FEATURE_FIND_PERM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PERM(...) #define CONFIG_FEATURE_FIND_TYPE 1 #define ENABLE_FEATURE_FIND_TYPE 1 -#define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_TYPE" +#else +# define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_TYPE(...) #define CONFIG_FEATURE_FIND_XDEV 1 #define ENABLE_FEATURE_FIND_XDEV 1 -#define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_XDEV" +#else +# define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_XDEV(...) #define CONFIG_FEATURE_FIND_MAXDEPTH 1 #define ENABLE_FEATURE_FIND_MAXDEPTH 1 -#define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MAXDEPTH" +#else +# define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_MAXDEPTH(...) #define CONFIG_FEATURE_FIND_NEWER 1 #define ENABLE_FEATURE_FIND_NEWER 1 -#define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_NEWER" +#else +# define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_NEWER(...) #undef CONFIG_FEATURE_FIND_INUM #define ENABLE_FEATURE_FIND_INUM 0 @@ -1378,35 +2330,67 @@ #define IF_NOT_FEATURE_FIND_INUM(...) __VA_ARGS__ #define CONFIG_FEATURE_FIND_EXEC 1 #define ENABLE_FEATURE_FIND_EXEC 1 -#define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_EXEC" +#else +# define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_EXEC(...) #define CONFIG_FEATURE_FIND_USER 1 #define ENABLE_FEATURE_FIND_USER 1 -#define IF_FEATURE_FIND_USER(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_USER(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_USER" +#else +# define IF_FEATURE_FIND_USER(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_USER(...) #define CONFIG_FEATURE_FIND_GROUP 1 #define ENABLE_FEATURE_FIND_GROUP 1 -#define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_GROUP" +#else +# define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_GROUP(...) #define CONFIG_FEATURE_FIND_NOT 1 #define ENABLE_FEATURE_FIND_NOT 1 -#define IF_FEATURE_FIND_NOT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_NOT(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_NOT" +#else +# define IF_FEATURE_FIND_NOT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_NOT(...) #define CONFIG_FEATURE_FIND_DEPTH 1 #define ENABLE_FEATURE_FIND_DEPTH 1 -#define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_DEPTH" +#else +# define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_DEPTH(...) #define CONFIG_FEATURE_FIND_PAREN 1 #define ENABLE_FEATURE_FIND_PAREN 1 -#define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PAREN" +#else +# define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PAREN(...) #define CONFIG_FEATURE_FIND_SIZE 1 #define ENABLE_FEATURE_FIND_SIZE 1 -#define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_SIZE" +#else +# define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_SIZE(...) #define CONFIG_FEATURE_FIND_PRUNE 1 #define ENABLE_FEATURE_FIND_PRUNE 1 -#define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PRUNE" +#else +# define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PRUNE(...) #undef CONFIG_FEATURE_FIND_DELETE #define ENABLE_FEATURE_FIND_DELETE 0 @@ -1414,11 +2398,19 @@ #define IF_NOT_FEATURE_FIND_DELETE(...) __VA_ARGS__ #define CONFIG_FEATURE_FIND_PATH 1 #define ENABLE_FEATURE_FIND_PATH 1 -#define IF_FEATURE_FIND_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PATH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PATH" +#else +# define IF_FEATURE_FIND_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PATH(...) #define CONFIG_FEATURE_FIND_REGEX 1 #define ENABLE_FEATURE_FIND_REGEX 1 -#define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_REGEX" +#else +# define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_REGEX(...) #undef CONFIG_FEATURE_FIND_CONTEXT #define ENABLE_FEATURE_FIND_CONTEXT 0 @@ -1426,43 +2418,83 @@ #define IF_NOT_FEATURE_FIND_CONTEXT(...) __VA_ARGS__ #define CONFIG_FEATURE_FIND_LINKS 1 #define ENABLE_FEATURE_FIND_LINKS 1 -#define IF_FEATURE_FIND_LINKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_LINKS(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_LINKS" +#else +# define IF_FEATURE_FIND_LINKS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_LINKS(...) #define CONFIG_GREP 1 #define ENABLE_GREP 1 -#define IF_GREP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GREP(...) __VA_ARGS__ "CONFIG_GREP" +#else +# define IF_GREP(...) __VA_ARGS__ +#endif #define IF_NOT_GREP(...) #define CONFIG_FEATURE_GREP_EGREP_ALIAS 1 #define ENABLE_FEATURE_GREP_EGREP_ALIAS 1 -#define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_EGREP_ALIAS" +#else +# define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GREP_EGREP_ALIAS(...) #define CONFIG_FEATURE_GREP_FGREP_ALIAS 1 #define ENABLE_FEATURE_GREP_FGREP_ALIAS 1 -#define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_FGREP_ALIAS" +#else +# define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GREP_FGREP_ALIAS(...) #define CONFIG_FEATURE_GREP_CONTEXT 1 #define ENABLE_FEATURE_GREP_CONTEXT 1 -#define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_CONTEXT" +#else +# define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GREP_CONTEXT(...) #define CONFIG_XARGS 1 #define ENABLE_XARGS 1 -#define IF_XARGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_XARGS(...) __VA_ARGS__ "CONFIG_XARGS" +#else +# define IF_XARGS(...) __VA_ARGS__ +#endif #define IF_NOT_XARGS(...) #define CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION 1 #define ENABLE_FEATURE_XARGS_SUPPORT_CONFIRMATION 1 -#define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION" +#else +# define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) #define CONFIG_FEATURE_XARGS_SUPPORT_QUOTES 1 #define ENABLE_FEATURE_XARGS_SUPPORT_QUOTES 1 -#define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_QUOTES" +#else +# define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_XARGS_SUPPORT_QUOTES(...) #define CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT 1 #define ENABLE_FEATURE_XARGS_SUPPORT_TERMOPT 1 -#define IF_FEATURE_XARGS_SUPPORT_TERMOPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_XARGS_SUPPORT_TERMOPT(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT" +#else +# define IF_FEATURE_XARGS_SUPPORT_TERMOPT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_XARGS_SUPPORT_TERMOPT(...) #define CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM 1 #define ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM 1 -#define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM" +#else +# define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) /* @@ -1482,7 +2514,11 @@ #define IF_NOT_FEATURE_BOOTCHARTD_CONFIG_FILE(...) __VA_ARGS__ #define CONFIG_HALT 1 #define ENABLE_HALT 1 -#define IF_HALT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_HALT(...) __VA_ARGS__ "CONFIG_HALT" +#else +# define IF_HALT(...) __VA_ARGS__ +#endif #define IF_NOT_HALT(...) #undef CONFIG_FEATURE_CALL_TELINIT #define ENABLE_FEATURE_CALL_TELINIT 0 @@ -1490,7 +2526,11 @@ #define IF_NOT_FEATURE_CALL_TELINIT(...) __VA_ARGS__ #define CONFIG_TELINIT_PATH "" #define ENABLE_TELINIT_PATH 1 -#define IF_TELINIT_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TELINIT_PATH(...) __VA_ARGS__ "CONFIG_TELINIT_PATH" +#else +# define IF_TELINIT_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_TELINIT_PATH(...) #undef CONFIG_INIT #define ENABLE_INIT 0 @@ -1506,7 +2546,11 @@ #define IF_NOT_FEATURE_KILL_REMOVED(...) __VA_ARGS__ #define CONFIG_FEATURE_KILL_DELAY 0 #define ENABLE_FEATURE_KILL_DELAY 1 -#define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__ "CONFIG_FEATURE_KILL_DELAY" +#else +# define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_KILL_DELAY(...) #undef CONFIG_FEATURE_INIT_SCTTY #define ENABLE_FEATURE_INIT_SCTTY 0 @@ -1530,15 +2574,27 @@ #define IF_NOT_FEATURE_INITRD(...) __VA_ARGS__ #define CONFIG_INIT_TERMINAL_TYPE "" #define ENABLE_INIT_TERMINAL_TYPE 1 -#define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__ "CONFIG_INIT_TERMINAL_TYPE" +#else +# define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__ +#endif #define IF_NOT_INIT_TERMINAL_TYPE(...) #define CONFIG_MESG 1 #define ENABLE_MESG 1 -#define IF_MESG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MESG(...) __VA_ARGS__ "CONFIG_MESG" +#else +# define IF_MESG(...) __VA_ARGS__ +#endif #define IF_NOT_MESG(...) #define CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP 1 #define ENABLE_FEATURE_MESG_ENABLE_ONLY_GROUP 1 -#define IF_FEATURE_MESG_ENABLE_ONLY_GROUP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MESG_ENABLE_ONLY_GROUP(...) __VA_ARGS__ "CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP" +#else +# define IF_FEATURE_MESG_ENABLE_ONLY_GROUP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MESG_ENABLE_ONLY_GROUP(...) /* @@ -1566,7 +2622,11 @@ #define IF_NOT_USE_BB_SHADOW(...) __VA_ARGS__ #define CONFIG_USE_BB_CRYPT 1 #define ENABLE_USE_BB_CRYPT 1 -#define IF_USE_BB_CRYPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_USE_BB_CRYPT(...) __VA_ARGS__ "CONFIG_USE_BB_CRYPT" +#else +# define IF_USE_BB_CRYPT(...) __VA_ARGS__ +#endif #define IF_NOT_USE_BB_CRYPT(...) #undef CONFIG_USE_BB_CRYPT_SHA #define ENABLE_USE_BB_CRYPT_SHA 0 @@ -1586,11 +2646,19 @@ #define IF_NOT_FEATURE_CHECK_NAMES(...) __VA_ARGS__ #define CONFIG_FIRST_SYSTEM_ID 0 #define ENABLE_FIRST_SYSTEM_ID 1 -#define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__ "CONFIG_FIRST_SYSTEM_ID" +#else +# define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__ +#endif #define IF_NOT_FIRST_SYSTEM_ID(...) #define CONFIG_LAST_SYSTEM_ID 0 #define ENABLE_LAST_SYSTEM_ID 1 -#define IF_LAST_SYSTEM_ID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LAST_SYSTEM_ID(...) __VA_ARGS__ "CONFIG_LAST_SYSTEM_ID" +#else +# define IF_LAST_SYSTEM_ID(...) __VA_ARGS__ +#endif #define IF_NOT_LAST_SYSTEM_ID(...) #undef CONFIG_ADDGROUP #define ENABLE_ADDGROUP 0 @@ -1662,7 +2730,11 @@ #define IF_NOT_CHPASSWD(...) __VA_ARGS__ #define CONFIG_FEATURE_DEFAULT_PASSWD_ALGO "" #define ENABLE_FEATURE_DEFAULT_PASSWD_ALGO 1 -#define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__ "CONFIG_FEATURE_DEFAULT_PASSWD_ALGO" +#else +# define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DEFAULT_PASSWD_ALGO(...) #undef CONFIG_SU #define ENABLE_SU 0 @@ -1690,7 +2762,11 @@ */ #define CONFIG_CHATTR 1 #define ENABLE_CHATTR 1 -#define IF_CHATTR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHATTR(...) __VA_ARGS__ "CONFIG_CHATTR" +#else +# define IF_CHATTR(...) __VA_ARGS__ +#endif #define IF_NOT_CHATTR(...) #undef CONFIG_FSCK #define ENABLE_FSCK 0 @@ -1698,11 +2774,19 @@ #define IF_NOT_FSCK(...) __VA_ARGS__ #define CONFIG_LSATTR 1 #define ENABLE_LSATTR 1 -#define IF_LSATTR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LSATTR(...) __VA_ARGS__ "CONFIG_LSATTR" +#else +# define IF_LSATTR(...) __VA_ARGS__ +#endif #define IF_NOT_LSATTR(...) #define CONFIG_TUNE2FS 1 #define ENABLE_TUNE2FS 1 -#define IF_TUNE2FS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TUNE2FS(...) __VA_ARGS__ "CONFIG_TUNE2FS" +#else +# define IF_TUNE2FS(...) __VA_ARGS__ +#endif #define IF_NOT_TUNE2FS(...) /* @@ -1710,7 +2794,11 @@ */ #define CONFIG_MODINFO 1 #define ENABLE_MODINFO 1 -#define IF_MODINFO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MODINFO(...) __VA_ARGS__ "CONFIG_MODINFO" +#else +# define IF_MODINFO(...) __VA_ARGS__ +#endif #define IF_NOT_MODINFO(...) #undef CONFIG_MODPROBE_SMALL #define ENABLE_MODPROBE_SMALL 0 @@ -1718,31 +2806,59 @@ #define IF_NOT_MODPROBE_SMALL(...) __VA_ARGS__ #define CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE 1 #define ENABLE_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE 1 -#define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__ "CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE" +#else +# define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) #define CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED 1 #define ENABLE_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED 1 -#define IF_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED(...) __VA_ARGS__ "CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED" +#else +# define IF_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED(...) #define CONFIG_INSMOD 1 #define ENABLE_INSMOD 1 -#define IF_INSMOD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INSMOD(...) __VA_ARGS__ "CONFIG_INSMOD" +#else +# define IF_INSMOD(...) __VA_ARGS__ +#endif #define IF_NOT_INSMOD(...) #define CONFIG_RMMOD 1 #define ENABLE_RMMOD 1 -#define IF_RMMOD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RMMOD(...) __VA_ARGS__ "CONFIG_RMMOD" +#else +# define IF_RMMOD(...) __VA_ARGS__ +#endif #define IF_NOT_RMMOD(...) #define CONFIG_LSMOD 1 #define ENABLE_LSMOD 1 -#define IF_LSMOD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LSMOD(...) __VA_ARGS__ "CONFIG_LSMOD" +#else +# define IF_LSMOD(...) __VA_ARGS__ +#endif #define IF_NOT_LSMOD(...) #define CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT 1 #define ENABLE_FEATURE_LSMOD_PRETTY_2_6_OUTPUT 1 -#define IF_FEATURE_LSMOD_PRETTY_2_6_OUTPUT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LSMOD_PRETTY_2_6_OUTPUT(...) __VA_ARGS__ "CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT" +#else +# define IF_FEATURE_LSMOD_PRETTY_2_6_OUTPUT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LSMOD_PRETTY_2_6_OUTPUT(...) #define CONFIG_MODPROBE 1 #define ENABLE_MODPROBE 1 -#define IF_MODPROBE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MODPROBE(...) __VA_ARGS__ "CONFIG_MODPROBE" +#else +# define IF_MODPROBE(...) __VA_ARGS__ +#endif #define IF_NOT_MODPROBE(...) #undef CONFIG_FEATURE_MODPROBE_BLACKLIST #define ENABLE_FEATURE_MODPROBE_BLACKLIST 0 @@ -1750,7 +2866,11 @@ #define IF_NOT_FEATURE_MODPROBE_BLACKLIST(...) __VA_ARGS__ #define CONFIG_DEPMOD 1 #define ENABLE_DEPMOD 1 -#define IF_DEPMOD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DEPMOD(...) __VA_ARGS__ "CONFIG_DEPMOD" +#else +# define IF_DEPMOD(...) __VA_ARGS__ +#endif #define IF_NOT_DEPMOD(...) /* @@ -1762,7 +2882,11 @@ #define IF_NOT_FEATURE_2_4_MODULES(...) __VA_ARGS__ #define CONFIG_FEATURE_INSMOD_TRY_MMAP 1 #define ENABLE_FEATURE_INSMOD_TRY_MMAP 1 -#define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__ "CONFIG_FEATURE_INSMOD_TRY_MMAP" +#else +# define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_INSMOD_TRY_MMAP(...) #undef CONFIG_FEATURE_INSMOD_VERSION_CHECKING #define ENABLE_FEATURE_INSMOD_VERSION_CHECKING 0 @@ -1786,19 +2910,35 @@ #define IF_NOT_FEATURE_INSMOD_LOAD_MAP_FULL(...) __VA_ARGS__ #define CONFIG_FEATURE_CHECK_TAINTED_MODULE 1 #define ENABLE_FEATURE_CHECK_TAINTED_MODULE 1 -#define IF_FEATURE_CHECK_TAINTED_MODULE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CHECK_TAINTED_MODULE(...) __VA_ARGS__ "CONFIG_FEATURE_CHECK_TAINTED_MODULE" +#else +# define IF_FEATURE_CHECK_TAINTED_MODULE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CHECK_TAINTED_MODULE(...) #define CONFIG_FEATURE_MODUTILS_ALIAS 1 #define ENABLE_FEATURE_MODUTILS_ALIAS 1 -#define IF_FEATURE_MODUTILS_ALIAS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MODUTILS_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_MODUTILS_ALIAS" +#else +# define IF_FEATURE_MODUTILS_ALIAS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MODUTILS_ALIAS(...) #define CONFIG_FEATURE_MODUTILS_SYMBOLS 1 #define ENABLE_FEATURE_MODUTILS_SYMBOLS 1 -#define IF_FEATURE_MODUTILS_SYMBOLS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MODUTILS_SYMBOLS(...) __VA_ARGS__ "CONFIG_FEATURE_MODUTILS_SYMBOLS" +#else +# define IF_FEATURE_MODUTILS_SYMBOLS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MODUTILS_SYMBOLS(...) #define CONFIG_DEFAULT_DEPMOD_FILE "modules.dep" #define ENABLE_DEFAULT_DEPMOD_FILE 1 -#define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__ "CONFIG_DEFAULT_DEPMOD_FILE" +#else +# define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__ +#endif #define IF_NOT_DEFAULT_DEPMOD_FILE(...) /* @@ -1806,11 +2946,19 @@ */ #define CONFIG_BLOCKDEV 1 #define ENABLE_BLOCKDEV 1 -#define IF_BLOCKDEV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BLOCKDEV(...) __VA_ARGS__ "CONFIG_BLOCKDEV" +#else +# define IF_BLOCKDEV(...) __VA_ARGS__ +#endif #define IF_NOT_BLOCKDEV(...) #define CONFIG_FSTRIM 1 #define ENABLE_FSTRIM 1 -#define IF_FSTRIM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FSTRIM(...) __VA_ARGS__ "CONFIG_FSTRIM" +#else +# define IF_FSTRIM(...) __VA_ARGS__ +#endif #define IF_NOT_FSTRIM(...) #undef CONFIG_MDEV #define ENABLE_MDEV 0 @@ -1838,7 +2986,11 @@ #define IF_NOT_FEATURE_MDEV_LOAD_FIRMWARE(...) __VA_ARGS__ #define CONFIG_REV 1 #define ENABLE_REV 1 -#define IF_REV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_REV(...) __VA_ARGS__ "CONFIG_REV" +#else +# define IF_REV(...) __VA_ARGS__ +#endif #define IF_NOT_REV(...) #undef CONFIG_ACPID #define ENABLE_ACPID 0 @@ -1850,15 +3002,27 @@ #define IF_NOT_FEATURE_ACPID_COMPAT(...) __VA_ARGS__ #define CONFIG_BLKID 1 #define ENABLE_BLKID 1 -#define IF_BLKID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BLKID(...) __VA_ARGS__ "CONFIG_BLKID" +#else +# define IF_BLKID(...) __VA_ARGS__ +#endif #define IF_NOT_BLKID(...) #define CONFIG_FEATURE_BLKID_TYPE 1 #define ENABLE_FEATURE_BLKID_TYPE 1 -#define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__ "CONFIG_FEATURE_BLKID_TYPE" +#else +# define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BLKID_TYPE(...) #define CONFIG_DMESG 1 #define ENABLE_DMESG 1 -#define IF_DMESG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DMESG(...) __VA_ARGS__ "CONFIG_DMESG" +#else +# define IF_DMESG(...) __VA_ARGS__ +#endif #define IF_NOT_DMESG(...) #undef CONFIG_FEATURE_DMESG_PRETTY #define ENABLE_FEATURE_DMESG_PRETTY 0 @@ -1886,15 +3050,27 @@ #define IF_NOT_FDFORMAT(...) __VA_ARGS__ #define CONFIG_FDISK 1 #define ENABLE_FDISK 1 -#define IF_FDISK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FDISK(...) __VA_ARGS__ "CONFIG_FDISK" +#else +# define IF_FDISK(...) __VA_ARGS__ +#endif #define IF_NOT_FDISK(...) #define CONFIG_FDISK_SUPPORT_LARGE_DISKS 1 #define ENABLE_FDISK_SUPPORT_LARGE_DISKS 1 -#define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__ "CONFIG_FDISK_SUPPORT_LARGE_DISKS" +#else +# define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__ +#endif #define IF_NOT_FDISK_SUPPORT_LARGE_DISKS(...) #define CONFIG_FEATURE_FDISK_WRITABLE 1 #define ENABLE_FEATURE_FDISK_WRITABLE 1 -#define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__ "CONFIG_FEATURE_FDISK_WRITABLE" +#else +# define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FDISK_WRITABLE(...) #undef CONFIG_FEATURE_AIX_LABEL #define ENABLE_FEATURE_AIX_LABEL 0 @@ -1926,11 +3102,19 @@ #define IF_NOT_FINDFS(...) __VA_ARGS__ #define CONFIG_FLOCK 1 #define ENABLE_FLOCK 1 -#define IF_FLOCK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FLOCK(...) __VA_ARGS__ "CONFIG_FLOCK" +#else +# define IF_FLOCK(...) __VA_ARGS__ +#endif #define IF_NOT_FLOCK(...) #define CONFIG_FREERAMDISK 1 #define ENABLE_FREERAMDISK 1 -#define IF_FREERAMDISK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FREERAMDISK(...) __VA_ARGS__ "CONFIG_FREERAMDISK" +#else +# define IF_FREERAMDISK(...) __VA_ARGS__ +#endif #define IF_NOT_FREERAMDISK(...) #undef CONFIG_FSCK_MINIX #define ENABLE_FSCK_MINIX 0 @@ -1938,7 +3122,11 @@ #define IF_NOT_FSCK_MINIX(...) __VA_ARGS__ #define CONFIG_MKFS_EXT2 1 #define ENABLE_MKFS_EXT2 1 -#define IF_MKFS_EXT2(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKFS_EXT2(...) __VA_ARGS__ "CONFIG_MKFS_EXT2" +#else +# define IF_MKFS_EXT2(...) __VA_ARGS__ +#endif #define IF_NOT_MKFS_EXT2(...) #undef CONFIG_MKFS_MINIX #define ENABLE_MKFS_MINIX 0 @@ -1954,23 +3142,43 @@ #define IF_NOT_MKFS_REISER(...) __VA_ARGS__ #define CONFIG_MKFS_VFAT 1 #define ENABLE_MKFS_VFAT 1 -#define IF_MKFS_VFAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKFS_VFAT(...) __VA_ARGS__ "CONFIG_MKFS_VFAT" +#else +# define IF_MKFS_VFAT(...) __VA_ARGS__ +#endif #define IF_NOT_MKFS_VFAT(...) #define CONFIG_GETOPT 1 #define ENABLE_GETOPT 1 -#define IF_GETOPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GETOPT(...) __VA_ARGS__ "CONFIG_GETOPT" +#else +# define IF_GETOPT(...) __VA_ARGS__ +#endif #define IF_NOT_GETOPT(...) #define CONFIG_FEATURE_GETOPT_LONG 1 #define ENABLE_FEATURE_GETOPT_LONG 1 -#define IF_FEATURE_GETOPT_LONG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GETOPT_LONG(...) __VA_ARGS__ "CONFIG_FEATURE_GETOPT_LONG" +#else +# define IF_FEATURE_GETOPT_LONG(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GETOPT_LONG(...) #define CONFIG_HEXDUMP 1 #define ENABLE_HEXDUMP 1 -#define IF_HEXDUMP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_HEXDUMP(...) __VA_ARGS__ "CONFIG_HEXDUMP" +#else +# define IF_HEXDUMP(...) __VA_ARGS__ +#endif #define IF_NOT_HEXDUMP(...) #define CONFIG_FEATURE_HEXDUMP_REVERSE 1 #define ENABLE_FEATURE_HEXDUMP_REVERSE 1 -#define IF_FEATURE_HEXDUMP_REVERSE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_HEXDUMP_REVERSE(...) __VA_ARGS__ "CONFIG_FEATURE_HEXDUMP_REVERSE" +#else +# define IF_FEATURE_HEXDUMP_REVERSE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_HEXDUMP_REVERSE(...) #undef CONFIG_HD #define ENABLE_HD 0 @@ -1998,7 +3206,11 @@ #define IF_NOT_IPCS(...) __VA_ARGS__ #define CONFIG_LOSETUP 1 #define ENABLE_LOSETUP 1 -#define IF_LOSETUP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LOSETUP(...) __VA_ARGS__ "CONFIG_LOSETUP" +#else +# define IF_LOSETUP(...) __VA_ARGS__ +#endif #define IF_NOT_LOSETUP(...) #undef CONFIG_LSPCI #define ENABLE_LSPCI 0 @@ -2006,11 +3218,19 @@ #define IF_NOT_LSPCI(...) __VA_ARGS__ #define CONFIG_LSUSB 1 #define ENABLE_LSUSB 1 -#define IF_LSUSB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LSUSB(...) __VA_ARGS__ "CONFIG_LSUSB" +#else +# define IF_LSUSB(...) __VA_ARGS__ +#endif #define IF_NOT_LSUSB(...) #define CONFIG_MKSWAP 1 #define ENABLE_MKSWAP 1 -#define IF_MKSWAP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKSWAP(...) __VA_ARGS__ "CONFIG_MKSWAP" +#else +# define IF_MKSWAP(...) __VA_ARGS__ +#endif #define IF_NOT_MKSWAP(...) #undef CONFIG_FEATURE_MKSWAP_UUID #define ENABLE_FEATURE_MKSWAP_UUID 0 @@ -2018,19 +3238,35 @@ #define IF_NOT_FEATURE_MKSWAP_UUID(...) __VA_ARGS__ #define CONFIG_MORE 1 #define ENABLE_MORE 1 -#define IF_MORE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MORE(...) __VA_ARGS__ "CONFIG_MORE" +#else +# define IF_MORE(...) __VA_ARGS__ +#endif #define IF_NOT_MORE(...) #define CONFIG_MOUNT 1 #define ENABLE_MOUNT 1 -#define IF_MOUNT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MOUNT(...) __VA_ARGS__ "CONFIG_MOUNT" +#else +# define IF_MOUNT(...) __VA_ARGS__ +#endif #define IF_NOT_MOUNT(...) #define CONFIG_FEATURE_MOUNT_FAKE 1 #define ENABLE_FEATURE_MOUNT_FAKE 1 -#define IF_FEATURE_MOUNT_FAKE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_FAKE(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FAKE" +#else +# define IF_FEATURE_MOUNT_FAKE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_FAKE(...) #define CONFIG_FEATURE_MOUNT_VERBOSE 1 #define ENABLE_FEATURE_MOUNT_VERBOSE 1 -#define IF_FEATURE_MOUNT_VERBOSE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_VERBOSE(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_VERBOSE" +#else +# define IF_FEATURE_MOUNT_VERBOSE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_VERBOSE(...) #undef CONFIG_FEATURE_MOUNT_HELPERS #define ENABLE_FEATURE_MOUNT_HELPERS 0 @@ -2038,23 +3274,43 @@ #define IF_NOT_FEATURE_MOUNT_HELPERS(...) __VA_ARGS__ #define CONFIG_FEATURE_MOUNT_LABEL 1 #define ENABLE_FEATURE_MOUNT_LABEL 1 -#define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LABEL" +#else +# define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_LABEL(...) #define CONFIG_FEATURE_MOUNT_NFS 1 #define ENABLE_FEATURE_MOUNT_NFS 1 -#define IF_FEATURE_MOUNT_NFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_NFS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_NFS" +#else +# define IF_FEATURE_MOUNT_NFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_NFS(...) #define CONFIG_FEATURE_MOUNT_CIFS 1 #define ENABLE_FEATURE_MOUNT_CIFS 1 -#define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_CIFS" +#else +# define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_CIFS(...) #define CONFIG_FEATURE_MOUNT_FLAGS 1 #define ENABLE_FEATURE_MOUNT_FLAGS 1 -#define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FLAGS" +#else +# define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_FLAGS(...) #define CONFIG_FEATURE_MOUNT_FSTAB 1 #define ENABLE_FEATURE_MOUNT_FSTAB 1 -#define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FSTAB" +#else +# define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_FSTAB(...) #undef CONFIG_PIVOT_ROOT #define ENABLE_PIVOT_ROOT 0 @@ -2066,7 +3322,11 @@ #define IF_NOT_RDATE(...) __VA_ARGS__ #define CONFIG_RDEV 1 #define ENABLE_RDEV 1 -#define IF_RDEV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RDEV(...) __VA_ARGS__ "CONFIG_RDEV" +#else +# define IF_RDEV(...) __VA_ARGS__ +#endif #define IF_NOT_RDEV(...) #undef CONFIG_READPROFILE #define ENABLE_READPROFILE 0 @@ -2090,7 +3350,11 @@ #define IF_NOT_SETARCH(...) __VA_ARGS__ #define CONFIG_SWAPONOFF 1 #define ENABLE_SWAPONOFF 1 -#define IF_SWAPONOFF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SWAPONOFF(...) __VA_ARGS__ "CONFIG_SWAPONOFF" +#else +# define IF_SWAPONOFF(...) __VA_ARGS__ +#endif #define IF_NOT_SWAPONOFF(...) #undef CONFIG_FEATURE_SWAPON_PRI #define ENABLE_FEATURE_SWAPON_PRI 0 @@ -2102,11 +3366,19 @@ #define IF_NOT_SWITCH_ROOT(...) __VA_ARGS__ #define CONFIG_UMOUNT 1 #define ENABLE_UMOUNT 1 -#define IF_UMOUNT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UMOUNT(...) __VA_ARGS__ "CONFIG_UMOUNT" +#else +# define IF_UMOUNT(...) __VA_ARGS__ +#endif #define IF_NOT_UMOUNT(...) #define CONFIG_FEATURE_UMOUNT_ALL 1 #define ENABLE_FEATURE_UMOUNT_ALL 1 -#define IF_FEATURE_UMOUNT_ALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_UMOUNT_ALL(...) __VA_ARGS__ "CONFIG_FEATURE_UMOUNT_ALL" +#else +# define IF_FEATURE_UMOUNT_ALL(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_UMOUNT_ALL(...) /* @@ -2114,11 +3386,19 @@ */ #define CONFIG_FEATURE_MOUNT_LOOP 1 #define ENABLE_FEATURE_MOUNT_LOOP 1 -#define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LOOP" +#else +# define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_LOOP(...) #define CONFIG_FEATURE_MOUNT_LOOP_CREATE 1 #define ENABLE_FEATURE_MOUNT_LOOP_CREATE 1 -#define IF_FEATURE_MOUNT_LOOP_CREATE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_LOOP_CREATE(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LOOP_CREATE" +#else +# define IF_FEATURE_MOUNT_LOOP_CREATE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_LOOP_CREATE(...) #undef CONFIG_FEATURE_MTAB_SUPPORT #define ENABLE_FEATURE_MTAB_SUPPORT 0 @@ -2126,92 +3406,132 @@ #define IF_NOT_FEATURE_MTAB_SUPPORT(...) __VA_ARGS__ #define CONFIG_VOLUMEID 1 #define ENABLE_VOLUMEID 1 -#define IF_VOLUMEID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_VOLUMEID(...) __VA_ARGS__ "CONFIG_VOLUMEID" +#else +# define IF_VOLUMEID(...) __VA_ARGS__ +#endif #define IF_NOT_VOLUMEID(...) /* * Filesystem/Volume identification */ -#define CONFIG_FEATURE_VOLUMEID_EXT 1 -#define ENABLE_FEATURE_VOLUMEID_EXT 1 -#define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__ -#define IF_NOT_FEATURE_VOLUMEID_EXT(...) #undef CONFIG_FEATURE_VOLUMEID_BTRFS #define ENABLE_FEATURE_VOLUMEID_BTRFS 0 #define IF_FEATURE_VOLUMEID_BTRFS(...) #define IF_NOT_FEATURE_VOLUMEID_BTRFS(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_REISERFS -#define ENABLE_FEATURE_VOLUMEID_REISERFS 0 -#define IF_FEATURE_VOLUMEID_REISERFS(...) -#define IF_NOT_FEATURE_VOLUMEID_REISERFS(...) __VA_ARGS__ -#define CONFIG_FEATURE_VOLUMEID_FAT 1 -#define ENABLE_FEATURE_VOLUMEID_FAT 1 -#define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__ -#define IF_NOT_FEATURE_VOLUMEID_FAT(...) +#undef CONFIG_FEATURE_VOLUMEID_CRAMFS +#define ENABLE_FEATURE_VOLUMEID_CRAMFS 0 +#define IF_FEATURE_VOLUMEID_CRAMFS(...) +#define IF_NOT_FEATURE_VOLUMEID_CRAMFS(...) __VA_ARGS__ #define CONFIG_FEATURE_VOLUMEID_EXFAT 1 #define ENABLE_FEATURE_VOLUMEID_EXFAT 1 -#define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_EXFAT" +#else +# define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VOLUMEID_EXFAT(...) +#define CONFIG_FEATURE_VOLUMEID_EXT 1 +#define ENABLE_FEATURE_VOLUMEID_EXT 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_EXT" +#else +# define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_EXT(...) +#define CONFIG_FEATURE_VOLUMEID_F2FS 1 +#define ENABLE_FEATURE_VOLUMEID_F2FS 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_F2FS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_F2FS" +#else +# define IF_FEATURE_VOLUMEID_F2FS(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_F2FS(...) +#define CONFIG_FEATURE_VOLUMEID_FAT 1 +#define ENABLE_FEATURE_VOLUMEID_FAT 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_FAT" +#else +# define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_FAT(...) #undef CONFIG_FEATURE_VOLUMEID_HFS #define ENABLE_FEATURE_VOLUMEID_HFS 0 #define IF_FEATURE_VOLUMEID_HFS(...) #define IF_NOT_FEATURE_VOLUMEID_HFS(...) __VA_ARGS__ +#define CONFIG_FEATURE_VOLUMEID_ISO9660 1 +#define ENABLE_FEATURE_VOLUMEID_ISO9660 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_ISO9660" +#else +# define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_ISO9660(...) #undef CONFIG_FEATURE_VOLUMEID_JFS #define ENABLE_FEATURE_VOLUMEID_JFS 0 #define IF_FEATURE_VOLUMEID_JFS(...) #define IF_NOT_FEATURE_VOLUMEID_JFS(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_XFS -#define ENABLE_FEATURE_VOLUMEID_XFS 0 -#define IF_FEATURE_VOLUMEID_XFS(...) -#define IF_NOT_FEATURE_VOLUMEID_XFS(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_LINUXRAID +#define ENABLE_FEATURE_VOLUMEID_LINUXRAID 0 +#define IF_FEATURE_VOLUMEID_LINUXRAID(...) +#define IF_NOT_FEATURE_VOLUMEID_LINUXRAID(...) __VA_ARGS__ +#define CONFIG_FEATURE_VOLUMEID_LINUXSWAP 1 +#define ENABLE_FEATURE_VOLUMEID_LINUXSWAP 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_LINUXSWAP" +#else +# define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_LINUXSWAP(...) +#undef CONFIG_FEATURE_VOLUMEID_LUKS +#define ENABLE_FEATURE_VOLUMEID_LUKS 0 +#define IF_FEATURE_VOLUMEID_LUKS(...) +#define IF_NOT_FEATURE_VOLUMEID_LUKS(...) __VA_ARGS__ #undef CONFIG_FEATURE_VOLUMEID_NILFS #define ENABLE_FEATURE_VOLUMEID_NILFS 0 #define IF_FEATURE_VOLUMEID_NILFS(...) #define IF_NOT_FEATURE_VOLUMEID_NILFS(...) __VA_ARGS__ #define CONFIG_FEATURE_VOLUMEID_NTFS 1 #define ENABLE_FEATURE_VOLUMEID_NTFS 1 -#define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_NTFS" +#else +# define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VOLUMEID_NTFS(...) -#define CONFIG_FEATURE_VOLUMEID_ISO9660 1 -#define ENABLE_FEATURE_VOLUMEID_ISO9660 1 -#define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__ -#define IF_NOT_FEATURE_VOLUMEID_ISO9660(...) -#undef CONFIG_FEATURE_VOLUMEID_UDF -#define ENABLE_FEATURE_VOLUMEID_UDF 0 -#define IF_FEATURE_VOLUMEID_UDF(...) -#define IF_NOT_FEATURE_VOLUMEID_UDF(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_LUKS -#define ENABLE_FEATURE_VOLUMEID_LUKS 0 -#define IF_FEATURE_VOLUMEID_LUKS(...) -#define IF_NOT_FEATURE_VOLUMEID_LUKS(...) __VA_ARGS__ -#define CONFIG_FEATURE_VOLUMEID_LINUXSWAP 1 -#define ENABLE_FEATURE_VOLUMEID_LINUXSWAP 1 -#define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__ -#define IF_NOT_FEATURE_VOLUMEID_LINUXSWAP(...) -#undef CONFIG_FEATURE_VOLUMEID_CRAMFS -#define ENABLE_FEATURE_VOLUMEID_CRAMFS 0 -#define IF_FEATURE_VOLUMEID_CRAMFS(...) -#define IF_NOT_FEATURE_VOLUMEID_CRAMFS(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_OCFS2 +#define ENABLE_FEATURE_VOLUMEID_OCFS2 0 +#define IF_FEATURE_VOLUMEID_OCFS2(...) +#define IF_NOT_FEATURE_VOLUMEID_OCFS2(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_REISERFS +#define ENABLE_FEATURE_VOLUMEID_REISERFS 0 +#define IF_FEATURE_VOLUMEID_REISERFS(...) +#define IF_NOT_FEATURE_VOLUMEID_REISERFS(...) __VA_ARGS__ #undef CONFIG_FEATURE_VOLUMEID_ROMFS #define ENABLE_FEATURE_VOLUMEID_ROMFS 0 #define IF_FEATURE_VOLUMEID_ROMFS(...) #define IF_NOT_FEATURE_VOLUMEID_ROMFS(...) __VA_ARGS__ #define CONFIG_FEATURE_VOLUMEID_SQUASHFS 1 #define ENABLE_FEATURE_VOLUMEID_SQUASHFS 1 -#define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_SQUASHFS" +#else +# define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VOLUMEID_SQUASHFS(...) #undef CONFIG_FEATURE_VOLUMEID_SYSV #define ENABLE_FEATURE_VOLUMEID_SYSV 0 #define IF_FEATURE_VOLUMEID_SYSV(...) #define IF_NOT_FEATURE_VOLUMEID_SYSV(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_OCFS2 -#define ENABLE_FEATURE_VOLUMEID_OCFS2 0 -#define IF_FEATURE_VOLUMEID_OCFS2(...) -#define IF_NOT_FEATURE_VOLUMEID_OCFS2(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_LINUXRAID -#define ENABLE_FEATURE_VOLUMEID_LINUXRAID 0 -#define IF_FEATURE_VOLUMEID_LINUXRAID(...) -#define IF_NOT_FEATURE_VOLUMEID_LINUXRAID(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_UDF +#define ENABLE_FEATURE_VOLUMEID_UDF 0 +#define IF_FEATURE_VOLUMEID_UDF(...) +#define IF_NOT_FEATURE_VOLUMEID_UDF(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_XFS +#define ENABLE_FEATURE_VOLUMEID_XFS 0 +#define IF_FEATURE_VOLUMEID_XFS(...) +#define IF_NOT_FEATURE_VOLUMEID_XFS(...) __VA_ARGS__ /* * Miscellaneous Utilities @@ -2222,11 +3542,19 @@ #define IF_NOT_CONSPY(...) __VA_ARGS__ #define CONFIG_LESS 1 #define ENABLE_LESS 1 -#define IF_LESS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LESS(...) __VA_ARGS__ "CONFIG_LESS" +#else +# define IF_LESS(...) __VA_ARGS__ +#endif #define IF_NOT_LESS(...) #define CONFIG_FEATURE_LESS_MAXLINES 65536 #define ENABLE_FEATURE_LESS_MAXLINES 1 -#define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_MAXLINES" +#else +# define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_MAXLINES(...) #undef CONFIG_FEATURE_LESS_BRACKETS #define ENABLE_FEATURE_LESS_BRACKETS 0 @@ -2238,19 +3566,35 @@ #define IF_NOT_FEATURE_LESS_FLAGS(...) __VA_ARGS__ #define CONFIG_FEATURE_LESS_MARKS 1 #define ENABLE_FEATURE_LESS_MARKS 1 -#define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_MARKS" +#else +# define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_MARKS(...) #define CONFIG_FEATURE_LESS_REGEXP 1 #define ENABLE_FEATURE_LESS_REGEXP 1 -#define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_REGEXP" +#else +# define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_REGEXP(...) #define CONFIG_FEATURE_LESS_WINCH 1 #define ENABLE_FEATURE_LESS_WINCH 1 -#define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_WINCH" +#else +# define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_WINCH(...) #define CONFIG_FEATURE_LESS_ASK_TERMINAL 1 #define ENABLE_FEATURE_LESS_ASK_TERMINAL 1 -#define IF_FEATURE_LESS_ASK_TERMINAL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_ASK_TERMINAL(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_ASK_TERMINAL" +#else +# define IF_FEATURE_LESS_ASK_TERMINAL(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_ASK_TERMINAL(...) #undef CONFIG_FEATURE_LESS_DASHCMD #define ENABLE_FEATURE_LESS_DASHCMD 0 @@ -2262,15 +3606,31 @@ #define IF_NOT_FEATURE_LESS_LINENUMS(...) __VA_ARGS__ #define CONFIG_NANDWRITE 1 #define ENABLE_NANDWRITE 1 -#define IF_NANDWRITE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NANDWRITE(...) __VA_ARGS__ "CONFIG_NANDWRITE" +#else +# define IF_NANDWRITE(...) __VA_ARGS__ +#endif #define IF_NOT_NANDWRITE(...) #define CONFIG_NANDDUMP 1 #define ENABLE_NANDDUMP 1 -#define IF_NANDDUMP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NANDDUMP(...) __VA_ARGS__ "CONFIG_NANDDUMP" +#else +# define IF_NANDDUMP(...) __VA_ARGS__ +#endif #define IF_NOT_NANDDUMP(...) +#undef CONFIG_RFKILL +#define ENABLE_RFKILL 0 +#define IF_RFKILL(...) +#define IF_NOT_RFKILL(...) __VA_ARGS__ #define CONFIG_SETSERIAL 1 #define ENABLE_SETSERIAL 1 -#define IF_SETSERIAL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SETSERIAL(...) __VA_ARGS__ "CONFIG_SETSERIAL" +#else +# define IF_SETSERIAL(...) __VA_ARGS__ +#endif #define IF_NOT_SETSERIAL(...) #undef CONFIG_UBIATTACH #define ENABLE_UBIATTACH 0 @@ -2296,17 +3656,33 @@ #define ENABLE_UBIUPDATEVOL 0 #define IF_UBIUPDATEVOL(...) #define IF_NOT_UBIUPDATEVOL(...) __VA_ARGS__ +#undef CONFIG_WALL +#define ENABLE_WALL 0 +#define IF_WALL(...) +#define IF_NOT_WALL(...) __VA_ARGS__ #define CONFIG_ADJTIMEX 1 #define ENABLE_ADJTIMEX 1 -#define IF_ADJTIMEX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ADJTIMEX(...) __VA_ARGS__ "CONFIG_ADJTIMEX" +#else +# define IF_ADJTIMEX(...) __VA_ARGS__ +#endif #define IF_NOT_ADJTIMEX(...) #define CONFIG_BBCONFIG 1 #define ENABLE_BBCONFIG 1 -#define IF_BBCONFIG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BBCONFIG(...) __VA_ARGS__ "CONFIG_BBCONFIG" +#else +# define IF_BBCONFIG(...) __VA_ARGS__ +#endif #define IF_NOT_BBCONFIG(...) #define CONFIG_FEATURE_COMPRESS_BBCONFIG 1 #define ENABLE_FEATURE_COMPRESS_BBCONFIG 1 -#define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__ "CONFIG_FEATURE_COMPRESS_BBCONFIG" +#else +# define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_COMPRESS_BBCONFIG(...) #undef CONFIG_BEEP #define ENABLE_BEEP 0 @@ -2314,11 +3690,19 @@ #define IF_NOT_BEEP(...) __VA_ARGS__ #define CONFIG_FEATURE_BEEP_FREQ 0 #define ENABLE_FEATURE_BEEP_FREQ 1 -#define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__ "CONFIG_FEATURE_BEEP_FREQ" +#else +# define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BEEP_FREQ(...) #define CONFIG_FEATURE_BEEP_LENGTH_MS 0 #define ENABLE_FEATURE_BEEP_LENGTH_MS 1 -#define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__ "CONFIG_FEATURE_BEEP_LENGTH_MS" +#else +# define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BEEP_LENGTH_MS(...) #undef CONFIG_CHAT #define ENABLE_CHAT 0 @@ -2358,7 +3742,11 @@ #define IF_NOT_CHRT(...) __VA_ARGS__ #define CONFIG_CROND 1 #define ENABLE_CROND 1 -#define IF_CROND(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CROND(...) __VA_ARGS__ "CONFIG_CROND" +#else +# define IF_CROND(...) __VA_ARGS__ +#endif #define IF_NOT_CROND(...) #undef CONFIG_FEATURE_CROND_D #define ENABLE_FEATURE_CROND_D 0 @@ -2370,19 +3758,35 @@ #define IF_NOT_FEATURE_CROND_CALL_SENDMAIL(...) __VA_ARGS__ #define CONFIG_FEATURE_CROND_DIR "/system/etc/cron.d" #define ENABLE_FEATURE_CROND_DIR 1 -#define IF_FEATURE_CROND_DIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CROND_DIR(...) __VA_ARGS__ "CONFIG_FEATURE_CROND_DIR" +#else +# define IF_FEATURE_CROND_DIR(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CROND_DIR(...) #define CONFIG_CRONTAB 1 #define ENABLE_CRONTAB 1 -#define IF_CRONTAB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CRONTAB(...) __VA_ARGS__ "CONFIG_CRONTAB" +#else +# define IF_CRONTAB(...) __VA_ARGS__ +#endif #define IF_NOT_CRONTAB(...) #define CONFIG_DC 1 #define ENABLE_DC 1 -#define IF_DC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DC(...) __VA_ARGS__ "CONFIG_DC" +#else +# define IF_DC(...) __VA_ARGS__ +#endif #define IF_NOT_DC(...) #define CONFIG_FEATURE_DC_LIBM 1 #define ENABLE_FEATURE_DC_LIBM 1 -#define IF_FEATURE_DC_LIBM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DC_LIBM(...) __VA_ARGS__ "CONFIG_FEATURE_DC_LIBM" +#else +# define IF_FEATURE_DC_LIBM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DC_LIBM(...) #undef CONFIG_DEVFSD #define ENABLE_DEVFSD 0 @@ -2406,7 +3810,11 @@ #define IF_NOT_FEATURE_DEVFS(...) __VA_ARGS__ #define CONFIG_DEVMEM 1 #define ENABLE_DEVMEM 1 -#define IF_DEVMEM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DEVMEM(...) __VA_ARGS__ "CONFIG_DEVMEM" +#else +# define IF_DEVMEM(...) __VA_ARGS__ +#endif #define IF_NOT_DEVMEM(...) #undef CONFIG_EJECT #define ENABLE_EJECT 0 @@ -2418,19 +3826,35 @@ #define IF_NOT_FEATURE_EJECT_SCSI(...) __VA_ARGS__ #define CONFIG_FBSPLASH 1 #define ENABLE_FBSPLASH 1 -#define IF_FBSPLASH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FBSPLASH(...) __VA_ARGS__ "CONFIG_FBSPLASH" +#else +# define IF_FBSPLASH(...) __VA_ARGS__ +#endif #define IF_NOT_FBSPLASH(...) #define CONFIG_FLASHCP 1 #define ENABLE_FLASHCP 1 -#define IF_FLASHCP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FLASHCP(...) __VA_ARGS__ "CONFIG_FLASHCP" +#else +# define IF_FLASHCP(...) __VA_ARGS__ +#endif #define IF_NOT_FLASHCP(...) #define CONFIG_FLASH_LOCK 1 #define ENABLE_FLASH_LOCK 1 -#define IF_FLASH_LOCK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FLASH_LOCK(...) __VA_ARGS__ "CONFIG_FLASH_LOCK" +#else +# define IF_FLASH_LOCK(...) __VA_ARGS__ +#endif #define IF_NOT_FLASH_LOCK(...) #define CONFIG_FLASH_UNLOCK 1 #define ENABLE_FLASH_UNLOCK 1 -#define IF_FLASH_UNLOCK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FLASH_UNLOCK(...) __VA_ARGS__ "CONFIG_FLASH_UNLOCK" +#else +# define IF_FLASH_UNLOCK(...) __VA_ARGS__ +#endif #define IF_NOT_FLASH_UNLOCK(...) #undef CONFIG_FLASH_ERASEALL #define ENABLE_FLASH_ERASEALL 0 @@ -2438,7 +3862,11 @@ #define IF_NOT_FLASH_ERASEALL(...) __VA_ARGS__ #define CONFIG_IONICE 1 #define ENABLE_IONICE 1 -#define IF_IONICE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IONICE(...) __VA_ARGS__ "CONFIG_IONICE" +#else +# define IF_IONICE(...) __VA_ARGS__ +#endif #define IF_NOT_IONICE(...) #undef CONFIG_INOTIFYD #define ENABLE_INOTIFYD 0 @@ -2498,7 +3926,11 @@ #define IF_NOT_FEATURE_MAKEDEVS_TABLE(...) __VA_ARGS__ #define CONFIG_MAN 1 #define ENABLE_MAN 1 -#define IF_MAN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MAN(...) __VA_ARGS__ "CONFIG_MAN" +#else +# define IF_MAN(...) __VA_ARGS__ +#endif #define IF_NOT_MAN(...) #undef CONFIG_MICROCOM #define ENABLE_MICROCOM 0 @@ -2506,7 +3938,11 @@ #define IF_NOT_MICROCOM(...) __VA_ARGS__ #define CONFIG_MOUNTPOINT 1 #define ENABLE_MOUNTPOINT 1 -#define IF_MOUNTPOINT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MOUNTPOINT(...) __VA_ARGS__ "CONFIG_MOUNTPOINT" +#else +# define IF_MOUNTPOINT(...) __VA_ARGS__ +#endif #define IF_NOT_MOUNTPOINT(...) #undef CONFIG_MT #define ENABLE_MT 0 @@ -2520,54 +3956,78 @@ #define ENABLE_READAHEAD 0 #define IF_READAHEAD(...) #define IF_NOT_READAHEAD(...) __VA_ARGS__ -#undef CONFIG_RFKILL -#define ENABLE_RFKILL 0 -#define IF_RFKILL(...) -#define IF_NOT_RFKILL(...) __VA_ARGS__ #undef CONFIG_RUNLEVEL #define ENABLE_RUNLEVEL 0 #define IF_RUNLEVEL(...) #define IF_NOT_RUNLEVEL(...) __VA_ARGS__ #define CONFIG_RX 1 #define ENABLE_RX 1 -#define IF_RX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RX(...) __VA_ARGS__ "CONFIG_RX" +#else +# define IF_RX(...) __VA_ARGS__ +#endif #define IF_NOT_RX(...) #define CONFIG_SETSID 1 #define ENABLE_SETSID 1 -#define IF_SETSID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SETSID(...) __VA_ARGS__ "CONFIG_SETSID" +#else +# define IF_SETSID(...) __VA_ARGS__ +#endif #define IF_NOT_SETSID(...) #define CONFIG_STRINGS 1 #define ENABLE_STRINGS 1 -#define IF_STRINGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_STRINGS(...) __VA_ARGS__ "CONFIG_STRINGS" +#else +# define IF_STRINGS(...) __VA_ARGS__ +#endif #define IF_NOT_STRINGS(...) #define CONFIG_TASKSET 1 #define ENABLE_TASKSET 1 -#define IF_TASKSET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TASKSET(...) __VA_ARGS__ "CONFIG_TASKSET" +#else +# define IF_TASKSET(...) __VA_ARGS__ +#endif #define IF_NOT_TASKSET(...) #define CONFIG_FEATURE_TASKSET_FANCY 1 #define ENABLE_FEATURE_TASKSET_FANCY 1 -#define IF_FEATURE_TASKSET_FANCY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TASKSET_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_TASKSET_FANCY" +#else +# define IF_FEATURE_TASKSET_FANCY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TASKSET_FANCY(...) #define CONFIG_TIME 1 #define ENABLE_TIME 1 -#define IF_TIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TIME(...) __VA_ARGS__ "CONFIG_TIME" +#else +# define IF_TIME(...) __VA_ARGS__ +#endif #define IF_NOT_TIME(...) #define CONFIG_TIMEOUT 1 #define ENABLE_TIMEOUT 1 -#define IF_TIMEOUT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TIMEOUT(...) __VA_ARGS__ "CONFIG_TIMEOUT" +#else +# define IF_TIMEOUT(...) __VA_ARGS__ +#endif #define IF_NOT_TIMEOUT(...) #define CONFIG_TTYSIZE 1 #define ENABLE_TTYSIZE 1 -#define IF_TTYSIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TTYSIZE(...) __VA_ARGS__ "CONFIG_TTYSIZE" +#else +# define IF_TTYSIZE(...) __VA_ARGS__ +#endif #define IF_NOT_TTYSIZE(...) #undef CONFIG_VOLNAME #define ENABLE_VOLNAME 0 #define IF_VOLNAME(...) #define IF_NOT_VOLNAME(...) __VA_ARGS__ -#undef CONFIG_WALL -#define ENABLE_WALL 0 -#define IF_WALL(...) -#define IF_NOT_WALL(...) __VA_ARGS__ #undef CONFIG_WATCHDOG #define ENABLE_WATCHDOG 0 #define IF_WATCHDOG(...) @@ -2586,19 +4046,35 @@ #define IF_NOT_FEATURE_NAMEIF_EXTENDED(...) __VA_ARGS__ #define CONFIG_NBDCLIENT 1 #define ENABLE_NBDCLIENT 1 -#define IF_NBDCLIENT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NBDCLIENT(...) __VA_ARGS__ "CONFIG_NBDCLIENT" +#else +# define IF_NBDCLIENT(...) __VA_ARGS__ +#endif #define IF_NOT_NBDCLIENT(...) #define CONFIG_NC 1 #define ENABLE_NC 1 -#define IF_NC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NC(...) __VA_ARGS__ "CONFIG_NC" +#else +# define IF_NC(...) __VA_ARGS__ +#endif #define IF_NOT_NC(...) #define CONFIG_NC_SERVER 1 #define ENABLE_NC_SERVER 1 -#define IF_NC_SERVER(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NC_SERVER(...) __VA_ARGS__ "CONFIG_NC_SERVER" +#else +# define IF_NC_SERVER(...) __VA_ARGS__ +#endif #define IF_NOT_NC_SERVER(...) #define CONFIG_NC_EXTRA 1 #define ENABLE_NC_EXTRA 1 -#define IF_NC_EXTRA(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NC_EXTRA(...) __VA_ARGS__ "CONFIG_NC_EXTRA" +#else +# define IF_NC_EXTRA(...) __VA_ARGS__ +#endif #define IF_NOT_NC_EXTRA(...) #undef CONFIG_NC_110_COMPAT #define ENABLE_NC_110_COMPAT 0 @@ -2606,7 +4082,11 @@ #define IF_NOT_NC_110_COMPAT(...) __VA_ARGS__ #define CONFIG_PING 1 #define ENABLE_PING 1 -#define IF_PING(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PING(...) __VA_ARGS__ "CONFIG_PING" +#else +# define IF_PING(...) __VA_ARGS__ +#endif #define IF_NOT_PING(...) #undef CONFIG_PING6 #define ENABLE_PING6 0 @@ -2614,7 +4094,11 @@ #define IF_NOT_PING6(...) __VA_ARGS__ #define CONFIG_FEATURE_FANCY_PING 1 #define ENABLE_FEATURE_FANCY_PING 1 -#define IF_FEATURE_FANCY_PING(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FANCY_PING(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_PING" +#else +# define IF_FEATURE_FANCY_PING(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FANCY_PING(...) #undef CONFIG_WHOIS #define ENABLE_WHOIS 0 @@ -2622,7 +4106,11 @@ #define IF_NOT_WHOIS(...) __VA_ARGS__ #define CONFIG_FEATURE_IPV6 1 #define ENABLE_FEATURE_IPV6 1 -#define IF_FEATURE_IPV6(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IPV6(...) __VA_ARGS__ "CONFIG_FEATURE_IPV6" +#else +# define IF_FEATURE_IPV6(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IPV6(...) #undef CONFIG_FEATURE_UNIX_LOCAL #define ENABLE_FEATURE_UNIX_LOCAL 0 @@ -2630,7 +4118,11 @@ #define IF_NOT_FEATURE_UNIX_LOCAL(...) __VA_ARGS__ #define CONFIG_FEATURE_PREFER_IPV4_ADDRESS 1 #define ENABLE_FEATURE_PREFER_IPV4_ADDRESS 1 -#define IF_FEATURE_PREFER_IPV4_ADDRESS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PREFER_IPV4_ADDRESS(...) __VA_ARGS__ "CONFIG_FEATURE_PREFER_IPV4_ADDRESS" +#else +# define IF_FEATURE_PREFER_IPV4_ADDRESS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PREFER_IPV4_ADDRESS(...) #undef CONFIG_VERBOSE_RESOLUTION_ERRORS #define ENABLE_VERBOSE_RESOLUTION_ERRORS 0 @@ -2638,7 +4130,11 @@ #define IF_NOT_VERBOSE_RESOLUTION_ERRORS(...) __VA_ARGS__ #define CONFIG_ARP 1 #define ENABLE_ARP 1 -#define IF_ARP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ARP(...) __VA_ARGS__ "CONFIG_ARP" +#else +# define IF_ARP(...) __VA_ARGS__ +#endif #define IF_NOT_ARP(...) #undef CONFIG_ARPING #define ENABLE_ARPING 0 @@ -2646,19 +4142,35 @@ #define IF_NOT_ARPING(...) __VA_ARGS__ #define CONFIG_BRCTL 1 #define ENABLE_BRCTL 1 -#define IF_BRCTL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BRCTL(...) __VA_ARGS__ "CONFIG_BRCTL" +#else +# define IF_BRCTL(...) __VA_ARGS__ +#endif #define IF_NOT_BRCTL(...) #define CONFIG_FEATURE_BRCTL_FANCY 1 #define ENABLE_FEATURE_BRCTL_FANCY 1 -#define IF_FEATURE_BRCTL_FANCY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BRCTL_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_BRCTL_FANCY" +#else +# define IF_FEATURE_BRCTL_FANCY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BRCTL_FANCY(...) #define CONFIG_FEATURE_BRCTL_SHOW 1 #define ENABLE_FEATURE_BRCTL_SHOW 1 -#define IF_FEATURE_BRCTL_SHOW(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BRCTL_SHOW(...) __VA_ARGS__ "CONFIG_FEATURE_BRCTL_SHOW" +#else +# define IF_FEATURE_BRCTL_SHOW(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BRCTL_SHOW(...) #define CONFIG_DNSD 1 #define ENABLE_DNSD 1 -#define IF_DNSD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DNSD(...) __VA_ARGS__ "CONFIG_DNSD" +#else +# define IF_DNSD(...) __VA_ARGS__ +#endif #define IF_NOT_DNSD(...) #undef CONFIG_ETHER_WAKE #define ENABLE_ETHER_WAKE 0 @@ -2682,15 +4194,27 @@ #define IF_NOT_FEATURE_FTPD_ACCEPT_BROKEN_LIST(...) __VA_ARGS__ #define CONFIG_FTPGET 1 #define ENABLE_FTPGET 1 -#define IF_FTPGET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FTPGET(...) __VA_ARGS__ "CONFIG_FTPGET" +#else +# define IF_FTPGET(...) __VA_ARGS__ +#endif #define IF_NOT_FTPGET(...) #define CONFIG_FTPPUT 1 #define ENABLE_FTPPUT 1 -#define IF_FTPPUT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FTPPUT(...) __VA_ARGS__ "CONFIG_FTPPUT" +#else +# define IF_FTPPUT(...) __VA_ARGS__ +#endif #define IF_NOT_FTPPUT(...) #define CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS 1 #define ENABLE_FEATURE_FTPGETPUT_LONG_OPTIONS 1 -#define IF_FEATURE_FTPGETPUT_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FTPGETPUT_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS" +#else +# define IF_FEATURE_FTPGETPUT_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FTPGETPUT_LONG_OPTIONS(...) #undef CONFIG_HOSTNAME #define ENABLE_HOSTNAME 0 @@ -2750,11 +4274,19 @@ #define IF_NOT_FEATURE_HTTPD_GZIP(...) __VA_ARGS__ #define CONFIG_IFCONFIG 1 #define ENABLE_IFCONFIG 1 -#define IF_IFCONFIG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IFCONFIG(...) __VA_ARGS__ "CONFIG_IFCONFIG" +#else +# define IF_IFCONFIG(...) __VA_ARGS__ +#endif #define IF_NOT_IFCONFIG(...) #define CONFIG_FEATURE_IFCONFIG_STATUS 1 #define ENABLE_FEATURE_IFCONFIG_STATUS 1 -#define IF_FEATURE_IFCONFIG_STATUS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IFCONFIG_STATUS(...) __VA_ARGS__ "CONFIG_FEATURE_IFCONFIG_STATUS" +#else +# define IF_FEATURE_IFCONFIG_STATUS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IFCONFIG_STATUS(...) #undef CONFIG_FEATURE_IFCONFIG_SLIP #define ENABLE_FEATURE_IFCONFIG_SLIP 0 @@ -2766,7 +4298,11 @@ #define IF_NOT_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ(...) __VA_ARGS__ #define CONFIG_FEATURE_IFCONFIG_HW 1 #define ENABLE_FEATURE_IFCONFIG_HW 1 -#define IF_FEATURE_IFCONFIG_HW(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IFCONFIG_HW(...) __VA_ARGS__ "CONFIG_FEATURE_IFCONFIG_HW" +#else +# define IF_FEATURE_IFCONFIG_HW(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IFCONFIG_HW(...) #undef CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS #define ENABLE_FEATURE_IFCONFIG_BROADCAST_PLUS 0 @@ -2786,7 +4322,11 @@ #define IF_NOT_IFUPDOWN(...) __VA_ARGS__ #define CONFIG_IFUPDOWN_IFSTATE_PATH "" #define ENABLE_IFUPDOWN_IFSTATE_PATH 1 -#define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__ "CONFIG_IFUPDOWN_IFSTATE_PATH" +#else +# define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_IFUPDOWN_IFSTATE_PATH(...) #undef CONFIG_FEATURE_IFUPDOWN_IP #define ENABLE_FEATURE_IFUPDOWN_IP 0 @@ -2818,11 +4358,19 @@ #define IF_NOT_FEATURE_IFUPDOWN_EXTERNAL_DHCP(...) __VA_ARGS__ #define CONFIG_INETD 1 #define ENABLE_INETD 1 -#define IF_INETD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INETD(...) __VA_ARGS__ "CONFIG_INETD" +#else +# define IF_INETD(...) __VA_ARGS__ +#endif #define IF_NOT_INETD(...) #define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO 1 #define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_ECHO 1 -#define IF_FEATURE_INETD_SUPPORT_BUILTIN_ECHO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_INETD_SUPPORT_BUILTIN_ECHO(...) __VA_ARGS__ "CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO" +#else +# define IF_FEATURE_INETD_SUPPORT_BUILTIN_ECHO(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_INETD_SUPPORT_BUILTIN_ECHO(...) #undef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD #define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD 0 @@ -2830,11 +4378,19 @@ #define IF_NOT_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD(...) __VA_ARGS__ #define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME 1 #define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_TIME 1 -#define IF_FEATURE_INETD_SUPPORT_BUILTIN_TIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_INETD_SUPPORT_BUILTIN_TIME(...) __VA_ARGS__ "CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME" +#else +# define IF_FEATURE_INETD_SUPPORT_BUILTIN_TIME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_INETD_SUPPORT_BUILTIN_TIME(...) #define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME 1 #define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME 1 -#define IF_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME(...) __VA_ARGS__ "CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME" +#else +# define IF_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME(...) #undef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN #define ENABLE_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN 0 @@ -2846,19 +4402,35 @@ #define IF_NOT_FEATURE_INETD_RPC(...) __VA_ARGS__ #define CONFIG_IP 1 #define ENABLE_IP 1 -#define IF_IP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IP(...) __VA_ARGS__ "CONFIG_IP" +#else +# define IF_IP(...) __VA_ARGS__ +#endif #define IF_NOT_IP(...) #define CONFIG_FEATURE_IP_ADDRESS 1 #define ENABLE_FEATURE_IP_ADDRESS 1 -#define IF_FEATURE_IP_ADDRESS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IP_ADDRESS(...) __VA_ARGS__ "CONFIG_FEATURE_IP_ADDRESS" +#else +# define IF_FEATURE_IP_ADDRESS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IP_ADDRESS(...) #define CONFIG_FEATURE_IP_LINK 1 #define ENABLE_FEATURE_IP_LINK 1 -#define IF_FEATURE_IP_LINK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IP_LINK(...) __VA_ARGS__ "CONFIG_FEATURE_IP_LINK" +#else +# define IF_FEATURE_IP_LINK(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IP_LINK(...) #define CONFIG_FEATURE_IP_ROUTE 1 #define ENABLE_FEATURE_IP_ROUTE 1 -#define IF_FEATURE_IP_ROUTE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IP_ROUTE(...) __VA_ARGS__ "CONFIG_FEATURE_IP_ROUTE" +#else +# define IF_FEATURE_IP_ROUTE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IP_ROUTE(...) #undef CONFIG_FEATURE_IP_TUNNEL #define ENABLE_FEATURE_IP_TUNNEL 0 @@ -2866,7 +4438,11 @@ #define IF_NOT_FEATURE_IP_TUNNEL(...) __VA_ARGS__ #define CONFIG_FEATURE_IP_RULE 1 #define ENABLE_FEATURE_IP_RULE 1 -#define IF_FEATURE_IP_RULE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IP_RULE(...) __VA_ARGS__ "CONFIG_FEATURE_IP_RULE" +#else +# define IF_FEATURE_IP_RULE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IP_RULE(...) #undef CONFIG_FEATURE_IP_SHORT_FORMS #define ENABLE_FEATURE_IP_SHORT_FORMS 0 @@ -2910,23 +4486,43 @@ #define IF_NOT_FEATURE_IPCALC_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_NETSTAT 1 #define ENABLE_NETSTAT 1 -#define IF_NETSTAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NETSTAT(...) __VA_ARGS__ "CONFIG_NETSTAT" +#else +# define IF_NETSTAT(...) __VA_ARGS__ +#endif #define IF_NOT_NETSTAT(...) #define CONFIG_FEATURE_NETSTAT_WIDE 1 #define ENABLE_FEATURE_NETSTAT_WIDE 1 -#define IF_FEATURE_NETSTAT_WIDE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_NETSTAT_WIDE(...) __VA_ARGS__ "CONFIG_FEATURE_NETSTAT_WIDE" +#else +# define IF_FEATURE_NETSTAT_WIDE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_NETSTAT_WIDE(...) #define CONFIG_FEATURE_NETSTAT_PRG 1 #define ENABLE_FEATURE_NETSTAT_PRG 1 -#define IF_FEATURE_NETSTAT_PRG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_NETSTAT_PRG(...) __VA_ARGS__ "CONFIG_FEATURE_NETSTAT_PRG" +#else +# define IF_FEATURE_NETSTAT_PRG(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_NETSTAT_PRG(...) #define CONFIG_NSLOOKUP 1 #define ENABLE_NSLOOKUP 1 -#define IF_NSLOOKUP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NSLOOKUP(...) __VA_ARGS__ "CONFIG_NSLOOKUP" +#else +# define IF_NSLOOKUP(...) __VA_ARGS__ +#endif #define IF_NOT_NSLOOKUP(...) #define CONFIG_NTPD 1 #define ENABLE_NTPD 1 -#define IF_NTPD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NTPD(...) __VA_ARGS__ "CONFIG_NTPD" +#else +# define IF_NTPD(...) __VA_ARGS__ +#endif #define IF_NOT_NTPD(...) #undef CONFIG_FEATURE_NTPD_SERVER #define ENABLE_FEATURE_NTPD_SERVER 0 @@ -2938,7 +4534,11 @@ #define IF_NOT_PSCAN(...) __VA_ARGS__ #define CONFIG_ROUTE 1 #define ENABLE_ROUTE 1 -#define IF_ROUTE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ROUTE(...) __VA_ARGS__ "CONFIG_ROUTE" +#else +# define IF_ROUTE(...) __VA_ARGS__ +#endif #define IF_NOT_ROUTE(...) #undef CONFIG_SLATTACH #define ENABLE_SLATTACH 0 @@ -2950,11 +4550,19 @@ #define IF_NOT_TCPSVD(...) __VA_ARGS__ #define CONFIG_TELNET 1 #define ENABLE_TELNET 1 -#define IF_TELNET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TELNET(...) __VA_ARGS__ "CONFIG_TELNET" +#else +# define IF_TELNET(...) __VA_ARGS__ +#endif #define IF_NOT_TELNET(...) #define CONFIG_FEATURE_TELNET_TTYPE 1 #define ENABLE_FEATURE_TELNET_TTYPE 1 -#define IF_FEATURE_TELNET_TTYPE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TELNET_TTYPE(...) __VA_ARGS__ "CONFIG_FEATURE_TELNET_TTYPE" +#else +# define IF_FEATURE_TELNET_TTYPE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TELNET_TTYPE(...) #undef CONFIG_FEATURE_TELNET_AUTOLOGIN #define ENABLE_FEATURE_TELNET_AUTOLOGIN 0 @@ -2962,23 +4570,43 @@ #define IF_NOT_FEATURE_TELNET_AUTOLOGIN(...) __VA_ARGS__ #define CONFIG_TELNETD 1 #define ENABLE_TELNETD 1 -#define IF_TELNETD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TELNETD(...) __VA_ARGS__ "CONFIG_TELNETD" +#else +# define IF_TELNETD(...) __VA_ARGS__ +#endif #define IF_NOT_TELNETD(...) #define CONFIG_FEATURE_TELNETD_STANDALONE 1 #define ENABLE_FEATURE_TELNETD_STANDALONE 1 -#define IF_FEATURE_TELNETD_STANDALONE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TELNETD_STANDALONE(...) __VA_ARGS__ "CONFIG_FEATURE_TELNETD_STANDALONE" +#else +# define IF_FEATURE_TELNETD_STANDALONE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TELNETD_STANDALONE(...) #define CONFIG_FEATURE_TELNETD_INETD_WAIT 1 #define ENABLE_FEATURE_TELNETD_INETD_WAIT 1 -#define IF_FEATURE_TELNETD_INETD_WAIT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TELNETD_INETD_WAIT(...) __VA_ARGS__ "CONFIG_FEATURE_TELNETD_INETD_WAIT" +#else +# define IF_FEATURE_TELNETD_INETD_WAIT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TELNETD_INETD_WAIT(...) #define CONFIG_TFTP 1 #define ENABLE_TFTP 1 -#define IF_TFTP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TFTP(...) __VA_ARGS__ "CONFIG_TFTP" +#else +# define IF_TFTP(...) __VA_ARGS__ +#endif #define IF_NOT_TFTP(...) #define CONFIG_TFTPD 1 #define ENABLE_TFTPD 1 -#define IF_TFTPD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TFTPD(...) __VA_ARGS__ "CONFIG_TFTPD" +#else +# define IF_TFTPD(...) __VA_ARGS__ +#endif #define IF_NOT_TFTPD(...) /* @@ -2986,11 +4614,19 @@ */ #define CONFIG_FEATURE_TFTP_GET 1 #define ENABLE_FEATURE_TFTP_GET 1 -#define IF_FEATURE_TFTP_GET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TFTP_GET(...) __VA_ARGS__ "CONFIG_FEATURE_TFTP_GET" +#else +# define IF_FEATURE_TFTP_GET(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TFTP_GET(...) #define CONFIG_FEATURE_TFTP_PUT 1 #define ENABLE_FEATURE_TFTP_PUT 1 -#define IF_FEATURE_TFTP_PUT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TFTP_PUT(...) __VA_ARGS__ "CONFIG_FEATURE_TFTP_PUT" +#else +# define IF_FEATURE_TFTP_PUT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TFTP_PUT(...) #undef CONFIG_FEATURE_TFTP_BLOCKSIZE #define ENABLE_FEATURE_TFTP_BLOCKSIZE 0 @@ -3006,7 +4642,11 @@ #define IF_NOT_TFTP_DEBUG(...) __VA_ARGS__ #define CONFIG_TRACEROUTE 1 #define ENABLE_TRACEROUTE 1 -#define IF_TRACEROUTE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TRACEROUTE(...) __VA_ARGS__ "CONFIG_TRACEROUTE" +#else +# define IF_TRACEROUTE(...) __VA_ARGS__ +#endif #define IF_NOT_TRACEROUTE(...) #undef CONFIG_TRACEROUTE6 #define ENABLE_TRACEROUTE6 0 @@ -3014,7 +4654,11 @@ #define IF_NOT_TRACEROUTE6(...) __VA_ARGS__ #define CONFIG_FEATURE_TRACEROUTE_VERBOSE 1 #define ENABLE_FEATURE_TRACEROUTE_VERBOSE 1 -#define IF_FEATURE_TRACEROUTE_VERBOSE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TRACEROUTE_VERBOSE(...) __VA_ARGS__ "CONFIG_FEATURE_TRACEROUTE_VERBOSE" +#else +# define IF_FEATURE_TRACEROUTE_VERBOSE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TRACEROUTE_VERBOSE(...) #undef CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE #define ENABLE_FEATURE_TRACEROUTE_SOURCE_ROUTE 0 @@ -3058,7 +4702,11 @@ #define IF_NOT_FEATURE_UDHCPD_BASE_IP_ON_MAC(...) __VA_ARGS__ #define CONFIG_DHCPD_LEASES_FILE "" #define ENABLE_DHCPD_LEASES_FILE 1 -#define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__ "CONFIG_DHCPD_LEASES_FILE" +#else +# define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__ +#endif #define IF_NOT_DHCPD_LEASES_FILE(...) #undef CONFIG_UDHCPC #define ENABLE_UDHCPC 0 @@ -3074,7 +4722,11 @@ #define IF_NOT_FEATURE_UDHCP_PORT(...) __VA_ARGS__ #define CONFIG_UDHCP_DEBUG 0 #define ENABLE_UDHCP_DEBUG 1 -#define IF_UDHCP_DEBUG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UDHCP_DEBUG(...) __VA_ARGS__ "CONFIG_UDHCP_DEBUG" +#else +# define IF_UDHCP_DEBUG(...) __VA_ARGS__ +#endif #define IF_NOT_UDHCP_DEBUG(...) #undef CONFIG_FEATURE_UDHCP_RFC3397 #define ENABLE_FEATURE_UDHCP_RFC3397 0 @@ -3086,15 +4738,27 @@ #define IF_NOT_FEATURE_UDHCP_8021Q(...) __VA_ARGS__ #define CONFIG_UDHCPC_DEFAULT_SCRIPT "" #define ENABLE_UDHCPC_DEFAULT_SCRIPT 1 -#define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__ "CONFIG_UDHCPC_DEFAULT_SCRIPT" +#else +# define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__ +#endif #define IF_NOT_UDHCPC_DEFAULT_SCRIPT(...) #define CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS 0 #define ENABLE_UDHCPC_SLACK_FOR_BUGGY_SERVERS 1 -#define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__ "CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS" +#else +# define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__ +#endif #define IF_NOT_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) #define CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS "" #define ENABLE_IFUPDOWN_UDHCPC_CMD_OPTIONS 1 -#define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__ "CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS" +#else +# define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) #undef CONFIG_UDPSVD #define ENABLE_UDPSVD 0 @@ -3106,23 +4770,43 @@ #define IF_NOT_VCONFIG(...) __VA_ARGS__ #define CONFIG_WGET 1 #define ENABLE_WGET 1 -#define IF_WGET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WGET(...) __VA_ARGS__ "CONFIG_WGET" +#else +# define IF_WGET(...) __VA_ARGS__ +#endif #define IF_NOT_WGET(...) #define CONFIG_FEATURE_WGET_STATUSBAR 1 #define ENABLE_FEATURE_WGET_STATUSBAR 1 -#define IF_FEATURE_WGET_STATUSBAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_WGET_STATUSBAR(...) __VA_ARGS__ "CONFIG_FEATURE_WGET_STATUSBAR" +#else +# define IF_FEATURE_WGET_STATUSBAR(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_WGET_STATUSBAR(...) #define CONFIG_FEATURE_WGET_AUTHENTICATION 1 #define ENABLE_FEATURE_WGET_AUTHENTICATION 1 -#define IF_FEATURE_WGET_AUTHENTICATION(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_WGET_AUTHENTICATION(...) __VA_ARGS__ "CONFIG_FEATURE_WGET_AUTHENTICATION" +#else +# define IF_FEATURE_WGET_AUTHENTICATION(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_WGET_AUTHENTICATION(...) #define CONFIG_FEATURE_WGET_LONG_OPTIONS 1 #define ENABLE_FEATURE_WGET_LONG_OPTIONS 1 -#define IF_FEATURE_WGET_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_WGET_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_WGET_LONG_OPTIONS" +#else +# define IF_FEATURE_WGET_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_WGET_LONG_OPTIONS(...) #define CONFIG_FEATURE_WGET_TIMEOUT 1 #define ENABLE_FEATURE_WGET_TIMEOUT 1 -#define IF_FEATURE_WGET_TIMEOUT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_WGET_TIMEOUT(...) __VA_ARGS__ "CONFIG_FEATURE_WGET_TIMEOUT" +#else +# define IF_FEATURE_WGET_TIMEOUT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_WGET_TIMEOUT(...) #undef CONFIG_ZCIP #define ENABLE_ZCIP 0 @@ -3154,7 +4838,11 @@ #define IF_NOT_MAKEMIME(...) __VA_ARGS__ #define CONFIG_FEATURE_MIME_CHARSET "" #define ENABLE_FEATURE_MIME_CHARSET 1 -#define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__ "CONFIG_FEATURE_MIME_CHARSET" +#else +# define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MIME_CHARSET(...) #undef CONFIG_POPMAILDIR #define ENABLE_POPMAILDIR 0 @@ -3182,15 +4870,27 @@ */ #define CONFIG_IOSTAT 1 #define ENABLE_IOSTAT 1 -#define IF_IOSTAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IOSTAT(...) __VA_ARGS__ "CONFIG_IOSTAT" +#else +# define IF_IOSTAT(...) __VA_ARGS__ +#endif #define IF_NOT_IOSTAT(...) #define CONFIG_LSOF 1 #define ENABLE_LSOF 1 -#define IF_LSOF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LSOF(...) __VA_ARGS__ "CONFIG_LSOF" +#else +# define IF_LSOF(...) __VA_ARGS__ +#endif #define IF_NOT_LSOF(...) #define CONFIG_MPSTAT 1 #define ENABLE_MPSTAT 1 -#define IF_MPSTAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MPSTAT(...) __VA_ARGS__ "CONFIG_MPSTAT" +#else +# define IF_MPSTAT(...) __VA_ARGS__ +#endif #define IF_NOT_MPSTAT(...) #undef CONFIG_NMETER #define ENABLE_NMETER 0 @@ -3198,7 +4898,11 @@ #define IF_NOT_NMETER(...) __VA_ARGS__ #define CONFIG_PMAP 1 #define ENABLE_PMAP 1 -#define IF_PMAP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PMAP(...) __VA_ARGS__ "CONFIG_PMAP" +#else +# define IF_PMAP(...) __VA_ARGS__ +#endif #define IF_NOT_PMAP(...) #undef CONFIG_POWERTOP #define ENABLE_POWERTOP 0 @@ -3206,11 +4910,19 @@ #define IF_NOT_POWERTOP(...) __VA_ARGS__ #define CONFIG_PSTREE 1 #define ENABLE_PSTREE 1 -#define IF_PSTREE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PSTREE(...) __VA_ARGS__ "CONFIG_PSTREE" +#else +# define IF_PSTREE(...) __VA_ARGS__ +#endif #define IF_NOT_PSTREE(...) #define CONFIG_PWDX 1 #define ENABLE_PWDX 1 -#define IF_PWDX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PWDX(...) __VA_ARGS__ "CONFIG_PWDX" +#else +# define IF_PWDX(...) __VA_ARGS__ +#endif #define IF_NOT_PWDX(...) #undef CONFIG_SMEMCAP #define ENABLE_SMEMCAP 0 @@ -3218,23 +4930,43 @@ #define IF_NOT_SMEMCAP(...) __VA_ARGS__ #define CONFIG_TOP 1 #define ENABLE_TOP 1 -#define IF_TOP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TOP(...) __VA_ARGS__ "CONFIG_TOP" +#else +# define IF_TOP(...) __VA_ARGS__ +#endif #define IF_NOT_TOP(...) #define CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE 1 #define ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE 1 -#define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE" +#else +# define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) #define CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS 1 #define ENABLE_FEATURE_TOP_CPU_GLOBAL_PERCENTS 1 -#define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS" +#else +# define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) #define CONFIG_FEATURE_TOP_SMP_CPU 1 #define ENABLE_FEATURE_TOP_SMP_CPU 1 -#define IF_FEATURE_TOP_SMP_CPU(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOP_SMP_CPU(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_SMP_CPU" +#else +# define IF_FEATURE_TOP_SMP_CPU(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOP_SMP_CPU(...) #define CONFIG_FEATURE_TOP_DECIMALS 1 #define ENABLE_FEATURE_TOP_DECIMALS 1 -#define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_DECIMALS" +#else +# define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOP_DECIMALS(...) #undef CONFIG_FEATURE_TOP_SMP_PROCESS #define ENABLE_FEATURE_TOP_SMP_PROCESS 0 @@ -3242,11 +4974,19 @@ #define IF_NOT_FEATURE_TOP_SMP_PROCESS(...) __VA_ARGS__ #define CONFIG_FEATURE_TOPMEM 1 #define ENABLE_FEATURE_TOPMEM 1 -#define IF_FEATURE_TOPMEM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOPMEM(...) __VA_ARGS__ "CONFIG_FEATURE_TOPMEM" +#else +# define IF_FEATURE_TOPMEM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOPMEM(...) #define CONFIG_UPTIME 1 #define ENABLE_UPTIME 1 -#define IF_UPTIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UPTIME(...) __VA_ARGS__ "CONFIG_UPTIME" +#else +# define IF_UPTIME(...) __VA_ARGS__ +#endif #define IF_NOT_UPTIME(...) #undef CONFIG_FEATURE_UPTIME_UTMP_SUPPORT #define ENABLE_FEATURE_UPTIME_UTMP_SUPPORT 0 @@ -3254,55 +4994,107 @@ #define IF_NOT_FEATURE_UPTIME_UTMP_SUPPORT(...) __VA_ARGS__ #define CONFIG_FREE 1 #define ENABLE_FREE 1 -#define IF_FREE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FREE(...) __VA_ARGS__ "CONFIG_FREE" +#else +# define IF_FREE(...) __VA_ARGS__ +#endif #define IF_NOT_FREE(...) #define CONFIG_FUSER 1 #define ENABLE_FUSER 1 -#define IF_FUSER(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FUSER(...) __VA_ARGS__ "CONFIG_FUSER" +#else +# define IF_FUSER(...) __VA_ARGS__ +#endif #define IF_NOT_FUSER(...) #define CONFIG_KILL 1 #define ENABLE_KILL 1 -#define IF_KILL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_KILL(...) __VA_ARGS__ "CONFIG_KILL" +#else +# define IF_KILL(...) __VA_ARGS__ +#endif #define IF_NOT_KILL(...) #define CONFIG_KILLALL 1 #define ENABLE_KILLALL 1 -#define IF_KILLALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_KILLALL(...) __VA_ARGS__ "CONFIG_KILLALL" +#else +# define IF_KILLALL(...) __VA_ARGS__ +#endif #define IF_NOT_KILLALL(...) #define CONFIG_KILLALL5 1 #define ENABLE_KILLALL5 1 -#define IF_KILLALL5(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_KILLALL5(...) __VA_ARGS__ "CONFIG_KILLALL5" +#else +# define IF_KILLALL5(...) __VA_ARGS__ +#endif #define IF_NOT_KILLALL5(...) #define CONFIG_PGREP 1 #define ENABLE_PGREP 1 -#define IF_PGREP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PGREP(...) __VA_ARGS__ "CONFIG_PGREP" +#else +# define IF_PGREP(...) __VA_ARGS__ +#endif #define IF_NOT_PGREP(...) #define CONFIG_PIDOF 1 #define ENABLE_PIDOF 1 -#define IF_PIDOF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PIDOF(...) __VA_ARGS__ "CONFIG_PIDOF" +#else +# define IF_PIDOF(...) __VA_ARGS__ +#endif #define IF_NOT_PIDOF(...) #define CONFIG_FEATURE_PIDOF_SINGLE 1 #define ENABLE_FEATURE_PIDOF_SINGLE 1 -#define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__ "CONFIG_FEATURE_PIDOF_SINGLE" +#else +# define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PIDOF_SINGLE(...) #define CONFIG_FEATURE_PIDOF_OMIT 1 #define ENABLE_FEATURE_PIDOF_OMIT 1 -#define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__ "CONFIG_FEATURE_PIDOF_OMIT" +#else +# define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PIDOF_OMIT(...) #define CONFIG_PKILL 1 #define ENABLE_PKILL 1 -#define IF_PKILL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PKILL(...) __VA_ARGS__ "CONFIG_PKILL" +#else +# define IF_PKILL(...) __VA_ARGS__ +#endif #define IF_NOT_PKILL(...) #define CONFIG_PS 1 #define ENABLE_PS 1 -#define IF_PS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PS(...) __VA_ARGS__ "CONFIG_PS" +#else +# define IF_PS(...) __VA_ARGS__ +#endif #define IF_NOT_PS(...) #define CONFIG_FEATURE_PS_WIDE 1 #define ENABLE_FEATURE_PS_WIDE 1 -#define IF_FEATURE_PS_WIDE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PS_WIDE(...) __VA_ARGS__ "CONFIG_FEATURE_PS_WIDE" +#else +# define IF_FEATURE_PS_WIDE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PS_WIDE(...) #define CONFIG_FEATURE_PS_LONG 1 #define ENABLE_FEATURE_PS_LONG 1 -#define IF_FEATURE_PS_LONG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PS_LONG(...) __VA_ARGS__ "CONFIG_FEATURE_PS_LONG" +#else +# define IF_FEATURE_PS_LONG(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PS_LONG(...) #undef CONFIG_FEATURE_PS_TIME #define ENABLE_FEATURE_PS_TIME 0 @@ -3318,19 +5110,35 @@ #define IF_NOT_FEATURE_PS_UNUSUAL_SYSTEMS(...) __VA_ARGS__ #define CONFIG_RENICE 1 #define ENABLE_RENICE 1 -#define IF_RENICE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RENICE(...) __VA_ARGS__ "CONFIG_RENICE" +#else +# define IF_RENICE(...) __VA_ARGS__ +#endif #define IF_NOT_RENICE(...) #define CONFIG_BB_SYSCTL 1 #define ENABLE_BB_SYSCTL 1 -#define IF_BB_SYSCTL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BB_SYSCTL(...) __VA_ARGS__ "CONFIG_BB_SYSCTL" +#else +# define IF_BB_SYSCTL(...) __VA_ARGS__ +#endif #define IF_NOT_BB_SYSCTL(...) #define CONFIG_FEATURE_SHOW_THREADS 1 #define ENABLE_FEATURE_SHOW_THREADS 1 -#define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__ "CONFIG_FEATURE_SHOW_THREADS" +#else +# define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SHOW_THREADS(...) #define CONFIG_WATCH 1 #define ENABLE_WATCH 1 -#define IF_WATCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WATCH(...) __VA_ARGS__ "CONFIG_WATCH" +#else +# define IF_WATCH(...) __VA_ARGS__ +#endif #define IF_NOT_WATCH(...) /* @@ -3354,7 +5162,11 @@ #define IF_NOT_SV(...) __VA_ARGS__ #define CONFIG_SV_DEFAULT_SERVICE_DIR "" #define ENABLE_SV_DEFAULT_SERVICE_DIR 1 -#define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__ "CONFIG_SV_DEFAULT_SERVICE_DIR" +#else +# define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__ +#endif #define IF_NOT_SV_DEFAULT_SERVICE_DIR(...) #undef CONFIG_SVLOGD #define ENABLE_SVLOGD 0 @@ -3446,11 +5258,19 @@ */ #define CONFIG_ASH 1 #define ENABLE_ASH 1 -#define IF_ASH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH(...) __VA_ARGS__ "CONFIG_ASH" +#else +# define IF_ASH(...) __VA_ARGS__ +#endif #define IF_NOT_ASH(...) #define CONFIG_ASH_BASH_COMPAT 1 #define ENABLE_ASH_BASH_COMPAT 1 -#define IF_ASH_BASH_COMPAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_BASH_COMPAT(...) __VA_ARGS__ "CONFIG_ASH_BASH_COMPAT" +#else +# define IF_ASH_BASH_COMPAT(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_BASH_COMPAT(...) #undef CONFIG_ASH_IDLE_TIMEOUT #define ENABLE_ASH_IDLE_TIMEOUT 0 @@ -3458,11 +5278,19 @@ #define IF_NOT_ASH_IDLE_TIMEOUT(...) __VA_ARGS__ #define CONFIG_ASH_JOB_CONTROL 1 #define ENABLE_ASH_JOB_CONTROL 1 -#define IF_ASH_JOB_CONTROL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_JOB_CONTROL(...) __VA_ARGS__ "CONFIG_ASH_JOB_CONTROL" +#else +# define IF_ASH_JOB_CONTROL(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_JOB_CONTROL(...) #define CONFIG_ASH_ALIAS 1 #define ENABLE_ASH_ALIAS 1 -#define IF_ASH_ALIAS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_ALIAS(...) __VA_ARGS__ "CONFIG_ASH_ALIAS" +#else +# define IF_ASH_ALIAS(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_ALIAS(...) #undef CONFIG_ASH_GETOPTS #define ENABLE_ASH_GETOPTS 0 @@ -3470,19 +5298,35 @@ #define IF_NOT_ASH_GETOPTS(...) __VA_ARGS__ #define CONFIG_ASH_BUILTIN_ECHO 1 #define ENABLE_ASH_BUILTIN_ECHO 1 -#define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_ECHO" +#else +# define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_BUILTIN_ECHO(...) #define CONFIG_ASH_BUILTIN_PRINTF 1 #define ENABLE_ASH_BUILTIN_PRINTF 1 -#define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_PRINTF" +#else +# define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_BUILTIN_PRINTF(...) #define CONFIG_ASH_BUILTIN_TEST 1 #define ENABLE_ASH_BUILTIN_TEST 1 -#define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_TEST" +#else +# define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_BUILTIN_TEST(...) #define CONFIG_ASH_CMDCMD 1 #define ENABLE_ASH_CMDCMD 1 -#define IF_ASH_CMDCMD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_CMDCMD(...) __VA_ARGS__ "CONFIG_ASH_CMDCMD" +#else +# define IF_ASH_CMDCMD(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_CMDCMD(...) #undef CONFIG_ASH_MAIL #define ENABLE_ASH_MAIL 0 @@ -3490,15 +5334,27 @@ #define IF_NOT_ASH_MAIL(...) __VA_ARGS__ #define CONFIG_ASH_OPTIMIZE_FOR_SIZE 1 #define ENABLE_ASH_OPTIMIZE_FOR_SIZE 1 -#define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__ "CONFIG_ASH_OPTIMIZE_FOR_SIZE" +#else +# define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_OPTIMIZE_FOR_SIZE(...) #define CONFIG_ASH_RANDOM_SUPPORT 1 #define ENABLE_ASH_RANDOM_SUPPORT 1 -#define IF_ASH_RANDOM_SUPPORT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_RANDOM_SUPPORT(...) __VA_ARGS__ "CONFIG_ASH_RANDOM_SUPPORT" +#else +# define IF_ASH_RANDOM_SUPPORT(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_RANDOM_SUPPORT(...) #define CONFIG_ASH_EXPAND_PRMT 1 #define ENABLE_ASH_EXPAND_PRMT 1 -#define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__ "CONFIG_ASH_EXPAND_PRMT" +#else +# define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_EXPAND_PRMT(...) #undef CONFIG_CTTYHACK #define ENABLE_CTTYHACK 0 @@ -3574,7 +5430,11 @@ #define IF_NOT_MSH(...) __VA_ARGS__ #define CONFIG_FEATURE_SH_IS_ASH 1 #define ENABLE_FEATURE_SH_IS_ASH 1 -#define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__ "CONFIG_FEATURE_SH_IS_ASH" +#else +# define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SH_IS_ASH(...) #undef CONFIG_FEATURE_SH_IS_HUSH #define ENABLE_FEATURE_SH_IS_HUSH 0 @@ -3594,19 +5454,35 @@ #define IF_NOT_FEATURE_BASH_IS_HUSH(...) __VA_ARGS__ #define CONFIG_FEATURE_BASH_IS_NONE 1 #define ENABLE_FEATURE_BASH_IS_NONE 1 -#define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__ "CONFIG_FEATURE_BASH_IS_NONE" +#else +# define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BASH_IS_NONE(...) #define CONFIG_SH_MATH_SUPPORT 1 #define ENABLE_SH_MATH_SUPPORT 1 -#define IF_SH_MATH_SUPPORT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SH_MATH_SUPPORT(...) __VA_ARGS__ "CONFIG_SH_MATH_SUPPORT" +#else +# define IF_SH_MATH_SUPPORT(...) __VA_ARGS__ +#endif #define IF_NOT_SH_MATH_SUPPORT(...) #define CONFIG_SH_MATH_SUPPORT_64 1 #define ENABLE_SH_MATH_SUPPORT_64 1 -#define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__ "CONFIG_SH_MATH_SUPPORT_64" +#else +# define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__ +#endif #define IF_NOT_SH_MATH_SUPPORT_64(...) #define CONFIG_FEATURE_SH_EXTRA_QUIET 1 #define ENABLE_FEATURE_SH_EXTRA_QUIET 1 -#define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__ "CONFIG_FEATURE_SH_EXTRA_QUIET" +#else +# define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SH_EXTRA_QUIET(...) #undef CONFIG_FEATURE_SH_STANDALONE #define ENABLE_FEATURE_SH_STANDALONE 0 @@ -3646,7 +5522,11 @@ #define IF_NOT_FEATURE_SYSLOGD_CFG(...) __VA_ARGS__ #define CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE 0 #define ENABLE_FEATURE_SYSLOGD_READ_BUFFER_SIZE 1 -#define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE" +#else +# define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) #undef CONFIG_FEATURE_IPC_SYSLOG #define ENABLE_FEATURE_IPC_SYSLOG 0 @@ -3654,7 +5534,11 @@ #define IF_NOT_FEATURE_IPC_SYSLOG(...) __VA_ARGS__ #define CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE 0 #define ENABLE_FEATURE_IPC_SYSLOG_BUFFER_SIZE 1 -#define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE" +#else +# define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) #undef CONFIG_LOGREAD #define ENABLE_LOGREAD 0 diff --git a/include-full/bbconfigopts.h b/include-full/bbconfigopts.h index 82ecbfc..e77ae85 100644 --- a/include-full/bbconfigopts.h +++ b/include-full/bbconfigopts.h @@ -109,7 +109,14 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_AR is not set\n" "# CONFIG_FEATURE_AR_LONG_FILENAMES is not set\n" "# CONFIG_FEATURE_AR_CREATE is not set\n" +"CONFIG_UNCOMPRESS=y\n" +"CONFIG_GUNZIP=y\n" "CONFIG_BUNZIP2=y\n" +"CONFIG_UNLZMA=y\n" +"CONFIG_FEATURE_LZMA_FAST=y\n" +"CONFIG_LZMA=y\n" +"CONFIG_UNXZ=y\n" +"CONFIG_XZ=y\n" "CONFIG_BZIP2=y\n" "CONFIG_CPIO=y\n" "CONFIG_FEATURE_CPIO_O=y\n" @@ -117,7 +124,6 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_DPKG is not set\n" "# CONFIG_DPKG_DEB is not set\n" "# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set\n" -"CONFIG_GUNZIP=y\n" "CONFIG_GZIP=y\n" "CONFIG_FEATURE_GZIP_LONG_OPTIONS=y\n" "CONFIG_GZIP_FAST=2\n" @@ -137,12 +143,6 @@ static const char bbconfig_config[] ALIGN1 = "CONFIG_FEATURE_TAR_UNAME_GNAME=y\n" "CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y\n" "# CONFIG_FEATURE_TAR_SELINUX is not set\n" -"CONFIG_UNCOMPRESS=y\n" -"CONFIG_UNLZMA=y\n" -"CONFIG_FEATURE_LZMA_FAST=y\n" -"CONFIG_LZMA=y\n" -"CONFIG_UNXZ=y\n" -"CONFIG_XZ=y\n" "CONFIG_UNZIP=y\n" "CONFIG_BASENAME=y\n" "CONFIG_CAT=y\n" @@ -156,6 +156,7 @@ static const char bbconfig_config[] ALIGN1 = "CONFIG_TEST=y\n" "# CONFIG_FEATURE_TEST_64 is not set\n" "CONFIG_TOUCH=y\n" +"# CONFIG_FEATURE_TOUCH_NODEREF is not set\n" "CONFIG_FEATURE_TOUCH_SUSV3=y\n" "CONFIG_TR=y\n" "CONFIG_FEATURE_TR_CLASSES=y\n" @@ -301,7 +302,16 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set\n" "# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set\n" "CONFIG_WHICH=y\n" +"CONFIG_AWK=y\n" +"CONFIG_FEATURE_AWK_LIBM=y\n" +"CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y\n" +"CONFIG_CMP=y\n" +"CONFIG_DIFF=y\n" +"CONFIG_FEATURE_DIFF_LONG_OPTIONS=y\n" +"CONFIG_FEATURE_DIFF_DIR=y\n" +"CONFIG_ED=y\n" "CONFIG_PATCH=y\n" +"CONFIG_SED=y\n" "CONFIG_VI=y\n" "CONFIG_FEATURE_VI_MAX_LEN=256\n" "CONFIG_FEATURE_VI_8BIT=y\n" @@ -316,14 +326,6 @@ static const char bbconfig_config[] ALIGN1 = "CONFIG_FEATURE_VI_SET=y\n" "CONFIG_FEATURE_VI_WIN_RESIZE=y\n" "CONFIG_FEATURE_VI_ASK_TERMINAL=y\n" -"CONFIG_AWK=y\n" -"CONFIG_FEATURE_AWK_LIBM=y\n" -"CONFIG_CMP=y\n" -"CONFIG_DIFF=y\n" -"CONFIG_FEATURE_DIFF_LONG_OPTIONS=y\n" -"CONFIG_FEATURE_DIFF_DIR=y\n" -"CONFIG_ED=y\n" -"CONFIG_SED=y\n" "CONFIG_FEATURE_ALLOW_EXEC=y\n" "CONFIG_FIND=y\n" "CONFIG_FEATURE_FIND_PRINT0=y\n" @@ -516,26 +518,27 @@ static const char bbconfig_config[] ALIGN1 = "CONFIG_FEATURE_MOUNT_LOOP_CREATE=y\n" "# CONFIG_FEATURE_MTAB_SUPPORT is not set\n" "CONFIG_VOLUMEID=y\n" -"CONFIG_FEATURE_VOLUMEID_EXT=y\n" "# CONFIG_FEATURE_VOLUMEID_BTRFS is not set\n" -"# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n" -"CONFIG_FEATURE_VOLUMEID_FAT=y\n" +"# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n" "CONFIG_FEATURE_VOLUMEID_EXFAT=y\n" +"CONFIG_FEATURE_VOLUMEID_EXT=y\n" +"CONFIG_FEATURE_VOLUMEID_F2FS=y\n" +"CONFIG_FEATURE_VOLUMEID_FAT=y\n" "# CONFIG_FEATURE_VOLUMEID_HFS is not set\n" +"CONFIG_FEATURE_VOLUMEID_ISO9660=y\n" "# CONFIG_FEATURE_VOLUMEID_JFS is not set\n" -"# CONFIG_FEATURE_VOLUMEID_XFS is not set\n" +"# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n" +"CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y\n" +"# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n" "# CONFIG_FEATURE_VOLUMEID_NILFS is not set\n" "CONFIG_FEATURE_VOLUMEID_NTFS=y\n" -"CONFIG_FEATURE_VOLUMEID_ISO9660=y\n" -"# CONFIG_FEATURE_VOLUMEID_UDF is not set\n" -"# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n" -"CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y\n" -"# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n" +"# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n" +"# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n" "# CONFIG_FEATURE_VOLUMEID_ROMFS is not set\n" "CONFIG_FEATURE_VOLUMEID_SQUASHFS=y\n" "# CONFIG_FEATURE_VOLUMEID_SYSV is not set\n" -"# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n" -"# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n" +"# CONFIG_FEATURE_VOLUMEID_UDF is not set\n" +"# CONFIG_FEATURE_VOLUMEID_XFS is not set\n" "# CONFIG_CONSPY is not set\n" "CONFIG_LESS=y\n" "CONFIG_FEATURE_LESS_MAXLINES=65536\n" @@ -549,6 +552,7 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_FEATURE_LESS_LINENUMS is not set\n" "CONFIG_NANDWRITE=y\n" "CONFIG_NANDDUMP=y\n" +"# CONFIG_RFKILL is not set\n" "CONFIG_SETSERIAL=y\n" "# CONFIG_UBIATTACH is not set\n" "# CONFIG_UBIDETACH is not set\n" @@ -556,6 +560,7 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_UBIRMVOL is not set\n" "# CONFIG_UBIRSVOL is not set\n" "# CONFIG_UBIUPDATEVOL is not set\n" +"# CONFIG_WALL is not set\n" "CONFIG_ADJTIMEX=y\n" "CONFIG_BBCONFIG=y\n" "CONFIG_FEATURE_COMPRESS_BBCONFIG=y\n" @@ -612,7 +617,6 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_MT is not set\n" "# CONFIG_RAIDAUTORUN is not set\n" "# CONFIG_READAHEAD is not set\n" -"# CONFIG_RFKILL is not set\n" "# CONFIG_RUNLEVEL is not set\n" "CONFIG_RX=y\n" "CONFIG_SETSID=y\n" @@ -623,7 +627,6 @@ static const char bbconfig_config[] ALIGN1 = "CONFIG_TIMEOUT=y\n" "CONFIG_TTYSIZE=y\n" "# CONFIG_VOLNAME is not set\n" -"# CONFIG_WALL is not set\n" "# CONFIG_WATCHDOG is not set\n" "# CONFIG_NAMEIF is not set\n" "# CONFIG_FEATURE_NAMEIF_EXTENDED is not set\n" diff --git a/include-full/bbconfigopts_bz2.h b/include-full/bbconfigopts_bz2.h index d658477..112c89e 100644 --- a/include-full/bbconfigopts_bz2.h +++ b/include-full/bbconfigopts_bz2.h @@ -9,335 +9,335 @@ * Do not edit. */ static const char bbconfig_config_bz2[] ALIGN1 = { -0x68,0x31,0x31,0x41,0x59,0x26,0x53,0x59,0x6a,0x50,0x48,0xd0,0x00,0x0a,0xb6,0x5f, -0x80,0x00,0x10,0x58,0x03,0xff,0xe2,0x3f,0xff,0xff,0xf0,0xbf,0xe7,0xdf,0x60,0x60, -0x1b,0x1c,0x00,0x3d,0xdc,0x06,0x40,0xc8,0xfb,0x6c,0x28,0x7d,0xf0,0x00,0x37,0x7b, -0x59,0x0b,0x15,0xaf,0x40,0x74,0xaf,0x4e,0xba,0x01,0xee,0x6d,0x01,0xd9,0x9d,0x48, -0x0e,0xed,0xa6,0x40,0x5a,0xd4,0x0b,0x5a,0x42,0x6c,0x6e,0xa6,0xee,0x50,0xe9,0xcb, -0xad,0xbb,0x8c,0x8c,0xfb,0xd0,0x69,0xa1,0x00,0x08,0x26,0x89,0xa2,0x98,0xd5,0x1e, -0xa0,0x01,0xe4,0x4d,0xa8,0x0d,0x00,0x34,0xc8,0x26,0x88,0x23,0x49,0x3c,0x92,0x6d, -0x50,0x00,0x34,0xc8,0x00,0x00,0x01,0x29,0x88,0xa2,0x32,0xa9,0xfb,0x49,0x95,0x3d, -0x4c,0x21,0xa0,0x01,0xa0,0x06,0x81,0xa0,0x00,0x93,0xd5,0x29,0x48,0xa6,0x09,0xea, -0x06,0x23,0x40,0x00,0xd1,0x90,0xc4,0xd0,0xd0,0x00,0x12,0x2a,0x27,0x92,0x99,0x94, -0xf4,0x80,0x01,0xa0,0xd3,0x40,0x3d,0x4d,0x3d,0x43,0xd4,0xc9,0x84,0xfd,0x51,0xa0, -0x90,0x90,0x41,0x34,0xc8,0x12,0x6a,0x9e,0xa9,0xe9,0x00,0x00,0x00,0x01,0xa0,0xd3, -0xff,0x7b,0x5f,0xef,0x8b,0x39,0x5d,0x25,0xea,0xed,0xd2,0x92,0x88,0xd1,0x46,0xc9, -0x68,0x48,0x0a,0x66,0xda,0x42,0xe5,0xba,0x5e,0x35,0xd2,0xe7,0x4d,0x7d,0x8e,0xed, -0x15,0x29,0x16,0x31,0x82,0xc4,0x49,0x45,0xe9,0xdc,0xa2,0x16,0xf4,0xed,0xd2,0x9b, -0x21,0x99,0x42,0x5b,0x5e,0x77,0x1b,0x51,0x4f,0x3b,0x74,0xcc,0x04,0xd2,0xf1,0xd4, -0x6a,0x36,0xb9,0x5d,0x17,0x74,0x57,0x43,0x5c,0x9d,0xe7,0x9c,0x28,0x33,0x32,0x29, -0x23,0x3c,0x6e,0x22,0x82,0x73,0xb4,0xc2,0xb7,0x67,0x4a,0x5e,0x75,0x73,0x19,0x34, -0x6c,0x5e,0x9e,0xce,0xaf,0x17,0xbc,0xb8,0x58,0xb5,0x19,0x13,0x21,0x6c,0x45,0x8b, -0x45,0x06,0x89,0xe7,0x5e,0xbb,0xce,0xa3,0x68,0xd1,0x8f,0x52,0xdb,0x8c,0xd4,0x60, -0xc6,0x89,0x26,0xf5,0xae,0x91,0x9b,0xd9,0xe7,0x9e,0x4c,0x8f,0x67,0x5e,0xaf,0x5f, -0xa5,0xe4,0x8c,0x19,0x31,0x1b,0x24,0xcc,0x44,0x86,0x08,0xd7,0xb4,0xe6,0xc8,0x9e, -0x2e,0x4c,0xd2,0x19,0x33,0x09,0x9a,0x62,0x6c,0x1b,0x1a,0x6a,0x47,0xe5,0xd5,0xa4, -0x02,0x17,0x1d,0xb6,0x59,0x97,0xa6,0x67,0xdd,0x8e,0xcf,0x4b,0xc3,0x6f,0x3f,0xb7, -0xf1,0xc0,0x9f,0xc9,0x07,0xf3,0x44,0x5f,0xeb,0x06,0x66,0x5f,0x5f,0x6f,0xd7,0xb5, -0xcf,0xd8,0xa4,0xe6,0xf4,0xbe,0xbb,0xe4,0xf1,0x99,0xc2,0xfb,0x7e,0xc1,0x34,0xb5, -0x1f,0xd7,0xaf,0xa6,0xd3,0xd4,0x6e,0xec,0x37,0xdb,0x5b,0x8f,0x9b,0x7b,0xfd,0x5e, -0x5b,0xde,0x6d,0xc4,0xfa,0x83,0xf5,0xa9,0x75,0x48,0x3c,0x7f,0x3a,0xb7,0x7e,0x6d, -0x66,0xe7,0x4b,0x1b,0x4e,0x5c,0xc6,0x51,0x22,0x1b,0x40,0xbe,0x26,0x9c,0xf7,0x9c, -0x75,0xb4,0x4f,0xa6,0x15,0xe2,0x21,0xa6,0xb7,0xee,0x8d,0xe6,0xfc,0x6e,0xbc,0x14, -0x78,0x6e,0x1a,0xef,0x55,0xdb,0x69,0x44,0xbe,0xd0,0x94,0xa3,0x58,0x6a,0x5c,0xda, -0x2c,0xb5,0x61,0x50,0xaa,0xe7,0xb7,0x30,0x9c,0x2f,0xb5,0x3b,0x3d,0x62,0x33,0x5c, -0x52,0xd4,0xf6,0xfa,0xcb,0x9b,0xe3,0x14,0x9c,0x7a,0xae,0x45,0xdf,0x2b,0x1f,0xaf, -0x6a,0xbc,0x3a,0x69,0x8e,0x4b,0xd2,0x90,0x80,0x94,0x56,0xa7,0x1e,0xb1,0xb4,0x32, -0xa2,0xc9,0x1f,0x34,0xcd,0x65,0xbe,0x31,0x7a,0x93,0x14,0x9a,0xe9,0x6d,0x08,0x0e, -0x97,0xa8,0x3d,0x95,0x78,0xdd,0xb6,0x85,0xa6,0x75,0x9c,0xed,0x7a,0x4b,0xb4,0x71, -0xa3,0x56,0x58,0x32,0x98,0xbf,0x7c,0x4b,0xb4,0xac,0x51,0x24,0x1a,0x9d,0xa9,0xac, -0x95,0x77,0xb8,0xde,0x54,0x87,0x1c,0x2d,0xba,0xa7,0xdd,0x6e,0x68,0xa5,0xe5,0x22, -0xa3,0x0a,0xee,0xb9,0xcb,0x39,0xe8,0x71,0x56,0xac,0xa9,0xed,0xcf,0x51,0x1c,0x6d, -0x96,0xc6,0xcb,0x26,0x7f,0xcc,0x88,0x00,0x85,0xda,0x90,0x08,0x59,0x0d,0x2d,0x2c, -0x99,0x26,0x83,0x33,0x3b,0x1f,0xb8,0x22,0xc4,0x80,0x42,0xd3,0x3c,0x0d,0x7a,0xea, -0xb4,0x25,0x07,0x2a,0x28,0xab,0xe7,0x56,0x0d,0x71,0x9d,0xd6,0x23,0x3d,0xde,0x5c, -0xb3,0x5e,0x4f,0x4f,0xc3,0xcb,0xec,0x42,0xdc,0x5d,0x7f,0xd9,0xc8,0x11,0xa7,0xbc, -0xfa,0xf3,0x9f,0xcc,0xea,0xd9,0x1b,0x7d,0xfb,0xff,0x6f,0xe5,0x91,0xce,0xcd,0x20, -0x0c,0xff,0x8c,0x67,0x09,0x27,0xd2,0x09,0x48,0x0a,0x52,0xbf,0xb7,0x55,0x85,0xd8, -0x85,0xff,0x12,0x9b,0xb1,0x1f,0x6a,0xeb,0xef,0x1d,0xff,0x08,0x1b,0x41,0xcc,0x19, -0x9b,0xb3,0xc1,0x61,0xb4,0x3e,0x8d,0xb1,0x8f,0xd6,0x11,0xe4,0x7e,0x16,0xa2,0xfd, -0x8c,0xe5,0xc7,0xb0,0x59,0x52,0xfe,0xbf,0x67,0x13,0x77,0xac,0xd6,0x43,0x3e,0x93, -0xab,0xac,0xf1,0x3d,0xa7,0x61,0xfc,0xe8,0xdc,0xc5,0x53,0x78,0xb3,0x25,0xaa,0xbf, -0x03,0xdb,0x02,0x1e,0xfb,0x40,0x38,0xba,0x9f,0x65,0xea,0xd0,0x26,0x1f,0x2e,0x7a, -0xd1,0x9c,0x62,0xa5,0xe7,0x31,0x55,0xf8,0x71,0x3f,0x89,0xe3,0xc4,0xfd,0x39,0xc7, -0x8f,0x4d,0xd8,0x78,0xde,0xc0,0xb7,0xe3,0x77,0x85,0x33,0xdd,0xc4,0xa1,0x8b,0xb6, -0xc5,0xf3,0x0f,0x18,0xe4,0x49,0x69,0xb9,0x51,0x1d,0xeb,0xe4,0xbf,0x7e,0xfb,0x30, -0x5e,0x5f,0x0e,0xab,0xaa,0x6d,0xdf,0xb5,0xac,0x30,0xbd,0x1a,0x42,0xdd,0x89,0xfe, -0xab,0xbf,0xf4,0x87,0x79,0x58,0xdb,0x53,0x9f,0x12,0xbf,0x9f,0x49,0x9d,0xab,0x06, -0x6f,0x4d,0xde,0x35,0x1b,0x22,0x79,0x36,0xa7,0x3c,0x4d,0x7c,0xb0,0x83,0xcd,0x3b, -0x12,0x3e,0xa5,0x7d,0x90,0x81,0xa2,0x35,0x66,0x3b,0x19,0x75,0xed,0x48,0xef,0x68, -0x6b,0xea,0xf8,0xbf,0x9e,0x87,0x6d,0x65,0xf2,0xe7,0xb3,0xb8,0x48,0x95,0xcf,0xa9, -0xc6,0x2b,0x18,0x0a,0x7d,0x45,0x73,0x1f,0x37,0xaf,0x26,0xa7,0x2e,0xec,0x14,0xaf, -0x68,0xde,0x96,0x3c,0xd6,0x4e,0x66,0xd1,0x59,0xf6,0x71,0xb5,0xc8,0x85,0xde,0x63, -0xa7,0xf1,0xea,0xae,0x6f,0xe2,0x4a,0xf5,0xbc,0x5e,0xf8,0x1e,0x77,0xf7,0x61,0x4a, -0xef,0xbe,0x2a,0xfe,0xd1,0xa6,0xef,0x82,0x6b,0x7f,0x84,0x12,0x93,0x58,0x67,0xaa, -0x17,0xd8,0x57,0x26,0x73,0x8d,0x3e,0x3d,0xa1,0xcb,0xcb,0x27,0xee,0xf6,0xc6,0xd7, -0x96,0xf2,0x5a,0xcb,0xcc,0x26,0x42,0x59,0x52,0x09,0xa0,0x85,0x37,0xf4,0x53,0xf2, -0x0a,0x20,0x56,0x21,0x14,0x09,0x4c,0x96,0x21,0xd6,0xe2,0x74,0xb8,0x64,0x60,0xe9, -0x84,0x1c,0x0c,0x0c,0xa6,0x50,0x3d,0x93,0xe1,0x6a,0xf0,0x72,0x04,0xe4,0x7a,0xd9, -0xb0,0x08,0x3e,0xb6,0x22,0x21,0x89,0xd7,0xc7,0xa1,0xdb,0xb9,0x44,0xb0,0xb6,0x15, -0x67,0x1b,0xa1,0xa9,0xa7,0x67,0x10,0x84,0x5c,0x07,0x20,0xc5,0x50,0xdc,0x46,0x30, -0x9d,0xb6,0x54,0xbf,0xa9,0xcb,0x6c,0xaa,0x00,0x07,0x7a,0xa0,0xc6,0x2d,0xe6,0xe9, -0x2d,0x69,0xdc,0xd7,0xb6,0xc4,0xb2,0x9f,0x75,0x5a,0xe7,0x66,0x11,0xf4,0x39,0x0c, -0x95,0xc8,0x0e,0xa7,0x3b,0x19,0xde,0x9c,0x5a,0x59,0x61,0xeb,0xaf,0x8a,0x7f,0x84, -0x6e,0x69,0x84,0xb7,0x58,0x14,0x5b,0x07,0x2e,0xcd,0x36,0x97,0xa0,0xed,0xc7,0x67, -0xaa,0x78,0x5d,0xbd,0x3f,0x54,0x2b,0x15,0x14,0x4e,0x34,0xe6,0xa5,0x2a,0xdc,0x4f, -0xc8,0xf6,0x6a,0x5b,0x8b,0x87,0x76,0xde,0x6f,0x26,0x5d,0x0f,0xab,0x3b,0xf6,0xec, -0xdb,0xf5,0x0c,0x36,0xde,0xf9,0x4b,0x09,0x95,0xad,0x5b,0x9d,0xfd,0xec,0x81,0x20, -0x59,0x09,0x3a,0x90,0x4d,0x4a,0x2d,0xd1,0x30,0x82,0xe6,0xb4,0x11,0x27,0x67,0x17, -0x41,0x04,0x8b,0x86,0x20,0x5b,0xc5,0xb1,0xec,0x58,0x59,0xf6,0x8d,0x22,0xcd,0x1e, -0x0f,0x99,0xc5,0x96,0x45,0x03,0xd1,0x46,0x49,0xbb,0x3f,0x8d,0xdb,0x09,0x34,0xae, -0x5c,0xdc,0xa5,0x63,0xb0,0xbf,0x0a,0x80,0xc6,0xbe,0x02,0xb5,0xb4,0x15,0xf4,0x51, -0x8c,0x17,0x0c,0x35,0xd2,0x8b,0x32,0x9d,0x75,0x6f,0x7a,0x62,0x6c,0xf1,0xf2,0x79, -0xc9,0xe1,0x67,0x06,0xf8,0x50,0xf3,0x43,0x3a,0x64,0xd1,0xee,0xf3,0xd1,0xad,0x93, -0xea,0x8f,0x97,0x46,0xd8,0x96,0xc9,0x67,0x4a,0xbe,0x69,0x34,0x66,0x6d,0xdc,0xcb, -0x1c,0x4d,0x21,0xb0,0x5d,0xc1,0xa8,0xc1,0xe3,0xbd,0x5b,0xef,0x33,0x6d,0xd4,0x7c, -0x5b,0x0b,0x6d,0xa3,0x48,0xd4,0x65,0xc0,0xba,0xe3,0x7a,0x7d,0x3c,0x97,0x03,0x9a, -0x34,0xcf,0x1b,0x29,0xab,0xd3,0x7b,0x63,0x6d,0xe3,0x7d,0x6e,0x7a,0xfc,0xbe,0xef, -0xc1,0xcf,0x7f,0xe6,0xaf,0xe2,0x15,0x21,0xb1,0x1d,0xce,0xb7,0x0c,0x8c,0xc6,0x92, -0x99,0x23,0x4c,0x46,0x44,0x91,0x94,0x40,0x92,0xc4,0x92,0x92,0x45,0xa0,0x59,0x31, -0xa4,0xa4,0xd8,0x02,0xcc,0x4c,0x6a,0x80,0xd2,0xc5,0x62,0x88,0xb4,0x25,0x44,0x65, -0x12,0x34,0x52,0x99,0x1b,0x23,0x48,0x4a,0x8d,0x04,0x29,0x24,0x24,0xc8,0x4b,0x2a, -0x42,0x99,0x8b,0x10,0xd9,0x96,0x10,0xb0,0x92,0xa4,0xa2,0x5b,0x26,0x11,0x18,0xa5, -0x14,0xf4,0xee,0x45,0x92,0x30,0x9b,0x24,0xda,0xbc,0x74,0xc8,0x09,0x93,0x29,0xa9, -0x93,0x0b,0x49,0x94,0x66,0x13,0xbb,0x99,0x2c,0x69,0x0a,0x28,0x29,0x9a,0x48,0xc9, -0x46,0xf3,0xae,0x04,0xc1,0x4d,0x92,0x31,0x16,0x46,0x8c,0x79,0xd7,0x43,0xba,0xe0, -0x90,0x68,0xd8,0xd1,0x02,0xa4,0x14,0xc8,0xd8,0x53,0x22,0x01,0x0f,0x3b,0x77,0x7e, -0x2b,0xdf,0xba,0xbd,0xbf,0x73,0xae,0x4d,0xaf,0xb5,0x7e,0x5f,0x37,0x9e,0xa8,0xa0, -0xc6,0x34,0x79,0x4b,0xdf,0x54,0x82,0x57,0x26,0xba,0xbd,0xbe,0xae,0xfc,0x3b,0x56, -0x98,0xca,0x98,0xdf,0x01,0xb3,0x05,0x55,0x21,0x7c,0xf5,0xd2,0xc6,0x90,0x8c,0x88, -0xc2,0xda,0xee,0xc9,0x2b,0xb3,0x18,0xf9,0x95,0xda,0xb3,0xd3,0x77,0x9e,0x27,0x2e, -0xf4,0xdd,0xad,0x76,0x2f,0x30,0x03,0x83,0xcf,0x5d,0xf6,0x97,0xc2,0xea,0x76,0x3d, -0xe9,0x2c,0x2c,0xe3,0x83,0x9b,0xb6,0xe0,0xbc,0x47,0x4c,0x6c,0x2e,0x4e,0x8b,0x5d, -0x97,0xfa,0xde,0x8a,0x4b,0x2d,0x46,0xcd,0x56,0x06,0x44,0x1f,0x77,0xbd,0x21,0x5c, -0x67,0xe8,0xeb,0x12,0xd3,0x3b,0x63,0xf4,0xa6,0x6d,0xda,0x58,0x50,0x6d,0x11,0x64, -0x29,0xd4,0x73,0xf5,0x6e,0xc6,0x26,0x44,0xf4,0x1f,0x00,0x02,0x49,0x00,0xb5,0xdf, -0xa6,0x11,0xec,0x20,0x06,0x2e,0xae,0xee,0xee,0x6e,0xa5,0x30,0x00,0xb6,0x31,0x64, -0x35,0x9b,0xea,0x04,0x1c,0x55,0xc1,0x46,0x32,0x4c,0x38,0x77,0x1e,0x08,0x5e,0x02, -0x03,0x04,0x46,0x49,0x20,0x6d,0xae,0x8e,0x79,0x7c,0x5a,0x07,0x33,0x1c,0x4e,0x01, -0xd9,0x59,0x1c,0x2c,0xb1,0x95,0xba,0x2d,0xf2,0xd4,0x6a,0xbd,0xea,0x45,0x15,0x08, -0x81,0x0e,0x10,0x76,0xf5,0xa5,0x71,0x9a,0xcc,0xed,0xaa,0x71,0xac,0xe3,0x89,0x91, -0x0d,0x6e,0x1f,0x41,0x74,0x7d,0x71,0x4e,0x28,0x91,0xec,0x9b,0x16,0x86,0x89,0xda, -0x1e,0x86,0xf2,0xdc,0x08,0x88,0xdc,0xb0,0x51,0x6a,0x49,0xad,0xa2,0xb6,0xe6,0x6b, -0x1e,0x72,0xfd,0xb5,0x95,0xcb,0x18,0xfa,0x47,0xc4,0xd7,0xcc,0x62,0x6f,0x4f,0xab, -0xce,0x4e,0x27,0xa5,0x0f,0x29,0x0b,0x8e,0xef,0x5b,0xc6,0xf1,0xc1,0xd0,0x33,0x9c, -0x3e,0x3c,0x5a,0xc4,0x55,0xca,0x3b,0x50,0xf3,0x80,0xf3,0x47,0x35,0xa7,0xa9,0x43, -0xb5,0x60,0x73,0x95,0x33,0x8e,0xf1,0xa8,0xae,0x1f,0x52,0xc3,0x4a,0x62,0x82,0x3d, -0xd0,0x82,0x50,0x0b,0x71,0x58,0x3a,0xa0,0x70,0x53,0xa5,0x4a,0x5f,0x68,0x12,0x05, -0x7b,0x8c,0x5f,0x85,0x80,0x9a,0x20,0x78,0xff,0xae,0xef,0x35,0x9e,0xfb,0x79,0xd3, -0x0f,0x6f,0x29,0x81,0xa2,0xdb,0x46,0xa1,0xf3,0x50,0x64,0xac,0xa5,0x8a,0x48,0x7a, -0x9c,0xea,0xc4,0x8b,0x16,0x32,0x8e,0x8c,0x4b,0x65,0x68,0x6e,0xa7,0x75,0x42,0x64, -0x35,0x0a,0xdb,0xed,0x64,0x28,0xb3,0x3b,0x7b,0x6a,0xd8,0xe7,0xbd,0x6f,0x79,0xe3, -0xea,0xfa,0xe0,0x19,0x8c,0x4c,0x78,0xe3,0x3a,0x2b,0xc5,0x52,0x47,0xc1,0x19,0xd9, -0x3b,0xa5,0xc1,0x06,0x80,0x51,0x50,0x30,0x39,0x91,0x10,0xed,0xc6,0xcf,0x7b,0xf7, -0x61,0x17,0xdb,0x5a,0x16,0x0b,0x97,0x8d,0x28,0x6e,0x8f,0xc5,0x69,0x95,0x8c,0x3c, -0x87,0x95,0x7b,0x25,0x55,0x31,0x26,0xd0,0x9e,0x39,0xd3,0x81,0x53,0xca,0x9e,0xa2, -0xa3,0xe9,0xae,0x3a,0x61,0x60,0x4a,0x6c,0x9e,0xe4,0x39,0x11,0x79,0x88,0x04,0x30, -0x25,0xac,0x4c,0x43,0xc5,0x07,0xa1,0xb7,0xbf,0x68,0xc7,0xb3,0x5b,0xd9,0x23,0x16, -0xbd,0xf5,0x68,0xc5,0xc8,0x58,0x6c,0xf5,0x52,0x86,0xf2,0xb6,0x88,0x95,0x2e,0xdc, -0x88,0x44,0x18,0xc6,0x85,0x0e,0x58,0xaa,0xd8,0xca,0xd9,0x50,0x5f,0x1a,0x6c,0xcd, -0x85,0x43,0xb3,0x6d,0x18,0x63,0x69,0x0e,0xb6,0x3c,0xea,0x25,0xb8,0x33,0x6f,0xc4, -0xa6,0x1e,0x58,0x76,0x68,0x5c,0x62,0xb6,0x76,0x16,0x1a,0x03,0xad,0xe6,0x8c,0x4a, -0x9a,0x45,0xda,0x48,0xd9,0x84,0x68,0xb3,0x01,0x67,0x30,0x10,0xda,0x46,0x8d,0x28, -0xd1,0x4c,0x4d,0xa4,0x31,0xea,0xc1,0x53,0x42,0x54,0xcb,0x35,0x6b,0xc2,0xd5,0xad, -0x06,0x2d,0x0c,0x3d,0x3a,0x80,0x6a,0xf5,0x79,0x6b,0x6a,0x82,0x29,0xb6,0x28,0xc0, -0x8f,0x74,0xf5,0x60,0x6f,0xb1,0x04,0x2b,0xb4,0x62,0xd1,0x24,0x5a,0xd3,0xde,0x21, -0x67,0xad,0x44,0x80,0xa6,0x86,0xdb,0x0f,0x0b,0xf1,0xe2,0x59,0xe9,0xef,0x36,0x9f, -0xa8,0xa7,0xe9,0x08,0xfb,0x7d,0xf8,0x4a,0x07,0x6d,0x92,0x89,0x24,0x81,0x54,0xd1, -0x41,0x99,0xaf,0xb4,0x33,0xc6,0x02,0x7c,0xee,0x08,0x01,0x2e,0x3e,0x69,0x8a,0x6b, -0xb8,0x31,0x0a,0xec,0xdc,0xed,0x2f,0xb4,0x4a,0x67,0x15,0x74,0x9c,0x09,0x05,0xc4, -0x19,0xe6,0x0c,0x08,0x89,0x41,0xdf,0x55,0xe3,0xcf,0x6e,0x1d,0x5e,0xd9,0x9e,0x6d, -0x7f,0x53,0x81,0x60,0x0b,0x93,0xc0,0x75,0x7a,0x6c,0x1a,0x1a,0xb0,0x86,0xfd,0x3d, -0xfd,0x7b,0xb6,0x4a,0xd2,0x6e,0xb3,0x08,0xd5,0xa4,0xbd,0x5a,0xd2,0x18,0xa5,0x19, -0x79,0x55,0xd5,0x5b,0x0c,0x30,0xc3,0xe5,0xd8,0x3f,0x93,0x3b,0xfe,0x7e,0xe0,0x36, -0xa3,0x6b,0xf0,0x19,0xc6,0x82,0x96,0xe7,0x41,0xc2,0x4b,0x37,0xb4,0x84,0x16,0x27, -0xa2,0x8c,0x0e,0x35,0x46,0x47,0x06,0x31,0x50,0x14,0xf6,0xc0,0x19,0xb1,0x00,0xdb, -0xa6,0x8e,0xc2,0x45,0x34,0x8d,0x58,0x20,0xf0,0xc6,0xd0,0x97,0x76,0x85,0x66,0x80, -0x10,0x9b,0x15,0x46,0xaa,0xbe,0xca,0xb9,0xab,0x15,0x6b,0xd8,0xae,0xab,0x2b,0xc5, -0xb7,0xa2,0xb0,0x50,0xd2,0x05,0x18,0x20,0x23,0x01,0xb4,0x88,0x79,0x66,0xbe,0x14, -0x1d,0x04,0x8e,0x04,0x44,0x71,0xc4,0xbf,0x2c,0xdc,0xa1,0xa9,0x00,0x21,0x25,0x9f, -0x34,0xd2,0x56,0x15,0x34,0xbb,0xb5,0x10,0x5a,0x99,0x82,0x07,0x3d,0x98,0x3b,0x7d, -0xd2,0x96,0x81,0x19,0x62,0x20,0x85,0x58,0x8e,0x96,0x55,0x75,0x45,0x05,0x30,0x2e, -0x92,0x0b,0xb6,0xc2,0x9c,0x6d,0x48,0x5f,0x7e,0xaa,0xde,0xcf,0xab,0x7b,0x0f,0xd5, -0xda,0x1b,0x0d,0x6f,0x0e,0x12,0x7d,0x41,0xe1,0x00,0x05,0x1e,0xcd,0xb6,0x07,0x7e, -0xa8,0x68,0x0f,0x7e,0x5a,0x93,0xc8,0x77,0xd3,0x52,0x61,0x9d,0x91,0xf5,0x16,0x88, -0x50,0x8d,0x0b,0x56,0x4e,0x2c,0xb0,0xad,0x94,0x1e,0xd7,0x5e,0xab,0xd3,0x48,0xe7, -0x16,0x17,0x18,0xe4,0xa1,0x24,0x92,0x17,0x22,0xa6,0x6f,0x40,0x70,0xc5,0xe3,0x27, -0x29,0x6c,0x60,0x47,0xae,0x2b,0xd0,0xd2,0x18,0xcf,0x1c,0x4d,0x39,0x87,0xa0,0xc2, -0x3c,0xdb,0x81,0xb1,0x23,0x40,0x80,0x79,0xe7,0xb8,0xd1,0x6d,0x77,0xe2,0x28,0xc3, -0x9e,0x35,0xc3,0x4d,0xae,0xca,0x23,0x66,0x28,0x52,0x41,0xa1,0xef,0xc4,0xa1,0x8e, -0xe2,0x7a,0xa1,0xbe,0xfc,0x90,0xe0,0xb2,0xe2,0x85,0x1a,0x02,0x34,0x0c,0x7b,0x56, -0xe5,0xc6,0xb4,0xae,0xbf,0x28,0x8d,0x81,0x76,0xb7,0x06,0xd3,0x15,0x36,0xce,0x98, -0x75,0xa2,0x0f,0x5e,0x7c,0xba,0xbc,0xaa,0x0f,0x2f,0xd8,0xc5,0x73,0x83,0x7f,0x1a, -0x85,0x92,0xe7,0x7f,0xcb,0xce,0xf6,0xf7,0xaf,0xb6,0x9e,0xe8,0x32,0x7a,0xd0,0x9e, -0xa4,0x0d,0x7e,0x5f,0xe5,0xf5,0xd3,0xe6,0x81,0xe8,0x78,0xed,0x21,0xc3,0x01,0xbf, -0xa0,0xf2,0xc5,0xa3,0x5e,0x8f,0x2a,0x8e,0x97,0x66,0x6a,0x98,0x69,0xfc,0xaf,0xcd, -0x8b,0xdc,0xc8,0xf7,0x3b,0x01,0xf0,0xac,0xf8,0xba,0x3a,0x5e,0x0f,0x1a,0xd3,0x0c, -0x0d,0xca,0x67,0xe7,0x80,0xf6,0xb8,0xf0,0x85,0xba,0x08,0x5b,0x48,0xa4,0x9f,0x84, -0xee,0x79,0xa4,0x39,0x20,0x41,0x2c,0x4f,0x9f,0xb1,0xd5,0x0b,0x57,0xe0,0xde,0xd2, -0xc6,0x09,0x63,0x56,0xf1,0x48,0xea,0x16,0x8c,0xcb,0x32,0xee,0x05,0xee,0x57,0x8f, -0x2e,0xc1,0x85,0x9d,0xa0,0x6f,0x28,0x98,0x6c,0xd6,0xd5,0xcf,0x7d,0x13,0x1b,0x71, -0x1e,0x0a,0x2d,0xd2,0x42,0x92,0x4f,0x78,0xd8,0xd6,0x17,0xd8,0x22,0xe7,0x59,0xc4, -0x35,0x65,0x2e,0x98,0xdb,0x60,0xc9,0xc6,0xaa,0x34,0xb3,0xaf,0x67,0x6e,0x3c,0x65, -0xde,0xc8,0x0e,0x04,0x5e,0x38,0xef,0x32,0x7c,0xab,0x1b,0xab,0x94,0x1c,0xf8,0x75, -0x21,0x12,0x3b,0xfb,0xac,0x70,0x0c,0xf2,0x77,0x85,0xa7,0x4d,0x04,0x06,0x1c,0x8c, -0xb3,0x45,0x34,0xda,0x33,0x6b,0x0b,0x6a,0x11,0x9f,0x5e,0xbd,0x16,0x0f,0x3f,0x5e, -0xeb,0x19,0x8c,0xbb,0x78,0xe8,0xb3,0x6c,0xf7,0xe3,0x57,0x49,0xbb,0x1c,0x3e,0xa4, -0x45,0x4e,0x4a,0x48,0x54,0xd5,0x0f,0x40,0xe6,0xf5,0x19,0x36,0xb9,0x7a,0x96,0x8d, -0xb4,0x74,0xc4,0xd9,0xa5,0x50,0x88,0x2c,0x78,0xbe,0x04,0x89,0xa7,0x7a,0xf9,0xd0, -0x61,0x1b,0xa3,0x76,0xf9,0x6e,0x46,0x36,0x46,0xaf,0x44,0x75,0xa5,0x9b,0xad,0xcd, -0x36,0x2d,0xd6,0x2d,0xc5,0x7b,0xbe,0x5b,0x46,0x3d,0x7d,0xae,0x08,0x6c,0x40,0xf0, -0x15,0x21,0xb4,0xd7,0x49,0xe4,0x75,0x98,0x53,0xd8,0x60,0xfa,0x81,0xb7,0x1f,0xa8, -0xe3,0xd3,0xb8,0x44,0xc5,0x93,0xaa,0x1f,0x03,0x1b,0x69,0x8c,0x63,0x7c,0x21,0x0c, -0xdf,0xdf,0x1c,0xeb,0x95,0x83,0xaa,0x1b,0xae,0x5a,0xb3,0x63,0x7d,0xdd,0xbb,0x71, -0x27,0x4c,0x20,0x79,0x99,0xcb,0x2c,0x90,0xf2,0x8e,0x87,0x0e,0x20,0xba,0xc7,0x9c, -0xd8,0xe6,0x68,0x12,0x0c,0x89,0x86,0x22,0xb5,0x66,0x06,0x84,0x90,0x81,0x46,0x06, -0xe1,0xd8,0xdc,0x20,0x20,0x8e,0x48,0x0b,0x9c,0x3e,0x84,0x5e,0x55,0xd7,0x45,0x18, -0xf2,0x87,0x62,0xe4,0xd1,0xc9,0x61,0x40,0xa0,0x8e,0xc1,0x24,0x44,0xa9,0x76,0x47, -0xdf,0x77,0xa6,0x8f,0x51,0x33,0x32,0xc5,0x93,0x7b,0xbe,0x53,0xc7,0x17,0x0f,0x21, -0x67,0x42,0x0c,0x3b,0xb8,0x74,0xdc,0xdf,0x52,0x17,0x15,0x24,0xae,0xb6,0x97,0x68, -0xb9,0x09,0x06,0xaa,0x9b,0x1d,0x40,0xa1,0xa0,0x6c,0x54,0x5c,0x84,0x3d,0x90,0xd9, -0xb1,0xb6,0x2c,0x84,0x19,0x72,0xe2,0x40,0x09,0x5b,0x25,0xa1,0x51,0x02,0xd5,0x96, -0x88,0xa9,0x01,0x48,0x13,0xbc,0x02,0x3b,0x88,0x29,0x52,0xa3,0x10,0x0c,0xb2,0x72, -0xd0,0xb7,0x35,0x76,0x82,0xf2,0x2b,0xc5,0xdd,0x80,0xbd,0x67,0x43,0x19,0x4a,0xe0, -0xd2,0x32,0xa0,0x4a,0x65,0xc4,0x40,0x62,0x2e,0x08,0xbb,0x8c,0x68,0x05,0x4a,0xe3, -0x65,0x74,0x20,0x10,0x2e,0xc4,0x37,0x43,0x3a,0xad,0x59,0x57,0x97,0x51,0x29,0x4c, -0xcc,0x54,0xd1,0x71,0xf8,0xf4,0xef,0xce,0x77,0x46,0x6e,0xe4,0xeb,0xda,0x41,0x16, -0x67,0xee,0x3b,0x23,0x15,0x42,0xaa,0x80,0xbd,0x56,0x2b,0xc0,0x6f,0x88,0xbd,0x86, -0x5a,0x08,0x08,0xf3,0xc6,0x0d,0x64,0x74,0x68,0x0d,0xa4,0x8b,0x0e,0xdf,0x3b,0x58, -0xf0,0xbe,0x82,0x73,0xc1,0xb2,0xcd,0x17,0xd3,0x8e,0x17,0xdb,0x76,0x42,0x26,0x5e, -0xad,0xeb,0x0c,0xb0,0x0a,0x38,0x21,0xdf,0x98,0x35,0xcb,0x57,0x0c,0x50,0xec,0x24, -0x00,0x94,0x48,0x56,0xdf,0x4d,0x1f,0x1a,0xdd,0x2c,0xb4,0x81,0x83,0xe3,0x0f,0x6b, -0x28,0x16,0x32,0xde,0x2c,0x39,0xb6,0x93,0x6e,0x06,0x5d,0xea,0x14,0x9e,0xeb,0xef, -0x99,0x9d,0x09,0xad,0x89,0xad,0xc1,0x28,0xd9,0xb6,0x61,0x76,0x2d,0x0d,0xbb,0x1e, -0xf5,0xbe,0x96,0xb3,0x16,0x3b,0x76,0x03,0x96,0x9b,0x1b,0x17,0x87,0x4d,0x1a,0x06, -0x36,0xcc,0xe8,0xeb,0x2a,0xed,0x73,0xa6,0x6f,0xa9,0xdc,0x3a,0xb4,0x5f,0x3a,0x25, -0xac,0xf7,0x3c,0xf7,0x30,0x25,0x70,0x39,0xfa,0x51,0x07,0x16,0x33,0xbf,0x3d,0xf5, -0xaa,0xb4,0x69,0x36,0xa0,0x51,0xa1,0x33,0x0b,0xe9,0x49,0xe9,0x49,0x10,0x21,0xff, -0x1d,0xd7,0x75,0x0e,0x3c,0x7a,0xe9,0xc1,0x38,0x78,0x17,0xa2,0xee,0xfd,0xe8,0xec, -0x2e,0xbc,0x4c,0x8a,0x32,0xea,0xaa,0xea,0xf0,0x44,0xc1,0xd5,0x8a,0x7a,0x15,0x40, -0xf2,0x63,0x42,0xc3,0x1e,0x99,0x88,0x1d,0x7d,0x45,0xa2,0x4c,0x5d,0xed,0x46,0xfc, -0x37,0xaa,0xf6,0xca,0x06,0x3e,0xc6,0x59,0xc2,0x43,0x29,0x89,0xb1,0x3f,0xc8,0x35, -0xd5,0xd0,0xcb,0x78,0x3d,0x26,0x16,0x64,0x02,0x45,0xe7,0x70,0xc8,0xe0,0x11,0xa4, -0x30,0xc2,0xee,0xc9,0x20,0x01,0xa4,0x07,0x8c,0x6a,0x77,0x23,0xd0,0xde,0xb8,0x19, -0xb2,0x6d,0x0d,0x88,0xf2,0xc8,0xd9,0x49,0x1d,0x21,0x17,0xeb,0x57,0x9c,0x07,0x2c, -0xdb,0xba,0x82,0x39,0x43,0x6c,0x39,0x6d,0xd6,0x1d,0xdd,0x6c,0xcf,0x15,0x33,0xa4, -0x30,0xd6,0x87,0x8c,0x58,0xe4,0xd4,0x26,0x60,0xd1,0x28,0x9f,0x72,0x14,0x9f,0x4f, -0x2e,0x33,0x9e,0xbb,0x87,0x10,0x02,0x86,0xf6,0xc4,0xce,0x45,0x28,0x7d,0xd0,0x68, -0x95,0x12,0x47,0x89,0x4f,0xc5,0x22,0x4e,0x24,0x3a,0x74,0x06,0x03,0xac,0x4e,0xbc, -0x7c,0x68,0x56,0xdb,0xb3,0x92,0x2c,0xed,0x9c,0xe0,0xea,0x5e,0xb1,0x17,0x66,0x52, -0xa5,0x28,0xc6,0xb7,0xc5,0xe1,0x8b,0xba,0x22,0x5f,0x64,0x9e,0xb7,0x95,0xbd,0x2f, -0xa1,0xd3,0xb0,0xa0,0xb7,0x19,0xd6,0xa1,0xaa,0x77,0xc1,0x16,0x36,0x93,0xcd,0x92, -0xf7,0xf2,0x53,0xec,0xaf,0x07,0x8f,0xad,0x5f,0x21,0x71,0x7e,0x19,0x18,0x5d,0xad, -0x0c,0x34,0x62,0xea,0xc2,0xf2,0x5a,0x9b,0x29,0xf7,0x71,0x44,0x80,0x03,0x2c,0x48, -0x41,0x0c,0xf3,0x7b,0x80,0xe5,0x11,0x1b,0xa5,0x3a,0x0d,0x7b,0x65,0xb3,0x57,0x8d, -0x0d,0x6e,0x73,0x08,0x52,0x23,0x9b,0x58,0xc0,0xaa,0xd4,0xce,0xae,0x2c,0xb5,0x0d, -0xf8,0xd6,0xd2,0xe8,0xa3,0xcf,0x89,0xec,0x2d,0x31,0xd0,0x12,0x6d,0x06,0x11,0xd7, -0x0e,0xc4,0x19,0x5d,0x9a,0x38,0x65,0x9b,0x6d,0x9d,0xec,0x45,0x65,0xb3,0x41,0x8c, -0x28,0x4b,0x52,0xa1,0x0d,0x83,0x4d,0x71,0xad,0xe9,0x91,0xa5,0x74,0x9d,0x46,0x6c, -0xaf,0xe7,0x37,0x77,0xb4,0x35,0x84,0xb3,0xd2,0x1d,0x55,0x4c,0x14,0x25,0x34,0x42, -0x21,0x24,0x4f,0x83,0x82,0x88,0x33,0x7e,0x67,0xdc,0xcd,0x0f,0x0c,0x16,0x0f,0x6e, -0xbe,0x35,0xd4,0x89,0x96,0xd4,0x65,0x50,0xb5,0x12,0xd7,0x0f,0xcd,0xe2,0x48,0x89, -0xe3,0x6c,0x18,0xc9,0xa1,0xc7,0x66,0xa8,0x94,0x69,0xce,0x33,0xb3,0xda,0x99,0x9e, -0x18,0x56,0xfc,0x38,0xad,0x27,0x7d,0x86,0x02,0xc6,0x91,0xf1,0x3b,0x0e,0x62,0x33, -0xa2,0x0d,0x9a,0x7a,0xab,0x76,0x80,0x72,0x66,0xd3,0xf8,0x7d,0xc3,0x6f,0x6a,0x1f, -0x79,0xad,0xfd,0x6e,0x50,0x17,0x73,0x66,0xb9,0xe4,0x67,0x8d,0xeb,0x00,0x74,0x34, -0x46,0x8e,0xc6,0x88,0x30,0x99,0xdb,0x66,0x29,0xa7,0x87,0x08,0x75,0x39,0xea,0x5c, -0xb0,0x03,0x6c,0xd4,0x98,0xcb,0x09,0x22,0xc8,0x56,0x9a,0x72,0xf5,0x30,0xcf,0x37, -0xcb,0x52,0x2b,0x08,0x63,0x4d,0xa1,0xb5,0x51,0xb4,0xda,0x1c,0x71,0xc9,0x07,0x06, -0xdc,0x6d,0xb7,0x08,0xe4,0x6e,0x39,0xe9,0xef,0x63,0xb3,0xbf,0x45,0x6e,0x6d,0xc6, -0xf9,0x1f,0x88,0x4a,0x7c,0x94,0xf7,0x2a,0x11,0x3a,0x35,0x6b,0x67,0x91,0x15,0x12, -0xea,0x21,0xb2,0x17,0xa7,0x29,0x66,0x05,0xba,0x85,0x9e,0x73,0x8b,0xb1,0x68,0xc6, -0x26,0x8d,0x98,0x29,0xd6,0xc4,0xa1,0xf8,0xd7,0x64,0x8b,0x43,0xc3,0x0c,0xf5,0xae, -0xba,0x5f,0x2c,0x2e,0x6e,0x17,0x30,0x59,0x5e,0x94,0xce,0x67,0xe8,0xef,0xba,0x3a, -0x7c,0x5b,0xbb,0x47,0x5f,0xc3,0xf9,0xd7,0xf9,0x3f,0x8b,0x07,0xe1,0x89,0x1f,0x18, -0x79,0xf9,0x37,0xf0,0x51,0x5c,0xb3,0x8f,0xd2,0x13,0xf0,0x88,0xf2,0xa0,0x57,0xa8, -0x90,0x69,0xb7,0xb3,0x28,0xf7,0xee,0xc5,0x16,0xb6,0x3d,0x29,0x93,0xb8,0x54,0x3e, -0x37,0x7d,0x5a,0x6c,0xd0,0xf5,0xdb,0x53,0x3c,0xbf,0xd0,0x0c,0xad,0x92,0x34,0xb7, -0xc4,0x43,0x6f,0xb4,0xe3,0x9f,0xa6,0x92,0x58,0x94,0x63,0x22,0xe3,0xd7,0xd6,0xd4, -0x85,0x25,0x66,0x56,0x5e,0x6c,0xef,0x98,0x5e,0xeb,0x18,0xd8,0x87,0x9d,0x5e,0xd5, -0x9b,0x5e,0xc6,0x2f,0x3b,0xdb,0x8c,0x9d,0x6a,0x69,0xe1,0xe3,0x49,0x54,0x4e,0xdc, -0x69,0xa5,0xd4,0x9a,0x28,0x66,0xea,0xa6,0xd4,0x6b,0xc6,0x31,0xec,0x2b,0x13,0x87, -0x83,0x5c,0xe6,0xca,0x09,0x3a,0x81,0x10,0x9a,0x38,0x68,0x37,0x22,0x66,0xb7,0x2f, -0xac,0x79,0x84,0x1b,0x01,0x1b,0x0a,0x72,0x81,0x20,0x87,0x75,0x33,0x41,0x85,0xf8, -0x2d,0xbe,0x01,0xa4,0x65,0x99,0xd4,0x6a,0x1a,0xe0,0x24,0xd9,0x84,0xc7,0x4d,0x22, -0xf5,0x68,0x0a,0x8a,0xb6,0x6c,0x40,0x1c,0x03,0xe4,0x87,0xc4,0x85,0xed,0xb4,0x86, -0xcc,0xeb,0x58,0x0f,0xe5,0xef,0xd4,0x17,0xef,0x14,0x7a,0x37,0x01,0x81,0x38,0x3b, -0x16,0xa0,0xf4,0xd0,0x8d,0xb8,0xac,0x30,0xf9,0x20,0x78,0xfd,0x78,0x3a,0xea,0x0f, -0xdd,0xf9,0x5a,0x03,0x30,0x9a,0x78,0x6a,0x11,0xad,0x4f,0x9b,0xc2,0x20,0x8d,0x42, -0x3b,0x63,0xb5,0x0b,0x38,0xcb,0xf9,0x10,0xf2,0xc5,0xde,0xf9,0xfc,0x43,0x1b,0x30, -0x96,0xd9,0x8d,0x9b,0xde,0x50,0x14,0x67,0xa3,0xf5,0xa1,0x32,0xde,0x19,0xae,0xb5, -0x0a,0x7b,0xc2,0x2d,0x5c,0xc0,0x92,0x40,0x9f,0x1a,0xb6,0xc6,0xd5,0x9b,0x2a,0x2d, -0x36,0x37,0x80,0xbc,0x65,0x30,0x8c,0xf4,0x1f,0x42,0xa7,0x00,0x9b,0x84,0xf8,0xa4, -0xe0,0x97,0xb8,0x30,0x82,0xed,0x30,0x20,0xcf,0x19,0xbc,0xc4,0xd1,0xc0,0xd6,0x10, -0xbb,0xc4,0x0d,0x2c,0xd6,0x59,0x3b,0x8a,0x70,0x63,0x31,0x0e,0xa4,0x44,0x2a,0x13, -0xf2,0x8f,0x78,0x3c,0x37,0xcf,0x41,0x15,0xf2,0x35,0x98,0x22,0x25,0x5b,0x84,0x46, -0x21,0xca,0x51,0xe7,0xe5,0x94,0x55,0x20,0x88,0x0c,0x66,0x2a,0x3b,0x47,0x28,0x8f, -0x96,0x2f,0x79,0x12,0x38,0x32,0x2b,0xdf,0x4b,0x26,0x69,0xba,0x94,0x0b,0xf4,0x71, -0x94,0x38,0xb9,0x12,0x87,0x0f,0xf3,0xa1,0x75,0xdf,0x0b,0x7c,0x43,0x47,0xf8,0xef, -0xf3,0x81,0x1b,0x21,0x17,0xc8,0xcf,0xad,0x10,0x24,0x0a,0xa7,0x54,0x50,0x5e,0x56, -0xd6,0xcb,0x08,0x30,0x55,0xa8,0x82,0x2e,0xb3,0xca,0xd2,0x6d,0xed,0xef,0x08,0x23, -0xca,0xdc,0xdf,0x62,0x82,0xdf,0x58,0x86,0xd8,0x36,0x4d,0x98,0x72,0xa5,0xc7,0x2e, -0x84,0x01,0x03,0x68,0x5e,0x8a,0xc5,0x8c,0x33,0x9b,0xd1,0xd2,0x18,0xf0,0x30,0x19, -0x31,0xe4,0xb4,0x9a,0xc9,0x79,0x42,0x1e,0x32,0xab,0x4b,0xed,0xb4,0x96,0x55,0x18, -0xc3,0x8f,0x0d,0xc9,0xa2,0x1e,0xa8,0x73,0xbe,0xf8,0x23,0x43,0x27,0x21,0xad,0x33, -0x4b,0x17,0x18,0x24,0x92,0xac,0xe0,0xb0,0x12,0x59,0x26,0x42,0x0d,0xc2,0x54,0x54, -0xe1,0xd8,0x70,0x87,0x47,0xb1,0xe4,0x72,0x44,0x73,0x42,0xc5,0x39,0x75,0xcd,0x28, -0x8b,0x0a,0xc4,0xd4,0x55,0x44,0x10,0x06,0xb6,0x71,0xa4,0x5a,0x0b,0x1f,0x3e,0x17, -0x95,0x3b,0x4f,0xb3,0xde,0x34,0xf4,0x77,0xd5,0xcb,0x32,0xb1,0x5b,0xdf,0xba,0xce, -0x9e,0xad,0x8b,0xa4,0xd1,0xa2,0x84,0x60,0x1a,0xcd,0x35,0x73,0x9c,0x51,0xf1,0x9a, -0x7b,0xae,0x15,0x77,0x10,0xda,0x36,0xd0,0x2a,0x48,0xa8,0x49,0x64,0x7a,0xf8,0xc2, -0x1d,0xeb,0x81,0x9a,0xcc,0x9d,0xbf,0x44,0x9d,0xc1,0x1e,0x02,0xc7,0xbc,0x04,0xad, -0x08,0xd3,0x38,0x24,0x93,0x91,0xc9,0xa1,0x61,0x06,0x63,0xba,0xed,0x3a,0xdf,0x4a, -0xe8,0xda,0x13,0xa1,0x0c,0xa2,0x1c,0x02,0x0b,0x49,0x46,0x16,0xf1,0x0e,0x45,0x53, -0xb8,0x26,0x33,0x87,0x63,0x16,0x6c,0xd0,0x16,0xc5,0x49,0xb2,0x16,0x25,0xc3,0xfb, -0x1c,0xcb,0x82,0x88,0x4e,0x3c,0x3f,0x8d,0x42,0xa4,0x49,0x48,0x52,0x82,0xc7,0x0c, -0xac,0x2f,0x3c,0xbc,0x35,0x31,0x46,0x7f,0x13,0xd3,0xeb,0xf4,0xbb,0x73,0xbe,0x9f, -0xc9,0x1e,0x3e,0x99,0xee,0x58,0xf0,0xa2,0xaa,0x7e,0x74,0x1c,0x4b,0x11,0x15,0xe2, -0x0c,0xcb,0x11,0x82,0x48,0x99,0x6c,0xbc,0xb6,0x92,0x25,0x8b,0x40,0xec,0x82,0x9d, -0xde,0x7c,0x70,0xfd,0x69,0x6e,0x68,0xf1,0x09,0xcb,0x02,0x4c,0xa6,0x42,0x0c,0x7d, -0x51,0xc4,0x4b,0x84,0x51,0xf6,0x74,0x0f,0x29,0xb0,0xfc,0x60,0x7c,0xe4,0x40,0x00, -0xf6,0x28,0xd6,0x29,0xda,0x37,0xf0,0x62,0x84,0x4f,0x2f,0xf1,0xec,0xaa,0x6a,0xc9, -0x43,0x79,0xed,0xe3,0x1e,0x3d,0xb0,0x06,0x73,0xe1,0xc1,0x9a,0x5a,0xcf,0xb3,0x8b, -0x6c,0x11,0xd7,0x95,0xc4,0x20,0x40,0x29,0x22,0x8a,0xa0,0xab,0x92,0x72,0x8d,0xb6, -0x42,0xa8,0x6e,0x68,0xc2,0xd1,0xe5,0xbb,0x1d,0xd9,0xa7,0x71,0x92,0x5a,0x09,0x26, -0x38,0x74,0x42,0x75,0xec,0x7d,0xfa,0x8b,0xd0,0x52,0x5a,0xab,0xce,0xf2,0x4d,0x24, -0x28,0xf3,0xb8,0x77,0x27,0x0c,0x0a,0x0c,0x71,0x5b,0x56,0x26,0xa6,0xb5,0x89,0x02, -0x58,0x36,0x51,0x2c,0x00,0x4d,0x07,0xbe,0x16,0x84,0xea,0xc2,0x8a,0x21,0x08,0xe0, -0xda,0x1d,0x9c,0x6c,0x58,0x91,0x0d,0x31,0x36,0xc1,0xb0,0xbd,0xad,0xbd,0xfb,0xdb, -0x0b,0x2d,0x58,0x63,0x18,0x4d,0x5d,0x0d,0xa5,0x33,0x34,0x29,0x85,0x33,0xac,0x05, -0xcb,0x48,0x4c,0xdb,0x3e,0xbe,0xad,0xe9,0xdd,0x82,0x3d,0x87,0x67,0xd4,0xd8,0xf6, -0xc4,0xb0,0x04,0x4d,0xf3,0x62,0xa3,0xb9,0x1b,0xe3,0xa3,0x91,0x0b,0xd2,0x0b,0xbe, -0xe8,0x27,0x9d,0xcb,0x84,0x36,0xcb,0xdc,0xe2,0xe2,0x39,0x58,0x98,0xde,0xbb,0xd6, -0xb2,0x8f,0x2d,0x23,0x2b,0xc7,0x05,0x51,0x2e,0x50,0x80,0x1e,0x8c,0xc4,0x6d,0x49, -0xc1,0x26,0x73,0x2a,0xa2,0xac,0xc4,0x47,0x88,0x56,0x41,0x60,0x41,0xd9,0x29,0xe5, -0x62,0x11,0x66,0x27,0xbb,0x99,0xa8,0xec,0xd9,0x3e,0xe1,0x40,0xc4,0x3b,0x32,0x5a, -0x4e,0x24,0xcc,0x23,0x13,0x3a,0x77,0xbd,0xa3,0x98,0x8e,0x68,0x16,0xf1,0x7c,0x90, -0xa5,0xfb,0x45,0xde,0x23,0x7a,0x4a,0x27,0x33,0x95,0x6e,0xa0,0x0a,0x94,0x44,0xb7, -0x85,0x9f,0xc6,0x78,0x79,0x70,0x8f,0xa6,0xac,0x4d,0x75,0xc7,0xb3,0xc2,0x24,0x20, -0xec,0x83,0x45,0x6a,0xf8,0x47,0x28,0xc5,0xcd,0x8f,0x34,0xcb,0x97,0x0a,0xa8,0x38, -0x4e,0x20,0x51,0x76,0x12,0x87,0xcf,0xdd,0x19,0x5d,0xc6,0x2a,0x20,0x64,0x8b,0x7f, -0x93,0xd1,0xf0,0x94,0xa2,0xf0,0x5d,0xe7,0x8a,0xf2,0x0c,0x11,0x68,0x21,0x94,0x53, -0x23,0x8c,0x6a,0x64,0x19,0x97,0x4c,0x5d,0x22,0xc4,0x90,0x60,0x8e,0xe6,0x8e,0x21, -0xc0,0x90,0xdb,0x7a,0x54,0x3b,0x95,0xba,0xa3,0xb7,0x5d,0x46,0xd3,0xa2,0x2c,0x82, -0x61,0x20,0xe5,0xb0,0x4b,0xc3,0xfb,0x90,0x38,0x74,0x86,0xfb,0x5e,0x30,0x2a,0x8a, -0x81,0x41,0x48,0x77,0xca,0x2b,0x66,0x03,0x37,0x52,0xff,0x2c,0x28,0x7b,0x02,0x2e, -0xc1,0x4d,0x35,0xba,0xbb,0x82,0x94,0x66,0x54,0xcb,0x80,0xc8,0x47,0xba,0xfa,0xf1, -0x66,0xe0,0xbd,0x68,0x45,0x50,0x5f,0xc9,0x46,0x8a,0x59,0x22,0x51,0x80,0xe1,0x75, -0x97,0xf8,0x88,0xa4,0x59,0x25,0xcc,0x8d,0x5b,0xc4,0x8f,0x1b,0x27,0x66,0x04,0x90, -0x61,0x32,0x03,0xd4,0x35,0xb9,0x8e,0x9d,0xdc,0x22,0x5b,0x3f,0x4e,0x76,0x8c,0x52, -0xc2,0x84,0x9c,0x31,0x3e,0x5c,0xbb,0x3b,0x69,0x65,0xc2,0x92,0x4a,0x3d,0x6f,0x21, -0xc3,0x12,0x23,0x29,0x93,0x12,0x0c,0x14,0x6c,0x84,0x46,0xe5,0x99,0x6c,0xb5,0xb2, -0x16,0x64,0x39,0xdf,0xb6,0xd7,0x79,0xba,0x07,0x51,0xdf,0x7b,0x27,0x36,0x33,0xa7, -0x0f,0x47,0x64,0x53,0x58,0x4a,0x29,0x52,0x0a,0x27,0x10,0x1e,0x3b,0x23,0x18,0x20, -0x99,0x17,0x2b,0xb3,0x8e,0x5a,0xea,0x62,0x06,0x6b,0x35,0x4d,0x6b,0xfc,0x7a,0xbf, -0x1f,0x90,0xfc,0xbd,0x5f,0x6f,0xf3,0x21,0x44,0x65,0x0b,0x88,0x6c,0xcc,0x66,0xa3, -0x3c,0xef,0x03,0x9f,0x44,0xea,0x7d,0x50,0x48,0x04,0x2a,0x89,0xa2,0x14,0x9a,0x37, -0x23,0xfb,0x6d,0xc9,0x00,0x85,0xe3,0x5f,0xdb,0x9d,0x5e,0xdd,0xa5,0x7a,0xb9,0xe6, -0xdc,0x6c,0x90,0x08,0x5f,0xb2,0xbe,0x6f,0xb7,0xa7,0x34,0xfd,0xb7,0x48,0x04,0x29, -0x1d,0xe6,0x56,0x52,0x57,0x29,0x42,0x87,0x56,0x3a,0xd2,0x01,0x0a,0xbb,0xd1,0x29, -0xc2,0x90,0x08,0x55,0x6d,0xec,0xda,0x85,0x09,0x00,0x85,0x4a,0x40,0x21,0x5f,0xe2, -0x9d,0xe1,0x1f,0x25,0xf8,0x62,0x8c,0x84,0x21,0x0a,0x3f,0xe2,0xee,0x48,0xa7,0x0a, -0x12,0x0d,0x4a,0x09,0x1a,0x00, +0150,0061,0061,0101,0131,0046,0123,0131,0071,0314,0132,0071,0000,0012,0277,0337, +0200,0000,0020,0130,0003,0377,0342,0077,0377,0377,0360,0277,0347,0337,0140,0140, +0033,0074,0000,0036,0316,0206,0063,0012,0075,0367,0045,0006,0276,0000,0013,0313, +0322,0152,0305,0153,0320,0016,0353,0171,0346,0364,0001,0153,0120,0322,0313,0124, +0200,0320,0112,0232,0317,0132,0367,0271,0352,0173,0120,0110,0111,0133,0155,0215, +0331,0227,0135,0260,0006,0371,0340,0152,0140,0040,0020,0011,0250,0322,0117,0124, +0323,0046,0043,0046,0064,0046,0103,0020,0003,0114,0202,0010,0002,0106,0204,0324, +0206,0200,0000,0032,0064,0006,0200,0022,0230,0222,0051,0342,0247,0344,0236,0221, +0103,0011,0240,0006,0040,0060,0115,0031,0000,0011,0075,0122,0224,0212,0150,0151, +0372,0240,0001,0223,0100,0015,0000,0006,0023,0041,0240,0022,0210,0236,0246,0123, +0115,0114,0322,0000,0000,0155,0115,0032,0075,0064,0320,0324,0311,0215,0115,0000, +0221,0010,0021,0064,0310,0021,0042,0236,0120,0000,0000,0000,0006,0215,0077,0367, +0271,0364,0161,0147,0053,0244,0275,0235,0272,0122,0121,0032,0050,0331,0055,0011, +0001,0114,0333,0110,0134,0267,0113,0306,0272,0134,0351,0257,0257,0335,0242,0245, +0042,0306,0060,0130,0211,0050,0275,0073,0224,0141,0157,0116,0335,0042,0004,0106, +0145,0011,0155,0171,0334,0155,0105,0074,0355,0323,0060,0023,0113,0307,0121,0215, +0033,0134,0256,0213,0272,0053,0241,0256,0116,0363,0316,0024,0031,0231,0024,0221, +0236,0070,0042,0202,0163,0264,0302,0267,0147,0115,0057,0072,0271,0214,0232,0066, +0057,0117,0136,0257,0027,0272,0270,0130,0265,0031,0023,0041,0154,0105,0213,0105, +0006,0211,0347,0136,0333,0316,0243,0150,0244,0307,0261,0133,0231,0115,0106,0014, +0130,0111,0275,0253,0244,0146,0365,0363,0317,0046,0107,0257,0136,0317,0157,0245, +0344,0214,0031,0061,0033,0044,0314,0104,0206,0011,0053,0334,0163,0144,0117,0027, +0046,0151,0014,0345,0163,0050,0050,0231,0276,0213,0375,0374,0136,0265,0253,0133, +0357,0377,0117,0341,0125,0175,0356,0315,0223,0036,0152,0245,0025,0137,0055,0224, +0310,0067,0244,0213,0353,0044,0221,0230,0126,0146,0174,0325,0145,0277,0026,0370, +0163,0055,0350,0314,0354,0261,0311,0142,0215,0007,0375,0176,0300,0316,0172,0077, +0325,0247,0337,0254,0364,0173,0252,0015,0265,0323,0141,0363,0247,0313,0361,0130, +0332,0363,0115,0347,0323,0057,0132,0107,0124,0145,0177,0230,0323,0307,0026,0262, +0161,0241,0275,0247,0034,0074,0071,0006,0325,0211,0161,0071,0161,0342,0157,0246, +0256,0136,0230,0065,0160,0332,0046,0237,0252,0265,0274,0067,0147,0276,0342,0172, +0023,0254,0145,0163,0315,0250,0307,0063,0153,0126,0047,0213,0170,0322,0235,0145, +0306,0102,0120,0175,0070,0151,0265,0365,0247,0053,0127,0031,0256,0051,0152,0173, +0174,0143,0213,0343,0024,0233,0365,0134,0213,0256,0117,0343,0315,0122,0235,0044, +0307,0005,0072,0073,0060,0207,0072,0226,0074,0275,0233,0046,0055,0047,0365,0246, +0153,0033,0143,0024,0270,0047,0224,0317,0103,0262,0216,0237,0246,0133,0031,0357, +0262,0152,0326,0231,0151,0234,0353,0172,0107,0057,0215,0012,0250,0154,0206,0116, +0276,0061,0034,0307,0167,0071,0101,0001,0060,0325,0351,0265,0320,0215,0127,0003, +0170,0243,0161,0301,0333,0305,0076,0026,0346,0206,0113,0020,0106,0060,0152,0247, +0234,0241,0051,0370,0034,0125,0053,0024,0366,0347,0303,0216,0076,0041,0323,0321, +0103,0341,0043,0171,0002,0002,0011,0214,0020,0020,0112,0115,0312,0211,0115,0056, +0145,0065,0255,0113,0240,0020,0250,0020,0020,0115,0317,0142,0353,0247,0260,0070, +0062,0360,0204,0047,0325,0276,0153,0245,0172,0340,0020,0331,0156,0136,0247,0110, +0213,0273,0112,0347,0260,0152,0373,0274,0177,0166,0014,0113,0177,0047,0312,0373, +0306,0154,0156,0303,0076,0002,0215,0030,0276,0253,0302,0162,0142,0174,0001,0143, +0232,0130,0264,0023,0073,0045,0346,0030,0306,0177,0117,0031,0235,0134,0205,0376, +0055,0170,0162,0076,0334,0361,0374,0107,0267,0331,0047,0111,0203,0056,0357,0351, +0022,0247,0231,0375,0357,0311,0257,0341,0065,0340,0175,0232,0141,0175,0246,0366, +0357,0344,0053,0143,0137,0237,0266,0005,0342,0063,0165,0141,0277,0275,0363,0012, +0373,0137,0233,0350,0077,0226,0037,0305,0051,0154,0350,0222,0265,0117,0334,0271, +0300,0157,0175,0130,0050,0273,0241,0373,0037,0126,0244,0177,0004,0201,0307,0132, +0025,0041,0214,0226,0220,0056,0177,0046,0363,0367,0055,0373,0237,0241,0157,0216, +0375,0066,0101,0336,0326,0004,0237,0332,0352,0324,0317,0152,0041,0157,0164,0077, +0103,0236,0127,0274,0016,0170,0073,0156,0106,0037,0172,0372,0222,0367,0336,0350, +0017,0225,0321,0160,0231,0132,0355,0337,0127,0270,0311,0370,0052,0065,0374,0021, +0177,0163,0337,0364,0157,0021,0142,0266,0223,0237,0021,0177,0076,0263,0055,0152, +0310,0234,0354,0257,0121,0143,0042,0311,0114,0332,0230,0147,0346,0014,0043,0072, +0110,0210,0171,0071,0360,0204,0014,0221,0233,0230,0340,0313,0257,0024,0216,0267, +0103,0077,0037,0113,0373,0344,0161,0234,0076,0034,0360,0356,0022,0045,0157,0345, +0235,0235,0301,0257,0205,0236,0127,0321,0037,0242,0013,0104,0104,0006,0107,0313, +0136,0166,0056,0055,0012,0123,0102,0023,0345,0006,0267,0040,0327,0130,0035,0057, +0176,0115,0112,0335,0301,0255,0156,0353,0175,0007,0254,0376,0124,0024,0115,0165, +0275,0027,0331,0370,0331,0160,0205,0177,0221,0245,0070,0073,0347,0252,0222,0352, +0053,0222,0234,0336,0236,0374,0267,0013,0031,0366,0370,0143,0133,0306,0223,0072, +0374,0074,0361,0102,0022,0301,0311,0245,0260,0221,0126,0236,0046,0276,0161,0230, +0117,0042,0230,0146,0363,0054,0147,0073,0024,0245,0156,0206,0201,0104,0014,0114, +0056,0062,0131,0040,0366,0117,0205,0247,0207,0240,0266,0217,0275,0326,0006,0077, +0275,0331,0124,0233,0333,0364,0373,0071,0351,0040,0130,0135,0205,0134,0333,0124, +0063,0065,0017,0002,0146,0240,0010,0040,0322,0143,0250,0252,0233,0351,0312,0155, +0176,0116,0357,0312,0100,0000,0172,0313,0015,0266,0323,0351,0253,0063,0141,0314, +0214,0153,0220,0241,0227,0303,0276,0055,0222,0002,0074,0202,0240,0301,0074,0200, +0346,0071,0330,0306,0362,0341,0146,0225,0336,0265,0342,0137,0341,0033,0231,0272, +0133,0253,0212,0026,0301,0313,0246,0233,0113,0320,0166,0343,0263,0322,0167,0135, +0275,0077,0122,0052,0046,0024,0047,0015,0070,0321,0052,0167,0023,0354,0034,0226, +0121,0264,0201,0271,0046,0322,0225,0213,0203,0314,0031,0323,0120,0117,0204,0050, +0222,0164,0263,0065,0061,0023,0251,0256,0167,0367,0260,0044,0201,0140,0061,0120, +0306,0366,0152,0073,0045,0302,0073,0075,0264,0135,0276,0251,0166,0105,0225,0350, +0226,0033,0375,0357,0307,0350,0344,0336,0266,0206,0221,0115,0036,0017,0230,0275, +0054,0012,0003,0321,0046,0010,0335,0237,0306,0352,0351,0064,0254,0130,0334,0225, +0107,0141,0175,0251,0002,0372,0360,0023,0252,0201,0133,0052,0030,0301,0160,0303, +0131,0222,0231,0056,0172,0257,0171,0274,0154,0357,0362,0074,0340,0360,0261,0163, +0173,0250,0074,0310,0316,0231,0031,0173,0274,0164,0152,0223,0352,0117,0226,0106, +0327,0212,0301,0116,0124,0337,0345,0363,0112,0173,0230,0143,0204,0322,0033,0012, +0340,0025,0064,0031,0265,0304,0277,0016,0217,0135,0224,0174,0133,0013,0155,0243, +0050,0324,0145,0300,0272,0343,0145,0034,0175,0124,0206,0231,0173,0173,0241,0103, +0051,0151,0266,0222,0226,0261,0016,0362,0175,0374,0207,0357,0373,0203,0374,0133, +0152,0220,0330,0216,0347,0133,0206,0106,0143,0111,0114,0221,0246,0043,0042,0110, +0312,0040,0111,0142,0144,0244,0221,0150,0026,0114,0151,0051,0066,0000,0263,0023, +0032,0240,0064,0261,0130,0242,0055,0011,0121,0031,0104,0215,0024,0246,0106,0310, +0322,0022,0243,0101,0012,0111,0011,0062,0022,0312,0220,0246,0142,0304,0066,0145, +0204,0054,0211,0052,0112,0045,0262,0120,0210,0305,0050,0247,0247,0162,0054,0221, +0204,0331,0046,0325,0343,0246,0100,0114,0231,0115,0114,0230,0132,0114,0243,0060, +0235,0334,0311,0143,0110,0121,0101,0114,0322,0106,0112,0067,0235,0160,0046,0012, +0154,0221,0210,0262,0064,0143,0316,0272,0035,0327,0004,0203,0106,0306,0210,0025, +0040,0246,0106,0302,0231,0020,0010,0171,0333,0273,0361,0337,0162,0200,0326,0320, +0103,0032,0107,0203,0365,0225,0066,0205,0003,0030,0321,0345,0057,0175,0112,0010, +0236,0115,0151,0355,0364,0305,0261,0052,0115,0342,0106,0366,0160,0052,0100,0112, +0246,0100,0375,0172,0350,0336,0214,0360,0103,0026,0272,0054,0242,0350,0204,0376, +0261,0164,0254,0364,0117,0023,0304,0343,0305,0066,0113,0134,0041,0043,0050,0010, +0013,0073,0153,0146,0010,0133,0055,0213,0126,0063,0163,0236,0047,0276,0162,0103, +0341,0324,0327,0204,0362,0107,0167,0263,0127,0145,0276,0267,0222,0122,0303,0120, +0331,0245,0161,0220,0203,0336,0145,0330,0064,0202,0076,0242,0364,0024,0053,0146, +0276,0252,0146,0325,0245,0205,0006,0311,0027,0041,0116,0143,0177,0215,0130,0305, +0254,0133,0301,0070,0001,0266,0301,0254,0347,0351,0027,0366,0130,0070,0355,0025, +0125,0124,0373,0103,0134,0001,0277,0034,0156,0236,0331,0256,0154,0307,0306,0324, +0065,0057,0013,0212,0052,0217,0266,0107,0221,0016,0311,0112,0302,0047,0256,0312, +0237,0210,0333,0111,0073,0334,0133,0271,0020,0223,0264,0005,0155,0260,0265,0105, +0275,0063,0031,0257,0152,0221,0105,0102,0040,0103,0204,0034,0017,0071,0127,0214, +0126,0047,0114,0323,0214,0342,0333,0114,0210,0153,0270,0174,0205,0321,0363,0265, +0070,0242,0107,0204,0326,0271,0212,0221,0131,0121,0305,0332,0130,0012,0253,0162, +0220,0065,0231,0261,0023,0331,0136,0331,0147,0216,0250,0232,0126,0207,0231,0022, +0371,0217,0231,0257,0161,0151,0276,0137,0067,0306,0014,0165,0170,0171,0110,0136, +0071,0057,0132,0276,0261,0261,0310,0063,0213,0075,0273,0272,0264,0074,0330,0312, +0316,0072,0200,0214,0345,0107,0252,0073,0030,0322,0254,0131,0311,0224,0337,0147, +0250,0256,0027,0110,0302,0104,0305,0003,0375,0046,0066,0203,0177,0073,0132,0241, +0024,0065,0362,0024,0257,0300,0044,0201,0132,0303,0027,0332,0270,0106,0120,0073, +0377,0327,0167,0211,0307,0175,0274,0344,0333,0036,0124,0001,0225,0266,0132,0203, +0346,0201,0221,0057,0051,0136,0022,0036,0216,0164,0322,0105,0024,0141,0035,0027, +0212,0302,0311,0272,0216,0352,0104,0310,0064,0023,0267,0341,0140,0044,0246,0137, +0222,0222,0276,0231,0113,0061,0355,0341,0250,0340,0020,0167,0060,0375,0357,0235, +0010,0367,0254,0240,0273,0041,0235,0145,0342,0127,0004,0013,0101,0250,0104,0217, +0276,0031,0157,0176,0172,0256,0335,0276,0244,0275,0155,0251,0025,0315,0134,0274, +0264,0240,0335,0037,0163,0254,0265,0121,0270,0035,0264,0303,0063,0272,0244,0264, +0101,0165,0305,0367,0025,0073,0051,0352,0052,0076,0231,0333,0246,0027,0002,0123, +0141,0364,0311,0145,0147,0125,0103,0020,0332,0311,0152,0251,0251,0017,0103,0157, +0176,0320,0307,0263,0133,0322,0105,0357,0030,0321,0121,0226,0006,0130,0221,0335, +0034,0022,0316,0265,0210,0225,0056,0334,0210,0104,0030,0306,0207,0046,0154,0325, +0101,0002,0331,0240,0256,0367,0332,0015,0205,0043,0246,0332,0056,0306,0301,0071, +0330,0363,0244,0226,0340,0315,0276,0342,0130,0171,0141,0331,0241,0161,0171,0331, +0320,0256,0320,0035,0157,0031,0142,0122,0322,0054,0322,0106,0314,0041,0242,0230, +0013,0030,0200,0103,0151,0031,0151,0103,0104,0261,0066,0220,0307,0246,0012,0132, +0022,0226,0123,0125,0150,0052,0165,0041,0172,0202,0357,0075,0100,0032,0172,0170, +0153,0151,0201,0022,0333,0024,0060,0041,0356,0236,0230,0033,0354,0100,0205,0146, +0213,0324,0000,0252,0243,0335,0340,0247,0251,0200,0101,0055,0015,0266,0036,0027, +0337,0210,0247,0214,0370,0367,0253,0307,0344,0113,0241,0043,0361,0337,0051,0110, +0166,0331,0050,0020,0010,0123,0031,0120,0063,0023,0370,0103,0074,0134,0043,0347, +0164,0220,0002,0134,0174,0315,0345,0256,0340,0304,0053,0063,0163,0264,0133,0150, +0112,0061,0175,0251,0146,0315,0216,0213,0115,0144,0166,0145,0334,0206,0151,0352, +0134,0153,0307,0150,0166,0315,0233,0067,0362,0027,0002,0240,0022,0220,0330,0015, +0131,0010,0200,0051,0002,0222,0211,0002,0076,0016,0236,0075,0042,0301,0356,0264, +0153,0040,0213,0102,0122,0361,0011,0012,0166,0104,0112,0167,0345,0342,0210,0024, +0100,0351,0210,0002,0350,0342,0336,0175,0014,0002,0051,0031,0024,0273,0002,0036, +0142,0226,0343,0100,0242,0121,0233,0332,0003,0033,0220,0351,0251,0037,0034,0352, +0125,0016,0367,0200,0207,0357,0200,0357,0273,0007,0135,0064,0166,0022,0045,0244, +0151,0202,0257,0262,0215,0155,0352,0326,0364,0126,0255,0142,0325,0032,0252,0373, +0012,0346,0254,0125,0257,0125,0165,0131,0136,0055,0275,0025,0253,0311,0265,0156, +0126,0253,0200,0045,0124,0063,0252,0064,0346,0230,0240,0066,0044,0301,0003,0155, +0325,0170,0321,0261,0005,0115,0200,0061,0273,0135,0042,0252,0253,0052,0052,0256, +0025,0072,0013,0246,0140,0100,0347,0164,0035,0276,0251,0115,0060,0145,0250,0144, +0214,0152,0314,0342,0204,0271,0142,0011,0140,0131,0044,0026,0156,0140,0011,0104, +0262,0102,0164,0345,0343,0320,0171,0217,0100,0076,0065,0103,0040,0266,0210,0166, +0327,0365,0230,0231,0000,0142,0064,0175,0107,0237,0236,0165,0032,0037,0237,0251, +0325,0373,0226,0256,0147,0131,0046,0245,0127,0067,0233,0220,0210,0150,0132,0144, +0161,0112,0352,0260,0203,0332,0353,0324,0372,0151,0034,0336,0205,0305,0371,0045, +0000,0002,0134,0212,0131,0274,0201,0303,0027,0214,0034,0245,0261,0161,0036,0270, +0237,0103,0110,0143,0074,0161,0031,0346,0017,0101,0164,0171,0256,0006,0304,0214, +0204,0001,0347,0236,0343,0105,0153,0176,0041,0103,0016,0170,0325,0332,0155,0166, +0120,0215,0230,0240,0224,0203,0047,0277,0021,0043,0035,0204,0364,0206,0373,0362, +0101,0301,0113,0211,0024,0060,0120,0320,0332,0006,0075,0247,0162,0303,0131,0236, +0277,0061,0102,0013,0065,0270,0066,0230,0245,0266,0164,0303,0254,0240,0365,0347, +0313,0233,0104,0310,0171,0176,0306,0053,0034,0033,0370,0320,0122,0134,0357,0371, +0274,0157,0136,0365,0355,0247,0272,0014,0036,0262,0107,0250,0200,0327,0313,0174, +0266,0263,0363,0041,0350,0167,0355,0020,0160,0300,0157,0350,0074,0261,0145,0257, +0107,0225,0047,0113,0263,0064,0230,0147,0371,0137,0232,0055,0143,0003,0334,0354, +0007,0302,0161,0342,0310,0351,0170,0074,0152,0130,0140,0354,0341,0117,0176,0011, +0317,0231,0356,0313,0244,0020,0273,0110,0244,0237,0144,0356,0167,0245,0271,0044, +0010,0045,0211,0370,0350,0160,0101,0262,0345,0054,0274,0052,0026,0022,0267,0205, +0043,0010,0132,0061,0213,0061,0167,0002,0366,0053,0277,0263,0220,0301,0147,0060, +0066,0224,0036,0106,0121,0313,0143,0112,0050,0044,0234,0216,0113,0235,0011,0040, +0273,0245,0351,0131,0030,0102,0162,0002,0156,0061,0034,0101,0246,0112,0351,0215, +0266,0014,0216,0064,0241,0245,0215,0166,0165,0307,0235,0114,0345,0204,0205,0147, +0034,0165,0062,0175,0125,0306,0252,0362,0203,0236,0335,0110,0104,0216,0175,0225, +0266,0006,0167,0033,0240,0171,0042,0113,0061,0000,0203,0221,0224,0321,0055,0066, +0214,0125,0013,0151,0021,0217,0136,0275,0024,0036,0176,0275,0315,0361,0014,0263, +0167,0350,0246,0331,0357,0306,0234,0246,0350,0341,0365,0020,0211,0216,0111,0110, +0122,0324,0217,0041,0315,0246,0031,0033,0130,0264,0305,0103,0155,0035,0061,0066, +0146,0144,0104,0012,0376,0055,0164,0221,0031,0357,0077,0072,0013,0243,0164,0156, +0337,0055,0304,0061,0262,0032,0264,0220,0347,0064,0334,0356,0147,0142,0272,0275, +0161,0356,0255,0206,0321,0177,0137,0205,0301,0006,0243,0016,0102,0066,0152,0365, +0354,0175,0105,0063,0144,0132,0210,0027,0153,0015,0167,0361,0033,0367,0054,0003, +0244,0054,0035,0110,0370,0030,0333,0114,0143,0033,0340,0110,0146,0376,0370,0347, +0130,0127,0072,0221,0271,0345,0252,0154,0157,0273,0256,0334,0104,0164,0302,0003, +0314,0143,0014,0244,0207,0204,0164,0121,0105,0243,0236,0077,0056,0373,0276,0371, +0105,0142,0125,0157,0021,0256,0262,0013,0104,0221,0103,0067,0071,0264,0247,0200, +0241,0210,0341,0003,0343,0071,0251,0167,0302,0275,0164,0121,0217,0124,0070,0056, +0115,0034,0026,0024,0012,0010,0350,0022,0104,0112,0227,0144,0175,0265,0172,0150, +0363,0023,0063,0054,0131,0067,0263,0341,0074,0155,0170,0171,0013,0031,0020,0141, +0335,0300,0344,0225,0246,0002,0022,0031,0332,0253,0025,0253,0302,0243,0003,0033, +0025,0110,0220,0243,0010,0052,0004,0212,0206,0006,0063,0274,0146,0315,0215,0261, +0140,0040,0145,0213,0040,0100,0045,0130,0052,0005,0054,0036,0040,0246,0113,0110, +0012,0100,0235,0340,0010,0356,0040,0245,0112,0214,0040,0031,0164,0235,0262,0372, +0103,0012,0202,0321,0012,0320,0273,0264,0013,0326,0062,0257,0204,0254,0015,0043, +0012,0002,0024,0025,0054,0220,0201,0225,0004,0135,0306,0064,0002,0245,0161,0262, +0267,0250,0004,0013,0261,0015,0320,0316,0213,0066,0125,0342,0352,0045,0051,0230, +0302,0246,0213,0217,0277,0176,0272,0116,0250,0306,0316,0116,0234,0266,0121,0150, +0362,0053,0243,0051,0042,0231,0200,0136,0246,0363,0340,0067,0274,0057,0152,0136, +0032,0011,0004,0171,0342,0306,0242,0034,0231,0006,0322,0105,0016,0276,0166,0243, +0302,0372,0010,0347,0203,0145,0211,0055,0236,0070,0137,0206,0350,0110,0214,0075, +0067,0250,0060,0300,0044,0340,0203,0277,0060,0065,0313,0126,0013,0310,0351,0002, +0001,0050,0110,0125,0276,0162,0370,0325,0222,0303,0004,0060,0174,0135,0355,0112, +0002,0214,0067,0172,0034,0155,0230,0333,0201,0226,0172,0011,0117,0165,0370,0346, +0061,0222,0065,0104,0152,0300,0224,0066,0155,0210,0054,0305,0223,0156,0307,0275, +0133,0065,0114,0127,0355,0330,0016,0132,0154,0154,0136,0034,0264,0144,0057,0266, +0043,0243,0254,0053,0065,0316,0161,0155,0035,0303,0252,0205,0363,0242,0052,0236, +0347,0236,0352,0342,0126,0003,0237,0245,0010,0070,0243,0033,0363,0337,0123,0065, +0015,0046,0324,0020,0162,0145,0333,0267,0060,0337,0304,0110,0222,0043,0371,0364, +0272,0102,0007,0267,0323,0210,0004,0355,0022,0143,0013,0250,0363,0210,0161,0172, +0356,0144,0121,0227,0127,0261,0210,0276,0160,0313,0123,0333,0045,0356,0136,0357, +0273,0306,0306,0104,0374,0044,0303,0307,0324,0054,0244,0305,0336,0244,0337,0206, +0364,0275,0262,0101,0217,0261,0206,0160,0220,0311,0142,0154,0117,0363,0016,0176, +0166,0117,0036,0055,0132,0311,0031,0140,0331,0333,0075,0211,0124,0014,0345,0073, +0161,0036,0045,0140,0007,0253,0037,0167,0321,0334,0207,0223,0171,0340,0146,0311, +0264,0066,0043,0313,0041,0262,0122,0072,0102,0055,0326,0236,0056,0034,0263,0156, +0352,0004,0162,0206,0330,0162,0333,0233,0273,0071,0331,0236,0046,0061,0230,0056, +0326,0117,0027,0243,0223,0104,0044,0052,0264,0067,0366,0305,0047,0313,0313,0214, +0143,0256,0103,0210,0001,0103,0170,0264,0316,0005,0050,0175,0120,0150,0225,0022, +0107,0162,0237,0152,0104,0233,0110,0164,0350,0013,0007,0126,0234,0367,0363,0221, +0132,0152,0316,0110,0271,0323,0030,0260,0345,0113,0322,0155,0110,0166,0165,0022, +0137,0126,0275,0240,0275,0234,0220,0227,0340,0210,0365,0274,0116,0362,0276,0207, +0056,0205,0002,0334,0147,0132,0015,0061,0232,0011,0253,0051,0167,0014,0336,0236, +0251,0316,0255,0050,0032,0363,0203,0257,0000,0120,0157,0142,0021,0002,0213,0140, +0131,0243,0026,0124,0057,0044,0120,0311,0174,0270,0120,0010,0000,0303,0001,0040, +0203,0032,0265,0200,0161,0044,0043,0164,0243,0240,0327,0154,0066,0151,0337,0046, +0254,0163,0004,0022,0210,0161,0265,0027,0024,0324,0263,0254,0025,0232,0246,0155, +0276,0226,0361,0104,0072,0362,0373,0302,0336,0135,0240,0067,0253,0020,0065,0067, +0126,0061,0023,0331,0243,0206,0123,0155,0263,0275,0020,0251,0154,0320,0136,0352, +0010,0251,0122,0041,0260,0151,0256,0065,0056,0102,0054,0322,0314,0135,0021,0226, +0236,0355,0046,0141,0014,0040,0240,0335,0016,0152,0246,0012,0022,0232,0041,0020, +0222,0047,0216,0325,0312,0040,0326,0075,0147,0330,0315,0013,0017,0222,0367,0074, +0367,0071,0352,0105,0313,0361,0126,0310,0131,0021,0246,0353,0305,0334,0007,0055, +0365,0301,0074,0043,0157,0312,0124,0103,0323,0214,0147,0125,0260,0246,0147,0204, +0223,0337,0010,0036,0246,0211,0240,0260,0126,0312,0075,0316,0203,0170,0214,0144, +0203,0163,0117,0125,0174,0103,0110,0050,0315,0327,0121,0270,0031,0364,0144,0075, +0361,0073,0372,0334,0220,0054,0343,0146,0271,0344,0147,0215,0346,0340,0164,0064, +0103,0107,0143,0146,0072,0205,0053,0164,0123,0116,0316,0020,0352,0161,0324,0271, +0140,0006,0230,0251,0061,0206,0022,0105,0310,0127,0114,0270,0070,0024,0107,0163, +0146,0356,0336,0226,0223,0032,0067,0234,0143,0116,0163,0273,0247,0103,0200,0306, +0233,0111,0247,0334,0266,0263,0300,0261,0333,0123,0143,0135,0366,0314,0134,0261, +0305,0320,0213,0142,0061,0322,0206,0232,0331,0340,0104,0302,0135,0102,0033,0040, +0264,0270,0225,0210,0012,0352,0012,0170,0305,0354,0305,0226,0061,0064,0154,0301, +0107,0133,0021,0043,0361,0255,0222,0052,0017,0014,0061,0326,0265,0233,0141,0205, +0215,0302,0305,0312,0223,0044,0216,0040,0376,0004,0326,0220,0324,0260,0271,0051, +0015,0176,0157,0064,0372,0076,0167,0035,0220,0224,0207,0104,0006,0375,0035,0266, +0010,0023,0106,0161,0372,0101,0037,0150,0207,0205,0001,0076,0241,0040,0316,0336, +0314,0043,0337,0272,0044,0252,0307,0324,0132,0317,0261,0027,0075,0256,0225,0231, +0312,0216,0074,0151,0126,0154,0247,0220,0050,0166,0063,0047,0073,0302,0254,0257, +0146,0214,0371,0322,0121,0210,0167,0202,0121,0347,0315,0250,0324,0213,0041,0241, +0361,0145,0134,0265,0356,0156,0366,0040,0263,0252,0332,0263,0113,0330,0235,0132, +0346,0050,0125,0242,0262,0103,0306,0022,0250,0235,0066,0303,0113,0251,0325,0130, +0270,0316,0055,0151,0302,0213,0367,0153,0170,0025,0145,0261,0241,0213,0132,0031, +0011,0071,0200,0204,0046,0216,0032,0015,0310,0114,0325,0213,0152,0036,0040,0201, +0240,0255,0310,0271,0001,0040,0207,0165,0063,0101,0205,0373,0055,0255,0201,0024, +0214,0263,0072,0214,0303,0136,0002,0115,0210,0114,0162,0322,0063,0266,0140,0057, +0127,0312,0130,0240,0340,0177,0031,0070,0261,0036,0267,0260,0265,0155,0266,0301, +0077,0036,0375,0100,0277,0170,0223,0321,0270,0014,0010,0340,0354,0124,0207,0246, +0204,0155,0304,0335,0207,0310,0200,0361,0372,0334,0353,0250,0037,0273,0162,0262, +0014,0272,0151,0335,0250,0120,0326,0217,0233,0301,0010,0041,0250,0041,0325,0373, +0110,0261,0174,0077,0220,0207,0206,0056,0366,0307,0334,0027,0331,0204,0126,0314, +0154,0336,0321,0040,0111,0216,0217,0325,0011,0225,0341,0232,0324,0301,0057,0170, +0041,0151,0305,0320,0002,0023,0343,0115,0261,0265,0115,0223,0013,0073,0033,0321, +0036,0165,0010,0255,0164,0037,0042,0246,0300,0233,0302,0173,0122,0160,0113,0336, +0014,0040,0270,0230,0020,0147,0154,0137,0021,0064,0154,0063,0144,0057,0173,0100, +0312,0305,0141,0223,0270,0247,0006,0061,0020,0352,0104,0102,0241,0076,0221,0355, +0007,0147,0374,0174,0006,0121,0273,0161,0336,0311,0055,0247,0312,0122,0312,0153, +0125,0237,0312,0140,0331,0131,0041,0337,0046,0307,0273,0367,0111,0362,0305,0357, +0011,0043,0203,0002,0265,0263,0111,0231,0335,0104,0202,0375,0034,0062,0107,0013, +0221,0050,0070,0177,0236,0113,0056,0367,0133,0336,0014,0277,0276,0377,0070,0021, +0262,0021,0154,0014,0372,0310,0044,0201,0114,0165,0044,0205,0242,0166,0254,0060, +0201,0202,0235,0010,0041,0165,0216,0126,0143,0157,0157,0170,0040,0107,0225,0271, +0276,0304,0205,0175,0136,0226,0342,0323,0313,0041,0312,0227,0033,0272,0020,0004, +0015,0041,0171,0052,0327,0026,0147,0067,0311,0312,0026,0354,0130,0061,0101,0113, +0301,0050,0313,0304,0260,0041,0112,0014,0325,0035,0145,0336,0031,0230,0112,0003, +0176,0164,0017,0104,0053,0041,0276,0272,0330,0214,0232,0172,0026,0141,0053,0047, +0046,0033,0155,0306,0136,0032,0013,0065,0020,0240,0247,0232,0143,0102,0236,0361, +0101,0335,0220,0216,0337,0121,0063,0054,0323,0035,0234,0347,0233,0135,0022,0354, +0053,0070,0162,0322,0044,0150,0005,0240,0157,0116,0150,0031,0130,0334,0373,0025, +0005,0164,0264,0164,0125,0050,0341,0074,0011,0151,0060,0164,0335,0255,0177,0021, +0173,0044,0321,0225,0004,0060,0015,0106,0164,0343,0233,0311,0361,0231,0367,0074, +0051,0356,0041,0265,0065,0322,0205,0260,0224,0144,0171,0357,0022,0055,0253,0201, +0232,0314,0213,0137,0345,0012,0240,0207,0140,0337,0303,0010,0263,0075,0063,0004, +0104,0105,0101,0222,0241,0160,0203,0061,0325,0161,0071,0327,0052,0364,0105,0320, +0234,0210,0145,0020,0340,0020,0132,0112,0060,0265,0210,0162,0136,0363,0043,0165, +0254,0112,0165,0227,0227,0160,0312,0161,0147,0226,0106,0055,0044,0372,0172,0265, +0015,0046,0370,0373,0136,0364,0152,0220,0203,0040,0145,0041,0142,0302,0032,0013, +0317,0052,0332,0114,0121,0027,0271,0350,0272,0175,0012,0231,0275,0123,0242,0033, +0371,0307,0045,0216,0312,0052,0247,0336,0203,0211,0142,0042,0273,0203,0062,0304, +0130,0222,0046,0133,0017,0055,0224,0211,0142,0320,0070,0101,0116,0257,0075,0354, +0375,0145,0152,0150,0355,0011,0313,0002,0114,0246,0102,0014,0174,0106,0321,0056, +0021,0107,0303,0240,0167,0115,0147,0332,0303,0336,0104,0000,0017,0005,0032,0265, +0073,0106,0275,0230,0241,0023,0273,0374,0370,0125,0065,0162,0121,0332,0334,0371, +0061,0347,0326,0003,0132,0317,0232,0035,0361,0033,0155,0352,0115,0054,0063,0307, +0310,0332,0240,0140,0333,0150,0112,0202,0256,0111,0331,0033,0154,0205,0120,0334, +0311,0205,0243,0344,0273,0035,0331,0227,0121,0230,0125,0151,0043,0033,0072,0041, +0072,0360,0175,0272,0214,0143,0041,0350,0265,0255,0353,0254,0223,0111,0012,0073, +0354,0035,0311,0263,0002,0203,0033,0126,0265,0151,0251,0254,0332,0100,0226,0015, +0204,0113,0000,0023,0101,0346,0313,0042,0163,0160,0242,0210,0010,0043,0003,0150, +0164,0341,0261,0136,0041,0015,0061,0066,0301,0260,0265,0126,0366,0355,0127,0130, +0152,0206,0061,0204,0151,0310,0332,0121,0210,0311,0054,0045,0235,0134,0054,0124, +0101,0030,0254,0172,0372,0257,0117,0071,0031,0350,0160,0371,0233,0217,0026,0226, +0000,0211,0276,0367,0025,0034,0221,0255,0272,0070,0020,0274,0240,0271,0325,0004, +0363,0321,0200,0306,0331,0133,0226,0056,0037,0046,0344,0367,0256,0325,0254,0077, +0011,0005,0027,0174,0021,0312,0127,0051,0020,0001,0150,0210,0102,0316,0150,0011, +0063,0211,0125,0025,0163,0021,0035,0302,0271,0005,0201,0007,0104,0247,0165,0150, +0105,0230,0236,0134,0131,0321,0204,0207,0341,0144,0004,0120,0255,0016,0333,0335, +0274,0330,0321,0110,0355,0130,0305,0265,0224,0116,0326,0203,0273,0256,0110,0031, +0057,0056,0252,0343,0152,0103,0226,0147,0025,0271,0200,0052,0122,0224,0255,0331, +0317,0336,0170,0130,0336,0107,0210,0060,0121,0342,0126,0124,0207,0044,0020,0072, +0040,0121,0203,0033,0221,0167,0100,0341,0005,0065,0060,0360,0345,0124,0033,0047, +0020,0050,0273,0011,0103,0337,0331,0031,0134,0213,0124,0100,0301,0027,0177,0107, +0243,0332,0122,0213,0301,0167,0235,0253,0324,0030,0042,0350,0041,0204,0123,0043, +0153,0146,0144,0031,0227,0114,0135,0042,0304,0220,0140,0216,0115,0033,0103,0201, +0041,0264,0362,0250,0162,0126,0252,0216,0235,0165,0032,0116,0110,0271,0004,0302, +0101,0313,0130,0227,0207,0372,0310,0035,0303,0117,0134,0353,0122,0123,0046,0010, +0026,0237,0073,0262,0175,0344,0157,0252,0061,0370,0066,0102,0064,0004,0152,0341, +0034,0161,0322,0210,0005,0260,0356,0233,0170,0001,0330,0217,0255,0175,0073,0321, +0373,0061,0234,0021,0226,0032,0374,0026,0172,0155,0032,0212,0060,0034,0056,0260, +0377,0061,0024,0213,0044,0267,0221,0233,0274,0110,0357,0104,0354,0300,0222,0014, +0046,0100,0171,0206,0273,0230,0351,0335,0302,0045,0261,0364,0337,0110,0265,0053, +0050,0111,0303,0022,0075,0134,0273,0073,0145,0141,0302,0222,0112,0075,0153,0041, +0303,0022,0043,0011,0223,0022,0014,0024,0156,0102,0043,0122,0314,0264,0131,0321, +0013,0231,0016,0165,0343,0110,0211,0321,0003,0250,0357,0255,0223,0106,0063,0176, +0036,0116,0310,0246,0160,0224,0122,0245,0105,0023,0210,0017,0016,0307,0270,0160, +0050,0075,0236,0261,0222,0103,0004,0141,0001,0224,0034,0072,0020,0163,0226,0033, +0365,0151,0244,0267,0125,0167,0075,0241,0057,0006,0264,0157,0355,0146,0270,0154, +0172,0314,0257,0332,0364,0176,0366,0004,0004,0022,0161,0322,0205,0363,0155,0022, +0376,0131,0150,0040,0040,0274,0153,0366,0343,0117,0156,0321,0076,0254,0171,0256, +0066,0004,0010,0137,0367,0077,0067,0333,0323,0214,0376,0333,0002,0004,0050,0277, +0226,0167,0067,0073,0376,0317,0331,0154,0076,0337,0303,0334,0020,0041,0167,0253, +0233,0362,0010,0020,0273,0161,0373,0163,0154,0002,0004,0055,0301,0002,0026,0276, +0245,0362,0077,0306,0255,0372,0337,0366,0002,0102,0025,0377,0374,0135,0311,0024, +0341,0102,0100,0347,0061,0150,0344, }; #endif diff --git a/include-full/usage_compressed.h b/include-full/usage_compressed.h index 1cc3f7a..dc781e0 100644 --- a/include-full/usage_compressed.h +++ b/include-full/usage_compressed.h @@ -1,3909 +1,3921 @@ #define UNPACKED_USAGE "" \ -"\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x5d\x0a\x0a\x43\x68" \ -"\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x74\x79\x70\x65\x73\x2c\x20" \ -"\x63\x6f\x6d\x70\x61\x72\x65\x20\x76\x61\x6c\x75\x65\x73\x20\x65" \ -"\x74\x63\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x61\x20\x30\x2f\x31" \ -"\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x0a\x64\x65\x70\x65\x6e" \ -"\x64\x69\x6e\x67\x20\x6f\x6e\x20\x6c\x6f\x67\x69\x63\x61\x6c\x20" \ -"\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50\x52\x45\x53\x53" \ -"\x49\x4f\x4e\x00\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x5d" \ -"\x0a\x0a\x43\x68\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x74\x79\x70" \ -"\x65\x73\x2c\x20\x63\x6f\x6d\x70\x61\x72\x65\x20\x76\x61\x6c\x75" \ -"\x65\x73\x20\x65\x74\x63\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x61" \ -"\x20\x30\x2f\x31\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x0a\x64" \ -"\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20\x6c\x6f\x67\x69" \ -"\x63\x61\x6c\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50" \ -"\x52\x45\x53\x53\x49\x4f\x4e\x00\x5b\x2d\x71\x5d\x20\x5b\x2d\x6f" \ -"\x20\x4f\x46\x46\x5d\x20\x5b\x2d\x66\x20\x46\x52\x45\x51\x5d\x20" \ -"\x5b\x2d\x70\x20\x54\x43\x4f\x4e\x53\x54\x5d\x20\x5b\x2d\x74\x20" \ -"\x54\x49\x43\x4b\x5d\x0a\x0a\x52\x65\x61\x64\x20\x61\x6e\x64\x20" \ -"\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x6c\x79\x20\x73\x65\x74\x20\x73" \ -"\x79\x73\x74\x65\x6d\x20\x74\x69\x6d\x65\x62\x61\x73\x65\x20\x70" \ -"\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x2e\x20\x53\x65\x65\x20\x61" \ -"\x64\x6a\x74\x69\x6d\x65\x78\x28\x32\x29\x0a\x0a\x09\x2d\x71\x09" \ -"\x51\x75\x69\x65\x74\x0a\x09\x2d\x6f\x20\x4f\x46\x46\x09\x54\x69" \ -"\x6d\x65\x20\x6f\x66\x66\x73\x65\x74\x2c\x20\x6d\x69\x63\x72\x6f" \ -"\x73\x65\x63\x6f\x6e\x64\x73\x0a\x09\x2d\x66\x20\x46\x52\x45\x51" \ -"\x09\x46\x72\x65\x71\x75\x65\x6e\x63\x79\x20\x61\x64\x6a\x75\x73" \ -"\x74\x2c\x20\x69\x6e\x74\x65\x67\x65\x72\x20\x6b\x65\x72\x6e\x65" \ -"\x6c\x20\x75\x6e\x69\x74\x73\x20\x28\x36\x35\x35\x33\x36\x20\x69" \ -"\x73\x20\x31\x70\x70\x6d\x29\x0a\x09\x09\x28\x70\x6f\x73\x69\x74" \ -"\x69\x76\x65\x20\x76\x61\x6c\x75\x65\x73\x20\x6d\x61\x6b\x65\x20" \ -"\x63\x6c\x6f\x63\x6b\x20\x72\x75\x6e\x20\x66\x61\x73\x74\x65\x72" \ -"\x29\x0a\x09\x2d\x74\x20\x54\x49\x43\x4b\x09\x4d\x69\x63\x72\x6f" \ -"\x73\x65\x63\x6f\x6e\x64\x73\x20\x70\x65\x72\x20\x74\x69\x63\x6b" \ -"\x2c\x20\x75\x73\x75\x61\x6c\x6c\x79\x20\x31\x30\x30\x30\x30\x0a" \ -"\x09\x2d\x70\x20\x54\x43\x4f\x4e\x53\x54\x00\x0a\x5b\x2d\x76\x6e" \ -"\x5d\x09\x5b\x2d\x48\x20\x48\x57\x54\x59\x50\x45\x5d\x20\x5b\x2d" \ -"\x69\x20\x49\x46\x5d\x20\x2d\x61\x20\x5b\x48\x4f\x53\x54\x4e\x41" \ -"\x4d\x45\x5d\x0a\x5b\x2d\x76\x5d\x09\x09\x20\x20\x20\x20\x5b\x2d" \ -"\x69\x20\x49\x46\x5d\x20\x2d\x64\x20\x48\x4f\x53\x54\x4e\x41\x4d" \ -"\x45\x20\x5b\x70\x75\x62\x5d\x0a\x5b\x2d\x76\x5d\x09\x5b\x2d\x48" \ -"\x20\x48\x57\x54\x59\x50\x45\x5d\x20\x5b\x2d\x69\x20\x49\x46\x5d" \ -"\x20\x2d\x73\x20\x48\x4f\x53\x54\x4e\x41\x4d\x45\x20\x48\x57\x41" \ -"\x44\x44\x52\x20\x5b\x74\x65\x6d\x70\x5d\x0a\x5b\x2d\x76\x5d\x09" \ -"\x5b\x2d\x48\x20\x48\x57\x54\x59\x50\x45\x5d\x20\x5b\x2d\x69\x20" \ -"\x49\x46\x5d\x20\x2d\x73\x20\x48\x4f\x53\x54\x4e\x41\x4d\x45\x20" \ -"\x48\x57\x41\x44\x44\x52\x20\x5b\x6e\x65\x74\x6d\x61\x73\x6b\x20" \ -"\x4d\x41\x53\x4b\x5d\x20\x70\x75\x62\x0a\x5b\x2d\x76\x5d\x09\x5b" \ -"\x2d\x48\x20\x48\x57\x54\x59\x50\x45\x5d\x20\x5b\x2d\x69\x20\x49" \ -"\x46\x5d\x20\x2d\x44\x73\x20\x48\x4f\x53\x54\x4e\x41\x4d\x45\x20" \ -"\x49\x46\x41\x43\x45\x20\x5b\x6e\x65\x74\x6d\x61\x73\x6b\x20\x4d" \ -"\x41\x53\x4b\x5d\x20\x70\x75\x62\x0a\x0a\x4d\x61\x6e\x69\x70\x75" \ -"\x6c\x61\x74\x65\x20\x41\x52\x50\x20\x63\x61\x63\x68\x65\x0a\x0a" \ -"\x09\x2d\x61\x09\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x28\x61\x6c" \ -"\x6c\x29\x20\x68\x6f\x73\x74\x73\x0a\x09\x2d\x73\x09\x09\x53\x65" \ -"\x74\x20\x6e\x65\x77\x20\x41\x52\x50\x20\x65\x6e\x74\x72\x79\x0a" \ -"\x09\x2d\x64\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x61\x20\x73\x70" \ -"\x65\x63\x69\x66\x69\x65\x64\x20\x65\x6e\x74\x72\x79\x0a\x09\x2d" \ -"\x76\x09\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x6e\x09\x09" \ -"\x44\x6f\x6e\x27\x74\x20\x72\x65\x73\x6f\x6c\x76\x65\x20\x6e\x61" \ -"\x6d\x65\x73\x0a\x09\x2d\x69\x20\x49\x46\x09\x09\x4e\x65\x74\x77" \ -"\x6f\x72\x6b\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x0a\x09\x2d" \ -"\x44\x09\x09\x52\x65\x61\x64\x20\x3c\x68\x77\x61\x64\x64\x72\x3e" \ -"\x20\x66\x72\x6f\x6d\x20\x67\x69\x76\x65\x6e\x20\x64\x65\x76\x69" \ -"\x63\x65\x0a\x09\x2d\x41\x2c\x2d\x70\x20\x41\x46\x09\x50\x72\x6f" \ -"\x74\x6f\x63\x6f\x6c\x20\x66\x61\x6d\x69\x6c\x79\x0a\x09\x2d\x48" \ -"\x20\x48\x57\x54\x59\x50\x45\x09\x48\x61\x72\x64\x77\x61\x72\x65" \ -"\x20\x61\x64\x64\x72\x65\x73\x73\x20\x74\x79\x70\x65\x00\x5b\x2d" \ -"\x2f\x2b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x2d\x2f\x2b\x6f" \ -"\x20\x4f\x50\x54\x5d\x2e\x2e\x2e\x20\x5b\x2d\x63\x20\x27\x53\x43" \ -"\x52\x49\x50\x54\x27\x20\x5b\x41\x52\x47\x30\x20\x5b\x41\x52\x47" \ -"\x53\x5d\x5d\x20\x2f\x20\x46\x49\x4c\x45\x20\x5b\x41\x52\x47\x53" \ -"\x5d\x5d\x0a\x0a\x55\x6e\x69\x78\x20\x73\x68\x65\x6c\x6c\x20\x69" \ -"\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x00\x5b\x4f\x50\x54\x49" \ -"\x4f\x4e\x53\x5d\x20\x5b\x41\x57\x4b\x5f\x50\x52\x4f\x47\x52\x41" \ -"\x4d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d" \ -"\x76\x20\x56\x41\x52\x3d\x56\x41\x4c\x09\x53\x65\x74\x20\x76\x61" \ -"\x72\x69\x61\x62\x6c\x65\x0a\x09\x2d\x46\x20\x53\x45\x50\x09\x09" \ -"\x55\x73\x65\x20\x53\x45\x50\x20\x61\x73\x20\x66\x69\x65\x6c\x64" \ -"\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x0a\x09\x2d\x66\x20\x46" \ -"\x49\x4c\x45\x09\x09\x52\x65\x61\x64\x20\x70\x72\x6f\x67\x72\x61" \ -"\x6d\x20\x66\x72\x6f\x6d\x20\x46\x49\x4c\x45\x00\x5b\x2d\x64\x5d" \ -"\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x42\x61\x73\x65\x36\x34\x20" \ -"\x65\x6e\x63\x6f\x64\x65\x20\x6f\x72\x20\x64\x65\x63\x6f\x64\x65" \ -"\x20\x46\x49\x4c\x45\x20\x74\x6f\x20\x73\x74\x61\x6e\x64\x61\x72" \ -"\x64\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d\x64\x09\x44\x65\x63" \ -"\x6f\x64\x65\x20\x64\x61\x74\x61\x00\x46\x49\x4c\x45\x20\x5b\x53" \ -"\x55\x46\x46\x49\x58\x5d\x0a\x0a\x53\x74\x72\x69\x70\x20\x64\x69" \ -"\x72\x65\x63\x74\x6f\x72\x79\x20\x70\x61\x74\x68\x20\x61\x6e\x64" \ -"\x20\x2e\x53\x55\x46\x46\x49\x58\x20\x66\x72\x6f\x6d\x20\x46\x49" \ -"\x4c\x45\x0a\x00\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20" \ -"\x63\x6f\x6e\x66\x69\x67\x20\x66\x69\x6c\x65\x20\x75\x73\x65\x64" \ -"\x20\x62\x79\x20\x62\x75\x73\x79\x62\x6f\x78\x20\x62\x75\x69\x6c" \ -"\x64\x00\x5b\x42\x4c\x4f\x43\x4b\x44\x45\x56\x5d\x2e\x2e\x2e\x0a" \ -"\x0a\x50\x72\x69\x6e\x74\x20\x55\x55\x49\x44\x73\x20\x6f\x66\x20" \ -"\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x00" \ -"\x4f\x50\x54\x49\x4f\x4e\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x0a" \ -"\x0a\x09\x2d\x2d\x73\x65\x74\x72\x6f\x09\x09\x53\x65\x74\x20\x72" \ -"\x6f\x0a\x09\x2d\x2d\x73\x65\x74\x72\x77\x09\x09\x53\x65\x74\x20" \ -"\x72\x77\x0a\x09\x2d\x2d\x67\x65\x74\x72\x6f\x09\x09\x47\x65\x74" \ -"\x20\x72\x6f\x0a\x09\x2d\x2d\x67\x65\x74\x73\x73\x09\x09\x47\x65" \ -"\x74\x20\x73\x65\x63\x74\x6f\x72\x20\x73\x69\x7a\x65\x0a\x09\x2d" \ -"\x2d\x67\x65\x74\x62\x73\x7a\x09\x47\x65\x74\x20\x62\x6c\x6f\x63" \ -"\x6b\x20\x73\x69\x7a\x65\x0a\x09\x2d\x2d\x73\x65\x74\x62\x73\x7a" \ -"\x20\x42\x59\x54\x45\x53\x09\x53\x65\x74\x20\x62\x6c\x6f\x63\x6b" \ -"\x20\x73\x69\x7a\x65\x0a\x09\x2d\x2d\x67\x65\x74\x73\x7a\x09\x09" \ -"\x47\x65\x74\x20\x64\x65\x76\x69\x63\x65\x20\x73\x69\x7a\x65\x20" \ -"\x69\x6e\x20\x35\x31\x32\x2d\x62\x79\x74\x65\x20\x73\x65\x63\x74" \ -"\x6f\x72\x73\x0a\x09\x2d\x2d\x67\x65\x74\x73\x69\x7a\x65\x36\x34" \ -"\x09\x47\x65\x74\x20\x64\x65\x76\x69\x63\x65\x20\x73\x69\x7a\x65" \ -"\x20\x69\x6e\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x2d\x66\x6c\x75" \ -"\x73\x68\x62\x75\x66\x73\x09\x46\x6c\x75\x73\x68\x20\x62\x75\x66" \ -"\x66\x65\x72\x73\x0a\x09\x2d\x2d\x72\x65\x72\x65\x61\x64\x70\x74" \ -"\x09\x52\x65\x72\x65\x61\x64\x20\x70\x61\x72\x74\x69\x74\x69\x6f" \ -"\x6e\x20\x74\x61\x62\x6c\x65\x00\x43\x4f\x4d\x4d\x41\x4e\x44\x20" \ -"\x5b\x42\x52\x49\x44\x47\x45\x20\x5b\x49\x4e\x54\x45\x52\x46\x41" \ -"\x43\x45\x5d\x5d\x0a\x0a\x4d\x61\x6e\x61\x67\x65\x20\x65\x74\x68" \ -"\x65\x72\x6e\x65\x74\x20\x62\x72\x69\x64\x67\x65\x73\x0a\x0a\x43" \ -"\x6f\x6d\x6d\x61\x6e\x64\x73\x3a\x0a\x09\x73\x68\x6f\x77\x09\x09" \ -"\x09\x53\x68\x6f\x77\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\x66\x20" \ -"\x62\x72\x69\x64\x67\x65\x73\x0a\x09\x61\x64\x64\x62\x72\x20\x42" \ -"\x52\x49\x44\x47\x45\x09\x09\x43\x72\x65\x61\x74\x65\x20\x42\x52" \ -"\x49\x44\x47\x45\x0a\x09\x64\x65\x6c\x62\x72\x20\x42\x52\x49\x44" \ -"\x47\x45\x09\x09\x44\x65\x6c\x65\x74\x65\x20\x42\x52\x49\x44\x47" \ -"\x45\x0a\x09\x61\x64\x64\x69\x66\x20\x42\x52\x49\x44\x47\x45\x20" \ -"\x49\x46\x41\x43\x45\x09\x41\x64\x64\x20\x49\x46\x41\x43\x45\x20" \ -"\x74\x6f\x20\x42\x52\x49\x44\x47\x45\x0a\x09\x64\x65\x6c\x69\x66" \ -"\x20\x42\x52\x49\x44\x47\x45\x20\x49\x46\x41\x43\x45\x09\x44\x65" \ -"\x6c\x65\x74\x65\x20\x49\x46\x41\x43\x45\x20\x66\x72\x6f\x6d\x20" \ -"\x42\x52\x49\x44\x47\x45\x0a\x09\x73\x65\x74\x61\x67\x65\x69\x6e" \ -"\x67\x20\x42\x52\x49\x44\x47\x45\x20\x54\x49\x4d\x45\x09\x09\x53" \ -"\x65\x74\x20\x61\x67\x65\x69\x6e\x67\x20\x74\x69\x6d\x65\x0a\x09" \ -"\x73\x65\x74\x66\x64\x20\x42\x52\x49\x44\x47\x45\x20\x54\x49\x4d" \ -"\x45\x09\x09\x53\x65\x74\x20\x62\x72\x69\x64\x67\x65\x20\x66\x6f" \ -"\x72\x77\x61\x72\x64\x20\x64\x65\x6c\x61\x79\x0a\x09\x73\x65\x74" \ -"\x68\x65\x6c\x6c\x6f\x20\x42\x52\x49\x44\x47\x45\x20\x54\x49\x4d" \ -"\x45\x09\x09\x53\x65\x74\x20\x68\x65\x6c\x6c\x6f\x20\x74\x69\x6d" \ -"\x65\x0a\x09\x73\x65\x74\x6d\x61\x78\x61\x67\x65\x20\x42\x52\x49" \ -"\x44\x47\x45\x20\x54\x49\x4d\x45\x09\x09\x53\x65\x74\x20\x6d\x61" \ -"\x78\x20\x6d\x65\x73\x73\x61\x67\x65\x20\x61\x67\x65\x0a\x09\x73" \ -"\x65\x74\x70\x61\x74\x68\x63\x6f\x73\x74\x20\x42\x52\x49\x44\x47" \ -"\x45\x20\x43\x4f\x53\x54\x09\x09\x53\x65\x74\x20\x70\x61\x74\x68" \ -"\x20\x63\x6f\x73\x74\x0a\x09\x73\x65\x74\x70\x6f\x72\x74\x70\x72" \ -"\x69\x6f\x20\x42\x52\x49\x44\x47\x45\x20\x50\x52\x49\x4f\x09\x09" \ -"\x53\x65\x74\x20\x70\x6f\x72\x74\x20\x70\x72\x69\x6f\x72\x69\x74" \ -"\x79\x0a\x09\x73\x65\x74\x62\x72\x69\x64\x67\x65\x70\x72\x69\x6f" \ -"\x20\x42\x52\x49\x44\x47\x45\x20\x50\x52\x49\x4f\x09\x53\x65\x74" \ -"\x20\x62\x72\x69\x64\x67\x65\x20\x70\x72\x69\x6f\x72\x69\x74\x79" \ -"\x0a\x09\x73\x74\x70\x20\x42\x52\x49\x44\x47\x45\x20\x5b\x31\x2f" \ -"\x79\x65\x73\x2f\x6f\x6e\x7c\x30\x2f\x6e\x6f\x2f\x6f\x66\x66\x5d" \ -"\x09\x53\x54\x50\x20\x6f\x6e\x2f\x6f\x66\x66\x00\x5b\x2d\x63\x66" \ -"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63" \ -"\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f" \ -"\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72" \ -"\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d" \ -"\x66\x09\x46\x6f\x72\x63\x65\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65" \ -"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f" \ -"\x75\x74\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49" \ -"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6d\x70\x72\x65\x73\x73" \ -"\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e" \ -"\x29\x20\x77\x69\x74\x68\x20\x62\x7a\x69\x70\x32\x20\x61\x6c\x67" \ -"\x6f\x72\x69\x74\x68\x6d\x0a\x0a\x09\x2d\x31\x2e\x2e\x39\x09\x43" \ -"\x6f\x6d\x70\x72\x65\x73\x73\x69\x6f\x6e\x20\x6c\x65\x76\x65\x6c" \ -"\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x0a" \ -"\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64" \ -"\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x00\x5b\x2d" \ -"\x6a\x79\x5d\x20\x5b\x5b\x4d\x4f\x4e\x54\x48\x5d\x20\x59\x45\x41" \ -"\x52\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x61\x20\x63\x61" \ -"\x6c\x65\x6e\x64\x61\x72\x0a\x0a\x09\x2d\x6a\x09\x55\x73\x65\x20" \ -"\x6a\x75\x6c\x69\x61\x6e\x20\x64\x61\x74\x65\x73\x0a\x09\x2d\x79" \ -"\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x74\x68\x65\x20\x65\x6e\x74" \ -"\x69\x72\x65\x20\x79\x65\x61\x72\x00\x5b\x46\x49\x4c\x45\x5d\x2e" \ -"\x2e\x2e\x0a\x0a\x43\x6f\x6e\x63\x61\x74\x65\x6e\x61\x74\x65\x20" \ -"\x46\x49\x4c\x45\x73\x20\x61\x6e\x64\x20\x70\x72\x69\x6e\x74\x20" \ -"\x74\x68\x65\x6d\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x00\x5b" \ -"\x2d\x65\x74\x76\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a" \ -"\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x6e\x6f\x6e\x70\x72\x69\x6e" \ -"\x74\x69\x6e\x67\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20" \ -"\x61\x73\x20\x5e\x78\x20\x6f\x72\x20\x4d\x2d\x78\x0a\x0a\x09\x2d" \ -"\x65\x09\x45\x6e\x64\x20\x65\x61\x63\x68\x20\x6c\x69\x6e\x65\x20" \ -"\x77\x69\x74\x68\x20\x24\x0a\x09\x2d\x74\x09\x53\x68\x6f\x77\x20" \ -"\x74\x61\x62\x73\x20\x61\x73\x20\x5e\x49\x0a\x09\x2d\x76\x09\x44" \ -"\x6f\x6e\x27\x74\x20\x75\x73\x65\x20\x5e\x78\x20\x6f\x72\x20\x4d" \ -"\x2d\x78\x20\x65\x73\x63\x61\x70\x65\x73\x00\x5b\x2d\x52\x5d\x20" \ -"\x5b\x2d\x2b\x3d\x41\x61\x63\x44\x64\x69\x6a\x73\x53\x74\x54\x75" \ -"\x5d\x20\x5b\x2d\x76\x20\x56\x45\x52\x53\x49\x4f\x4e\x5d\x20\x5b" \ -"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x68\x61\x6e\x67\x65" \ -"\x20\x66\x69\x6c\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73" \ -"\x20\x6f\x6e\x20\x61\x6e\x20\x65\x78\x74\x32\x20\x66\x73\x0a\x0a" \ -"\x4d\x6f\x64\x69\x66\x69\x65\x72\x73\x3a\x0a\x09\x2d\x09\x52\x65" \ -"\x6d\x6f\x76\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a" \ -"\x09\x2b\x09\x41\x64\x64\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65" \ -"\x73\x0a\x09\x3d\x09\x53\x65\x74\x20\x61\x74\x74\x72\x69\x62\x75" \ -"\x74\x65\x73\x0a\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73\x3a\x0a" \ -"\x09\x41\x09\x44\x6f\x6e\x27\x74\x20\x74\x72\x61\x63\x6b\x20\x61" \ -"\x74\x69\x6d\x65\x0a\x09\x61\x09\x41\x70\x70\x65\x6e\x64\x20\x6d" \ -"\x6f\x64\x65\x20\x6f\x6e\x6c\x79\x0a\x09\x63\x09\x45\x6e\x61\x62" \ -"\x6c\x65\x20\x63\x6f\x6d\x70\x72\x65\x73\x73\x0a\x09\x44\x09\x57" \ -"\x72\x69\x74\x65\x20\x64\x69\x72\x20\x63\x6f\x6e\x74\x65\x6e\x74" \ -"\x73\x20\x73\x79\x6e\x63\x68\x72\x6f\x6e\x6f\x75\x73\x6c\x79\x0a" \ -"\x09\x64\x09\x44\x6f\x6e\x27\x74\x20\x62\x61\x63\x6b\x75\x70\x20" \ -"\x77\x69\x74\x68\x20\x64\x75\x6d\x70\x0a\x09\x69\x09\x43\x61\x6e" \ -"\x6e\x6f\x74\x20\x62\x65\x20\x6d\x6f\x64\x69\x66\x69\x65\x64\x20" \ -"\x28\x69\x6d\x6d\x75\x74\x61\x62\x6c\x65\x29\x0a\x09\x6a\x09\x57" \ -"\x72\x69\x74\x65\x20\x61\x6c\x6c\x20\x64\x61\x74\x61\x20\x74\x6f" \ -"\x20\x6a\x6f\x75\x72\x6e\x61\x6c\x20\x66\x69\x72\x73\x74\x0a\x09" \ -"\x73\x09\x5a\x65\x72\x6f\x20\x64\x69\x73\x6b\x20\x73\x74\x6f\x72" \ -"\x61\x67\x65\x20\x77\x68\x65\x6e\x20\x64\x65\x6c\x65\x74\x65\x64" \ -"\x0a\x09\x53\x09\x57\x72\x69\x74\x65\x20\x66\x69\x6c\x65\x20\x63" \ -"\x6f\x6e\x74\x65\x6e\x74\x73\x20\x73\x79\x6e\x63\x68\x72\x6f\x6e" \ -"\x6f\x75\x73\x6c\x79\x0a\x09\x74\x09\x44\x69\x73\x61\x62\x6c\x65" \ -"\x20\x74\x61\x69\x6c\x2d\x6d\x65\x72\x67\x69\x6e\x67\x20\x6f\x66" \ -"\x20\x70\x61\x72\x74\x69\x61\x6c\x20\x62\x6c\x6f\x63\x6b\x73\x20" \ -"\x77\x69\x74\x68\x20\x6f\x74\x68\x65\x72\x20\x66\x69\x6c\x65\x73" \ -"\x0a\x09\x75\x09\x41\x6c\x6c\x6f\x77\x20\x66\x69\x6c\x65\x20\x74" \ -"\x6f\x20\x62\x65\x20\x75\x6e\x64\x65\x6c\x65\x74\x65\x64\x0a\x09" \ -"\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x76\x09\x53" \ -"\x65\x74\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x76\x65" \ -"\x72\x73\x69\x6f\x6e\x2f\x67\x65\x6e\x65\x72\x61\x74\x69\x6f\x6e" \ -"\x20\x6e\x75\x6d\x62\x65\x72\x00\x5b\x2d\x52\x68\x4c\x48\x50\x5d" \ -"\x2e\x2e\x2e\x20\x47\x52\x4f\x55\x50\x20\x46\x49\x4c\x45\x2e\x2e" \ -"\x2e\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20\x74\x68\x65\x20\x67\x72" \ -"\x6f\x75\x70\x20\x6d\x65\x6d\x62\x65\x72\x73\x68\x69\x70\x20\x6f" \ -"\x66\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x74\x6f\x20\x47" \ -"\x52\x4f\x55\x50\x0a\x0a\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73" \ -"\x65\x0a\x09\x2d\x68\x09\x41\x66\x66\x65\x63\x74\x20\x73\x79\x6d" \ -"\x6c\x69\x6e\x6b\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66" \ -"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x20\x74\x61\x72\x67\x65\x74\x73" \ -"\x0a\x09\x2d\x4c\x09\x54\x72\x61\x76\x65\x72\x73\x65\x20\x61\x6c" \ -"\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x74\x6f\x20\x64\x69" \ -"\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x48\x09\x54\x72" \ -"\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20" \ -"\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20" \ -"\x6f\x6e\x6c\x79\x0a\x09\x2d\x50\x09\x44\x6f\x6e\x27\x74\x20\x74" \ -"\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73" \ -"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00\x5b\x2d\x52\x5d\x20" \ -"\x4d\x4f\x44\x45\x5b\x2c\x4d\x4f\x44\x45\x5d\x2e\x2e\x2e\x20\x46" \ -"\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x45\x61\x63\x68\x20\x4d\x4f\x44" \ -"\x45\x20\x69\x73\x20\x6f\x6e\x65\x20\x6f\x72\x20\x6d\x6f\x72\x65" \ -"\x20\x6f\x66\x20\x74\x68\x65\x20\x6c\x65\x74\x74\x65\x72\x73\x20" \ -"\x75\x67\x6f\x61\x2c\x20\x6f\x6e\x65\x20\x6f\x66\x20\x74\x68\x65" \ -"\x0a\x73\x79\x6d\x62\x6f\x6c\x73\x20\x2b\x2d\x3d\x20\x61\x6e\x64" \ -"\x20\x6f\x6e\x65\x20\x6f\x72\x20\x6d\x6f\x72\x65\x20\x6f\x66\x20" \ -"\x74\x68\x65\x20\x6c\x65\x74\x74\x65\x72\x73\x20\x72\x77\x78\x73" \ -"\x74\x0a\x0a\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x00\x5b" \ -"\x2d\x52\x68\x4c\x48\x50\x5d\x2e\x2e\x2e\x20\x4f\x57\x4e\x45\x52" \ -"\x5b\x3c\x2e\x7c\x3a\x3e\x5b\x47\x52\x4f\x55\x50\x5d\x5d\x20\x46" \ -"\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20\x74" \ -"\x68\x65\x20\x6f\x77\x6e\x65\x72\x20\x61\x6e\x64\x2f\x6f\x72\x20" \ -"\x67\x72\x6f\x75\x70\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x46\x49" \ -"\x4c\x45\x20\x74\x6f\x20\x4f\x57\x4e\x45\x52\x20\x61\x6e\x64\x2f" \ -"\x6f\x72\x20\x47\x52\x4f\x55\x50\x0a\x0a\x09\x2d\x52\x09\x52\x65" \ -"\x63\x75\x72\x73\x65\x0a\x09\x2d\x68\x09\x41\x66\x66\x65\x63\x74" \ -"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69\x6e\x73\x74\x65\x61" \ -"\x64\x20\x6f\x66\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x20\x74\x61\x72" \ -"\x67\x65\x74\x73\x0a\x09\x2d\x4c\x09\x54\x72\x61\x76\x65\x72\x73" \ -"\x65\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x74" \ -"\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d" \ -"\x48\x09\x54\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d\x6c\x69" \ -"\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c" \ -"\x69\x6e\x65\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x50\x09\x44\x6f\x6e" \ -"\x27\x74\x20\x74\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d\x6c" \ -"\x69\x6e\x6b\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00\x4e" \ -"\x45\x57\x52\x4f\x4f\x54\x20\x5b\x50\x52\x4f\x47\x20\x41\x52\x47" \ -"\x53\x5d\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20\x77\x69\x74" \ -"\x68\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \ -"\x20\x73\x65\x74\x20\x74\x6f\x20\x4e\x45\x57\x52\x4f\x4f\x54\x00" \ -"\x0a\x0a\x43\x6c\x65\x61\x72\x20\x73\x63\x72\x65\x65\x6e\x00\x5b" \ -"\x2d\x6c\x5d\x20\x5b\x2d\x73\x5d\x20\x46\x49\x4c\x45\x31\x20\x5b" \ -"\x46\x49\x4c\x45\x32\x5d\x0a\x0a\x43\x6f\x6d\x70\x61\x72\x65\x20" \ -"\x46\x49\x4c\x45\x31\x20\x77\x69\x74\x68\x20\x46\x49\x4c\x45\x32" \ -"\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x6c" \ -"\x09\x57\x72\x69\x74\x65\x20\x74\x68\x65\x20\x62\x79\x74\x65\x20" \ -"\x6e\x75\x6d\x62\x65\x72\x73\x20\x28\x64\x65\x63\x69\x6d\x61\x6c" \ -"\x29\x20\x61\x6e\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x28\x6f\x63" \ -"\x74\x61\x6c\x29\x0a\x09\x09\x66\x6f\x72\x20\x61\x6c\x6c\x20\x64" \ -"\x69\x66\x66\x65\x72\x69\x6e\x67\x20\x62\x79\x74\x65\x73\x0a\x09" \ -"\x2d\x73\x09\x51\x75\x69\x65\x74\x00\x5b\x2d\x31\x32\x33\x5d\x20" \ -"\x46\x49\x4c\x45\x31\x20\x46\x49\x4c\x45\x32\x0a\x0a\x43\x6f\x6d" \ -"\x70\x61\x72\x65\x20\x46\x49\x4c\x45\x31\x20\x77\x69\x74\x68\x20" \ -"\x46\x49\x4c\x45\x32\x0a\x0a\x09\x2d\x31\x09\x53\x75\x70\x70\x72" \ -"\x65\x73\x73\x20\x6c\x69\x6e\x65\x73\x20\x75\x6e\x69\x71\x75\x65" \ -"\x20\x74\x6f\x20\x46\x49\x4c\x45\x31\x0a\x09\x2d\x32\x09\x53\x75" \ -"\x70\x70\x72\x65\x73\x73\x20\x6c\x69\x6e\x65\x73\x20\x75\x6e\x69" \ -"\x71\x75\x65\x20\x74\x6f\x20\x46\x49\x4c\x45\x32\x0a\x09\x2d\x33" \ -"\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x6c\x69\x6e\x65\x73\x20" \ -"\x63\x6f\x6d\x6d\x6f\x6e\x20\x74\x6f\x20\x62\x6f\x74\x68\x20\x66" \ -"\x69\x6c\x65\x73\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x53" \ -"\x4f\x55\x52\x43\x45\x2e\x2e\x2e\x20\x44\x45\x53\x54\x0a\x0a\x43" \ -"\x6f\x70\x79\x20\x53\x4f\x55\x52\x43\x45\x28\x73\x29\x20\x74\x6f" \ -"\x20\x44\x45\x53\x54\x0a\x0a\x09\x2d\x61\x09\x53\x61\x6d\x65\x20" \ -"\x61\x73\x20\x2d\x64\x70\x52\x0a\x09\x2d\x52\x2c\x2d\x72\x09\x52" \ -"\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x64\x2c\x2d\x50\x09\x50\x72" \ -"\x65\x73\x65\x72\x76\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20" \ -"\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x69\x66\x20\x2d\x52\x29\x0a" \ -"\x09\x2d\x4c\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x61\x6c\x6c\x20\x73" \ -"\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x48\x09\x46\x6f\x6c\x6c" \ -"\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63" \ -"\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x70\x09" \ -"\x50\x72\x65\x73\x65\x72\x76\x65\x20\x66\x69\x6c\x65\x20\x61\x74" \ -"\x74\x72\x69\x62\x75\x74\x65\x73\x20\x69\x66\x20\x70\x6f\x73\x73" \ -"\x69\x62\x6c\x65\x0a\x09\x2d\x66\x09\x4f\x76\x65\x72\x77\x72\x69" \ -"\x74\x65\x0a\x09\x2d\x69\x09\x50\x72\x6f\x6d\x70\x74\x20\x62\x65" \ -"\x66\x6f\x72\x65\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09" \ -"\x2d\x6c\x2c\x2d\x73\x09\x43\x72\x65\x61\x74\x65\x20\x28\x73\x79" \ -"\x6d\x29\x6c\x69\x6e\x6b\x73\x00\x5b\x2d\x64\x6d\x76\x75\x5d\x20" \ -"\x5b\x2d\x46\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x48\x20\x6e\x65" \ -"\x77\x63\x5d\x20\x5b\x2d\x74\x69\x6f\x5d\x20\x5b\x2d\x70\x20\x44" \ -"\x49\x52\x5d\x20\x5b\x45\x58\x54\x52\x5f\x46\x49\x4c\x45\x5d\x2e" \ -"\x2e\x2e\x0a\x0a\x45\x78\x74\x72\x61\x63\x74\x20\x6f\x72\x20\x6c" \ -"\x69\x73\x74\x20\x66\x69\x6c\x65\x73\x20\x66\x72\x6f\x6d\x20\x61" \ -"\x20\x63\x70\x69\x6f\x20\x61\x72\x63\x68\x69\x76\x65\x2c\x20\x6f" \ -"\x72\x0a\x63\x72\x65\x61\x74\x65\x20\x61\x6e\x20\x61\x72\x63\x68" \ -"\x69\x76\x65\x20\x28\x2d\x6f\x29\x20\x6f\x72\x20\x63\x6f\x70\x79" \ -"\x20\x66\x69\x6c\x65\x73\x20\x28\x2d\x70\x29\x20\x75\x73\x69\x6e" \ -"\x67\x20\x66\x69\x6c\x65\x20\x6c\x69\x73\x74\x20\x6f\x6e\x20\x73" \ -"\x74\x64\x69\x6e\x0a\x0a\x4d\x61\x69\x6e\x20\x6f\x70\x65\x72\x61" \ -"\x74\x69\x6f\x6e\x20\x6d\x6f\x64\x65\x3a\x0a\x09\x2d\x74\x09\x4c" \ -"\x69\x73\x74\x0a\x09\x2d\x69\x09\x45\x78\x74\x72\x61\x63\x74\x20" \ -"\x45\x58\x54\x52\x5f\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x61" \ -"\x6c\x6c\x29\x0a\x09\x2d\x6f\x09\x43\x72\x65\x61\x74\x65\x20\x28" \ -"\x72\x65\x71\x75\x69\x72\x65\x73\x20\x2d\x48\x20\x6e\x65\x77\x63" \ -"\x29\x0a\x09\x2d\x70\x20\x44\x49\x52\x09\x43\x6f\x70\x79\x20\x66" \ -"\x69\x6c\x65\x73\x20\x74\x6f\x20\x44\x49\x52\x0a\x09\x2d\x64\x09" \ -"\x4d\x61\x6b\x65\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x64\x69\x72" \ -"\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x6d\x09\x50\x72\x65" \ -"\x73\x65\x72\x76\x65\x20\x6d\x74\x69\x6d\x65\x0a\x09\x2d\x76\x09" \ -"\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x75\x09\x4f\x76\x65\x72" \ -"\x77\x72\x69\x74\x65\x0a\x09\x2d\x46\x20\x46\x49\x4c\x45\x09\x49" \ -"\x6e\x70\x75\x74\x20\x28\x2d\x74\x2c\x2d\x69\x2c\x2d\x70\x29\x20" \ -"\x6f\x72\x20\x6f\x75\x74\x70\x75\x74\x20\x28\x2d\x6f\x29\x20\x66" \ -"\x69\x6c\x65\x0a\x09\x2d\x48\x20\x6e\x65\x77\x63\x09\x41\x72\x63" \ -"\x68\x69\x76\x65\x20\x66\x6f\x72\x6d\x61\x74\x00\x2d\x66\x62\x53" \ -"\x20\x2d\x6c\x20\x4e\x20\x2d\x4c\x20\x4c\x4f\x47\x46\x49\x4c\x45" \ -"\x20\x2d\x63\x20\x44\x49\x52\x0a\x0a\x09\x2d\x66\x09\x46\x6f\x72" \ -"\x65\x67\x72\x6f\x75\x6e\x64\x0a\x09\x2d\x62\x09\x42\x61\x63\x6b" \ -"\x67\x72\x6f\x75\x6e\x64\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29" \ -"\x0a\x09\x2d\x53\x09\x4c\x6f\x67\x20\x74\x6f\x20\x73\x79\x73\x6c" \ -"\x6f\x67\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x6c" \ -"\x09\x53\x65\x74\x20\x6c\x6f\x67\x20\x6c\x65\x76\x65\x6c\x2e\x20" \ -"\x30\x20\x69\x73\x20\x74\x68\x65\x20\x6d\x6f\x73\x74\x20\x76\x65" \ -"\x72\x62\x6f\x73\x65\x2c\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x38" \ -"\x0a\x09\x2d\x4c\x09\x4c\x6f\x67\x20\x74\x6f\x20\x66\x69\x6c\x65" \ -"\x0a\x09\x2d\x63\x09\x57\x6f\x72\x6b\x69\x6e\x67\x20\x64\x69\x72" \ -"\x00\x5b\x2d\x63\x20\x44\x49\x52\x5d\x20\x5b\x2d\x75\x20\x55\x53" \ -"\x45\x52\x5d\x20\x5b\x2d\x6c\x65\x72\x5d\x7c\x5b\x46\x49\x4c\x45" \ -"\x5d\x0a\x0a\x09\x2d\x63\x09\x43\x72\x6f\x6e\x74\x61\x62\x20\x64" \ -"\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x09\x2d\x75\x09\x55\x73\x65" \ -"\x72\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20\x63\x72\x6f\x6e\x74" \ -"\x61\x62\x0a\x09\x2d\x65\x09\x45\x64\x69\x74\x20\x63\x72\x6f\x6e" \ -"\x74\x61\x62\x0a\x09\x2d\x72\x09\x44\x65\x6c\x65\x74\x65\x20\x63" \ -"\x72\x6f\x6e\x74\x61\x62\x0a\x09\x46\x49\x4c\x45\x09\x52\x65\x70" \ -"\x6c\x61\x63\x65\x20\x63\x72\x6f\x6e\x74\x61\x62\x20\x62\x79\x20" \ -"\x46\x49\x4c\x45\x20\x28\x27\x2d\x27\x3a\x20\x73\x74\x64\x69\x6e" \ -"\x29\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c" \ -"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x73\x65\x6c" \ -"\x65\x63\x74\x65\x64\x20\x66\x69\x65\x6c\x64\x73\x20\x66\x72\x6f" \ -"\x6d\x20\x65\x61\x63\x68\x20\x69\x6e\x70\x75\x74\x20\x46\x49\x4c" \ -"\x45\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x62" \ -"\x20\x4c\x49\x53\x54\x09\x4f\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c" \ -"\x79\x20\x62\x79\x74\x65\x73\x20\x66\x72\x6f\x6d\x20\x4c\x49\x53" \ -"\x54\x0a\x09\x2d\x63\x20\x4c\x49\x53\x54\x09\x4f\x75\x74\x70\x75" \ -"\x74\x20\x6f\x6e\x6c\x79\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72" \ -"\x73\x20\x66\x72\x6f\x6d\x20\x4c\x49\x53\x54\x0a\x09\x2d\x64\x20" \ -"\x43\x48\x41\x52\x09\x55\x73\x65\x20\x43\x48\x41\x52\x20\x69\x6e" \ -"\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x74\x61\x62\x20\x61\x73\x20" \ -"\x74\x68\x65\x20\x66\x69\x65\x6c\x64\x20\x64\x65\x6c\x69\x6d\x69" \ -"\x74\x65\x72\x0a\x09\x2d\x73\x09\x4f\x75\x74\x70\x75\x74\x20\x6f" \ -"\x6e\x6c\x79\x20\x74\x68\x65\x20\x6c\x69\x6e\x65\x73\x20\x63\x6f" \ -"\x6e\x74\x61\x69\x6e\x69\x6e\x67\x20\x64\x65\x6c\x69\x6d\x69\x74" \ -"\x65\x72\x0a\x09\x2d\x66\x20\x4e\x09\x50\x72\x69\x6e\x74\x20\x6f" \ -"\x6e\x6c\x79\x20\x74\x68\x65\x73\x65\x20\x66\x69\x65\x6c\x64\x73" \ -"\x0a\x09\x2d\x6e\x09\x49\x67\x6e\x6f\x72\x65\x64\x00\x5b\x4f\x50" \ -"\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x2b\x46\x4d\x54\x5d\x20\x5b\x54" \ -"\x49\x4d\x45\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x74\x69" \ -"\x6d\x65\x20\x28\x75\x73\x69\x6e\x67\x20\x2b\x46\x4d\x54\x29\x2c" \ -"\x20\x6f\x72\x20\x73\x65\x74\x20\x74\x69\x6d\x65\x0a\x0a\x09\x5b" \ -"\x2d\x73\x2c\x2d\x2d\x73\x65\x74\x5d\x20\x54\x49\x4d\x45\x09\x53" \ -"\x65\x74\x20\x74\x69\x6d\x65\x20\x74\x6f\x20\x54\x49\x4d\x45\x0a" \ -"\x09\x2d\x75\x2c\x2d\x2d\x75\x74\x63\x09\x57\x6f\x72\x6b\x20\x69" \ -"\x6e\x20\x55\x54\x43\x20\x28\x64\x6f\x6e\x27\x74\x20\x63\x6f\x6e" \ -"\x76\x65\x72\x74\x20\x74\x6f\x20\x6c\x6f\x63\x61\x6c\x20\x74\x69" \ -"\x6d\x65\x29\x0a\x09\x2d\x52\x2c\x2d\x2d\x72\x66\x63\x2d\x32\x38" \ -"\x32\x32\x09\x4f\x75\x74\x70\x75\x74\x20\x52\x46\x43\x2d\x32\x38" \ -"\x32\x32\x20\x63\x6f\x6d\x70\x6c\x69\x61\x6e\x74\x20\x64\x61\x74" \ -"\x65\x20\x73\x74\x72\x69\x6e\x67\x0a\x09\x2d\x49\x5b\x53\x50\x45" \ -"\x43\x5d\x09\x4f\x75\x74\x70\x75\x74\x20\x49\x53\x4f\x2d\x38\x36" \ -"\x30\x31\x20\x63\x6f\x6d\x70\x6c\x69\x61\x6e\x74\x20\x64\x61\x74" \ -"\x65\x20\x73\x74\x72\x69\x6e\x67\x0a\x09\x09\x09\x53\x50\x45\x43" \ -"\x3d\x27\x64\x61\x74\x65\x27\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \ -"\x29\x20\x66\x6f\x72\x20\x64\x61\x74\x65\x20\x6f\x6e\x6c\x79\x2c" \ -"\x0a\x09\x09\x09\x27\x68\x6f\x75\x72\x73\x27\x2c\x20\x27\x6d\x69" \ -"\x6e\x75\x74\x65\x73\x27\x2c\x20\x6f\x72\x20\x27\x73\x65\x63\x6f" \ -"\x6e\x64\x73\x27\x20\x66\x6f\x72\x20\x64\x61\x74\x65\x20\x61\x6e" \ -"\x64\x0a\x09\x09\x09\x74\x69\x6d\x65\x20\x74\x6f\x20\x74\x68\x65" \ -"\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x64\x20\x70\x72\x65\x63\x69" \ -"\x73\x69\x6f\x6e\x0a\x09\x2d\x72\x2c\x2d\x2d\x72\x65\x66\x65\x72" \ -"\x65\x6e\x63\x65\x20\x46\x49\x4c\x45\x09\x44\x69\x73\x70\x6c\x61" \ -"\x79\x20\x6c\x61\x73\x74\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74" \ -"\x69\x6f\x6e\x20\x74\x69\x6d\x65\x20\x6f\x66\x20\x46\x49\x4c\x45" \ -"\x0a\x09\x2d\x64\x2c\x2d\x2d\x64\x61\x74\x65\x20\x54\x49\x4d\x45" \ -"\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x54\x49\x4d\x45\x2c\x20\x6e" \ -"\x6f\x74\x20\x27\x6e\x6f\x77\x27\x0a\x09\x2d\x44\x20\x46\x4d\x54" \ -"\x09\x09\x55\x73\x65\x20\x46\x4d\x54\x20\x66\x6f\x72\x20\x2d\x64" \ -"\x20\x54\x49\x4d\x45\x20\x63\x6f\x6e\x76\x65\x72\x73\x69\x6f\x6e" \ -"\x0a\x0a\x52\x65\x63\x6f\x67\x6e\x69\x7a\x65\x64\x20\x54\x49\x4d" \ -"\x45\x20\x66\x6f\x72\x6d\x61\x74\x73\x3a\x0a\x09\x68\x68\x3a\x6d" \ -"\x6d\x5b\x3a\x73\x73\x5d\x0a\x09\x5b\x59\x59\x59\x59\x2e\x5d\x4d" \ -"\x4d\x2e\x44\x44\x2d\x68\x68\x3a\x6d\x6d\x5b\x3a\x73\x73\x5d\x0a" \ -"\x09\x59\x59\x59\x59\x2d\x4d\x4d\x2d\x44\x44\x20\x68\x68\x3a\x6d" \ -"\x6d\x5b\x3a\x73\x73\x5d\x0a\x09\x5b\x5b\x5b\x5b\x5b\x59\x59\x5d" \ -"\x59\x59\x5d\x4d\x4d\x5d\x44\x44\x5d\x68\x68\x5d\x6d\x6d\x5b\x2e" \ -"\x73\x73\x5d\x0a\x09\x27\x64\x61\x74\x65\x20\x54\x49\x4d\x45\x27" \ -"\x20\x66\x6f\x72\x6d\x20\x61\x63\x63\x65\x70\x74\x73\x20\x4d\x4d" \ -"\x44\x44\x68\x68\x6d\x6d\x5b\x5b\x59\x59\x5d\x59\x59\x5d\x5b\x2e" \ -"\x73\x73\x5d\x20\x69\x6e\x73\x74\x65\x61\x64\x00\x45\x58\x50\x52" \ -"\x45\x53\x53\x49\x4f\x4e\x2e\x2e\x2e\x0a\x0a\x54\x69\x6e\x79\x20" \ -"\x52\x50\x4e\x20\x63\x61\x6c\x63\x75\x6c\x61\x74\x6f\x72\x2e\x20" \ -"\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x3a\x0a\x2b\x2c\x20\x61" \ -"\x64\x64\x2c\x20\x2d\x2c\x20\x73\x75\x62\x2c\x20\x2a\x2c\x20\x6d" \ -"\x75\x6c\x2c\x20\x2f\x2c\x20\x64\x69\x76\x2c\x20\x25\x2c\x20\x6d" \ -"\x6f\x64\x2c\x20\x2a\x2a\x2c\x20\x65\x78\x70\x2c\x20\x61\x6e\x64" \ -"\x2c\x20\x6f\x72\x2c\x20\x6e\x6f\x74\x2c\x20\x78\x6f\x72\x2c\x0a" \ -"\x70\x20\x2d\x20\x70\x72\x69\x6e\x74\x20\x74\x6f\x70\x20\x6f\x66" \ -"\x20\x74\x68\x65\x20\x73\x74\x61\x63\x6b\x20\x28\x77\x69\x74\x68" \ -"\x6f\x75\x74\x20\x70\x6f\x70\x70\x69\x6e\x67\x29\x2c\x0a\x66\x20" \ -"\x2d\x20\x70\x72\x69\x6e\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x73" \ -"\x74\x61\x63\x6b\x2c\x0a\x6f\x20\x2d\x20\x70\x6f\x70\x20\x74\x68" \ -"\x65\x20\x76\x61\x6c\x75\x65\x20\x61\x6e\x64\x20\x73\x65\x74\x20" \ -"\x6f\x75\x74\x70\x75\x74\x20\x72\x61\x64\x69\x78\x20\x28\x6d\x75" \ -"\x73\x74\x20\x62\x65\x20\x31\x30\x2c\x20\x31\x36\x2c\x20\x38\x20" \ -"\x6f\x72\x20\x32\x29\x2e\x0a\x45\x78\x61\x6d\x70\x6c\x65\x73\x3a" \ -"\x20\x27\x64\x63\x20\x32\x20\x32\x20\x61\x64\x64\x20\x70\x27\x20" \ -"\x2d\x3e\x20\x34\x2c\x20\x27\x64\x63\x20\x38\x20\x38\x20\x6d\x75" \ -"\x6c\x20\x32\x20\x32\x20\x2b\x20\x2f\x20\x70\x27\x20\x2d\x3e\x20" \ -"\x31\x36\x00\x5b\x69\x66\x3d\x46\x49\x4c\x45\x5d\x20\x5b\x6f\x66" \ -"\x3d\x46\x49\x4c\x45\x5d\x20\x5b\x69\x62\x73\x3d\x4e\x5d\x20\x5b" \ -"\x6f\x62\x73\x3d\x4e\x5d\x20\x5b\x62\x73\x3d\x4e\x5d\x20\x5b\x63" \ -"\x6f\x75\x6e\x74\x3d\x4e\x5d\x20\x5b\x73\x6b\x69\x70\x3d\x4e\x5d" \ -"\x0a\x09\x5b\x73\x65\x65\x6b\x3d\x4e\x5d\x20\x5b\x63\x6f\x6e\x76" \ -"\x3d\x6e\x6f\x74\x72\x75\x6e\x63\x7c\x6e\x6f\x65\x72\x72\x6f\x72" \ -"\x7c\x73\x79\x6e\x63\x7c\x66\x73\x79\x6e\x63\x5d\x0a\x0a\x43\x6f" \ -"\x70\x79\x20\x61\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x63" \ -"\x6f\x6e\x76\x65\x72\x74\x69\x6e\x67\x20\x61\x6e\x64\x20\x66\x6f" \ -"\x72\x6d\x61\x74\x74\x69\x6e\x67\x0a\x0a\x09\x69\x66\x3d\x46\x49" \ -"\x4c\x45\x09\x09\x52\x65\x61\x64\x20\x66\x72\x6f\x6d\x20\x46\x49" \ -"\x4c\x45\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74" \ -"\x64\x69\x6e\x0a\x09\x6f\x66\x3d\x46\x49\x4c\x45\x09\x09\x57\x72" \ -"\x69\x74\x65\x20\x74\x6f\x20\x46\x49\x4c\x45\x20\x69\x6e\x73\x74" \ -"\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x62" \ -"\x73\x3d\x4e\x09\x09\x52\x65\x61\x64\x20\x61\x6e\x64\x20\x77\x72" \ -"\x69\x74\x65\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61" \ -"\x20\x74\x69\x6d\x65\x0a\x09\x69\x62\x73\x3d\x4e\x09\x09\x52\x65" \ -"\x61\x64\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61\x20" \ -"\x74\x69\x6d\x65\x0a\x09\x6f\x62\x73\x3d\x4e\x09\x09\x57\x72\x69" \ -"\x74\x65\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61\x20" \ -"\x74\x69\x6d\x65\x0a\x09\x63\x6f\x75\x6e\x74\x3d\x4e\x09\x09\x43" \ -"\x6f\x70\x79\x20\x6f\x6e\x6c\x79\x20\x4e\x20\x69\x6e\x70\x75\x74" \ -"\x20\x62\x6c\x6f\x63\x6b\x73\x0a\x09\x73\x6b\x69\x70\x3d\x4e\x09" \ -"\x09\x53\x6b\x69\x70\x20\x4e\x20\x69\x6e\x70\x75\x74\x20\x62\x6c" \ -"\x6f\x63\x6b\x73\x0a\x09\x73\x65\x65\x6b\x3d\x4e\x09\x09\x53\x6b" \ -"\x69\x70\x20\x4e\x20\x6f\x75\x74\x70\x75\x74\x20\x62\x6c\x6f\x63" \ -"\x6b\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x6e\x6f\x74\x72\x75\x6e\x63" \ -"\x09\x44\x6f\x6e\x27\x74\x20\x74\x72\x75\x6e\x63\x61\x74\x65\x20" \ -"\x6f\x75\x74\x70\x75\x74\x20\x66\x69\x6c\x65\x0a\x09\x63\x6f\x6e" \ -"\x76\x3d\x6e\x6f\x65\x72\x72\x6f\x72\x09\x43\x6f\x6e\x74\x69\x6e" \ -"\x75\x65\x20\x61\x66\x74\x65\x72\x20\x72\x65\x61\x64\x20\x65\x72" \ -"\x72\x6f\x72\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x73\x79\x6e\x63\x09" \ -"\x50\x61\x64\x20\x62\x6c\x6f\x63\x6b\x73\x20\x77\x69\x74\x68\x20" \ -"\x7a\x65\x72\x6f\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x66\x73\x79\x6e" \ -"\x63\x09\x50\x68\x79\x73\x69\x63\x61\x6c\x6c\x79\x20\x77\x72\x69" \ -"\x74\x65\x20\x64\x61\x74\x61\x20\x6f\x75\x74\x20\x62\x65\x66\x6f" \ -"\x72\x65\x20\x66\x69\x6e\x69\x73\x68\x69\x6e\x67\x0a\x0a\x4e\x75" \ -"\x6d\x62\x65\x72\x73\x20\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66" \ -"\x66\x69\x78\x65\x64\x20\x62\x79\x20\x63\x20\x28\x78\x31\x29\x2c" \ -"\x20\x77\x20\x28\x78\x32\x29\x2c\x20\x62\x20\x28\x78\x35\x31\x32" \ -"\x29\x2c\x20\x6b\x44\x20\x28\x78\x31\x30\x30\x30\x29\x2c\x20\x6b" \ -"\x20\x28\x78\x31\x30\x32\x34\x29\x2c\x0a\x4d\x44\x20\x28\x78\x31" \ -"\x30\x30\x30\x30\x30\x30\x29\x2c\x20\x4d\x20\x28\x78\x31\x30\x34" \ -"\x38\x35\x37\x36\x29\x2c\x20\x47\x44\x20\x28\x78\x31\x30\x30\x30" \ -"\x30\x30\x30\x30\x30\x30\x29\x20\x6f\x72\x20\x47\x20\x28\x78\x31" \ -"\x30\x37\x33\x37\x34\x31\x38\x32\x34\x29\x00\x5b\x2d\x6e\x5d\x20" \ -"\x5b\x4d\x4f\x44\x46\x49\x4c\x45\x53\x5d\x2e\x2e\x2e\x0a\x0a\x47" \ -"\x65\x6e\x65\x72\x61\x74\x65\x20\x6d\x6f\x64\x75\x6c\x65\x73\x2e" \ -"\x64\x65\x70\x2c\x20\x61\x6c\x69\x61\x73\x2c\x20\x61\x6e\x64\x20" \ -"\x73\x79\x6d\x62\x6f\x6c\x73\x20\x66\x69\x6c\x65\x73\x0a\x0a\x09" \ -"\x2d\x6e\x09\x44\x72\x79\x20\x72\x75\x6e\x3a\x20\x70\x72\x69\x6e" \ -"\x74\x20\x66\x69\x6c\x65\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75" \ -"\x74\x00\x41\x44\x44\x52\x45\x53\x53\x20\x5b\x57\x49\x44\x54\x48" \ -"\x20\x5b\x56\x41\x4c\x55\x45\x5d\x5d\x0a\x0a\x52\x65\x61\x64\x2f" \ -"\x77\x72\x69\x74\x65\x20\x66\x72\x6f\x6d\x20\x70\x68\x79\x73\x69" \ -"\x63\x61\x6c\x20\x61\x64\x64\x72\x65\x73\x73\x0a\x0a\x09\x41\x44" \ -"\x44\x52\x45\x53\x53\x09\x41\x64\x64\x72\x65\x73\x73\x20\x74\x6f" \ -"\x20\x61\x63\x74\x20\x75\x70\x6f\x6e\x0a\x09\x57\x49\x44\x54\x48" \ -"\x09\x57\x69\x64\x74\x68\x20\x28\x38\x2f\x31\x36\x2f\x2e\x2e\x2e" \ -"\x29\x0a\x09\x56\x41\x4c\x55\x45\x09\x44\x61\x74\x61\x20\x74\x6f" \ -"\x20\x62\x65\x20\x77\x72\x69\x74\x74\x65\x6e\x00\x5b\x2d\x50\x6b" \ -"\x6d\x68\x61\x69\x5d\x20\x5b\x2d\x42\x20\x53\x49\x5a\x45\x5d\x20" \ -"\x5b\x46\x49\x4c\x45\x53\x59\x53\x54\x45\x4d\x5d\x2e\x2e\x2e\x0a" \ -"\x0a\x50\x72\x69\x6e\x74\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65" \ -"\x6d\x20\x75\x73\x61\x67\x65\x20\x73\x74\x61\x74\x69\x73\x74\x69" \ -"\x63\x73\x0a\x0a\x09\x2d\x50\x09\x50\x4f\x53\x49\x58\x20\x6f\x75" \ -"\x74\x70\x75\x74\x20\x66\x6f\x72\x6d\x61\x74\x0a\x09\x2d\x6b\x09" \ -"\x31\x30\x32\x34\x2d\x62\x79\x74\x65\x20\x62\x6c\x6f\x63\x6b\x73" \ -"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x6d\x09\x31" \ -"\x4d\x2d\x62\x79\x74\x65\x20\x62\x6c\x6f\x63\x6b\x73\x0a\x09\x2d" \ -"\x68\x09\x48\x75\x6d\x61\x6e\x20\x72\x65\x61\x64\x61\x62\x6c\x65" \ -"\x20\x28\x65\x2e\x67\x2e\x20\x31\x4b\x20\x32\x34\x33\x4d\x20\x32" \ -"\x47\x29\x0a\x09\x2d\x61\x09\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20" \ -"\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x0a\x09\x2d\x69\x09" \ -"\x49\x6e\x6f\x64\x65\x73\x0a\x09\x2d\x42\x20\x53\x49\x5a\x45\x09" \ -"\x42\x6c\x6f\x63\x6b\x73\x69\x7a\x65\x00\x5b\x2d\x61\x62\x42\x64" \ -"\x69\x4e\x71\x72\x54\x73\x74\x77\x5d\x20\x5b\x2d\x4c\x20\x4c\x41" \ -"\x42\x45\x4c\x5d\x20\x5b\x2d\x53\x20\x46\x49\x4c\x45\x5d\x20\x5b" \ -"\x2d\x55\x20\x4c\x49\x4e\x45\x53\x5d\x20\x46\x49\x4c\x45\x31\x20" \ -"\x46\x49\x4c\x45\x32\x0a\x0a\x43\x6f\x6d\x70\x61\x72\x65\x20\x66" \ -"\x69\x6c\x65\x73\x20\x6c\x69\x6e\x65\x20\x62\x79\x20\x6c\x69\x6e" \ -"\x65\x20\x61\x6e\x64\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x68\x65" \ -"\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x73\x20\x62\x65\x74" \ -"\x77\x65\x65\x6e\x20\x74\x68\x65\x6d\x2e\x0a\x54\x68\x69\x73\x20" \ -"\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x73" \ -"\x75\x70\x70\x6f\x72\x74\x73\x20\x75\x6e\x69\x66\x69\x65\x64\x20" \ -"\x64\x69\x66\x66\x73\x20\x6f\x6e\x6c\x79\x2e\x0a\x0a\x09\x2d\x61" \ -"\x09\x54\x72\x65\x61\x74\x20\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73" \ -"\x20\x61\x73\x20\x74\x65\x78\x74\x0a\x09\x2d\x62\x09\x49\x67\x6e" \ -"\x6f\x72\x65\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x69\x6e\x20\x74" \ -"\x68\x65\x20\x61\x6d\x6f\x75\x6e\x74\x20\x6f\x66\x20\x77\x68\x69" \ -"\x74\x65\x73\x70\x61\x63\x65\x0a\x09\x2d\x42\x09\x49\x67\x6e\x6f" \ -"\x72\x65\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x77\x68\x6f\x73\x65" \ -"\x20\x6c\x69\x6e\x65\x73\x20\x61\x72\x65\x20\x61\x6c\x6c\x20\x62" \ -"\x6c\x61\x6e\x6b\x0a\x09\x2d\x64\x09\x54\x72\x79\x20\x68\x61\x72" \ -"\x64\x20\x74\x6f\x20\x66\x69\x6e\x64\x20\x61\x20\x73\x6d\x61\x6c" \ -"\x6c\x65\x72\x20\x73\x65\x74\x20\x6f\x66\x20\x63\x68\x61\x6e\x67" \ -"\x65\x73\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x61" \ -"\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x73\x0a\x09" \ -"\x2d\x4c\x09\x55\x73\x65\x20\x4c\x41\x42\x45\x4c\x20\x69\x6e\x73" \ -"\x74\x65\x61\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65" \ -"\x6e\x61\x6d\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x75\x6e\x69\x66" \ -"\x69\x65\x64\x20\x68\x65\x61\x64\x65\x72\x0a\x09\x2d\x4e\x09\x54" \ -"\x72\x65\x61\x74\x20\x61\x62\x73\x65\x6e\x74\x20\x66\x69\x6c\x65" \ -"\x73\x20\x61\x73\x20\x65\x6d\x70\x74\x79\x0a\x09\x2d\x71\x09\x4f" \ -"\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x77\x68\x65\x74\x68" \ -"\x65\x72\x20\x66\x69\x6c\x65\x73\x20\x64\x69\x66\x66\x65\x72\x0a" \ -"\x09\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x53\x09" \ -"\x53\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x46\x49\x4c\x45\x20" \ -"\x77\x68\x65\x6e\x20\x63\x6f\x6d\x70\x61\x72\x69\x6e\x67\x20\x64" \ -"\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x54\x09\x4d" \ -"\x61\x6b\x65\x20\x74\x61\x62\x73\x20\x6c\x69\x6e\x65\x20\x75\x70" \ -"\x20\x62\x79\x20\x70\x72\x65\x66\x69\x78\x69\x6e\x67\x20\x61\x20" \ -"\x74\x61\x62\x20\x77\x68\x65\x6e\x20\x6e\x65\x63\x65\x73\x73\x61" \ -"\x72\x79\x0a\x09\x2d\x73\x09\x52\x65\x70\x6f\x72\x74\x20\x77\x68" \ -"\x65\x6e\x20\x74\x77\x6f\x20\x66\x69\x6c\x65\x73\x20\x61\x72\x65" \ -"\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x0a\x09\x2d\x74\x09\x45\x78" \ -"\x70\x61\x6e\x64\x20\x74\x61\x62\x73\x20\x74\x6f\x20\x73\x70\x61" \ -"\x63\x65\x73\x20\x69\x6e\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d" \ -"\x55\x09\x4f\x75\x74\x70\x75\x74\x20\x4c\x49\x4e\x45\x53\x20\x6c" \ -"\x69\x6e\x65\x73\x20\x6f\x66\x20\x63\x6f\x6e\x74\x65\x78\x74\x0a" \ -"\x09\x2d\x77\x09\x49\x67\x6e\x6f\x72\x65\x20\x61\x6c\x6c\x20\x77" \ -"\x68\x69\x74\x65\x73\x70\x61\x63\x65\x00\x46\x49\x4c\x45\x4e\x41" \ -"\x4d\x45\x0a\x0a\x53\x74\x72\x69\x70\x20\x6e\x6f\x6e\x2d\x64\x69" \ -"\x72\x65\x63\x74\x6f\x72\x79\x20\x73\x75\x66\x66\x69\x78\x20\x66" \ -"\x72\x6f\x6d\x20\x46\x49\x4c\x45\x4e\x41\x4d\x45\x00\x5b\x2d\x63" \ -"\x5d\x20\x5b\x2d\x6e\x20\x4c\x45\x56\x45\x4c\x5d\x20\x5b\x2d\x72" \ -"\x5d\x20\x5b\x2d\x73\x20\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x43\x5d" \ -"\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x6f\x6e\x74\x72" \ -"\x6f\x6c\x20\x74\x68\x65\x20\x6b\x65\x72\x6e\x65\x6c\x20\x72\x69" \ -"\x6e\x67\x20\x62\x75\x66\x66\x65\x72\x0a\x0a\x09\x2d\x63\x09\x09" \ -"\x43\x6c\x65\x61\x72\x20\x72\x69\x6e\x67\x20\x62\x75\x66\x66\x65" \ -"\x72\x20\x61\x66\x74\x65\x72\x20\x70\x72\x69\x6e\x74\x69\x6e\x67" \ -"\x0a\x09\x2d\x6e\x20\x4c\x45\x56\x45\x4c\x09\x53\x65\x74\x20\x63" \ -"\x6f\x6e\x73\x6f\x6c\x65\x20\x6c\x6f\x67\x67\x69\x6e\x67\x20\x6c" \ -"\x65\x76\x65\x6c\x0a\x09\x2d\x72\x09\x09\x53\x68\x6f\x77\x20\x6c" \ -"\x65\x76\x65\x6c\x20\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x73\x20" \ -"\x53\x49\x5a\x45\x09\x09\x42\x75\x66\x66\x65\x72\x20\x73\x69\x7a" \ -"\x65\x0a\x09\x2d\x43\x09\x09\x43\x6f\x6c\x6f\x72\x65\x64\x20\x6f" \ -"\x75\x74\x70\x75\x74\x00\x5b\x2d\x64\x76\x73\x5d\x20\x5b\x2d\x63" \ -"\x20\x43\x4f\x4e\x46\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x74\x20\x54" \ -"\x54\x4c\x5f\x53\x45\x43\x5d\x20\x5b\x2d\x70\x20\x50\x4f\x52\x54" \ -"\x5d\x20\x5b\x2d\x69\x20\x41\x44\x44\x52\x5d\x0a\x0a\x53\x6d\x61" \ -"\x6c\x6c\x20\x73\x74\x61\x74\x69\x63\x20\x44\x4e\x53\x20\x73\x65" \ -"\x72\x76\x65\x72\x20\x64\x61\x65\x6d\x6f\x6e\x0a\x0a\x09\x2d\x63" \ -"\x20\x46\x49\x4c\x45\x09\x43\x6f\x6e\x66\x69\x67\x20\x66\x69\x6c" \ -"\x65\x0a\x09\x2d\x74\x20\x53\x45\x43\x09\x54\x54\x4c\x0a\x09\x2d" \ -"\x70\x20\x50\x4f\x52\x54\x09\x4c\x69\x73\x74\x65\x6e\x20\x6f\x6e" \ -"\x20\x50\x4f\x52\x54\x0a\x09\x2d\x69\x20\x41\x44\x44\x52\x09\x4c" \ -"\x69\x73\x74\x65\x6e\x20\x6f\x6e\x20\x41\x44\x44\x52\x0a\x09\x2d" \ -"\x64\x09\x44\x61\x65\x6d\x6f\x6e\x69\x7a\x65\x0a\x09\x2d\x76\x09" \ -"\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x73\x09\x53\x65\x6e\x64" \ -"\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x20\x72\x65\x70\x6c" \ -"\x69\x65\x73\x20\x6f\x6e\x6c\x79\x2e\x20\x55\x73\x65\x20\x74\x68" \ -"\x69\x73\x20\x69\x66\x20\x79\x6f\x75\x20\x77\x61\x6e\x74\x0a\x09" \ -"\x09\x74\x6f\x20\x75\x73\x65\x20\x2f\x65\x74\x63\x2f\x72\x65\x73" \ -"\x6f\x6c\x76\x2e\x63\x6f\x6e\x66\x20\x77\x69\x74\x68\x20\x74\x77" \ -"\x6f\x20\x6e\x61\x6d\x65\x73\x65\x72\x76\x65\x72\x20\x6c\x69\x6e" \ -"\x65\x73\x3a\x0a\x09\x09\x09\x6e\x61\x6d\x65\x73\x65\x72\x76\x65" \ -"\x72\x20\x44\x4e\x53\x44\x5f\x53\x45\x52\x56\x45\x52\x0a\x09\x09" \ -"\x09\x6e\x61\x6d\x65\x73\x65\x72\x76\x65\x72\x20\x4e\x4f\x52\x4d" \ -"\x41\x4c\x5f\x44\x4e\x53\x5f\x53\x45\x52\x56\x45\x52\x00\x5b\x2d" \ -"\x75\x64\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x43\x6f\x6e\x76" \ -"\x65\x72\x74\x20\x46\x49\x4c\x45\x20\x69\x6e\x2d\x70\x6c\x61\x63" \ -"\x65\x20\x66\x72\x6f\x6d\x20\x44\x4f\x53\x20\x74\x6f\x20\x55\x6e" \ -"\x69\x78\x20\x66\x6f\x72\x6d\x61\x74\x2e\x0a\x57\x68\x65\x6e\x20" \ -"\x6e\x6f\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x67\x69\x76\x65\x6e" \ -"\x2c\x20\x75\x73\x65\x20\x73\x74\x64\x69\x6e\x2f\x73\x74\x64\x6f" \ -"\x75\x74\x2e\x0a\x0a\x09\x2d\x75\x09\x64\x6f\x73\x32\x75\x6e\x69" \ -"\x78\x0a\x09\x2d\x64\x09\x75\x6e\x69\x78\x32\x64\x6f\x73\x00\x5b" \ -"\x2d\x61\x48\x4c\x64\x63\x6c\x73\x78\x68\x6d\x6b\x5d\x20\x5b\x46" \ -"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x53\x75\x6d\x6d\x61\x72\x69" \ -"\x7a\x65\x20\x64\x69\x73\x6b\x20\x73\x70\x61\x63\x65\x20\x75\x73" \ -"\x65\x64\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45" \ -"\x20\x61\x6e\x64\x2f\x6f\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72" \ -"\x79\x0a\x0a\x09\x2d\x61\x09\x53\x68\x6f\x77\x20\x66\x69\x6c\x65" \ -"\x20\x73\x69\x7a\x65\x73\x20\x74\x6f\x6f\x0a\x09\x2d\x4c\x09\x46" \ -"\x6f\x6c\x6c\x6f\x77\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e" \ -"\x6b\x73\x0a\x09\x2d\x48\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79" \ -"\x6d\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e" \ -"\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x64\x20\x4e\x09\x4c\x69\x6d" \ -"\x69\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x64\x69\x72" \ -"\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x28\x61\x6e\x64\x20\x66\x69" \ -"\x6c\x65\x73\x20\x77\x69\x74\x68\x20\x2d\x61\x29\x20\x6f\x66\x20" \ -"\x64\x65\x70\x74\x68\x20\x3c\x20\x4e\x0a\x09\x2d\x63\x09\x53\x68" \ -"\x6f\x77\x20\x67\x72\x61\x6e\x64\x20\x74\x6f\x74\x61\x6c\x0a\x09" \ -"\x2d\x6c\x09\x43\x6f\x75\x6e\x74\x20\x73\x69\x7a\x65\x73\x20\x6d" \ -"\x61\x6e\x79\x20\x74\x69\x6d\x65\x73\x20\x69\x66\x20\x68\x61\x72" \ -"\x64\x20\x6c\x69\x6e\x6b\x65\x64\x0a\x09\x2d\x73\x09\x44\x69\x73" \ -"\x70\x6c\x61\x79\x20\x6f\x6e\x6c\x79\x20\x61\x20\x74\x6f\x74\x61" \ -"\x6c\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x61\x72\x67\x75\x6d" \ -"\x65\x6e\x74\x0a\x09\x2d\x78\x09\x53\x6b\x69\x70\x20\x64\x69\x72" \ -"\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x6f\x6e\x20\x64\x69\x66\x66" \ -"\x65\x72\x65\x6e\x74\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d" \ -"\x73\x0a\x09\x2d\x68\x09\x53\x69\x7a\x65\x73\x20\x69\x6e\x20\x68" \ -"\x75\x6d\x61\x6e\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f" \ -"\x72\x6d\x61\x74\x20\x28\x65\x2e\x67\x2e\x2c\x20\x31\x4b\x20\x32" \ -"\x34\x33\x4d\x20\x32\x47\x29\x0a\x09\x2d\x6d\x09\x53\x69\x7a\x65" \ -"\x73\x20\x69\x6e\x20\x6d\x65\x67\x61\x62\x79\x74\x65\x73\x0a\x09" \ -"\x2d\x6b\x09\x53\x69\x7a\x65\x73\x20\x69\x6e\x20\x6b\x69\x6c\x6f" \ -"\x62\x79\x74\x65\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00" \ -"\x5b\x2d\x6e\x65\x45\x5d\x20\x5b\x41\x52\x47\x5d\x2e\x2e\x2e\x0a" \ -"\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69" \ -"\x66\x69\x65\x64\x20\x41\x52\x47\x73\x20\x74\x6f\x20\x73\x74\x64" \ -"\x6f\x75\x74\x0a\x0a\x09\x2d\x6e\x09\x53\x75\x70\x70\x72\x65\x73" \ -"\x73\x20\x74\x72\x61\x69\x6c\x69\x6e\x67\x20\x6e\x65\x77\x6c\x69" \ -"\x6e\x65\x0a\x09\x2d\x65\x09\x49\x6e\x74\x65\x72\x70\x72\x65\x74" \ -"\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x20\x65\x73\x63\x61\x70" \ -"\x65\x73\x20\x28\x69\x2e\x65\x2e\x2c\x20\x5c\x74\x3d\x74\x61\x62" \ -"\x29\x0a\x09\x2d\x45\x09\x44\x6f\x6e\x27\x74\x20\x69\x6e\x74\x65" \ -"\x72\x70\x72\x65\x74\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x20" \ -"\x65\x73\x63\x61\x70\x65\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \ -"\x29\x00\x00\x08\x00\x5b\x2d\x69\x75\x5d\x20\x5b\x2d\x5d\x20\x5b" \ -"\x6e\x61\x6d\x65\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x20\x5b" \ -"\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x5d\x0a\x0a\x50\x72\x69\x6e" \ -"\x74\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x65\x6e" \ -"\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x6f\x72\x20\x72\x75\x6e" \ -"\x20\x50\x52\x4f\x47\x20\x61\x66\x74\x65\x72\x20\x73\x65\x74\x74" \ -"\x69\x6e\x67\x20\x75\x70\x0a\x74\x68\x65\x20\x73\x70\x65\x63\x69" \ -"\x66\x69\x65\x64\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74" \ -"\x0a\x0a\x09\x2d\x2c\x20\x2d\x69\x09\x53\x74\x61\x72\x74\x20\x77" \ -"\x69\x74\x68\x20\x61\x6e\x20\x65\x6d\x70\x74\x79\x20\x65\x6e\x76" \ -"\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x0a\x09\x2d\x75\x09\x52\x65\x6d" \ -"\x6f\x76\x65\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x20\x66\x72\x6f" \ -"\x6d\x20\x74\x68\x65\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e" \ -"\x74\x00\x5b\x2d\x69\x5d\x20\x5b\x2d\x74\x20\x4e\x5d\x20\x5b\x46" \ -"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6e\x76\x65\x72\x74" \ -"\x20\x74\x61\x62\x73\x20\x74\x6f\x20\x73\x70\x61\x63\x65\x73\x2c" \ -"\x20\x77\x72\x69\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f" \ -"\x75\x74\x0a\x0a\x09\x2d\x69\x2c\x2d\x2d\x69\x6e\x69\x74\x69\x61" \ -"\x6c\x09\x44\x6f\x6e\x27\x74\x20\x63\x6f\x6e\x76\x65\x72\x74\x20" \ -"\x74\x61\x62\x73\x20\x61\x66\x74\x65\x72\x20\x6e\x6f\x6e\x20\x62" \ -"\x6c\x61\x6e\x6b\x73\x0a\x09\x2d\x74\x2c\x2d\x2d\x74\x61\x62\x73" \ -"\x3d\x4e\x09\x54\x61\x62\x73\x74\x6f\x70\x73\x20\x65\x76\x65\x72" \ -"\x79\x20\x4e\x20\x63\x68\x61\x72\x73\x00\x45\x58\x50\x52\x45\x53" \ -"\x53\x49\x4f\x4e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20" \ -"\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50\x52\x45\x53\x53" \ -"\x49\x4f\x4e\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x45" \ -"\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x6d\x61\x79\x20\x62\x65" \ -"\x3a\x0a\x09\x41\x52\x47\x31\x20\x7c\x20\x41\x52\x47\x32\x09\x41" \ -"\x52\x47\x31\x20\x69\x66\x20\x69\x74\x20\x69\x73\x20\x6e\x65\x69" \ -"\x74\x68\x65\x72\x20\x6e\x75\x6c\x6c\x20\x6e\x6f\x72\x20\x30\x2c" \ -"\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x41\x52\x47\x32\x0a" \ -"\x09\x41\x52\x47\x31\x20\x26\x20\x41\x52\x47\x32\x09\x41\x52\x47" \ -"\x31\x20\x69\x66\x20\x6e\x65\x69\x74\x68\x65\x72\x20\x61\x72\x67" \ -"\x75\x6d\x65\x6e\x74\x20\x69\x73\x20\x6e\x75\x6c\x6c\x20\x6f\x72" \ -"\x20\x30\x2c\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x30\x0a" \ -"\x09\x41\x52\x47\x31\x20\x3c\x20\x41\x52\x47\x32\x09\x31\x20\x69" \ -"\x66\x20\x41\x52\x47\x31\x20\x69\x73\x20\x6c\x65\x73\x73\x20\x74" \ -"\x68\x61\x6e\x20\x41\x52\x47\x32\x2c\x20\x65\x6c\x73\x65\x20\x30" \ -"\x2e\x20\x53\x69\x6d\x69\x6c\x61\x72\x6c\x79\x3a\x0a\x09\x41\x52" \ -"\x47\x31\x20\x3c\x3d\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31" \ -"\x20\x3d\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x21\x3d" \ -"\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x3e\x3d\x20\x41" \ -"\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x3e\x20\x41\x52\x47\x32" \ -"\x0a\x09\x41\x52\x47\x31\x20\x2b\x20\x41\x52\x47\x32\x09\x53\x75" \ -"\x6d\x20\x6f\x66\x20\x41\x52\x47\x31\x20\x61\x6e\x64\x20\x41\x52" \ -"\x47\x32\x2e\x20\x53\x69\x6d\x69\x6c\x61\x72\x6c\x79\x3a\x0a\x09" \ -"\x41\x52\x47\x31\x20\x2d\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47" \ -"\x31\x20\x2a\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x2f" \ -"\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x25\x20\x41\x52" \ -"\x47\x32\x0a\x09\x53\x54\x52\x49\x4e\x47\x20\x3a\x20\x52\x45\x47" \ -"\x45\x58\x50\x09\x09\x41\x6e\x63\x68\x6f\x72\x65\x64\x20\x70\x61" \ -"\x74\x74\x65\x72\x6e\x20\x6d\x61\x74\x63\x68\x20\x6f\x66\x20\x52" \ -"\x45\x47\x45\x58\x50\x20\x69\x6e\x20\x53\x54\x52\x49\x4e\x47\x0a" \ -"\x09\x6d\x61\x74\x63\x68\x20\x53\x54\x52\x49\x4e\x47\x20\x52\x45" \ -"\x47\x45\x58\x50\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x53\x54\x52" \ -"\x49\x4e\x47\x20\x3a\x20\x52\x45\x47\x45\x58\x50\x0a\x09\x73\x75" \ -"\x62\x73\x74\x72\x20\x53\x54\x52\x49\x4e\x47\x20\x50\x4f\x53\x20" \ -"\x4c\x45\x4e\x47\x54\x48\x20\x53\x75\x62\x73\x74\x72\x69\x6e\x67" \ -"\x20\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x2c\x20\x50\x4f\x53\x20" \ -"\x63\x6f\x75\x6e\x74\x65\x64\x20\x66\x72\x6f\x6d\x20\x31\x0a\x09" \ -"\x69\x6e\x64\x65\x78\x20\x53\x54\x52\x49\x4e\x47\x20\x43\x48\x41" \ -"\x52\x53\x09\x49\x6e\x64\x65\x78\x20\x69\x6e\x20\x53\x54\x52\x49" \ -"\x4e\x47\x20\x77\x68\x65\x72\x65\x20\x61\x6e\x79\x20\x43\x48\x41" \ -"\x52\x53\x20\x69\x73\x20\x66\x6f\x75\x6e\x64\x2c\x20\x6f\x72\x20" \ -"\x30\x0a\x09\x6c\x65\x6e\x67\x74\x68\x20\x53\x54\x52\x49\x4e\x47" \ -"\x09\x09\x4c\x65\x6e\x67\x74\x68\x20\x6f\x66\x20\x53\x54\x52\x49" \ -"\x4e\x47\x0a\x09\x71\x75\x6f\x74\x65\x20\x54\x4f\x4b\x45\x4e\x09" \ -"\x09\x49\x6e\x74\x65\x72\x70\x72\x65\x74\x20\x54\x4f\x4b\x45\x4e" \ -"\x20\x61\x73\x20\x61\x20\x73\x74\x72\x69\x6e\x67\x2c\x20\x65\x76" \ -"\x65\x6e\x20\x69\x66\x0a\x09\x09\x09\x09\x69\x74\x20\x69\x73\x20" \ -"\x61\x20\x6b\x65\x79\x77\x6f\x72\x64\x20\x6c\x69\x6b\x65\x20\x27" \ -"\x6d\x61\x74\x63\x68\x27\x20\x6f\x72\x20\x61\x6e\x0a\x09\x09\x09" \ -"\x09\x6f\x70\x65\x72\x61\x74\x6f\x72\x20\x6c\x69\x6b\x65\x20\x27" \ -"\x2f\x27\x0a\x09\x28\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x29" \ -"\x09\x09\x56\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50\x52\x45" \ -"\x53\x53\x49\x4f\x4e\x0a\x0a\x42\x65\x77\x61\x72\x65\x20\x74\x68" \ -"\x61\x74\x20\x6d\x61\x6e\x79\x20\x6f\x70\x65\x72\x61\x74\x6f\x72" \ -"\x73\x20\x6e\x65\x65\x64\x20\x74\x6f\x20\x62\x65\x20\x65\x73\x63" \ -"\x61\x70\x65\x64\x20\x6f\x72\x20\x71\x75\x6f\x74\x65\x64\x20\x66" \ -"\x6f\x72\x20\x73\x68\x65\x6c\x6c\x73\x2e\x0a\x43\x6f\x6d\x70\x61" \ -"\x72\x69\x73\x6f\x6e\x73\x20\x61\x72\x65\x20\x61\x72\x69\x74\x68" \ -"\x6d\x65\x74\x69\x63\x20\x69\x66\x20\x62\x6f\x74\x68\x20\x41\x52" \ -"\x47\x73\x20\x61\x72\x65\x20\x6e\x75\x6d\x62\x65\x72\x73\x2c\x20" \ -"\x65\x6c\x73\x65\x0a\x6c\x65\x78\x69\x63\x6f\x67\x72\x61\x70\x68" \ -"\x69\x63\x61\x6c\x2e\x20\x50\x61\x74\x74\x65\x72\x6e\x20\x6d\x61" \ -"\x74\x63\x68\x65\x73\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65" \ -"\x20\x73\x74\x72\x69\x6e\x67\x20\x6d\x61\x74\x63\x68\x65\x64\x20" \ -"\x62\x65\x74\x77\x65\x65\x6e\x0a\x5c\x28\x20\x61\x6e\x64\x20\x5c" \ -"\x29\x20\x6f\x72\x20\x6e\x75\x6c\x6c\x3b\x20\x69\x66\x20\x5c\x28" \ -"\x20\x61\x6e\x64\x20\x5c\x29\x20\x61\x72\x65\x20\x6e\x6f\x74\x20" \ -"\x75\x73\x65\x64\x2c\x20\x74\x68\x65\x79\x20\x72\x65\x74\x75\x72" \ -"\x6e\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\x72\x0a\x6f\x66\x20" \ -"\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x6d\x61\x74\x63\x68" \ -"\x65\x64\x20\x6f\x72\x20\x30\x2e\x00\x0a\x0a\x52\x65\x74\x75\x72" \ -"\x6e\x20\x61\x6e\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x20\x6f" \ -"\x66\x20\x46\x41\x4c\x53\x45\x20\x28\x31\x29\x00\x2d\x73\x20\x49" \ -"\x4d\x47\x46\x49\x4c\x45\x20\x5b\x2d\x63\x5d\x20\x5b\x2d\x64\x20" \ -"\x44\x45\x56\x5d\x20\x5b\x2d\x69\x20\x49\x4e\x49\x46\x49\x4c\x45" \ -"\x5d\x20\x5b\x2d\x66\x20\x43\x4d\x44\x5d\x0a\x0a\x09\x2d\x73\x09" \ -"\x49\x6d\x61\x67\x65\x0a\x09\x2d\x63\x09\x48\x69\x64\x65\x20\x63" \ -"\x75\x72\x73\x6f\x72\x0a\x09\x2d\x64\x09\x46\x72\x61\x6d\x65\x62" \ -"\x75\x66\x66\x65\x72\x20\x64\x65\x76\x69\x63\x65\x20\x28\x64\x65" \ -"\x66\x61\x75\x6c\x74\x20\x2f\x64\x65\x76\x2f\x66\x62\x30\x29\x0a" \ -"\x09\x2d\x69\x09\x43\x6f\x6e\x66\x69\x67\x20\x66\x69\x6c\x65\x20" \ -"\x28\x76\x61\x72\x3d\x76\x61\x6c\x75\x65\x29\x3a\x0a\x09\x09\x09" \ -"\x42\x41\x52\x5f\x4c\x45\x46\x54\x2c\x42\x41\x52\x5f\x54\x4f\x50" \ -"\x2c\x42\x41\x52\x5f\x57\x49\x44\x54\x48\x2c\x42\x41\x52\x5f\x48" \ -"\x45\x49\x47\x48\x54\x0a\x09\x09\x09\x42\x41\x52\x5f\x52\x2c\x42" \ -"\x41\x52\x5f\x47\x2c\x42\x41\x52\x5f\x42\x0a\x09\x2d\x66\x09\x43" \ -"\x6f\x6e\x74\x72\x6f\x6c\x20\x70\x69\x70\x65\x20\x28\x65\x6c\x73" \ -"\x65\x20\x65\x78\x69\x74\x20\x61\x66\x74\x65\x72\x20\x64\x72\x61" \ -"\x77\x69\x6e\x67\x20\x69\x6d\x61\x67\x65\x29\x0a\x09\x09\x09\x63" \ -"\x6f\x6d\x6d\x61\x6e\x64\x73\x3a\x20\x27\x4e\x4e\x27\x20\x28\x25" \ -"\x20\x66\x6f\x72\x20\x70\x72\x6f\x67\x72\x65\x73\x73\x20\x62\x61" \ -"\x72\x29\x20\x6f\x72\x20\x27\x65\x78\x69\x74\x27\x00\x5b\x2d\x75" \ -"\x6c\x5d\x20\x5b\x2d\x43\x20\x43\x59\x4c\x49\x4e\x44\x45\x52\x53" \ -"\x5d\x20\x5b\x2d\x48\x20\x48\x45\x41\x44\x53\x5d\x20\x5b\x2d\x53" \ -"\x20\x53\x45\x43\x54\x4f\x52\x53\x5d\x20\x5b\x2d\x62\x20\x53\x53" \ -"\x5a\x5d\x20\x44\x49\x53\x4b\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20" \ -"\x70\x61\x72\x74\x69\x74\x69\x6f\x6e\x20\x74\x61\x62\x6c\x65\x0a" \ -"\x0a\x09\x2d\x75\x09\x09\x53\x74\x61\x72\x74\x20\x61\x6e\x64\x20" \ -"\x45\x6e\x64\x20\x61\x72\x65\x20\x69\x6e\x20\x73\x65\x63\x74\x6f" \ -"\x72\x73\x20\x28\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x63" \ -"\x79\x6c\x69\x6e\x64\x65\x72\x73\x29\x0a\x09\x2d\x6c\x09\x09\x53" \ -"\x68\x6f\x77\x20\x70\x61\x72\x74\x69\x74\x69\x6f\x6e\x20\x74\x61" \ -"\x62\x6c\x65\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x44\x49\x53" \ -"\x4b\x2c\x20\x74\x68\x65\x6e\x20\x65\x78\x69\x74\x0a\x09\x2d\x62" \ -"\x20\x32\x30\x34\x38\x09\x09\x28\x66\x6f\x72\x20\x63\x65\x72\x74" \ -"\x61\x69\x6e\x20\x4d\x4f\x20\x64\x69\x73\x6b\x73\x29\x20\x75\x73" \ -"\x65\x20\x32\x30\x34\x38\x2d\x62\x79\x74\x65\x20\x73\x65\x63\x74" \ -"\x6f\x72\x73\x0a\x09\x2d\x43\x20\x43\x59\x4c\x49\x4e\x44\x45\x52" \ -"\x53\x09\x53\x65\x74\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20" \ -"\x63\x79\x6c\x69\x6e\x64\x65\x72\x73\x2f\x68\x65\x61\x64\x73\x2f" \ -"\x73\x65\x63\x74\x6f\x72\x73\x0a\x09\x2d\x48\x20\x48\x45\x41\x44" \ -"\x53\x0a\x09\x2d\x53\x20\x53\x45\x43\x54\x4f\x52\x53\x00\x08\x00" \ -"\x5b\x50\x41\x54\x48\x5d\x2e\x2e\x2e\x20\x5b\x4f\x50\x54\x49\x4f" \ -"\x4e\x53\x5d\x20\x5b\x41\x43\x54\x49\x4f\x4e\x53\x5d\x0a\x0a\x53" \ -"\x65\x61\x72\x63\x68\x20\x66\x6f\x72\x20\x66\x69\x6c\x65\x73\x20" \ -"\x61\x6e\x64\x20\x70\x65\x72\x66\x6f\x72\x6d\x20\x61\x63\x74\x69" \ -"\x6f\x6e\x73\x20\x6f\x6e\x20\x74\x68\x65\x6d\x2e\x0a\x46\x69\x72" \ -"\x73\x74\x20\x66\x61\x69\x6c\x65\x64\x20\x61\x63\x74\x69\x6f\x6e" \ -"\x20\x73\x74\x6f\x70\x73\x20\x70\x72\x6f\x63\x65\x73\x73\x69\x6e" \ -"\x67\x20\x6f\x66\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x66\x69\x6c" \ -"\x65\x2e\x0a\x44\x65\x66\x61\x75\x6c\x74\x73\x3a\x20\x50\x41\x54" \ -"\x48\x20\x69\x73\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x64\x69\x72" \ -"\x65\x63\x74\x6f\x72\x79\x2c\x20\x61\x63\x74\x69\x6f\x6e\x20\x69" \ -"\x73\x20\x27\x2d\x70\x72\x69\x6e\x74\x27\x0a\x0a\x09\x2d\x66\x6f" \ -"\x6c\x6c\x6f\x77\x09\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d" \ -"\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x78\x64\x65\x76\x09\x09\x44\x6f" \ -"\x6e\x27\x74\x20\x64\x65\x73\x63\x65\x6e\x64\x20\x64\x69\x72\x65" \ -"\x63\x74\x6f\x72\x69\x65\x73\x20\x6f\x6e\x20\x6f\x74\x68\x65\x72" \ -"\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x0a\x09\x2d\x6d" \ -"\x61\x78\x64\x65\x70\x74\x68\x20\x4e\x09\x44\x65\x73\x63\x65\x6e" \ -"\x64\x20\x61\x74\x20\x6d\x6f\x73\x74\x20\x4e\x20\x6c\x65\x76\x65" \ -"\x6c\x73\x2e\x20\x2d\x6d\x61\x78\x64\x65\x70\x74\x68\x20\x30\x20" \ -"\x61\x70\x70\x6c\x69\x65\x73\x0a\x09\x09\x09\x61\x63\x74\x69\x6f" \ -"\x6e\x73\x20\x74\x6f\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69" \ -"\x6e\x65\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x20\x6f\x6e\x6c" \ -"\x79\x0a\x09\x2d\x6d\x69\x6e\x64\x65\x70\x74\x68\x20\x4e\x09\x44" \ -"\x6f\x6e\x27\x74\x20\x61\x63\x74\x20\x6f\x6e\x20\x66\x69\x72\x73" \ -"\x74\x20\x4e\x20\x6c\x65\x76\x65\x6c\x73\x0a\x09\x2d\x64\x65\x70" \ -"\x74\x68\x09\x09\x41\x63\x74\x20\x6f\x6e\x20\x64\x69\x72\x65\x63" \ -"\x74\x6f\x72\x79\x20\x2a\x61\x66\x74\x65\x72\x2a\x20\x74\x72\x61" \ -"\x76\x65\x72\x73\x69\x6e\x67\x20\x69\x74\x0a\x0a\x41\x63\x74\x69" \ -"\x6f\x6e\x73\x3a\x0a\x09\x28\x20\x41\x43\x54\x49\x4f\x4e\x53\x20" \ -"\x29\x09\x47\x72\x6f\x75\x70\x20\x61\x63\x74\x69\x6f\x6e\x73\x20" \ -"\x66\x6f\x72\x20\x2d\x6f\x20\x2f\x20\x2d\x61\x0a\x09\x21\x20\x41" \ -"\x43\x54\x09\x09\x49\x6e\x76\x65\x72\x74\x20\x41\x43\x54\x27\x73" \ -"\x20\x73\x75\x63\x63\x65\x73\x73\x2f\x66\x61\x69\x6c\x75\x72\x65" \ -"\x0a\x09\x41\x43\x54\x31\x20\x5b\x2d\x61\x5d\x20\x41\x43\x54\x32" \ -"\x09\x49\x66\x20\x41\x43\x54\x31\x20\x66\x61\x69\x6c\x73\x2c\x20" \ -"\x73\x74\x6f\x70\x2c\x20\x65\x6c\x73\x65\x20\x64\x6f\x20\x41\x43" \ -"\x54\x32\x0a\x09\x41\x43\x54\x31\x20\x2d\x6f\x20\x41\x43\x54\x32" \ -"\x09\x49\x66\x20\x41\x43\x54\x31\x20\x73\x75\x63\x63\x65\x65\x64" \ -"\x73\x2c\x20\x73\x74\x6f\x70\x2c\x20\x65\x6c\x73\x65\x20\x64\x6f" \ -"\x20\x41\x43\x54\x32\x0a\x09\x09\x09\x4e\x6f\x74\x65\x3a\x20\x2d" \ -"\x61\x20\x68\x61\x73\x20\x68\x69\x67\x68\x65\x72\x20\x70\x72\x69" \ -"\x6f\x72\x69\x74\x79\x20\x74\x68\x61\x6e\x20\x2d\x6f\x0a\x09\x2d" \ -"\x6e\x61\x6d\x65\x20\x50\x41\x54\x54\x45\x52\x4e\x09\x4d\x61\x74" \ -"\x63\x68\x20\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x20\x28\x77\x2f" \ -"\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6e\x61\x6d\x65" \ -"\x29\x20\x74\x6f\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x09\x2d\x69" \ -"\x6e\x61\x6d\x65\x20\x50\x41\x54\x54\x45\x52\x4e\x09\x43\x61\x73" \ -"\x65\x20\x69\x6e\x73\x65\x6e\x73\x69\x74\x69\x76\x65\x20\x2d\x6e" \ -"\x61\x6d\x65\x0a\x09\x2d\x70\x61\x74\x68\x20\x50\x41\x54\x54\x45" \ -"\x52\x4e\x09\x4d\x61\x74\x63\x68\x20\x70\x61\x74\x68\x20\x74\x6f" \ -"\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x09\x2d\x69\x70\x61\x74\x68" \ -"\x20\x50\x41\x54\x54\x45\x52\x4e\x09\x43\x61\x73\x65\x20\x69\x6e" \ -"\x73\x65\x6e\x73\x69\x74\x69\x76\x65\x20\x2d\x70\x61\x74\x68\x0a" \ -"\x09\x2d\x72\x65\x67\x65\x78\x20\x50\x41\x54\x54\x45\x52\x4e\x09" \ -"\x4d\x61\x74\x63\x68\x20\x70\x61\x74\x68\x20\x74\x6f\x20\x72\x65" \ -"\x67\x65\x78\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x09\x2d\x74\x79" \ -"\x70\x65\x20\x58\x09\x09\x46\x69\x6c\x65\x20\x74\x79\x70\x65\x20" \ -"\x69\x73\x20\x58\x20\x28\x6f\x6e\x65\x20\x6f\x66\x3a\x20\x66\x2c" \ -"\x64\x2c\x6c\x2c\x62\x2c\x63\x2c\x2e\x2e\x2e\x29\x0a\x09\x2d\x70" \ -"\x65\x72\x6d\x20\x4d\x41\x53\x4b\x09\x41\x74\x20\x6c\x65\x61\x73" \ -"\x74\x20\x6f\x6e\x65\x20\x6d\x61\x73\x6b\x20\x62\x69\x74\x20\x28" \ -"\x2b\x4d\x41\x53\x4b\x29\x2c\x20\x61\x6c\x6c\x20\x62\x69\x74\x73" \ -"\x20\x28\x2d\x4d\x41\x53\x4b\x29\x2c\x0a\x09\x09\x09\x6f\x72\x20" \ -"\x65\x78\x61\x63\x74\x6c\x79\x20\x4d\x41\x53\x4b\x20\x62\x69\x74" \ -"\x73\x20\x61\x72\x65\x20\x73\x65\x74\x20\x69\x6e\x20\x66\x69\x6c" \ -"\x65\x27\x73\x20\x6d\x6f\x64\x65\x0a\x09\x2d\x6d\x74\x69\x6d\x65" \ -"\x20\x44\x41\x59\x53\x09\x6d\x74\x69\x6d\x65\x20\x69\x73\x20\x67" \ -"\x72\x65\x61\x74\x65\x72\x20\x74\x68\x61\x6e\x20\x28\x2b\x4e\x29" \ -"\x2c\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x28\x2d\x4e\x29" \ -"\x2c\x0a\x09\x09\x09\x6f\x72\x20\x65\x78\x61\x63\x74\x6c\x79\x20" \ -"\x4e\x20\x64\x61\x79\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x70\x61" \ -"\x73\x74\x0a\x09\x2d\x6d\x6d\x69\x6e\x20\x4d\x49\x4e\x53\x09\x6d" \ -"\x74\x69\x6d\x65\x20\x69\x73\x20\x67\x72\x65\x61\x74\x65\x72\x20" \ -"\x74\x68\x61\x6e\x20\x28\x2b\x4e\x29\x2c\x20\x6c\x65\x73\x73\x20" \ -"\x74\x68\x61\x6e\x20\x28\x2d\x4e\x29\x2c\x0a\x09\x09\x09\x6f\x72" \ -"\x20\x65\x78\x61\x63\x74\x6c\x79\x20\x4e\x20\x6d\x69\x6e\x75\x74" \ -"\x65\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x70\x61\x73\x74\x0a\x09" \ -"\x2d\x6e\x65\x77\x65\x72\x20\x46\x49\x4c\x45\x09\x6d\x74\x69\x6d" \ -"\x65\x20\x69\x73\x20\x6d\x6f\x72\x65\x20\x72\x65\x63\x65\x6e\x74" \ -"\x20\x74\x68\x61\x6e\x20\x46\x49\x4c\x45\x27\x73\x0a\x09\x2d\x75" \ -"\x73\x65\x72\x20\x4e\x41\x4d\x45\x2f\x49\x44\x09\x46\x69\x6c\x65" \ -"\x20\x69\x73\x20\x6f\x77\x6e\x65\x64\x20\x62\x79\x20\x67\x69\x76" \ -"\x65\x6e\x20\x75\x73\x65\x72\x0a\x09\x2d\x67\x72\x6f\x75\x70\x20" \ -"\x4e\x41\x4d\x45\x2f\x49\x44\x09\x46\x69\x6c\x65\x20\x69\x73\x20" \ -"\x6f\x77\x6e\x65\x64\x20\x62\x79\x20\x67\x69\x76\x65\x6e\x20\x67" \ -"\x72\x6f\x75\x70\x0a\x09\x2d\x73\x69\x7a\x65\x20\x4e\x5b\x62\x63" \ -"\x6b\x5d\x09\x46\x69\x6c\x65\x20\x73\x69\x7a\x65\x20\x69\x73\x20" \ -"\x4e\x20\x28\x63\x3a\x62\x79\x74\x65\x73\x2c\x6b\x3a\x6b\x62\x79" \ -"\x74\x65\x73\x2c\x62\x3a\x35\x31\x32\x20\x62\x79\x74\x65\x73\x28" \ -"\x64\x65\x66\x2e\x29\x29\x0a\x09\x09\x09\x2b\x2f\x2d\x4e\x3a\x20" \ -"\x66\x69\x6c\x65\x20\x73\x69\x7a\x65\x20\x69\x73\x20\x62\x69\x67" \ -"\x67\x65\x72\x2f\x73\x6d\x61\x6c\x6c\x65\x72\x20\x74\x68\x61\x6e" \ -"\x20\x4e\x0a\x09\x2d\x6c\x69\x6e\x6b\x73\x20\x4e\x09\x4e\x75\x6d" \ -"\x62\x65\x72\x20\x6f\x66\x20\x6c\x69\x6e\x6b\x73\x20\x69\x73\x20" \ -"\x67\x72\x65\x61\x74\x65\x72\x20\x74\x68\x61\x6e\x20\x28\x2b\x4e" \ -"\x29\x2c\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x28\x2d\x4e" \ -"\x29\x2c\x0a\x09\x09\x09\x6f\x72\x20\x65\x78\x61\x63\x74\x6c\x79" \ -"\x20\x4e\x0a\x09\x2d\x70\x72\x75\x6e\x65\x09\x09\x49\x66\x20\x63" \ -"\x75\x72\x72\x65\x6e\x74\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x64" \ -"\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x20\x64\x6f\x6e\x27\x74\x20" \ -"\x64\x65\x73\x63\x65\x6e\x64\x20\x69\x6e\x74\x6f\x20\x69\x74\x0a" \ -"\x49\x66\x20\x6e\x6f\x6e\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x66" \ -"\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x61\x63\x74\x69\x6f\x6e\x73" \ -"\x20\x69\x73\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x2c\x20\x2d" \ -"\x70\x72\x69\x6e\x74\x20\x69\x73\x20\x61\x73\x73\x75\x6d\x65\x64" \ -"\x0a\x09\x2d\x70\x72\x69\x6e\x74\x09\x09\x50\x72\x69\x6e\x74\x20" \ -"\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x0a\x09\x2d\x70\x72\x69\x6e" \ -"\x74\x30\x09\x09\x50\x72\x69\x6e\x74\x20\x66\x69\x6c\x65\x20\x6e" \ -"\x61\x6d\x65\x2c\x20\x4e\x55\x4c\x20\x74\x65\x72\x6d\x69\x6e\x61" \ -"\x74\x65\x64\x0a\x09\x2d\x65\x78\x65\x63\x20\x43\x4d\x44\x20\x41" \ -"\x52\x47\x20\x3b\x09\x52\x75\x6e\x20\x43\x4d\x44\x20\x77\x69\x74" \ -"\x68\x20\x61\x6c\x6c\x20\x69\x6e\x73\x74\x61\x6e\x63\x65\x73\x20" \ -"\x6f\x66\x20\x7b\x7d\x20\x72\x65\x70\x6c\x61\x63\x65\x64\x20\x62" \ -"\x79\x0a\x09\x09\x09\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x2e\x20" \ -"\x46\x61\x69\x6c\x73\x20\x69\x66\x20\x43\x4d\x44\x20\x65\x78\x69" \ -"\x74\x73\x20\x77\x69\x74\x68\x20\x6e\x6f\x6e\x7a\x65\x72\x6f\x00" \ -"\x4d\x54\x44\x5f\x44\x45\x56\x49\x43\x45\x20\x4f\x46\x46\x53\x45" \ -"\x54\x20\x53\x45\x43\x54\x4f\x52\x53\x0a\x0a\x4c\x6f\x63\x6b\x20" \ -"\x70\x61\x72\x74\x20\x6f\x72\x20\x61\x6c\x6c\x20\x6f\x66\x20\x61" \ -"\x6e\x20\x4d\x54\x44\x20\x64\x65\x76\x69\x63\x65\x2e\x20\x49\x66" \ -"\x20\x53\x45\x43\x54\x4f\x52\x53\x20\x69\x73\x20\x2d\x31\x2c\x20" \ -"\x74\x68\x65\x6e\x20\x61\x6c\x6c\x20\x73\x65\x63\x74\x6f\x72\x73" \ -"\x0a\x77\x69\x6c\x6c\x20\x62\x65\x20\x6c\x6f\x63\x6b\x65\x64\x2c" \ -"\x20\x72\x65\x67\x61\x72\x64\x6c\x65\x73\x73\x20\x6f\x66\x20\x74" \ -"\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x4f\x46\x46\x53" \ -"\x45\x54\x00\x4d\x54\x44\x5f\x44\x45\x56\x49\x43\x45\x0a\x0a\x55" \ -"\x6e\x6c\x6f\x63\x6b\x20\x61\x6e\x20\x4d\x54\x44\x20\x64\x65\x76" \ -"\x69\x63\x65\x00\x2d\x76\x20\x46\x49\x4c\x45\x20\x4d\x54\x44\x5f" \ -"\x44\x45\x56\x49\x43\x45\x0a\x0a\x43\x6f\x70\x79\x20\x61\x6e\x20" \ -"\x69\x6d\x61\x67\x65\x20\x74\x6f\x20\x4d\x54\x44\x20\x64\x65\x76" \ -"\x69\x63\x65\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65" \ -"\x00\x5b\x2d\x73\x78\x75\x6e\x5d\x20\x46\x44\x7c\x7b\x46\x49\x4c" \ -"\x45\x20\x5b\x2d\x63\x5d\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53" \ -"\x7d\x0a\x0a\x5b\x55\x6e\x5d\x6c\x6f\x63\x6b\x20\x66\x69\x6c\x65" \ -"\x20\x64\x65\x73\x63\x72\x69\x70\x74\x6f\x72\x2c\x20\x6f\x72\x20" \ -"\x6c\x6f\x63\x6b\x20\x46\x49\x4c\x45\x2c\x20\x72\x75\x6e\x20\x50" \ -"\x52\x4f\x47\x0a\x0a\x09\x2d\x73\x09\x53\x68\x61\x72\x65\x64\x20" \ -"\x6c\x6f\x63\x6b\x0a\x09\x2d\x78\x09\x45\x78\x63\x6c\x75\x73\x69" \ -"\x76\x65\x20\x6c\x6f\x63\x6b\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \ -"\x29\x0a\x09\x2d\x75\x09\x55\x6e\x6c\x6f\x63\x6b\x20\x46\x44\x0a" \ -"\x09\x2d\x6e\x09\x46\x61\x69\x6c\x20\x72\x61\x74\x68\x65\x72\x20" \ -"\x74\x68\x61\x6e\x20\x77\x61\x69\x74\x00\x5b\x2d\x62\x73\x5d\x20" \ -"\x5b\x2d\x77\x20\x57\x49\x44\x54\x48\x5d\x20\x5b\x46\x49\x4c\x45" \ -"\x5d\x2e\x2e\x2e\x0a\x0a\x57\x72\x61\x70\x20\x69\x6e\x70\x75\x74" \ -"\x20\x6c\x69\x6e\x65\x73\x20\x69\x6e\x20\x65\x61\x63\x68\x20\x46" \ -"\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x2c\x20" \ -"\x77\x72\x69\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75" \ -"\x74\x0a\x0a\x09\x2d\x62\x09\x43\x6f\x75\x6e\x74\x20\x62\x79\x74" \ -"\x65\x73\x20\x72\x61\x74\x68\x65\x72\x20\x74\x68\x61\x6e\x20\x63" \ -"\x6f\x6c\x75\x6d\x6e\x73\x0a\x09\x2d\x73\x09\x42\x72\x65\x61\x6b" \ -"\x20\x61\x74\x20\x73\x70\x61\x63\x65\x73\x0a\x09\x2d\x77\x09\x55" \ -"\x73\x65\x20\x57\x49\x44\x54\x48\x20\x63\x6f\x6c\x75\x6d\x6e\x73" \ -"\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x38\x30\x00\x0a" \ -"\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x74\x68\x65\x20\x61\x6d\x6f" \ -"\x75\x6e\x74\x20\x6f\x66\x20\x66\x72\x65\x65\x20\x61\x6e\x64\x20" \ -"\x75\x73\x65\x64\x20\x73\x79\x73\x74\x65\x6d\x20\x6d\x65\x6d\x6f" \ -"\x72\x79\x00\x44\x45\x56\x49\x43\x45\x0a\x0a\x46\x72\x65\x65\x20" \ -"\x61\x6c\x6c\x20\x6d\x65\x6d\x6f\x72\x79\x20\x75\x73\x65\x64\x20" \ -"\x62\x79\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64" \ -"\x20\x72\x61\x6d\x64\x69\x73\x6b\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \ -"\x53\x5d\x20\x4d\x4f\x55\x4e\x54\x50\x4f\x49\x4e\x54\x0a\x0a\x09" \ -"\x2d\x6f\x2c\x2d\x2d\x6f\x66\x66\x73\x65\x74\x3d\x4f\x46\x46\x53" \ -"\x45\x54\x09\x4f\x66\x66\x73\x65\x74\x20\x69\x6e\x20\x62\x79\x74" \ -"\x65\x73\x20\x74\x6f\x20\x64\x69\x73\x63\x61\x72\x64\x20\x66\x72" \ -"\x6f\x6d\x0a\x09\x2d\x6c\x2c\x2d\x2d\x6c\x65\x6e\x67\x74\x68\x3d" \ -"\x4c\x45\x4e\x09\x09\x42\x79\x74\x65\x73\x20\x74\x6f\x20\x64\x69" \ -"\x73\x63\x61\x72\x64\x0a\x09\x2d\x6d\x2c\x2d\x2d\x6d\x69\x6e\x69" \ -"\x6d\x75\x6d\x3d\x4d\x49\x4e\x09\x4d\x69\x6e\x69\x6d\x75\x6d\x20" \ -"\x65\x78\x74\x65\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\x0a\x09\x2d" \ -"\x76\x2c\x2d\x2d\x76\x65\x72\x62\x6f\x73\x65\x09\x09\x50\x72\x69" \ -"\x6e\x74\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x64\x69\x73" \ -"\x63\x61\x72\x64\x65\x64\x20\x62\x79\x74\x65\x73\x00\x5b\x2d\x64" \ -"\x5d\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x57\x72\x69\x74\x65" \ -"\x20\x66\x69\x6c\x65\x73\x27\x20\x62\x75\x66\x66\x65\x72\x65\x64" \ -"\x20\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x64\x69\x73\x6b\x0a" \ -"\x0a\x09\x2d\x64\x09\x41\x76\x6f\x69\x64\x20\x73\x79\x6e\x63\x69" \ -"\x6e\x67\x20\x6d\x65\x74\x61\x64\x61\x74\x61\x00\x5b\x4f\x50\x54" \ -"\x49\x4f\x4e\x53\x5d\x20\x48\x4f\x53\x54\x20\x5b\x4c\x4f\x43\x41" \ -"\x4c\x5f\x46\x49\x4c\x45\x5d\x20\x52\x45\x4d\x4f\x54\x45\x5f\x46" \ -"\x49\x4c\x45\x0a\x0a\x44\x6f\x77\x6e\x6c\x6f\x61\x64\x20\x61\x20" \ -"\x66\x69\x6c\x65\x20\x76\x69\x61\x20\x46\x54\x50\x0a\x0a\x09\x2d" \ -"\x63\x2c\x2d\x2d\x63\x6f\x6e\x74\x69\x6e\x75\x65\x09\x09\x43\x6f" \ -"\x6e\x74\x69\x6e\x75\x65\x20\x70\x72\x65\x76\x69\x6f\x75\x73\x20" \ -"\x74\x72\x61\x6e\x73\x66\x65\x72\x0a\x09\x2d\x76\x2c\x2d\x2d\x76" \ -"\x65\x72\x62\x6f\x73\x65\x09\x09\x56\x65\x72\x62\x6f\x73\x65\x0a" \ -"\x09\x2d\x75\x2c\x2d\x2d\x75\x73\x65\x72\x6e\x61\x6d\x65\x20\x55" \ -"\x53\x45\x52\x09\x55\x73\x65\x72\x6e\x61\x6d\x65\x0a\x09\x2d\x70" \ -"\x2c\x2d\x2d\x70\x61\x73\x73\x77\x6f\x72\x64\x20\x50\x41\x53\x53" \ -"\x09\x50\x61\x73\x73\x77\x6f\x72\x64\x0a\x09\x2d\x50\x2c\x2d\x2d" \ -"\x70\x6f\x72\x74\x20\x4e\x55\x4d\x09\x09\x50\x6f\x72\x74\x00\x5b" \ -"\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x48\x4f\x53\x54\x20\x5b\x52" \ -"\x45\x4d\x4f\x54\x45\x5f\x46\x49\x4c\x45\x5d\x20\x4c\x4f\x43\x41" \ -"\x4c\x5f\x46\x49\x4c\x45\x0a\x0a\x55\x70\x6c\x6f\x61\x64\x20\x61" \ -"\x20\x66\x69\x6c\x65\x20\x74\x6f\x20\x61\x20\x46\x54\x50\x20\x73" \ -"\x65\x72\x76\x65\x72\x0a\x0a\x09\x2d\x76\x2c\x2d\x2d\x76\x65\x72" \ -"\x62\x6f\x73\x65\x09\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d" \ -"\x75\x2c\x2d\x2d\x75\x73\x65\x72\x6e\x61\x6d\x65\x20\x55\x53\x45" \ -"\x52\x09\x55\x73\x65\x72\x6e\x61\x6d\x65\x0a\x09\x2d\x70\x2c\x2d" \ -"\x2d\x70\x61\x73\x73\x77\x6f\x72\x64\x20\x50\x41\x53\x53\x09\x50" \ -"\x61\x73\x73\x77\x6f\x72\x64\x0a\x09\x2d\x50\x2c\x2d\x2d\x70\x6f" \ -"\x72\x74\x20\x4e\x55\x4d\x09\x09\x50\x6f\x72\x74\x00\x5b\x4f\x50" \ -"\x54\x49\x4f\x4e\x53\x5d\x20\x46\x49\x4c\x45\x20\x6f\x72\x20\x50" \ -"\x4f\x52\x54\x2f\x50\x52\x4f\x54\x4f\x0a\x0a\x46\x69\x6e\x64\x20" \ -"\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x77\x68\x69\x63\x68\x20" \ -"\x75\x73\x65\x20\x46\x49\x4c\x45\x73\x20\x6f\x72\x20\x50\x4f\x52" \ -"\x54\x73\x0a\x0a\x09\x2d\x6d\x09\x46\x69\x6e\x64\x20\x70\x72\x6f" \ -"\x63\x65\x73\x73\x65\x73\x20\x77\x68\x69\x63\x68\x20\x75\x73\x65" \ -"\x20\x73\x61\x6d\x65\x20\x66\x73\x20\x61\x73\x20\x46\x49\x4c\x45" \ -"\x73\x0a\x09\x2d\x34\x2c\x2d\x36\x09\x53\x65\x61\x72\x63\x68\x20" \ -"\x6f\x6e\x6c\x79\x20\x49\x50\x76\x34\x2f\x49\x50\x76\x36\x20\x73" \ -"\x70\x61\x63\x65\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x64" \ -"\x69\x73\x70\x6c\x61\x79\x20\x50\x49\x44\x73\x0a\x09\x2d\x6b\x09" \ -"\x4b\x69\x6c\x6c\x20\x66\x6f\x75\x6e\x64\x20\x70\x72\x6f\x63\x65" \ -"\x73\x73\x65\x73\x0a\x09\x2d\x53\x49\x47\x4e\x41\x4c\x09\x53\x69" \ -"\x67\x6e\x61\x6c\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x28\x64\x65" \ -"\x66\x61\x75\x6c\x74\x3a\x20\x4b\x49\x4c\x4c\x29\x00\x5b\x4f\x50" \ -"\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x2d\x2d\x5d\x20\x4f\x50\x54\x53" \ -"\x54\x52\x49\x4e\x47\x20\x50\x41\x52\x41\x4d\x53\x0a\x0a\x09\x2d" \ -"\x61\x2c\x2d\x2d\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x09" \ -"\x09\x41\x6c\x6c\x6f\x77\x20\x6c\x6f\x6e\x67\x20\x6f\x70\x74\x69" \ -"\x6f\x6e\x73\x20\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74" \ -"\x68\x20\x73\x69\x6e\x67\x6c\x65\x20\x2d\x0a\x09\x2d\x6c\x2c\x2d" \ -"\x2d\x6c\x6f\x6e\x67\x6f\x70\x74\x69\x6f\x6e\x73\x3d\x4c\x4f\x50" \ -"\x54\x5b\x2c\x2e\x2e\x2e\x5d\x09\x4c\x6f\x6e\x67\x20\x6f\x70\x74" \ -"\x69\x6f\x6e\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x65\x63\x6f\x67" \ -"\x6e\x69\x7a\x65\x64\x0a\x09\x2d\x6e\x2c\x2d\x2d\x6e\x61\x6d\x65" \ -"\x3d\x50\x52\x4f\x47\x4e\x41\x4d\x45\x09\x09\x54\x68\x65\x20\x6e" \ -"\x61\x6d\x65\x20\x75\x6e\x64\x65\x72\x20\x77\x68\x69\x63\x68\x20" \ -"\x65\x72\x72\x6f\x72\x73\x20\x61\x72\x65\x20\x72\x65\x70\x6f\x72" \ -"\x74\x65\x64\x0a\x09\x2d\x6f\x2c\x2d\x2d\x6f\x70\x74\x69\x6f\x6e" \ -"\x73\x3d\x4f\x50\x54\x53\x54\x52\x49\x4e\x47\x09\x09\x53\x68\x6f" \ -"\x72\x74\x20\x6f\x70\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x62\x65" \ -"\x20\x72\x65\x63\x6f\x67\x6e\x69\x7a\x65\x64\x0a\x09\x2d\x71\x2c" \ -"\x2d\x2d\x71\x75\x69\x65\x74\x09\x09\x09\x44\x69\x73\x61\x62\x6c" \ -"\x65\x20\x65\x72\x72\x6f\x72\x20\x72\x65\x70\x6f\x72\x74\x69\x6e" \ -"\x67\x20\x62\x79\x20\x67\x65\x74\x6f\x70\x74\x28\x33\x29\x0a\x09" \ -"\x2d\x51\x2c\x2d\x2d\x71\x75\x69\x65\x74\x2d\x6f\x75\x74\x70\x75" \ -"\x74\x09\x09\x4e\x6f\x20\x6e\x6f\x72\x6d\x61\x6c\x20\x6f\x75\x74" \ -"\x70\x75\x74\x0a\x09\x2d\x73\x2c\x2d\x2d\x73\x68\x65\x6c\x6c\x3d" \ -"\x53\x48\x45\x4c\x4c\x09\x09\x53\x65\x74\x20\x73\x68\x65\x6c\x6c" \ -"\x20\x71\x75\x6f\x74\x69\x6e\x67\x20\x63\x6f\x6e\x76\x65\x6e\x74" \ -"\x69\x6f\x6e\x73\x0a\x09\x2d\x54\x2c\x2d\x2d\x74\x65\x73\x74\x09" \ -"\x09\x09\x54\x65\x73\x74\x20\x66\x6f\x72\x20\x67\x65\x74\x6f\x70" \ -"\x74\x28\x31\x29\x20\x76\x65\x72\x73\x69\x6f\x6e\x0a\x09\x2d\x75" \ -"\x2c\x2d\x2d\x75\x6e\x71\x75\x6f\x74\x65\x64\x09\x09\x09\x44\x6f" \ -"\x6e\x27\x74\x20\x71\x75\x6f\x74\x65\x20\x74\x68\x65\x20\x6f\x75" \ -"\x74\x70\x75\x74\x0a\x0a\x45\x78\x61\x6d\x70\x6c\x65\x3a\x0a\x0a" \ -"\x4f\x3d\x60\x67\x65\x74\x6f\x70\x74\x20\x2d\x6c\x20\x62\x62\x3a" \ -"\x20\x2d\x2d\x20\x61\x62\x3a\x63\x3a\x3a\x20\x22\x24\x40\x22\x60" \ -"\x20\x7c\x7c\x20\x65\x78\x69\x74\x20\x31\x0a\x65\x76\x61\x6c\x20" \ -"\x73\x65\x74\x20\x2d\x2d\x20\x22\x24\x4f\x22\x0a\x77\x68\x69\x6c" \ -"\x65\x20\x74\x72\x75\x65\x3b\x20\x64\x6f\x0a\x09\x63\x61\x73\x65" \ -"\x20\x22\x24\x31\x22\x20\x69\x6e\x0a\x09\x2d\x61\x29\x09\x65\x63" \ -"\x68\x6f\x20\x41\x3b\x20\x73\x68\x69\x66\x74\x3b\x3b\x0a\x09\x2d" \ -"\x62\x7c\x2d\x2d\x62\x62\x29\x20\x65\x63\x68\x6f\x20\x22\x42\x3a" \ -"\x27\x24\x32\x27\x22\x3b\x20\x73\x68\x69\x66\x74\x20\x32\x3b\x3b" \ -"\x0a\x09\x2d\x63\x29\x09\x63\x61\x73\x65\x20\x22\x24\x32\x22\x20" \ -"\x69\x6e\x0a\x09\x09\x22\x22\x29\x09\x65\x63\x68\x6f\x20\x43\x3b" \ -"\x20\x73\x68\x69\x66\x74\x20\x32\x3b\x3b\x0a\x09\x09\x2a\x29\x09" \ -"\x65\x63\x68\x6f\x20\x22\x43\x3a\x27\x24\x32\x27\x22\x3b\x20\x73" \ -"\x68\x69\x66\x74\x20\x32\x3b\x3b\x0a\x09\x09\x65\x73\x61\x63\x3b" \ -"\x3b\x0a\x09\x2d\x2d\x29\x09\x73\x68\x69\x66\x74\x3b\x20\x62\x72" \ -"\x65\x61\x6b\x3b\x3b\x0a\x09\x2a\x29\x09\x65\x63\x68\x6f\x20\x45" \ -"\x72\x72\x6f\x72\x3b\x20\x65\x78\x69\x74\x20\x31\x3b\x3b\x0a\x09" \ -"\x65\x73\x61\x63\x0a\x64\x6f\x6e\x65\x00\x5b\x2d\x48\x68\x6e\x6c" \ -"\x4c\x6f\x71\x76\x73\x72\x69\x77\x46\x45\x5d\x20\x5b\x2d\x6d\x20" \ -"\x4e\x5d\x20\x5b\x2d\x41\x2f\x42\x2f\x43\x20\x4e\x5d\x20\x50\x41" \ -"\x54\x54\x45\x52\x4e\x2f\x2d\x65\x20\x50\x41\x54\x54\x45\x52\x4e" \ -"\x2e\x2e\x2e\x2f\x2d\x66\x20\x46\x49\x4c\x45\x20\x5b\x46\x49\x4c" \ -"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x53\x65\x61\x72\x63\x68\x20\x66\x6f" \ -"\x72\x20\x50\x41\x54\x54\x45\x52\x4e\x20\x69\x6e\x20\x46\x49\x4c" \ -"\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09" \ -"\x2d\x48\x09\x41\x64\x64\x20\x27\x66\x69\x6c\x65\x6e\x61\x6d\x65" \ -"\x3a\x27\x20\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x68\x09\x44\x6f" \ -"\x20\x6e\x6f\x74\x20\x61\x64\x64\x20\x27\x66\x69\x6c\x65\x6e\x61" \ -"\x6d\x65\x3a\x27\x20\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x6e\x09" \ -"\x41\x64\x64\x20\x27\x6c\x69\x6e\x65\x5f\x6e\x6f\x3a\x27\x20\x70" \ -"\x72\x65\x66\x69\x78\x0a\x09\x2d\x6c\x09\x53\x68\x6f\x77\x20\x6f" \ -"\x6e\x6c\x79\x20\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x66\x69\x6c" \ -"\x65\x73\x20\x74\x68\x61\x74\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d" \ -"\x4c\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x6e\x61\x6d\x65" \ -"\x73\x20\x6f\x66\x20\x66\x69\x6c\x65\x73\x20\x74\x68\x61\x74\x20" \ -"\x64\x6f\x6e\x27\x74\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x63\x09" \ -"\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x63\x6f\x75\x6e\x74\x20" \ -"\x6f\x66\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x6c\x69\x6e\x65" \ -"\x73\x0a\x09\x2d\x6f\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20" \ -"\x74\x68\x65\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x70\x61\x72" \ -"\x74\x20\x6f\x66\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x71\x09\x51\x75" \ -"\x69\x65\x74\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x30\x20\x69\x66" \ -"\x20\x50\x41\x54\x54\x45\x52\x4e\x20\x69\x73\x20\x66\x6f\x75\x6e" \ -"\x64\x2c\x20\x31\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x0a\x09" \ -"\x2d\x76\x09\x53\x65\x6c\x65\x63\x74\x20\x6e\x6f\x6e\x2d\x6d\x61" \ -"\x74\x63\x68\x69\x6e\x67\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x73" \ -"\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x6f\x70\x65\x6e\x20\x61" \ -"\x6e\x64\x20\x72\x65\x61\x64\x20\x65\x72\x72\x6f\x72\x73\x0a\x09" \ -"\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x69\x09\x49" \ -"\x67\x6e\x6f\x72\x65\x20\x63\x61\x73\x65\x0a\x09\x2d\x77\x09\x4d" \ -"\x61\x74\x63\x68\x20\x77\x68\x6f\x6c\x65\x20\x77\x6f\x72\x64\x73" \ -"\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x78\x09\x4d\x61\x74\x63\x68\x20" \ -"\x77\x68\x6f\x6c\x65\x20\x6c\x69\x6e\x65\x73\x20\x6f\x6e\x6c\x79" \ -"\x0a\x09\x2d\x46\x09\x50\x41\x54\x54\x45\x52\x4e\x20\x69\x73\x20" \ -"\x61\x20\x6c\x69\x74\x65\x72\x61\x6c\x20\x28\x6e\x6f\x74\x20\x72" \ -"\x65\x67\x65\x78\x70\x29\x0a\x09\x2d\x45\x09\x50\x41\x54\x54\x45" \ -"\x52\x4e\x20\x69\x73\x20\x61\x6e\x20\x65\x78\x74\x65\x6e\x64\x65" \ -"\x64\x20\x72\x65\x67\x65\x78\x70\x0a\x09\x2d\x6d\x20\x4e\x09\x4d" \ -"\x61\x74\x63\x68\x20\x75\x70\x20\x74\x6f\x20\x4e\x20\x74\x69\x6d" \ -"\x65\x73\x20\x70\x65\x72\x20\x66\x69\x6c\x65\x0a\x09\x2d\x41\x20" \ -"\x4e\x09\x50\x72\x69\x6e\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x20" \ -"\x6f\x66\x20\x74\x72\x61\x69\x6c\x69\x6e\x67\x20\x63\x6f\x6e\x74" \ -"\x65\x78\x74\x0a\x09\x2d\x42\x20\x4e\x09\x50\x72\x69\x6e\x74\x20" \ -"\x4e\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x6c\x65\x61\x64\x69" \ -"\x6e\x67\x20\x63\x6f\x6e\x74\x65\x78\x74\x0a\x09\x2d\x43\x20\x4e" \ -"\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x27\x2d\x41\x20\x4e\x20\x2d" \ -"\x42\x20\x4e\x27\x0a\x09\x2d\x65\x20\x50\x54\x52\x4e\x09\x50\x61" \ -"\x74\x74\x65\x72\x6e\x20\x74\x6f\x20\x6d\x61\x74\x63\x68\x0a\x09" \ -"\x2d\x66\x20\x46\x49\x4c\x45\x09\x52\x65\x61\x64\x20\x70\x61\x74" \ -"\x74\x65\x72\x6e\x20\x66\x72\x6f\x6d\x20\x66\x69\x6c\x65\x00\x5b" \ -"\x55\x53\x45\x52\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65" \ -"\x20\x67\x72\x6f\x75\x70\x20\x6d\x65\x6d\x62\x65\x72\x73\x68\x69" \ -"\x70\x73\x20\x6f\x66\x20\x55\x53\x45\x52\x20\x6f\x72\x20\x66\x6f" \ -"\x72\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72" \ -"\x6f\x63\x65\x73\x73\x00\x5b\x2d\x63\x66\x74\x5d\x20\x5b\x46\x49" \ -"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65" \ -"\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64" \ -"\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74" \ -"\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72" \ -"\x63\x65\x0a\x09\x2d\x74\x09\x54\x65\x73\x74\x20\x66\x69\x6c\x65" \ -"\x20\x69\x6e\x74\x65\x67\x72\x69\x74\x79\x00\x5b\x2d\x63\x66\x64" \ -"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6d" \ -"\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20" \ -"\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f" \ -"\x6d\x70\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65" \ -"\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46" \ -"\x6f\x72\x63\x65\x00\x5b\x2d\x64\x20\x44\x45\x4c\x41\x59\x5d\x20" \ -"\x5b\x2d\x6e\x5d\x20\x5b\x2d\x66\x5d\x0a\x0a\x48\x61\x6c\x74\x20" \ -"\x74\x68\x65\x20\x73\x79\x73\x74\x65\x6d\x0a\x0a\x09\x2d\x64\x20" \ -"\x53\x45\x43\x09\x44\x65\x6c\x61\x79\x20\x69\x6e\x74\x65\x72\x76" \ -"\x61\x6c\x0a\x09\x2d\x6e\x09\x44\x6f\x20\x6e\x6f\x74\x20\x73\x79" \ -"\x6e\x63\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x20\x28\x64\x6f" \ -"\x6e\x27\x74\x20\x67\x6f\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x69" \ -"\x6e\x69\x74\x29\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b" \ -"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20" \ -"\x66\x69\x72\x73\x74\x20\x31\x30\x20\x6c\x69\x6e\x65\x73\x20\x6f" \ -"\x66\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20" \ -"\x73\x74\x64\x69\x6e\x29\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74" \ -"\x2e\x0a\x57\x69\x74\x68\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e" \ -"\x20\x6f\x6e\x65\x20\x46\x49\x4c\x45\x2c\x20\x70\x72\x65\x63\x65" \ -"\x64\x65\x20\x65\x61\x63\x68\x20\x77\x69\x74\x68\x20\x61\x20\x66" \ -"\x69\x6c\x65\x6e\x61\x6d\x65\x20\x68\x65\x61\x64\x65\x72\x2e\x0a" \ -"\x0a\x09\x2d\x6e\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e" \ -"\x74\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x0a" \ -"\x09\x2d\x63\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e\x74" \ -"\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x62\x79\x74\x65\x73\x0a\x09" \ -"\x2d\x71\x09\x09\x4e\x65\x76\x65\x72\x20\x70\x72\x69\x6e\x74\x20" \ -"\x68\x65\x61\x64\x65\x72\x73\x0a\x09\x2d\x76\x09\x09\x41\x6c\x77" \ -"\x61\x79\x73\x20\x70\x72\x69\x6e\x74\x20\x68\x65\x61\x64\x65\x72" \ -"\x73\x0a\x0a\x4e\x20\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66\x66" \ -"\x69\x78\x65\x64\x20\x62\x79\x20\x6b\x20\x28\x78\x31\x30\x32\x34" \ -"\x29\x2c\x20\x62\x20\x28\x78\x35\x31\x32\x29\x2c\x20\x6f\x72\x20" \ -"\x6d\x20\x28\x78\x31\x30\x32\x34\x5e\x32\x29\x2e\x00\x5b\x2d\x62" \ -"\x63\x43\x64\x65\x66\x6e\x6f\x73\x76\x78\x52\x5d\x20\x5b\x46\x49" \ -"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20" \ -"\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29" \ -"\x20\x69\x6e\x20\x61\x20\x75\x73\x65\x72\x20\x73\x70\x65\x63\x69" \ -"\x66\x69\x65\x64\x20\x66\x6f\x72\x6d\x61\x74\x0a\x0a\x09\x2d\x62" \ -"\x09\x09\x4f\x6e\x65\x2d\x62\x79\x74\x65\x20\x6f\x63\x74\x61\x6c" \ -"\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x63\x09\x09\x4f\x6e" \ -"\x65\x2d\x62\x79\x74\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72" \ -"\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x43\x09\x09\x43\x61" \ -"\x6e\x6f\x6e\x69\x63\x61\x6c\x20\x68\x65\x78\x2b\x41\x53\x43\x49" \ -"\x49\x2c\x20\x31\x36\x20\x62\x79\x74\x65\x73\x20\x70\x65\x72\x20" \ -"\x6c\x69\x6e\x65\x0a\x09\x2d\x64\x09\x09\x54\x77\x6f\x2d\x62\x79" \ -"\x74\x65\x20\x64\x65\x63\x69\x6d\x61\x6c\x20\x64\x69\x73\x70\x6c" \ -"\x61\x79\x0a\x09\x2d\x65\x20\x46\x4f\x52\x4d\x41\x54\x5f\x53\x54" \ -"\x52\x49\x4e\x47\x0a\x09\x2d\x66\x20\x46\x4f\x52\x4d\x41\x54\x5f" \ -"\x46\x49\x4c\x45\x0a\x09\x2d\x6e\x20\x4c\x45\x4e\x47\x54\x48\x09" \ -"\x49\x6e\x74\x65\x72\x70\x72\x65\x74\x20\x6f\x6e\x6c\x79\x20\x4c" \ -"\x45\x4e\x47\x54\x48\x20\x62\x79\x74\x65\x73\x20\x6f\x66\x20\x69" \ -"\x6e\x70\x75\x74\x0a\x09\x2d\x6f\x09\x09\x54\x77\x6f\x2d\x62\x79" \ -"\x74\x65\x20\x6f\x63\x74\x61\x6c\x20\x64\x69\x73\x70\x6c\x61\x79" \ -"\x0a\x09\x2d\x73\x20\x4f\x46\x46\x53\x45\x54\x09\x53\x6b\x69\x70" \ -"\x20\x4f\x46\x46\x53\x45\x54\x20\x62\x79\x74\x65\x73\x0a\x09\x2d" \ -"\x76\x09\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x61\x6c\x6c\x20\x69" \ -"\x6e\x70\x75\x74\x20\x64\x61\x74\x61\x0a\x09\x2d\x78\x09\x09\x54" \ -"\x77\x6f\x2d\x62\x79\x74\x65\x20\x68\x65\x78\x61\x64\x65\x63\x69" \ -"\x6d\x61\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x52\x09" \ -"\x09\x52\x65\x76\x65\x72\x73\x65\x20\x6f\x66\x20\x27\x68\x65\x78" \ -"\x64\x75\x6d\x70\x20\x2d\x43\x76\x27\x00\x5b\x4f\x50\x54\x49\x4f" \ -"\x4e\x53\x5d\x20\x5b\x55\x53\x45\x52\x5d\x0a\x0a\x50\x72\x69\x6e" \ -"\x74\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x61\x62" \ -"\x6f\x75\x74\x20\x55\x53\x45\x52\x20\x6f\x72\x20\x74\x68\x65\x20" \ -"\x63\x75\x72\x72\x65\x6e\x74\x20\x75\x73\x65\x72\x0a\x0a\x09\x2d" \ -"\x75\x09\x55\x73\x65\x72\x20\x49\x44\x0a\x09\x2d\x67\x09\x47\x72" \ -"\x6f\x75\x70\x20\x49\x44\x0a\x09\x2d\x47\x09\x53\x75\x70\x70\x6c" \ -"\x65\x6d\x65\x6e\x74\x61\x72\x79\x20\x67\x72\x6f\x75\x70\x20\x49" \ -"\x44\x73\x0a\x09\x2d\x6e\x09\x50\x72\x69\x6e\x74\x20\x6e\x61\x6d" \ -"\x65\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x6e\x75" \ -"\x6d\x62\x65\x72\x73\x0a\x09\x2d\x72\x09\x50\x72\x69\x6e\x74\x20" \ -"\x72\x65\x61\x6c\x20\x49\x44\x20\x69\x6e\x73\x74\x65\x61\x64\x20" \ -"\x6f\x66\x20\x65\x66\x66\x65\x63\x74\x69\x76\x65\x20\x49\x44\x00" \ -"\x5b\x2d\x61\x5d\x20\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x5b" \ -"\x61\x64\x64\x72\x65\x73\x73\x5d\x0a\x0a\x43\x6f\x6e\x66\x69\x67" \ -"\x75\x72\x65\x20\x61\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x69\x6e" \ -"\x74\x65\x72\x66\x61\x63\x65\x0a\x0a\x09\x5b\x61\x64\x64\x20\x41" \ -"\x44\x44\x52\x45\x53\x53\x5b\x2f\x50\x52\x45\x46\x49\x58\x4c\x45" \ -"\x4e\x5d\x5d\x0a\x09\x5b\x64\x65\x6c\x20\x41\x44\x44\x52\x45\x53" \ -"\x53\x5b\x2f\x50\x52\x45\x46\x49\x58\x4c\x45\x4e\x5d\x5d\x0a\x09" \ -"\x5b\x5b\x2d\x5d\x62\x72\x6f\x61\x64\x63\x61\x73\x74\x20\x5b\x41" \ -"\x44\x44\x52\x45\x53\x53\x5d\x5d\x20\x5b\x5b\x2d\x5d\x70\x6f\x69" \ -"\x6e\x74\x6f\x70\x6f\x69\x6e\x74\x20\x5b\x41\x44\x44\x52\x45\x53" \ -"\x53\x5d\x5d\x0a\x09\x5b\x6e\x65\x74\x6d\x61\x73\x6b\x20\x41\x44" \ -"\x44\x52\x45\x53\x53\x5d\x20\x5b\x64\x73\x74\x61\x64\x64\x72\x20" \ -"\x41\x44\x44\x52\x45\x53\x53\x5d\x0a\x09\x5b\x68\x77\x20\x65\x74" \ -"\x68\x65\x72\x20\x41\x44\x44\x52\x45\x53\x53\x5d\x20\x5b\x6d\x65" \ -"\x74\x72\x69\x63\x20\x4e\x4e\x5d\x20\x5b\x6d\x74\x75\x20\x4e\x4e" \ -"\x5d\x0a\x09\x5b\x5b\x2d\x5d\x74\x72\x61\x69\x6c\x65\x72\x73\x5d" \ -"\x20\x5b\x5b\x2d\x5d\x61\x72\x70\x5d\x20\x5b\x5b\x2d\x5d\x61\x6c" \ -"\x6c\x6d\x75\x6c\x74\x69\x5d\x0a\x09\x5b\x6d\x75\x6c\x74\x69\x63" \ -"\x61\x73\x74\x5d\x20\x5b\x5b\x2d\x5d\x70\x72\x6f\x6d\x69\x73\x63" \ -"\x5d\x20\x5b\x74\x78\x71\x75\x65\x75\x65\x6c\x65\x6e\x20\x4e\x4e" \ -"\x5d\x20\x5b\x5b\x2d\x5d\x64\x79\x6e\x61\x6d\x69\x63\x5d\x0a\x09" \ -"\x5b\x75\x70\x7c\x64\x6f\x77\x6e\x5d\x20\x2e\x2e\x2e\x00\x5b\x2d" \ -"\x66\x65\x5d\x20\x5b\x2d\x71\x20\x4e\x5d\x20\x5b\x2d\x52\x20\x4e" \ -"\x5d\x20\x5b\x43\x4f\x4e\x46\x46\x49\x4c\x45\x5d\x0a\x0a\x4c\x69" \ -"\x73\x74\x65\x6e\x20\x66\x6f\x72\x20\x6e\x65\x74\x77\x6f\x72\x6b" \ -"\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x73\x20\x61\x6e\x64" \ -"\x20\x6c\x61\x75\x6e\x63\x68\x20\x70\x72\x6f\x67\x72\x61\x6d\x73" \ -"\x0a\x0a\x09\x2d\x66\x09\x52\x75\x6e\x20\x69\x6e\x20\x66\x6f\x72" \ -"\x65\x67\x72\x6f\x75\x6e\x64\x0a\x09\x2d\x65\x09\x4c\x6f\x67\x20" \ -"\x74\x6f\x20\x73\x74\x64\x65\x72\x72\x0a\x09\x2d\x71\x20\x4e\x09" \ -"\x53\x6f\x63\x6b\x65\x74\x20\x6c\x69\x73\x74\x65\x6e\x20\x71\x75" \ -"\x65\x75\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x31\x32" \ -"\x38\x29\x0a\x09\x2d\x52\x20\x4e\x09\x50\x61\x75\x73\x65\x20\x73" \ -"\x65\x72\x76\x69\x63\x65\x73\x20\x61\x66\x74\x65\x72\x20\x4e\x20" \ -"\x63\x6f\x6e\x6e\x65\x63\x74\x73\x2f\x6d\x69\x6e\x0a\x09\x09\x28" \ -"\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x30\x20\x2d\x20\x64\x69\x73" \ -"\x61\x62\x6c\x65\x64\x29\x00\x46\x49\x4c\x45\x20\x5b\x53\x59\x4d" \ -"\x42\x4f\x4c\x3d\x56\x41\x4c\x55\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c" \ -"\x6f\x61\x64\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65" \ -"\x64\x20\x6b\x65\x72\x6e\x65\x6c\x20\x6d\x6f\x64\x75\x6c\x65\x73" \ -"\x20\x69\x6e\x74\x6f\x20\x74\x68\x65\x20\x6b\x65\x72\x6e\x65\x6c" \ -"\x00\x5b\x2d\x63\x64\x44\x73\x70\x5d\x20\x5b\x2d\x6f\x20\x55\x53" \ -"\x45\x52\x5d\x20\x5b\x2d\x67\x20\x47\x52\x50\x5d\x20\x5b\x2d\x6d" \ -"\x20\x4d\x4f\x44\x45\x5d\x20\x5b\x53\x4f\x55\x52\x43\x45\x5d\x2e" \ -"\x2e\x2e\x20\x44\x45\x53\x54\x0a\x0a\x43\x6f\x70\x79\x20\x66\x69" \ -"\x6c\x65\x73\x20\x61\x6e\x64\x20\x73\x65\x74\x20\x61\x74\x74\x72" \ -"\x69\x62\x75\x74\x65\x73\x0a\x0a\x09\x2d\x63\x09\x4a\x75\x73\x74" \ -"\x20\x63\x6f\x70\x79\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a" \ -"\x09\x2d\x64\x09\x43\x72\x65\x61\x74\x65\x20\x64\x69\x72\x65\x63" \ -"\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x44\x09\x43\x72\x65\x61\x74" \ -"\x65\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x74\x61\x72\x67\x65\x74" \ -"\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x73" \ -"\x09\x53\x74\x72\x69\x70\x20\x73\x79\x6d\x62\x6f\x6c\x20\x74\x61" \ -"\x62\x6c\x65\x0a\x09\x2d\x70\x09\x50\x72\x65\x73\x65\x72\x76\x65" \ -"\x20\x64\x61\x74\x65\x0a\x09\x2d\x6f\x20\x55\x53\x45\x52\x09\x53" \ -"\x65\x74\x20\x6f\x77\x6e\x65\x72\x73\x68\x69\x70\x0a\x09\x2d\x67" \ -"\x20\x47\x52\x50\x09\x53\x65\x74\x20\x67\x72\x6f\x75\x70\x20\x6f" \ -"\x77\x6e\x65\x72\x73\x68\x69\x70\x0a\x09\x2d\x6d\x20\x4d\x4f\x44" \ -"\x45\x09\x53\x65\x74\x20\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e" \ -"\x73\x00\x5b\x2d\x63\x20\x31\x2d\x33\x5d\x20\x5b\x2d\x6e\x20\x30" \ -"\x2d\x37\x5d\x20\x5b\x2d\x70\x20\x50\x49\x44\x5d\x20\x5b\x50\x52" \ -"\x4f\x47\x5d\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20\x49\x2f\x4f\x20" \ -"\x70\x72\x69\x6f\x72\x69\x74\x79\x20\x61\x6e\x64\x20\x63\x6c\x61" \ -"\x73\x73\x0a\x0a\x09\x2d\x63\x09\x43\x6c\x61\x73\x73\x2e\x20\x31" \ -"\x3a\x72\x65\x61\x6c\x74\x69\x6d\x65\x20\x32\x3a\x62\x65\x73\x74" \ -"\x2d\x65\x66\x66\x6f\x72\x74\x20\x33\x3a\x69\x64\x6c\x65\x0a\x09" \ -"\x2d\x6e\x09\x50\x72\x69\x6f\x72\x69\x74\x79\x00\x5b\x2d\x63\x5d" \ -"\x20\x5b\x2d\x64\x5d\x20\x5b\x2d\x74\x5d\x20\x5b\x2d\x7a\x5d\x20" \ -"\x5b\x2d\x6b\x7c\x2d\x6d\x5d\x20\x5b\x41\x4c\x4c\x7c\x42\x4c\x4f" \ -"\x43\x4b\x44\x45\x56\x2e\x2e\x2e\x5d\x20\x5b\x49\x4e\x54\x45\x52" \ -"\x56\x41\x4c\x20\x5b\x43\x4f\x55\x4e\x54\x5d\x5d\x0a\x0a\x52\x65" \ -"\x70\x6f\x72\x74\x20\x43\x50\x55\x20\x61\x6e\x64\x20\x49\x2f\x4f" \ -"\x20\x73\x74\x61\x74\x69\x73\x74\x69\x63\x73\x0a\x0a\x09\x2d\x63" \ -"\x09\x53\x68\x6f\x77\x20\x43\x50\x55\x20\x75\x74\x69\x6c\x69\x7a" \ -"\x61\x74\x69\x6f\x6e\x0a\x09\x2d\x64\x09\x53\x68\x6f\x77\x20\x64" \ -"\x65\x76\x69\x63\x65\x20\x75\x74\x69\x6c\x69\x7a\x61\x74\x69\x6f" \ -"\x6e\x0a\x09\x2d\x74\x09\x50\x72\x69\x6e\x74\x20\x63\x75\x72\x72" \ -"\x65\x6e\x74\x20\x74\x69\x6d\x65\x0a\x09\x2d\x7a\x09\x4f\x6d\x69" \ -"\x74\x20\x64\x65\x76\x69\x63\x65\x73\x20\x77\x69\x74\x68\x20\x6e" \ -"\x6f\x20\x61\x63\x74\x69\x76\x69\x74\x79\x0a\x09\x2d\x6b\x09\x55" \ -"\x73\x65\x20\x6b\x62\x2f\x73\x0a\x09\x2d\x6d\x09\x55\x73\x65\x20" \ -"\x4d\x62\x2f\x73\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x7b" \ -"\x61\x64\x64\x72\x65\x73\x73\x20\x7c\x20\x72\x6f\x75\x74\x65\x20" \ -"\x7c\x20\x6c\x69\x6e\x6b\x20\x7c\x20\x72\x75\x6c\x65\x7d\x20\x7b" \ -"\x43\x4f\x4d\x4d\x41\x4e\x44\x7d\x0a\x0a\x69\x70\x20\x5b\x4f\x50" \ -"\x54\x49\x4f\x4e\x53\x5d\x20\x4f\x42\x4a\x45\x43\x54\x20\x7b\x43" \ -"\x4f\x4d\x4d\x41\x4e\x44\x7d\x0a\x77\x68\x65\x72\x65\x20\x4f\x42" \ -"\x4a\x45\x43\x54\x20\x3a\x3d\x20\x7b\x61\x64\x64\x72\x65\x73\x73" \ -"\x20\x7c\x20\x72\x6f\x75\x74\x65\x20\x7c\x20\x6c\x69\x6e\x6b\x20" \ -"\x7c\x20\x72\x75\x6c\x65\x7d\x0a\x4f\x50\x54\x49\x4f\x4e\x53\x20" \ -"\x3a\x3d\x20\x7b\x20\x2d\x66\x5b\x61\x6d\x69\x6c\x79\x5d\x20\x7b" \ -"\x20\x69\x6e\x65\x74\x20\x7c\x20\x69\x6e\x65\x74\x36\x20\x7c\x20" \ -"\x6c\x69\x6e\x6b\x20\x7d\x20\x7c\x20\x2d\x6f\x5b\x6e\x65\x6c\x69" \ -"\x6e\x65\x5d\x20\x7d\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x53\x49\x47" \ -"\x5d\x20\x50\x49\x44\x2e\x2e\x2e\x0a\x0a\x53\x65\x6e\x64\x20\x61" \ -"\x20\x73\x69\x67\x6e\x61\x6c\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \ -"\x3a\x20\x54\x45\x52\x4d\x29\x20\x74\x6f\x20\x67\x69\x76\x65\x6e" \ -"\x20\x50\x49\x44\x73\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20" \ -"\x61\x6c\x6c\x20\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d\x65\x73" \ -"\x20\x61\x6e\x64\x20\x6e\x75\x6d\x62\x65\x72\x73\x00\x5b\x2d\x6c" \ -"\x5d\x20\x5b\x2d\x71\x5d\x20\x5b\x2d\x53\x49\x47\x5d\x20\x50\x52" \ -"\x4f\x43\x45\x53\x53\x5f\x4e\x41\x4d\x45\x2e\x2e\x2e\x0a\x0a\x53" \ -"\x65\x6e\x64\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28\x64\x65" \ -"\x66\x61\x75\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74\x6f\x20" \ -"\x67\x69\x76\x65\x6e\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x0a" \ -"\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20\x61\x6c\x6c\x20\x73\x69" \ -"\x67\x6e\x61\x6c\x20\x6e\x61\x6d\x65\x73\x20\x61\x6e\x64\x20\x6e" \ -"\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x71\x09\x44\x6f\x6e\x27\x74" \ -"\x20\x63\x6f\x6d\x70\x6c\x61\x69\x6e\x20\x69\x66\x20\x6e\x6f\x20" \ -"\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x77\x65\x72\x65\x20\x6b" \ -"\x69\x6c\x6c\x65\x64\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x53\x49\x47" \ -"\x5d\x20\x5b\x2d\x6f\x20\x50\x49\x44\x5d\x2e\x2e\x2e\x0a\x0a\x53" \ -"\x65\x6e\x64\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28\x64\x65" \ -"\x66\x61\x75\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74\x6f\x20" \ -"\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x6f\x75" \ -"\x74\x73\x69\x64\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\x65" \ -"\x73\x73\x69\x6f\x6e\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20" \ -"\x61\x6c\x6c\x20\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d\x65\x73" \ -"\x20\x61\x6e\x64\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x6f" \ -"\x20\x50\x49\x44\x09\x44\x6f\x6e\x27\x74\x20\x73\x69\x67\x6e\x61" \ -"\x6c\x20\x74\x68\x69\x73\x20\x50\x49\x44\x00\x5b\x2d\x45\x4e\x68" \ -"\x7e\x49\x3f\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x56\x69\x65\x77\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74" \ -"\x64\x69\x6e\x29\x20\x6f\x6e\x65\x20\x73\x63\x72\x65\x65\x6e\x66" \ -"\x75\x6c\x20\x61\x74\x20\x61\x20\x74\x69\x6d\x65\x0a\x0a\x09\x2d" \ -"\x45\x09\x51\x75\x69\x74\x20\x6f\x6e\x63\x65\x20\x74\x68\x65\x20" \ -"\x65\x6e\x64\x20\x6f\x66\x20\x61\x20\x66\x69\x6c\x65\x20\x69\x73" \ -"\x20\x72\x65\x61\x63\x68\x65\x64\x0a\x09\x2d\x4e\x09\x50\x72\x65" \ -"\x66\x69\x78\x20\x6c\x69\x6e\x65\x20\x6e\x75\x6d\x62\x65\x72\x20" \ -"\x74\x6f\x20\x65\x61\x63\x68\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x49" \ -"\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x61\x73\x65\x20\x69\x6e\x20" \ -"\x61\x6c\x6c\x20\x73\x65\x61\x72\x63\x68\x65\x73\x0a\x09\x2d\x7e" \ -"\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x7e\x73\x20\x64\x69\x73" \ -"\x70\x6c\x61\x79\x65\x64\x20\x70\x61\x73\x74\x20\x45\x4f\x46\x00" \ -"\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x54\x41\x52\x47\x45\x54" \ -"\x2e\x2e\x2e\x20\x4c\x49\x4e\x4b\x7c\x44\x49\x52\x0a\x0a\x43\x72" \ -"\x65\x61\x74\x65\x20\x61\x20\x6c\x69\x6e\x6b\x20\x4c\x49\x4e\x4b" \ -"\x20\x6f\x72\x20\x44\x49\x52\x2f\x54\x41\x52\x47\x45\x54\x20\x74" \ -"\x6f\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20" \ -"\x54\x41\x52\x47\x45\x54\x28\x73\x29\x0a\x0a\x09\x2d\x73\x09\x4d" \ -"\x61\x6b\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69\x6e\x73" \ -"\x74\x65\x61\x64\x20\x6f\x66\x20\x68\x61\x72\x64\x6c\x69\x6e\x6b" \ -"\x73\x0a\x09\x2d\x66\x09\x52\x65\x6d\x6f\x76\x65\x20\x65\x78\x69" \ -"\x73\x74\x69\x6e\x67\x20\x64\x65\x73\x74\x69\x6e\x61\x74\x69\x6f" \ -"\x6e\x73\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x64\x65\x72" \ -"\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b" \ -"\x73\x20\x2d\x20\x74\x72\x65\x61\x74\x20\x6c\x69\x6b\x65\x20\x6e" \ -"\x6f\x72\x6d\x61\x6c\x20\x66\x69\x6c\x65\x0a\x09\x2d\x62\x09\x4d" \ -"\x61\x6b\x65\x20\x61\x20\x62\x61\x63\x6b\x75\x70\x20\x6f\x66\x20" \ -"\x74\x68\x65\x20\x74\x61\x72\x67\x65\x74\x20\x28\x69\x66\x20\x65" \ -"\x78\x69\x73\x74\x73\x29\x20\x62\x65\x66\x6f\x72\x65\x20\x6c\x69" \ -"\x6e\x6b\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a\x09\x2d\x53" \ -"\x20\x73\x75\x66\x09\x55\x73\x65\x20\x73\x75\x66\x66\x69\x78\x20" \ -"\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x7e\x20\x77\x68\x65" \ -"\x6e\x20\x6d\x61\x6b\x69\x6e\x67\x20\x62\x61\x63\x6b\x75\x70\x20" \ -"\x66\x69\x6c\x65\x73\x0a\x09\x2d\x54\x09\x32\x6e\x64\x20\x61\x72" \ -"\x67\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x44\x49\x52\x0a" \ -"\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x00\x5b\x2d\x72\x5d" \ -"\x20\x5b\x2d\x6f\x20\x4f\x46\x53\x5d\x20\x4c\x4f\x4f\x50\x44\x45" \ -"\x56\x20\x46\x49\x4c\x45\x20\x2d\x20\x61\x73\x73\x6f\x63\x69\x61" \ -"\x74\x65\x20\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x73\x0a" \ -"\x09\x6c\x6f\x73\x65\x74\x75\x70\x20\x2d\x64\x20\x4c\x4f\x4f\x50" \ -"\x44\x45\x56\x20\x2d\x20\x64\x69\x73\x61\x73\x73\x6f\x63\x69\x61" \ -"\x74\x65\x0a\x09\x6c\x6f\x73\x65\x74\x75\x70\x20\x5b\x2d\x66\x5d" \ -"\x20\x2d\x20\x73\x68\x6f\x77\x0a\x0a\x09\x2d\x6f\x20\x4f\x46\x53" \ -"\x09\x53\x74\x61\x72\x74\x20\x4f\x46\x53\x20\x62\x79\x74\x65\x73" \ -"\x20\x69\x6e\x74\x6f\x20\x46\x49\x4c\x45\x0a\x09\x2d\x72\x09\x52" \ -"\x65\x61\x64\x2d\x6f\x6e\x6c\x79\x0a\x09\x2d\x66\x09\x53\x68\x6f" \ -"\x77\x20\x66\x69\x72\x73\x74\x20\x66\x72\x65\x65\x20\x6c\x6f\x6f" \ -"\x70\x20\x64\x65\x76\x69\x63\x65\x00\x5b\x2d\x31\x41\x61\x43\x78" \ -"\x64\x4c\x48\x52\x46\x70\x6c\x69\x6e\x73\x65\x68\x72\x53\x58\x76" \ -"\x63\x74\x75\x5d\x20\x5b\x2d\x77\x20\x57\x49\x44\x54\x48\x5d\x20" \ -"\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20" \ -"\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x63\x6f\x6e\x74\x65\x6e" \ -"\x74\x73\x0a\x0a\x09\x2d\x31\x09\x4f\x6e\x65\x20\x63\x6f\x6c\x75" \ -"\x6d\x6e\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d\x61\x09\x49\x6e" \ -"\x63\x6c\x75\x64\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x77\x68" \ -"\x69\x63\x68\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x2e" \ -"\x0a\x09\x2d\x41\x09\x4c\x69\x6b\x65\x20\x2d\x61\x2c\x20\x62\x75" \ -"\x74\x20\x65\x78\x63\x6c\x75\x64\x65\x20\x2e\x20\x61\x6e\x64\x20" \ -"\x2e\x2e\x0a\x09\x2d\x43\x09\x4c\x69\x73\x74\x20\x62\x79\x20\x63" \ -"\x6f\x6c\x75\x6d\x6e\x73\x0a\x09\x2d\x78\x09\x4c\x69\x73\x74\x20" \ -"\x62\x79\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x64\x09\x4c\x69\x73" \ -"\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x65\x6e\x74\x72" \ -"\x69\x65\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x63" \ -"\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x09\x2d\x4c\x09\x46\x6f\x6c\x6c" \ -"\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x48\x09" \ -"\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20" \ -"\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x0a" \ -"\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x70\x09" \ -"\x41\x70\x70\x65\x6e\x64\x20\x2f\x20\x74\x6f\x20\x64\x69\x72\x20" \ -"\x65\x6e\x74\x72\x69\x65\x73\x0a\x09\x2d\x46\x09\x41\x70\x70\x65" \ -"\x6e\x64\x20\x69\x6e\x64\x69\x63\x61\x74\x6f\x72\x20\x28\x6f\x6e" \ -"\x65\x20\x6f\x66\x20\x2a\x2f\x3d\x40\x7c\x29\x20\x74\x6f\x20\x65" \ -"\x6e\x74\x72\x69\x65\x73\x0a\x09\x2d\x6c\x09\x4c\x6f\x6e\x67\x20" \ -"\x6c\x69\x73\x74\x69\x6e\x67\x20\x66\x6f\x72\x6d\x61\x74\x0a\x09" \ -"\x2d\x69\x09\x4c\x69\x73\x74\x20\x69\x6e\x6f\x64\x65\x20\x6e\x75" \ -"\x6d\x62\x65\x72\x73\x0a\x09\x2d\x6e\x09\x4c\x69\x73\x74\x20\x6e" \ -"\x75\x6d\x65\x72\x69\x63\x20\x55\x49\x44\x73\x20\x61\x6e\x64\x20" \ -"\x47\x49\x44\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20" \ -"\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x73\x09\x4c\x69\x73\x74\x20\x61" \ -"\x6c\x6c\x6f\x63\x61\x74\x65\x64\x20\x62\x6c\x6f\x63\x6b\x73\x0a" \ -"\x09\x2d\x65\x09\x4c\x69\x73\x74\x20\x66\x75\x6c\x6c\x20\x64\x61" \ -"\x74\x65\x20\x61\x6e\x64\x20\x74\x69\x6d\x65\x0a\x09\x2d\x68\x09" \ -"\x4c\x69\x73\x74\x20\x73\x69\x7a\x65\x73\x20\x69\x6e\x20\x68\x75" \ -"\x6d\x61\x6e\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f\x72" \ -"\x6d\x61\x74\x20\x28\x31\x4b\x20\x32\x34\x33\x4d\x20\x32\x47\x29" \ -"\x0a\x09\x2d\x72\x09\x53\x6f\x72\x74\x20\x69\x6e\x20\x72\x65\x76" \ -"\x65\x72\x73\x65\x20\x6f\x72\x64\x65\x72\x0a\x09\x2d\x53\x09\x53" \ -"\x6f\x72\x74\x20\x62\x79\x20\x73\x69\x7a\x65\x0a\x09\x2d\x58\x09" \ -"\x53\x6f\x72\x74\x20\x62\x79\x20\x65\x78\x74\x65\x6e\x73\x69\x6f" \ -"\x6e\x0a\x09\x2d\x76\x09\x53\x6f\x72\x74\x20\x62\x79\x20\x76\x65" \ -"\x72\x73\x69\x6f\x6e\x0a\x09\x2d\x63\x09\x57\x69\x74\x68\x20\x2d" \ -"\x6c\x3a\x20\x73\x6f\x72\x74\x20\x62\x79\x20\x63\x74\x69\x6d\x65" \ -"\x0a\x09\x2d\x74\x09\x57\x69\x74\x68\x20\x2d\x6c\x3a\x20\x73\x6f" \ -"\x72\x74\x20\x62\x79\x20\x6d\x74\x69\x6d\x65\x0a\x09\x2d\x75\x09" \ -"\x57\x69\x74\x68\x20\x2d\x6c\x3a\x20\x73\x6f\x72\x74\x20\x62\x79" \ -"\x20\x61\x74\x69\x6d\x65\x0a\x09\x2d\x77\x20\x4e\x09\x41\x73\x73" \ -"\x75\x6d\x65\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c" \ -"\x20\x69\x73\x20\x4e\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20\x77\x69" \ -"\x64\x65\x0a\x09\x2d\x2d\x63\x6f\x6c\x6f\x72\x5b\x3d\x7b\x61\x6c" \ -"\x77\x61\x79\x73\x2c\x6e\x65\x76\x65\x72\x2c\x61\x75\x74\x6f\x7d" \ -"\x5d\x09\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x63\x6f\x6c\x6f\x72\x69" \ -"\x6e\x67\x00\x5b\x2d\x52\x61\x64\x6c\x76\x5d\x20\x5b\x46\x49\x4c" \ -"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20\x66\x69\x6c\x65" \ -"\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x6f\x6e\x20\x61" \ -"\x6e\x20\x65\x78\x74\x32\x20\x66\x73\x0a\x0a\x09\x2d\x52\x09\x52" \ -"\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x61\x09\x44\x6f\x6e\x27\x74" \ -"\x20\x68\x69\x64\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x73\x74" \ -"\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x2e\x0a\x09\x2d" \ -"\x64\x09\x4c\x69\x73\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \ -"\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x69\x6e\x73\x74\x65\x61\x64" \ -"\x20\x6f\x66\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x09\x2d\x6c" \ -"\x09\x4c\x69\x73\x74\x20\x6c\x6f\x6e\x67\x20\x66\x6c\x61\x67\x20" \ -"\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x76\x09\x4c\x69\x73\x74\x20\x74" \ -"\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x76\x65\x72\x73\x69\x6f" \ -"\x6e\x2f\x67\x65\x6e\x65\x72\x61\x74\x69\x6f\x6e\x20\x6e\x75\x6d" \ -"\x62\x65\x72\x00\x0a\x0a\x4c\x69\x73\x74\x20\x74\x68\x65\x20\x63" \ -"\x75\x72\x72\x65\x6e\x74\x6c\x79\x20\x6c\x6f\x61\x64\x65\x64\x20" \ -"\x6b\x65\x72\x6e\x65\x6c\x20\x6d\x6f\x64\x75\x6c\x65\x73\x00\x0a" \ -"\x0a\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20\x6f\x70\x65\x6e\x20\x66" \ -"\x69\x6c\x65\x73\x00\x08\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65\x63" \ -"\x6f\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75" \ -"\x74\x00\x2d\x64\x20\x5b\x2d\x63\x66\x5d\x20\x5b\x46\x49\x4c\x45" \ -"\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73" \ -"\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29" \ -"\x0a\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73" \ -"\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74" \ -"\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x00\x5b" \ -"\x2d\x63\x66\x76\x64\x31\x32\x33\x34\x35\x36\x37\x38\x39\x43\x46" \ -"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x31" \ -"\x2e\x2e\x39\x09\x43\x6f\x6d\x70\x72\x65\x73\x73\x69\x6f\x6e\x20" \ -"\x6c\x65\x76\x65\x6c\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d\x70" \ -"\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74" \ -"\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72" \ -"\x63\x65\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09" \ -"\x2d\x46\x09\x44\x6f\x6e\x27\x74\x20\x73\x74\x6f\x72\x65\x20\x6f" \ -"\x72\x20\x76\x65\x72\x69\x66\x79\x20\x63\x68\x65\x63\x6b\x73\x75" \ -"\x6d\x0a\x09\x2d\x43\x09\x41\x6c\x73\x6f\x20\x77\x72\x69\x74\x65" \ -"\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6f\x66\x20\x63\x6f\x6d" \ -"\x70\x72\x65\x73\x73\x65\x64\x20\x62\x6c\x6f\x63\x6b\x00\x5b\x2d" \ -"\x76\x43\x46\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x46\x09" \ -"\x44\x6f\x6e\x27\x74\x20\x73\x74\x6f\x72\x65\x20\x6f\x72\x20\x76" \ -"\x65\x72\x69\x66\x79\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x00\x5b" \ -"\x2d\x61\x77\x5d\x20\x5b\x4d\x41\x4e\x50\x41\x47\x45\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x46\x6f\x72\x6d\x61\x74\x20\x61\x6e\x64\x20\x64\x69" \ -"\x73\x70\x6c\x61\x79\x20\x6d\x61\x6e\x75\x61\x6c\x20\x70\x61\x67" \ -"\x65\x0a\x0a\x09\x2d\x61\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x61" \ -"\x6c\x6c\x20\x70\x61\x67\x65\x73\x0a\x09\x2d\x77\x09\x53\x68\x6f" \ -"\x77\x20\x70\x61\x67\x65\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x73" \ -"\x00\x5b\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \ -"\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68" \ -"\x65\x63\x6b\x20\x4d\x44\x35\x20\x63\x68\x65\x63\x6b\x73\x75\x6d" \ -"\x73\x0a\x0a\x09\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d" \ -"\x73\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69" \ -"\x6e\x20\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27" \ -"\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e" \ -"\x67\x2c\x20\x73\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73" \ -"\x68\x6f\x77\x73\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77" \ -"\x09\x57\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72" \ -"\x6f\x70\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64" \ -"\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00" \ -"\x5b\x79\x7c\x6e\x5d\x0a\x0a\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x77" \ -"\x72\x69\x74\x65\x20\x61\x63\x63\x65\x73\x73\x20\x74\x6f\x20\x79" \ -"\x6f\x75\x72\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x0a\x09\x79\x09" \ -"\x41\x6c\x6c\x6f\x77\x20\x77\x72\x69\x74\x65\x20\x61\x63\x63\x65" \ -"\x73\x73\x20\x74\x6f\x20\x79\x6f\x75\x72\x20\x74\x65\x72\x6d\x69" \ -"\x6e\x61\x6c\x0a\x09\x6e\x09\x44\x69\x73\x61\x6c\x6c\x6f\x77\x20" \ -"\x77\x72\x69\x74\x65\x20\x61\x63\x63\x65\x73\x73\x20\x74\x6f\x20" \ -"\x79\x6f\x75\x72\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x00\x5b\x4f" \ -"\x50\x54\x49\x4f\x4e\x53\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52" \ -"\x59\x2e\x2e\x2e\x0a\x0a\x43\x72\x65\x61\x74\x65\x20\x44\x49\x52" \ -"\x45\x43\x54\x4f\x52\x59\x0a\x0a\x09\x2d\x6d\x20\x4d\x4f\x44\x45" \ -"\x09\x4d\x6f\x64\x65\x0a\x09\x2d\x70\x09\x4e\x6f\x20\x65\x72\x72" \ -"\x6f\x72\x20\x69\x66\x20\x65\x78\x69\x73\x74\x73\x3b\x20\x6d\x61" \ -"\x6b\x65\x20\x70\x61\x72\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74" \ -"\x6f\x72\x69\x65\x73\x20\x61\x73\x20\x6e\x65\x65\x64\x65\x64\x00" \ -"\x5b\x2d\x76\x5d\x20\x5b\x2d\x6e\x20\x4c\x41\x42\x45\x4c\x5d\x20" \ -"\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53" \ -"\x5d\x0a\x0a\x4d\x61\x6b\x65\x20\x61\x20\x46\x41\x54\x33\x32\x20" \ -"\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x0a\x09\x2d\x76\x09" \ -"\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x6e\x20\x4c\x42\x4c\x09" \ -"\x56\x6f\x6c\x75\x6d\x65\x20\x6c\x61\x62\x65\x6c\x00\x5b\x2d\x46" \ -"\x6e\x5d\x20\x5b\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x5d" \ -"\x20\x5b\x2d\x69\x20\x49\x4e\x4f\x44\x45\x5f\x52\x41\x54\x49\x4f" \ -"\x5d\x20\x5b\x2d\x49\x20\x49\x4e\x4f\x44\x45\x5f\x53\x49\x5a\x45" \ -"\x5d\x20\x5b\x2d\x6d\x20\x52\x45\x53\x45\x52\x56\x45\x44\x5f\x50" \ -"\x45\x52\x43\x45\x4e\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45" \ -"\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59" \ -"\x54\x45\x53\x5d\x0a\x0a\x09\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49" \ -"\x5a\x45\x09\x42\x6c\x6f\x63\x6b\x20\x73\x69\x7a\x65\x2c\x20\x62" \ -"\x79\x74\x65\x73\x0a\x09\x2d\x46\x09\x09\x46\x6f\x72\x63\x65\x0a" \ -"\x09\x2d\x69\x20\x52\x41\x54\x49\x4f\x09\x4d\x61\x78\x20\x6e\x75" \ -"\x6d\x62\x65\x72\x20\x6f\x66\x20\x66\x69\x6c\x65\x73\x20\x69\x73" \ -"\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x5f\x73\x69\x7a\x65" \ -"\x20\x2f\x20\x52\x41\x54\x49\x4f\x0a\x09\x2d\x49\x20\x42\x59\x54" \ -"\x45\x53\x09\x49\x6e\x6f\x64\x65\x20\x73\x69\x7a\x65\x20\x28\x6d" \ -"\x69\x6e\x20\x31\x32\x38\x29\x0a\x09\x2d\x4c\x20\x4c\x42\x4c\x09" \ -"\x09\x56\x6f\x6c\x75\x6d\x65\x20\x6c\x61\x62\x65\x6c\x0a\x09\x2d" \ -"\x6d\x20\x50\x45\x52\x43\x45\x4e\x54\x09\x50\x65\x72\x63\x65\x6e" \ -"\x74\x20\x6f\x66\x20\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x72" \ -"\x65\x73\x65\x72\x76\x65\x20\x66\x6f\x72\x20\x61\x64\x6d\x69\x6e" \ -"\x0a\x09\x2d\x6e\x09\x09\x44\x72\x79\x20\x72\x75\x6e\x00\x5b\x2d" \ -"\x6d\x20\x4d\x4f\x44\x45\x5d\x20\x4e\x41\x4d\x45\x0a\x0a\x43\x72" \ -"\x65\x61\x74\x65\x20\x6e\x61\x6d\x65\x64\x20\x70\x69\x70\x65\x0a" \ -"\x0a\x09\x2d\x6d\x20\x4d\x4f\x44\x45\x09\x4d\x6f\x64\x65\x20\x28" \ -"\x64\x65\x66\x61\x75\x6c\x74\x20\x61\x3d\x72\x77\x29\x00\x5b\x2d" \ -"\x46\x6e\x5d\x20\x5b\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45" \ -"\x5d\x20\x5b\x2d\x69\x20\x49\x4e\x4f\x44\x45\x5f\x52\x41\x54\x49" \ -"\x4f\x5d\x20\x5b\x2d\x49\x20\x49\x4e\x4f\x44\x45\x5f\x53\x49\x5a" \ -"\x45\x5d\x20\x5b\x2d\x6d\x20\x52\x45\x53\x45\x52\x56\x45\x44\x5f" \ -"\x50\x45\x52\x43\x45\x4e\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42" \ -"\x45\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42" \ -"\x59\x54\x45\x53\x5d\x0a\x0a\x09\x2d\x62\x20\x42\x4c\x4b\x5f\x53" \ -"\x49\x5a\x45\x09\x42\x6c\x6f\x63\x6b\x20\x73\x69\x7a\x65\x2c\x20" \ -"\x62\x79\x74\x65\x73\x0a\x09\x2d\x46\x09\x09\x46\x6f\x72\x63\x65" \ -"\x0a\x09\x2d\x69\x20\x52\x41\x54\x49\x4f\x09\x4d\x61\x78\x20\x6e" \ -"\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x66\x69\x6c\x65\x73\x20\x69" \ -"\x73\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x5f\x73\x69\x7a" \ -"\x65\x20\x2f\x20\x52\x41\x54\x49\x4f\x0a\x09\x2d\x49\x20\x42\x59" \ -"\x54\x45\x53\x09\x49\x6e\x6f\x64\x65\x20\x73\x69\x7a\x65\x20\x28" \ -"\x6d\x69\x6e\x20\x31\x32\x38\x29\x0a\x09\x2d\x4c\x20\x4c\x42\x4c" \ -"\x09\x09\x56\x6f\x6c\x75\x6d\x65\x20\x6c\x61\x62\x65\x6c\x0a\x09" \ -"\x2d\x6d\x20\x50\x45\x52\x43\x45\x4e\x54\x09\x50\x65\x72\x63\x65" \ -"\x6e\x74\x20\x6f\x66\x20\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20" \ -"\x72\x65\x73\x65\x72\x76\x65\x20\x66\x6f\x72\x20\x61\x64\x6d\x69" \ -"\x6e\x0a\x09\x2d\x6e\x09\x09\x44\x72\x79\x20\x72\x75\x6e\x00\x5b" \ -"\x2d\x76\x5d\x20\x5b\x2d\x6e\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42" \ -"\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d" \ -"\x0a\x0a\x4d\x61\x6b\x65\x20\x61\x20\x46\x41\x54\x33\x32\x20\x66" \ -"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x0a\x09\x2d\x76\x09\x56" \ -"\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x6e\x20\x4c\x42\x4c\x09\x56" \ -"\x6f\x6c\x75\x6d\x65\x20\x6c\x61\x62\x65\x6c\x00\x5b\x2d\x6d\x20" \ -"\x4d\x4f\x44\x45\x5d\x20\x4e\x41\x4d\x45\x20\x54\x59\x50\x45\x20" \ -"\x4d\x41\x4a\x4f\x52\x20\x4d\x49\x4e\x4f\x52\x0a\x0a\x43\x72\x65" \ -"\x61\x74\x65\x20\x61\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x66\x69" \ -"\x6c\x65\x20\x28\x62\x6c\x6f\x63\x6b\x2c\x20\x63\x68\x61\x72\x61" \ -"\x63\x74\x65\x72\x2c\x20\x6f\x72\x20\x70\x69\x70\x65\x29\x0a\x0a" \ -"\x09\x2d\x6d\x20\x4d\x4f\x44\x45\x09\x43\x72\x65\x61\x74\x69\x6f" \ -"\x6e\x20\x6d\x6f\x64\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20" \ -"\x61\x3d\x72\x77\x29\x0a\x54\x59\x50\x45\x3a\x0a\x09\x62\x09\x42" \ -"\x6c\x6f\x63\x6b\x20\x64\x65\x76\x69\x63\x65\x0a\x09\x63\x20\x6f" \ -"\x72\x20\x75\x09\x43\x68\x61\x72\x61\x63\x74\x65\x72\x20\x64\x65" \ -"\x76\x69\x63\x65\x0a\x09\x70\x09\x4e\x61\x6d\x65\x64\x20\x70\x69" \ -"\x70\x65\x20\x28\x4d\x41\x4a\x4f\x52\x20\x61\x6e\x64\x20\x4d\x49" \ -"\x4e\x4f\x52\x20\x61\x72\x65\x20\x69\x67\x6e\x6f\x72\x65\x64\x29" \ -"\x00\x5b\x2d\x4c\x20\x4c\x42\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44" \ -"\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a\x0a\x50\x72\x65" \ -"\x70\x61\x72\x65\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x74\x6f" \ -"\x20\x62\x65\x20\x75\x73\x65\x64\x20\x61\x73\x20\x73\x77\x61\x70" \ -"\x20\x70\x61\x72\x74\x69\x74\x69\x6f\x6e\x0a\x0a\x09\x2d\x4c\x20" \ -"\x4c\x42\x4c\x09\x4c\x61\x62\x65\x6c\x00\x5b\x2d\x64\x74\x5d\x20" \ -"\x5b\x2d\x70\x20\x44\x49\x52\x5d\x20\x5b\x54\x45\x4d\x50\x4c\x41" \ -"\x54\x45\x5d\x0a\x0a\x43\x72\x65\x61\x74\x65\x20\x61\x20\x74\x65" \ -"\x6d\x70\x6f\x72\x61\x72\x79\x20\x66\x69\x6c\x65\x20\x77\x69\x74" \ -"\x68\x20\x6e\x61\x6d\x65\x20\x62\x61\x73\x65\x64\x20\x6f\x6e\x20" \ -"\x54\x45\x4d\x50\x4c\x41\x54\x45\x20\x61\x6e\x64\x20\x70\x72\x69" \ -"\x6e\x74\x20\x69\x74\x73\x20\x6e\x61\x6d\x65\x2e\x0a\x54\x45\x4d" \ -"\x50\x4c\x41\x54\x45\x20\x6d\x75\x73\x74\x20\x65\x6e\x64\x20\x77" \ -"\x69\x74\x68\x20\x58\x58\x58\x58\x58\x58\x20\x28\x65\x2e\x67\x2e" \ -"\x20\x5b\x2f\x64\x69\x72\x2f\x5d\x6e\x61\x6d\x65\x58\x58\x58\x58" \ -"\x58\x58\x29\x2e\x0a\x57\x69\x74\x68\x6f\x75\x74\x20\x54\x45\x4d" \ -"\x50\x4c\x41\x54\x45\x2c\x20\x2d\x74\x20\x74\x6d\x70\x2e\x58\x58" \ -"\x58\x58\x58\x58\x20\x69\x73\x20\x61\x73\x73\x75\x6d\x65\x64\x2e" \ -"\x0a\x0a\x09\x2d\x64\x09\x4d\x61\x6b\x65\x20\x64\x69\x72\x65\x63" \ -"\x74\x6f\x72\x79\x2c\x20\x6e\x6f\x74\x20\x66\x69\x6c\x65\x0a\x09" \ -"\x2d\x71\x09\x46\x61\x69\x6c\x20\x73\x69\x6c\x65\x6e\x74\x6c\x79" \ -"\x20\x6f\x6e\x20\x65\x72\x72\x6f\x72\x73\x0a\x09\x2d\x74\x09\x50" \ -"\x72\x65\x70\x65\x6e\x64\x20\x62\x61\x73\x65\x20\x64\x69\x72\x65" \ -"\x63\x74\x6f\x72\x79\x20\x6e\x61\x6d\x65\x20\x74\x6f\x20\x54\x45" \ -"\x4d\x50\x4c\x41\x54\x45\x0a\x09\x2d\x70\x20\x44\x49\x52\x09\x55" \ -"\x73\x65\x20\x44\x49\x52\x20\x61\x73\x20\x61\x20\x62\x61\x73\x65" \ -"\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x28\x69\x6d\x70\x6c" \ -"\x69\x65\x73\x20\x2d\x74\x29\x0a\x09\x2d\x75\x09\x44\x6f\x20\x6e" \ -"\x6f\x74\x20\x63\x72\x65\x61\x74\x65\x20\x61\x6e\x79\x74\x68\x69" \ -"\x6e\x67\x3b\x20\x70\x72\x69\x6e\x74\x20\x61\x20\x6e\x61\x6d\x65" \ -"\x0a\x0a\x42\x61\x73\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \ -"\x20\x69\x73\x3a\x20\x2d\x70\x20\x44\x49\x52\x2c\x20\x65\x6c\x73" \ -"\x65\x20\x24\x54\x4d\x50\x44\x49\x52\x2c\x20\x65\x6c\x73\x65\x20" \ -"\x2f\x64\x61\x74\x61\x2f\x6c\x6f\x63\x61\x6c\x2f\x74\x6d\x70\x00" \ -"\x5b\x2d\x61\x64\x6c\x70\x30\x5d\x20\x5b\x2d\x46\x20\x6b\x65\x79" \ -"\x77\x6f\x72\x64\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x0a\x0a\x09\x2d" \ -"\x61\x09\x09\x53\x68\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20" \ -"\x27\x2d\x46\x20\x61\x75\x74\x68\x6f\x72\x27\x0a\x09\x2d\x64\x09" \ -"\x09\x53\x68\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d" \ -"\x46\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x27\x0a\x09" \ -"\x2d\x6c\x09\x09\x53\x68\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72" \ -"\x20\x27\x2d\x46\x20\x6c\x69\x63\x65\x6e\x73\x65\x27\x0a\x09\x2d" \ -"\x70\x09\x09\x53\x68\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20" \ -"\x27\x2d\x46\x20\x70\x61\x72\x6d\x27\x0a\x09\x2d\x46\x20\x6b\x65" \ -"\x79\x77\x6f\x72\x64\x09\x4b\x65\x79\x77\x6f\x72\x64\x20\x74\x6f" \ -"\x20\x6c\x6f\x6f\x6b\x20\x66\x6f\x72\x0a\x09\x2d\x30\x09\x09\x53" \ -"\x65\x70\x61\x72\x61\x74\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x77" \ -"\x69\x74\x68\x20\x4e\x55\x4c\x73\x00\x5b\x2d\x71\x66\x77\x72\x73" \ -"\x76\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x20\x5b\x73\x79\x6d\x62\x6f" \ -"\x6c\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x72" \ -"\x09\x52\x65\x6d\x6f\x76\x65\x20\x4d\x4f\x44\x55\x4c\x45\x20\x28" \ -"\x73\x74\x61\x63\x6b\x73\x29\x20\x6f\x72\x20\x64\x6f\x20\x61\x75" \ -"\x74\x6f\x63\x6c\x65\x61\x6e\x0a\x09\x2d\x71\x09\x51\x75\x69\x65" \ -"\x74\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d" \ -"\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x77\x09\x57\x61\x69\x74" \ -"\x20\x66\x6f\x72\x20\x75\x6e\x6c\x6f\x61\x64\x0a\x09\x2d\x73\x09" \ -"\x52\x65\x70\x6f\x72\x74\x20\x76\x69\x61\x20\x73\x79\x73\x6c\x6f" \ -"\x67\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64" \ -"\x65\x72\x72\x00\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x56" \ -"\x69\x65\x77\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64" \ -"\x69\x6e\x29\x20\x6f\x6e\x65\x20\x73\x63\x72\x65\x65\x6e\x66\x75" \ -"\x6c\x20\x61\x74\x20\x61\x20\x74\x69\x6d\x65\x00\x5b\x4f\x50\x54" \ -"\x49\x4f\x4e\x53\x5d\x20\x5b\x2d\x6f\x20\x4f\x50\x54\x53\x5d\x20" \ -"\x44\x45\x56\x49\x43\x45\x20\x4e\x4f\x44\x45\x0a\x0a\x4d\x6f\x75" \ -"\x6e\x74\x20\x61\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2e" \ -"\x20\x46\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x61\x75\x74\x6f" \ -"\x64\x65\x74\x65\x63\x74\x69\x6f\x6e\x20\x72\x65\x71\x75\x69\x72" \ -"\x65\x73\x20\x2f\x70\x72\x6f\x63\x2e\x0a\x0a\x09\x2d\x61\x09\x09" \ -"\x4d\x6f\x75\x6e\x74\x20\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73\x79" \ -"\x73\x74\x65\x6d\x73\x20\x69\x6e\x20\x66\x73\x74\x61\x62\x0a\x09" \ -"\x2d\x66\x09\x09\x44\x72\x79\x20\x72\x75\x6e\x0a\x09\x2d\x76\x09" \ -"\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x72\x09\x09\x52\x65" \ -"\x61\x64\x2d\x6f\x6e\x6c\x79\x20\x6d\x6f\x75\x6e\x74\x0a\x09\x2d" \ -"\x77\x09\x09\x52\x65\x61\x64\x2d\x77\x72\x69\x74\x65\x20\x6d\x6f" \ -"\x75\x6e\x74\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d" \ -"\x74\x20\x46\x53\x54\x59\x50\x45\x5b\x2c\x2e\x2e\x2e\x5d\x09\x46" \ -"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x74\x79\x70\x65\x28\x73" \ -"\x29\x0a\x09\x2d\x4f\x20\x4f\x50\x54\x09\x09\x4d\x6f\x75\x6e\x74" \ -"\x20\x6f\x6e\x6c\x79\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d" \ -"\x73\x20\x77\x69\x74\x68\x20\x6f\x70\x74\x69\x6f\x6e\x20\x4f\x50" \ -"\x54\x20\x28\x2d\x61\x20\x6f\x6e\x6c\x79\x29\x0a\x2d\x6f\x20\x4f" \ -"\x50\x54\x3a\x0a\x09\x6c\x6f\x6f\x70\x09\x09\x49\x67\x6e\x6f\x72" \ -"\x65\x64\x20\x28\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x73" \ -"\x20\x61\x72\x65\x20\x61\x75\x74\x6f\x64\x65\x74\x65\x63\x74\x65" \ -"\x64\x29\x0a\x09\x5b\x61\x5d\x73\x79\x6e\x63\x09\x09\x57\x72\x69" \ -"\x74\x65\x73\x20\x61\x72\x65\x20\x5b\x61\x5d\x73\x79\x6e\x63\x68" \ -"\x72\x6f\x6e\x6f\x75\x73\x0a\x09\x5b\x6e\x6f\x5d\x61\x74\x69\x6d" \ -"\x65\x09\x44\x69\x73\x61\x62\x6c\x65\x2f\x65\x6e\x61\x62\x6c\x65" \ -"\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\x6f\x20\x69\x6e\x6f\x64" \ -"\x65\x20\x61\x63\x63\x65\x73\x73\x20\x74\x69\x6d\x65\x73\x0a\x09" \ -"\x5b\x6e\x6f\x5d\x64\x69\x72\x61\x74\x69\x6d\x65\x09\x44\x69\x73" \ -"\x61\x62\x6c\x65\x2f\x65\x6e\x61\x62\x6c\x65\x20\x61\x74\x69\x6d" \ -"\x65\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\x6f\x20\x64\x69\x72" \ -"\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x5b\x6e\x6f\x5d\x72\x65" \ -"\x6c\x61\x74\x69\x6d\x65\x09\x44\x69\x73\x61\x62\x6c\x65\x2f\x65" \ -"\x6e\x61\x62\x6c\x65\x20\x61\x74\x69\x6d\x65\x20\x75\x70\x64\x61" \ -"\x74\x65\x73\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x74\x6f\x20" \ -"\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x74\x69\x6d" \ -"\x65\x0a\x09\x5b\x6e\x6f\x5d\x64\x65\x76\x09\x09\x28\x44\x69\x73" \ -"\x29\x61\x6c\x6c\x6f\x77\x20\x75\x73\x65\x20\x6f\x66\x20\x73\x70" \ -"\x65\x63\x69\x61\x6c\x20\x64\x65\x76\x69\x63\x65\x20\x66\x69\x6c" \ -"\x65\x73\x0a\x09\x5b\x6e\x6f\x5d\x65\x78\x65\x63\x09\x28\x44\x69" \ -"\x73\x29\x61\x6c\x6c\x6f\x77\x20\x75\x73\x65\x20\x6f\x66\x20\x65" \ -"\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x73\x0a" \ -"\x09\x5b\x6e\x6f\x5d\x73\x75\x69\x64\x09\x28\x44\x69\x73\x29\x61" \ -"\x6c\x6c\x6f\x77\x20\x73\x65\x74\x2d\x75\x73\x65\x72\x2d\x69\x64" \ -"\x2d\x72\x6f\x6f\x74\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x0a\x09" \ -"\x5b\x72\x5d\x73\x68\x61\x72\x65\x64\x09\x43\x6f\x6e\x76\x65\x72" \ -"\x74\x20\x5b\x72\x65\x63\x75\x72\x73\x69\x76\x65\x6c\x79\x5d\x20" \ -"\x74\x6f\x20\x61\x20\x73\x68\x61\x72\x65\x64\x20\x73\x75\x62\x74" \ -"\x72\x65\x65\x0a\x09\x5b\x72\x5d\x73\x6c\x61\x76\x65\x09\x43\x6f" \ -"\x6e\x76\x65\x72\x74\x20\x5b\x72\x65\x63\x75\x72\x73\x69\x76\x65" \ -"\x6c\x79\x5d\x20\x74\x6f\x20\x61\x20\x73\x6c\x61\x76\x65\x20\x73" \ -"\x75\x62\x74\x72\x65\x65\x0a\x09\x5b\x72\x5d\x70\x72\x69\x76\x61" \ -"\x74\x65\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x5b\x72\x65\x63\x75" \ -"\x72\x73\x69\x76\x65\x6c\x79\x5d\x20\x74\x6f\x20\x61\x20\x70\x72" \ -"\x69\x76\x61\x74\x65\x20\x73\x75\x62\x74\x72\x65\x65\x0a\x09\x5b" \ -"\x75\x6e\x5d\x62\x69\x6e\x64\x61\x62\x6c\x65\x09\x4d\x61\x6b\x65" \ -"\x20\x6d\x6f\x75\x6e\x74\x20\x70\x6f\x69\x6e\x74\x20\x5b\x75\x6e" \ -"\x5d\x61\x62\x6c\x65\x20\x74\x6f\x20\x62\x65\x20\x62\x69\x6e\x64" \ -"\x20\x6d\x6f\x75\x6e\x74\x65\x64\x0a\x09\x5b\x72\x5d\x62\x69\x6e" \ -"\x64\x09\x09\x42\x69\x6e\x64\x20\x61\x20\x66\x69\x6c\x65\x20\x6f" \ -"\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x5b\x72\x65\x63" \ -"\x75\x72\x73\x69\x76\x65\x6c\x79\x5d\x20\x74\x6f\x20\x61\x6e\x6f" \ -"\x74\x68\x65\x72\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x0a\x09\x6d" \ -"\x6f\x76\x65\x09\x09\x52\x65\x6c\x6f\x63\x61\x74\x65\x20\x61\x6e" \ -"\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x6d\x6f\x75\x6e\x74\x20" \ -"\x70\x6f\x69\x6e\x74\x0a\x09\x72\x65\x6d\x6f\x75\x6e\x74\x09\x09" \ -"\x52\x65\x6d\x6f\x75\x6e\x74\x20\x61\x20\x6d\x6f\x75\x6e\x74\x65" \ -"\x64\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2c\x20\x63\x68" \ -"\x61\x6e\x67\x69\x6e\x67\x20\x66\x6c\x61\x67\x73\x0a\x09\x72\x6f" \ -"\x2f\x72\x77\x09\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x2d\x72\x2f" \ -"\x2d\x77\x0a\x0a\x54\x68\x65\x72\x65\x20\x61\x72\x65\x20\x66\x69" \ -"\x6c\x65\x73\x79\x73\x74\x65\x6d\x2d\x73\x70\x65\x63\x69\x66\x69" \ -"\x63\x20\x2d\x6f\x20\x66\x6c\x61\x67\x73\x2e\x00\x5b\x2d\x71\x5d" \ -"\x20\x3c\x5b\x2d\x64\x6e\x5d\x20\x44\x49\x52\x20\x7c\x20\x2d\x78" \ -"\x20\x44\x45\x56\x49\x43\x45\x3e\x0a\x0a\x43\x68\x65\x63\x6b\x20" \ -"\x69\x66\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \ -"\x20\x69\x73\x20\x61\x20\x6d\x6f\x75\x6e\x74\x70\x6f\x69\x6e\x74" \ -"\x0a\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x64\x09" \ -"\x50\x72\x69\x6e\x74\x20\x6d\x61\x6a\x6f\x72\x2f\x6d\x69\x6e\x6f" \ -"\x72\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20" \ -"\x6f\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65" \ -"\x6d\x0a\x09\x2d\x6e\x09\x50\x72\x69\x6e\x74\x20\x64\x65\x76\x69" \ -"\x63\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x66" \ -"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x09\x2d\x78\x09\x50\x72" \ -"\x69\x6e\x74\x20\x6d\x61\x6a\x6f\x72\x2f\x6d\x69\x6e\x6f\x72\x20" \ -"\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66" \ -"\x20\x74\x68\x65\x20\x62\x6c\x6f\x63\x6b\x64\x65\x76\x69\x63\x65" \ -"\x00\x5b\x2d\x41\x5d\x20\x5b\x2d\x49\x20\x53\x55\x4d\x7c\x43\x50" \ -"\x55\x7c\x41\x4c\x4c\x7c\x53\x43\x50\x55\x5d\x20\x5b\x2d\x75\x5d" \ -"\x20\x5b\x2d\x50\x20\x6e\x75\x6d\x7c\x41\x4c\x4c\x5d\x20\x5b\x49" \ -"\x4e\x54\x45\x52\x56\x41\x4c\x20\x5b\x43\x4f\x55\x4e\x54\x5d\x5d" \ -"\x0a\x0a\x50\x65\x72\x2d\x70\x72\x6f\x63\x65\x73\x73\x6f\x72\x20" \ -"\x73\x74\x61\x74\x69\x73\x74\x69\x63\x73\x0a\x0a\x09\x2d\x41\x09" \ -"\x09\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x2d\x49\x20\x41\x4c\x4c" \ -"\x20\x2d\x75\x20\x2d\x50\x20\x41\x4c\x4c\x0a\x09\x2d\x49\x20\x53" \ -"\x55\x4d\x7c\x43\x50\x55\x7c\x41\x4c\x4c\x7c\x53\x43\x50\x55\x09" \ -"\x52\x65\x70\x6f\x72\x74\x20\x69\x6e\x74\x65\x72\x72\x75\x70\x74" \ -"\x20\x73\x74\x61\x74\x69\x73\x74\x69\x63\x73\x0a\x09\x2d\x50\x20" \ -"\x6e\x75\x6d\x7c\x41\x4c\x4c\x09\x09\x50\x72\x6f\x63\x65\x73\x73" \ -"\x6f\x72\x20\x74\x6f\x20\x6d\x6f\x6e\x69\x74\x6f\x72\x0a\x09\x2d" \ -"\x75\x09\x09\x09\x52\x65\x70\x6f\x72\x74\x20\x43\x50\x55\x20\x75" \ -"\x74\x69\x6c\x69\x7a\x61\x74\x69\x6f\x6e\x00\x5b\x2d\x66\x69\x6e" \ -"\x5d\x20\x53\x4f\x55\x52\x43\x45\x20\x44\x45\x53\x54\x0a\x6f\x72" \ -"\x3a\x20\x6d\x76\x20\x5b\x2d\x66\x69\x6e\x5d\x20\x53\x4f\x55\x52" \ -"\x43\x45\x2e\x2e\x2e\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a" \ -"\x0a\x52\x65\x6e\x61\x6d\x65\x20\x53\x4f\x55\x52\x43\x45\x20\x74" \ -"\x6f\x20\x44\x45\x53\x54\x2c\x20\x6f\x72\x20\x6d\x6f\x76\x65\x20" \ -"\x53\x4f\x55\x52\x43\x45\x28\x73\x29\x20\x74\x6f\x20\x44\x49\x52" \ -"\x45\x43\x54\x4f\x52\x59\x0a\x0a\x09\x2d\x66\x09\x44\x6f\x6e\x27" \ -"\x74\x20\x70\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f\x72\x65\x20" \ -"\x6f\x76\x65\x72\x77\x72\x69\x74\x69\x6e\x67\x0a\x09\x2d\x69\x09" \ -"\x49\x6e\x74\x65\x72\x61\x63\x74\x69\x76\x65\x2c\x20\x70\x72\x6f" \ -"\x6d\x70\x74\x20\x62\x65\x66\x6f\x72\x65\x20\x6f\x76\x65\x72\x77" \ -"\x72\x69\x74\x65\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x6f" \ -"\x76\x65\x72\x77\x72\x69\x74\x65\x20\x61\x6e\x20\x65\x78\x69\x73" \ -"\x74\x69\x6e\x67\x20\x66\x69\x6c\x65\x00\x5b\x2d\x6f\x5d\x20\x5b" \ -"\x2d\x62\x5d\x20\x5b\x2d\x73\x20\x41\x44\x44\x52\x5d\x20\x5b\x2d" \ -"\x66\x20\x46\x49\x4c\x45\x5d\x20\x4d\x54\x44\x5f\x44\x45\x56\x49" \ -"\x43\x45\x0a\x0a\x44\x75\x6d\x70\x20\x74\x68\x65\x20\x73\x70\x65" \ -"\x63\x69\x66\x69\x65\x64\x20\x4d\x54\x44\x20\x64\x65\x76\x69\x63" \ -"\x65\x0a\x0a\x09\x2d\x6f\x09\x44\x75\x6d\x70\x20\x6f\x6f\x62\x20" \ -"\x64\x61\x74\x61\x0a\x09\x2d\x62\x09\x4f\x6d\x69\x74\x20\x62\x61" \ -"\x64\x20\x62\x6c\x6f\x63\x6b\x20\x66\x72\x6f\x6d\x20\x74\x68\x65" \ -"\x20\x64\x75\x6d\x70\x0a\x09\x2d\x73\x20\x41\x44\x44\x52\x09\x53" \ -"\x74\x61\x72\x74\x20\x61\x64\x64\x72\x65\x73\x73\x0a\x09\x2d\x6c" \ -"\x20\x4c\x45\x4e\x09\x4c\x65\x6e\x67\x74\x68\x0a\x09\x2d\x66\x20" \ -"\x46\x49\x4c\x45\x09\x44\x75\x6d\x70\x20\x74\x6f\x20\x66\x69\x6c" \ -"\x65\x20\x28\x27\x2d\x27\x20\x66\x6f\x72\x20\x73\x74\x64\x6f\x75" \ -"\x74\x29\x00\x5b\x2d\x70\x5d\x20\x5b\x2d\x73\x20\x41\x44\x44\x52" \ -"\x5d\x20\x4d\x54\x44\x5f\x44\x45\x56\x49\x43\x45\x20\x5b\x46\x49" \ -"\x4c\x45\x5d\x0a\x0a\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x74\x68" \ -"\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x4d\x54\x44\x20" \ -"\x64\x65\x76\x69\x63\x65\x0a\x0a\x09\x2d\x70\x09\x50\x61\x64\x20" \ -"\x74\x6f\x20\x70\x61\x67\x65\x20\x73\x69\x7a\x65\x0a\x09\x2d\x73" \ -"\x20\x41\x44\x44\x52\x09\x53\x74\x61\x72\x74\x20\x61\x64\x64\x72" \ -"\x65\x73\x73\x00\x48\x4f\x53\x54\x20\x50\x4f\x52\x54\x20\x42\x4c" \ -"\x4f\x43\x4b\x44\x45\x56\x0a\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x20" \ -"\x74\x6f\x20\x48\x4f\x53\x54\x20\x61\x6e\x64\x20\x70\x72\x6f\x76" \ -"\x69\x64\x65\x20\x61\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x62\x6c" \ -"\x6f\x63\x6b\x20\x64\x65\x76\x69\x63\x65\x20\x6f\x6e\x20\x42\x4c" \ -"\x4f\x43\x4b\x44\x45\x56\x00\x5b\x2d\x69\x4e\x5d\x20\x5b\x2d\x77" \ -"\x4e\x5d\x20\x5b\x2d\x6c\x5d\x20\x5b\x2d\x70\x20\x50\x4f\x52\x54" \ -"\x5d\x20\x5b\x2d\x66\x20\x46\x49\x4c\x45\x7c\x49\x50\x41\x44\x44" \ -"\x52\x20\x50\x4f\x52\x54\x5d\x20\x5b\x2d\x65\x20\x50\x52\x4f\x47" \ -"\x5d\x0a\x0a\x4f\x70\x65\x6e\x20\x61\x20\x70\x69\x70\x65\x20\x74" \ -"\x6f\x20\x49\x50\x3a\x50\x4f\x52\x54\x20\x6f\x72\x20\x46\x49\x4c" \ -"\x45\x0a\x0a\x09\x2d\x65\x20\x50\x52\x4f\x47\x09\x52\x75\x6e\x20" \ -"\x50\x52\x4f\x47\x20\x61\x66\x74\x65\x72\x20\x63\x6f\x6e\x6e\x65" \ -"\x63\x74\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x65\x6e\x20\x6d\x6f" \ -"\x64\x65\x2c\x20\x66\x6f\x72\x20\x69\x6e\x62\x6f\x75\x6e\x64\x20" \ -"\x63\x6f\x6e\x6e\x65\x63\x74\x73\x0a\x09\x09\x28\x75\x73\x65\x20" \ -"\x2d\x6c\x20\x74\x77\x69\x63\x65\x20\x77\x69\x74\x68\x20\x2d\x65" \ -"\x20\x66\x6f\x72\x20\x70\x65\x72\x73\x69\x73\x74\x65\x6e\x74\x20" \ -"\x73\x65\x72\x76\x65\x72\x29\x0a\x09\x2d\x70\x20\x50\x4f\x52\x54" \ -"\x09\x4c\x6f\x63\x61\x6c\x20\x70\x6f\x72\x74\x0a\x09\x2d\x77\x20" \ -"\x53\x45\x43\x09\x54\x69\x6d\x65\x6f\x75\x74\x20\x66\x6f\x72\x20" \ -"\x63\x6f\x6e\x6e\x65\x63\x74\x0a\x09\x2d\x69\x20\x53\x45\x43\x09" \ -"\x44\x65\x6c\x61\x79\x20\x69\x6e\x74\x65\x72\x76\x61\x6c\x20\x66" \ -"\x6f\x72\x20\x6c\x69\x6e\x65\x73\x20\x73\x65\x6e\x74\x0a\x09\x2d" \ -"\x66\x20\x46\x49\x4c\x45\x09\x55\x73\x65\x20\x66\x69\x6c\x65\x20" \ -"\x28\x61\x6c\x61\x20\x2f\x64\x65\x76\x2f\x74\x74\x79\x53\x30\x29" \ -"\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x6e\x65\x74\x77" \ -"\x6f\x72\x6b\x00\x5b\x2d\x72\x61\x6c\x5d\x20\x5b\x2d\x74\x75\x77" \ -"\x78\x5d\x20\x5b\x2d\x65\x6e\x57\x70\x5d\x0a\x0a\x44\x69\x73\x70" \ -"\x6c\x61\x79\x20\x6e\x65\x74\x77\x6f\x72\x6b\x69\x6e\x67\x20\x69" \ -"\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x0a\x09\x2d\x72\x09" \ -"\x52\x6f\x75\x74\x69\x6e\x67\x20\x74\x61\x62\x6c\x65\x0a\x09\x2d" \ -"\x61\x09\x41\x6c\x6c\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \ -"\x6c\x09\x4c\x69\x73\x74\x65\x6e\x69\x6e\x67\x20\x73\x6f\x63\x6b" \ -"\x65\x74\x73\x0a\x09\x09\x45\x6c\x73\x65\x3a\x20\x63\x6f\x6e\x6e" \ -"\x65\x63\x74\x65\x64\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \ -"\x74\x09\x54\x43\x50\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \ -"\x75\x09\x55\x44\x50\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \ -"\x77\x09\x52\x61\x77\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09\x2d" \ -"\x78\x09\x55\x6e\x69\x78\x20\x73\x6f\x63\x6b\x65\x74\x73\x0a\x09" \ -"\x09\x45\x6c\x73\x65\x3a\x20\x61\x6c\x6c\x20\x73\x6f\x63\x6b\x65" \ -"\x74\x20\x74\x79\x70\x65\x73\x0a\x09\x2d\x65\x09\x4f\x74\x68\x65" \ -"\x72\x2f\x6d\x6f\x72\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69" \ -"\x6f\x6e\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x72\x65\x73" \ -"\x6f\x6c\x76\x65\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x57\x09\x57" \ -"\x69\x64\x65\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x70\x09" \ -"\x53\x68\x6f\x77\x20\x50\x49\x44\x2f\x70\x72\x6f\x67\x72\x61\x6d" \ -"\x20\x6e\x61\x6d\x65\x20\x66\x6f\x72\x20\x73\x6f\x63\x6b\x65\x74" \ -"\x73\x00\x5b\x2d\x6e\x20\x41\x44\x4a\x55\x53\x54\x5d\x20\x5b\x50" \ -"\x52\x4f\x47\x20\x41\x52\x47\x53\x5d\x0a\x0a\x43\x68\x61\x6e\x67" \ -"\x65\x20\x73\x63\x68\x65\x64\x75\x6c\x69\x6e\x67\x20\x70\x72\x69" \ -"\x6f\x72\x69\x74\x79\x2c\x20\x72\x75\x6e\x20\x50\x52\x4f\x47\x0a" \ -"\x0a\x09\x2d\x6e\x20\x41\x44\x4a\x55\x53\x54\x09\x41\x64\x6a\x75" \ -"\x73\x74\x20\x70\x72\x69\x6f\x72\x69\x74\x79\x20\x62\x79\x20\x41" \ -"\x44\x4a\x55\x53\x54\x00\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x0a" \ -"\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20\x69\x6d\x6d\x75\x6e\x65" \ -"\x20\x74\x6f\x20\x68\x61\x6e\x67\x75\x70\x73\x2c\x20\x77\x69\x74" \ -"\x68\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x61\x20\x6e\x6f" \ -"\x6e\x2d\x74\x74\x79\x00\x5b\x48\x4f\x53\x54\x5d\x20\x5b\x53\x45" \ -"\x52\x56\x45\x52\x5d\x0a\x0a\x51\x75\x65\x72\x79\x20\x74\x68\x65" \ -"\x20\x6e\x61\x6d\x65\x73\x65\x72\x76\x65\x72\x20\x66\x6f\x72\x20" \ -"\x74\x68\x65\x20\x49\x50\x20\x61\x64\x64\x72\x65\x73\x73\x20\x6f" \ -"\x66\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x48\x4f\x53\x54" \ -"\x0a\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x6c\x79\x20\x75\x73\x69\x6e" \ -"\x67\x20\x61\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x44\x4e" \ -"\x53\x20\x73\x65\x72\x76\x65\x72\x00\x5b\x2d\x64\x6e\x71\x4e\x77" \ -"\x5d\x20\x5b\x2d\x53\x20\x50\x52\x4f\x47\x5d\x20\x5b\x2d\x70\x20" \ -"\x50\x45\x45\x52\x5d\x2e\x2e\x2e\x0a\x0a\x4e\x54\x50\x20\x63\x6c" \ -"\x69\x65\x6e\x74\x2f\x73\x65\x72\x76\x65\x72\x0a\x0a\x09\x2d\x64" \ -"\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x6e\x09\x44\x6f\x20" \ -"\x6e\x6f\x74\x20\x64\x61\x65\x6d\x6f\x6e\x69\x7a\x65\x0a\x09\x2d" \ -"\x71\x09\x51\x75\x69\x74\x20\x61\x66\x74\x65\x72\x20\x63\x6c\x6f" \ -"\x63\x6b\x20\x69\x73\x20\x73\x65\x74\x0a\x09\x2d\x4e\x09\x52\x75" \ -"\x6e\x20\x61\x74\x20\x68\x69\x67\x68\x20\x70\x72\x69\x6f\x72\x69" \ -"\x74\x79\x0a\x09\x2d\x77\x09\x44\x6f\x20\x6e\x6f\x74\x20\x73\x65" \ -"\x74\x20\x74\x69\x6d\x65\x20\x28\x6f\x6e\x6c\x79\x20\x71\x75\x65" \ -"\x72\x79\x20\x70\x65\x65\x72\x73\x29\x2c\x20\x69\x6d\x70\x6c\x69" \ -"\x65\x73\x20\x2d\x6e\x0a\x09\x2d\x53\x20\x50\x52\x4f\x47\x09\x52" \ -"\x75\x6e\x20\x50\x52\x4f\x47\x20\x61\x66\x74\x65\x72\x20\x73\x74" \ -"\x65\x70\x70\x69\x6e\x67\x20\x74\x69\x6d\x65\x2c\x20\x73\x74\x72" \ -"\x61\x74\x75\x6d\x20\x63\x68\x61\x6e\x67\x65\x2c\x20\x61\x6e\x64" \ -"\x20\x65\x76\x65\x72\x79\x20\x31\x31\x20\x6d\x69\x6e\x73\x0a\x09" \ -"\x2d\x70\x20\x50\x45\x45\x52\x09\x4f\x62\x74\x61\x69\x6e\x20\x74" \ -"\x69\x6d\x65\x20\x66\x72\x6f\x6d\x20\x50\x45\x45\x52\x20\x28\x6d" \ -"\x61\x79\x20\x62\x65\x20\x72\x65\x70\x65\x61\x74\x65\x64\x29\x00" \ -"\x5b\x2d\x61\x42\x62\x63\x44\x64\x65\x46\x66\x48\x68\x49\x69\x4c" \ -"\x6c\x4f\x6f\x76\x58\x78\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a" \ -"\x50\x72\x69\x6e\x74\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73" \ -"\x74\x64\x69\x6e\x29\x20\x75\x6e\x61\x6d\x62\x69\x67\x75\x6f\x75" \ -"\x73\x6c\x79\x2c\x20\x61\x73\x20\x6f\x63\x74\x61\x6c\x20\x62\x79" \ -"\x74\x65\x73\x20\x62\x79\x20\x64\x65\x66\x61\x75\x6c\x74\x00\x5b" \ -"\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x4f\x52\x49\x47\x46\x49" \ -"\x4c\x45\x20\x5b\x50\x41\x54\x43\x48\x46\x49\x4c\x45\x5d\x5d\x0a" \ -"\x0a\x09\x2d\x70\x2c\x2d\x2d\x73\x74\x72\x69\x70\x20\x4e\x09\x09" \ -"\x53\x74\x72\x69\x70\x20\x4e\x20\x6c\x65\x61\x64\x69\x6e\x67\x20" \ -"\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20" \ -"\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x69\x2c\x2d" \ -"\x2d\x69\x6e\x70\x75\x74\x20\x44\x49\x46\x46\x09\x09\x52\x65\x61" \ -"\x64\x20\x44\x49\x46\x46\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f" \ -"\x66\x20\x73\x74\x64\x69\x6e\x0a\x09\x2d\x52\x2c\x2d\x2d\x72\x65" \ -"\x76\x65\x72\x73\x65\x09\x09\x52\x65\x76\x65\x72\x73\x65\x20\x70" \ -"\x61\x74\x63\x68\x0a\x09\x2d\x4e\x2c\x2d\x2d\x66\x6f\x72\x77\x61" \ -"\x72\x64\x09\x09\x49\x67\x6e\x6f\x72\x65\x20\x61\x6c\x72\x65\x61" \ -"\x64\x79\x20\x61\x70\x70\x6c\x69\x65\x64\x20\x70\x61\x74\x63\x68" \ -"\x65\x73\x0a\x09\x2d\x45\x2c\x2d\x2d\x72\x65\x6d\x6f\x76\x65\x2d" \ -"\x65\x6d\x70\x74\x79\x2d\x66\x69\x6c\x65\x73\x09\x52\x65\x6d\x6f" \ -"\x76\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x66\x69\x6c\x65\x73\x20" \ -"\x69\x66\x20\x74\x68\x65\x79\x20\x62\x65\x63\x6f\x6d\x65\x20\x65" \ -"\x6d\x70\x74\x79\x00\x5b\x2d\x66\x6c\x6e\x6f\x76\x78\x5d\x20\x5b" \ -"\x2d\x73\x20\x53\x49\x44\x7c\x2d\x50\x20\x50\x50\x49\x44\x7c\x50" \ -"\x41\x54\x54\x45\x52\x4e\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79" \ -"\x20\x70\x72\x6f\x63\x65\x73\x73\x28\x65\x73\x29\x20\x73\x65\x6c" \ -"\x65\x63\x74\x65\x64\x20\x62\x79\x20\x72\x65\x67\x65\x78\x20\x50" \ -"\x41\x54\x54\x45\x52\x4e\x0a\x0a\x09\x2d\x6c\x09\x53\x68\x6f\x77" \ -"\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6e\x61\x6d\x65\x20\x74\x6f" \ -"\x6f\x0a\x09\x2d\x66\x09\x4d\x61\x74\x63\x68\x20\x61\x67\x61\x69" \ -"\x6e\x73\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x63\x6f\x6d\x6d\x61" \ -"\x6e\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x6e\x09\x53\x68\x6f\x77" \ -"\x20\x74\x68\x65\x20\x6e\x65\x77\x65\x73\x74\x20\x70\x72\x6f\x63" \ -"\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6f\x09\x53\x68\x6f" \ -"\x77\x20\x74\x68\x65\x20\x6f\x6c\x64\x65\x73\x74\x20\x70\x72\x6f" \ -"\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x76\x09\x4e\x65" \ -"\x67\x61\x74\x65\x20\x74\x68\x65\x20\x6d\x61\x74\x63\x68\x0a\x09" \ -"\x2d\x78\x09\x4d\x61\x74\x63\x68\x20\x77\x68\x6f\x6c\x65\x20\x6e" \ -"\x61\x6d\x65\x20\x28\x6e\x6f\x74\x20\x73\x75\x62\x73\x74\x72\x69" \ -"\x6e\x67\x29\x0a\x09\x2d\x73\x09\x4d\x61\x74\x63\x68\x20\x73\x65" \ -"\x73\x73\x69\x6f\x6e\x20\x49\x44\x20\x28\x30\x20\x66\x6f\x72\x20" \ -"\x63\x75\x72\x72\x65\x6e\x74\x29\x0a\x09\x2d\x50\x09\x4d\x61\x74" \ -"\x63\x68\x20\x70\x61\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73" \ -"\x73\x20\x49\x44\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b" \ -"\x4e\x41\x4d\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20\x50" \ -"\x49\x44\x73\x20\x6f\x66\x20\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65" \ -"\x73\x73\x65\x73\x20\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20" \ -"\x74\x68\x61\x74\x20\x6d\x61\x74\x63\x68\x20\x4e\x41\x4d\x45\x73" \ -"\x0a\x0a\x09\x2d\x73\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20" \ -"\x6f\x6e\x65\x20\x50\x49\x44\x0a\x09\x2d\x6f\x20\x50\x49\x44\x09" \ -"\x4f\x6d\x69\x74\x20\x67\x69\x76\x65\x6e\x20\x70\x69\x64\x0a\x09" \ -"\x09\x55\x73\x65\x20\x25\x50\x50\x49\x44\x20\x74\x6f\x20\x6f\x6d" \ -"\x69\x74\x20\x70\x69\x64\x20\x6f\x66\x20\x70\x69\x64\x6f\x66\x27" \ -"\x73\x20\x70\x61\x72\x65\x6e\x74\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \ -"\x53\x5d\x20\x48\x4f\x53\x54\x0a\x0a\x53\x65\x6e\x64\x20\x49\x43" \ -"\x4d\x50\x20\x45\x43\x48\x4f\x5f\x52\x45\x51\x55\x45\x53\x54\x20" \ -"\x70\x61\x63\x6b\x65\x74\x73\x20\x74\x6f\x20\x6e\x65\x74\x77\x6f" \ -"\x72\x6b\x20\x68\x6f\x73\x74\x73\x0a\x0a\x09\x2d\x34\x2c\x2d\x36" \ -"\x09\x09\x46\x6f\x72\x63\x65\x20\x49\x50\x20\x6f\x72\x20\x49\x50" \ -"\x76\x36\x20\x6e\x61\x6d\x65\x20\x72\x65\x73\x6f\x6c\x75\x74\x69" \ -"\x6f\x6e\x0a\x09\x2d\x63\x20\x43\x4e\x54\x09\x09\x53\x65\x6e\x64" \ -"\x20\x6f\x6e\x6c\x79\x20\x43\x4e\x54\x20\x70\x69\x6e\x67\x73\x0a" \ -"\x09\x2d\x73\x20\x53\x49\x5a\x45\x09\x09\x53\x65\x6e\x64\x20\x53" \ -"\x49\x5a\x45\x20\x64\x61\x74\x61\x20\x62\x79\x74\x65\x73\x20\x69" \ -"\x6e\x20\x70\x61\x63\x6b\x65\x74\x73\x20\x28\x64\x65\x66\x61\x75" \ -"\x6c\x74\x3a\x35\x36\x29\x0a\x09\x2d\x74\x20\x54\x54\x4c\x09\x09" \ -"\x53\x65\x74\x20\x54\x54\x4c\x0a\x09\x2d\x49\x20\x49\x46\x41\x43" \ -"\x45\x2f\x49\x50\x09\x55\x73\x65\x20\x69\x6e\x74\x65\x72\x66\x61" \ -"\x63\x65\x20\x6f\x72\x20\x49\x50\x20\x61\x64\x64\x72\x65\x73\x73" \ -"\x20\x61\x73\x20\x73\x6f\x75\x72\x63\x65\x0a\x09\x2d\x57\x20\x53" \ -"\x45\x43\x09\x09\x53\x65\x63\x6f\x6e\x64\x73\x20\x74\x6f\x20\x77" \ -"\x61\x69\x74\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x66\x69\x72\x73" \ -"\x74\x20\x72\x65\x73\x70\x6f\x6e\x73\x65\x20\x28\x64\x65\x66\x61" \ -"\x75\x6c\x74\x3a\x31\x30\x29\x0a\x09\x09\x09\x28\x61\x66\x74\x65" \ -"\x72\x20\x61\x6c\x6c\x20\x2d\x63\x20\x43\x4e\x54\x20\x70\x61\x63" \ -"\x6b\x65\x74\x73\x20\x61\x72\x65\x20\x73\x65\x6e\x74\x29\x0a\x09" \ -"\x2d\x77\x20\x53\x45\x43\x09\x09\x53\x65\x63\x6f\x6e\x64\x73\x20" \ -"\x75\x6e\x74\x69\x6c\x20\x70\x69\x6e\x67\x20\x65\x78\x69\x74\x73" \ -"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x3a\x69\x6e\x66\x69\x6e\x69" \ -"\x74\x65\x29\x0a\x09\x09\x09\x28\x63\x61\x6e\x20\x65\x78\x69\x74" \ -"\x20\x65\x61\x72\x6c\x69\x65\x72\x20\x77\x69\x74\x68\x20\x2d\x63" \ -"\x20\x43\x4e\x54\x29\x0a\x09\x2d\x71\x09\x09\x51\x75\x69\x65\x74" \ -"\x2c\x20\x6f\x6e\x6c\x79\x20\x64\x69\x73\x70\x6c\x61\x79\x73\x20" \ -"\x6f\x75\x74\x70\x75\x74\x20\x61\x74\x20\x73\x74\x61\x72\x74\x0a" \ -"\x09\x09\x09\x61\x6e\x64\x20\x77\x68\x65\x6e\x20\x66\x69\x6e\x69" \ -"\x73\x68\x65\x64\x00\x08\x00\x5b\x2d\x6c\x7c\x2d\x53\x49\x47\x4e" \ -"\x41\x4c\x5d\x20\x5b\x2d\x66\x6e\x6f\x76\x78\x5d\x20\x5b\x2d\x73" \ -"\x20\x53\x49\x44\x7c\x2d\x50\x20\x50\x50\x49\x44\x7c\x50\x41\x54" \ -"\x54\x45\x52\x4e\x5d\x0a\x0a\x53\x65\x6e\x64\x20\x61\x20\x73\x69" \ -"\x67\x6e\x61\x6c\x20\x74\x6f\x20\x70\x72\x6f\x63\x65\x73\x73\x28" \ -"\x65\x73\x29\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x62\x79\x20" \ -"\x72\x65\x67\x65\x78\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x0a\x09" \ -"\x2d\x6c\x09\x4c\x69\x73\x74\x20\x61\x6c\x6c\x20\x73\x69\x67\x6e" \ -"\x61\x6c\x73\x0a\x09\x2d\x66\x09\x4d\x61\x74\x63\x68\x20\x61\x67" \ -"\x61\x69\x6e\x73\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x63\x6f\x6d" \ -"\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x6e\x09\x53\x69" \ -"\x67\x6e\x61\x6c\x20\x74\x68\x65\x20\x6e\x65\x77\x65\x73\x74\x20" \ -"\x70\x72\x6f\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6f" \ -"\x09\x53\x69\x67\x6e\x61\x6c\x20\x74\x68\x65\x20\x6f\x6c\x64\x65" \ -"\x73\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a" \ -"\x09\x2d\x76\x09\x4e\x65\x67\x61\x74\x65\x20\x74\x68\x65\x20\x6d" \ -"\x61\x74\x63\x68\x0a\x09\x2d\x78\x09\x4d\x61\x74\x63\x68\x20\x77" \ -"\x68\x6f\x6c\x65\x20\x6e\x61\x6d\x65\x20\x28\x6e\x6f\x74\x20\x73" \ -"\x75\x62\x73\x74\x72\x69\x6e\x67\x29\x0a\x09\x2d\x73\x09\x4d\x61" \ -"\x74\x63\x68\x20\x73\x65\x73\x73\x69\x6f\x6e\x20\x49\x44\x20\x28" \ -"\x30\x20\x66\x6f\x72\x20\x63\x75\x72\x72\x65\x6e\x74\x29\x0a\x09" \ -"\x2d\x50\x09\x4d\x61\x74\x63\x68\x20\x70\x61\x72\x65\x6e\x74\x20" \ -"\x70\x72\x6f\x63\x65\x73\x73\x20\x49\x44\x00\x5b\x2d\x78\x71\x5d" \ -"\x20\x50\x49\x44\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x64\x65" \ -"\x74\x61\x69\x6c\x65\x64\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x6d" \ -"\x65\x6d\x6f\x72\x79\x20\x75\x73\x61\x67\x65\x0a\x0a\x09\x2d\x78" \ -"\x09\x53\x68\x6f\x77\x20\x64\x65\x74\x61\x69\x6c\x73\x0a\x09\x2d" \ -"\x71\x09\x51\x75\x69\x65\x74\x00\x5b\x2d\x64\x20\x44\x45\x4c\x41" \ -"\x59\x5d\x20\x5b\x2d\x6e\x5d\x20\x5b\x2d\x66\x5d\x0a\x0a\x48\x61" \ -"\x6c\x74\x20\x61\x6e\x64\x20\x73\x68\x75\x74\x20\x6f\x66\x66\x20" \ -"\x70\x6f\x77\x65\x72\x0a\x0a\x09\x2d\x64\x20\x53\x45\x43\x09\x44" \ -"\x65\x6c\x61\x79\x20\x69\x6e\x74\x65\x72\x76\x61\x6c\x0a\x09\x2d" \ -"\x6e\x09\x44\x6f\x20\x6e\x6f\x74\x20\x73\x79\x6e\x63\x0a\x09\x2d" \ -"\x66\x09\x46\x6f\x72\x63\x65\x20\x28\x64\x6f\x6e\x27\x74\x20\x67" \ -"\x6f\x20\x74\x68\x72\x6f\x75\x67\x68\x20\x69\x6e\x69\x74\x29\x00" \ -"\x5b\x56\x41\x52\x49\x41\x42\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50" \ -"\x72\x69\x6e\x74\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74" \ -"\x20\x56\x41\x52\x49\x41\x42\x4c\x45\x73\x2e\x0a\x49\x66\x20\x6e" \ -"\x6f\x20\x56\x41\x52\x49\x41\x42\x4c\x45\x20\x73\x70\x65\x63\x69" \ -"\x66\x69\x65\x64\x2c\x20\x70\x72\x69\x6e\x74\x20\x61\x6c\x6c\x2e" \ -"\x00\x46\x4f\x52\x4d\x41\x54\x20\x5b\x41\x52\x47\x5d\x2e\x2e\x2e" \ -"\x0a\x0a\x46\x6f\x72\x6d\x61\x74\x20\x61\x6e\x64\x20\x70\x72\x69" \ -"\x6e\x74\x20\x41\x52\x47\x28\x73\x29\x20\x61\x63\x63\x6f\x72\x64" \ -"\x69\x6e\x67\x20\x74\x6f\x20\x46\x4f\x52\x4d\x41\x54\x20\x28\x61" \ -"\x2d\x6c\x61\x20\x43\x20\x70\x72\x69\x6e\x74\x66\x29\x00\x0a\x0a" \ -"\x53\x68\x6f\x77\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x70\x72\x6f" \ -"\x63\x65\x73\x73\x65\x73\x0a\x0a\x09\x77\x09\x57\x69\x64\x65\x20" \ -"\x6f\x75\x74\x70\x75\x74\x0a\x09\x6c\x09\x4c\x6f\x6e\x67\x20\x6f" \ -"\x75\x74\x70\x75\x74\x0a\x09\x54\x09\x53\x68\x6f\x77\x20\x74\x68" \ -"\x72\x65\x61\x64\x73\x00\x5b\x2d\x70\x5d\x20\x5b\x50\x49\x44\x7c" \ -"\x55\x53\x45\x52\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x70" \ -"\x72\x6f\x63\x65\x73\x73\x20\x74\x72\x65\x65\x2c\x20\x6f\x70\x74" \ -"\x69\x6f\x6e\x61\x6c\x6c\x79\x20\x73\x74\x61\x72\x74\x20\x66\x72" \ -"\x6f\x6d\x20\x55\x53\x45\x52\x20\x6f\x72\x20\x50\x49\x44\x0a\x0a" \ -"\x09\x2d\x70\x09\x53\x68\x6f\x77\x20\x70\x69\x64\x73\x00\x0a\x0a" \ -"\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x66\x75\x6c\x6c\x20\x66" \ -"\x69\x6c\x65\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x63" \ -"\x75\x72\x72\x65\x6e\x74\x20\x77\x6f\x72\x6b\x69\x6e\x67\x20\x64" \ -"\x69\x72\x65\x63\x74\x6f\x72\x79\x00\x50\x49\x44\x2e\x2e\x2e\x0a" \ -"\x0a\x53\x68\x6f\x77\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x64\x69" \ -"\x72\x65\x63\x74\x6f\x72\x79\x20\x66\x6f\x72\x20\x50\x49\x44\x73" \ -"\x0a\x00\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x64\x65" \ -"\x76\x69\x63\x65\x20\x6e\x6f\x64\x65\x20\x61\x73\x73\x6f\x63\x69" \ -"\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x66\x69" \ -"\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6d\x6f\x75\x6e\x74\x65\x64" \ -"\x20\x61\x74\x20\x27\x2f\x27\x00\x5b\x2d\x66\x6e\x76\x5d\x20\x46" \ -"\x49\x4c\x45\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x74\x68\x65" \ -"\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x61\x20\x73\x79\x6d\x6c" \ -"\x69\x6e\x6b\x0a\x0a\x09\x2d\x66\x09\x43\x61\x6e\x6f\x6e\x69\x63" \ -"\x61\x6c\x69\x7a\x65\x20\x62\x79\x20\x66\x6f\x6c\x6c\x6f\x77\x69" \ -"\x6e\x67\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a" \ -"\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x61\x64\x64\x20\x6e\x65" \ -"\x77\x6c\x69\x6e\x65\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73" \ -"\x65\x00\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x52\x65\x74\x75\x72" \ -"\x6e\x20\x74\x68\x65\x20\x61\x62\x73\x6f\x6c\x75\x74\x65\x20\x70" \ -"\x61\x74\x68\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x67\x69\x76\x65" \ -"\x6e\x20\x46\x49\x4c\x45\x00\x5b\x2d\x64\x20\x44\x45\x4c\x41\x59" \ -"\x5d\x20\x5b\x2d\x6e\x5d\x20\x5b\x2d\x66\x5d\x0a\x0a\x52\x65\x62" \ -"\x6f\x6f\x74\x20\x74\x68\x65\x20\x73\x79\x73\x74\x65\x6d\x0a\x0a" \ -"\x09\x2d\x64\x20\x53\x45\x43\x09\x44\x65\x6c\x61\x79\x20\x69\x6e" \ -"\x74\x65\x72\x76\x61\x6c\x0a\x09\x2d\x6e\x09\x44\x6f\x20\x6e\x6f" \ -"\x74\x20\x73\x79\x6e\x63\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65" \ -"\x20\x28\x64\x6f\x6e\x27\x74\x20\x67\x6f\x20\x74\x68\x72\x6f\x75" \ -"\x67\x68\x20\x69\x6e\x69\x74\x29\x00\x7b\x7b\x2d\x6e\x20\x49\x4e" \ -"\x43\x52\x45\x4d\x45\x4e\x54\x7d\x20\x7c\x20\x50\x52\x49\x4f\x52" \ -"\x49\x54\x59\x7d\x20\x5b\x5b\x2d\x70\x20\x7c\x20\x2d\x67\x20\x7c" \ -"\x20\x2d\x75\x5d\x20\x49\x44\x2e\x2e\x2e\x5d\x0a\x0a\x43\x68\x61" \ -"\x6e\x67\x65\x20\x73\x63\x68\x65\x64\x75\x6c\x69\x6e\x67\x20\x70" \ -"\x72\x69\x6f\x72\x69\x74\x79\x20\x66\x6f\x72\x20\x61\x20\x72\x75" \ -"\x6e\x6e\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x73\x73\x0a\x0a\x09" \ -"\x2d\x6e\x09\x41\x64\x6a\x75\x73\x74\x20\x63\x75\x72\x72\x65\x6e" \ -"\x74\x20\x6e\x69\x63\x65\x20\x76\x61\x6c\x75\x65\x20\x28\x73\x6d" \ -"\x61\x6c\x6c\x65\x72\x20\x69\x73\x20\x66\x61\x73\x74\x65\x72\x29" \ -"\x0a\x09\x2d\x70\x09\x50\x72\x6f\x63\x65\x73\x73\x20\x69\x64\x28" \ -"\x73\x29\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x67" \ -"\x09\x50\x72\x6f\x63\x65\x73\x73\x20\x67\x72\x6f\x75\x70\x20\x69" \ -"\x64\x28\x73\x29\x0a\x09\x2d\x75\x09\x50\x72\x6f\x63\x65\x73\x73" \ -"\x20\x75\x73\x65\x72\x20\x6e\x61\x6d\x65\x28\x73\x29\x20\x61\x6e" \ -"\x64\x2f\x6f\x72\x20\x69\x64\x28\x73\x29\x00\x0a\x0a\x52\x65\x73" \ -"\x65\x74\x20\x74\x68\x65\x20\x73\x63\x72\x65\x65\x6e\x00\x0a\x0a" \ -"\x52\x65\x73\x69\x7a\x65\x20\x74\x68\x65\x20\x73\x63\x72\x65\x65" \ -"\x6e\x00\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x52\x65\x76" \ -"\x65\x72\x73\x65\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x46\x49" \ -"\x4c\x45\x00\x5b\x2d\x69\x72\x66\x5d\x20\x46\x49\x4c\x45\x2e\x2e" \ -"\x2e\x0a\x0a\x52\x65\x6d\x6f\x76\x65\x20\x28\x75\x6e\x6c\x69\x6e" \ -"\x6b\x29\x20\x46\x49\x4c\x45\x73\x0a\x0a\x09\x2d\x69\x09\x41\x6c" \ -"\x77\x61\x79\x73\x20\x70\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f" \ -"\x72\x65\x20\x72\x65\x6d\x6f\x76\x69\x6e\x67\x0a\x09\x2d\x66\x09" \ -"\x4e\x65\x76\x65\x72\x20\x70\x72\x6f\x6d\x70\x74\x0a\x09\x2d\x52" \ -"\x2c\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x00\x5b\x4f\x50\x54" \ -"\x49\x4f\x4e\x53\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x2e" \ -"\x2e\x2e\x0a\x0a\x52\x65\x6d\x6f\x76\x65\x20\x44\x49\x52\x45\x43" \ -"\x54\x4f\x52\x59\x20\x69\x66\x20\x69\x74\x20\x69\x73\x20\x65\x6d" \ -"\x70\x74\x79\x0a\x0a\x09\x2d\x70\x7c\x2d\x2d\x70\x61\x72\x65\x6e" \ -"\x74\x73\x09\x49\x6e\x63\x6c\x75\x64\x65\x20\x70\x61\x72\x65\x6e" \ -"\x74\x73\x0a\x09\x2d\x2d\x69\x67\x6e\x6f\x72\x65\x2d\x66\x61\x69" \ -"\x6c\x2d\x6f\x6e\x2d\x6e\x6f\x6e\x2d\x65\x6d\x70\x74\x79\x00\x5b" \ -"\x2d\x77\x66\x61\x5d\x20\x5b\x4d\x4f\x44\x55\x4c\x45\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x55\x6e\x6c\x6f\x61\x64\x20\x6b\x65\x72\x6e\x65\x6c" \ -"\x20\x6d\x6f\x64\x75\x6c\x65\x73\x0a\x0a\x09\x2d\x77\x09\x57\x61" \ -"\x69\x74\x20\x75\x6e\x74\x69\x6c\x20\x74\x68\x65\x20\x6d\x6f\x64" \ -"\x75\x6c\x65\x20\x69\x73\x20\x6e\x6f\x20\x6c\x6f\x6e\x67\x65\x72" \ -"\x20\x75\x73\x65\x64\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x20" \ -"\x75\x6e\x6c\x6f\x61\x64\x0a\x09\x2d\x61\x09\x52\x65\x6d\x6f\x76" \ -"\x65\x20\x61\x6c\x6c\x20\x75\x6e\x75\x73\x65\x64\x20\x6d\x6f\x64" \ -"\x75\x6c\x65\x73\x20\x28\x72\x65\x63\x75\x72\x73\x69\x76\x65\x6c" \ -"\x79\x29\x00\x5b\x7b\x61\x64\x64\x7c\x64\x65\x6c\x7c\x64\x65\x6c" \ -"\x65\x74\x65\x7d\x5d\x0a\x0a\x45\x64\x69\x74\x20\x6b\x65\x72\x6e" \ -"\x65\x6c\x20\x72\x6f\x75\x74\x69\x6e\x67\x20\x74\x61\x62\x6c\x65" \ -"\x73\x0a\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x72\x65\x73" \ -"\x6f\x6c\x76\x65\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x65\x09\x44" \ -"\x69\x73\x70\x6c\x61\x79\x20\x6f\x74\x68\x65\x72\x2f\x6d\x6f\x72" \ -"\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x09\x2d" \ -"\x41\x20\x69\x6e\x65\x74\x7b\x36\x7d\x09\x53\x65\x6c\x65\x63\x74" \ -"\x20\x61\x64\x64\x72\x65\x73\x73\x20\x66\x61\x6d\x69\x6c\x79\x00" \ -"\x5b\x2d\x74\x6c\x5d\x20\x5b\x2d\x61\x20\x41\x52\x47\x5d\x2e\x2e" \ -"\x2e\x20\x5b\x2d\x75\x20\x4d\x41\x53\x4b\x5d\x20\x44\x49\x52\x45" \ -"\x43\x54\x4f\x52\x59\x0a\x0a\x52\x75\x6e\x20\x61\x20\x62\x75\x6e" \ -"\x63\x68\x20\x6f\x66\x20\x73\x63\x72\x69\x70\x74\x73\x20\x69\x6e" \ -"\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a\x0a\x09\x2d\x74\x09" \ -"\x44\x72\x79\x20\x72\x75\x6e\x0a\x09\x2d\x6c\x09\x50\x72\x69\x6e" \ -"\x74\x20\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x6d\x61\x74\x63\x68" \ -"\x69\x6e\x67\x20\x66\x69\x6c\x65\x73\x20\x65\x76\x65\x6e\x20\x69" \ -"\x66\x20\x74\x68\x65\x79\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x65" \ -"\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x0a\x09\x2d\x61\x20\x41\x52" \ -"\x47\x09\x50\x61\x73\x73\x20\x41\x52\x47\x20\x61\x73\x20\x61\x72" \ -"\x67\x75\x6d\x65\x6e\x74\x20\x74\x6f\x20\x70\x72\x6f\x67\x72\x61" \ -"\x6d\x73\x0a\x09\x2d\x75\x20\x4d\x41\x53\x4b\x09\x53\x65\x74\x20" \ -"\x75\x6d\x61\x73\x6b\x20\x74\x6f\x20\x4d\x41\x53\x4b\x20\x62\x65" \ -"\x66\x6f\x72\x65\x20\x72\x75\x6e\x6e\x69\x6e\x67\x20\x70\x72\x6f" \ -"\x67\x72\x61\x6d\x73\x00\x46\x49\x4c\x45\x0a\x0a\x52\x65\x63\x65" \ -"\x69\x76\x65\x20\x61\x20\x66\x69\x6c\x65\x20\x75\x73\x69\x6e\x67" \ -"\x20\x74\x68\x65\x20\x78\x6d\x6f\x64\x65\x6d\x20\x70\x72\x6f\x74" \ -"\x6f\x63\x6f\x6c\x00\x5b\x2d\x69\x6e\x72\x5d\x20\x5b\x2d\x66\x20" \ -"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x20\x5b\x2d\x65\x20\x43\x4d\x44" \ -"\x5d\x2e\x2e\x2e\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x6f" \ -"\x72\x3a\x20\x73\x65\x64\x20\x5b\x2d\x69\x6e\x72\x5d\x20\x43\x4d" \ -"\x44\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x65" \ -"\x20\x43\x4d\x44\x09\x41\x64\x64\x20\x43\x4d\x44\x20\x74\x6f\x20" \ -"\x73\x65\x64\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x73\x20\x74\x6f\x20" \ -"\x62\x65\x20\x65\x78\x65\x63\x75\x74\x65\x64\x0a\x09\x2d\x66\x20" \ -"\x46\x49\x4c\x45\x09\x41\x64\x64\x20\x46\x49\x4c\x45\x20\x63\x6f" \ -"\x6e\x74\x65\x6e\x74\x73\x20\x74\x6f\x20\x73\x65\x64\x20\x63\x6f" \ -"\x6d\x6d\x61\x6e\x64\x73\x20\x74\x6f\x20\x62\x65\x20\x65\x78\x65" \ -"\x63\x75\x74\x65\x64\x0a\x09\x2d\x69\x5b\x53\x46\x58\x5d\x09\x45" \ -"\x64\x69\x74\x20\x66\x69\x6c\x65\x73\x20\x69\x6e\x2d\x70\x6c\x61" \ -"\x63\x65\x20\x28\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x73\x65" \ -"\x6e\x64\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x29\x0a\x09" \ -"\x09\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x6c\x79\x20\x62\x61\x63\x6b" \ -"\x20\x66\x69\x6c\x65\x73\x20\x75\x70\x2c\x20\x61\x70\x70\x65\x6e" \ -"\x64\x69\x6e\x67\x20\x53\x46\x58\x0a\x09\x2d\x6e\x09\x53\x75\x70" \ -"\x70\x72\x65\x73\x73\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20" \ -"\x70\x72\x69\x6e\x74\x69\x6e\x67\x20\x6f\x66\x20\x70\x61\x74\x74" \ -"\x65\x72\x6e\x20\x73\x70\x61\x63\x65\x0a\x09\x2d\x72\x09\x55\x73" \ -"\x65\x20\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x72\x65\x67\x65\x78" \ -"\x20\x73\x79\x6e\x74\x61\x78\x0a\x0a\x49\x66\x20\x6e\x6f\x20\x2d" \ -"\x65\x20\x6f\x72\x20\x2d\x66\x2c\x20\x74\x68\x65\x20\x66\x69\x72" \ -"\x73\x74\x20\x6e\x6f\x6e\x2d\x6f\x70\x74\x69\x6f\x6e\x20\x61\x72" \ -"\x67\x75\x6d\x65\x6e\x74\x20\x69\x73\x20\x74\x68\x65\x20\x73\x65" \ -"\x64\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x73\x74\x72\x69\x6e\x67" \ -"\x2e\x0a\x52\x65\x6d\x61\x69\x6e\x69\x6e\x67\x20\x61\x72\x67\x75" \ -"\x6d\x65\x6e\x74\x73\x20\x61\x72\x65\x20\x69\x6e\x70\x75\x74\x20" \ -"\x66\x69\x6c\x65\x73\x20\x28\x73\x74\x64\x69\x6e\x20\x69\x66\x20" \ -"\x6e\x6f\x6e\x65\x29\x2e\x00\x5b\x2d\x77\x5d\x20\x5b\x2d\x73\x20" \ -"\x53\x45\x50\x5d\x20\x5b\x46\x49\x52\x53\x54\x20\x5b\x49\x4e\x43" \ -"\x5d\x5d\x20\x4c\x41\x53\x54\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6e" \ -"\x75\x6d\x62\x65\x72\x73\x20\x66\x72\x6f\x6d\x20\x46\x49\x52\x53" \ -"\x54\x20\x74\x6f\x20\x4c\x41\x53\x54\x2c\x20\x69\x6e\x20\x73\x74" \ -"\x65\x70\x73\x20\x6f\x66\x20\x49\x4e\x43\x2e\x0a\x46\x49\x52\x53" \ -"\x54\x2c\x20\x49\x4e\x43\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x74" \ -"\x6f\x20\x31\x2e\x0a\x0a\x09\x2d\x77\x09\x50\x61\x64\x20\x74\x6f" \ -"\x20\x6c\x61\x73\x74\x20\x77\x69\x74\x68\x20\x6c\x65\x61\x64\x69" \ -"\x6e\x67\x20\x7a\x65\x72\x6f\x73\x0a\x09\x2d\x73\x20\x53\x45\x50" \ -"\x09\x53\x74\x72\x69\x6e\x67\x20\x73\x65\x70\x61\x72\x61\x74\x6f" \ -"\x72\x00\x5b\x2d\x72\x5d\x20\x5b\x44\x45\x56\x49\x43\x45\x5d\x0a" \ -"\x0a\x52\x65\x64\x69\x72\x65\x63\x74\x20\x73\x79\x73\x74\x65\x6d" \ -"\x20\x63\x6f\x6e\x73\x6f\x6c\x65\x20\x6f\x75\x74\x70\x75\x74\x20" \ -"\x74\x6f\x20\x44\x45\x56\x49\x43\x45\x20\x28\x64\x65\x66\x61\x75" \ -"\x6c\x74\x3a\x20\x2f\x64\x65\x76\x2f\x74\x74\x79\x29\x0a\x0a\x09" \ -"\x2d\x72\x09\x52\x65\x73\x65\x74\x20\x6f\x75\x74\x70\x75\x74\x20" \ -"\x74\x6f\x20\x2f\x64\x65\x76\x2f\x63\x6f\x6e\x73\x6f\x6c\x65\x00" \ -"\x5b\x2d\x67\x61\x62\x47\x76\x7a\x56\x5d\x20\x44\x45\x56\x49\x43" \ -"\x45\x20\x5b\x50\x41\x52\x41\x4d\x45\x54\x45\x52\x20\x5b\x41\x52" \ -"\x47\x5d\x5d\x2e\x2e\x2e\x0a\x0a\x52\x65\x71\x75\x65\x73\x74\x20" \ -"\x6f\x72\x20\x73\x65\x74\x20\x4c\x69\x6e\x75\x78\x20\x73\x65\x72" \ -"\x69\x61\x6c\x20\x70\x6f\x72\x74\x20\x69\x6e\x66\x6f\x72\x6d\x61" \ -"\x74\x69\x6f\x6e\x0a\x0a\x09\x2d\x67\x09\x49\x6e\x74\x65\x72\x70" \ -"\x72\x65\x74\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x20\x61" \ -"\x73\x20\x6c\x69\x73\x74\x20\x6f\x66\x20\x64\x65\x76\x69\x63\x65" \ -"\x73\x20\x66\x6f\x72\x20\x72\x65\x70\x6f\x72\x74\x69\x6e\x67\x0a" \ -"\x09\x2d\x61\x09\x50\x72\x69\x6e\x74\x20\x61\x6c\x6c\x20\x61\x76" \ -"\x61\x69\x6c\x61\x62\x6c\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74" \ -"\x69\x6f\x6e\x0a\x09\x2d\x62\x09\x50\x72\x69\x6e\x74\x20\x73\x75" \ -"\x6d\x6d\x61\x72\x79\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f" \ -"\x6e\x0a\x09\x2d\x47\x09\x50\x72\x69\x6e\x74\x20\x69\x6e\x20\x66" \ -"\x6f\x72\x6d\x20\x77\x68\x69\x63\x68\x20\x63\x61\x6e\x20\x62\x65" \ -"\x20\x66\x65\x64\x20\x62\x61\x63\x6b\x0a\x09\x09\x74\x6f\x20\x73" \ -"\x65\x74\x73\x65\x72\x69\x61\x6c\x20\x61\x73\x20\x63\x6f\x6d\x6d" \ -"\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x70\x61\x72\x61\x6d\x65\x74" \ -"\x65\x72\x73\x0a\x09\x2d\x7a\x09\x5a\x65\x72\x6f\x20\x6f\x75\x74" \ -"\x20\x73\x65\x72\x69\x61\x6c\x20\x66\x6c\x61\x67\x73\x20\x62\x65" \ -"\x66\x6f\x72\x65\x20\x73\x65\x74\x74\x69\x6e\x67\x0a\x09\x2d\x76" \ -"\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x0a\x50\x61\x72\x61\x6d\x65" \ -"\x74\x65\x72\x73\x3a\x20\x28\x2a\x20\x3d\x20\x74\x61\x6b\x65\x73" \ -"\x20\x61\x6e\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x2c\x20\x5e\x20" \ -"\x3d\x20\x63\x61\x6e\x20\x62\x65\x20\x74\x75\x72\x6e\x65\x64\x20" \ -"\x6f\x66\x66\x20\x62\x79\x20\x70\x72\x65\x63\x65\x64\x69\x6e\x67" \ -"\x20\x5e\x29\x0a\x09\x2a\x70\x6f\x72\x74\x2c\x20\x2a\x69\x72\x71" \ -"\x2c\x20\x2a\x64\x69\x76\x69\x73\x6f\x72\x2c\x20\x2a\x75\x61\x72" \ -"\x74\x2c\x20\x2a\x62\x61\x75\x6e\x64\x5f\x62\x61\x73\x65\x2c\x20" \ -"\x2a\x63\x6c\x6f\x73\x65\x5f\x64\x65\x6c\x61\x79\x2c\x20\x2a\x63" \ -"\x6c\x6f\x73\x69\x6e\x67\x5f\x77\x61\x69\x74\x2c\x0a\x09\x5e\x66" \ -"\x6f\x75\x72\x70\x6f\x72\x74\x2c\x20\x5e\x61\x75\x74\x6f\x5f\x69" \ -"\x72\x71\x2c\x20\x5e\x73\x6b\x69\x70\x5f\x74\x65\x73\x74\x2c\x20" \ -"\x5e\x73\x61\x6b\x2c\x20\x5e\x73\x65\x73\x73\x69\x6f\x6e\x5f\x6c" \ -"\x6f\x63\x6b\x6f\x75\x74\x2c\x20\x5e\x70\x67\x72\x70\x5f\x6c\x6f" \ -"\x63\x6b\x6f\x75\x74\x2c\x0a\x09\x5e\x63\x61\x6c\x6c\x6f\x75\x74" \ -"\x5f\x6e\x6f\x68\x75\x70\x2c\x20\x5e\x73\x70\x6c\x69\x74\x5f\x74" \ -"\x65\x72\x6d\x69\x6f\x73\x2c\x20\x5e\x68\x75\x70\x5f\x6e\x6f\x74" \ -"\x69\x66\x79\x2c\x20\x5e\x6c\x6f\x77\x5f\x6c\x61\x74\x65\x6e\x63" \ -"\x79\x2c\x20\x61\x75\x74\x6f\x63\x6f\x6e\x66\x69\x67\x2c\x0a\x09" \ -"\x73\x70\x64\x5f\x6e\x6f\x72\x6d\x61\x6c\x2c\x20\x73\x70\x64\x5f" \ -"\x68\x69\x2c\x20\x73\x70\x64\x5f\x76\x68\x69\x2c\x20\x73\x70\x64" \ -"\x5f\x73\x68\x69\x2c\x20\x73\x70\x64\x5f\x77\x61\x72\x70\x2c\x20" \ -"\x73\x70\x64\x5f\x63\x75\x73\x74\x0a\x0a\x55\x41\x52\x54\x20\x74" \ -"\x79\x70\x65\x73\x3a\x0a\x09\x75\x6e\x6b\x6e\x6f\x77\x6e\x2c\x20" \ -"\x38\x32\x35\x30\x2c\x20\x31\x36\x34\x35\x30\x2c\x20\x31\x36\x35" \ -"\x35\x30\x2c\x20\x31\x36\x35\x35\x30\x41\x2c\x20\x43\x69\x72\x72" \ -"\x75\x73\x2c\x20\x31\x36\x36\x35\x30\x2c\x20\x31\x36\x36\x35\x30" \ -"\x56\x32\x2c\x20\x31\x36\x37\x35\x30\x2c\x0a\x09\x31\x36\x39\x35" \ -"\x30\x2c\x20\x31\x36\x39\x35\x34\x2c\x20\x31\x36\x36\x35\x34\x2c" \ -"\x20\x31\x36\x38\x35\x30\x2c\x20\x52\x53\x41\x2c\x20\x4e\x53\x31" \ -"\x36\x35\x35\x30\x41\x2c\x20\x58\x53\x43\x41\x4c\x45\x2c\x20\x52" \ -"\x4d\x39\x30\x30\x30\x2c\x20\x4f\x43\x54\x45\x4f\x4e\x2c\x20\x41" \ -"\x52\x37\x2c\x0a\x09\x55\x36\x5f\x31\x36\x35\x35\x30\x41\x00\x50" \ -"\x52\x4f\x47\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52" \ -"\x4f\x47\x20\x69\x6e\x20\x61\x20\x6e\x65\x77\x20\x73\x65\x73\x73" \ -"\x69\x6f\x6e\x2e\x20\x50\x52\x4f\x47\x20\x77\x69\x6c\x6c\x20\x68" \ -"\x61\x76\x65\x20\x6e\x6f\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x69" \ -"\x6e\x67\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x0a\x61\x6e\x64\x20" \ -"\x77\x69\x6c\x6c\x20\x6e\x6f\x74\x20\x62\x65\x20\x61\x66\x66\x65" \ -"\x63\x74\x65\x64\x20\x62\x79\x20\x6b\x65\x79\x62\x6f\x61\x72\x64" \ -"\x20\x73\x69\x67\x6e\x61\x6c\x73\x20\x28\x43\x74\x72\x6c\x2d\x43" \ -"\x20\x65\x74\x63\x29\x2e\x0a\x53\x65\x65\x20\x73\x65\x74\x73\x69" \ -"\x64\x28\x32\x29\x20\x66\x6f\x72\x20\x64\x65\x74\x61\x69\x6c\x73" \ -"\x2e\x00\x5b\x2d\x2f\x2b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b" \ -"\x2d\x2f\x2b\x6f\x20\x4f\x50\x54\x5d\x2e\x2e\x2e\x20\x5b\x2d\x63" \ -"\x20\x27\x53\x43\x52\x49\x50\x54\x27\x20\x5b\x41\x52\x47\x30\x20" \ -"\x5b\x41\x52\x47\x53\x5d\x5d\x20\x2f\x20\x46\x49\x4c\x45\x20\x5b" \ -"\x41\x52\x47\x53\x5d\x5d\x0a\x0a\x55\x6e\x69\x78\x20\x73\x68\x65" \ -"\x6c\x6c\x20\x69\x6e\x74\x65\x72\x70\x72\x65\x74\x65\x72\x00\x5b" \ -"\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63" \ -"\x6b\x20\x53\x48\x41\x31\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x73" \ -"\x0a\x0a\x09\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d\x73" \ -"\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69\x6e" \ -"\x20\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74" \ -"\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e\x67" \ -"\x2c\x20\x73\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73\x68" \ -"\x6f\x77\x73\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77\x09" \ -"\x57\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f" \ -"\x70\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64\x20" \ -"\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b" \ -"\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63" \ -"\x6b\x20\x53\x48\x41\x32\x35\x36\x20\x63\x68\x65\x63\x6b\x73\x75" \ -"\x6d\x73\x0a\x0a\x09\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75" \ -"\x6d\x73\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20" \ -"\x69\x6e\x20\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e" \ -"\x27\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69" \ -"\x6e\x67\x2c\x20\x73\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20" \ -"\x73\x68\x6f\x77\x73\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d" \ -"\x77\x09\x57\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70" \ -"\x72\x6f\x70\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65" \ -"\x64\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73" \ -"\x00\x5b\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \ -"\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68" \ -"\x65\x63\x6b\x20\x53\x48\x41\x33\x2d\x35\x31\x32\x20\x63\x68\x65" \ -"\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09\x2d\x63\x09\x43\x68\x65\x63" \ -"\x6b\x20\x73\x75\x6d\x73\x20\x61\x67\x61\x69\x6e\x73\x74\x20\x6c" \ -"\x69\x73\x74\x20\x69\x6e\x20\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73" \ -"\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x6e" \ -"\x79\x74\x68\x69\x6e\x67\x2c\x20\x73\x74\x61\x74\x75\x73\x20\x63" \ -"\x6f\x64\x65\x20\x73\x68\x6f\x77\x73\x20\x73\x75\x63\x63\x65\x73" \ -"\x73\x0a\x09\x2d\x77\x09\x57\x61\x72\x6e\x20\x61\x62\x6f\x75\x74" \ -"\x20\x69\x6d\x70\x72\x6f\x70\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d" \ -"\x61\x74\x74\x65\x64\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c" \ -"\x69\x6e\x65\x73\x00\x5b\x2d\x63\x5b\x73\x77\x5d\x5d\x20\x5b\x46" \ -"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f" \ -"\x72\x20\x63\x68\x65\x63\x6b\x20\x53\x48\x41\x35\x31\x32\x20\x63" \ -"\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09\x2d\x63\x09\x43\x68" \ -"\x65\x63\x6b\x20\x73\x75\x6d\x73\x20\x61\x67\x61\x69\x6e\x73\x74" \ -"\x20\x6c\x69\x73\x74\x20\x69\x6e\x20\x46\x49\x4c\x45\x73\x0a\x09" \ -"\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75\x74\x70\x75\x74\x20" \ -"\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c\x20\x73\x74\x61\x74\x75\x73" \ -"\x20\x63\x6f\x64\x65\x20\x73\x68\x6f\x77\x73\x20\x73\x75\x63\x63" \ -"\x65\x73\x73\x0a\x09\x2d\x77\x09\x57\x61\x72\x6e\x20\x61\x62\x6f" \ -"\x75\x74\x20\x69\x6d\x70\x72\x6f\x70\x65\x72\x6c\x79\x20\x66\x6f" \ -"\x72\x6d\x61\x74\x74\x65\x64\x20\x63\x68\x65\x63\x6b\x73\x75\x6d" \ -"\x20\x6c\x69\x6e\x65\x73\x00\x5b\x4e\x5d\x2e\x2e\x2e\x0a\x0a\x50" \ -"\x61\x75\x73\x65\x20\x66\x6f\x72\x20\x61\x20\x74\x69\x6d\x65\x20" \ -"\x65\x71\x75\x61\x6c\x20\x74\x6f\x20\x74\x68\x65\x20\x74\x6f\x74" \ -"\x61\x6c\x20\x6f\x66\x20\x74\x68\x65\x20\x61\x72\x67\x73\x20\x67" \ -"\x69\x76\x65\x6e\x2c\x20\x77\x68\x65\x72\x65\x20\x65\x61\x63\x68" \ -"\x20\x61\x72\x67\x20\x63\x61\x6e\x0a\x68\x61\x76\x65\x20\x61\x6e" \ -"\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x73\x75\x66\x66\x69\x78" \ -"\x20\x6f\x66\x20\x28\x73\x29\x65\x63\x6f\x6e\x64\x73\x2c\x20\x28" \ -"\x6d\x29\x69\x6e\x75\x74\x65\x73\x2c\x20\x28\x68\x29\x6f\x75\x72" \ -"\x73\x2c\x20\x6f\x72\x20\x28\x64\x29\x61\x79\x73\x00\x5b\x2d\x6e" \ -"\x72\x75\x67\x4d\x63\x73\x7a\x62\x64\x66\x69\x6d\x53\x54\x6f\x6b" \ -"\x74\x5d\x20\x5b\x2d\x6f\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x6b" \ -"\x20\x73\x74\x61\x72\x74\x5b\x2e\x6f\x66\x66\x73\x65\x74\x5d\x5b" \ -"\x6f\x70\x74\x73\x5d\x5b\x2c\x65\x6e\x64\x5b\x2e\x6f\x66\x66\x73" \ -"\x65\x74\x5d\x5b\x6f\x70\x74\x73\x5d\x5d\x20\x5b\x2d\x74\x20\x43" \ -"\x48\x41\x52\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x53\x6f\x72\x74\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x74\x65" \ -"\x78\x74\x0a\x0a\x09\x2d\x62\x09\x49\x67\x6e\x6f\x72\x65\x20\x6c" \ -"\x65\x61\x64\x69\x6e\x67\x20\x62\x6c\x61\x6e\x6b\x73\x0a\x09\x2d" \ -"\x63\x09\x43\x68\x65\x63\x6b\x20\x77\x68\x65\x74\x68\x65\x72\x20" \ -"\x69\x6e\x70\x75\x74\x20\x69\x73\x20\x73\x6f\x72\x74\x65\x64\x0a" \ -"\x09\x2d\x64\x09\x44\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x20\x6f" \ -"\x72\x64\x65\x72\x20\x28\x62\x6c\x61\x6e\x6b\x20\x6f\x72\x20\x61" \ -"\x6c\x70\x68\x61\x6e\x75\x6d\x65\x72\x69\x63\x20\x6f\x6e\x6c\x79" \ -"\x29\x0a\x09\x2d\x66\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x61\x73" \ -"\x65\x0a\x09\x2d\x67\x09\x47\x65\x6e\x65\x72\x61\x6c\x20\x6e\x75" \ -"\x6d\x65\x72\x69\x63\x61\x6c\x20\x73\x6f\x72\x74\x0a\x09\x2d\x69" \ -"\x09\x49\x67\x6e\x6f\x72\x65\x20\x75\x6e\x70\x72\x69\x6e\x74\x61" \ -"\x62\x6c\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x0a\x09" \ -"\x2d\x6b\x09\x53\x6f\x72\x74\x20\x6b\x65\x79\x0a\x09\x2d\x4d\x09" \ -"\x53\x6f\x72\x74\x20\x6d\x6f\x6e\x74\x68\x0a\x09\x2d\x6e\x09\x53" \ -"\x6f\x72\x74\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x6f\x09" \ -"\x4f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x66\x69\x6c\x65\x0a\x09" \ -"\x2d\x6b\x09\x53\x6f\x72\x74\x20\x62\x79\x20\x6b\x65\x79\x0a\x09" \ -"\x2d\x74\x20\x43\x48\x41\x52\x09\x4b\x65\x79\x20\x73\x65\x70\x61" \ -"\x72\x61\x74\x6f\x72\x0a\x09\x2d\x72\x09\x52\x65\x76\x65\x72\x73" \ -"\x65\x20\x73\x6f\x72\x74\x20\x6f\x72\x64\x65\x72\x0a\x09\x2d\x73" \ -"\x09\x53\x74\x61\x62\x6c\x65\x20\x28\x64\x6f\x6e\x27\x74\x20\x73" \ -"\x6f\x72\x74\x20\x74\x69\x65\x73\x20\x61\x6c\x70\x68\x61\x62\x65" \ -"\x74\x69\x63\x61\x6c\x6c\x79\x29\x0a\x09\x2d\x75\x09\x53\x75\x70" \ -"\x70\x72\x65\x73\x73\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20" \ -"\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x7a\x09\x4c\x69\x6e\x65\x73\x20" \ -"\x61\x72\x65\x20\x74\x65\x72\x6d\x69\x6e\x61\x74\x65\x64\x20\x62" \ -"\x79\x20\x4e\x55\x4c\x2c\x20\x6e\x6f\x74\x20\x6e\x65\x77\x6c\x69" \ -"\x6e\x65\x0a\x09\x2d\x6d\x53\x54\x09\x49\x67\x6e\x6f\x72\x65\x64" \ -"\x20\x66\x6f\x72\x20\x47\x4e\x55\x20\x63\x6f\x6d\x70\x61\x74\x69" \ -"\x62\x69\x6c\x69\x74\x79\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d" \ -"\x20\x5b\x49\x4e\x50\x55\x54\x20\x5b\x50\x52\x45\x46\x49\x58\x5d" \ -"\x5d\x0a\x0a\x09\x2d\x62\x20\x4e\x5b\x6b\x7c\x6d\x5d\x09\x53\x70" \ -"\x6c\x69\x74\x20\x62\x79\x20\x4e\x20\x28\x6b\x69\x6c\x6f\x7c\x6d" \ -"\x65\x67\x61\x29\x62\x79\x74\x65\x73\x0a\x09\x2d\x6c\x20\x4e\x09" \ -"\x09\x53\x70\x6c\x69\x74\x20\x62\x79\x20\x4e\x20\x6c\x69\x6e\x65" \ -"\x73\x0a\x09\x2d\x61\x20\x4e\x09\x09\x55\x73\x65\x20\x4e\x20\x6c" \ -"\x65\x74\x74\x65\x72\x73\x20\x61\x73\x20\x73\x75\x66\x66\x69\x78" \ -"\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x46\x49\x4c\x45\x2e" \ -"\x2e\x2e\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x66\x69\x6c\x65" \ -"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x20\x6f\x72\x20\x66\x69" \ -"\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x73\x74\x61\x74\x75\x73\x0a" \ -"\x0a\x09\x2d\x66\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x66\x69\x6c" \ -"\x65\x73\x79\x73\x74\x65\x6d\x20\x73\x74\x61\x74\x75\x73\x0a\x09" \ -"\x2d\x4c\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x6c\x69\x6e\x6b\x73\x0a" \ -"\x09\x2d\x74\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x69\x6e\x66\x6f" \ -"\x20\x69\x6e\x20\x74\x65\x72\x73\x65\x20\x66\x6f\x72\x6d\x00\x5b" \ -"\x2d\x61\x66\x6f\x5d\x20\x5b\x2d\x6e\x20\x4c\x45\x4e\x5d\x20\x5b" \ -"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x69\x73\x70\x6c\x61" \ -"\x79\x20\x70\x72\x69\x6e\x74\x61\x62\x6c\x65\x20\x73\x74\x72\x69" \ -"\x6e\x67\x73\x20\x69\x6e\x20\x61\x20\x62\x69\x6e\x61\x72\x79\x20" \ -"\x66\x69\x6c\x65\x0a\x0a\x09\x2d\x61\x09\x53\x63\x61\x6e\x20\x77" \ -"\x68\x6f\x6c\x65\x20\x66\x69\x6c\x65\x20\x28\x64\x65\x66\x61\x75" \ -"\x6c\x74\x29\x0a\x09\x2d\x66\x09\x50\x72\x65\x63\x65\x64\x65\x20" \ -"\x73\x74\x72\x69\x6e\x67\x73\x20\x77\x69\x74\x68\x20\x66\x69\x6c" \ -"\x65\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x6e\x20\x4c\x45\x4e\x09\x41" \ -"\x74\x20\x6c\x65\x61\x73\x74\x20\x4c\x45\x4e\x20\x63\x68\x61\x72" \ -"\x61\x63\x74\x65\x72\x73\x20\x66\x6f\x72\x6d\x20\x61\x20\x73\x74" \ -"\x72\x69\x6e\x67\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x34\x29" \ -"\x0a\x09\x2d\x6f\x09\x50\x72\x65\x63\x65\x64\x65\x20\x73\x74\x72" \ -"\x69\x6e\x67\x73\x20\x77\x69\x74\x68\x20\x64\x65\x63\x69\x6d\x61" \ -"\x6c\x20\x6f\x66\x66\x73\x65\x74\x73\x00\x5b\x2d\x61\x7c\x67\x5d" \ -"\x20\x5b\x2d\x46\x20\x44\x45\x56\x49\x43\x45\x5d\x20\x5b\x53\x45" \ -"\x54\x54\x49\x4e\x47\x5d\x2e\x2e\x2e\x0a\x0a\x57\x69\x74\x68\x6f" \ -"\x75\x74\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x2c\x20\x70\x72" \ -"\x69\x6e\x74\x73\x20\x62\x61\x75\x64\x20\x72\x61\x74\x65\x2c\x20" \ -"\x6c\x69\x6e\x65\x20\x64\x69\x73\x63\x69\x70\x6c\x69\x6e\x65\x2c" \ -"\x0a\x61\x6e\x64\x20\x64\x65\x76\x69\x61\x74\x69\x6f\x6e\x73\x20" \ -"\x66\x72\x6f\x6d\x20\x73\x74\x74\x79\x20\x73\x61\x6e\x65\x0a\x0a" \ -"\x09\x2d\x46\x20\x44\x45\x56\x49\x43\x45\x09\x4f\x70\x65\x6e\x20" \ -"\x64\x65\x76\x69\x63\x65\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f" \ -"\x66\x20\x73\x74\x64\x69\x6e\x0a\x09\x2d\x61\x09\x09\x50\x72\x69" \ -"\x6e\x74\x20\x61\x6c\x6c\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73" \ -"\x65\x74\x74\x69\x6e\x67\x73\x20\x69\x6e\x20\x68\x75\x6d\x61\x6e" \ -"\x2d\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f\x72\x6d\x0a\x09" \ -"\x2d\x67\x09\x09\x50\x72\x69\x6e\x74\x20\x69\x6e\x20\x73\x74\x74" \ -"\x79\x2d\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f\x72\x6d\x0a" \ -"\x09\x5b\x53\x45\x54\x54\x49\x4e\x47\x5d\x09\x53\x65\x65\x20\x6d" \ -"\x61\x6e\x70\x61\x67\x65\x00\x5b\x2d\x72\x73\x5d\x20\x5b\x46\x49" \ -"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x68\x65\x63\x6b\x73\x75\x6d" \ -"\x20\x61\x6e\x64\x20\x63\x6f\x75\x6e\x74\x20\x74\x68\x65\x20\x62" \ -"\x6c\x6f\x63\x6b\x73\x20\x69\x6e\x20\x61\x20\x66\x69\x6c\x65\x0a" \ -"\x0a\x09\x2d\x72\x09\x55\x73\x65\x20\x42\x53\x44\x20\x73\x75\x6d" \ -"\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d\x20\x28\x31\x4b\x20\x62" \ -"\x6c\x6f\x63\x6b\x73\x29\x0a\x09\x2d\x73\x09\x55\x73\x65\x20\x53" \ -"\x79\x73\x74\x65\x6d\x20\x56\x20\x73\x75\x6d\x20\x61\x6c\x67\x6f" \ -"\x72\x69\x74\x68\x6d\x20\x28\x35\x31\x32\x62\x79\x74\x65\x20\x62" \ -"\x6c\x6f\x63\x6b\x73\x29\x00\x5b\x2d\x61\x5d\x20\x5b\x44\x45\x56" \ -"\x49\x43\x45\x5d\x0a\x0a\x53\x74\x6f\x70\x20\x73\x77\x61\x70\x70" \ -"\x69\x6e\x67\x20\x6f\x6e\x20\x44\x45\x56\x49\x43\x45\x0a\x0a\x09" \ -"\x2d\x61\x09\x53\x74\x6f\x70\x20\x73\x77\x61\x70\x70\x69\x6e\x67" \ -"\x20\x6f\x6e\x20\x61\x6c\x6c\x20\x73\x77\x61\x70\x20\x64\x65\x76" \ -"\x69\x63\x65\x73\x00\x5b\x2d\x61\x5d\x20\x5b\x44\x45\x56\x49\x43" \ -"\x45\x5d\x0a\x0a\x53\x74\x61\x72\x74\x20\x73\x77\x61\x70\x70\x69" \ -"\x6e\x67\x20\x6f\x6e\x20\x44\x45\x56\x49\x43\x45\x0a\x0a\x09\x2d" \ -"\x61\x09\x53\x74\x61\x72\x74\x20\x73\x77\x61\x70\x70\x69\x6e\x67" \ -"\x20\x6f\x6e\x20\x61\x6c\x6c\x20\x73\x77\x61\x70\x20\x64\x65\x76" \ -"\x69\x63\x65\x73\x00\x0a\x0a\x57\x72\x69\x74\x65\x20\x61\x6c\x6c" \ -"\x20\x62\x75\x66\x66\x65\x72\x65\x64\x20\x62\x6c\x6f\x63\x6b\x73" \ -"\x20\x74\x6f\x20\x64\x69\x73\x6b\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \ -"\x53\x5d\x20\x5b\x4b\x45\x59\x5b\x3d\x56\x41\x4c\x55\x45\x5d\x5d" \ -"\x2e\x2e\x2e\x0a\x0a\x53\x68\x6f\x77\x2f\x73\x65\x74\x20\x6b\x65" \ -"\x72\x6e\x65\x6c\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x0a" \ -"\x0a\x09\x2d\x65\x09\x44\x6f\x6e\x27\x74\x20\x77\x61\x72\x6e\x20" \ -"\x61\x62\x6f\x75\x74\x20\x75\x6e\x6b\x6e\x6f\x77\x6e\x20\x6b\x65" \ -"\x79\x73\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x73\x68\x6f" \ -"\x77\x20\x6b\x65\x79\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x61\x09" \ -"\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20\x76\x61\x6c\x75\x65\x73\x0a" \ -"\x09\x2d\x77\x09\x53\x65\x74\x20\x76\x61\x6c\x75\x65\x73\x0a\x09" \ -"\x2d\x70\x20\x46\x49\x4c\x45\x09\x53\x65\x74\x20\x76\x61\x6c\x75" \ -"\x65\x73\x20\x66\x72\x6f\x6d\x20\x46\x49\x4c\x45\x20\x28\x64\x65" \ -"\x66\x61\x75\x6c\x74\x20\x2f\x65\x74\x63\x2f\x73\x79\x73\x63\x74" \ -"\x6c\x2e\x63\x6f\x6e\x66\x29\x0a\x09\x2d\x71\x20\x20\x20\x20\x20" \ -"\x20\x53\x65\x74\x20\x76\x61\x6c\x75\x65\x73\x20\x73\x69\x6c\x65" \ -"\x6e\x74\x6c\x79\x00\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x43\x6f\x6e\x63\x61\x74\x65\x6e\x61\x74\x65\x20\x46\x49\x4c\x45" \ -"\x73\x20\x61\x6e\x64\x20\x70\x72\x69\x6e\x74\x20\x74\x68\x65\x6d" \ -"\x20\x69\x6e\x20\x72\x65\x76\x65\x72\x73\x65\x00\x5b\x4f\x50\x54" \ -"\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a" \ -"\x0a\x50\x72\x69\x6e\x74\x20\x6c\x61\x73\x74\x20\x31\x30\x20\x6c" \ -"\x69\x6e\x65\x73\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x46\x49\x4c" \ -"\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x20\x74\x6f\x20" \ -"\x73\x74\x64\x6f\x75\x74\x2e\x0a\x57\x69\x74\x68\x20\x6d\x6f\x72" \ -"\x65\x20\x74\x68\x61\x6e\x20\x6f\x6e\x65\x20\x46\x49\x4c\x45\x2c" \ -"\x20\x70\x72\x65\x63\x65\x64\x65\x20\x65\x61\x63\x68\x20\x77\x69" \ -"\x74\x68\x20\x61\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x68\x65" \ -"\x61\x64\x65\x72\x2e\x0a\x0a\x09\x2d\x66\x09\x09\x50\x72\x69\x6e" \ -"\x74\x20\x64\x61\x74\x61\x20\x61\x73\x20\x66\x69\x6c\x65\x20\x67" \ -"\x72\x6f\x77\x73\x0a\x09\x2d\x73\x20\x53\x45\x43\x4f\x4e\x44\x53" \ -"\x09\x57\x61\x69\x74\x20\x53\x45\x43\x4f\x4e\x44\x53\x20\x62\x65" \ -"\x74\x77\x65\x65\x6e\x20\x72\x65\x61\x64\x73\x20\x77\x69\x74\x68" \ -"\x20\x2d\x66\x0a\x09\x2d\x6e\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50" \ -"\x72\x69\x6e\x74\x20\x6c\x61\x73\x74\x20\x4e\x20\x6c\x69\x6e\x65" \ -"\x73\x0a\x09\x2d\x63\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69" \ -"\x6e\x74\x20\x6c\x61\x73\x74\x20\x4e\x20\x62\x79\x74\x65\x73\x0a" \ -"\x09\x2d\x71\x09\x09\x4e\x65\x76\x65\x72\x20\x70\x72\x69\x6e\x74" \ -"\x20\x68\x65\x61\x64\x65\x72\x73\x0a\x09\x2d\x76\x09\x09\x41\x6c" \ -"\x77\x61\x79\x73\x20\x70\x72\x69\x6e\x74\x20\x68\x65\x61\x64\x65" \ -"\x72\x73\x0a\x0a\x4e\x20\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66" \ -"\x66\x69\x78\x65\x64\x20\x62\x79\x20\x6b\x20\x28\x78\x31\x30\x32" \ -"\x34\x29\x2c\x20\x62\x20\x28\x78\x35\x31\x32\x29\x2c\x20\x6f\x72" \ -"\x20\x6d\x20\x28\x78\x31\x30\x32\x34\x5e\x32\x29\x2e\x0a\x49\x66" \ -"\x20\x4e\x20\x73\x74\x61\x72\x74\x73\x20\x77\x69\x74\x68\x20\x61" \ -"\x20\x27\x2b\x27\x2c\x20\x6f\x75\x74\x70\x75\x74\x20\x62\x65\x67" \ -"\x69\x6e\x73\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x4e\x74\x68" \ -"\x20\x69\x74\x65\x6d\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x73" \ -"\x74\x61\x72\x74\x0a\x6f\x66\x20\x65\x61\x63\x68\x20\x66\x69\x6c" \ -"\x65\x2c\x20\x6e\x6f\x74\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20" \ -"\x65\x6e\x64\x2e\x00\x2d\x5b\x63\x78\x74\x7a\x4a\x6a\x61\x68\x6d" \ -"\x76\x4f\x5d\x20\x5b\x2d\x58\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d" \ -"\x54\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x66\x20\x54\x41\x52\x46" \ -"\x49\x4c\x45\x5d\x20\x5b\x2d\x43\x20\x44\x49\x52\x5d\x20\x5b\x46" \ -"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x72\x65\x61\x74\x65\x2c" \ -"\x20\x65\x78\x74\x72\x61\x63\x74\x2c\x20\x6f\x72\x20\x6c\x69\x73" \ -"\x74\x20\x66\x69\x6c\x65\x73\x20\x66\x72\x6f\x6d\x20\x61\x20\x74" \ -"\x61\x72\x20\x66\x69\x6c\x65\x0a\x0a\x4f\x70\x65\x72\x61\x74\x69" \ -"\x6f\x6e\x3a\x0a\x09\x63\x09\x43\x72\x65\x61\x74\x65\x0a\x09\x78" \ -"\x09\x45\x78\x74\x72\x61\x63\x74\x0a\x09\x74\x09\x4c\x69\x73\x74" \ -"\x0a\x09\x66\x09\x4e\x61\x6d\x65\x20\x6f\x66\x20\x54\x41\x52\x46" \ -"\x49\x4c\x45\x20\x28\x27\x2d\x27\x20\x66\x6f\x72\x20\x73\x74\x64" \ -"\x69\x6e\x2f\x6f\x75\x74\x29\x0a\x09\x43\x09\x43\x68\x61\x6e\x67" \ -"\x65\x20\x74\x6f\x20\x44\x49\x52\x20\x62\x65\x66\x6f\x72\x65\x20" \ -"\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a\x09\x76\x09\x56\x65\x72" \ -"\x62\x6f\x73\x65\x0a\x09\x7a\x09\x28\x44\x65\x29\x63\x6f\x6d\x70" \ -"\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67\x20\x67\x7a\x69\x70\x0a" \ -"\x09\x4a\x09\x28\x44\x65\x29\x63\x6f\x6d\x70\x72\x65\x73\x73\x20" \ -"\x75\x73\x69\x6e\x67\x20\x78\x7a\x0a\x09\x6a\x09\x28\x44\x65\x29" \ -"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67\x20\x62" \ -"\x7a\x69\x70\x32\x0a\x09\x61\x09\x28\x44\x65\x29\x63\x6f\x6d\x70" \ -"\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67\x20\x6c\x7a\x6d\x61\x0a" \ -"\x09\x4f\x09\x45\x78\x74\x72\x61\x63\x74\x20\x74\x6f\x20\x73\x74" \ -"\x64\x6f\x75\x74\x0a\x09\x68\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73" \ -"\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x6d\x09\x44\x6f\x6e\x27\x74" \ -"\x20\x72\x65\x73\x74\x6f\x72\x65\x20\x6d\x74\x69\x6d\x65\x0a\x09" \ -"\x65\x78\x63\x6c\x75\x64\x65\x09\x46\x69\x6c\x65\x20\x74\x6f\x20" \ -"\x65\x78\x63\x6c\x75\x64\x65\x0a\x09\x58\x09\x46\x69\x6c\x65\x20" \ -"\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x6f\x20\x65\x78" \ -"\x63\x6c\x75\x64\x65\x0a\x09\x54\x09\x46\x69\x6c\x65\x20\x77\x69" \ -"\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x6f\x20\x69\x6e\x63\x6c" \ -"\x75\x64\x65\x00\x5b\x2d\x70\x5d\x20\x5b\x4d\x41\x53\x4b\x5d\x20" \ -"\x5b\x50\x49\x44\x20\x7c\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53" \ -"\x5d\x0a\x0a\x53\x65\x74\x20\x6f\x72\x20\x67\x65\x74\x20\x43\x50" \ -"\x55\x20\x61\x66\x66\x69\x6e\x69\x74\x79\x0a\x0a\x09\x2d\x70\x09" \ -"\x4f\x70\x65\x72\x61\x74\x65\x20\x6f\x6e\x20\x61\x6e\x20\x65\x78" \ -"\x69\x73\x74\x69\x6e\x67\x20\x50\x49\x44\x00\x5b\x2d\x61\x69\x5d" \ -"\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x70\x79" \ -"\x20\x73\x74\x64\x69\x6e\x20\x74\x6f\x20\x65\x61\x63\x68\x20\x46" \ -"\x49\x4c\x45\x2c\x20\x61\x6e\x64\x20\x61\x6c\x73\x6f\x20\x74\x6f" \ -"\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x61\x09\x41\x70\x70" \ -"\x65\x6e\x64\x20\x74\x6f\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e" \ -"\x20\x46\x49\x4c\x45\x73\x2c\x20\x64\x6f\x6e\x27\x74\x20\x6f\x76" \ -"\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f" \ -"\x72\x65\x20\x69\x6e\x74\x65\x72\x72\x75\x70\x74\x20\x73\x69\x67" \ -"\x6e\x61\x6c\x73\x20\x28\x53\x49\x47\x49\x4e\x54\x29\x00\x48\x4f" \ -"\x53\x54\x20\x5b\x50\x4f\x52\x54\x5d\x0a\x0a\x43\x6f\x6e\x6e\x65" \ -"\x63\x74\x20\x74\x6f\x20\x74\x65\x6c\x6e\x65\x74\x20\x73\x65\x72" \ -"\x76\x65\x72\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x0a\x0a\x48" \ -"\x61\x6e\x64\x6c\x65\x20\x69\x6e\x63\x6f\x6d\x69\x6e\x67\x20\x74" \ -"\x65\x6c\x6e\x65\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e" \ -"\x73\x0a\x0a\x09\x2d\x6c\x20\x4c\x4f\x47\x49\x4e\x09\x45\x78\x65" \ -"\x63\x20\x4c\x4f\x47\x49\x4e\x20\x6f\x6e\x20\x63\x6f\x6e\x6e\x65" \ -"\x63\x74\x0a\x09\x2d\x66\x20\x49\x53\x53\x55\x45\x5f\x46\x49\x4c" \ -"\x45\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x49\x53\x53\x55\x45\x5f" \ -"\x46\x49\x4c\x45\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20" \ -"\x2f\x65\x74\x63\x2f\x69\x73\x73\x75\x65\x0a\x09\x2d\x4b\x09\x09" \ -"\x43\x6c\x6f\x73\x65\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e" \ -"\x20\x61\x73\x20\x73\x6f\x6f\x6e\x20\x61\x73\x20\x6c\x6f\x67\x69" \ -"\x6e\x20\x65\x78\x69\x74\x73\x0a\x09\x09\x09\x28\x6e\x6f\x72\x6d" \ -"\x61\x6c\x6c\x79\x20\x77\x61\x69\x74\x20\x75\x6e\x74\x69\x6c\x20" \ -"\x61\x6c\x6c\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x20\x63\x6c\x6f" \ -"\x73\x65\x20\x73\x6c\x61\x76\x65\x20\x70\x74\x79\x29\x0a\x09\x2d" \ -"\x70\x20\x50\x4f\x52\x54\x09\x09\x50\x6f\x72\x74\x20\x74\x6f\x20" \ -"\x6c\x69\x73\x74\x65\x6e\x20\x6f\x6e\x0a\x09\x2d\x62\x20\x41\x44" \ -"\x44\x52\x5b\x3a\x50\x4f\x52\x54\x5d\x09\x41\x64\x64\x72\x65\x73" \ -"\x73\x20\x74\x6f\x20\x62\x69\x6e\x64\x20\x74\x6f\x0a\x09\x2d\x46" \ -"\x09\x09\x52\x75\x6e\x20\x69\x6e\x20\x66\x6f\x72\x65\x67\x72\x6f" \ -"\x75\x6e\x64\x0a\x09\x2d\x69\x09\x09\x49\x6e\x65\x74\x64\x20\x6d" \ -"\x6f\x64\x65\x0a\x09\x2d\x77\x20\x53\x45\x43\x09\x09\x49\x6e\x65" \ -"\x74\x64\x20\x27\x77\x61\x69\x74\x27\x20\x6d\x6f\x64\x65\x2c\x20" \ -"\x6c\x69\x6e\x67\x65\x72\x20\x74\x69\x6d\x65\x20\x53\x45\x43\x0a" \ -"\x09\x2d\x53\x09\x09\x4c\x6f\x67\x20\x74\x6f\x20\x73\x79\x73\x6c" \ -"\x6f\x67\x20\x28\x69\x6d\x70\x6c\x69\x65\x64\x20\x62\x79\x20\x2d" \ -"\x69\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\x75\x74\x20\x2d\x46\x20" \ -"\x61\x6e\x64\x20\x2d\x77\x29\x00\x45\x58\x50\x52\x45\x53\x53\x49" \ -"\x4f\x4e\x20\x5d\x0a\x0a\x43\x68\x65\x63\x6b\x20\x66\x69\x6c\x65" \ -"\x20\x74\x79\x70\x65\x73\x2c\x20\x63\x6f\x6d\x70\x61\x72\x65\x20" \ -"\x76\x61\x6c\x75\x65\x73\x20\x65\x74\x63\x2e\x20\x52\x65\x74\x75" \ -"\x72\x6e\x20\x61\x20\x30\x2f\x31\x20\x65\x78\x69\x74\x20\x63\x6f" \ -"\x64\x65\x0a\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20" \ -"\x6c\x6f\x67\x69\x63\x61\x6c\x20\x76\x61\x6c\x75\x65\x20\x6f\x66" \ -"\x20\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x00\x5b\x4f\x50\x54" \ -"\x49\x4f\x4e\x53\x5d\x20\x48\x4f\x53\x54\x20\x5b\x50\x4f\x52\x54" \ -"\x5d\x0a\x0a\x54\x72\x61\x6e\x73\x66\x65\x72\x20\x61\x20\x66\x69" \ -"\x6c\x65\x20\x66\x72\x6f\x6d\x2f\x74\x6f\x20\x74\x66\x74\x70\x20" \ -"\x73\x65\x72\x76\x65\x72\x0a\x0a\x09\x2d\x6c\x20\x46\x49\x4c\x45" \ -"\x09\x4c\x6f\x63\x61\x6c\x20\x46\x49\x4c\x45\x0a\x09\x2d\x72\x20" \ -"\x46\x49\x4c\x45\x09\x52\x65\x6d\x6f\x74\x65\x20\x46\x49\x4c\x45" \ -"\x0a\x09\x2d\x67\x09\x47\x65\x74\x20\x66\x69\x6c\x65\x0a\x09\x2d" \ -"\x70\x09\x50\x75\x74\x20\x66\x69\x6c\x65\x00\x5b\x2d\x63\x72\x5d" \ -"\x20\x5b\x2d\x75\x20\x55\x53\x45\x52\x5d\x20\x5b\x44\x49\x52\x5d" \ -"\x0a\x0a\x54\x72\x61\x6e\x73\x66\x65\x72\x20\x61\x20\x66\x69\x6c" \ -"\x65\x20\x6f\x6e\x20\x74\x66\x74\x70\x20\x63\x6c\x69\x65\x6e\x74" \ -"\x27\x73\x20\x72\x65\x71\x75\x65\x73\x74\x0a\x0a\x74\x66\x74\x70" \ -"\x64\x20\x73\x68\x6f\x75\x6c\x64\x20\x62\x65\x20\x75\x73\x65\x64" \ -"\x20\x61\x73\x20\x61\x6e\x20\x69\x6e\x65\x74\x64\x20\x73\x65\x72" \ -"\x76\x69\x63\x65\x2e\x0a\x74\x66\x74\x70\x64\x27\x73\x20\x6c\x69" \ -"\x6e\x65\x20\x66\x6f\x72\x20\x69\x6e\x65\x74\x64\x2e\x63\x6f\x6e" \ -"\x66\x3a\x0a\x09\x36\x39\x20\x64\x67\x72\x61\x6d\x20\x75\x64\x70" \ -"\x20\x6e\x6f\x77\x61\x69\x74\x20\x72\x6f\x6f\x74\x20\x74\x66\x74" \ -"\x70\x64\x20\x74\x66\x74\x70\x64\x20\x2d\x6c\x20\x2f\x66\x69\x6c" \ -"\x65\x73\x2f\x74\x6f\x2f\x73\x65\x72\x76\x65\x0a\x49\x74\x20\x61" \ -"\x6c\x73\x6f\x20\x63\x61\x6e\x20\x62\x65\x20\x72\x61\x6e\x20\x66" \ -"\x72\x6f\x6d\x20\x75\x64\x70\x73\x76\x64\x3a\x0a\x09\x75\x64\x70" \ -"\x73\x76\x64\x20\x2d\x76\x45\x20\x30\x2e\x30\x2e\x30\x2e\x30\x20" \ -"\x36\x39\x20\x74\x66\x74\x70\x64\x20\x2f\x66\x69\x6c\x65\x73\x2f" \ -"\x74\x6f\x2f\x73\x65\x72\x76\x65\x0a\x0a\x09\x2d\x72\x09\x50\x72" \ -"\x6f\x68\x69\x62\x69\x74\x20\x75\x70\x6c\x6f\x61\x64\x0a\x09\x2d" \ -"\x63\x09\x41\x6c\x6c\x6f\x77\x20\x66\x69\x6c\x65\x20\x63\x72\x65" \ -"\x61\x74\x69\x6f\x6e\x20\x76\x69\x61\x20\x75\x70\x6c\x6f\x61\x64" \ -"\x0a\x09\x2d\x75\x09\x41\x63\x63\x65\x73\x73\x20\x66\x69\x6c\x65" \ -"\x73\x20\x61\x73\x20\x55\x53\x45\x52\x0a\x09\x2d\x6c\x09\x4c\x6f" \ -"\x67\x20\x74\x6f\x20\x73\x79\x73\x6c\x6f\x67\x20\x28\x69\x6e\x65" \ -"\x74\x64\x20\x6d\x6f\x64\x65\x20\x72\x65\x71\x75\x69\x72\x65\x73" \ -"\x20\x74\x68\x69\x73\x29\x00\x5b\x2d\x76\x5d\x20\x50\x52\x4f\x47" \ -"\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x2c" \ -"\x20\x64\x69\x73\x70\x6c\x61\x79\x20\x72\x65\x73\x6f\x75\x72\x63" \ -"\x65\x20\x75\x73\x61\x67\x65\x20\x77\x68\x65\x6e\x20\x69\x74\x20" \ -"\x65\x78\x69\x74\x73\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f" \ -"\x73\x65\x00\x5b\x2d\x74\x20\x53\x45\x43\x53\x5d\x20\x5b\x2d\x73" \ -"\x20\x53\x49\x47\x5d\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x0a" \ -"\x0a\x52\x75\x6e\x73\x20\x50\x52\x4f\x47\x2e\x20\x53\x65\x6e\x64" \ -"\x73\x20\x53\x49\x47\x20\x74\x6f\x20\x69\x74\x20\x69\x66\x20\x69" \ -"\x74\x20\x69\x73\x20\x6e\x6f\x74\x20\x67\x6f\x6e\x65\x20\x69\x6e" \ -"\x20\x53\x45\x43\x53\x20\x73\x65\x63\x6f\x6e\x64\x73\x2e\x0a\x44" \ -"\x65\x66\x61\x75\x6c\x74\x73\x3a\x20\x53\x45\x43\x53\x3a\x20\x31" \ -"\x30\x2c\x20\x53\x49\x47\x3a\x20\x54\x45\x52\x4d\x2e\x00\x5b\x2d" \ -"\x62\x5d\x20\x5b\x2d\x6e\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x64" \ -"\x53\x45\x43\x4f\x4e\x44\x53\x5d\x20\x5b\x2d\x6d\x5d\x0a\x0a\x50" \ -"\x72\x6f\x76\x69\x64\x65\x20\x61\x20\x76\x69\x65\x77\x20\x6f\x66" \ -"\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x61\x63\x74\x69\x76\x69\x74" \ -"\x79\x20\x69\x6e\x20\x72\x65\x61\x6c\x20\x74\x69\x6d\x65\x2e\x0a" \ -"\x52\x65\x61\x64\x20\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20" \ -"\x6f\x66\x20\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73" \ -"\x20\x66\x72\x6f\x6d\x20\x2f\x70\x72\x6f\x63\x20\x65\x61\x63\x68" \ -"\x20\x53\x45\x43\x4f\x4e\x44\x53\x0a\x61\x6e\x64\x20\x64\x69\x73" \ -"\x70\x6c\x61\x79\x20\x61\x20\x73\x63\x72\x65\x65\x6e\x66\x75\x6c" \ -"\x20\x6f\x66\x20\x74\x68\x65\x6d\x2e\x0a\x4b\x65\x79\x73\x3a\x0a" \ -"\x09\x4e\x2f\x4d\x2f\x50\x2f\x54\x3a\x20\x73\x68\x6f\x77\x20\x43" \ -"\x50\x55\x20\x75\x73\x61\x67\x65\x2c\x20\x73\x6f\x72\x74\x20\x62" \ -"\x79\x20\x70\x69\x64\x2f\x6d\x65\x6d\x2f\x63\x70\x75\x2f\x74\x69" \ -"\x6d\x65\x0a\x09\x53\x3a\x20\x73\x68\x6f\x77\x20\x6d\x65\x6d\x6f" \ -"\x72\x79\x0a\x09\x52\x3a\x20\x72\x65\x76\x65\x72\x73\x65\x20\x73" \ -"\x6f\x72\x74\x0a\x09\x48\x3a\x20\x74\x6f\x67\x67\x6c\x65\x20\x74" \ -"\x68\x72\x65\x61\x64\x73\x2c\x20\x31\x3a\x20\x74\x6f\x67\x67\x6c" \ -"\x65\x20\x53\x4d\x50\x0a\x09\x51\x2c\x5e\x43\x3a\x20\x65\x78\x69" \ -"\x74\x0a\x0a\x4f\x70\x74\x69\x6f\x6e\x73\x3a\x0a\x09\x2d\x62\x09" \ -"\x42\x61\x74\x63\x68\x20\x6d\x6f\x64\x65\x0a\x09\x2d\x6e\x20\x4e" \ -"\x09\x45\x78\x69\x74\x20\x61\x66\x74\x65\x72\x20\x4e\x20\x69\x74" \ -"\x65\x72\x61\x74\x69\x6f\x6e\x73\x0a\x09\x2d\x64\x20\x4e\x09\x44" \ -"\x65\x6c\x61\x79\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x75\x70\x64" \ -"\x61\x74\x65\x73\x0a\x09\x2d\x6d\x09\x53\x61\x6d\x65\x20\x61\x73" \ -"\x20\x27\x73\x27\x20\x6b\x65\x79\x00\x5b\x2d\x63\x5d\x20\x5b\x2d" \ -"\x64\x20\x44\x41\x54\x45\x5d\x20\x5b\x2d\x74\x20\x44\x41\x54\x45" \ -"\x5d\x20\x5b\x2d\x72\x20\x46\x49\x4c\x45\x5d\x20\x46\x49\x4c\x45" \ -"\x2e\x2e\x2e\x0a\x0a\x55\x70\x64\x61\x74\x65\x20\x74\x68\x65\x20" \ -"\x6c\x61\x73\x74\x2d\x6d\x6f\x64\x69\x66\x69\x65\x64\x20\x64\x61" \ -"\x74\x65\x20\x6f\x6e\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20" \ -"\x46\x49\x4c\x45\x5b\x73\x5d\x0a\x0a\x09\x2d\x63\x09\x44\x6f\x6e" \ -"\x27\x74\x20\x63\x72\x65\x61\x74\x65\x20\x66\x69\x6c\x65\x73\x0a" \ -"\x09\x2d\x64\x20\x44\x54\x09\x44\x61\x74\x65\x2f\x74\x69\x6d\x65" \ -"\x20\x74\x6f\x20\x75\x73\x65\x0a\x09\x2d\x74\x20\x44\x54\x09\x44" \ -"\x61\x74\x65\x2f\x74\x69\x6d\x65\x20\x74\x6f\x20\x75\x73\x65\x0a" \ -"\x09\x2d\x72\x20\x46\x49\x4c\x45\x09\x55\x73\x65\x20\x46\x49\x4c" \ -"\x45\x27\x73\x20\x64\x61\x74\x65\x2f\x74\x69\x6d\x65\x00\x5b\x2d" \ -"\x63\x64\x73\x5d\x20\x53\x54\x52\x49\x4e\x47\x31\x20\x5b\x53\x54" \ -"\x52\x49\x4e\x47\x32\x5d\x0a\x0a\x54\x72\x61\x6e\x73\x6c\x61\x74" \ -"\x65\x2c\x20\x73\x71\x75\x65\x65\x7a\x65\x2c\x20\x6f\x72\x20\x64" \ -"\x65\x6c\x65\x74\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73" \ -"\x20\x66\x72\x6f\x6d\x20\x73\x74\x64\x69\x6e\x2c\x20\x77\x72\x69" \ -"\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a" \ -"\x09\x2d\x63\x09\x54\x61\x6b\x65\x20\x63\x6f\x6d\x70\x6c\x65\x6d" \ -"\x65\x6e\x74\x20\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x31\x0a\x09" \ -"\x2d\x64\x09\x44\x65\x6c\x65\x74\x65\x20\x69\x6e\x70\x75\x74\x20" \ -"\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x63\x6f\x64\x65\x64" \ -"\x20\x53\x54\x52\x49\x4e\x47\x31\x0a\x09\x2d\x73\x09\x53\x71\x75" \ -"\x65\x65\x7a\x65\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x20\x6f\x75" \ -"\x74\x70\x75\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20" \ -"\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x32\x20\x69\x6e\x74\x6f\x20" \ -"\x6f\x6e\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x00\x5b\x2d" \ -"\x46\x49\x6c\x64\x6e\x72\x76\x5d\x20\x5b\x2d\x66\x20\x31\x53\x54" \ -"\x5f\x54\x54\x4c\x5d\x20\x5b\x2d\x6d\x20\x4d\x41\x58\x54\x54\x4c" \ -"\x5d\x20\x5b\x2d\x70\x20\x50\x4f\x52\x54\x5d\x20\x5b\x2d\x71\x20" \ -"\x50\x52\x4f\x42\x45\x53\x5d\x0a\x09\x5b\x2d\x73\x20\x53\x52\x43" \ -"\x5f\x49\x50\x5d\x20\x5b\x2d\x74\x20\x54\x4f\x53\x5d\x20\x5b\x2d" \ -"\x77\x20\x57\x41\x49\x54\x5f\x53\x45\x43\x5d\x20\x5b\x2d\x67\x20" \ -"\x47\x41\x54\x45\x57\x41\x59\x5d\x20\x5b\x2d\x69\x20\x49\x46\x41" \ -"\x43\x45\x5d\x0a\x09\x5b\x2d\x7a\x20\x50\x41\x55\x53\x45\x5f\x4d" \ -"\x53\x45\x43\x5d\x20\x48\x4f\x53\x54\x20\x5b\x42\x59\x54\x45\x53" \ -"\x5d\x0a\x0a\x54\x72\x61\x63\x65\x20\x74\x68\x65\x20\x72\x6f\x75" \ -"\x74\x65\x20\x74\x6f\x20\x48\x4f\x53\x54\x0a\x0a\x09\x2d\x46\x09" \ -"\x53\x65\x74\x20\x74\x68\x65\x20\x64\x6f\x6e\x27\x74\x20\x66\x72" \ -"\x61\x67\x6d\x65\x6e\x74\x20\x62\x69\x74\x0a\x09\x2d\x49\x09\x55" \ -"\x73\x65\x20\x49\x43\x4d\x50\x20\x45\x43\x48\x4f\x20\x69\x6e\x73" \ -"\x74\x65\x61\x64\x20\x6f\x66\x20\x55\x44\x50\x20\x64\x61\x74\x61" \ -"\x67\x72\x61\x6d\x73\x0a\x09\x2d\x6c\x09\x44\x69\x73\x70\x6c\x61" \ -"\x79\x20\x74\x68\x65\x20\x54\x54\x4c\x20\x76\x61\x6c\x75\x65\x20" \ -"\x6f\x66\x20\x74\x68\x65\x20\x72\x65\x74\x75\x72\x6e\x65\x64\x20" \ -"\x70\x61\x63\x6b\x65\x74\x0a\x09\x2d\x64\x09\x53\x65\x74\x20\x53" \ -"\x4f\x5f\x44\x45\x42\x55\x47\x20\x6f\x70\x74\x69\x6f\x6e\x73\x20" \ -"\x74\x6f\x20\x73\x6f\x63\x6b\x65\x74\x0a\x09\x2d\x6e\x09\x50\x72" \ -"\x69\x6e\x74\x20\x6e\x75\x6d\x65\x72\x69\x63\x20\x61\x64\x64\x72" \ -"\x65\x73\x73\x65\x73\x0a\x09\x2d\x72\x09\x42\x79\x70\x61\x73\x73" \ -"\x20\x72\x6f\x75\x74\x69\x6e\x67\x20\x74\x61\x62\x6c\x65\x73\x2c" \ -"\x20\x73\x65\x6e\x64\x20\x64\x69\x72\x65\x63\x74\x6c\x79\x20\x74" \ -"\x6f\x20\x48\x4f\x53\x54\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f" \ -"\x73\x65\x0a\x09\x2d\x6d\x09\x4d\x61\x78\x20\x74\x69\x6d\x65\x2d" \ -"\x74\x6f\x2d\x6c\x69\x76\x65\x20\x28\x6d\x61\x78\x20\x6e\x75\x6d" \ -"\x62\x65\x72\x20\x6f\x66\x20\x68\x6f\x70\x73\x29\x0a\x09\x2d\x70" \ -"\x09\x42\x61\x73\x65\x20\x55\x44\x50\x20\x70\x6f\x72\x74\x20\x6e" \ -"\x75\x6d\x62\x65\x72\x20\x75\x73\x65\x64\x20\x69\x6e\x20\x70\x72" \ -"\x6f\x62\x65\x73\x0a\x09\x09\x28\x64\x65\x66\x61\x75\x6c\x74\x20" \ -"\x33\x33\x34\x33\x34\x29\x0a\x09\x2d\x71\x09\x4e\x75\x6d\x62\x65" \ -"\x72\x20\x6f\x66\x20\x70\x72\x6f\x62\x65\x73\x20\x70\x65\x72\x20" \ -"\x54\x54\x4c\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x33\x29\x0a" \ -"\x09\x2d\x73\x09\x49\x50\x20\x61\x64\x64\x72\x65\x73\x73\x20\x74" \ -"\x6f\x20\x75\x73\x65\x20\x61\x73\x20\x74\x68\x65\x20\x73\x6f\x75" \ -"\x72\x63\x65\x20\x61\x64\x64\x72\x65\x73\x73\x0a\x09\x2d\x74\x09" \ -"\x54\x79\x70\x65\x2d\x6f\x66\x2d\x73\x65\x72\x76\x69\x63\x65\x20" \ -"\x69\x6e\x20\x70\x72\x6f\x62\x65\x20\x70\x61\x63\x6b\x65\x74\x73" \ -"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x30\x29\x0a\x09\x2d\x77" \ -"\x09\x54\x69\x6d\x65\x20\x69\x6e\x20\x73\x65\x63\x6f\x6e\x64\x73" \ -"\x20\x74\x6f\x20\x77\x61\x69\x74\x20\x66\x6f\x72\x20\x61\x20\x72" \ -"\x65\x73\x70\x6f\x6e\x73\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \ -"\x20\x33\x29\x0a\x09\x2d\x67\x09\x4c\x6f\x6f\x73\x65\x20\x73\x6f" \ -"\x75\x72\x63\x65\x20\x72\x6f\x75\x74\x65\x20\x67\x61\x74\x65\x77" \ -"\x61\x79\x20\x28\x38\x20\x6d\x61\x78\x29\x00\x0a\x0a\x52\x65\x74" \ -"\x75\x72\x6e\x20\x61\x6e\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65" \ -"\x20\x6f\x66\x20\x54\x52\x55\x45\x20\x28\x30\x29\x00\x5b\x77\x5d" \ -"\x20\x5b\x68\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x64\x69\x6d\x65" \ -"\x6e\x73\x69\x6f\x6e\x28\x73\x29\x20\x6f\x66\x20\x73\x74\x64\x69" \ -"\x6e\x27\x73\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x2c\x20\x6f\x6e" \ -"\x20\x65\x72\x72\x6f\x72\x20\x72\x65\x74\x75\x72\x6e\x20\x38\x30" \ -"\x78\x32\x35\x00\x5b\x2d\x63\x20\x4d\x41\x58\x5f\x4d\x4f\x55\x4e" \ -"\x54\x5f\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x69\x20\x44\x41\x59" \ -"\x53\x5d\x20\x5b\x2d\x43\x20\x4d\x4f\x55\x4e\x54\x5f\x43\x4f\x55" \ -"\x4e\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42" \ -"\x4c\x4f\x43\x4b\x44\x45\x56\x0a\x0a\x41\x64\x6a\x75\x73\x74\x20" \ -"\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6f\x70\x74\x69\x6f" \ -"\x6e\x73\x20\x6f\x6e\x20\x65\x78\x74\x5b\x32\x33\x5d\x20\x66\x69" \ -"\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x00\x5b\x4f\x50\x54\x49\x4f" \ -"\x4e\x53\x5d\x20\x46\x49\x4c\x45\x53\x59\x53\x54\x45\x4d\x7c\x44" \ -"\x49\x52\x45\x43\x54\x4f\x52\x59\x0a\x0a\x55\x6e\x6d\x6f\x75\x6e" \ -"\x74\x20\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d\x73\x0a\x0a" \ -"\x09\x2d\x61\x09\x55\x6e\x6d\x6f\x75\x6e\x74\x20\x61\x6c\x6c\x20" \ -"\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d\x73\x0a\x09\x2d\x72" \ -"\x09\x54\x72\x79\x20\x74\x6f\x20\x72\x65\x6d\x6f\x75\x6e\x74\x20" \ -"\x64\x65\x76\x69\x63\x65\x73\x20\x61\x73\x20\x72\x65\x61\x64\x2d" \ -"\x6f\x6e\x6c\x79\x20\x69\x66\x20\x6d\x6f\x75\x6e\x74\x20\x69\x73" \ -"\x20\x62\x75\x73\x79\x0a\x09\x2d\x6c\x09\x4c\x61\x7a\x79\x20\x75" \ -"\x6d\x6f\x75\x6e\x74\x20\x28\x64\x65\x74\x61\x63\x68\x20\x66\x69" \ -"\x6c\x65\x73\x79\x73\x74\x65\x6d\x29\x0a\x09\x2d\x66\x09\x46\x6f" \ -"\x72\x63\x65\x20\x75\x6d\x6f\x75\x6e\x74\x20\x28\x69\x2e\x65\x2e" \ -"\x2c\x20\x75\x6e\x72\x65\x61\x63\x68\x61\x62\x6c\x65\x20\x4e\x46" \ -"\x53\x20\x73\x65\x72\x76\x65\x72\x29\x0a\x09\x2d\x64\x09\x46\x72" \ -"\x65\x65\x20\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x20\x65" \ -"\x76\x65\x6e\x20\x69\x66\x20\x69\x74\x20\x68\x61\x73\x20\x62\x65" \ -"\x65\x6e\x20\x75\x73\x65\x64\x00\x5b\x2d\x61\x6d\x6e\x72\x73\x70" \ -"\x76\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x73\x79\x73\x74\x65\x6d" \ -"\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x0a\x09\x2d" \ -"\x61\x09\x50\x72\x69\x6e\x74\x20\x61\x6c\x6c\x0a\x09\x2d\x6d\x09" \ -"\x54\x68\x65\x20\x6d\x61\x63\x68\x69\x6e\x65\x20\x28\x68\x61\x72" \ -"\x64\x77\x61\x72\x65\x29\x20\x74\x79\x70\x65\x0a\x09\x2d\x6e\x09" \ -"\x48\x6f\x73\x74\x6e\x61\x6d\x65\x0a\x09\x2d\x72\x09\x4f\x53\x20" \ -"\x72\x65\x6c\x65\x61\x73\x65\x0a\x09\x2d\x73\x09\x4f\x53\x20\x6e" \ -"\x61\x6d\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d" \ -"\x70\x09\x50\x72\x6f\x63\x65\x73\x73\x6f\x72\x20\x74\x79\x70\x65" \ -"\x0a\x09\x2d\x76\x09\x4f\x53\x20\x76\x65\x72\x73\x69\x6f\x6e\x00" \ -"\x5b\x2d\x63\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a" \ -"\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x2e\x5a\x20\x66" \ -"\x69\x6c\x65\x5b\x73\x5d\x0a\x0a\x09\x2d\x63\x09\x57\x72\x69\x74" \ -"\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09" \ -"\x4f\x76\x65\x72\x77\x72\x69\x74\x65\x00\x5b\x2d\x66\x61\x5d\x5b" \ -"\x2d\x74\x20\x4e\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a" \ -"\x0a\x43\x6f\x6e\x76\x65\x72\x74\x20\x73\x70\x61\x63\x65\x73\x20" \ -"\x74\x6f\x20\x74\x61\x62\x73\x2c\x20\x77\x72\x69\x74\x69\x6e\x67" \ -"\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x61\x2c" \ -"\x2d\x2d\x61\x6c\x6c\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x61\x6c" \ -"\x6c\x20\x62\x6c\x61\x6e\x6b\x73\x0a\x09\x2d\x66\x2c\x2d\x2d\x66" \ -"\x69\x72\x73\x74\x2d\x6f\x6e\x6c\x79\x09\x43\x6f\x6e\x76\x65\x72" \ -"\x74\x20\x6f\x6e\x6c\x79\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x62" \ -"\x6c\x61\x6e\x6b\x73\x0a\x09\x2d\x74\x2c\x2d\x2d\x74\x61\x62\x73" \ -"\x3d\x4e\x09\x54\x61\x62\x73\x74\x6f\x70\x73\x20\x65\x76\x65\x72" \ -"\x79\x20\x4e\x20\x63\x68\x61\x72\x73\x00\x5b\x2d\x63\x64\x75\x5d" \ -"\x5b\x2d\x66\x2c\x73\x2c\x77\x20\x4e\x5d\x20\x5b\x49\x4e\x50\x55" \ -"\x54\x20\x5b\x4f\x55\x54\x50\x55\x54\x5d\x5d\x0a\x0a\x44\x69\x73" \ -"\x63\x61\x72\x64\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c" \ -"\x69\x6e\x65\x73\x0a\x0a\x09\x2d\x63\x09\x50\x72\x65\x66\x69\x78" \ -"\x20\x6c\x69\x6e\x65\x73\x20\x62\x79\x20\x74\x68\x65\x20\x6e\x75" \ -"\x6d\x62\x65\x72\x20\x6f\x66\x20\x6f\x63\x63\x75\x72\x72\x65\x6e" \ -"\x63\x65\x73\x0a\x09\x2d\x64\x09\x4f\x6e\x6c\x79\x20\x70\x72\x69" \ -"\x6e\x74\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c\x69\x6e" \ -"\x65\x73\x0a\x09\x2d\x75\x09\x4f\x6e\x6c\x79\x20\x70\x72\x69\x6e" \ -"\x74\x20\x75\x6e\x69\x71\x75\x65\x20\x6c\x69\x6e\x65\x73\x0a\x09" \ -"\x2d\x66\x20\x4e\x09\x53\x6b\x69\x70\x20\x66\x69\x72\x73\x74\x20" \ -"\x4e\x20\x66\x69\x65\x6c\x64\x73\x0a\x09\x2d\x73\x20\x4e\x09\x53" \ -"\x6b\x69\x70\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x63\x68\x61\x72" \ -"\x73\x20\x28\x61\x66\x74\x65\x72\x20\x61\x6e\x79\x20\x73\x6b\x69" \ -"\x70\x70\x65\x64\x20\x66\x69\x65\x6c\x64\x73\x29\x0a\x09\x2d\x77" \ -"\x20\x4e\x09\x43\x6f\x6d\x70\x61\x72\x65\x20\x4e\x20\x63\x68\x61" \ -"\x72\x61\x63\x74\x65\x72\x73\x20\x69\x6e\x20\x6c\x69\x6e\x65\x00" \ -"\x5b\x2d\x75\x64\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x43\x6f" \ -"\x6e\x76\x65\x72\x74\x20\x46\x49\x4c\x45\x20\x69\x6e\x2d\x70\x6c" \ -"\x61\x63\x65\x20\x66\x72\x6f\x6d\x20\x55\x6e\x69\x78\x20\x74\x6f" \ -"\x20\x44\x4f\x53\x20\x66\x6f\x72\x6d\x61\x74\x2e\x0a\x57\x68\x65" \ -"\x6e\x20\x6e\x6f\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x67\x69\x76" \ -"\x65\x6e\x2c\x20\x75\x73\x65\x20\x73\x74\x64\x69\x6e\x2f\x73\x74" \ -"\x64\x6f\x75\x74\x2e\x0a\x0a\x09\x2d\x75\x09\x64\x6f\x73\x32\x75" \ -"\x6e\x69\x78\x0a\x09\x2d\x64\x09\x75\x6e\x69\x78\x32\x64\x6f\x73" \ -"\x00\x5b\x2d\x63\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e" \ -"\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c" \ -"\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d" \ -"\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75" \ -"\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x00\x5b\x2d\x63\x66" \ -"\x76\x43\x46\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64" \ -"\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d" \ -"\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x46\x09\x44\x6f" \ -"\x6e\x27\x74\x20\x73\x74\x6f\x72\x65\x20\x6f\x72\x20\x76\x65\x72" \ -"\x69\x66\x79\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x00\x5b\x2d\x63" \ -"\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65" \ -"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x20\x28\x6f" \ -"\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72" \ -"\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d" \ -"\x66\x09\x46\x6f\x72\x63\x65\x00\x5b\x2d\x6c\x6e\x6f\x70\x71\x5d" \ -"\x20\x46\x49\x4c\x45\x5b\x2e\x7a\x69\x70\x5d\x20\x5b\x46\x49\x4c" \ -"\x45\x5d\x2e\x2e\x2e\x20\x5b\x2d\x78\x20\x46\x49\x4c\x45\x2e\x2e" \ -"\x2e\x5d\x20\x5b\x2d\x64\x20\x44\x49\x52\x5d\x0a\x0a\x45\x78\x74" \ -"\x72\x61\x63\x74\x20\x46\x49\x4c\x45\x73\x20\x66\x72\x6f\x6d\x20" \ -"\x5a\x49\x50\x20\x61\x72\x63\x68\x69\x76\x65\x0a\x0a\x09\x2d\x6c" \ -"\x09\x4c\x69\x73\x74\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x28" \ -"\x77\x69\x74\x68\x20\x2d\x71\x20\x66\x6f\x72\x20\x73\x68\x6f\x72" \ -"\x74\x20\x66\x6f\x72\x6d\x29\x0a\x09\x2d\x6e\x09\x4e\x65\x76\x65" \ -"\x72\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x65\x20\x66\x69\x6c\x65" \ -"\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x61\x73\x6b\x29" \ -"\x0a\x09\x2d\x6f\x09\x4f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09" \ -"\x2d\x70\x09\x50\x72\x69\x6e\x74\x20\x74\x6f\x20\x73\x74\x64\x6f" \ -"\x75\x74\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x78" \ -"\x20\x46\x49\x4c\x45\x09\x45\x78\x63\x6c\x75\x64\x65\x20\x46\x49" \ -"\x4c\x45\x73\x0a\x09\x2d\x64\x20\x44\x49\x52\x09\x45\x78\x74\x72" \ -"\x61\x63\x74\x20\x69\x6e\x74\x6f\x20\x44\x49\x52\x00\x0a\x0a\x44" \ -"\x69\x73\x70\x6c\x61\x79\x20\x74\x68\x65\x20\x74\x69\x6d\x65\x20" \ -"\x73\x69\x6e\x63\x65\x20\x74\x68\x65\x20\x6c\x61\x73\x74\x20\x62" \ -"\x6f\x6f\x74\x00\x4e\x0a\x0a\x50\x61\x75\x73\x65\x20\x66\x6f\x72" \ -"\x20\x4e\x20\x6d\x69\x63\x72\x6f\x73\x65\x63\x6f\x6e\x64\x73\x00" \ -"\x5b\x2d\x6f\x20\x4f\x55\x54\x46\x49\x4c\x45\x5d\x20\x5b\x49\x4e" \ -"\x46\x49\x4c\x45\x5d\x0a\x0a\x55\x75\x64\x65\x63\x6f\x64\x65\x20" \ -"\x61\x20\x66\x69\x6c\x65\x0a\x46\x69\x6e\x64\x73\x20\x4f\x55\x54" \ -"\x46\x49\x4c\x45\x20\x69\x6e\x20\x75\x75\x65\x6e\x63\x6f\x64\x65" \ -"\x64\x20\x73\x6f\x75\x72\x63\x65\x20\x75\x6e\x6c\x65\x73\x73\x20" \ -"\x2d\x6f\x20\x69\x73\x20\x67\x69\x76\x65\x6e\x00\x5b\x2d\x6d\x5d" \ -"\x20\x5b\x46\x49\x4c\x45\x5d\x20\x53\x54\x4f\x52\x45\x44\x5f\x46" \ -"\x49\x4c\x45\x4e\x41\x4d\x45\x0a\x0a\x55\x75\x65\x6e\x63\x6f\x64" \ -"\x65\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e" \ -"\x29\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x6d" \ -"\x09\x55\x73\x65\x20\x62\x61\x73\x65\x36\x34\x20\x65\x6e\x63\x6f" \ -"\x64\x69\x6e\x67\x20\x70\x65\x72\x20\x52\x46\x43\x31\x35\x32\x31" \ -"\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c\x45" \ -"\x5d\x2e\x2e\x2e\x0a\x0a\x45\x64\x69\x74\x20\x46\x49\x4c\x45\x0a" \ -"\x0a\x09\x2d\x63\x20\x43\x4d\x44\x09\x49\x6e\x69\x74\x69\x61\x6c" \ -"\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x74\x6f\x20\x72\x75\x6e\x20" \ -"\x28\x24\x45\x58\x49\x4e\x49\x54\x20\x61\x6c\x73\x6f\x20\x61\x76" \ -"\x61\x69\x6c\x61\x62\x6c\x65\x29\x0a\x09\x2d\x52\x09\x52\x65\x61" \ -"\x64\x2d\x6f\x6e\x6c\x79\x0a\x09\x2d\x48\x09\x4c\x69\x73\x74\x20" \ -"\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x20\x66\x65\x61\x74\x75\x72" \ -"\x65\x73\x00\x5b\x2d\x6e\x20\x53\x45\x43\x5d\x20\x5b\x2d\x74\x5d" \ -"\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20" \ -"\x50\x52\x4f\x47\x20\x70\x65\x72\x69\x6f\x64\x69\x63\x61\x6c\x6c" \ -"\x79\x0a\x0a\x09\x2d\x6e\x09\x4c\x6f\x6f\x70\x20\x70\x65\x72\x69" \ -"\x6f\x64\x20\x69\x6e\x20\x73\x65\x63\x6f\x6e\x64\x73\x20\x28\x64" \ -"\x65\x66\x61\x75\x6c\x74\x20\x32\x29\x0a\x09\x2d\x74\x09\x44\x6f" \ -"\x6e\x27\x74\x20\x70\x72\x69\x6e\x74\x20\x68\x65\x61\x64\x65\x72" \ -"\x00\x5b\x2d\x63\x6d\x6c\x77\x4c\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \ -"\x2e\x2e\x2e\x0a\x0a\x43\x6f\x75\x6e\x74\x20\x6c\x69\x6e\x65\x73" \ -"\x2c\x20\x77\x6f\x72\x64\x73\x2c\x20\x61\x6e\x64\x20\x62\x79\x74" \ -"\x65\x73\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45" \ -"\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63" \ -"\x09\x43\x6f\x75\x6e\x74\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x6d" \ -"\x09\x43\x6f\x75\x6e\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72" \ -"\x73\x0a\x09\x2d\x6c\x09\x43\x6f\x75\x6e\x74\x20\x6e\x65\x77\x6c" \ -"\x69\x6e\x65\x73\x0a\x09\x2d\x77\x09\x43\x6f\x75\x6e\x74\x20\x77" \ -"\x6f\x72\x64\x73\x0a\x09\x2d\x4c\x09\x50\x72\x69\x6e\x74\x20\x6c" \ -"\x6f\x6e\x67\x65\x73\x74\x20\x6c\x69\x6e\x65\x20\x6c\x65\x6e\x67" \ -"\x74\x68\x00\x5b\x2d\x63\x7c\x2d\x2d\x63\x6f\x6e\x74\x69\x6e\x75" \ -"\x65\x5d\x20\x5b\x2d\x73\x7c\x2d\x2d\x73\x70\x69\x64\x65\x72\x5d" \ -"\x20\x5b\x2d\x71\x7c\x2d\x2d\x71\x75\x69\x65\x74\x5d\x20\x5b\x2d" \ -"\x4f\x7c\x2d\x2d\x6f\x75\x74\x70\x75\x74\x2d\x64\x6f\x63\x75\x6d" \ -"\x65\x6e\x74\x20\x46\x49\x4c\x45\x5d\x0a\x09\x5b\x2d\x2d\x68\x65" \ -"\x61\x64\x65\x72\x20\x27\x68\x65\x61\x64\x65\x72\x3a\x20\x76\x61" \ -"\x6c\x75\x65\x27\x5d\x20\x5b\x2d\x59\x7c\x2d\x2d\x70\x72\x6f\x78" \ -"\x79\x20\x6f\x6e\x2f\x6f\x66\x66\x5d\x20\x5b\x2d\x50\x20\x44\x49" \ -"\x52\x5d\x0a\x09\x5b\x2d\x55\x7c\x2d\x2d\x75\x73\x65\x72\x2d\x61" \ -"\x67\x65\x6e\x74\x20\x41\x47\x45\x4e\x54\x5d\x20\x5b\x2d\x54\x20" \ -"\x53\x45\x43\x5d\x20\x55\x52\x4c\x2e\x2e\x2e\x0a\x0a\x52\x65\x74" \ -"\x72\x69\x65\x76\x65\x20\x66\x69\x6c\x65\x73\x20\x76\x69\x61\x20" \ -"\x48\x54\x54\x50\x20\x6f\x72\x20\x46\x54\x50\x0a\x0a\x09\x2d\x73" \ -"\x09\x53\x70\x69\x64\x65\x72\x20\x6d\x6f\x64\x65\x20\x2d\x20\x6f" \ -"\x6e\x6c\x79\x20\x63\x68\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x65" \ -"\x78\x69\x73\x74\x65\x6e\x63\x65\x0a\x09\x2d\x63\x09\x43\x6f\x6e" \ -"\x74\x69\x6e\x75\x65\x20\x72\x65\x74\x72\x69\x65\x76\x61\x6c\x20" \ -"\x6f\x66\x20\x61\x62\x6f\x72\x74\x65\x64\x20\x74\x72\x61\x6e\x73" \ -"\x66\x65\x72\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d" \ -"\x50\x20\x44\x49\x52\x09\x53\x61\x76\x65\x20\x74\x6f\x20\x44\x49" \ -"\x52\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x2e\x29\x0a\x09\x2d" \ -"\x54\x20\x53\x45\x43\x09\x4e\x65\x74\x77\x6f\x72\x6b\x20\x72\x65" \ -"\x61\x64\x20\x74\x69\x6d\x65\x6f\x75\x74\x20\x69\x73\x20\x53\x45" \ -"\x43\x20\x73\x65\x63\x6f\x6e\x64\x73\x0a\x09\x2d\x4f\x20\x46\x49" \ -"\x4c\x45\x09\x53\x61\x76\x65\x20\x74\x6f\x20\x46\x49\x4c\x45\x20" \ -"\x28\x27\x2d\x27\x20\x66\x6f\x72\x20\x73\x74\x64\x6f\x75\x74\x29" \ -"\x0a\x09\x2d\x55\x20\x53\x54\x52\x09\x55\x73\x65\x20\x53\x54\x52" \ -"\x20\x66\x6f\x72\x20\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x20" \ -"\x68\x65\x61\x64\x65\x72\x0a\x09\x2d\x59\x09\x55\x73\x65\x20\x70" \ -"\x72\x6f\x78\x79\x20\x28\x27\x6f\x6e\x27\x20\x6f\x72\x20\x27\x6f" \ -"\x66\x66\x27\x29\x00\x5b\x43\x4f\x4d\x4d\x41\x4e\x44\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x4c\x6f\x63\x61\x74\x65\x20\x61\x20\x43\x4f\x4d\x4d" \ -"\x41\x4e\x44\x00\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20" \ -"\x75\x73\x65\x72\x20\x6e\x61\x6d\x65\x20\x61\x73\x73\x6f\x63\x69" \ -"\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x63\x75" \ -"\x72\x72\x65\x6e\x74\x20\x65\x66\x66\x65\x63\x74\x69\x76\x65\x20" \ -"\x75\x73\x65\x72\x20\x69\x64\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53" \ -"\x5d\x20\x5b\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x5d\x0a\x0a\x52" \ -"\x75\x6e\x20\x50\x52\x4f\x47\x20\x6f\x6e\x20\x65\x76\x65\x72\x79" \ -"\x20\x69\x74\x65\x6d\x20\x67\x69\x76\x65\x6e\x20\x62\x79\x20\x73" \ -"\x74\x64\x69\x6e\x0a\x0a\x09\x2d\x70\x09\x41\x73\x6b\x20\x75\x73" \ -"\x65\x72\x20\x77\x68\x65\x74\x68\x65\x72\x20\x74\x6f\x20\x72\x75" \ -"\x6e\x20\x65\x61\x63\x68\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x0a\x09" \ -"\x2d\x72\x09\x44\x6f\x6e\x27\x74\x20\x72\x75\x6e\x20\x63\x6f\x6d" \ -"\x6d\x61\x6e\x64\x20\x69\x66\x20\x69\x6e\x70\x75\x74\x20\x69\x73" \ -"\x20\x65\x6d\x70\x74\x79\x0a\x09\x2d\x30\x09\x49\x6e\x70\x75\x74" \ -"\x20\x69\x73\x20\x73\x65\x70\x61\x72\x61\x74\x65\x64\x20\x62\x79" \ -"\x20\x4e\x55\x4c\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x0a" \ -"\x09\x2d\x74\x09\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x63\x6f" \ -"\x6d\x6d\x61\x6e\x64\x20\x6f\x6e\x20\x73\x74\x64\x65\x72\x72\x20" \ -"\x62\x65\x66\x6f\x72\x65\x20\x65\x78\x65\x63\x75\x74\x69\x6f\x6e" \ -"\x0a\x09\x2d\x65\x5b\x53\x54\x52\x5d\x09\x53\x54\x52\x20\x73\x74" \ -"\x6f\x70\x73\x20\x69\x6e\x70\x75\x74\x20\x70\x72\x6f\x63\x65\x73" \ -"\x73\x69\x6e\x67\x0a\x09\x2d\x6e\x20\x4e\x09\x50\x61\x73\x73\x20" \ -"\x6e\x6f\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x4e\x20\x61" \ -"\x72\x67\x73\x20\x74\x6f\x20\x50\x52\x4f\x47\x0a\x09\x2d\x73\x20" \ -"\x4e\x09\x50\x61\x73\x73\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c" \ -"\x69\x6e\x65\x20\x6f\x66\x20\x6e\x6f\x20\x6d\x6f\x72\x65\x20\x74" \ -"\x68\x61\x6e\x20\x4e\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x78\x09" \ -"\x45\x78\x69\x74\x20\x69\x66\x20\x73\x69\x7a\x65\x20\x69\x73\x20" \ -"\x65\x78\x63\x65\x65\x64\x65\x64\x00\x2d\x64\x20\x5b\x2d\x63\x66" \ -"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63" \ -"\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x20\x28\x6f\x72" \ -"\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x64\x09\x44\x65\x63" \ -"\x6f\x6d\x70\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74" \ -"\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09" \ -"\x46\x6f\x72\x63\x65\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65\x63\x6f" \ -"\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74" \ -"\x00\x5b\x53\x54\x52\x49\x4e\x47\x5d\x0a\x0a\x52\x65\x70\x65\x61" \ -"\x74\x65\x64\x6c\x79\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x20\x6c" \ -"\x69\x6e\x65\x20\x77\x69\x74\x68\x20\x53\x54\x52\x49\x4e\x47\x2c" \ -"\x20\x6f\x72\x20\x27\x79\x27\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65" \ -"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f" \ -"\x75\x74\x00" \ +"\105\130\120\122\105\123\123\111\117\116\040\135\012\012\103\150" \ +"\145\143\153\040\146\151\154\145\040\164\171\160\145\163\054\040" \ +"\143\157\155\160\141\162\145\040\166\141\154\165\145\163\040\145" \ +"\164\143\056\040\122\145\164\165\162\156\040\141\040\060\057\061" \ +"\040\145\170\151\164\040\143\157\144\145\012\144\145\160\145\156" \ +"\144\151\156\147\040\157\156\040\154\157\147\151\143\141\154\040" \ +"\166\141\154\165\145\040\157\146\040\105\130\120\122\105\123\123" \ +"\111\117\116\000\105\130\120\122\105\123\123\111\117\116\040\135" \ +"\012\012\103\150\145\143\153\040\146\151\154\145\040\164\171\160" \ +"\145\163\054\040\143\157\155\160\141\162\145\040\166\141\154\165" \ +"\145\163\040\145\164\143\056\040\122\145\164\165\162\156\040\141" \ +"\040\060\057\061\040\145\170\151\164\040\143\157\144\145\012\144" \ +"\145\160\145\156\144\151\156\147\040\157\156\040\154\157\147\151" \ +"\143\141\154\040\166\141\154\165\145\040\157\146\040\105\130\120" \ +"\122\105\123\123\111\117\116\000\133\055\161\135\040\133\055\157" \ +"\040\117\106\106\135\040\133\055\146\040\106\122\105\121\135\040" \ +"\133\055\160\040\124\103\117\116\123\124\135\040\133\055\164\040" \ +"\124\111\103\113\135\012\012\122\145\141\144\040\141\156\144\040" \ +"\157\160\164\151\157\156\141\154\154\171\040\163\145\164\040\163" \ +"\171\163\164\145\155\040\164\151\155\145\142\141\163\145\040\160" \ +"\141\162\141\155\145\164\145\162\163\056\040\123\145\145\040\141" \ +"\144\152\164\151\155\145\170\050\062\051\012\012\011\055\161\011" \ +"\121\165\151\145\164\012\011\055\157\040\117\106\106\011\124\151" \ +"\155\145\040\157\146\146\163\145\164\054\040\155\151\143\162\157" \ +"\163\145\143\157\156\144\163\012\011\055\146\040\106\122\105\121" \ +"\011\106\162\145\161\165\145\156\143\171\040\141\144\152\165\163" \ +"\164\054\040\151\156\164\145\147\145\162\040\153\145\162\156\145" \ +"\154\040\165\156\151\164\163\040\050\066\065\065\063\066\040\151" \ +"\163\040\061\160\160\155\051\012\011\011\050\160\157\163\151\164" \ +"\151\166\145\040\166\141\154\165\145\163\040\155\141\153\145\040" \ +"\143\154\157\143\153\040\162\165\156\040\146\141\163\164\145\162" \ +"\051\012\011\055\164\040\124\111\103\113\011\115\151\143\162\157" \ +"\163\145\143\157\156\144\163\040\160\145\162\040\164\151\143\153" \ +"\054\040\165\163\165\141\154\154\171\040\061\060\060\060\060\012" \ +"\011\055\160\040\124\103\117\116\123\124\000\012\133\055\166\156" \ +"\135\011\133\055\110\040\110\127\124\131\120\105\135\040\133\055" \ +"\151\040\111\106\135\040\055\141\040\133\110\117\123\124\116\101" \ +"\115\105\135\012\133\055\166\135\011\011\040\040\040\040\133\055" \ +"\151\040\111\106\135\040\055\144\040\110\117\123\124\116\101\115" \ +"\105\040\133\160\165\142\135\012\133\055\166\135\011\133\055\110" \ +"\040\110\127\124\131\120\105\135\040\133\055\151\040\111\106\135" \ +"\040\055\163\040\110\117\123\124\116\101\115\105\040\110\127\101" \ +"\104\104\122\040\133\164\145\155\160\135\012\133\055\166\135\011" \ +"\133\055\110\040\110\127\124\131\120\105\135\040\133\055\151\040" \ +"\111\106\135\040\055\163\040\110\117\123\124\116\101\115\105\040" \ +"\110\127\101\104\104\122\040\133\156\145\164\155\141\163\153\040" \ +"\115\101\123\113\135\040\160\165\142\012\133\055\166\135\011\133" \ +"\055\110\040\110\127\124\131\120\105\135\040\133\055\151\040\111" \ +"\106\135\040\055\104\163\040\110\117\123\124\116\101\115\105\040" \ +"\111\106\101\103\105\040\133\156\145\164\155\141\163\153\040\115" \ +"\101\123\113\135\040\160\165\142\012\012\115\141\156\151\160\165" \ +"\154\141\164\145\040\101\122\120\040\143\141\143\150\145\012\012" \ +"\011\055\141\011\011\104\151\163\160\154\141\171\040\050\141\154" \ +"\154\051\040\150\157\163\164\163\012\011\055\144\011\011\104\145" \ +"\154\145\164\145\040\101\122\120\040\145\156\164\162\171\012\011" \ +"\055\163\011\011\123\145\164\040\156\145\167\040\145\156\164\162" \ +"\171\012\011\055\166\011\011\126\145\162\142\157\163\145\012\011" \ +"\055\156\011\011\104\157\156\047\164\040\162\145\163\157\154\166" \ +"\145\040\156\141\155\145\163\012\011\055\151\040\111\106\011\011" \ +"\116\145\164\167\157\162\153\040\151\156\164\145\162\146\141\143" \ +"\145\012\011\055\104\011\011\122\145\141\144\040\110\127\101\104" \ +"\104\122\040\146\162\157\155\040\111\106\101\103\105\012\011\055" \ +"\101\054\055\160\040\101\106\011\120\162\157\164\157\143\157\154" \ +"\040\146\141\155\151\154\171\012\011\055\110\040\110\127\124\131" \ +"\120\105\011\110\141\162\144\167\141\162\145\040\141\144\144\162" \ +"\145\163\163\040\164\171\160\145\000\133\055\057\053\117\120\124" \ +"\111\117\116\123\135\040\133\055\057\053\157\040\117\120\124\135" \ +"\056\056\056\040\133\055\143\040\047\123\103\122\111\120\124\047" \ +"\040\133\101\122\107\060\040\133\101\122\107\123\135\135\040\057" \ +"\040\106\111\114\105\040\133\101\122\107\123\135\135\012\012\125" \ +"\156\151\170\040\163\150\145\154\154\040\151\156\164\145\162\160" \ +"\162\145\164\145\162\000\133\117\120\124\111\117\116\123\135\040" \ +"\133\101\127\113\137\120\122\117\107\122\101\115\135\040\133\106" \ +"\111\114\105\135\056\056\056\012\012\011\055\166\040\126\101\122" \ +"\075\126\101\114\011\123\145\164\040\166\141\162\151\141\142\154" \ +"\145\012\011\055\106\040\123\105\120\011\011\125\163\145\040\123" \ +"\105\120\040\141\163\040\146\151\145\154\144\040\163\145\160\141" \ +"\162\141\164\157\162\012\011\055\146\040\106\111\114\105\011\011" \ +"\122\145\141\144\040\160\162\157\147\162\141\155\040\146\162\157" \ +"\155\040\106\111\114\105\012\011\055\145\040\101\127\113\137\120" \ +"\122\117\107\122\101\115\000\133\055\144\135\040\133\106\111\114" \ +"\105\135\012\012\102\141\163\145\066\064\040\145\156\143\157\144" \ +"\145\040\157\162\040\144\145\143\157\144\145\040\106\111\114\105" \ +"\040\164\157\040\163\164\141\156\144\141\162\144\040\157\165\164" \ +"\160\165\164\012\011\055\144\011\104\145\143\157\144\145\040\144" \ +"\141\164\141\000\106\111\114\105\040\133\123\125\106\106\111\130" \ +"\135\012\012\123\164\162\151\160\040\144\151\162\145\143\164\157" \ +"\162\171\040\160\141\164\150\040\141\156\144\040\056\123\125\106" \ +"\106\111\130\040\146\162\157\155\040\106\111\114\105\012\000\012" \ +"\012\120\162\151\156\164\040\164\150\145\040\143\157\156\146\151" \ +"\147\040\146\151\154\145\040\165\163\145\144\040\142\171\040\142" \ +"\165\163\171\142\157\170\040\142\165\151\154\144\000\133\102\114" \ +"\117\103\113\104\105\126\135\056\056\056\012\012\120\162\151\156" \ +"\164\040\125\125\111\104\163\040\157\146\040\141\154\154\040\146" \ +"\151\154\145\163\171\163\164\145\155\163\000\117\120\124\111\117" \ +"\116\040\102\114\117\103\113\104\105\126\012\012\011\055\055\163" \ +"\145\164\162\157\011\011\123\145\164\040\162\157\012\011\055\055" \ +"\163\145\164\162\167\011\011\123\145\164\040\162\167\012\011\055" \ +"\055\147\145\164\162\157\011\011\107\145\164\040\162\157\012\011" \ +"\055\055\147\145\164\163\163\011\011\107\145\164\040\163\145\143" \ +"\164\157\162\040\163\151\172\145\012\011\055\055\147\145\164\142" \ +"\163\172\011\107\145\164\040\142\154\157\143\153\040\163\151\172" \ +"\145\012\011\055\055\163\145\164\142\163\172\040\102\131\124\105" \ +"\123\011\123\145\164\040\142\154\157\143\153\040\163\151\172\145" \ +"\012\011\055\055\147\145\164\163\172\011\011\107\145\164\040\144" \ +"\145\166\151\143\145\040\163\151\172\145\040\151\156\040\065\061" \ +"\062\055\142\171\164\145\040\163\145\143\164\157\162\163\012\011" \ +"\055\055\147\145\164\163\151\172\145\066\064\011\107\145\164\040" \ +"\144\145\166\151\143\145\040\163\151\172\145\040\151\156\040\142" \ +"\171\164\145\163\012\011\055\055\146\154\165\163\150\142\165\146" \ +"\163\011\106\154\165\163\150\040\142\165\146\146\145\162\163\012" \ +"\011\055\055\162\145\162\145\141\144\160\164\011\122\145\162\145" \ +"\141\144\040\160\141\162\164\151\164\151\157\156\040\164\141\142" \ +"\154\145\000\103\117\115\115\101\116\104\040\133\102\122\111\104" \ +"\107\105\040\133\111\116\124\105\122\106\101\103\105\135\135\012" \ +"\012\115\141\156\141\147\145\040\145\164\150\145\162\156\145\164" \ +"\040\142\162\151\144\147\145\163\012\012\103\157\155\155\141\156" \ +"\144\163\072\012\011\163\150\157\167\011\011\011\123\150\157\167" \ +"\040\141\040\154\151\163\164\040\157\146\040\142\162\151\144\147" \ +"\145\163\012\011\141\144\144\142\162\040\102\122\111\104\107\105" \ +"\011\011\103\162\145\141\164\145\040\102\122\111\104\107\105\012" \ +"\011\144\145\154\142\162\040\102\122\111\104\107\105\011\011\104" \ +"\145\154\145\164\145\040\102\122\111\104\107\105\012\011\141\144" \ +"\144\151\146\040\102\122\111\104\107\105\040\111\106\101\103\105" \ +"\011\101\144\144\040\111\106\101\103\105\040\164\157\040\102\122" \ +"\111\104\107\105\012\011\144\145\154\151\146\040\102\122\111\104" \ +"\107\105\040\111\106\101\103\105\011\104\145\154\145\164\145\040" \ +"\111\106\101\103\105\040\146\162\157\155\040\102\122\111\104\107" \ +"\105\012\011\163\145\164\141\147\145\151\156\147\040\102\122\111" \ +"\104\107\105\040\124\111\115\105\011\011\123\145\164\040\141\147" \ +"\145\151\156\147\040\164\151\155\145\012\011\163\145\164\146\144" \ +"\040\102\122\111\104\107\105\040\124\111\115\105\011\011\123\145" \ +"\164\040\142\162\151\144\147\145\040\146\157\162\167\141\162\144" \ +"\040\144\145\154\141\171\012\011\163\145\164\150\145\154\154\157" \ +"\040\102\122\111\104\107\105\040\124\111\115\105\011\011\123\145" \ +"\164\040\150\145\154\154\157\040\164\151\155\145\012\011\163\145" \ +"\164\155\141\170\141\147\145\040\102\122\111\104\107\105\040\124" \ +"\111\115\105\011\011\123\145\164\040\155\141\170\040\155\145\163" \ +"\163\141\147\145\040\141\147\145\012\011\163\145\164\160\141\164" \ +"\150\143\157\163\164\040\102\122\111\104\107\105\040\103\117\123" \ +"\124\011\011\123\145\164\040\160\141\164\150\040\143\157\163\164" \ +"\012\011\163\145\164\160\157\162\164\160\162\151\157\040\102\122" \ +"\111\104\107\105\040\120\122\111\117\011\011\123\145\164\040\160" \ +"\157\162\164\040\160\162\151\157\162\151\164\171\012\011\163\145" \ +"\164\142\162\151\144\147\145\160\162\151\157\040\102\122\111\104" \ +"\107\105\040\120\122\111\117\011\123\145\164\040\142\162\151\144" \ +"\147\145\040\160\162\151\157\162\151\164\171\012\011\163\164\160" \ +"\040\102\122\111\104\107\105\040\133\061\057\171\145\163\057\157" \ +"\156\174\060\057\156\157\057\157\146\146\135\011\123\124\120\040" \ +"\157\156\057\157\146\146\000\133\055\143\146\135\040\133\106\111" \ +"\114\105\135\056\056\056\012\012\104\145\143\157\155\160\162\145" \ +"\163\163\040\106\111\114\105\163\040\050\157\162\040\163\164\144" \ +"\151\156\051\012\012\011\055\143\011\127\162\151\164\145\040\164" \ +"\157\040\163\164\144\157\165\164\012\011\055\146\011\106\157\162" \ +"\143\145\000\133\106\111\114\105\135\056\056\056\012\012\104\145" \ +"\143\157\155\160\162\145\163\163\040\164\157\040\163\164\144\157" \ +"\165\164\000\133\117\120\124\111\117\116\123\135\040\133\106\111" \ +"\114\105\135\056\056\056\012\012\103\157\155\160\162\145\163\163" \ +"\040\106\111\114\105\163\040\050\157\162\040\163\164\144\151\156" \ +"\051\040\167\151\164\150\040\142\172\151\160\062\040\141\154\147" \ +"\157\162\151\164\150\155\012\012\011\055\061\056\056\071\011\103" \ +"\157\155\160\162\145\163\163\151\157\156\040\154\145\166\145\154" \ +"\012\011\055\144\011\104\145\143\157\155\160\162\145\163\163\012" \ +"\011\055\143\011\127\162\151\164\145\040\164\157\040\163\164\144" \ +"\157\165\164\012\011\055\146\011\106\157\162\143\145\000\133\055" \ +"\152\171\135\040\133\133\115\117\116\124\110\135\040\131\105\101" \ +"\122\135\012\012\104\151\163\160\154\141\171\040\141\040\143\141" \ +"\154\145\156\144\141\162\012\012\011\055\152\011\125\163\145\040" \ +"\152\165\154\151\141\156\040\144\141\164\145\163\012\011\055\171" \ +"\011\104\151\163\160\154\141\171\040\164\150\145\040\145\156\164" \ +"\151\162\145\040\171\145\141\162\000\133\106\111\114\105\135\056" \ +"\056\056\012\012\103\157\156\143\141\164\145\156\141\164\145\040" \ +"\106\111\114\105\163\040\141\156\144\040\160\162\151\156\164\040" \ +"\164\150\145\155\040\164\157\040\163\164\144\157\165\164\000\133" \ +"\055\145\164\166\135\040\133\106\111\114\105\135\056\056\056\012" \ +"\012\104\151\163\160\154\141\171\040\156\157\156\160\162\151\156" \ +"\164\151\156\147\040\143\150\141\162\141\143\164\145\162\163\040" \ +"\141\163\040\136\170\040\157\162\040\115\055\170\012\012\011\055" \ +"\145\011\105\156\144\040\145\141\143\150\040\154\151\156\145\040" \ +"\167\151\164\150\040\044\012\011\055\164\011\123\150\157\167\040" \ +"\164\141\142\163\040\141\163\040\136\111\012\011\055\166\011\104" \ +"\157\156\047\164\040\165\163\145\040\136\170\040\157\162\040\115" \ +"\055\170\040\145\163\143\141\160\145\163\000\133\055\122\135\040" \ +"\133\055\053\075\101\141\143\104\144\151\152\163\123\164\124\165" \ +"\135\040\133\055\166\040\126\105\122\123\111\117\116\135\040\133" \ +"\106\111\114\105\135\056\056\056\012\012\103\150\141\156\147\145" \ +"\040\146\151\154\145\040\141\164\164\162\151\142\165\164\145\163" \ +"\040\157\156\040\141\156\040\145\170\164\062\040\146\163\012\012" \ +"\115\157\144\151\146\151\145\162\163\072\012\011\055\011\122\145" \ +"\155\157\166\145\040\141\164\164\162\151\142\165\164\145\163\012" \ +"\011\053\011\101\144\144\040\141\164\164\162\151\142\165\164\145" \ +"\163\012\011\075\011\123\145\164\040\141\164\164\162\151\142\165" \ +"\164\145\163\012\101\164\164\162\151\142\165\164\145\163\072\012" \ +"\011\101\011\104\157\156\047\164\040\164\162\141\143\153\040\141" \ +"\164\151\155\145\012\011\141\011\101\160\160\145\156\144\040\155" \ +"\157\144\145\040\157\156\154\171\012\011\143\011\105\156\141\142" \ +"\154\145\040\143\157\155\160\162\145\163\163\012\011\104\011\127" \ +"\162\151\164\145\040\144\151\162\040\143\157\156\164\145\156\164" \ +"\163\040\163\171\156\143\150\162\157\156\157\165\163\154\171\012" \ +"\011\144\011\104\157\156\047\164\040\142\141\143\153\165\160\040" \ +"\167\151\164\150\040\144\165\155\160\012\011\151\011\103\141\156" \ +"\156\157\164\040\142\145\040\155\157\144\151\146\151\145\144\040" \ +"\050\151\155\155\165\164\141\142\154\145\051\012\011\152\011\127" \ +"\162\151\164\145\040\141\154\154\040\144\141\164\141\040\164\157" \ +"\040\152\157\165\162\156\141\154\040\146\151\162\163\164\012\011" \ +"\163\011\132\145\162\157\040\144\151\163\153\040\163\164\157\162" \ +"\141\147\145\040\167\150\145\156\040\144\145\154\145\164\145\144" \ +"\012\011\123\011\127\162\151\164\145\040\146\151\154\145\040\143" \ +"\157\156\164\145\156\164\163\040\163\171\156\143\150\162\157\156" \ +"\157\165\163\154\171\012\011\164\011\104\151\163\141\142\154\145" \ +"\040\164\141\151\154\055\155\145\162\147\151\156\147\040\157\146" \ +"\040\160\141\162\164\151\141\154\040\142\154\157\143\153\163\040" \ +"\167\151\164\150\040\157\164\150\145\162\040\146\151\154\145\163" \ +"\012\011\165\011\101\154\154\157\167\040\146\151\154\145\040\164" \ +"\157\040\142\145\040\165\156\144\145\154\145\164\145\144\012\011" \ +"\055\122\011\122\145\143\165\162\163\145\012\011\055\166\011\123" \ +"\145\164\040\164\150\145\040\146\151\154\145\047\163\040\166\145" \ +"\162\163\151\157\156\057\147\145\156\145\162\141\164\151\157\156" \ +"\040\156\165\155\142\145\162\000\133\055\122\150\114\110\120\135" \ +"\056\056\056\040\107\122\117\125\120\040\106\111\114\105\056\056" \ +"\056\012\012\103\150\141\156\147\145\040\164\150\145\040\147\162" \ +"\157\165\160\040\155\145\155\142\145\162\163\150\151\160\040\157" \ +"\146\040\145\141\143\150\040\106\111\114\105\040\164\157\040\107" \ +"\122\117\125\120\012\012\011\055\122\011\122\145\143\165\162\163" \ +"\145\012\011\055\150\011\101\146\146\145\143\164\040\163\171\155" \ +"\154\151\156\153\163\040\151\156\163\164\145\141\144\040\157\146" \ +"\040\163\171\155\154\151\156\153\040\164\141\162\147\145\164\163" \ +"\012\011\055\114\011\124\162\141\166\145\162\163\145\040\141\154" \ +"\154\040\163\171\155\154\151\156\153\163\040\164\157\040\144\151" \ +"\162\145\143\164\157\162\151\145\163\012\011\055\110\011\124\162" \ +"\141\166\145\162\163\145\040\163\171\155\154\151\156\153\163\040" \ +"\157\156\040\143\157\155\155\141\156\144\040\154\151\156\145\040" \ +"\157\156\154\171\012\011\055\120\011\104\157\156\047\164\040\164" \ +"\162\141\166\145\162\163\145\040\163\171\155\154\151\156\153\163" \ +"\040\050\144\145\146\141\165\154\164\051\000\133\055\122\135\040" \ +"\115\117\104\105\133\054\115\117\104\105\135\056\056\056\040\106" \ +"\111\114\105\056\056\056\012\012\105\141\143\150\040\115\117\104" \ +"\105\040\151\163\040\157\156\145\040\157\162\040\155\157\162\145" \ +"\040\157\146\040\164\150\145\040\154\145\164\164\145\162\163\040" \ +"\165\147\157\141\054\040\157\156\145\040\157\146\040\164\150\145" \ +"\012\163\171\155\142\157\154\163\040\053\055\075\040\141\156\144" \ +"\040\157\156\145\040\157\162\040\155\157\162\145\040\157\146\040" \ +"\164\150\145\040\154\145\164\164\145\162\163\040\162\167\170\163" \ +"\164\012\012\011\055\122\011\122\145\143\165\162\163\145\000\133" \ +"\055\122\150\114\110\120\135\056\056\056\040\117\127\116\105\122" \ +"\133\074\056\174\072\076\133\107\122\117\125\120\135\135\040\106" \ +"\111\114\105\056\056\056\012\012\103\150\141\156\147\145\040\164" \ +"\150\145\040\157\167\156\145\162\040\141\156\144\057\157\162\040" \ +"\147\162\157\165\160\040\157\146\040\145\141\143\150\040\106\111" \ +"\114\105\040\164\157\040\117\127\116\105\122\040\141\156\144\057" \ +"\157\162\040\107\122\117\125\120\012\012\011\055\122\011\122\145" \ +"\143\165\162\163\145\012\011\055\150\011\101\146\146\145\143\164" \ +"\040\163\171\155\154\151\156\153\163\040\151\156\163\164\145\141" \ +"\144\040\157\146\040\163\171\155\154\151\156\153\040\164\141\162" \ +"\147\145\164\163\012\011\055\114\011\124\162\141\166\145\162\163" \ +"\145\040\141\154\154\040\163\171\155\154\151\156\153\163\040\164" \ +"\157\040\144\151\162\145\143\164\157\162\151\145\163\012\011\055" \ +"\110\011\124\162\141\166\145\162\163\145\040\163\171\155\154\151" \ +"\156\153\163\040\157\156\040\143\157\155\155\141\156\144\040\154" \ +"\151\156\145\040\157\156\154\171\012\011\055\120\011\104\157\156" \ +"\047\164\040\164\162\141\166\145\162\163\145\040\163\171\155\154" \ +"\151\156\153\163\040\050\144\145\146\141\165\154\164\051\000\116" \ +"\105\127\122\117\117\124\040\133\120\122\117\107\040\101\122\107" \ +"\123\135\012\012\122\165\156\040\120\122\117\107\040\167\151\164" \ +"\150\040\162\157\157\164\040\144\151\162\145\143\164\157\162\171" \ +"\040\163\145\164\040\164\157\040\116\105\127\122\117\117\124\000" \ +"\012\012\103\154\145\141\162\040\163\143\162\145\145\156\000\133" \ +"\055\154\135\040\133\055\163\135\040\106\111\114\105\061\040\133" \ +"\106\111\114\105\062\135\012\012\103\157\155\160\141\162\145\040" \ +"\106\111\114\105\061\040\167\151\164\150\040\106\111\114\105\062" \ +"\040\050\157\162\040\163\164\144\151\156\051\012\012\011\055\154" \ +"\011\127\162\151\164\145\040\164\150\145\040\142\171\164\145\040" \ +"\156\165\155\142\145\162\163\040\050\144\145\143\151\155\141\154" \ +"\051\040\141\156\144\040\166\141\154\165\145\163\040\050\157\143" \ +"\164\141\154\051\012\011\011\146\157\162\040\141\154\154\040\144" \ +"\151\146\146\145\162\151\156\147\040\142\171\164\145\163\012\011" \ +"\055\163\011\121\165\151\145\164\000\133\055\061\062\063\135\040" \ +"\106\111\114\105\061\040\106\111\114\105\062\012\012\103\157\155" \ +"\160\141\162\145\040\106\111\114\105\061\040\167\151\164\150\040" \ +"\106\111\114\105\062\012\012\011\055\061\011\123\165\160\160\162" \ +"\145\163\163\040\154\151\156\145\163\040\165\156\151\161\165\145" \ +"\040\164\157\040\106\111\114\105\061\012\011\055\062\011\123\165" \ +"\160\160\162\145\163\163\040\154\151\156\145\163\040\165\156\151" \ +"\161\165\145\040\164\157\040\106\111\114\105\062\012\011\055\063" \ +"\011\123\165\160\160\162\145\163\163\040\154\151\156\145\163\040" \ +"\143\157\155\155\157\156\040\164\157\040\142\157\164\150\040\146" \ +"\151\154\145\163\000\133\117\120\124\111\117\116\123\135\040\123" \ +"\117\125\122\103\105\056\056\056\040\104\105\123\124\012\012\103" \ +"\157\160\171\040\123\117\125\122\103\105\050\163\051\040\164\157" \ +"\040\104\105\123\124\012\012\011\055\141\011\123\141\155\145\040" \ +"\141\163\040\055\144\160\122\012\011\055\122\054\055\162\011\122" \ +"\145\143\165\162\163\145\012\011\055\144\054\055\120\011\120\162" \ +"\145\163\145\162\166\145\040\163\171\155\154\151\156\153\163\040" \ +"\050\144\145\146\141\165\154\164\040\151\146\040\055\122\051\012" \ +"\011\055\114\011\106\157\154\154\157\167\040\141\154\154\040\163" \ +"\171\155\154\151\156\153\163\012\011\055\110\011\106\157\154\154" \ +"\157\167\040\163\171\155\154\151\156\153\163\040\157\156\040\143" \ +"\157\155\155\141\156\144\040\154\151\156\145\012\011\055\160\011" \ +"\120\162\145\163\145\162\166\145\040\146\151\154\145\040\141\164" \ +"\164\162\151\142\165\164\145\163\040\151\146\040\160\157\163\163" \ +"\151\142\154\145\012\011\055\146\011\117\166\145\162\167\162\151" \ +"\164\145\012\011\055\151\011\120\162\157\155\160\164\040\142\145" \ +"\146\157\162\145\040\157\166\145\162\167\162\151\164\145\012\011" \ +"\055\154\054\055\163\011\103\162\145\141\164\145\040\050\163\171" \ +"\155\051\154\151\156\153\163\000\133\055\144\155\166\165\135\040" \ +"\133\055\106\040\106\111\114\105\135\040\133\055\110\040\156\145" \ +"\167\143\135\040\133\055\164\151\157\135\040\133\055\160\040\104" \ +"\111\122\135\040\133\105\130\124\122\137\106\111\114\105\135\056" \ +"\056\056\012\012\105\170\164\162\141\143\164\040\157\162\040\154" \ +"\151\163\164\040\146\151\154\145\163\040\146\162\157\155\040\141" \ +"\040\143\160\151\157\040\141\162\143\150\151\166\145\054\040\157" \ +"\162\012\143\162\145\141\164\145\040\141\156\040\141\162\143\150" \ +"\151\166\145\040\050\055\157\051\040\157\162\040\143\157\160\171" \ +"\040\146\151\154\145\163\040\050\055\160\051\040\165\163\151\156" \ +"\147\040\146\151\154\145\040\154\151\163\164\040\157\156\040\163" \ +"\164\144\151\156\012\012\115\141\151\156\040\157\160\145\162\141" \ +"\164\151\157\156\040\155\157\144\145\072\012\011\055\164\011\114" \ +"\151\163\164\012\011\055\151\011\105\170\164\162\141\143\164\040" \ +"\105\130\124\122\137\106\111\114\105\163\040\050\157\162\040\141" \ +"\154\154\051\012\011\055\157\011\103\162\145\141\164\145\040\050" \ +"\162\145\161\165\151\162\145\163\040\055\110\040\156\145\167\143" \ +"\051\012\011\055\160\040\104\111\122\011\103\157\160\171\040\146" \ +"\151\154\145\163\040\164\157\040\104\111\122\012\011\055\144\011" \ +"\115\141\153\145\040\154\145\141\144\151\156\147\040\144\151\162" \ +"\145\143\164\157\162\151\145\163\012\011\055\155\011\120\162\145" \ +"\163\145\162\166\145\040\155\164\151\155\145\012\011\055\166\011" \ +"\126\145\162\142\157\163\145\012\011\055\165\011\117\166\145\162" \ +"\167\162\151\164\145\012\011\055\106\040\106\111\114\105\011\111" \ +"\156\160\165\164\040\050\055\164\054\055\151\054\055\160\051\040" \ +"\157\162\040\157\165\164\160\165\164\040\050\055\157\051\040\146" \ +"\151\154\145\012\011\055\110\040\156\145\167\143\011\101\162\143" \ +"\150\151\166\145\040\146\157\162\155\141\164\000\055\146\142\123" \ +"\040\055\154\040\116\040\055\114\040\114\117\107\106\111\114\105" \ +"\040\055\143\040\104\111\122\012\012\011\055\146\011\106\157\162" \ +"\145\147\162\157\165\156\144\012\011\055\142\011\102\141\143\153" \ +"\147\162\157\165\156\144\040\050\144\145\146\141\165\154\164\051" \ +"\012\011\055\123\011\114\157\147\040\164\157\040\163\171\163\154" \ +"\157\147\040\050\144\145\146\141\165\154\164\051\012\011\055\154" \ +"\011\123\145\164\040\154\157\147\040\154\145\166\145\154\056\040" \ +"\060\040\151\163\040\164\150\145\040\155\157\163\164\040\166\145" \ +"\162\142\157\163\145\054\040\144\145\146\141\165\154\164\040\070" \ +"\012\011\055\114\011\114\157\147\040\164\157\040\146\151\154\145" \ +"\012\011\055\143\011\127\157\162\153\151\156\147\040\144\151\162" \ +"\000\133\055\143\040\104\111\122\135\040\133\055\165\040\125\123" \ +"\105\122\135\040\133\055\154\145\162\135\174\133\106\111\114\105" \ +"\135\012\012\011\055\143\011\103\162\157\156\164\141\142\040\144" \ +"\151\162\145\143\164\157\162\171\012\011\055\165\011\125\163\145" \ +"\162\012\011\055\154\011\114\151\163\164\040\143\162\157\156\164" \ +"\141\142\012\011\055\145\011\105\144\151\164\040\143\162\157\156" \ +"\164\141\142\012\011\055\162\011\104\145\154\145\164\145\040\143" \ +"\162\157\156\164\141\142\012\011\106\111\114\105\011\122\145\160" \ +"\154\141\143\145\040\143\162\157\156\164\141\142\040\142\171\040" \ +"\106\111\114\105\040\050\047\055\047\072\040\163\164\144\151\156" \ +"\051\000\133\117\120\124\111\117\116\123\135\040\133\106\111\114" \ +"\105\135\056\056\056\012\012\120\162\151\156\164\040\163\145\154" \ +"\145\143\164\145\144\040\146\151\145\154\144\163\040\146\162\157" \ +"\155\040\145\141\143\150\040\151\156\160\165\164\040\106\111\114" \ +"\105\040\164\157\040\163\164\144\157\165\164\012\012\011\055\142" \ +"\040\114\111\123\124\011\117\165\164\160\165\164\040\157\156\154" \ +"\171\040\142\171\164\145\163\040\146\162\157\155\040\114\111\123" \ +"\124\012\011\055\143\040\114\111\123\124\011\117\165\164\160\165" \ +"\164\040\157\156\154\171\040\143\150\141\162\141\143\164\145\162" \ +"\163\040\146\162\157\155\040\114\111\123\124\012\011\055\144\040" \ +"\103\110\101\122\011\125\163\145\040\103\110\101\122\040\151\156" \ +"\163\164\145\141\144\040\157\146\040\164\141\142\040\141\163\040" \ +"\164\150\145\040\146\151\145\154\144\040\144\145\154\151\155\151" \ +"\164\145\162\012\011\055\163\011\117\165\164\160\165\164\040\157" \ +"\156\154\171\040\164\150\145\040\154\151\156\145\163\040\143\157" \ +"\156\164\141\151\156\151\156\147\040\144\145\154\151\155\151\164" \ +"\145\162\012\011\055\146\040\116\011\120\162\151\156\164\040\157" \ +"\156\154\171\040\164\150\145\163\145\040\146\151\145\154\144\163" \ +"\012\011\055\156\011\111\147\156\157\162\145\144\000\133\117\120" \ +"\124\111\117\116\123\135\040\133\053\106\115\124\135\040\133\124" \ +"\111\115\105\135\012\012\104\151\163\160\154\141\171\040\164\151" \ +"\155\145\040\050\165\163\151\156\147\040\053\106\115\124\051\054" \ +"\040\157\162\040\163\145\164\040\164\151\155\145\012\012\011\133" \ +"\055\163\054\055\055\163\145\164\135\040\124\111\115\105\011\123" \ +"\145\164\040\164\151\155\145\040\164\157\040\124\111\115\105\012" \ +"\011\055\165\054\055\055\165\164\143\011\127\157\162\153\040\151" \ +"\156\040\125\124\103\040\050\144\157\156\047\164\040\143\157\156" \ +"\166\145\162\164\040\164\157\040\154\157\143\141\154\040\164\151" \ +"\155\145\051\012\011\055\122\054\055\055\162\146\143\055\062\070" \ +"\062\062\011\117\165\164\160\165\164\040\122\106\103\055\062\070" \ +"\062\062\040\143\157\155\160\154\151\141\156\164\040\144\141\164" \ +"\145\040\163\164\162\151\156\147\012\011\055\111\133\123\120\105" \ +"\103\135\011\117\165\164\160\165\164\040\111\123\117\055\070\066" \ +"\060\061\040\143\157\155\160\154\151\141\156\164\040\144\141\164" \ +"\145\040\163\164\162\151\156\147\012\011\011\011\123\120\105\103" \ +"\075\047\144\141\164\145\047\040\050\144\145\146\141\165\154\164" \ +"\051\040\146\157\162\040\144\141\164\145\040\157\156\154\171\054" \ +"\012\011\011\011\047\150\157\165\162\163\047\054\040\047\155\151" \ +"\156\165\164\145\163\047\054\040\157\162\040\047\163\145\143\157" \ +"\156\144\163\047\040\146\157\162\040\144\141\164\145\040\141\156" \ +"\144\012\011\011\011\164\151\155\145\040\164\157\040\164\150\145" \ +"\040\151\156\144\151\143\141\164\145\144\040\160\162\145\143\151" \ +"\163\151\157\156\012\011\055\162\054\055\055\162\145\146\145\162" \ +"\145\156\143\145\040\106\111\114\105\011\104\151\163\160\154\141" \ +"\171\040\154\141\163\164\040\155\157\144\151\146\151\143\141\164" \ +"\151\157\156\040\164\151\155\145\040\157\146\040\106\111\114\105" \ +"\012\011\055\144\054\055\055\144\141\164\145\040\124\111\115\105" \ +"\011\104\151\163\160\154\141\171\040\124\111\115\105\054\040\156" \ +"\157\164\040\047\156\157\167\047\012\011\055\104\040\106\115\124" \ +"\011\011\125\163\145\040\106\115\124\040\146\157\162\040\055\144" \ +"\040\124\111\115\105\040\143\157\156\166\145\162\163\151\157\156" \ +"\012\012\122\145\143\157\147\156\151\172\145\144\040\124\111\115" \ +"\105\040\146\157\162\155\141\164\163\072\012\011\150\150\072\155" \ +"\155\133\072\163\163\135\012\011\133\131\131\131\131\056\135\115" \ +"\115\056\104\104\055\150\150\072\155\155\133\072\163\163\135\012" \ +"\011\131\131\131\131\055\115\115\055\104\104\040\150\150\072\155" \ +"\155\133\072\163\163\135\012\011\133\133\133\133\133\131\131\135" \ +"\131\131\135\115\115\135\104\104\135\150\150\135\155\155\133\056" \ +"\163\163\135\012\011\047\144\141\164\145\040\124\111\115\105\047" \ +"\040\146\157\162\155\040\141\143\143\145\160\164\163\040\115\115" \ +"\104\104\150\150\155\155\133\133\131\131\135\131\131\135\133\056" \ +"\163\163\135\040\151\156\163\164\145\141\144\000\105\130\120\122" \ +"\105\123\123\111\117\116\056\056\056\012\012\124\151\156\171\040" \ +"\122\120\116\040\143\141\154\143\165\154\141\164\157\162\056\040" \ +"\117\160\145\162\141\164\151\157\156\163\072\012\053\054\040\141" \ +"\144\144\054\040\055\054\040\163\165\142\054\040\052\054\040\155" \ +"\165\154\054\040\057\054\040\144\151\166\054\040\045\054\040\155" \ +"\157\144\054\040\052\052\054\040\145\170\160\054\040\141\156\144" \ +"\054\040\157\162\054\040\156\157\164\054\040\170\157\162\054\012" \ +"\160\040\055\040\160\162\151\156\164\040\164\157\160\040\157\146" \ +"\040\164\150\145\040\163\164\141\143\153\040\050\167\151\164\150" \ +"\157\165\164\040\160\157\160\160\151\156\147\051\054\012\146\040" \ +"\055\040\160\162\151\156\164\040\145\156\164\151\162\145\040\163" \ +"\164\141\143\153\054\012\157\040\055\040\160\157\160\040\164\150" \ +"\145\040\166\141\154\165\145\040\141\156\144\040\163\145\164\040" \ +"\157\165\164\160\165\164\040\162\141\144\151\170\040\050\155\165" \ +"\163\164\040\142\145\040\061\060\054\040\061\066\054\040\070\040" \ +"\157\162\040\062\051\056\012\105\170\141\155\160\154\145\163\072" \ +"\040\047\144\143\040\062\040\062\040\141\144\144\040\160\047\040" \ +"\055\076\040\064\054\040\047\144\143\040\070\040\070\040\155\165" \ +"\154\040\062\040\062\040\053\040\057\040\160\047\040\055\076\040" \ +"\061\066\000\133\151\146\075\106\111\114\105\135\040\133\157\146" \ +"\075\106\111\114\105\135\040\133\151\142\163\075\116\135\040\133" \ +"\157\142\163\075\116\135\040\133\142\163\075\116\135\040\133\143" \ +"\157\165\156\164\075\116\135\040\133\163\153\151\160\075\116\135" \ +"\012\011\133\163\145\145\153\075\116\135\040\133\143\157\156\166" \ +"\075\156\157\164\162\165\156\143\174\156\157\145\162\162\157\162" \ +"\174\163\171\156\143\174\146\163\171\156\143\135\012\012\103\157" \ +"\160\171\040\141\040\146\151\154\145\040\167\151\164\150\040\143" \ +"\157\156\166\145\162\164\151\156\147\040\141\156\144\040\146\157" \ +"\162\155\141\164\164\151\156\147\012\012\011\151\146\075\106\111" \ +"\114\105\011\011\122\145\141\144\040\146\162\157\155\040\106\111" \ +"\114\105\040\151\156\163\164\145\141\144\040\157\146\040\163\164" \ +"\144\151\156\012\011\157\146\075\106\111\114\105\011\011\127\162" \ +"\151\164\145\040\164\157\040\106\111\114\105\040\151\156\163\164" \ +"\145\141\144\040\157\146\040\163\164\144\157\165\164\012\011\142" \ +"\163\075\116\011\011\122\145\141\144\040\141\156\144\040\167\162" \ +"\151\164\145\040\116\040\142\171\164\145\163\040\141\164\040\141" \ +"\040\164\151\155\145\012\011\151\142\163\075\116\011\011\122\145" \ +"\141\144\040\116\040\142\171\164\145\163\040\141\164\040\141\040" \ +"\164\151\155\145\012\011\157\142\163\075\116\011\011\127\162\151" \ +"\164\145\040\116\040\142\171\164\145\163\040\141\164\040\141\040" \ +"\164\151\155\145\012\011\143\157\165\156\164\075\116\011\011\103" \ +"\157\160\171\040\157\156\154\171\040\116\040\151\156\160\165\164" \ +"\040\142\154\157\143\153\163\012\011\163\153\151\160\075\116\011" \ +"\011\123\153\151\160\040\116\040\151\156\160\165\164\040\142\154" \ +"\157\143\153\163\012\011\163\145\145\153\075\116\011\011\123\153" \ +"\151\160\040\116\040\157\165\164\160\165\164\040\142\154\157\143" \ +"\153\163\012\011\143\157\156\166\075\156\157\164\162\165\156\143" \ +"\011\104\157\156\047\164\040\164\162\165\156\143\141\164\145\040" \ +"\157\165\164\160\165\164\040\146\151\154\145\012\011\143\157\156" \ +"\166\075\156\157\145\162\162\157\162\011\103\157\156\164\151\156" \ +"\165\145\040\141\146\164\145\162\040\162\145\141\144\040\145\162" \ +"\162\157\162\163\012\011\143\157\156\166\075\163\171\156\143\011" \ +"\120\141\144\040\142\154\157\143\153\163\040\167\151\164\150\040" \ +"\172\145\162\157\163\012\011\143\157\156\166\075\146\163\171\156" \ +"\143\011\120\150\171\163\151\143\141\154\154\171\040\167\162\151" \ +"\164\145\040\144\141\164\141\040\157\165\164\040\142\145\146\157" \ +"\162\145\040\146\151\156\151\163\150\151\156\147\012\011\143\157" \ +"\156\166\075\163\167\141\142\011\123\167\141\160\040\145\166\145" \ +"\162\171\040\160\141\151\162\040\157\146\040\142\171\164\145\163" \ +"\012\012\116\040\155\141\171\040\142\145\040\163\165\146\146\151" \ +"\170\145\144\040\142\171\040\143\040\050\061\051\054\040\167\040" \ +"\050\062\051\054\040\142\040\050\065\061\062\051\054\040\153\104" \ +"\040\050\061\060\060\060\051\054\040\153\040\050\061\060\062\064" \ +"\051\054\040\115\104\054\040\115\054\040\107\104\054\040\107\000" \ +"\133\055\156\135\040\133\115\117\104\106\111\114\105\123\135\056" \ +"\056\056\012\012\107\145\156\145\162\141\164\145\040\155\157\144" \ +"\165\154\145\163\056\144\145\160\054\040\141\154\151\141\163\054" \ +"\040\141\156\144\040\163\171\155\142\157\154\163\040\146\151\154" \ +"\145\163\012\012\011\055\156\011\104\162\171\040\162\165\156\072" \ +"\040\160\162\151\156\164\040\146\151\154\145\163\040\164\157\040" \ +"\163\164\144\157\165\164\000\101\104\104\122\105\123\123\040\133" \ +"\127\111\104\124\110\040\133\126\101\114\125\105\135\135\012\012" \ +"\122\145\141\144\057\167\162\151\164\145\040\146\162\157\155\040" \ +"\160\150\171\163\151\143\141\154\040\141\144\144\162\145\163\163" \ +"\012\012\011\101\104\104\122\105\123\123\011\101\144\144\162\145" \ +"\163\163\040\164\157\040\141\143\164\040\165\160\157\156\012\011" \ +"\127\111\104\124\110\011\127\151\144\164\150\040\050\070\057\061" \ +"\066\057\056\056\056\051\012\011\126\101\114\125\105\011\104\141" \ +"\164\141\040\164\157\040\142\145\040\167\162\151\164\164\145\156" \ +"\000\133\055\120\153\155\150\141\151\135\040\133\055\102\040\123" \ +"\111\132\105\135\040\133\106\111\114\105\123\131\123\124\105\115" \ +"\135\056\056\056\012\012\120\162\151\156\164\040\146\151\154\145" \ +"\163\171\163\164\145\155\040\165\163\141\147\145\040\163\164\141" \ +"\164\151\163\164\151\143\163\012\012\011\055\120\011\120\117\123" \ +"\111\130\040\157\165\164\160\165\164\040\146\157\162\155\141\164" \ +"\012\011\055\153\011\061\060\062\064\055\142\171\164\145\040\142" \ +"\154\157\143\153\163\040\050\144\145\146\141\165\154\164\051\012" \ +"\011\055\155\011\061\115\055\142\171\164\145\040\142\154\157\143" \ +"\153\163\012\011\055\150\011\110\165\155\141\156\040\162\145\141" \ +"\144\141\142\154\145\040\050\145\056\147\056\040\061\113\040\062" \ +"\064\063\115\040\062\107\051\012\011\055\141\011\123\150\157\167" \ +"\040\141\154\154\040\146\151\154\145\163\171\163\164\145\155\163" \ +"\012\011\055\151\011\111\156\157\144\145\163\012\011\055\102\040" \ +"\123\111\132\105\011\102\154\157\143\153\163\151\172\145\000\133" \ +"\055\141\142\102\144\151\116\161\162\124\163\164\167\135\040\133" \ +"\055\114\040\114\101\102\105\114\135\040\133\055\123\040\106\111" \ +"\114\105\135\040\133\055\125\040\114\111\116\105\123\135\040\106" \ +"\111\114\105\061\040\106\111\114\105\062\012\012\103\157\155\160" \ +"\141\162\145\040\146\151\154\145\163\040\154\151\156\145\040\142" \ +"\171\040\154\151\156\145\040\141\156\144\040\157\165\164\160\165" \ +"\164\040\164\150\145\040\144\151\146\146\145\162\145\156\143\145" \ +"\163\040\142\145\164\167\145\145\156\040\164\150\145\155\056\012" \ +"\124\150\151\163\040\151\155\160\154\145\155\145\156\164\141\164" \ +"\151\157\156\040\163\165\160\160\157\162\164\163\040\165\156\151" \ +"\146\151\145\144\040\144\151\146\146\163\040\157\156\154\171\056" \ +"\012\012\011\055\141\011\124\162\145\141\164\040\141\154\154\040" \ +"\146\151\154\145\163\040\141\163\040\164\145\170\164\012\011\055" \ +"\142\011\111\147\156\157\162\145\040\143\150\141\156\147\145\163" \ +"\040\151\156\040\164\150\145\040\141\155\157\165\156\164\040\157" \ +"\146\040\167\150\151\164\145\163\160\141\143\145\012\011\055\102" \ +"\011\111\147\156\157\162\145\040\143\150\141\156\147\145\163\040" \ +"\167\150\157\163\145\040\154\151\156\145\163\040\141\162\145\040" \ +"\141\154\154\040\142\154\141\156\153\012\011\055\144\011\124\162" \ +"\171\040\150\141\162\144\040\164\157\040\146\151\156\144\040\141" \ +"\040\163\155\141\154\154\145\162\040\163\145\164\040\157\146\040" \ +"\143\150\141\156\147\145\163\012\011\055\151\011\111\147\156\157" \ +"\162\145\040\143\141\163\145\040\144\151\146\146\145\162\145\156" \ +"\143\145\163\012\011\055\114\011\125\163\145\040\114\101\102\105" \ +"\114\040\151\156\163\164\145\141\144\040\157\146\040\164\150\145" \ +"\040\146\151\154\145\156\141\155\145\040\151\156\040\164\150\145" \ +"\040\165\156\151\146\151\145\144\040\150\145\141\144\145\162\012" \ +"\011\055\116\011\124\162\145\141\164\040\141\142\163\145\156\164" \ +"\040\146\151\154\145\163\040\141\163\040\145\155\160\164\171\012" \ +"\011\055\161\011\117\165\164\160\165\164\040\157\156\154\171\040" \ +"\167\150\145\164\150\145\162\040\146\151\154\145\163\040\144\151" \ +"\146\146\145\162\012\011\055\162\011\122\145\143\165\162\163\145" \ +"\012\011\055\123\011\123\164\141\162\164\040\167\151\164\150\040" \ +"\106\111\114\105\040\167\150\145\156\040\143\157\155\160\141\162" \ +"\151\156\147\040\144\151\162\145\143\164\157\162\151\145\163\012" \ +"\011\055\124\011\115\141\153\145\040\164\141\142\163\040\154\151" \ +"\156\145\040\165\160\040\142\171\040\160\162\145\146\151\170\151" \ +"\156\147\040\141\040\164\141\142\040\167\150\145\156\040\156\145" \ +"\143\145\163\163\141\162\171\012\011\055\163\011\122\145\160\157" \ +"\162\164\040\167\150\145\156\040\164\167\157\040\146\151\154\145" \ +"\163\040\141\162\145\040\164\150\145\040\163\141\155\145\012\011" \ +"\055\164\011\105\170\160\141\156\144\040\164\141\142\163\040\164" \ +"\157\040\163\160\141\143\145\163\040\151\156\040\157\165\164\160" \ +"\165\164\012\011\055\125\011\117\165\164\160\165\164\040\114\111" \ +"\116\105\123\040\154\151\156\145\163\040\157\146\040\143\157\156" \ +"\164\145\170\164\012\011\055\167\011\111\147\156\157\162\145\040" \ +"\141\154\154\040\167\150\151\164\145\163\160\141\143\145\000\106" \ +"\111\114\105\116\101\115\105\012\012\123\164\162\151\160\040\156" \ +"\157\156\055\144\151\162\145\143\164\157\162\171\040\163\165\146" \ +"\146\151\170\040\146\162\157\155\040\106\111\114\105\116\101\115" \ +"\105\000\133\055\143\135\040\133\055\156\040\114\105\126\105\114" \ +"\135\040\133\055\162\135\040\133\055\163\040\123\111\132\105\135" \ +"\040\133\055\103\135\012\012\120\162\151\156\164\040\157\162\040" \ +"\143\157\156\164\162\157\154\040\164\150\145\040\153\145\162\156" \ +"\145\154\040\162\151\156\147\040\142\165\146\146\145\162\012\012" \ +"\011\055\143\011\011\103\154\145\141\162\040\162\151\156\147\040" \ +"\142\165\146\146\145\162\040\141\146\164\145\162\040\160\162\151" \ +"\156\164\151\156\147\012\011\055\156\040\114\105\126\105\114\011" \ +"\123\145\164\040\143\157\156\163\157\154\145\040\154\157\147\147" \ +"\151\156\147\040\154\145\166\145\154\012\011\055\162\011\011\123" \ +"\150\157\167\040\154\145\166\145\154\040\160\162\145\146\151\170" \ +"\012\011\055\163\040\123\111\132\105\011\011\102\165\146\146\145" \ +"\162\040\163\151\172\145\012\011\055\103\011\011\103\157\154\157" \ +"\162\145\144\040\157\165\164\160\165\164\000\133\055\144\166\163" \ +"\135\040\133\055\143\040\103\117\116\106\106\111\114\105\135\040" \ +"\133\055\164\040\124\124\114\137\123\105\103\135\040\133\055\160" \ +"\040\120\117\122\124\135\040\133\055\151\040\101\104\104\122\135" \ +"\012\012\123\155\141\154\154\040\163\164\141\164\151\143\040\104" \ +"\116\123\040\163\145\162\166\145\162\040\144\141\145\155\157\156" \ +"\012\012\011\055\143\040\106\111\114\105\011\103\157\156\146\151" \ +"\147\040\146\151\154\145\012\011\055\164\040\123\105\103\011\124" \ +"\124\114\012\011\055\160\040\120\117\122\124\011\114\151\163\164" \ +"\145\156\040\157\156\040\120\117\122\124\012\011\055\151\040\101" \ +"\104\104\122\011\114\151\163\164\145\156\040\157\156\040\101\104" \ +"\104\122\012\011\055\144\011\104\141\145\155\157\156\151\172\145" \ +"\012\011\055\166\011\126\145\162\142\157\163\145\012\011\055\163" \ +"\011\123\145\156\144\040\163\165\143\143\145\163\163\146\165\154" \ +"\040\162\145\160\154\151\145\163\040\157\156\154\171\056\040\125" \ +"\163\145\040\164\150\151\163\040\151\146\040\171\157\165\040\167" \ +"\141\156\164\012\011\011\164\157\040\165\163\145\040\057\145\164" \ +"\143\057\162\145\163\157\154\166\056\143\157\156\146\040\167\151" \ +"\164\150\040\164\167\157\040\156\141\155\145\163\145\162\166\145" \ +"\162\040\154\151\156\145\163\072\012\011\011\011\156\141\155\145" \ +"\163\145\162\166\145\162\040\104\116\123\104\137\123\105\122\126" \ +"\105\122\012\011\011\011\156\141\155\145\163\145\162\166\145\162" \ +"\040\116\117\122\115\101\114\137\104\116\123\137\123\105\122\126" \ +"\105\122\000\133\055\165\144\135\040\133\106\111\114\105\135\012" \ +"\012\103\157\156\166\145\162\164\040\106\111\114\105\040\151\156" \ +"\055\160\154\141\143\145\040\146\162\157\155\040\104\117\123\040" \ +"\164\157\040\125\156\151\170\040\146\157\162\155\141\164\056\012" \ +"\127\150\145\156\040\156\157\040\146\151\154\145\040\151\163\040" \ +"\147\151\166\145\156\054\040\165\163\145\040\163\164\144\151\156" \ +"\057\163\164\144\157\165\164\056\012\012\011\055\165\011\144\157" \ +"\163\062\165\156\151\170\012\011\055\144\011\165\156\151\170\062" \ +"\144\157\163\000\133\055\141\110\114\144\143\154\163\170\150\155" \ +"\153\135\040\133\106\111\114\105\135\056\056\056\012\012\123\165" \ +"\155\155\141\162\151\172\145\040\144\151\163\153\040\163\160\141" \ +"\143\145\040\165\163\145\144\040\146\157\162\040\145\141\143\150" \ +"\040\106\111\114\105\040\141\156\144\057\157\162\040\144\151\162" \ +"\145\143\164\157\162\171\012\012\011\055\141\011\123\150\157\167" \ +"\040\146\151\154\145\040\163\151\172\145\163\040\164\157\157\012" \ +"\011\055\114\011\106\157\154\154\157\167\040\141\154\154\040\163" \ +"\171\155\154\151\156\153\163\012\011\055\110\011\106\157\154\154" \ +"\157\167\040\163\171\155\154\151\156\153\163\040\157\156\040\143" \ +"\157\155\155\141\156\144\040\154\151\156\145\012\011\055\144\040" \ +"\116\011\114\151\155\151\164\040\157\165\164\160\165\164\040\164" \ +"\157\040\144\151\162\145\143\164\157\162\151\145\163\040\050\141" \ +"\156\144\040\146\151\154\145\163\040\167\151\164\150\040\055\141" \ +"\051\040\157\146\040\144\145\160\164\150\040\074\040\116\012\011" \ +"\055\143\011\123\150\157\167\040\147\162\141\156\144\040\164\157" \ +"\164\141\154\012\011\055\154\011\103\157\165\156\164\040\163\151" \ +"\172\145\163\040\155\141\156\171\040\164\151\155\145\163\040\151" \ +"\146\040\150\141\162\144\040\154\151\156\153\145\144\012\011\055" \ +"\163\011\104\151\163\160\154\141\171\040\157\156\154\171\040\141" \ +"\040\164\157\164\141\154\040\146\157\162\040\145\141\143\150\040" \ +"\141\162\147\165\155\145\156\164\012\011\055\170\011\123\153\151" \ +"\160\040\144\151\162\145\143\164\157\162\151\145\163\040\157\156" \ +"\040\144\151\146\146\145\162\145\156\164\040\146\151\154\145\163" \ +"\171\163\164\145\155\163\012\011\055\150\011\123\151\172\145\163" \ +"\040\151\156\040\150\165\155\141\156\040\162\145\141\144\141\142" \ +"\154\145\040\146\157\162\155\141\164\040\050\145\056\147\056\054" \ +"\040\061\113\040\062\064\063\115\040\062\107\051\012\011\055\155" \ +"\011\123\151\172\145\163\040\151\156\040\155\145\147\141\142\171" \ +"\164\145\163\012\011\055\153\011\123\151\172\145\163\040\151\156" \ +"\040\153\151\154\157\142\171\164\145\163\040\050\144\145\146\141" \ +"\165\154\164\051\000\133\055\156\145\105\135\040\133\101\122\107" \ +"\135\056\056\056\012\012\120\162\151\156\164\040\164\150\145\040" \ +"\163\160\145\143\151\146\151\145\144\040\101\122\107\163\040\164" \ +"\157\040\163\164\144\157\165\164\012\012\011\055\156\011\123\165" \ +"\160\160\162\145\163\163\040\164\162\141\151\154\151\156\147\040" \ +"\156\145\167\154\151\156\145\012\011\055\145\011\111\156\164\145" \ +"\162\160\162\145\164\040\142\141\143\153\163\154\141\163\150\040" \ +"\145\163\143\141\160\145\163\040\050\151\056\145\056\054\040\134" \ +"\164\075\164\141\142\051\012\011\055\105\011\104\157\156\047\164" \ +"\040\151\156\164\145\162\160\162\145\164\040\142\141\143\153\163" \ +"\154\141\163\150\040\145\163\143\141\160\145\163\040\050\144\145" \ +"\146\141\165\154\164\051\000\000\010\000\133\055\151\165\135\040" \ +"\133\055\135\040\133\156\141\155\145\075\166\141\154\165\145\135" \ +"\056\056\056\040\133\120\122\117\107\040\101\122\107\123\135\012" \ +"\012\120\162\151\156\164\040\164\150\145\040\143\165\162\162\145" \ +"\156\164\040\145\156\166\151\162\157\156\155\145\156\164\040\157" \ +"\162\040\162\165\156\040\120\122\117\107\040\141\146\164\145\162" \ +"\040\163\145\164\164\151\156\147\040\165\160\012\164\150\145\040" \ +"\163\160\145\143\151\146\151\145\144\040\145\156\166\151\162\157" \ +"\156\155\145\156\164\012\012\011\055\054\040\055\151\011\123\164" \ +"\141\162\164\040\167\151\164\150\040\141\156\040\145\155\160\164" \ +"\171\040\145\156\166\151\162\157\156\155\145\156\164\012\011\055" \ +"\165\011\122\145\155\157\166\145\040\166\141\162\151\141\142\154" \ +"\145\040\146\162\157\155\040\164\150\145\040\145\156\166\151\162" \ +"\157\156\155\145\156\164\000\133\055\151\135\040\133\055\164\040" \ +"\116\135\040\133\106\111\114\105\135\056\056\056\012\012\103\157" \ +"\156\166\145\162\164\040\164\141\142\163\040\164\157\040\163\160" \ +"\141\143\145\163\054\040\167\162\151\164\151\156\147\040\164\157" \ +"\040\163\164\144\157\165\164\012\012\011\055\151\054\055\055\151" \ +"\156\151\164\151\141\154\011\104\157\156\047\164\040\143\157\156" \ +"\166\145\162\164\040\164\141\142\163\040\141\146\164\145\162\040" \ +"\156\157\156\040\142\154\141\156\153\163\012\011\055\164\054\055" \ +"\055\164\141\142\163\075\116\011\124\141\142\163\164\157\160\163" \ +"\040\145\166\145\162\171\040\116\040\143\150\141\162\163\000\105" \ +"\130\120\122\105\123\123\111\117\116\012\012\120\162\151\156\164" \ +"\040\164\150\145\040\166\141\154\165\145\040\157\146\040\105\130" \ +"\120\122\105\123\123\111\117\116\040\164\157\040\163\164\144\157" \ +"\165\164\012\012\105\130\120\122\105\123\123\111\117\116\040\155" \ +"\141\171\040\142\145\072\012\011\101\122\107\061\040\174\040\101" \ +"\122\107\062\011\101\122\107\061\040\151\146\040\151\164\040\151" \ +"\163\040\156\145\151\164\150\145\162\040\156\165\154\154\040\156" \ +"\157\162\040\060\054\040\157\164\150\145\162\167\151\163\145\040" \ +"\101\122\107\062\012\011\101\122\107\061\040\046\040\101\122\107" \ +"\062\011\101\122\107\061\040\151\146\040\156\145\151\164\150\145" \ +"\162\040\141\162\147\165\155\145\156\164\040\151\163\040\156\165" \ +"\154\154\040\157\162\040\060\054\040\157\164\150\145\162\167\151" \ +"\163\145\040\060\012\011\101\122\107\061\040\074\040\101\122\107" \ +"\062\011\061\040\151\146\040\101\122\107\061\040\151\163\040\154" \ +"\145\163\163\040\164\150\141\156\040\101\122\107\062\054\040\145" \ +"\154\163\145\040\060\056\040\123\151\155\151\154\141\162\154\171" \ +"\072\012\011\101\122\107\061\040\074\075\040\101\122\107\062\012" \ +"\011\101\122\107\061\040\075\040\101\122\107\062\012\011\101\122" \ +"\107\061\040\041\075\040\101\122\107\062\012\011\101\122\107\061" \ +"\040\076\075\040\101\122\107\062\012\011\101\122\107\061\040\076" \ +"\040\101\122\107\062\012\011\101\122\107\061\040\053\040\101\122" \ +"\107\062\011\123\165\155\040\157\146\040\101\122\107\061\040\141" \ +"\156\144\040\101\122\107\062\056\040\123\151\155\151\154\141\162" \ +"\154\171\072\012\011\101\122\107\061\040\055\040\101\122\107\062" \ +"\012\011\101\122\107\061\040\052\040\101\122\107\062\012\011\101" \ +"\122\107\061\040\057\040\101\122\107\062\012\011\101\122\107\061" \ +"\040\045\040\101\122\107\062\012\011\123\124\122\111\116\107\040" \ +"\072\040\122\105\107\105\130\120\011\011\101\156\143\150\157\162" \ +"\145\144\040\160\141\164\164\145\162\156\040\155\141\164\143\150" \ +"\040\157\146\040\122\105\107\105\130\120\040\151\156\040\123\124" \ +"\122\111\116\107\012\011\155\141\164\143\150\040\123\124\122\111" \ +"\116\107\040\122\105\107\105\130\120\011\123\141\155\145\040\141" \ +"\163\040\123\124\122\111\116\107\040\072\040\122\105\107\105\130" \ +"\120\012\011\163\165\142\163\164\162\040\123\124\122\111\116\107" \ +"\040\120\117\123\040\114\105\116\107\124\110\040\123\165\142\163" \ +"\164\162\151\156\147\040\157\146\040\123\124\122\111\116\107\054" \ +"\040\120\117\123\040\143\157\165\156\164\145\144\040\146\162\157" \ +"\155\040\061\012\011\151\156\144\145\170\040\123\124\122\111\116" \ +"\107\040\103\110\101\122\123\011\111\156\144\145\170\040\151\156" \ +"\040\123\124\122\111\116\107\040\167\150\145\162\145\040\141\156" \ +"\171\040\103\110\101\122\123\040\151\163\040\146\157\165\156\144" \ +"\054\040\157\162\040\060\012\011\154\145\156\147\164\150\040\123" \ +"\124\122\111\116\107\011\011\114\145\156\147\164\150\040\157\146" \ +"\040\123\124\122\111\116\107\012\011\161\165\157\164\145\040\124" \ +"\117\113\105\116\011\011\111\156\164\145\162\160\162\145\164\040" \ +"\124\117\113\105\116\040\141\163\040\141\040\163\164\162\151\156" \ +"\147\054\040\145\166\145\156\040\151\146\012\011\011\011\011\151" \ +"\164\040\151\163\040\141\040\153\145\171\167\157\162\144\040\154" \ +"\151\153\145\040\047\155\141\164\143\150\047\040\157\162\040\141" \ +"\156\012\011\011\011\011\157\160\145\162\141\164\157\162\040\154" \ +"\151\153\145\040\047\057\047\012\011\050\105\130\120\122\105\123" \ +"\123\111\117\116\051\011\011\126\141\154\165\145\040\157\146\040" \ +"\105\130\120\122\105\123\123\111\117\116\012\012\102\145\167\141" \ +"\162\145\040\164\150\141\164\040\155\141\156\171\040\157\160\145" \ +"\162\141\164\157\162\163\040\156\145\145\144\040\164\157\040\142" \ +"\145\040\145\163\143\141\160\145\144\040\157\162\040\161\165\157" \ +"\164\145\144\040\146\157\162\040\163\150\145\154\154\163\056\012" \ +"\103\157\155\160\141\162\151\163\157\156\163\040\141\162\145\040" \ +"\141\162\151\164\150\155\145\164\151\143\040\151\146\040\142\157" \ +"\164\150\040\101\122\107\163\040\141\162\145\040\156\165\155\142" \ +"\145\162\163\054\040\145\154\163\145\012\154\145\170\151\143\157" \ +"\147\162\141\160\150\151\143\141\154\056\040\120\141\164\164\145" \ +"\162\156\040\155\141\164\143\150\145\163\040\162\145\164\165\162" \ +"\156\040\164\150\145\040\163\164\162\151\156\147\040\155\141\164" \ +"\143\150\145\144\040\142\145\164\167\145\145\156\012\134\050\040" \ +"\141\156\144\040\134\051\040\157\162\040\156\165\154\154\073\040" \ +"\151\146\040\134\050\040\141\156\144\040\134\051\040\141\162\145" \ +"\040\156\157\164\040\165\163\145\144\054\040\164\150\145\171\040" \ +"\162\145\164\165\162\156\040\164\150\145\040\156\165\155\142\145" \ +"\162\012\157\146\040\143\150\141\162\141\143\164\145\162\163\040" \ +"\155\141\164\143\150\145\144\040\157\162\040\060\056\000\012\012" \ +"\122\145\164\165\162\156\040\141\156\040\145\170\151\164\040\143" \ +"\157\144\145\040\157\146\040\106\101\114\123\105\040\050\061\051" \ +"\000\055\163\040\111\115\107\106\111\114\105\040\133\055\143\135" \ +"\040\133\055\144\040\104\105\126\135\040\133\055\151\040\111\116" \ +"\111\106\111\114\105\135\040\133\055\146\040\103\115\104\135\012" \ +"\012\011\055\163\011\111\155\141\147\145\012\011\055\143\011\110" \ +"\151\144\145\040\143\165\162\163\157\162\012\011\055\144\011\106" \ +"\162\141\155\145\142\165\146\146\145\162\040\144\145\166\151\143" \ +"\145\040\050\144\145\146\141\165\154\164\040\057\144\145\166\057" \ +"\146\142\060\051\012\011\055\151\011\103\157\156\146\151\147\040" \ +"\146\151\154\145\040\050\166\141\162\075\166\141\154\165\145\051" \ +"\072\012\011\011\011\102\101\122\137\114\105\106\124\054\102\101" \ +"\122\137\124\117\120\054\102\101\122\137\127\111\104\124\110\054" \ +"\102\101\122\137\110\105\111\107\110\124\012\011\011\011\102\101" \ +"\122\137\122\054\102\101\122\137\107\054\102\101\122\137\102\012" \ +"\011\055\146\011\103\157\156\164\162\157\154\040\160\151\160\145" \ +"\040\050\145\154\163\145\040\145\170\151\164\040\141\146\164\145" \ +"\162\040\144\162\141\167\151\156\147\040\151\155\141\147\145\051" \ +"\012\011\011\011\143\157\155\155\141\156\144\163\072\040\047\116" \ +"\116\047\040\050\045\040\146\157\162\040\160\162\157\147\162\145" \ +"\163\163\040\142\141\162\051\040\157\162\040\047\145\170\151\164" \ +"\047\000\133\055\165\154\135\040\133\055\103\040\103\131\114\111" \ +"\116\104\105\122\123\135\040\133\055\110\040\110\105\101\104\123" \ +"\135\040\133\055\123\040\123\105\103\124\117\122\123\135\040\133" \ +"\055\142\040\123\123\132\135\040\104\111\123\113\012\012\103\150" \ +"\141\156\147\145\040\160\141\162\164\151\164\151\157\156\040\164" \ +"\141\142\154\145\012\012\011\055\165\011\011\123\164\141\162\164" \ +"\040\141\156\144\040\105\156\144\040\141\162\145\040\151\156\040" \ +"\163\145\143\164\157\162\163\040\050\151\156\163\164\145\141\144" \ +"\040\157\146\040\143\171\154\151\156\144\145\162\163\051\012\011" \ +"\055\154\011\011\123\150\157\167\040\160\141\162\164\151\164\151" \ +"\157\156\040\164\141\142\154\145\040\146\157\162\040\145\141\143" \ +"\150\040\104\111\123\113\054\040\164\150\145\156\040\145\170\151" \ +"\164\012\011\055\142\040\062\060\064\070\011\011\050\146\157\162" \ +"\040\143\145\162\164\141\151\156\040\115\117\040\144\151\163\153" \ +"\163\051\040\165\163\145\040\062\060\064\070\055\142\171\164\145" \ +"\040\163\145\143\164\157\162\163\012\011\055\103\040\103\131\114" \ +"\111\116\104\105\122\123\011\123\145\164\040\156\165\155\142\145" \ +"\162\040\157\146\040\143\171\154\151\156\144\145\162\163\057\150" \ +"\145\141\144\163\057\163\145\143\164\157\162\163\012\011\055\110" \ +"\040\110\105\101\104\123\012\011\055\123\040\123\105\103\124\117" \ +"\122\123\000\010\000\133\055\110\114\135\040\133\120\101\124\110" \ +"\135\056\056\056\040\133\117\120\124\111\117\116\123\135\040\133" \ +"\101\103\124\111\117\116\123\135\012\012\123\145\141\162\143\150" \ +"\040\146\157\162\040\146\151\154\145\163\040\141\156\144\040\160" \ +"\145\162\146\157\162\155\040\141\143\164\151\157\156\163\040\157" \ +"\156\040\164\150\145\155\056\012\106\151\162\163\164\040\146\141" \ +"\151\154\145\144\040\141\143\164\151\157\156\040\163\164\157\160" \ +"\163\040\160\162\157\143\145\163\163\151\156\147\040\157\146\040" \ +"\143\165\162\162\145\156\164\040\146\151\154\145\056\012\104\145" \ +"\146\141\165\154\164\163\072\040\120\101\124\110\040\151\163\040" \ +"\143\165\162\162\145\156\164\040\144\151\162\145\143\164\157\162" \ +"\171\054\040\141\143\164\151\157\156\040\151\163\040\047\055\160" \ +"\162\151\156\164\047\012\012\011\055\114\054\055\146\157\154\154" \ +"\157\167\011\106\157\154\154\157\167\040\163\171\155\154\151\156" \ +"\153\163\012\011\055\110\011\011\056\056\056\157\156\040\143\157" \ +"\155\155\141\156\144\040\154\151\156\145\040\157\156\154\171\012" \ +"\011\055\170\144\145\166\011\011\104\157\156\047\164\040\144\145" \ +"\163\143\145\156\144\040\144\151\162\145\143\164\157\162\151\145" \ +"\163\040\157\156\040\157\164\150\145\162\040\146\151\154\145\163" \ +"\171\163\164\145\155\163\012\011\055\155\141\170\144\145\160\164" \ +"\150\040\116\011\104\145\163\143\145\156\144\040\141\164\040\155" \ +"\157\163\164\040\116\040\154\145\166\145\154\163\056\040\055\155" \ +"\141\170\144\145\160\164\150\040\060\040\141\160\160\154\151\145" \ +"\163\012\011\011\011\141\143\164\151\157\156\163\040\164\157\040" \ +"\143\157\155\155\141\156\144\040\154\151\156\145\040\141\162\147" \ +"\165\155\145\156\164\163\040\157\156\154\171\012\011\055\155\151" \ +"\156\144\145\160\164\150\040\116\011\104\157\156\047\164\040\141" \ +"\143\164\040\157\156\040\146\151\162\163\164\040\116\040\154\145" \ +"\166\145\154\163\012\011\055\144\145\160\164\150\011\011\101\143" \ +"\164\040\157\156\040\144\151\162\145\143\164\157\162\171\040\052" \ +"\141\146\164\145\162\052\040\164\162\141\166\145\162\163\151\156" \ +"\147\040\151\164\012\012\101\143\164\151\157\156\163\072\012\011" \ +"\050\040\101\103\124\111\117\116\123\040\051\011\107\162\157\165" \ +"\160\040\141\143\164\151\157\156\163\040\146\157\162\040\055\157" \ +"\040\057\040\055\141\012\011\041\040\101\103\124\011\011\111\156" \ +"\166\145\162\164\040\101\103\124\047\163\040\163\165\143\143\145" \ +"\163\163\057\146\141\151\154\165\162\145\012\011\101\103\124\061" \ +"\040\133\055\141\135\040\101\103\124\062\011\111\146\040\101\103" \ +"\124\061\040\146\141\151\154\163\054\040\163\164\157\160\054\040" \ +"\145\154\163\145\040\144\157\040\101\103\124\062\012\011\101\103" \ +"\124\061\040\055\157\040\101\103\124\062\011\111\146\040\101\103" \ +"\124\061\040\163\165\143\143\145\145\144\163\054\040\163\164\157" \ +"\160\054\040\145\154\163\145\040\144\157\040\101\103\124\062\012" \ +"\011\011\011\116\157\164\145\072\040\055\141\040\150\141\163\040" \ +"\150\151\147\150\145\162\040\160\162\151\157\162\151\164\171\040" \ +"\164\150\141\156\040\055\157\012\011\055\156\141\155\145\040\120" \ +"\101\124\124\105\122\116\011\115\141\164\143\150\040\146\151\154" \ +"\145\040\156\141\155\145\040\050\167\057\157\040\144\151\162\145" \ +"\143\164\157\162\171\040\156\141\155\145\051\040\164\157\040\120" \ +"\101\124\124\105\122\116\012\011\055\151\156\141\155\145\040\120" \ +"\101\124\124\105\122\116\011\103\141\163\145\040\151\156\163\145" \ +"\156\163\151\164\151\166\145\040\055\156\141\155\145\012\011\055" \ +"\160\141\164\150\040\120\101\124\124\105\122\116\011\115\141\164" \ +"\143\150\040\160\141\164\150\040\164\157\040\120\101\124\124\105" \ +"\122\116\012\011\055\151\160\141\164\150\040\120\101\124\124\105" \ +"\122\116\011\103\141\163\145\040\151\156\163\145\156\163\151\164" \ +"\151\166\145\040\055\160\141\164\150\012\011\055\162\145\147\145" \ +"\170\040\120\101\124\124\105\122\116\011\115\141\164\143\150\040" \ +"\160\141\164\150\040\164\157\040\162\145\147\145\170\040\120\101" \ +"\124\124\105\122\116\012\011\055\164\171\160\145\040\130\011\011" \ +"\106\151\154\145\040\164\171\160\145\040\151\163\040\130\040\050" \ +"\157\156\145\040\157\146\072\040\146\054\144\054\154\054\142\054" \ +"\143\054\056\056\056\051\012\011\055\160\145\162\155\040\115\101" \ +"\123\113\011\101\164\040\154\145\141\163\164\040\157\156\145\040" \ +"\155\141\163\153\040\142\151\164\040\050\053\115\101\123\113\051" \ +"\054\040\141\154\154\040\142\151\164\163\040\050\055\115\101\123" \ +"\113\051\054\012\011\011\011\157\162\040\145\170\141\143\164\154" \ +"\171\040\115\101\123\113\040\142\151\164\163\040\141\162\145\040" \ +"\163\145\164\040\151\156\040\146\151\154\145\047\163\040\155\157" \ +"\144\145\012\011\055\155\164\151\155\145\040\104\101\131\123\011" \ +"\155\164\151\155\145\040\151\163\040\147\162\145\141\164\145\162" \ +"\040\164\150\141\156\040\050\053\116\051\054\040\154\145\163\163" \ +"\040\164\150\141\156\040\050\055\116\051\054\012\011\011\011\157" \ +"\162\040\145\170\141\143\164\154\171\040\116\040\144\141\171\163" \ +"\040\151\156\040\164\150\145\040\160\141\163\164\012\011\055\155" \ +"\155\151\156\040\115\111\116\123\011\155\164\151\155\145\040\151" \ +"\163\040\147\162\145\141\164\145\162\040\164\150\141\156\040\050" \ +"\053\116\051\054\040\154\145\163\163\040\164\150\141\156\040\050" \ +"\055\116\051\054\012\011\011\011\157\162\040\145\170\141\143\164" \ +"\154\171\040\116\040\155\151\156\165\164\145\163\040\151\156\040" \ +"\164\150\145\040\160\141\163\164\012\011\055\156\145\167\145\162" \ +"\040\106\111\114\105\011\155\164\151\155\145\040\151\163\040\155" \ +"\157\162\145\040\162\145\143\145\156\164\040\164\150\141\156\040" \ +"\106\111\114\105\047\163\012\011\055\165\163\145\162\040\116\101" \ +"\115\105\057\111\104\011\106\151\154\145\040\151\163\040\157\167" \ +"\156\145\144\040\142\171\040\147\151\166\145\156\040\165\163\145" \ +"\162\012\011\055\147\162\157\165\160\040\116\101\115\105\057\111" \ +"\104\011\106\151\154\145\040\151\163\040\157\167\156\145\144\040" \ +"\142\171\040\147\151\166\145\156\040\147\162\157\165\160\012\011" \ +"\055\163\151\172\145\040\116\133\142\143\153\135\011\106\151\154" \ +"\145\040\163\151\172\145\040\151\163\040\116\040\050\143\072\142" \ +"\171\164\145\163\054\153\072\153\142\171\164\145\163\054\142\072" \ +"\065\061\062\040\142\171\164\145\163\050\144\145\146\056\051\051" \ +"\012\011\011\011\053\057\055\116\072\040\146\151\154\145\040\163" \ +"\151\172\145\040\151\163\040\142\151\147\147\145\162\057\163\155" \ +"\141\154\154\145\162\040\164\150\141\156\040\116\012\011\055\154" \ +"\151\156\153\163\040\116\011\116\165\155\142\145\162\040\157\146" \ +"\040\154\151\156\153\163\040\151\163\040\147\162\145\141\164\145" \ +"\162\040\164\150\141\156\040\050\053\116\051\054\040\154\145\163" \ +"\163\040\164\150\141\156\040\050\055\116\051\054\012\011\011\011" \ +"\157\162\040\145\170\141\143\164\154\171\040\116\012\011\055\160" \ +"\162\165\156\145\011\011\111\146\040\143\165\162\162\145\156\164" \ +"\040\146\151\154\145\040\151\163\040\144\151\162\145\143\164\157" \ +"\162\171\054\040\144\157\156\047\164\040\144\145\163\143\145\156" \ +"\144\040\151\156\164\157\040\151\164\012\111\146\040\156\157\156" \ +"\145\040\157\146\040\164\150\145\040\146\157\154\154\157\167\151" \ +"\156\147\040\141\143\164\151\157\156\163\040\151\163\040\163\160" \ +"\145\143\151\146\151\145\144\054\040\055\160\162\151\156\164\040" \ +"\151\163\040\141\163\163\165\155\145\144\012\011\055\160\162\151" \ +"\156\164\011\011\120\162\151\156\164\040\146\151\154\145\040\156" \ +"\141\155\145\012\011\055\160\162\151\156\164\060\011\011\120\162" \ +"\151\156\164\040\146\151\154\145\040\156\141\155\145\054\040\116" \ +"\125\114\040\164\145\162\155\151\156\141\164\145\144\012\011\055" \ +"\145\170\145\143\040\103\115\104\040\101\122\107\040\073\011\122" \ +"\165\156\040\103\115\104\040\167\151\164\150\040\141\154\154\040" \ +"\151\156\163\164\141\156\143\145\163\040\157\146\040\173\175\040" \ +"\162\145\160\154\141\143\145\144\040\142\171\012\011\011\011\146" \ +"\151\154\145\040\156\141\155\145\056\040\106\141\151\154\163\040" \ +"\151\146\040\103\115\104\040\145\170\151\164\163\040\167\151\164" \ +"\150\040\156\157\156\172\145\162\157\000\115\124\104\137\104\105" \ +"\126\111\103\105\040\117\106\106\123\105\124\040\123\105\103\124" \ +"\117\122\123\012\012\114\157\143\153\040\160\141\162\164\040\157" \ +"\162\040\141\154\154\040\157\146\040\141\156\040\115\124\104\040" \ +"\144\145\166\151\143\145\056\040\111\146\040\123\105\103\124\117" \ +"\122\123\040\151\163\040\055\061\054\040\164\150\145\156\040\141" \ +"\154\154\040\163\145\143\164\157\162\163\012\167\151\154\154\040" \ +"\142\145\040\154\157\143\153\145\144\054\040\162\145\147\141\162" \ +"\144\154\145\163\163\040\157\146\040\164\150\145\040\166\141\154" \ +"\165\145\040\157\146\040\117\106\106\123\105\124\000\115\124\104" \ +"\137\104\105\126\111\103\105\012\012\125\156\154\157\143\153\040" \ +"\141\156\040\115\124\104\040\144\145\166\151\143\145\000\055\166" \ +"\040\106\111\114\105\040\115\124\104\137\104\105\126\111\103\105" \ +"\012\012\103\157\160\171\040\141\156\040\151\155\141\147\145\040" \ +"\164\157\040\115\124\104\040\144\145\166\151\143\145\012\012\011" \ +"\055\166\011\126\145\162\142\157\163\145\000\133\055\163\170\165" \ +"\156\135\040\106\104\174\173\106\111\114\105\040\133\055\143\135" \ +"\040\120\122\117\107\040\101\122\107\123\175\012\012\133\125\156" \ +"\135\154\157\143\153\040\146\151\154\145\040\144\145\163\143\162" \ +"\151\160\164\157\162\054\040\157\162\040\154\157\143\153\040\106" \ +"\111\114\105\054\040\162\165\156\040\120\122\117\107\012\012\011" \ +"\055\163\011\123\150\141\162\145\144\040\154\157\143\153\012\011" \ +"\055\170\011\105\170\143\154\165\163\151\166\145\040\154\157\143" \ +"\153\040\050\144\145\146\141\165\154\164\051\012\011\055\165\011" \ +"\125\156\154\157\143\153\040\106\104\012\011\055\156\011\106\141" \ +"\151\154\040\162\141\164\150\145\162\040\164\150\141\156\040\167" \ +"\141\151\164\000\133\055\142\163\135\040\133\055\167\040\127\111" \ +"\104\124\110\135\040\133\106\111\114\105\135\056\056\056\012\012" \ +"\127\162\141\160\040\151\156\160\165\164\040\154\151\156\145\163" \ +"\040\151\156\040\145\141\143\150\040\106\111\114\105\040\050\157" \ +"\162\040\163\164\144\151\156\051\054\040\167\162\151\164\151\156" \ +"\147\040\164\157\040\163\164\144\157\165\164\012\012\011\055\142" \ +"\011\103\157\165\156\164\040\142\171\164\145\163\040\162\141\164" \ +"\150\145\162\040\164\150\141\156\040\143\157\154\165\155\156\163" \ +"\012\011\055\163\011\102\162\145\141\153\040\141\164\040\163\160" \ +"\141\143\145\163\012\011\055\167\011\125\163\145\040\127\111\104" \ +"\124\110\040\143\157\154\165\155\156\163\040\151\156\163\164\145" \ +"\141\144\040\157\146\040\070\060\000\012\012\104\151\163\160\154" \ +"\141\171\040\164\150\145\040\141\155\157\165\156\164\040\157\146" \ +"\040\146\162\145\145\040\141\156\144\040\165\163\145\144\040\163" \ +"\171\163\164\145\155\040\155\145\155\157\162\171\000\104\105\126" \ +"\111\103\105\012\012\106\162\145\145\040\141\154\154\040\155\145" \ +"\155\157\162\171\040\165\163\145\144\040\142\171\040\164\150\145" \ +"\040\163\160\145\143\151\146\151\145\144\040\162\141\155\144\151" \ +"\163\153\000\133\117\120\124\111\117\116\123\135\040\115\117\125" \ +"\116\124\120\117\111\116\124\012\012\011\055\157\054\055\055\157" \ +"\146\146\163\145\164\075\117\106\106\123\105\124\011\117\146\146" \ +"\163\145\164\040\151\156\040\142\171\164\145\163\040\164\157\040" \ +"\144\151\163\143\141\162\144\040\146\162\157\155\012\011\055\154" \ +"\054\055\055\154\145\156\147\164\150\075\114\105\116\011\011\102" \ +"\171\164\145\163\040\164\157\040\144\151\163\143\141\162\144\012" \ +"\011\055\155\054\055\055\155\151\156\151\155\165\155\075\115\111" \ +"\116\011\115\151\156\151\155\165\155\040\145\170\164\145\156\164" \ +"\040\154\145\156\147\164\150\012\011\055\166\054\055\055\166\145" \ +"\162\142\157\163\145\011\011\120\162\151\156\164\040\156\165\155" \ +"\142\145\162\040\157\146\040\144\151\163\143\141\162\144\145\144" \ +"\040\142\171\164\145\163\000\133\055\144\135\040\106\111\114\105" \ +"\056\056\056\012\012\127\162\151\164\145\040\146\151\154\145\163" \ +"\047\040\142\165\146\146\145\162\145\144\040\142\154\157\143\153" \ +"\163\040\164\157\040\144\151\163\153\012\012\011\055\144\011\101" \ +"\166\157\151\144\040\163\171\156\143\151\156\147\040\155\145\164" \ +"\141\144\141\164\141\000\133\117\120\124\111\117\116\123\135\040" \ +"\110\117\123\124\040\133\114\117\103\101\114\137\106\111\114\105" \ +"\135\040\122\105\115\117\124\105\137\106\111\114\105\012\012\104" \ +"\157\167\156\154\157\141\144\040\141\040\146\151\154\145\040\166" \ +"\151\141\040\106\124\120\012\012\011\055\143\054\055\055\143\157" \ +"\156\164\151\156\165\145\011\011\103\157\156\164\151\156\165\145" \ +"\040\160\162\145\166\151\157\165\163\040\164\162\141\156\163\146" \ +"\145\162\012\011\055\166\054\055\055\166\145\162\142\157\163\145" \ +"\011\011\126\145\162\142\157\163\145\012\011\055\165\054\055\055" \ +"\165\163\145\162\156\141\155\145\040\125\123\105\122\011\125\163" \ +"\145\162\156\141\155\145\012\011\055\160\054\055\055\160\141\163" \ +"\163\167\157\162\144\040\120\101\123\123\011\120\141\163\163\167" \ +"\157\162\144\012\011\055\120\054\055\055\160\157\162\164\040\116" \ +"\125\115\011\011\120\157\162\164\000\133\117\120\124\111\117\116" \ +"\123\135\040\110\117\123\124\040\133\122\105\115\117\124\105\137" \ +"\106\111\114\105\135\040\114\117\103\101\114\137\106\111\114\105" \ +"\012\012\125\160\154\157\141\144\040\141\040\146\151\154\145\040" \ +"\164\157\040\141\040\106\124\120\040\163\145\162\166\145\162\012" \ +"\012\011\055\166\054\055\055\166\145\162\142\157\163\145\011\011" \ +"\126\145\162\142\157\163\145\012\011\055\165\054\055\055\165\163" \ +"\145\162\156\141\155\145\040\125\123\105\122\011\125\163\145\162" \ +"\156\141\155\145\012\011\055\160\054\055\055\160\141\163\163\167" \ +"\157\162\144\040\120\101\123\123\011\120\141\163\163\167\157\162" \ +"\144\012\011\055\120\054\055\055\160\157\162\164\040\116\125\115" \ +"\011\011\120\157\162\164\000\133\117\120\124\111\117\116\123\135" \ +"\040\106\111\114\105\040\157\162\040\120\117\122\124\057\120\122" \ +"\117\124\117\012\012\106\151\156\144\040\160\162\157\143\145\163" \ +"\163\145\163\040\167\150\151\143\150\040\165\163\145\040\106\111" \ +"\114\105\163\040\157\162\040\120\117\122\124\163\012\012\011\055" \ +"\155\011\106\151\156\144\040\160\162\157\143\145\163\163\145\163" \ +"\040\167\150\151\143\150\040\165\163\145\040\163\141\155\145\040" \ +"\146\163\040\141\163\040\106\111\114\105\163\012\011\055\064\054" \ +"\055\066\011\123\145\141\162\143\150\040\157\156\154\171\040\111" \ +"\120\166\064\057\111\120\166\066\040\163\160\141\143\145\012\011" \ +"\055\163\011\104\157\156\047\164\040\144\151\163\160\154\141\171" \ +"\040\120\111\104\163\012\011\055\153\011\113\151\154\154\040\146" \ +"\157\165\156\144\040\160\162\157\143\145\163\163\145\163\012\011" \ +"\055\123\111\107\116\101\114\011\123\151\147\156\141\154\040\164" \ +"\157\040\163\145\156\144\040\050\144\145\146\141\165\154\164\072" \ +"\040\113\111\114\114\051\000\133\117\120\124\111\117\116\123\135" \ +"\040\133\055\055\135\040\117\120\124\123\124\122\111\116\107\040" \ +"\120\101\122\101\115\123\012\012\011\055\141\054\055\055\141\154" \ +"\164\145\162\156\141\164\151\166\145\011\011\101\154\154\157\167" \ +"\040\154\157\156\147\040\157\160\164\151\157\156\163\040\163\164" \ +"\141\162\164\151\156\147\040\167\151\164\150\040\163\151\156\147" \ +"\154\145\040\055\012\011\055\154\054\055\055\154\157\156\147\157" \ +"\160\164\151\157\156\163\075\114\117\120\124\133\054\056\056\056" \ +"\135\011\114\157\156\147\040\157\160\164\151\157\156\163\040\164" \ +"\157\040\162\145\143\157\147\156\151\172\145\012\011\055\156\054" \ +"\055\055\156\141\155\145\075\120\122\117\107\116\101\115\105\011" \ +"\011\124\150\145\040\156\141\155\145\040\165\156\144\145\162\040" \ +"\167\150\151\143\150\040\145\162\162\157\162\163\040\141\162\145" \ +"\040\162\145\160\157\162\164\145\144\012\011\055\157\054\055\055" \ +"\157\160\164\151\157\156\163\075\117\120\124\123\124\122\111\116" \ +"\107\011\011\123\150\157\162\164\040\157\160\164\151\157\156\163" \ +"\040\164\157\040\162\145\143\157\147\156\151\172\145\012\011\055" \ +"\161\054\055\055\161\165\151\145\164\011\011\011\116\157\040\145" \ +"\162\162\157\162\040\155\145\163\163\141\147\145\163\040\157\156" \ +"\040\165\156\162\145\143\157\147\156\151\172\145\144\040\157\160" \ +"\164\151\157\156\163\012\011\055\121\054\055\055\161\165\151\145" \ +"\164\055\157\165\164\160\165\164\011\011\116\157\040\156\157\162" \ +"\155\141\154\040\157\165\164\160\165\164\012\011\055\163\054\055" \ +"\055\163\150\145\154\154\075\123\110\105\114\114\011\011\123\145" \ +"\164\040\163\150\145\154\154\040\161\165\157\164\151\156\147\040" \ +"\143\157\156\166\145\156\164\151\157\156\163\012\011\055\124\054" \ +"\055\055\164\145\163\164\011\011\011\126\145\162\163\151\157\156" \ +"\040\164\145\163\164\040\050\145\170\151\164\163\040\167\151\164" \ +"\150\040\064\051\012\011\055\165\054\055\055\165\156\161\165\157" \ +"\164\145\144\011\011\011\104\157\156\047\164\040\161\165\157\164" \ +"\145\040\157\165\164\160\165\164\012\012\105\170\141\155\160\154" \ +"\145\072\012\012\117\075\140\147\145\164\157\160\164\040\055\154" \ +"\040\142\142\072\040\055\055\040\141\142\072\143\072\072\040\042" \ +"\044\100\042\140\040\174\174\040\145\170\151\164\040\061\012\145" \ +"\166\141\154\040\163\145\164\040\055\055\040\042\044\117\042\012" \ +"\167\150\151\154\145\040\164\162\165\145\073\040\144\157\012\011" \ +"\143\141\163\145\040\042\044\061\042\040\151\156\012\011\055\141" \ +"\051\011\145\143\150\157\040\101\073\040\163\150\151\146\164\073" \ +"\073\012\011\055\142\174\055\055\142\142\051\040\145\143\150\157" \ +"\040\042\102\072\047\044\062\047\042\073\040\163\150\151\146\164" \ +"\040\062\073\073\012\011\055\143\051\011\143\141\163\145\040\042" \ +"\044\062\042\040\151\156\012\011\011\042\042\051\011\145\143\150" \ +"\157\040\103\073\040\163\150\151\146\164\040\062\073\073\012\011" \ +"\011\052\051\011\145\143\150\157\040\042\103\072\047\044\062\047" \ +"\042\073\040\163\150\151\146\164\040\062\073\073\012\011\011\145" \ +"\163\141\143\073\073\012\011\055\055\051\011\163\150\151\146\164" \ +"\073\040\142\162\145\141\153\073\073\012\011\052\051\011\145\143" \ +"\150\157\040\105\162\162\157\162\073\040\145\170\151\164\040\061" \ +"\073\073\012\011\145\163\141\143\012\144\157\156\145\000\133\055" \ +"\110\150\156\154\114\157\161\166\163\162\151\167\106\105\135\040" \ +"\133\055\155\040\116\135\040\133\055\101\057\102\057\103\040\116" \ +"\135\040\120\101\124\124\105\122\116\057\055\145\040\120\101\124" \ +"\124\105\122\116\056\056\056\057\055\146\040\106\111\114\105\040" \ +"\133\106\111\114\105\135\056\056\056\012\012\123\145\141\162\143" \ +"\150\040\146\157\162\040\120\101\124\124\105\122\116\040\151\156" \ +"\040\106\111\114\105\163\040\050\157\162\040\163\164\144\151\156" \ +"\051\012\012\011\055\110\011\101\144\144\040\047\146\151\154\145" \ +"\156\141\155\145\072\047\040\160\162\145\146\151\170\012\011\055" \ +"\150\011\104\157\040\156\157\164\040\141\144\144\040\047\146\151" \ +"\154\145\156\141\155\145\072\047\040\160\162\145\146\151\170\012" \ +"\011\055\156\011\101\144\144\040\047\154\151\156\145\137\156\157" \ +"\072\047\040\160\162\145\146\151\170\012\011\055\154\011\123\150" \ +"\157\167\040\157\156\154\171\040\156\141\155\145\163\040\157\146" \ +"\040\146\151\154\145\163\040\164\150\141\164\040\155\141\164\143" \ +"\150\012\011\055\114\011\123\150\157\167\040\157\156\154\171\040" \ +"\156\141\155\145\163\040\157\146\040\146\151\154\145\163\040\164" \ +"\150\141\164\040\144\157\156\047\164\040\155\141\164\143\150\012" \ +"\011\055\143\011\123\150\157\167\040\157\156\154\171\040\143\157" \ +"\165\156\164\040\157\146\040\155\141\164\143\150\151\156\147\040" \ +"\154\151\156\145\163\012\011\055\157\011\123\150\157\167\040\157" \ +"\156\154\171\040\164\150\145\040\155\141\164\143\150\151\156\147" \ +"\040\160\141\162\164\040\157\146\040\154\151\156\145\012\011\055" \ +"\161\011\121\165\151\145\164\056\040\122\145\164\165\162\156\040" \ +"\060\040\151\146\040\120\101\124\124\105\122\116\040\151\163\040" \ +"\146\157\165\156\144\054\040\061\040\157\164\150\145\162\167\151" \ +"\163\145\012\011\055\166\011\123\145\154\145\143\164\040\156\157" \ +"\156\055\155\141\164\143\150\151\156\147\040\154\151\156\145\163" \ +"\012\011\055\163\011\123\165\160\160\162\145\163\163\040\157\160" \ +"\145\156\040\141\156\144\040\162\145\141\144\040\145\162\162\157" \ +"\162\163\012\011\055\162\011\122\145\143\165\162\163\145\012\011" \ +"\055\151\011\111\147\156\157\162\145\040\143\141\163\145\012\011" \ +"\055\167\011\115\141\164\143\150\040\167\150\157\154\145\040\167" \ +"\157\162\144\163\040\157\156\154\171\012\011\055\170\011\115\141" \ +"\164\143\150\040\167\150\157\154\145\040\154\151\156\145\163\040" \ +"\157\156\154\171\012\011\055\106\011\120\101\124\124\105\122\116" \ +"\040\151\163\040\141\040\154\151\164\145\162\141\154\040\050\156" \ +"\157\164\040\162\145\147\145\170\160\051\012\011\055\105\011\120" \ +"\101\124\124\105\122\116\040\151\163\040\141\156\040\145\170\164" \ +"\145\156\144\145\144\040\162\145\147\145\170\160\012\011\055\155" \ +"\040\116\011\115\141\164\143\150\040\165\160\040\164\157\040\116" \ +"\040\164\151\155\145\163\040\160\145\162\040\146\151\154\145\012" \ +"\011\055\101\040\116\011\120\162\151\156\164\040\116\040\154\151" \ +"\156\145\163\040\157\146\040\164\162\141\151\154\151\156\147\040" \ +"\143\157\156\164\145\170\164\012\011\055\102\040\116\011\120\162" \ +"\151\156\164\040\116\040\154\151\156\145\163\040\157\146\040\154" \ +"\145\141\144\151\156\147\040\143\157\156\164\145\170\164\012\011" \ +"\055\103\040\116\011\123\141\155\145\040\141\163\040\047\055\101" \ +"\040\116\040\055\102\040\116\047\012\011\055\145\040\120\124\122" \ +"\116\011\120\141\164\164\145\162\156\040\164\157\040\155\141\164" \ +"\143\150\012\011\055\146\040\106\111\114\105\011\122\145\141\144" \ +"\040\160\141\164\164\145\162\156\040\146\162\157\155\040\146\151" \ +"\154\145\000\133\125\123\105\122\135\012\012\120\162\151\156\164" \ +"\040\164\150\145\040\147\162\157\165\160\040\155\145\155\142\145" \ +"\162\163\150\151\160\163\040\157\146\040\125\123\105\122\040\157" \ +"\162\040\146\157\162\040\164\150\145\040\143\165\162\162\145\156" \ +"\164\040\160\162\157\143\145\163\163\000\133\055\143\146\164\135" \ +"\040\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157" \ +"\155\160\162\145\163\163\040\106\111\114\105\163\040\050\157\162" \ +"\040\163\164\144\151\156\051\012\012\011\055\143\011\127\162\151" \ +"\164\145\040\164\157\040\163\164\144\157\165\164\012\011\055\146" \ +"\011\106\157\162\143\145\012\011\055\164\011\124\145\163\164\040" \ +"\146\151\154\145\040\151\156\164\145\147\162\151\164\171\000\133" \ +"\055\143\146\144\135\040\133\106\111\114\105\135\056\056\056\012" \ +"\012\103\157\155\160\162\145\163\163\040\106\111\114\105\163\040" \ +"\050\157\162\040\163\164\144\151\156\051\012\012\011\055\144\011" \ +"\104\145\143\157\155\160\162\145\163\163\012\011\055\143\011\127" \ +"\162\151\164\145\040\164\157\040\163\164\144\157\165\164\012\011" \ +"\055\146\011\106\157\162\143\145\000\133\055\144\040\104\105\114" \ +"\101\131\135\040\133\055\156\135\040\133\055\146\135\012\012\110" \ +"\141\154\164\040\164\150\145\040\163\171\163\164\145\155\012\012" \ +"\011\055\144\040\123\105\103\011\104\145\154\141\171\040\151\156" \ +"\164\145\162\166\141\154\012\011\055\156\011\104\157\040\156\157" \ +"\164\040\163\171\156\143\012\011\055\146\011\106\157\162\143\145" \ +"\040\050\144\157\156\047\164\040\147\157\040\164\150\162\157\165" \ +"\147\150\040\151\156\151\164\051\000\133\117\120\124\111\117\116" \ +"\123\135\040\133\106\111\114\105\135\056\056\056\012\012\120\162" \ +"\151\156\164\040\146\151\162\163\164\040\061\060\040\154\151\156" \ +"\145\163\040\157\146\040\145\141\143\150\040\106\111\114\105\040" \ +"\050\157\162\040\163\164\144\151\156\051\040\164\157\040\163\164" \ +"\144\157\165\164\056\012\127\151\164\150\040\155\157\162\145\040" \ +"\164\150\141\156\040\157\156\145\040\106\111\114\105\054\040\160" \ +"\162\145\143\145\144\145\040\145\141\143\150\040\167\151\164\150" \ +"\040\141\040\146\151\154\145\156\141\155\145\040\150\145\141\144" \ +"\145\162\056\012\012\011\055\156\040\116\133\153\142\155\135\011" \ +"\120\162\151\156\164\040\146\151\162\163\164\040\116\040\154\151" \ +"\156\145\163\012\011\055\156\040\055\116\133\153\142\155\135\011" \ +"\120\162\151\156\164\040\141\154\154\040\145\170\143\145\160\164" \ +"\040\116\040\154\141\163\164\040\154\151\156\145\163\012\011\055" \ +"\143\040\133\055\135\116\133\153\142\155\135\011\120\162\151\156" \ +"\164\040\146\151\162\163\164\040\116\040\142\171\164\145\163\012" \ +"\011\055\161\011\011\116\145\166\145\162\040\160\162\151\156\164" \ +"\040\150\145\141\144\145\162\163\012\011\055\166\011\011\101\154" \ +"\167\141\171\163\040\160\162\151\156\164\040\150\145\141\144\145" \ +"\162\163\012\012\116\040\155\141\171\040\142\145\040\163\165\146" \ +"\146\151\170\145\144\040\142\171\040\153\040\050\170\061\060\062" \ +"\064\051\054\040\142\040\050\170\065\061\062\051\054\040\157\162" \ +"\040\155\040\050\170\061\060\062\064\136\062\051\056\000\133\055" \ +"\142\143\103\144\145\146\156\157\163\166\170\122\135\040\133\106" \ +"\111\114\105\135\056\056\056\012\012\104\151\163\160\154\141\171" \ +"\040\106\111\114\105\163\040\050\157\162\040\163\164\144\151\156" \ +"\051\040\151\156\040\141\040\165\163\145\162\040\163\160\145\143" \ +"\151\146\151\145\144\040\146\157\162\155\141\164\012\012\011\055" \ +"\142\011\011\117\156\145\055\142\171\164\145\040\157\143\164\141" \ +"\154\040\144\151\163\160\154\141\171\012\011\055\143\011\011\117" \ +"\156\145\055\142\171\164\145\040\143\150\141\162\141\143\164\145" \ +"\162\040\144\151\163\160\154\141\171\012\011\055\103\011\011\103" \ +"\141\156\157\156\151\143\141\154\040\150\145\170\053\101\123\103" \ +"\111\111\054\040\061\066\040\142\171\164\145\163\040\160\145\162" \ +"\040\154\151\156\145\012\011\055\144\011\011\124\167\157\055\142" \ +"\171\164\145\040\144\145\143\151\155\141\154\040\144\151\163\160" \ +"\154\141\171\012\011\055\145\040\106\117\122\115\101\124\137\123" \ +"\124\122\111\116\107\012\011\055\146\040\106\117\122\115\101\124" \ +"\137\106\111\114\105\012\011\055\156\040\114\105\116\107\124\110" \ +"\011\111\156\164\145\162\160\162\145\164\040\157\156\154\171\040" \ +"\114\105\116\107\124\110\040\142\171\164\145\163\040\157\146\040" \ +"\151\156\160\165\164\012\011\055\157\011\011\124\167\157\055\142" \ +"\171\164\145\040\157\143\164\141\154\040\144\151\163\160\154\141" \ +"\171\012\011\055\163\040\117\106\106\123\105\124\011\123\153\151" \ +"\160\040\117\106\106\123\105\124\040\142\171\164\145\163\012\011" \ +"\055\166\011\011\104\151\163\160\154\141\171\040\141\154\154\040" \ +"\151\156\160\165\164\040\144\141\164\141\012\011\055\170\011\011" \ +"\124\167\157\055\142\171\164\145\040\150\145\170\141\144\145\143" \ +"\151\155\141\154\040\144\151\163\160\154\141\171\012\011\055\122" \ +"\011\011\122\145\166\145\162\163\145\040\157\146\040\047\150\145" \ +"\170\144\165\155\160\040\055\103\166\047\000\133\117\120\124\111" \ +"\117\116\123\135\040\133\125\123\105\122\135\012\012\120\162\151" \ +"\156\164\040\151\156\146\157\162\155\141\164\151\157\156\040\141" \ +"\142\157\165\164\040\125\123\105\122\040\157\162\040\164\150\145" \ +"\040\143\165\162\162\145\156\164\040\165\163\145\162\012\012\011" \ +"\055\165\011\125\163\145\162\040\111\104\012\011\055\147\011\107" \ +"\162\157\165\160\040\111\104\012\011\055\107\011\123\165\160\160" \ +"\154\145\155\145\156\164\141\162\171\040\147\162\157\165\160\040" \ +"\111\104\163\012\011\055\156\011\120\162\151\156\164\040\156\141" \ +"\155\145\163\040\151\156\163\164\145\141\144\040\157\146\040\156" \ +"\165\155\142\145\162\163\012\011\055\162\011\120\162\151\156\164" \ +"\040\162\145\141\154\040\111\104\040\151\156\163\164\145\141\144" \ +"\040\157\146\040\145\146\146\145\143\164\151\166\145\040\111\104" \ +"\000\133\055\141\135\040\151\156\164\145\162\146\141\143\145\040" \ +"\133\141\144\144\162\145\163\163\135\012\012\103\157\156\146\151" \ +"\147\165\162\145\040\141\040\156\145\164\167\157\162\153\040\151" \ +"\156\164\145\162\146\141\143\145\012\012\011\133\141\144\144\040" \ +"\101\104\104\122\105\123\123\133\057\120\122\105\106\111\130\114" \ +"\105\116\135\135\012\011\133\144\145\154\040\101\104\104\122\105" \ +"\123\123\133\057\120\122\105\106\111\130\114\105\116\135\135\012" \ +"\011\133\133\055\135\142\162\157\141\144\143\141\163\164\040\133" \ +"\101\104\104\122\105\123\123\135\135\040\133\133\055\135\160\157" \ +"\151\156\164\157\160\157\151\156\164\040\133\101\104\104\122\105" \ +"\123\123\135\135\012\011\133\156\145\164\155\141\163\153\040\101" \ +"\104\104\122\105\123\123\135\040\133\144\163\164\141\144\144\162" \ +"\040\101\104\104\122\105\123\123\135\012\011\133\150\167\040\145" \ +"\164\150\145\162\040\101\104\104\122\105\123\123\135\040\133\155" \ +"\145\164\162\151\143\040\116\116\135\040\133\155\164\165\040\116" \ +"\116\135\012\011\133\133\055\135\164\162\141\151\154\145\162\163" \ +"\135\040\133\133\055\135\141\162\160\135\040\133\133\055\135\141" \ +"\154\154\155\165\154\164\151\135\012\011\133\155\165\154\164\151" \ +"\143\141\163\164\135\040\133\133\055\135\160\162\157\155\151\163" \ +"\143\135\040\133\164\170\161\165\145\165\145\154\145\156\040\116" \ +"\116\135\040\133\133\055\135\144\171\156\141\155\151\143\135\012" \ +"\011\133\165\160\174\144\157\167\156\135\040\056\056\056\000\133" \ +"\055\146\145\135\040\133\055\161\040\116\135\040\133\055\122\040" \ +"\116\135\040\133\103\117\116\106\106\111\114\105\135\012\012\114" \ +"\151\163\164\145\156\040\146\157\162\040\156\145\164\167\157\162" \ +"\153\040\143\157\156\156\145\143\164\151\157\156\163\040\141\156" \ +"\144\040\154\141\165\156\143\150\040\160\162\157\147\162\141\155" \ +"\163\012\012\011\055\146\011\122\165\156\040\151\156\040\146\157" \ +"\162\145\147\162\157\165\156\144\012\011\055\145\011\114\157\147" \ +"\040\164\157\040\163\164\144\145\162\162\012\011\055\161\040\116" \ +"\011\123\157\143\153\145\164\040\154\151\163\164\145\156\040\161" \ +"\165\145\165\145\040\050\144\145\146\141\165\154\164\072\040\061" \ +"\062\070\051\012\011\055\122\040\116\011\120\141\165\163\145\040" \ +"\163\145\162\166\151\143\145\163\040\141\146\164\145\162\040\116" \ +"\040\143\157\156\156\145\143\164\163\057\155\151\156\012\011\011" \ +"\050\144\145\146\141\165\154\164\072\040\060\040\055\040\144\151" \ +"\163\141\142\154\145\144\051\000\106\111\114\105\040\133\123\131" \ +"\115\102\117\114\075\126\101\114\125\105\135\056\056\056\012\012" \ +"\114\157\141\144\040\164\150\145\040\163\160\145\143\151\146\151" \ +"\145\144\040\153\145\162\156\145\154\040\155\157\144\165\154\145" \ +"\163\040\151\156\164\157\040\164\150\145\040\153\145\162\156\145" \ +"\154\000\133\055\143\144\104\163\160\135\040\133\055\157\040\125" \ +"\123\105\122\135\040\133\055\147\040\107\122\120\135\040\133\055" \ +"\155\040\115\117\104\105\135\040\133\123\117\125\122\103\105\135" \ +"\056\056\056\040\104\105\123\124\012\012\103\157\160\171\040\146" \ +"\151\154\145\163\040\141\156\144\040\163\145\164\040\141\164\164" \ +"\162\151\142\165\164\145\163\012\012\011\055\143\011\112\165\163" \ +"\164\040\143\157\160\171\040\050\144\145\146\141\165\154\164\051" \ +"\012\011\055\144\011\103\162\145\141\164\145\040\144\151\162\145" \ +"\143\164\157\162\151\145\163\012\011\055\104\011\103\162\145\141" \ +"\164\145\040\154\145\141\144\151\156\147\040\164\141\162\147\145" \ +"\164\040\144\151\162\145\143\164\157\162\151\145\163\012\011\055" \ +"\163\011\123\164\162\151\160\040\163\171\155\142\157\154\040\164" \ +"\141\142\154\145\012\011\055\160\011\120\162\145\163\145\162\166" \ +"\145\040\144\141\164\145\012\011\055\157\040\125\123\105\122\011" \ +"\123\145\164\040\157\167\156\145\162\163\150\151\160\012\011\055" \ +"\147\040\107\122\120\011\123\145\164\040\147\162\157\165\160\040" \ +"\157\167\156\145\162\163\150\151\160\012\011\055\155\040\115\117" \ +"\104\105\011\123\145\164\040\160\145\162\155\151\163\163\151\157" \ +"\156\163\000\133\055\143\040\061\055\063\135\040\133\055\156\040" \ +"\060\055\067\135\040\133\055\160\040\120\111\104\135\040\133\120" \ +"\122\117\107\135\012\012\103\150\141\156\147\145\040\111\057\117" \ +"\040\160\162\151\157\162\151\164\171\040\141\156\144\040\143\154" \ +"\141\163\163\012\012\011\055\143\011\103\154\141\163\163\056\040" \ +"\061\072\162\145\141\154\164\151\155\145\040\062\072\142\145\163" \ +"\164\055\145\146\146\157\162\164\040\063\072\151\144\154\145\012" \ +"\011\055\156\011\120\162\151\157\162\151\164\171\000\133\055\143" \ +"\135\040\133\055\144\135\040\133\055\164\135\040\133\055\172\135" \ +"\040\133\055\153\174\055\155\135\040\133\101\114\114\174\102\114" \ +"\117\103\113\104\105\126\056\056\056\135\040\133\111\116\124\105" \ +"\122\126\101\114\040\133\103\117\125\116\124\135\135\012\012\122" \ +"\145\160\157\162\164\040\103\120\125\040\141\156\144\040\111\057" \ +"\117\040\163\164\141\164\151\163\164\151\143\163\012\012\011\055" \ +"\143\011\123\150\157\167\040\103\120\125\040\165\164\151\154\151" \ +"\172\141\164\151\157\156\012\011\055\144\011\123\150\157\167\040" \ +"\144\145\166\151\143\145\040\165\164\151\154\151\172\141\164\151" \ +"\157\156\012\011\055\164\011\120\162\151\156\164\040\143\165\162" \ +"\162\145\156\164\040\164\151\155\145\012\011\055\172\011\117\155" \ +"\151\164\040\144\145\166\151\143\145\163\040\167\151\164\150\040" \ +"\156\157\040\141\143\164\151\166\151\164\171\012\011\055\153\011" \ +"\125\163\145\040\153\142\057\163\012\011\055\155\011\125\163\145" \ +"\040\115\142\057\163\000\133\117\120\124\111\117\116\123\135\040" \ +"\173\141\144\144\162\145\163\163\040\174\040\162\157\165\164\145" \ +"\040\174\040\154\151\156\153\040\174\040\162\165\154\145\175\040" \ +"\173\103\117\115\115\101\116\104\175\012\012\151\160\040\133\117" \ +"\120\124\111\117\116\123\135\040\117\102\112\105\103\124\040\173" \ +"\103\117\115\115\101\116\104\175\012\167\150\145\162\145\040\117" \ +"\102\112\105\103\124\040\072\075\040\173\141\144\144\162\145\163" \ +"\163\040\174\040\162\157\165\164\145\040\174\040\154\151\156\153" \ +"\040\174\040\162\165\154\145\175\012\117\120\124\111\117\116\123" \ +"\040\072\075\040\173\040\055\146\133\141\155\151\154\171\135\040" \ +"\173\040\151\156\145\164\040\174\040\151\156\145\164\066\040\174" \ +"\040\154\151\156\153\040\175\040\174\040\055\157\133\156\145\154" \ +"\151\156\145\135\040\175\000\133\055\154\135\040\133\055\123\111" \ +"\107\135\040\120\111\104\056\056\056\012\012\123\145\156\144\040" \ +"\141\040\163\151\147\156\141\154\040\050\144\145\146\141\165\154" \ +"\164\072\040\124\105\122\115\051\040\164\157\040\147\151\166\145" \ +"\156\040\120\111\104\163\012\012\011\055\154\011\114\151\163\164" \ +"\040\141\154\154\040\163\151\147\156\141\154\040\156\141\155\145" \ +"\163\040\141\156\144\040\156\165\155\142\145\162\163\000\133\055" \ +"\154\135\040\133\055\161\135\040\133\055\123\111\107\135\040\120" \ +"\122\117\103\105\123\123\137\116\101\115\105\056\056\056\012\012" \ +"\123\145\156\144\040\141\040\163\151\147\156\141\154\040\050\144" \ +"\145\146\141\165\154\164\072\040\124\105\122\115\051\040\164\157" \ +"\040\147\151\166\145\156\040\160\162\157\143\145\163\163\145\163" \ +"\012\012\011\055\154\011\114\151\163\164\040\141\154\154\040\163" \ +"\151\147\156\141\154\040\156\141\155\145\163\040\141\156\144\040" \ +"\156\165\155\142\145\162\163\012\011\055\161\011\104\157\156\047" \ +"\164\040\143\157\155\160\154\141\151\156\040\151\146\040\156\157" \ +"\040\160\162\157\143\145\163\163\145\163\040\167\145\162\145\040" \ +"\153\151\154\154\145\144\000\133\055\154\135\040\133\055\123\111" \ +"\107\135\040\133\055\157\040\120\111\104\135\056\056\056\012\012" \ +"\123\145\156\144\040\141\040\163\151\147\156\141\154\040\050\144" \ +"\145\146\141\165\154\164\072\040\124\105\122\115\051\040\164\157" \ +"\040\141\154\154\040\160\162\157\143\145\163\163\145\163\040\157" \ +"\165\164\163\151\144\145\040\143\165\162\162\145\156\164\040\163" \ +"\145\163\163\151\157\156\012\012\011\055\154\011\114\151\163\164" \ +"\040\141\154\154\040\163\151\147\156\141\154\040\156\141\155\145" \ +"\163\040\141\156\144\040\156\165\155\142\145\162\163\012\011\055" \ +"\157\040\120\111\104\011\104\157\156\047\164\040\163\151\147\156" \ +"\141\154\040\164\150\151\163\040\120\111\104\000\133\055\105\116" \ +"\150\176\111\077\135\040\133\106\111\114\105\135\056\056\056\012" \ +"\012\126\151\145\167\040\106\111\114\105\040\050\157\162\040\163" \ +"\164\144\151\156\051\040\157\156\145\040\163\143\162\145\145\156" \ +"\146\165\154\040\141\164\040\141\040\164\151\155\145\012\012\011" \ +"\055\105\011\121\165\151\164\040\157\156\143\145\040\164\150\145" \ +"\040\145\156\144\040\157\146\040\141\040\146\151\154\145\040\151" \ +"\163\040\162\145\141\143\150\145\144\012\011\055\116\011\120\162" \ +"\145\146\151\170\040\154\151\156\145\040\156\165\155\142\145\162" \ +"\040\164\157\040\145\141\143\150\040\154\151\156\145\012\011\055" \ +"\111\011\111\147\156\157\162\145\040\143\141\163\145\040\151\156" \ +"\040\141\154\154\040\163\145\141\162\143\150\145\163\012\011\055" \ +"\176\011\123\165\160\160\162\145\163\163\040\176\163\040\144\151" \ +"\163\160\154\141\171\145\144\040\160\141\163\164\040\105\117\106" \ +"\000\133\117\120\124\111\117\116\123\135\040\124\101\122\107\105" \ +"\124\056\056\056\040\114\111\116\113\174\104\111\122\012\012\103" \ +"\162\145\141\164\145\040\141\040\154\151\156\153\040\114\111\116" \ +"\113\040\157\162\040\104\111\122\057\124\101\122\107\105\124\040" \ +"\164\157\040\164\150\145\040\163\160\145\143\151\146\151\145\144" \ +"\040\124\101\122\107\105\124\050\163\051\012\012\011\055\163\011" \ +"\115\141\153\145\040\163\171\155\154\151\156\153\163\040\151\156" \ +"\163\164\145\141\144\040\157\146\040\150\141\162\144\154\151\156" \ +"\153\163\012\011\055\146\011\122\145\155\157\166\145\040\145\170" \ +"\151\163\164\151\156\147\040\144\145\163\164\151\156\141\164\151" \ +"\157\156\163\012\011\055\156\011\104\157\156\047\164\040\144\145" \ +"\162\145\146\145\162\145\156\143\145\040\163\171\155\154\151\156" \ +"\153\163\040\055\040\164\162\145\141\164\040\154\151\153\145\040" \ +"\156\157\162\155\141\154\040\146\151\154\145\012\011\055\142\011" \ +"\115\141\153\145\040\141\040\142\141\143\153\165\160\040\157\146" \ +"\040\164\150\145\040\164\141\162\147\145\164\040\050\151\146\040" \ +"\145\170\151\163\164\163\051\040\142\145\146\157\162\145\040\154" \ +"\151\156\153\040\157\160\145\162\141\164\151\157\156\012\011\055" \ +"\123\040\163\165\146\011\125\163\145\040\163\165\146\146\151\170" \ +"\040\151\156\163\164\145\141\144\040\157\146\040\176\040\167\150" \ +"\145\156\040\155\141\153\151\156\147\040\142\141\143\153\165\160" \ +"\040\146\151\154\145\163\012\011\055\124\011\062\156\144\040\141" \ +"\162\147\040\155\165\163\164\040\142\145\040\141\040\104\111\122" \ +"\012\011\055\166\011\126\145\162\142\157\163\145\000\133\055\162" \ +"\135\040\133\055\157\040\117\106\123\135\040\173\055\146\174\114" \ +"\117\117\120\104\105\126\175\040\106\111\114\105\040\055\040\141" \ +"\163\163\157\143\151\141\164\145\040\154\157\157\160\040\144\145" \ +"\166\151\143\145\163\012\011\154\157\163\145\164\165\160\040\055" \ +"\144\040\114\117\117\120\104\105\126\040\055\040\144\151\163\141" \ +"\163\163\157\143\151\141\164\145\012\011\154\157\163\145\164\165" \ +"\160\040\055\141\040\055\040\163\150\157\167\040\163\164\141\164" \ +"\165\163\012\011\154\157\163\145\164\165\160\040\055\146\040\055" \ +"\040\163\150\157\167\040\156\145\170\164\040\146\162\145\145\040" \ +"\154\157\157\160\040\144\145\166\151\143\145\012\012\011\055\157" \ +"\040\117\106\123\011\123\164\141\162\164\040\117\106\123\040\142" \ +"\171\164\145\163\040\151\156\164\157\040\106\111\114\105\012\011" \ +"\055\162\011\122\145\141\144\055\157\156\154\171\012\011\055\146" \ +"\011\123\150\157\167\057\165\163\145\040\156\145\170\164\040\146" \ +"\162\145\145\040\154\157\157\160\040\144\145\166\151\143\145\000" \ +"\133\055\061\101\141\103\170\144\114\110\122\106\160\154\151\156" \ +"\163\145\150\162\123\130\166\143\164\165\135\040\133\055\167\040" \ +"\127\111\104\124\110\135\040\133\106\111\114\105\135\056\056\056" \ +"\012\012\114\151\163\164\040\144\151\162\145\143\164\157\162\171" \ +"\040\143\157\156\164\145\156\164\163\012\012\011\055\061\011\117" \ +"\156\145\040\143\157\154\165\155\156\040\157\165\164\160\165\164" \ +"\012\011\055\141\011\111\156\143\154\165\144\145\040\145\156\164" \ +"\162\151\145\163\040\167\150\151\143\150\040\163\164\141\162\164" \ +"\040\167\151\164\150\040\056\012\011\055\101\011\114\151\153\145" \ +"\040\055\141\054\040\142\165\164\040\145\170\143\154\165\144\145" \ +"\040\056\040\141\156\144\040\056\056\012\011\055\103\011\114\151" \ +"\163\164\040\142\171\040\143\157\154\165\155\156\163\012\011\055" \ +"\170\011\114\151\163\164\040\142\171\040\154\151\156\145\163\012" \ +"\011\055\144\011\114\151\163\164\040\144\151\162\145\143\164\157" \ +"\162\171\040\145\156\164\162\151\145\163\040\151\156\163\164\145" \ +"\141\144\040\157\146\040\143\157\156\164\145\156\164\163\012\011" \ +"\055\114\011\106\157\154\154\157\167\040\163\171\155\154\151\156" \ +"\153\163\012\011\055\110\011\106\157\154\154\157\167\040\163\171" \ +"\155\154\151\156\153\163\040\157\156\040\143\157\155\155\141\156" \ +"\144\040\154\151\156\145\012\011\055\122\011\122\145\143\165\162" \ +"\163\145\012\011\055\160\011\101\160\160\145\156\144\040\057\040" \ +"\164\157\040\144\151\162\040\145\156\164\162\151\145\163\012\011" \ +"\055\106\011\101\160\160\145\156\144\040\151\156\144\151\143\141" \ +"\164\157\162\040\050\157\156\145\040\157\146\040\052\057\075\100" \ +"\174\051\040\164\157\040\145\156\164\162\151\145\163\012\011\055" \ +"\154\011\114\157\156\147\040\154\151\163\164\151\156\147\040\146" \ +"\157\162\155\141\164\012\011\055\151\011\114\151\163\164\040\151" \ +"\156\157\144\145\040\156\165\155\142\145\162\163\012\011\055\156" \ +"\011\114\151\163\164\040\156\165\155\145\162\151\143\040\125\111" \ +"\104\163\040\141\156\144\040\107\111\104\163\040\151\156\163\164" \ +"\145\141\144\040\157\146\040\156\141\155\145\163\012\011\055\163" \ +"\011\114\151\163\164\040\141\154\154\157\143\141\164\145\144\040" \ +"\142\154\157\143\153\163\012\011\055\145\011\114\151\163\164\040" \ +"\146\165\154\154\040\144\141\164\145\040\141\156\144\040\164\151" \ +"\155\145\012\011\055\150\011\114\151\163\164\040\163\151\172\145" \ +"\163\040\151\156\040\150\165\155\141\156\040\162\145\141\144\141" \ +"\142\154\145\040\146\157\162\155\141\164\040\050\061\113\040\062" \ +"\064\063\115\040\062\107\051\012\011\055\162\011\123\157\162\164" \ +"\040\151\156\040\162\145\166\145\162\163\145\040\157\162\144\145" \ +"\162\012\011\055\123\011\123\157\162\164\040\142\171\040\163\151" \ +"\172\145\012\011\055\130\011\123\157\162\164\040\142\171\040\145" \ +"\170\164\145\156\163\151\157\156\012\011\055\166\011\123\157\162" \ +"\164\040\142\171\040\166\145\162\163\151\157\156\012\011\055\143" \ +"\011\127\151\164\150\040\055\154\072\040\163\157\162\164\040\142" \ +"\171\040\143\164\151\155\145\012\011\055\164\011\127\151\164\150" \ +"\040\055\154\072\040\163\157\162\164\040\142\171\040\155\164\151" \ +"\155\145\012\011\055\165\011\127\151\164\150\040\055\154\072\040" \ +"\163\157\162\164\040\142\171\040\141\164\151\155\145\012\011\055" \ +"\167\040\116\011\101\163\163\165\155\145\040\164\150\145\040\164" \ +"\145\162\155\151\156\141\154\040\151\163\040\116\040\143\157\154" \ +"\165\155\156\163\040\167\151\144\145\012\011\055\055\143\157\154" \ +"\157\162\133\075\173\141\154\167\141\171\163\054\156\145\166\145" \ +"\162\054\141\165\164\157\175\135\011\103\157\156\164\162\157\154" \ +"\040\143\157\154\157\162\151\156\147\000\133\055\122\141\144\154" \ +"\166\135\040\133\106\111\114\105\135\056\056\056\012\012\114\151" \ +"\163\164\040\146\151\154\145\040\141\164\164\162\151\142\165\164" \ +"\145\163\040\157\156\040\141\156\040\145\170\164\062\040\146\163" \ +"\012\012\011\055\122\011\122\145\143\165\162\163\145\012\011\055" \ +"\141\011\104\157\156\047\164\040\150\151\144\145\040\145\156\164" \ +"\162\151\145\163\040\163\164\141\162\164\151\156\147\040\167\151" \ +"\164\150\040\056\012\011\055\144\011\114\151\163\164\040\144\151" \ +"\162\145\143\164\157\162\171\040\145\156\164\162\151\145\163\040" \ +"\151\156\163\164\145\141\144\040\157\146\040\143\157\156\164\145" \ +"\156\164\163\012\011\055\154\011\114\151\163\164\040\154\157\156" \ +"\147\040\146\154\141\147\040\156\141\155\145\163\012\011\055\166" \ +"\011\114\151\163\164\040\164\150\145\040\146\151\154\145\047\163" \ +"\040\166\145\162\163\151\157\156\057\147\145\156\145\162\141\164" \ +"\151\157\156\040\156\165\155\142\145\162\000\012\012\114\151\163" \ +"\164\040\164\150\145\040\143\165\162\162\145\156\164\154\171\040" \ +"\154\157\141\144\145\144\040\153\145\162\156\145\154\040\155\157" \ +"\144\165\154\145\163\000\012\012\123\150\157\167\040\141\154\154" \ +"\040\157\160\145\156\040\146\151\154\145\163\000\010\000\133\106" \ +"\111\114\105\135\056\056\056\012\012\104\145\143\157\155\160\162" \ +"\145\163\163\040\164\157\040\163\164\144\157\165\164\000\055\144" \ +"\040\133\055\143\146\135\040\133\106\111\114\105\135\056\056\056" \ +"\012\012\104\145\143\157\155\160\162\145\163\163\040\106\111\114" \ +"\105\040\050\157\162\040\163\164\144\151\156\051\012\012\011\055" \ +"\144\011\104\145\143\157\155\160\162\145\163\163\012\011\055\143" \ +"\011\127\162\151\164\145\040\164\157\040\163\164\144\157\165\164" \ +"\012\011\055\146\011\106\157\162\143\145\000\133\055\143\146\166" \ +"\144\061\062\063\064\065\066\067\070\071\103\106\135\040\133\106" \ +"\111\114\105\135\056\056\056\012\012\011\055\061\056\056\071\011" \ +"\103\157\155\160\162\145\163\163\151\157\156\040\154\145\166\145" \ +"\154\012\011\055\144\011\104\145\143\157\155\160\162\145\163\163" \ +"\012\011\055\143\011\127\162\151\164\145\040\164\157\040\163\164" \ +"\144\157\165\164\012\011\055\146\011\106\157\162\143\145\012\011" \ +"\055\166\011\126\145\162\142\157\163\145\012\011\055\106\011\104" \ +"\157\156\047\164\040\163\164\157\162\145\040\157\162\040\166\145" \ +"\162\151\146\171\040\143\150\145\143\153\163\165\155\012\011\055" \ +"\103\011\101\154\163\157\040\167\162\151\164\145\040\143\150\145" \ +"\143\153\163\165\155\040\157\146\040\143\157\155\160\162\145\163" \ +"\163\145\144\040\142\154\157\143\153\000\133\055\166\103\106\135" \ +"\040\133\106\111\114\105\135\056\056\056\012\012\011\055\166\011" \ +"\126\145\162\142\157\163\145\012\011\055\106\011\104\157\156\047" \ +"\164\040\163\164\157\162\145\040\157\162\040\166\145\162\151\146" \ +"\171\040\143\150\145\143\153\163\165\155\000\133\055\141\167\135" \ +"\040\133\115\101\116\120\101\107\105\135\056\056\056\012\012\106" \ +"\157\162\155\141\164\040\141\156\144\040\144\151\163\160\154\141" \ +"\171\040\155\141\156\165\141\154\040\160\141\147\145\012\012\011" \ +"\055\141\011\104\151\163\160\154\141\171\040\141\154\154\040\160" \ +"\141\147\145\163\012\011\055\167\011\123\150\157\167\040\160\141" \ +"\147\145\040\154\157\143\141\164\151\157\156\163\000\133\055\143" \ +"\133\163\167\135\135\040\133\106\111\114\105\135\056\056\056\012" \ +"\012\120\162\151\156\164\040\157\162\040\143\150\145\143\153\040" \ +"\115\104\065\040\143\150\145\143\153\163\165\155\163\012\012\011" \ +"\055\143\011\103\150\145\143\153\040\163\165\155\163\040\141\147" \ +"\141\151\156\163\164\040\154\151\163\164\040\151\156\040\106\111" \ +"\114\105\163\012\011\055\163\011\104\157\156\047\164\040\157\165" \ +"\164\160\165\164\040\141\156\171\164\150\151\156\147\054\040\163" \ +"\164\141\164\165\163\040\143\157\144\145\040\163\150\157\167\163" \ +"\040\163\165\143\143\145\163\163\012\011\055\167\011\127\141\162" \ +"\156\040\141\142\157\165\164\040\151\155\160\162\157\160\145\162" \ +"\154\171\040\146\157\162\155\141\164\164\145\144\040\143\150\145" \ +"\143\153\163\165\155\040\154\151\156\145\163\000\133\171\174\156" \ +"\135\012\012\103\157\156\164\162\157\154\040\167\162\151\164\145" \ +"\040\141\143\143\145\163\163\040\164\157\040\171\157\165\162\040" \ +"\164\145\162\155\151\156\141\154\012\011\171\011\101\154\154\157" \ +"\167\040\167\162\151\164\145\040\141\143\143\145\163\163\040\164" \ +"\157\040\171\157\165\162\040\164\145\162\155\151\156\141\154\012" \ +"\011\156\011\104\151\163\141\154\154\157\167\040\167\162\151\164" \ +"\145\040\141\143\143\145\163\163\040\164\157\040\171\157\165\162" \ +"\040\164\145\162\155\151\156\141\154\000\133\117\120\124\111\117" \ +"\116\123\135\040\104\111\122\105\103\124\117\122\131\056\056\056" \ +"\012\012\103\162\145\141\164\145\040\104\111\122\105\103\124\117" \ +"\122\131\012\012\011\055\155\040\115\117\104\105\011\115\157\144" \ +"\145\012\011\055\160\011\116\157\040\145\162\162\157\162\040\151" \ +"\146\040\145\170\151\163\164\163\073\040\155\141\153\145\040\160" \ +"\141\162\145\156\164\040\144\151\162\145\143\164\157\162\151\145" \ +"\163\040\141\163\040\156\145\145\144\145\144\000\133\055\166\135" \ +"\040\133\055\156\040\114\101\102\105\114\135\040\102\114\117\103" \ +"\113\104\105\126\040\133\113\102\131\124\105\123\135\012\012\115" \ +"\141\153\145\040\141\040\106\101\124\063\062\040\146\151\154\145" \ +"\163\171\163\164\145\155\012\012\011\055\166\011\126\145\162\142" \ +"\157\163\145\012\011\055\156\040\114\102\114\011\126\157\154\165" \ +"\155\145\040\154\141\142\145\154\000\133\055\106\156\135\040\133" \ +"\055\142\040\102\114\113\137\123\111\132\105\135\040\133\055\151" \ +"\040\111\116\117\104\105\137\122\101\124\111\117\135\040\133\055" \ +"\111\040\111\116\117\104\105\137\123\111\132\105\135\040\133\055" \ +"\155\040\122\105\123\105\122\126\105\104\137\120\105\122\103\105" \ +"\116\124\135\040\133\055\114\040\114\101\102\105\114\135\040\102" \ +"\114\117\103\113\104\105\126\040\133\113\102\131\124\105\123\135" \ +"\012\012\011\055\142\040\102\114\113\137\123\111\132\105\011\102" \ +"\154\157\143\153\040\163\151\172\145\054\040\142\171\164\145\163" \ +"\012\011\055\106\011\011\106\157\162\143\145\012\011\055\151\040" \ +"\122\101\124\111\117\011\115\141\170\040\156\165\155\142\145\162" \ +"\040\157\146\040\146\151\154\145\163\040\151\163\040\146\151\154" \ +"\145\163\171\163\164\145\155\137\163\151\172\145\040\057\040\122" \ +"\101\124\111\117\012\011\055\111\040\102\131\124\105\123\011\111" \ +"\156\157\144\145\040\163\151\172\145\040\050\155\151\156\040\061" \ +"\062\070\051\012\011\055\114\040\114\102\114\011\011\126\157\154" \ +"\165\155\145\040\154\141\142\145\154\012\011\055\155\040\120\105" \ +"\122\103\105\116\124\011\120\145\162\143\145\156\164\040\157\146" \ +"\040\142\154\157\143\153\163\040\164\157\040\162\145\163\145\162" \ +"\166\145\040\146\157\162\040\141\144\155\151\156\012\011\055\156" \ +"\011\011\104\162\171\040\162\165\156\000\133\055\155\040\115\117" \ +"\104\105\135\040\116\101\115\105\012\012\103\162\145\141\164\145" \ +"\040\156\141\155\145\144\040\160\151\160\145\012\012\011\055\155" \ +"\040\115\117\104\105\011\115\157\144\145\040\050\144\145\146\141" \ +"\165\154\164\040\141\075\162\167\051\000\133\055\106\156\135\040" \ +"\133\055\142\040\102\114\113\137\123\111\132\105\135\040\133\055" \ +"\151\040\111\116\117\104\105\137\122\101\124\111\117\135\040\133" \ +"\055\111\040\111\116\117\104\105\137\123\111\132\105\135\040\133" \ +"\055\155\040\122\105\123\105\122\126\105\104\137\120\105\122\103" \ +"\105\116\124\135\040\133\055\114\040\114\101\102\105\114\135\040" \ +"\102\114\117\103\113\104\105\126\040\133\113\102\131\124\105\123" \ +"\135\012\012\011\055\142\040\102\114\113\137\123\111\132\105\011" \ +"\102\154\157\143\153\040\163\151\172\145\054\040\142\171\164\145" \ +"\163\012\011\055\106\011\011\106\157\162\143\145\012\011\055\151" \ +"\040\122\101\124\111\117\011\115\141\170\040\156\165\155\142\145" \ +"\162\040\157\146\040\146\151\154\145\163\040\151\163\040\146\151" \ +"\154\145\163\171\163\164\145\155\137\163\151\172\145\040\057\040" \ +"\122\101\124\111\117\012\011\055\111\040\102\131\124\105\123\011" \ +"\111\156\157\144\145\040\163\151\172\145\040\050\155\151\156\040" \ +"\061\062\070\051\012\011\055\114\040\114\102\114\011\011\126\157" \ +"\154\165\155\145\040\154\141\142\145\154\012\011\055\155\040\120" \ +"\105\122\103\105\116\124\011\120\145\162\143\145\156\164\040\157" \ +"\146\040\142\154\157\143\153\163\040\164\157\040\162\145\163\145" \ +"\162\166\145\040\146\157\162\040\141\144\155\151\156\012\011\055" \ +"\156\011\011\104\162\171\040\162\165\156\000\133\055\166\135\040" \ +"\133\055\156\040\114\101\102\105\114\135\040\102\114\117\103\113" \ +"\104\105\126\040\133\113\102\131\124\105\123\135\012\012\115\141" \ +"\153\145\040\141\040\106\101\124\063\062\040\146\151\154\145\163" \ +"\171\163\164\145\155\012\012\011\055\166\011\126\145\162\142\157" \ +"\163\145\012\011\055\156\040\114\102\114\011\126\157\154\165\155" \ +"\145\040\154\141\142\145\154\000\133\055\155\040\115\117\104\105" \ +"\135\040\116\101\115\105\040\124\131\120\105\040\115\101\112\117" \ +"\122\040\115\111\116\117\122\012\012\103\162\145\141\164\145\040" \ +"\141\040\163\160\145\143\151\141\154\040\146\151\154\145\040\050" \ +"\142\154\157\143\153\054\040\143\150\141\162\141\143\164\145\162" \ +"\054\040\157\162\040\160\151\160\145\051\012\012\011\055\155\040" \ +"\115\117\104\105\011\103\162\145\141\164\151\157\156\040\155\157" \ +"\144\145\040\050\144\145\146\141\165\154\164\040\141\075\162\167" \ +"\051\012\124\131\120\105\072\012\011\142\011\102\154\157\143\153" \ +"\040\144\145\166\151\143\145\012\011\143\040\157\162\040\165\011" \ +"\103\150\141\162\141\143\164\145\162\040\144\145\166\151\143\145" \ +"\012\011\160\011\116\141\155\145\144\040\160\151\160\145\040\050" \ +"\115\101\112\117\122\040\141\156\144\040\115\111\116\117\122\040" \ +"\141\162\145\040\151\147\156\157\162\145\144\051\000\133\055\114" \ +"\040\114\102\114\135\040\102\114\117\103\113\104\105\126\040\133" \ +"\113\102\131\124\105\123\135\012\012\120\162\145\160\141\162\145" \ +"\040\102\114\117\103\113\104\105\126\040\164\157\040\142\145\040" \ +"\165\163\145\144\040\141\163\040\163\167\141\160\040\160\141\162" \ +"\164\151\164\151\157\156\012\012\011\055\114\040\114\102\114\011" \ +"\114\141\142\145\154\000\133\055\144\164\135\040\133\055\160\040" \ +"\104\111\122\135\040\133\124\105\115\120\114\101\124\105\135\012" \ +"\012\103\162\145\141\164\145\040\141\040\164\145\155\160\157\162" \ +"\141\162\171\040\146\151\154\145\040\167\151\164\150\040\156\141" \ +"\155\145\040\142\141\163\145\144\040\157\156\040\124\105\115\120" \ +"\114\101\124\105\040\141\156\144\040\160\162\151\156\164\040\151" \ +"\164\163\040\156\141\155\145\056\012\124\105\115\120\114\101\124" \ +"\105\040\155\165\163\164\040\145\156\144\040\167\151\164\150\040" \ +"\130\130\130\130\130\130\040\050\145\056\147\056\040\133\057\144" \ +"\151\162\057\135\156\141\155\145\130\130\130\130\130\130\051\056" \ +"\012\127\151\164\150\157\165\164\040\124\105\115\120\114\101\124" \ +"\105\054\040\055\164\040\164\155\160\056\130\130\130\130\130\130" \ +"\040\151\163\040\141\163\163\165\155\145\144\056\012\012\011\055" \ +"\144\011\115\141\153\145\040\144\151\162\145\143\164\157\162\171" \ +"\054\040\156\157\164\040\146\151\154\145\012\011\055\161\011\106" \ +"\141\151\154\040\163\151\154\145\156\164\154\171\040\157\156\040" \ +"\145\162\162\157\162\163\012\011\055\164\011\120\162\145\160\145" \ +"\156\144\040\142\141\163\145\040\144\151\162\145\143\164\157\162" \ +"\171\040\156\141\155\145\040\164\157\040\124\105\115\120\114\101" \ +"\124\105\012\011\055\160\040\104\111\122\011\125\163\145\040\104" \ +"\111\122\040\141\163\040\141\040\142\141\163\145\040\144\151\162" \ +"\145\143\164\157\162\171\040\050\151\155\160\154\151\145\163\040" \ +"\055\164\051\012\011\055\165\011\104\157\040\156\157\164\040\143" \ +"\162\145\141\164\145\040\141\156\171\164\150\151\156\147\073\040" \ +"\160\162\151\156\164\040\141\040\156\141\155\145\012\012\102\141" \ +"\163\145\040\144\151\162\145\143\164\157\162\171\040\151\163\072" \ +"\040\055\160\040\104\111\122\054\040\145\154\163\145\040\044\124" \ +"\115\120\104\111\122\054\040\145\154\163\145\040\057\144\141\164" \ +"\141\057\154\157\143\141\154\057\164\155\160\000\133\055\141\144" \ +"\154\160\060\135\040\133\055\106\040\153\145\171\167\157\162\144" \ +"\135\040\115\117\104\125\114\105\012\012\011\055\141\011\011\123" \ +"\150\157\162\164\143\165\164\040\146\157\162\040\047\055\106\040" \ +"\141\165\164\150\157\162\047\012\011\055\144\011\011\123\150\157" \ +"\162\164\143\165\164\040\146\157\162\040\047\055\106\040\144\145" \ +"\163\143\162\151\160\164\151\157\156\047\012\011\055\154\011\011" \ +"\123\150\157\162\164\143\165\164\040\146\157\162\040\047\055\106" \ +"\040\154\151\143\145\156\163\145\047\012\011\055\160\011\011\123" \ +"\150\157\162\164\143\165\164\040\146\157\162\040\047\055\106\040" \ +"\160\141\162\155\047\012\011\055\106\040\153\145\171\167\157\162" \ +"\144\011\113\145\171\167\157\162\144\040\164\157\040\154\157\157" \ +"\153\040\146\157\162\012\011\055\060\011\011\123\145\160\141\162" \ +"\141\164\145\040\157\165\164\160\165\164\040\167\151\164\150\040" \ +"\116\125\114\163\000\133\055\161\146\167\162\163\166\135\040\115" \ +"\117\104\125\114\105\040\133\163\171\155\142\157\154\075\166\141" \ +"\154\165\145\135\056\056\056\012\012\011\055\162\011\122\145\155" \ +"\157\166\145\040\115\117\104\125\114\105\040\050\163\164\141\143" \ +"\153\163\051\040\157\162\040\144\157\040\141\165\164\157\143\154" \ +"\145\141\156\012\011\055\161\011\121\165\151\145\164\012\011\055" \ +"\166\011\126\145\162\142\157\163\145\012\011\055\146\011\106\157" \ +"\162\143\145\012\011\055\167\011\127\141\151\164\040\146\157\162" \ +"\040\165\156\154\157\141\144\012\011\055\163\011\122\145\160\157" \ +"\162\164\040\166\151\141\040\163\171\163\154\157\147\040\151\156" \ +"\163\164\145\141\144\040\157\146\040\163\164\144\145\162\162\000" \ +"\133\106\111\114\105\135\056\056\056\012\012\126\151\145\167\040" \ +"\106\111\114\105\040\050\157\162\040\163\164\144\151\156\051\040" \ +"\157\156\145\040\163\143\162\145\145\156\146\165\154\040\141\164" \ +"\040\141\040\164\151\155\145\000\133\117\120\124\111\117\116\123" \ +"\135\040\133\055\157\040\117\120\124\123\135\040\104\105\126\111" \ +"\103\105\040\116\117\104\105\012\012\115\157\165\156\164\040\141" \ +"\040\146\151\154\145\163\171\163\164\145\155\056\040\106\151\154" \ +"\145\163\171\163\164\145\155\040\141\165\164\157\144\145\164\145" \ +"\143\164\151\157\156\040\162\145\161\165\151\162\145\163\040\057" \ +"\160\162\157\143\056\012\012\011\055\141\011\011\115\157\165\156" \ +"\164\040\141\154\154\040\146\151\154\145\163\171\163\164\145\155" \ +"\163\040\151\156\040\146\163\164\141\142\012\011\055\146\011\011" \ +"\104\162\171\040\162\165\156\012\011\055\166\011\011\126\145\162" \ +"\142\157\163\145\012\011\055\162\011\011\122\145\141\144\055\157" \ +"\156\154\171\040\155\157\165\156\164\012\011\055\167\011\011\122" \ +"\145\141\144\055\167\162\151\164\145\040\155\157\165\156\164\040" \ +"\050\144\145\146\141\165\154\164\051\012\011\055\164\040\106\123" \ +"\124\131\120\105\133\054\056\056\056\135\011\106\151\154\145\163" \ +"\171\163\164\145\155\040\164\171\160\145\050\163\051\012\011\055" \ +"\117\040\117\120\124\011\011\115\157\165\156\164\040\157\156\154" \ +"\171\040\146\151\154\145\163\171\163\164\145\155\163\040\167\151" \ +"\164\150\040\157\160\164\151\157\156\040\117\120\124\040\050\055" \ +"\141\040\157\156\154\171\051\012\055\157\040\117\120\124\072\012" \ +"\011\154\157\157\160\011\011\111\147\156\157\162\145\144\040\050" \ +"\154\157\157\160\040\144\145\166\151\143\145\163\040\141\162\145" \ +"\040\141\165\164\157\144\145\164\145\143\164\145\144\051\012\011" \ +"\133\141\135\163\171\156\143\011\011\127\162\151\164\145\163\040" \ +"\141\162\145\040\133\141\135\163\171\156\143\150\162\157\156\157" \ +"\165\163\012\011\133\156\157\135\141\164\151\155\145\011\104\151" \ +"\163\141\142\154\145\057\145\156\141\142\154\145\040\165\160\144" \ +"\141\164\145\163\040\164\157\040\151\156\157\144\145\040\141\143" \ +"\143\145\163\163\040\164\151\155\145\163\012\011\133\156\157\135" \ +"\144\151\162\141\164\151\155\145\011\104\151\163\141\142\154\145" \ +"\057\145\156\141\142\154\145\040\141\164\151\155\145\040\165\160" \ +"\144\141\164\145\163\040\164\157\040\144\151\162\145\143\164\157" \ +"\162\151\145\163\012\011\133\156\157\135\162\145\154\141\164\151" \ +"\155\145\011\104\151\163\141\142\154\145\057\145\156\141\142\154" \ +"\145\040\141\164\151\155\145\040\165\160\144\141\164\145\163\040" \ +"\162\145\154\141\164\151\166\145\040\164\157\040\155\157\144\151" \ +"\146\151\143\141\164\151\157\156\040\164\151\155\145\012\011\133" \ +"\156\157\135\144\145\166\011\011\050\104\151\163\051\141\154\154" \ +"\157\167\040\165\163\145\040\157\146\040\163\160\145\143\151\141" \ +"\154\040\144\145\166\151\143\145\040\146\151\154\145\163\012\011" \ +"\133\156\157\135\145\170\145\143\011\050\104\151\163\051\141\154" \ +"\154\157\167\040\165\163\145\040\157\146\040\145\170\145\143\165" \ +"\164\141\142\154\145\040\146\151\154\145\163\012\011\133\156\157" \ +"\135\163\165\151\144\011\050\104\151\163\051\141\154\154\157\167" \ +"\040\163\145\164\055\165\163\145\162\055\151\144\055\162\157\157" \ +"\164\040\160\162\157\147\162\141\155\163\012\011\133\162\135\163" \ +"\150\141\162\145\144\011\103\157\156\166\145\162\164\040\133\162" \ +"\145\143\165\162\163\151\166\145\154\171\135\040\164\157\040\141" \ +"\040\163\150\141\162\145\144\040\163\165\142\164\162\145\145\012" \ +"\011\133\162\135\163\154\141\166\145\011\103\157\156\166\145\162" \ +"\164\040\133\162\145\143\165\162\163\151\166\145\154\171\135\040" \ +"\164\157\040\141\040\163\154\141\166\145\040\163\165\142\164\162" \ +"\145\145\012\011\133\162\135\160\162\151\166\141\164\145\011\103" \ +"\157\156\166\145\162\164\040\133\162\145\143\165\162\163\151\166" \ +"\145\154\171\135\040\164\157\040\141\040\160\162\151\166\141\164" \ +"\145\040\163\165\142\164\162\145\145\012\011\133\165\156\135\142" \ +"\151\156\144\141\142\154\145\011\115\141\153\145\040\155\157\165" \ +"\156\164\040\160\157\151\156\164\040\133\165\156\135\141\142\154" \ +"\145\040\164\157\040\142\145\040\142\151\156\144\040\155\157\165" \ +"\156\164\145\144\012\011\133\162\135\142\151\156\144\011\011\102" \ +"\151\156\144\040\141\040\146\151\154\145\040\157\162\040\144\151" \ +"\162\145\143\164\157\162\171\040\133\162\145\143\165\162\163\151" \ +"\166\145\154\171\135\040\164\157\040\141\156\157\164\150\145\162" \ +"\040\154\157\143\141\164\151\157\156\012\011\155\157\166\145\011" \ +"\011\122\145\154\157\143\141\164\145\040\141\156\040\145\170\151" \ +"\163\164\151\156\147\040\155\157\165\156\164\040\160\157\151\156" \ +"\164\012\011\162\145\155\157\165\156\164\011\011\122\145\155\157" \ +"\165\156\164\040\141\040\155\157\165\156\164\145\144\040\146\151" \ +"\154\145\163\171\163\164\145\155\054\040\143\150\141\156\147\151" \ +"\156\147\040\146\154\141\147\163\012\011\162\157\057\162\167\011" \ +"\011\123\141\155\145\040\141\163\040\055\162\057\055\167\012\012" \ +"\124\150\145\162\145\040\141\162\145\040\146\151\154\145\163\171" \ +"\163\164\145\155\055\163\160\145\143\151\146\151\143\040\055\157" \ +"\040\146\154\141\147\163\056\000\133\055\161\135\040\074\133\055" \ +"\144\156\135\040\104\111\122\040\174\040\055\170\040\104\105\126" \ +"\111\103\105\076\012\012\103\150\145\143\153\040\151\146\040\164" \ +"\150\145\040\144\151\162\145\143\164\157\162\171\040\151\163\040" \ +"\141\040\155\157\165\156\164\160\157\151\156\164\012\012\011\055" \ +"\161\011\121\165\151\145\164\012\011\055\144\011\120\162\151\156" \ +"\164\040\155\141\152\157\162\057\155\151\156\157\162\040\144\145" \ +"\166\151\143\145\040\156\165\155\142\145\162\040\157\146\040\164" \ +"\150\145\040\146\151\154\145\163\171\163\164\145\155\012\011\055" \ +"\156\011\120\162\151\156\164\040\144\145\166\151\143\145\040\156" \ +"\141\155\145\040\157\146\040\164\150\145\040\146\151\154\145\163" \ +"\171\163\164\145\155\012\011\055\170\011\120\162\151\156\164\040" \ +"\155\141\152\157\162\057\155\151\156\157\162\040\144\145\166\151" \ +"\143\145\040\156\165\155\142\145\162\040\157\146\040\164\150\145" \ +"\040\142\154\157\143\153\144\145\166\151\143\145\000\133\055\101" \ +"\135\040\133\055\111\040\123\125\115\174\103\120\125\174\101\114" \ +"\114\174\123\103\120\125\135\040\133\055\165\135\040\133\055\120" \ +"\040\156\165\155\174\101\114\114\135\040\133\111\116\124\105\122" \ +"\126\101\114\040\133\103\117\125\116\124\135\135\012\012\120\145" \ +"\162\055\160\162\157\143\145\163\163\157\162\040\163\164\141\164" \ +"\151\163\164\151\143\163\012\012\011\055\101\011\011\011\123\141" \ +"\155\145\040\141\163\040\055\111\040\101\114\114\040\055\165\040" \ +"\055\120\040\101\114\114\012\011\055\111\040\123\125\115\174\103" \ +"\120\125\174\101\114\114\174\123\103\120\125\011\122\145\160\157" \ +"\162\164\040\151\156\164\145\162\162\165\160\164\040\163\164\141" \ +"\164\151\163\164\151\143\163\012\011\055\120\040\156\165\155\174" \ +"\101\114\114\011\011\120\162\157\143\145\163\163\157\162\040\164" \ +"\157\040\155\157\156\151\164\157\162\012\011\055\165\011\011\011" \ +"\122\145\160\157\162\164\040\103\120\125\040\165\164\151\154\151" \ +"\172\141\164\151\157\156\000\133\055\146\151\156\135\040\123\117" \ +"\125\122\103\105\040\104\105\123\124\012\157\162\072\040\155\166" \ +"\040\133\055\146\151\156\135\040\123\117\125\122\103\105\056\056" \ +"\056\040\104\111\122\105\103\124\117\122\131\012\012\122\145\156" \ +"\141\155\145\040\123\117\125\122\103\105\040\164\157\040\104\105" \ +"\123\124\054\040\157\162\040\155\157\166\145\040\123\117\125\122" \ +"\103\105\050\163\051\040\164\157\040\104\111\122\105\103\124\117" \ +"\122\131\012\012\011\055\146\011\104\157\156\047\164\040\160\162" \ +"\157\155\160\164\040\142\145\146\157\162\145\040\157\166\145\162" \ +"\167\162\151\164\151\156\147\012\011\055\151\011\111\156\164\145" \ +"\162\141\143\164\151\166\145\054\040\160\162\157\155\160\164\040" \ +"\142\145\146\157\162\145\040\157\166\145\162\167\162\151\164\145" \ +"\012\011\055\156\011\104\157\156\047\164\040\157\166\145\162\167" \ +"\162\151\164\145\040\141\156\040\145\170\151\163\164\151\156\147" \ +"\040\146\151\154\145\000\133\055\157\135\040\133\055\142\135\040" \ +"\133\055\163\040\101\104\104\122\135\040\133\055\154\040\114\105" \ +"\116\135\040\133\055\146\040\106\111\114\105\135\040\115\124\104" \ +"\137\104\105\126\111\103\105\012\012\104\165\155\160\040\115\124" \ +"\104\137\104\105\126\111\103\105\012\012\011\055\157\011\104\165" \ +"\155\160\040\157\157\142\040\144\141\164\141\012\011\055\142\011" \ +"\117\155\151\164\040\142\141\144\040\142\154\157\143\153\040\146" \ +"\162\157\155\040\164\150\145\040\144\165\155\160\012\011\055\163" \ +"\040\101\104\104\122\011\123\164\141\162\164\040\141\144\144\162" \ +"\145\163\163\012\011\055\154\040\114\105\116\011\114\145\156\147" \ +"\164\150\012\011\055\146\040\106\111\114\105\011\104\165\155\160" \ +"\040\164\157\040\146\151\154\145\040\050\047\055\047\040\146\157" \ +"\162\040\163\164\144\157\165\164\051\000\133\055\160\135\040\133" \ +"\055\163\040\101\104\104\122\135\040\115\124\104\137\104\105\126" \ +"\111\103\105\040\133\106\111\114\105\135\012\012\127\162\151\164" \ +"\145\040\164\157\040\115\124\104\137\104\105\126\111\103\105\012" \ +"\012\011\055\160\011\120\141\144\040\164\157\040\160\141\147\145" \ +"\040\163\151\172\145\012\011\055\163\040\101\104\104\122\011\123" \ +"\164\141\162\164\040\141\144\144\162\145\163\163\000\110\117\123" \ +"\124\040\120\117\122\124\040\102\114\117\103\113\104\105\126\012" \ +"\012\103\157\156\156\145\143\164\040\164\157\040\110\117\123\124" \ +"\040\141\156\144\040\160\162\157\166\151\144\145\040\141\040\156" \ +"\145\164\167\157\162\153\040\142\154\157\143\153\040\144\145\166" \ +"\151\143\145\040\157\156\040\102\114\117\103\113\104\105\126\000" \ +"\133\055\151\116\135\040\133\055\167\116\135\040\133\055\154\135" \ +"\040\133\055\160\040\120\117\122\124\135\040\133\055\146\040\106" \ +"\111\114\105\174\111\120\101\104\104\122\040\120\117\122\124\135" \ +"\040\133\055\145\040\120\122\117\107\135\012\012\117\160\145\156" \ +"\040\141\040\160\151\160\145\040\164\157\040\111\120\072\120\117" \ +"\122\124\040\157\162\040\106\111\114\105\012\012\011\055\154\011" \ +"\114\151\163\164\145\156\040\155\157\144\145\054\040\146\157\162" \ +"\040\151\156\142\157\165\156\144\040\143\157\156\156\145\143\164" \ +"\163\012\011\011\050\165\163\145\040\055\154\154\040\167\151\164" \ +"\150\040\055\145\040\146\157\162\040\160\145\162\163\151\163\164" \ +"\145\156\164\040\163\145\162\166\145\162\051\012\011\055\160\040" \ +"\120\117\122\124\011\114\157\143\141\154\040\160\157\162\164\012" \ +"\011\055\167\040\123\105\103\011\103\157\156\156\145\143\164\040" \ +"\164\151\155\145\157\165\164\012\011\055\151\040\123\105\103\011" \ +"\104\145\154\141\171\040\151\156\164\145\162\166\141\154\040\146" \ +"\157\162\040\154\151\156\145\163\040\163\145\156\164\012\011\055" \ +"\146\040\106\111\114\105\011\125\163\145\040\146\151\154\145\040" \ +"\050\141\154\141\040\057\144\145\166\057\164\164\171\123\060\051" \ +"\040\151\156\163\164\145\141\144\040\157\146\040\156\145\164\167" \ +"\157\162\153\012\011\055\145\040\120\122\117\107\011\122\165\156" \ +"\040\120\122\117\107\040\141\146\164\145\162\040\143\157\156\156" \ +"\145\143\164\000\133\055\162\141\154\135\040\133\055\164\165\167" \ +"\170\135\040\133\055\145\156\127\160\135\012\012\104\151\163\160" \ +"\154\141\171\040\156\145\164\167\157\162\153\151\156\147\040\151" \ +"\156\146\157\162\155\141\164\151\157\156\012\012\011\055\162\011" \ +"\122\157\165\164\151\156\147\040\164\141\142\154\145\012\011\055" \ +"\141\011\101\154\154\040\163\157\143\153\145\164\163\012\011\055" \ +"\154\011\114\151\163\164\145\156\151\156\147\040\163\157\143\153" \ +"\145\164\163\012\011\011\105\154\163\145\072\040\143\157\156\156" \ +"\145\143\164\145\144\040\163\157\143\153\145\164\163\012\011\055" \ +"\164\011\124\103\120\040\163\157\143\153\145\164\163\012\011\055" \ +"\165\011\125\104\120\040\163\157\143\153\145\164\163\012\011\055" \ +"\167\011\122\141\167\040\163\157\143\153\145\164\163\012\011\055" \ +"\170\011\125\156\151\170\040\163\157\143\153\145\164\163\012\011" \ +"\011\105\154\163\145\072\040\141\154\154\040\163\157\143\153\145" \ +"\164\040\164\171\160\145\163\012\011\055\145\011\117\164\150\145" \ +"\162\057\155\157\162\145\040\151\156\146\157\162\155\141\164\151" \ +"\157\156\012\011\055\156\011\104\157\156\047\164\040\162\145\163" \ +"\157\154\166\145\040\156\141\155\145\163\012\011\055\127\011\127" \ +"\151\144\145\040\144\151\163\160\154\141\171\012\011\055\160\011" \ +"\123\150\157\167\040\120\111\104\057\160\162\157\147\162\141\155" \ +"\040\156\141\155\145\040\146\157\162\040\163\157\143\153\145\164" \ +"\163\000\133\055\156\040\101\104\112\125\123\124\135\040\133\120" \ +"\122\117\107\040\101\122\107\123\135\012\012\103\150\141\156\147" \ +"\145\040\163\143\150\145\144\165\154\151\156\147\040\160\162\151" \ +"\157\162\151\164\171\054\040\162\165\156\040\120\122\117\107\012" \ +"\012\011\055\156\040\101\104\112\125\123\124\011\101\144\152\165" \ +"\163\164\040\160\162\151\157\162\151\164\171\040\142\171\040\101" \ +"\104\112\125\123\124\000\120\122\117\107\040\101\122\107\123\012" \ +"\012\122\165\156\040\120\122\117\107\040\151\155\155\165\156\145" \ +"\040\164\157\040\150\141\156\147\165\160\163\054\040\167\151\164" \ +"\150\040\157\165\164\160\165\164\040\164\157\040\141\040\156\157" \ +"\156\055\164\164\171\000\133\110\117\123\124\135\040\133\123\105" \ +"\122\126\105\122\135\012\012\121\165\145\162\171\040\164\150\145" \ +"\040\156\141\155\145\163\145\162\166\145\162\040\146\157\162\040" \ +"\164\150\145\040\111\120\040\141\144\144\162\145\163\163\040\157" \ +"\146\040\164\150\145\040\147\151\166\145\156\040\110\117\123\124" \ +"\012\157\160\164\151\157\156\141\154\154\171\040\165\163\151\156" \ +"\147\040\141\040\163\160\145\143\151\146\151\145\144\040\104\116" \ +"\123\040\163\145\162\166\145\162\000\133\055\144\156\161\116\167" \ +"\135\040\133\055\123\040\120\122\117\107\135\040\133\055\160\040" \ +"\120\105\105\122\135\056\056\056\012\012\116\124\120\040\143\154" \ +"\151\145\156\164\057\163\145\162\166\145\162\012\012\011\055\144" \ +"\011\126\145\162\142\157\163\145\012\011\055\156\011\104\157\040" \ +"\156\157\164\040\144\141\145\155\157\156\151\172\145\012\011\055" \ +"\161\011\121\165\151\164\040\141\146\164\145\162\040\143\154\157" \ +"\143\153\040\151\163\040\163\145\164\012\011\055\116\011\122\165" \ +"\156\040\141\164\040\150\151\147\150\040\160\162\151\157\162\151" \ +"\164\171\012\011\055\167\011\104\157\040\156\157\164\040\163\145" \ +"\164\040\164\151\155\145\040\050\157\156\154\171\040\161\165\145" \ +"\162\171\040\160\145\145\162\163\051\054\040\151\155\160\154\151" \ +"\145\163\040\055\156\012\011\055\123\040\120\122\117\107\011\122" \ +"\165\156\040\120\122\117\107\040\141\146\164\145\162\040\163\164" \ +"\145\160\160\151\156\147\040\164\151\155\145\054\040\163\164\162" \ +"\141\164\165\155\040\143\150\141\156\147\145\054\040\141\156\144" \ +"\040\145\166\145\162\171\040\061\061\040\155\151\156\163\012\011" \ +"\055\160\040\120\105\105\122\011\117\142\164\141\151\156\040\164" \ +"\151\155\145\040\146\162\157\155\040\120\105\105\122\040\050\155" \ +"\141\171\040\142\145\040\162\145\160\145\141\164\145\144\051\000" \ +"\133\055\141\102\142\143\104\144\145\106\146\110\150\111\151\114" \ +"\154\117\157\166\130\170\135\040\133\106\111\114\105\135\012\012" \ +"\120\162\151\156\164\040\106\111\114\105\040\050\157\162\040\163" \ +"\164\144\151\156\051\040\165\156\141\155\142\151\147\165\157\165" \ +"\163\154\171\054\040\141\163\040\157\143\164\141\154\040\142\171" \ +"\164\145\163\040\142\171\040\144\145\146\141\165\154\164\000\133" \ +"\117\120\124\111\117\116\123\135\040\133\117\122\111\107\106\111" \ +"\114\105\040\133\120\101\124\103\110\106\111\114\105\135\135\012" \ +"\012\011\055\160\054\055\055\163\164\162\151\160\040\116\011\011" \ +"\123\164\162\151\160\040\116\040\154\145\141\144\151\156\147\040" \ +"\143\157\155\160\157\156\145\156\164\163\040\146\162\157\155\040" \ +"\146\151\154\145\040\156\141\155\145\163\012\011\055\151\054\055" \ +"\055\151\156\160\165\164\040\104\111\106\106\011\011\122\145\141" \ +"\144\040\104\111\106\106\040\151\156\163\164\145\141\144\040\157" \ +"\146\040\163\164\144\151\156\012\011\055\122\054\055\055\162\145" \ +"\166\145\162\163\145\011\011\122\145\166\145\162\163\145\040\160" \ +"\141\164\143\150\012\011\055\116\054\055\055\146\157\162\167\141" \ +"\162\144\011\011\111\147\156\157\162\145\040\141\154\162\145\141" \ +"\144\171\040\141\160\160\154\151\145\144\040\160\141\164\143\150" \ +"\145\163\012\011\055\105\054\055\055\162\145\155\157\166\145\055" \ +"\145\155\160\164\171\055\146\151\154\145\163\011\122\145\155\157" \ +"\166\145\040\157\165\164\160\165\164\040\146\151\154\145\163\040" \ +"\151\146\040\164\150\145\171\040\142\145\143\157\155\145\040\145" \ +"\155\160\164\171\000\133\055\146\154\156\157\166\170\135\040\133" \ +"\055\163\040\123\111\104\174\055\120\040\120\120\111\104\174\120" \ +"\101\124\124\105\122\116\135\012\012\104\151\163\160\154\141\171" \ +"\040\160\162\157\143\145\163\163\050\145\163\051\040\163\145\154" \ +"\145\143\164\145\144\040\142\171\040\162\145\147\145\170\040\120" \ +"\101\124\124\105\122\116\012\012\011\055\154\011\123\150\157\167" \ +"\040\143\157\155\155\141\156\144\040\156\141\155\145\040\164\157" \ +"\157\012\011\055\146\011\115\141\164\143\150\040\141\147\141\151" \ +"\156\163\164\040\145\156\164\151\162\145\040\143\157\155\155\141" \ +"\156\144\040\154\151\156\145\012\011\055\156\011\123\150\157\167" \ +"\040\164\150\145\040\156\145\167\145\163\164\040\160\162\157\143" \ +"\145\163\163\040\157\156\154\171\012\011\055\157\011\123\150\157" \ +"\167\040\164\150\145\040\157\154\144\145\163\164\040\160\162\157" \ +"\143\145\163\163\040\157\156\154\171\012\011\055\166\011\116\145" \ +"\147\141\164\145\040\164\150\145\040\155\141\164\143\150\012\011" \ +"\055\170\011\115\141\164\143\150\040\167\150\157\154\145\040\156" \ +"\141\155\145\040\050\156\157\164\040\163\165\142\163\164\162\151" \ +"\156\147\051\012\011\055\163\011\115\141\164\143\150\040\163\145" \ +"\163\163\151\157\156\040\111\104\040\050\060\040\146\157\162\040" \ +"\143\165\162\162\145\156\164\051\012\011\055\120\011\115\141\164" \ +"\143\150\040\160\141\162\145\156\164\040\160\162\157\143\145\163" \ +"\163\040\111\104\000\133\117\120\124\111\117\116\123\135\040\133" \ +"\116\101\115\105\135\056\056\056\012\012\114\151\163\164\040\120" \ +"\111\104\163\040\157\146\040\141\154\154\040\160\162\157\143\145" \ +"\163\163\145\163\040\167\151\164\150\040\156\141\155\145\163\040" \ +"\164\150\141\164\040\155\141\164\143\150\040\116\101\115\105\163" \ +"\012\012\011\055\163\011\123\150\157\167\040\157\156\154\171\040" \ +"\157\156\145\040\120\111\104\012\011\055\157\040\120\111\104\011" \ +"\117\155\151\164\040\147\151\166\145\156\040\160\151\144\012\011" \ +"\011\125\163\145\040\045\120\120\111\104\040\164\157\040\157\155" \ +"\151\164\040\160\151\144\040\157\146\040\160\151\144\157\146\047" \ +"\163\040\160\141\162\145\156\164\000\133\117\120\124\111\117\116" \ +"\123\135\040\110\117\123\124\012\012\123\145\156\144\040\111\103" \ +"\115\120\040\105\103\110\117\137\122\105\121\125\105\123\124\040" \ +"\160\141\143\153\145\164\163\040\164\157\040\156\145\164\167\157" \ +"\162\153\040\150\157\163\164\163\012\012\011\055\143\040\103\116" \ +"\124\011\011\123\145\156\144\040\157\156\154\171\040\103\116\124" \ +"\040\160\151\156\147\163\012\011\055\163\040\123\111\132\105\011" \ +"\011\123\145\156\144\040\123\111\132\105\040\144\141\164\141\040" \ +"\142\171\164\145\163\040\151\156\040\160\141\143\153\145\164\163" \ +"\040\050\144\145\146\141\165\154\164\072\065\066\051\012\011\055" \ +"\164\040\124\124\114\011\011\123\145\164\040\124\124\114\012\011" \ +"\055\111\040\111\106\101\103\105\057\111\120\011\125\163\145\040" \ +"\151\156\164\145\162\146\141\143\145\040\157\162\040\111\120\040" \ +"\141\144\144\162\145\163\163\040\141\163\040\163\157\165\162\143" \ +"\145\012\011\055\127\040\123\105\103\011\011\123\145\143\157\156" \ +"\144\163\040\164\157\040\167\141\151\164\040\146\157\162\040\164" \ +"\150\145\040\146\151\162\163\164\040\162\145\163\160\157\156\163" \ +"\145\040\050\144\145\146\141\165\154\164\072\061\060\051\012\011" \ +"\011\011\050\141\146\164\145\162\040\141\154\154\040\055\143\040" \ +"\103\116\124\040\160\141\143\153\145\164\163\040\141\162\145\040" \ +"\163\145\156\164\051\012\011\055\167\040\123\105\103\011\011\123" \ +"\145\143\157\156\144\163\040\165\156\164\151\154\040\160\151\156" \ +"\147\040\145\170\151\164\163\040\050\144\145\146\141\165\154\164" \ +"\072\151\156\146\151\156\151\164\145\051\012\011\011\011\050\143" \ +"\141\156\040\145\170\151\164\040\145\141\162\154\151\145\162\040" \ +"\167\151\164\150\040\055\143\040\103\116\124\051\012\011\055\161" \ +"\011\011\121\165\151\145\164\054\040\157\156\154\171\040\144\151" \ +"\163\160\154\141\171\163\040\157\165\164\160\165\164\040\141\164" \ +"\040\163\164\141\162\164\012\011\011\011\141\156\144\040\167\150" \ +"\145\156\040\146\151\156\151\163\150\145\144\000\010\000\133\055" \ +"\154\174\055\123\111\107\116\101\114\135\040\133\055\146\156\157" \ +"\166\170\135\040\133\055\163\040\123\111\104\174\055\120\040\120" \ +"\120\111\104\174\120\101\124\124\105\122\116\135\012\012\123\145" \ +"\156\144\040\141\040\163\151\147\156\141\154\040\164\157\040\160" \ +"\162\157\143\145\163\163\050\145\163\051\040\163\145\154\145\143" \ +"\164\145\144\040\142\171\040\162\145\147\145\170\040\120\101\124" \ +"\124\105\122\116\012\012\011\055\154\011\114\151\163\164\040\141" \ +"\154\154\040\163\151\147\156\141\154\163\012\011\055\146\011\115" \ +"\141\164\143\150\040\141\147\141\151\156\163\164\040\145\156\164" \ +"\151\162\145\040\143\157\155\155\141\156\144\040\154\151\156\145" \ +"\012\011\055\156\011\123\151\147\156\141\154\040\164\150\145\040" \ +"\156\145\167\145\163\164\040\160\162\157\143\145\163\163\040\157" \ +"\156\154\171\012\011\055\157\011\123\151\147\156\141\154\040\164" \ +"\150\145\040\157\154\144\145\163\164\040\160\162\157\143\145\163" \ +"\163\040\157\156\154\171\012\011\055\166\011\116\145\147\141\164" \ +"\145\040\164\150\145\040\155\141\164\143\150\012\011\055\170\011" \ +"\115\141\164\143\150\040\167\150\157\154\145\040\156\141\155\145" \ +"\040\050\156\157\164\040\163\165\142\163\164\162\151\156\147\051" \ +"\012\011\055\163\011\115\141\164\143\150\040\163\145\163\163\151" \ +"\157\156\040\111\104\040\050\060\040\146\157\162\040\143\165\162" \ +"\162\145\156\164\051\012\011\055\120\011\115\141\164\143\150\040" \ +"\160\141\162\145\156\164\040\160\162\157\143\145\163\163\040\111" \ +"\104\000\133\055\170\161\135\040\120\111\104\012\012\104\151\163" \ +"\160\154\141\171\040\144\145\164\141\151\154\145\144\040\160\162" \ +"\157\143\145\163\163\040\155\145\155\157\162\171\040\165\163\141" \ +"\147\145\012\012\011\055\170\011\123\150\157\167\040\144\145\164" \ +"\141\151\154\163\012\011\055\161\011\121\165\151\145\164\000\133" \ +"\055\144\040\104\105\114\101\131\135\040\133\055\156\135\040\133" \ +"\055\146\135\012\012\110\141\154\164\040\141\156\144\040\163\150" \ +"\165\164\040\157\146\146\040\160\157\167\145\162\012\012\011\055" \ +"\144\040\123\105\103\011\104\145\154\141\171\040\151\156\164\145" \ +"\162\166\141\154\012\011\055\156\011\104\157\040\156\157\164\040" \ +"\163\171\156\143\012\011\055\146\011\106\157\162\143\145\040\050" \ +"\144\157\156\047\164\040\147\157\040\164\150\162\157\165\147\150" \ +"\040\151\156\151\164\051\000\133\126\101\122\111\101\102\114\105" \ +"\135\056\056\056\012\012\120\162\151\156\164\040\145\156\166\151" \ +"\162\157\156\155\145\156\164\040\126\101\122\111\101\102\114\105" \ +"\163\056\012\111\146\040\156\157\040\126\101\122\111\101\102\114" \ +"\105\040\163\160\145\143\151\146\151\145\144\054\040\160\162\151" \ +"\156\164\040\141\154\154\056\000\106\117\122\115\101\124\040\133" \ +"\101\122\107\135\056\056\056\012\012\106\157\162\155\141\164\040" \ +"\141\156\144\040\160\162\151\156\164\040\101\122\107\050\163\051" \ +"\040\141\143\143\157\162\144\151\156\147\040\164\157\040\106\117" \ +"\122\115\101\124\040\050\141\055\154\141\040\103\040\160\162\151" \ +"\156\164\146\051\000\012\012\123\150\157\167\040\154\151\163\164" \ +"\040\157\146\040\160\162\157\143\145\163\163\145\163\012\012\011" \ +"\167\011\127\151\144\145\040\157\165\164\160\165\164\012\011\154" \ +"\011\114\157\156\147\040\157\165\164\160\165\164\012\011\124\011" \ +"\123\150\157\167\040\164\150\162\145\141\144\163\000\133\055\160" \ +"\135\040\133\120\111\104\174\125\123\105\122\135\012\012\104\151" \ +"\163\160\154\141\171\040\160\162\157\143\145\163\163\040\164\162" \ +"\145\145\054\040\157\160\164\151\157\156\141\154\154\171\040\163" \ +"\164\141\162\164\040\146\162\157\155\040\125\123\105\122\040\157" \ +"\162\040\120\111\104\012\012\011\055\160\011\123\150\157\167\040" \ +"\160\151\144\163\000\012\012\120\162\151\156\164\040\164\150\145" \ +"\040\146\165\154\154\040\146\151\154\145\156\141\155\145\040\157" \ +"\146\040\164\150\145\040\143\165\162\162\145\156\164\040\167\157" \ +"\162\153\151\156\147\040\144\151\162\145\143\164\157\162\171\000" \ +"\120\111\104\056\056\056\012\012\123\150\157\167\040\143\165\162" \ +"\162\145\156\164\040\144\151\162\145\143\164\157\162\171\040\146" \ +"\157\162\040\120\111\104\163\012\000\012\012\120\162\151\156\164" \ +"\040\164\150\145\040\144\145\166\151\143\145\040\156\157\144\145" \ +"\040\141\163\163\157\143\151\141\164\145\144\040\167\151\164\150" \ +"\040\164\150\145\040\146\151\154\145\163\171\163\164\145\155\040" \ +"\155\157\165\156\164\145\144\040\141\164\040\047\057\047\000\133" \ +"\055\146\156\166\135\040\106\111\114\105\012\012\104\151\163\160" \ +"\154\141\171\040\164\150\145\040\166\141\154\165\145\040\157\146" \ +"\040\141\040\163\171\155\154\151\156\153\012\012\011\055\146\011" \ +"\103\141\156\157\156\151\143\141\154\151\172\145\040\142\171\040" \ +"\146\157\154\154\157\167\151\156\147\040\141\154\154\040\163\171" \ +"\155\154\151\156\153\163\012\011\055\156\011\104\157\156\047\164" \ +"\040\141\144\144\040\156\145\167\154\151\156\145\012\011\055\166" \ +"\011\126\145\162\142\157\163\145\000\106\111\114\105\056\056\056" \ +"\012\012\122\145\164\165\162\156\040\164\150\145\040\141\142\163" \ +"\157\154\165\164\145\040\160\141\164\150\156\141\155\145\163\040" \ +"\157\146\040\147\151\166\145\156\040\106\111\114\105\000\133\055" \ +"\144\040\104\105\114\101\131\135\040\133\055\156\135\040\133\055" \ +"\146\135\012\012\122\145\142\157\157\164\040\164\150\145\040\163" \ +"\171\163\164\145\155\012\012\011\055\144\040\123\105\103\011\104" \ +"\145\154\141\171\040\151\156\164\145\162\166\141\154\012\011\055" \ +"\156\011\104\157\040\156\157\164\040\163\171\156\143\012\011\055" \ +"\146\011\106\157\162\143\145\040\050\144\157\156\047\164\040\147" \ +"\157\040\164\150\162\157\165\147\150\040\151\156\151\164\051\000" \ +"\173\173\055\156\040\111\116\103\122\105\115\105\116\124\175\040" \ +"\174\040\120\122\111\117\122\111\124\131\175\040\133\133\055\160" \ +"\040\174\040\055\147\040\174\040\055\165\135\040\111\104\056\056" \ +"\056\135\012\012\103\150\141\156\147\145\040\163\143\150\145\144" \ +"\165\154\151\156\147\040\160\162\151\157\162\151\164\171\040\146" \ +"\157\162\040\141\040\162\165\156\156\151\156\147\040\160\162\157" \ +"\143\145\163\163\012\012\011\055\156\011\101\144\152\165\163\164" \ +"\040\143\165\162\162\145\156\164\040\156\151\143\145\040\166\141" \ +"\154\165\145\040\050\163\155\141\154\154\145\162\040\151\163\040" \ +"\146\141\163\164\145\162\051\012\011\055\160\011\120\162\157\143" \ +"\145\163\163\040\151\144\050\163\051\040\050\144\145\146\141\165" \ +"\154\164\051\012\011\055\147\011\120\162\157\143\145\163\163\040" \ +"\147\162\157\165\160\040\151\144\050\163\051\012\011\055\165\011" \ +"\120\162\157\143\145\163\163\040\165\163\145\162\040\156\141\155" \ +"\145\050\163\051\040\141\156\144\057\157\162\040\151\144\050\163" \ +"\051\000\012\012\122\145\163\145\164\040\164\150\145\040\163\143" \ +"\162\145\145\156\000\012\012\122\145\163\151\172\145\040\164\150" \ +"\145\040\163\143\162\145\145\156\000\133\106\111\114\105\135\056" \ +"\056\056\012\012\122\145\166\145\162\163\145\040\154\151\156\145" \ +"\163\040\157\146\040\106\111\114\105\000\133\055\151\162\146\135" \ +"\040\106\111\114\105\056\056\056\012\012\122\145\155\157\166\145" \ +"\040\050\165\156\154\151\156\153\051\040\106\111\114\105\163\012" \ +"\012\011\055\151\011\101\154\167\141\171\163\040\160\162\157\155" \ +"\160\164\040\142\145\146\157\162\145\040\162\145\155\157\166\151" \ +"\156\147\012\011\055\146\011\116\145\166\145\162\040\160\162\157" \ +"\155\160\164\012\011\055\122\054\055\162\011\122\145\143\165\162" \ +"\163\145\000\133\117\120\124\111\117\116\123\135\040\104\111\122" \ +"\105\103\124\117\122\131\056\056\056\012\012\122\145\155\157\166" \ +"\145\040\104\111\122\105\103\124\117\122\131\040\151\146\040\151" \ +"\164\040\151\163\040\145\155\160\164\171\012\012\011\055\160\174" \ +"\055\055\160\141\162\145\156\164\163\011\111\156\143\154\165\144" \ +"\145\040\160\141\162\145\156\164\163\012\011\055\055\151\147\156" \ +"\157\162\145\055\146\141\151\154\055\157\156\055\156\157\156\055" \ +"\145\155\160\164\171\000\133\055\167\146\141\135\040\133\115\117" \ +"\104\125\114\105\135\056\056\056\012\012\125\156\154\157\141\144" \ +"\040\153\145\162\156\145\154\040\155\157\144\165\154\145\163\012" \ +"\012\011\055\167\011\127\141\151\164\040\165\156\164\151\154\040" \ +"\164\150\145\040\155\157\144\165\154\145\040\151\163\040\156\157" \ +"\040\154\157\156\147\145\162\040\165\163\145\144\012\011\055\146" \ +"\011\106\157\162\143\145\040\165\156\154\157\141\144\012\011\055" \ +"\141\011\122\145\155\157\166\145\040\141\154\154\040\165\156\165" \ +"\163\145\144\040\155\157\144\165\154\145\163\040\050\162\145\143" \ +"\165\162\163\151\166\145\154\171\051\000\133\173\141\144\144\174" \ +"\144\145\154\174\144\145\154\145\164\145\175\135\012\012\105\144" \ +"\151\164\040\153\145\162\156\145\154\040\162\157\165\164\151\156" \ +"\147\040\164\141\142\154\145\163\012\012\011\055\156\011\104\157" \ +"\156\047\164\040\162\145\163\157\154\166\145\040\156\141\155\145" \ +"\163\012\011\055\145\011\104\151\163\160\154\141\171\040\157\164" \ +"\150\145\162\057\155\157\162\145\040\151\156\146\157\162\155\141" \ +"\164\151\157\156\012\011\055\101\040\151\156\145\164\173\066\175" \ +"\011\123\145\154\145\143\164\040\141\144\144\162\145\163\163\040" \ +"\146\141\155\151\154\171\000\133\055\141\040\101\122\107\135\056" \ +"\056\056\040\133\055\165\040\125\115\101\123\113\135\040\133\055" \ +"\055\162\145\166\145\162\163\145\135\040\133\055\055\164\145\163" \ +"\164\135\040\133\055\055\145\170\151\164\055\157\156\055\145\162" \ +"\162\157\162\135\040\133\055\055\154\151\163\164\135\040\104\111" \ +"\122\105\103\124\117\122\131\012\012\122\165\156\040\141\040\142" \ +"\165\156\143\150\040\157\146\040\163\143\162\151\160\164\163\040" \ +"\151\156\040\104\111\122\105\103\124\117\122\131\012\012\011\055" \ +"\141\040\101\122\107\011\011\120\141\163\163\040\101\122\107\040" \ +"\141\163\040\141\162\147\165\155\145\156\164\040\164\157\040\163" \ +"\143\162\151\160\164\163\012\011\055\165\040\125\115\101\123\113" \ +"\011\123\145\164\040\125\115\101\123\113\040\142\145\146\157\162" \ +"\145\040\162\165\156\156\151\156\147\040\163\143\162\151\160\164" \ +"\163\012\011\055\055\162\145\166\145\162\163\145\011\122\145\166" \ +"\145\162\163\145\040\145\170\145\143\165\164\151\157\156\040\157" \ +"\162\144\145\162\012\011\055\055\164\145\163\164\011\011\104\162" \ +"\171\040\162\165\156\012\011\055\055\145\170\151\164\055\157\156" \ +"\055\145\162\162\157\162\011\105\170\151\164\040\151\146\040\141" \ +"\040\163\143\162\151\160\164\040\145\170\151\164\163\040\167\151" \ +"\164\150\040\156\157\156\055\172\145\162\157\012\011\055\055\154" \ +"\151\163\164\011\011\120\162\151\156\164\040\156\141\155\145\163" \ +"\040\157\146\040\155\141\164\143\150\151\156\147\040\146\151\154" \ +"\145\163\040\145\166\145\156\040\151\146\040\164\150\145\171\040" \ +"\141\162\145\040\156\157\164\040\145\170\145\143\165\164\141\142" \ +"\154\145\000\106\111\114\105\012\012\122\145\143\145\151\166\145" \ +"\040\141\040\146\151\154\145\040\165\163\151\156\147\040\164\150" \ +"\145\040\170\155\157\144\145\155\040\160\162\157\164\157\143\157" \ +"\154\000\133\055\151\156\162\105\135\040\133\055\146\040\106\111" \ +"\114\105\135\056\056\056\040\133\055\145\040\103\115\104\135\056" \ +"\056\056\040\133\106\111\114\105\135\056\056\056\012\157\162\072" \ +"\040\163\145\144\040\133\055\151\156\162\105\135\040\103\115\104" \ +"\040\133\106\111\114\105\135\056\056\056\012\012\011\055\145\040" \ +"\103\115\104\011\101\144\144\040\103\115\104\040\164\157\040\163" \ +"\145\144\040\143\157\155\155\141\156\144\163\040\164\157\040\142" \ +"\145\040\145\170\145\143\165\164\145\144\012\011\055\146\040\106" \ +"\111\114\105\011\101\144\144\040\106\111\114\105\040\143\157\156" \ +"\164\145\156\164\163\040\164\157\040\163\145\144\040\143\157\155" \ +"\155\141\156\144\163\040\164\157\040\142\145\040\145\170\145\143" \ +"\165\164\145\144\012\011\055\151\133\123\106\130\135\011\105\144" \ +"\151\164\040\146\151\154\145\163\040\151\156\055\160\154\141\143" \ +"\145\040\050\157\164\150\145\162\167\151\163\145\040\163\145\156" \ +"\144\163\040\164\157\040\163\164\144\157\165\164\051\012\011\011" \ +"\117\160\164\151\157\156\141\154\154\171\040\142\141\143\153\040" \ +"\146\151\154\145\163\040\165\160\054\040\141\160\160\145\156\144" \ +"\151\156\147\040\123\106\130\012\011\055\156\011\123\165\160\160" \ +"\162\145\163\163\040\141\165\164\157\155\141\164\151\143\040\160" \ +"\162\151\156\164\151\156\147\040\157\146\040\160\141\164\164\145" \ +"\162\156\040\163\160\141\143\145\012\011\055\162\054\055\105\011" \ +"\125\163\145\040\145\170\164\145\156\144\145\144\040\162\145\147" \ +"\145\170\040\163\171\156\164\141\170\012\012\111\146\040\156\157" \ +"\040\055\145\040\157\162\040\055\146\054\040\164\150\145\040\146" \ +"\151\162\163\164\040\156\157\156\055\157\160\164\151\157\156\040" \ +"\141\162\147\165\155\145\156\164\040\151\163\040\164\150\145\040" \ +"\163\145\144\040\143\157\155\155\141\156\144\040\163\164\162\151" \ +"\156\147\056\012\122\145\155\141\151\156\151\156\147\040\141\162" \ +"\147\165\155\145\156\164\163\040\141\162\145\040\151\156\160\165" \ +"\164\040\146\151\154\145\163\040\050\163\164\144\151\156\040\151" \ +"\146\040\156\157\156\145\051\056\000\133\055\167\135\040\133\055" \ +"\163\040\123\105\120\135\040\133\106\111\122\123\124\040\133\111" \ +"\116\103\135\135\040\114\101\123\124\012\012\120\162\151\156\164" \ +"\040\156\165\155\142\145\162\163\040\146\162\157\155\040\106\111" \ +"\122\123\124\040\164\157\040\114\101\123\124\054\040\151\156\040" \ +"\163\164\145\160\163\040\157\146\040\111\116\103\056\012\106\111" \ +"\122\123\124\054\040\111\116\103\040\144\145\146\141\165\154\164" \ +"\040\164\157\040\061\056\012\012\011\055\167\011\120\141\144\040" \ +"\164\157\040\154\141\163\164\040\167\151\164\150\040\154\145\141" \ +"\144\151\156\147\040\172\145\162\157\163\012\011\055\163\040\123" \ +"\105\120\011\123\164\162\151\156\147\040\163\145\160\141\162\141" \ +"\164\157\162\000\133\055\162\135\040\133\104\105\126\111\103\105" \ +"\135\012\012\122\145\144\151\162\145\143\164\040\163\171\163\164" \ +"\145\155\040\143\157\156\163\157\154\145\040\157\165\164\160\165" \ +"\164\040\164\157\040\104\105\126\111\103\105\040\050\144\145\146" \ +"\141\165\154\164\072\040\057\144\145\166\057\164\164\171\051\012" \ +"\012\011\055\162\011\122\145\163\145\164\040\157\165\164\160\165" \ +"\164\040\164\157\040\057\144\145\166\057\143\157\156\163\157\154" \ +"\145\000\133\055\147\141\142\107\166\172\126\135\040\104\105\126" \ +"\111\103\105\040\133\120\101\122\101\115\105\124\105\122\040\133" \ +"\101\122\107\135\135\056\056\056\012\012\122\145\161\165\145\163" \ +"\164\040\157\162\040\163\145\164\040\114\151\156\165\170\040\163" \ +"\145\162\151\141\154\040\160\157\162\164\040\151\156\146\157\162" \ +"\155\141\164\151\157\156\012\012\011\055\147\011\111\156\164\145" \ +"\162\160\162\145\164\040\160\141\162\141\155\145\164\145\162\163" \ +"\040\141\163\040\154\151\163\164\040\157\146\040\144\145\166\151" \ +"\143\145\163\040\146\157\162\040\162\145\160\157\162\164\151\156" \ +"\147\012\011\055\141\011\120\162\151\156\164\040\141\154\154\040" \ +"\141\166\141\151\154\141\142\154\145\040\151\156\146\157\162\155" \ +"\141\164\151\157\156\012\011\055\142\011\120\162\151\156\164\040" \ +"\163\165\155\155\141\162\171\040\151\156\146\157\162\155\141\164" \ +"\151\157\156\012\011\055\107\011\120\162\151\156\164\040\151\156" \ +"\040\146\157\162\155\040\167\150\151\143\150\040\143\141\156\040" \ +"\142\145\040\146\145\144\040\142\141\143\153\012\011\011\164\157" \ +"\040\163\145\164\163\145\162\151\141\154\040\141\163\040\143\157" \ +"\155\155\141\156\144\040\154\151\156\145\040\160\141\162\141\155" \ +"\145\164\145\162\163\012\011\055\172\011\132\145\162\157\040\157" \ +"\165\164\040\163\145\162\151\141\154\040\146\154\141\147\163\040" \ +"\142\145\146\157\162\145\040\163\145\164\164\151\156\147\012\011" \ +"\055\166\011\126\145\162\142\157\163\145\012\012\120\141\162\141" \ +"\155\145\164\145\162\163\072\040\050\052\040\075\040\164\141\153" \ +"\145\163\040\141\156\040\141\162\147\165\155\145\156\164\054\040" \ +"\136\040\075\040\143\141\156\040\142\145\040\164\165\162\156\145" \ +"\144\040\157\146\146\040\142\171\040\160\162\145\143\145\144\151" \ +"\156\147\040\136\051\012\011\052\160\157\162\164\054\040\052\151" \ +"\162\161\054\040\052\144\151\166\151\163\157\162\054\040\052\165" \ +"\141\162\164\054\040\052\142\141\165\144\137\142\141\163\145\054" \ +"\040\052\143\154\157\163\145\137\144\145\154\141\171\054\040\052" \ +"\143\154\157\163\151\156\147\137\167\141\151\164\054\012\011\136" \ +"\146\157\165\162\160\157\162\164\054\040\136\141\165\164\157\137" \ +"\151\162\161\054\040\136\163\153\151\160\137\164\145\163\164\054" \ +"\040\136\163\141\153\054\040\136\163\145\163\163\151\157\156\137" \ +"\154\157\143\153\157\165\164\054\040\136\160\147\162\160\137\154" \ +"\157\143\153\157\165\164\054\012\011\136\143\141\154\154\157\165" \ +"\164\137\156\157\150\165\160\054\040\136\163\160\154\151\164\137" \ +"\164\145\162\155\151\157\163\054\040\136\150\165\160\137\156\157" \ +"\164\151\146\171\054\040\136\154\157\167\137\154\141\164\145\156" \ +"\143\171\054\040\141\165\164\157\143\157\156\146\151\147\054\012" \ +"\011\163\160\144\137\156\157\162\155\141\154\054\040\163\160\144" \ +"\137\150\151\054\040\163\160\144\137\166\150\151\054\040\163\160" \ +"\144\137\163\150\151\054\040\163\160\144\137\167\141\162\160\054" \ +"\040\163\160\144\137\143\165\163\164\012\012\125\101\122\124\040" \ +"\164\171\160\145\163\072\012\011\165\156\153\156\157\167\156\054" \ +"\040\070\062\065\060\054\040\061\066\064\065\060\054\040\061\066" \ +"\065\065\060\054\040\061\066\065\065\060\101\054\040\103\151\162" \ +"\162\165\163\054\040\061\066\066\065\060\054\040\061\066\066\065" \ +"\060\126\062\054\040\061\066\067\065\060\054\012\011\061\066\071" \ +"\065\060\054\040\061\066\071\065\064\054\040\061\066\066\065\064" \ +"\054\040\061\066\070\065\060\054\040\122\123\101\054\040\116\123" \ +"\061\066\065\065\060\101\054\040\130\123\103\101\114\105\054\040" \ +"\122\115\071\060\060\060\054\040\117\103\124\105\117\116\054\040" \ +"\101\122\067\054\012\011\125\066\137\061\066\065\065\060\101\000" \ +"\120\122\117\107\040\101\122\107\123\012\012\122\165\156\040\120" \ +"\122\117\107\040\151\156\040\141\040\156\145\167\040\163\145\163" \ +"\163\151\157\156\056\040\120\122\117\107\040\167\151\154\154\040" \ +"\150\141\166\145\040\156\157\040\143\157\156\164\162\157\154\154" \ +"\151\156\147\040\164\145\162\155\151\156\141\154\012\141\156\144" \ +"\040\167\151\154\154\040\156\157\164\040\142\145\040\141\146\146" \ +"\145\143\164\145\144\040\142\171\040\153\145\171\142\157\141\162" \ +"\144\040\163\151\147\156\141\154\163\040\050\103\164\162\154\055" \ +"\103\040\145\164\143\051\056\012\123\145\145\040\163\145\164\163" \ +"\151\144\050\062\051\040\146\157\162\040\144\145\164\141\151\154" \ +"\163\056\000\133\055\057\053\117\120\124\111\117\116\123\135\040" \ +"\133\055\057\053\157\040\117\120\124\135\056\056\056\040\133\055" \ +"\143\040\047\123\103\122\111\120\124\047\040\133\101\122\107\060" \ +"\040\133\101\122\107\123\135\135\040\057\040\106\111\114\105\040" \ +"\133\101\122\107\123\135\135\012\012\125\156\151\170\040\163\150" \ +"\145\154\154\040\151\156\164\145\162\160\162\145\164\145\162\000" \ +"\133\055\143\133\163\167\135\135\040\133\106\111\114\105\135\056" \ +"\056\056\012\012\120\162\151\156\164\040\157\162\040\143\150\145" \ +"\143\153\040\123\110\101\061\040\143\150\145\143\153\163\165\155" \ +"\163\012\012\011\055\143\011\103\150\145\143\153\040\163\165\155" \ +"\163\040\141\147\141\151\156\163\164\040\154\151\163\164\040\151" \ +"\156\040\106\111\114\105\163\012\011\055\163\011\104\157\156\047" \ +"\164\040\157\165\164\160\165\164\040\141\156\171\164\150\151\156" \ +"\147\054\040\163\164\141\164\165\163\040\143\157\144\145\040\163" \ +"\150\157\167\163\040\163\165\143\143\145\163\163\012\011\055\167" \ +"\011\127\141\162\156\040\141\142\157\165\164\040\151\155\160\162" \ +"\157\160\145\162\154\171\040\146\157\162\155\141\164\164\145\144" \ +"\040\143\150\145\143\153\163\165\155\040\154\151\156\145\163\000" \ +"\133\055\143\133\163\167\135\135\040\133\106\111\114\105\135\056" \ +"\056\056\012\012\120\162\151\156\164\040\157\162\040\143\150\145" \ +"\143\153\040\123\110\101\062\065\066\040\143\150\145\143\153\163" \ +"\165\155\163\012\012\011\055\143\011\103\150\145\143\153\040\163" \ +"\165\155\163\040\141\147\141\151\156\163\164\040\154\151\163\164" \ +"\040\151\156\040\106\111\114\105\163\012\011\055\163\011\104\157" \ +"\156\047\164\040\157\165\164\160\165\164\040\141\156\171\164\150" \ +"\151\156\147\054\040\163\164\141\164\165\163\040\143\157\144\145" \ +"\040\163\150\157\167\163\040\163\165\143\143\145\163\163\012\011" \ +"\055\167\011\127\141\162\156\040\141\142\157\165\164\040\151\155" \ +"\160\162\157\160\145\162\154\171\040\146\157\162\155\141\164\164" \ +"\145\144\040\143\150\145\143\153\163\165\155\040\154\151\156\145" \ +"\163\000\133\055\143\133\163\167\135\135\040\133\106\111\114\105" \ +"\135\056\056\056\012\012\120\162\151\156\164\040\157\162\040\143" \ +"\150\145\143\153\040\123\110\101\063\055\065\061\062\040\143\150" \ +"\145\143\153\163\165\155\163\012\012\011\055\143\011\103\150\145" \ +"\143\153\040\163\165\155\163\040\141\147\141\151\156\163\164\040" \ +"\154\151\163\164\040\151\156\040\106\111\114\105\163\012\011\055" \ +"\163\011\104\157\156\047\164\040\157\165\164\160\165\164\040\141" \ +"\156\171\164\150\151\156\147\054\040\163\164\141\164\165\163\040" \ +"\143\157\144\145\040\163\150\157\167\163\040\163\165\143\143\145" \ +"\163\163\012\011\055\167\011\127\141\162\156\040\141\142\157\165" \ +"\164\040\151\155\160\162\157\160\145\162\154\171\040\146\157\162" \ +"\155\141\164\164\145\144\040\143\150\145\143\153\163\165\155\040" \ +"\154\151\156\145\163\000\133\055\143\133\163\167\135\135\040\133" \ +"\106\111\114\105\135\056\056\056\012\012\120\162\151\156\164\040" \ +"\157\162\040\143\150\145\143\153\040\123\110\101\065\061\062\040" \ +"\143\150\145\143\153\163\165\155\163\012\012\011\055\143\011\103" \ +"\150\145\143\153\040\163\165\155\163\040\141\147\141\151\156\163" \ +"\164\040\154\151\163\164\040\151\156\040\106\111\114\105\163\012" \ +"\011\055\163\011\104\157\156\047\164\040\157\165\164\160\165\164" \ +"\040\141\156\171\164\150\151\156\147\054\040\163\164\141\164\165" \ +"\163\040\143\157\144\145\040\163\150\157\167\163\040\163\165\143" \ +"\143\145\163\163\012\011\055\167\011\127\141\162\156\040\141\142" \ +"\157\165\164\040\151\155\160\162\157\160\145\162\154\171\040\146" \ +"\157\162\155\141\164\164\145\144\040\143\150\145\143\153\163\165" \ +"\155\040\154\151\156\145\163\000\133\116\135\056\056\056\012\012" \ +"\120\141\165\163\145\040\146\157\162\040\141\040\164\151\155\145" \ +"\040\145\161\165\141\154\040\164\157\040\164\150\145\040\164\157" \ +"\164\141\154\040\157\146\040\164\150\145\040\141\162\147\163\040" \ +"\147\151\166\145\156\054\040\167\150\145\162\145\040\145\141\143" \ +"\150\040\141\162\147\040\143\141\156\012\150\141\166\145\040\141" \ +"\156\040\157\160\164\151\157\156\141\154\040\163\165\146\146\151" \ +"\170\040\157\146\040\050\163\051\145\143\157\156\144\163\054\040" \ +"\050\155\051\151\156\165\164\145\163\054\040\050\150\051\157\165" \ +"\162\163\054\040\157\162\040\050\144\051\141\171\163\000\133\055" \ +"\156\162\165\147\115\143\163\172\142\144\146\151\155\123\124\157" \ +"\153\164\135\040\133\055\157\040\106\111\114\105\135\040\133\055" \ +"\153\040\163\164\141\162\164\133\056\157\146\146\163\145\164\135" \ +"\133\157\160\164\163\135\133\054\145\156\144\133\056\157\146\146" \ +"\163\145\164\135\133\157\160\164\163\135\135\040\133\055\164\040" \ +"\103\110\101\122\135\040\133\106\111\114\105\135\056\056\056\012" \ +"\012\123\157\162\164\040\154\151\156\145\163\040\157\146\040\164" \ +"\145\170\164\012\012\011\055\142\011\111\147\156\157\162\145\040" \ +"\154\145\141\144\151\156\147\040\142\154\141\156\153\163\012\011" \ +"\055\143\011\103\150\145\143\153\040\167\150\145\164\150\145\162" \ +"\040\151\156\160\165\164\040\151\163\040\163\157\162\164\145\144" \ +"\012\011\055\144\011\104\151\143\164\151\157\156\141\162\171\040" \ +"\157\162\144\145\162\040\050\142\154\141\156\153\040\157\162\040" \ +"\141\154\160\150\141\156\165\155\145\162\151\143\040\157\156\154" \ +"\171\051\012\011\055\146\011\111\147\156\157\162\145\040\143\141" \ +"\163\145\012\011\055\147\011\107\145\156\145\162\141\154\040\156" \ +"\165\155\145\162\151\143\141\154\040\163\157\162\164\012\011\055" \ +"\151\011\111\147\156\157\162\145\040\165\156\160\162\151\156\164" \ +"\141\142\154\145\040\143\150\141\162\141\143\164\145\162\163\012" \ +"\011\055\153\011\123\157\162\164\040\153\145\171\012\011\055\115" \ +"\011\123\157\162\164\040\155\157\156\164\150\012\011\055\156\011" \ +"\123\157\162\164\040\156\165\155\142\145\162\163\012\011\055\157" \ +"\011\117\165\164\160\165\164\040\164\157\040\146\151\154\145\012" \ +"\011\055\153\011\123\157\162\164\040\142\171\040\153\145\171\012" \ +"\011\055\164\040\103\110\101\122\011\113\145\171\040\163\145\160" \ +"\141\162\141\164\157\162\012\011\055\162\011\122\145\166\145\162" \ +"\163\145\040\163\157\162\164\040\157\162\144\145\162\012\011\055" \ +"\163\011\123\164\141\142\154\145\040\050\144\157\156\047\164\040" \ +"\163\157\162\164\040\164\151\145\163\040\141\154\160\150\141\142" \ +"\145\164\151\143\141\154\154\171\051\012\011\055\165\011\123\165" \ +"\160\160\162\145\163\163\040\144\165\160\154\151\143\141\164\145" \ +"\040\154\151\156\145\163\012\011\055\172\011\114\151\156\145\163" \ +"\040\141\162\145\040\164\145\162\155\151\156\141\164\145\144\040" \ +"\142\171\040\116\125\114\054\040\156\157\164\040\156\145\167\154" \ +"\151\156\145\012\011\055\155\123\124\011\111\147\156\157\162\145" \ +"\144\040\146\157\162\040\107\116\125\040\143\157\155\160\141\164" \ +"\151\142\151\154\151\164\171\000\133\117\120\124\111\117\116\123" \ +"\135\040\133\111\116\120\125\124\040\133\120\122\105\106\111\130" \ +"\135\135\012\012\011\055\142\040\116\133\153\174\155\135\011\123" \ +"\160\154\151\164\040\142\171\040\116\040\050\153\151\154\157\174" \ +"\155\145\147\141\051\142\171\164\145\163\012\011\055\154\040\116" \ +"\011\011\123\160\154\151\164\040\142\171\040\116\040\154\151\156" \ +"\145\163\012\011\055\141\040\116\011\011\125\163\145\040\116\040" \ +"\154\145\164\164\145\162\163\040\141\163\040\163\165\146\146\151" \ +"\170\000\133\117\120\124\111\117\116\123\135\040\106\111\114\105" \ +"\056\056\056\012\012\104\151\163\160\154\141\171\040\146\151\154" \ +"\145\040\050\144\145\146\141\165\154\164\051\040\157\162\040\146" \ +"\151\154\145\163\171\163\164\145\155\040\163\164\141\164\165\163" \ +"\012\012\011\055\146\011\104\151\163\160\154\141\171\040\146\151" \ +"\154\145\163\171\163\164\145\155\040\163\164\141\164\165\163\012" \ +"\011\055\114\011\106\157\154\154\157\167\040\154\151\156\153\163" \ +"\012\011\055\164\011\104\151\163\160\154\141\171\040\151\156\146" \ +"\157\040\151\156\040\164\145\162\163\145\040\146\157\162\155\000" \ +"\133\055\141\146\157\135\040\133\055\156\040\114\105\116\135\040" \ +"\133\106\111\114\105\135\056\056\056\012\012\104\151\163\160\154" \ +"\141\171\040\160\162\151\156\164\141\142\154\145\040\163\164\162" \ +"\151\156\147\163\040\151\156\040\141\040\142\151\156\141\162\171" \ +"\040\146\151\154\145\012\012\011\055\141\011\123\143\141\156\040" \ +"\167\150\157\154\145\040\146\151\154\145\040\050\144\145\146\141" \ +"\165\154\164\051\012\011\055\146\011\120\162\145\143\145\144\145" \ +"\040\163\164\162\151\156\147\163\040\167\151\164\150\040\146\151" \ +"\154\145\156\141\155\145\163\012\011\055\156\040\114\105\116\011" \ +"\101\164\040\154\145\141\163\164\040\114\105\116\040\143\150\141" \ +"\162\141\143\164\145\162\163\040\146\157\162\155\040\141\040\163" \ +"\164\162\151\156\147\040\050\144\145\146\141\165\154\164\040\064" \ +"\051\012\011\055\157\011\120\162\145\143\145\144\145\040\163\164" \ +"\162\151\156\147\163\040\167\151\164\150\040\144\145\143\151\155" \ +"\141\154\040\157\146\146\163\145\164\163\000\133\055\141\174\147" \ +"\135\040\133\055\106\040\104\105\126\111\103\105\135\040\133\123" \ +"\105\124\124\111\116\107\135\056\056\056\012\012\127\151\164\150" \ +"\157\165\164\040\141\162\147\165\155\145\156\164\163\054\040\160" \ +"\162\151\156\164\163\040\142\141\165\144\040\162\141\164\145\054" \ +"\040\154\151\156\145\040\144\151\163\143\151\160\154\151\156\145" \ +"\054\012\141\156\144\040\144\145\166\151\141\164\151\157\156\163" \ +"\040\146\162\157\155\040\163\164\164\171\040\163\141\156\145\012" \ +"\012\011\055\106\040\104\105\126\111\103\105\011\117\160\145\156" \ +"\040\144\145\166\151\143\145\040\151\156\163\164\145\141\144\040" \ +"\157\146\040\163\164\144\151\156\012\011\055\141\011\011\120\162" \ +"\151\156\164\040\141\154\154\040\143\165\162\162\145\156\164\040" \ +"\163\145\164\164\151\156\147\163\040\151\156\040\150\165\155\141" \ +"\156\055\162\145\141\144\141\142\154\145\040\146\157\162\155\012" \ +"\011\055\147\011\011\120\162\151\156\164\040\151\156\040\163\164" \ +"\164\171\055\162\145\141\144\141\142\154\145\040\146\157\162\155" \ +"\012\011\133\123\105\124\124\111\116\107\135\011\123\145\145\040" \ +"\155\141\156\160\141\147\145\000\133\055\162\163\135\040\133\106" \ +"\111\114\105\135\056\056\056\012\012\103\150\145\143\153\163\165" \ +"\155\040\141\156\144\040\143\157\165\156\164\040\164\150\145\040" \ +"\142\154\157\143\153\163\040\151\156\040\141\040\146\151\154\145" \ +"\012\012\011\055\162\011\125\163\145\040\102\123\104\040\163\165" \ +"\155\040\141\154\147\157\162\151\164\150\155\040\050\061\113\040" \ +"\142\154\157\143\153\163\051\012\011\055\163\011\125\163\145\040" \ +"\123\171\163\164\145\155\040\126\040\163\165\155\040\141\154\147" \ +"\157\162\151\164\150\155\040\050\065\061\062\142\171\164\145\040" \ +"\142\154\157\143\153\163\051\000\133\055\141\135\040\133\104\105" \ +"\126\111\103\105\135\012\012\123\164\157\160\040\163\167\141\160" \ +"\160\151\156\147\040\157\156\040\104\105\126\111\103\105\012\012" \ +"\011\055\141\011\123\164\157\160\040\163\167\141\160\160\151\156" \ +"\147\040\157\156\040\141\154\154\040\163\167\141\160\040\144\145" \ +"\166\151\143\145\163\000\133\055\141\135\040\133\104\105\126\111" \ +"\103\105\135\012\012\123\164\141\162\164\040\163\167\141\160\160" \ +"\151\156\147\040\157\156\040\104\105\126\111\103\105\012\012\011" \ +"\055\141\011\123\164\141\162\164\040\163\167\141\160\160\151\156" \ +"\147\040\157\156\040\141\154\154\040\163\167\141\160\040\144\145" \ +"\166\151\143\145\163\000\012\012\127\162\151\164\145\040\141\154" \ +"\154\040\142\165\146\146\145\162\145\144\040\142\154\157\143\153" \ +"\163\040\164\157\040\144\151\163\153\000\133\117\120\124\111\117" \ +"\116\123\135\040\133\113\105\131\133\075\126\101\114\125\105\135" \ +"\135\056\056\056\012\012\123\150\157\167\057\163\145\164\040\153" \ +"\145\162\156\145\154\040\160\141\162\141\155\145\164\145\162\163" \ +"\012\012\011\055\145\011\104\157\156\047\164\040\167\141\162\156" \ +"\040\141\142\157\165\164\040\165\156\153\156\157\167\156\040\153" \ +"\145\171\163\012\011\055\156\011\104\157\156\047\164\040\163\150" \ +"\157\167\040\153\145\171\040\156\141\155\145\163\012\011\055\141" \ +"\011\123\150\157\167\040\141\154\154\040\166\141\154\165\145\163" \ +"\012\011\055\167\011\123\145\164\040\166\141\154\165\145\163\012" \ +"\011\055\160\040\106\111\114\105\011\123\145\164\040\166\141\154" \ +"\165\145\163\040\146\162\157\155\040\106\111\114\105\040\050\144" \ +"\145\146\141\165\154\164\040\057\145\164\143\057\163\171\163\143" \ +"\164\154\056\143\157\156\146\051\012\011\055\161\040\040\040\040" \ +"\040\040\123\145\164\040\166\141\154\165\145\163\040\163\151\154" \ +"\145\156\164\154\171\000\133\106\111\114\105\135\056\056\056\012" \ +"\012\103\157\156\143\141\164\145\156\141\164\145\040\106\111\114" \ +"\105\163\040\141\156\144\040\160\162\151\156\164\040\164\150\145" \ +"\155\040\151\156\040\162\145\166\145\162\163\145\000\133\117\120" \ +"\124\111\117\116\123\135\040\133\106\111\114\105\135\056\056\056" \ +"\012\012\120\162\151\156\164\040\154\141\163\164\040\061\060\040" \ +"\154\151\156\145\163\040\157\146\040\145\141\143\150\040\106\111" \ +"\114\105\040\050\157\162\040\163\164\144\151\156\051\040\164\157" \ +"\040\163\164\144\157\165\164\056\012\127\151\164\150\040\155\157" \ +"\162\145\040\164\150\141\156\040\157\156\145\040\106\111\114\105" \ +"\054\040\160\162\145\143\145\144\145\040\145\141\143\150\040\167" \ +"\151\164\150\040\141\040\146\151\154\145\156\141\155\145\040\150" \ +"\145\141\144\145\162\056\012\012\011\055\146\011\011\120\162\151" \ +"\156\164\040\144\141\164\141\040\141\163\040\146\151\154\145\040" \ +"\147\162\157\167\163\012\011\055\163\040\123\105\103\117\116\104" \ +"\123\011\127\141\151\164\040\123\105\103\117\116\104\123\040\142" \ +"\145\164\167\145\145\156\040\162\145\141\144\163\040\167\151\164" \ +"\150\040\055\146\012\011\055\156\040\116\133\153\142\155\135\011" \ +"\120\162\151\156\164\040\154\141\163\164\040\116\040\154\151\156" \ +"\145\163\012\011\055\156\040\053\116\133\153\142\155\135\011\123" \ +"\164\141\162\164\040\157\156\040\116\164\150\040\154\151\156\145" \ +"\040\141\156\144\040\160\162\151\156\164\040\164\150\145\040\162" \ +"\145\163\164\012\011\055\143\040\133\053\135\116\133\153\142\155" \ +"\135\011\120\162\151\156\164\040\154\141\163\164\040\116\040\142" \ +"\171\164\145\163\012\011\055\161\011\011\116\145\166\145\162\040" \ +"\160\162\151\156\164\040\150\145\141\144\145\162\163\012\011\055" \ +"\166\011\011\101\154\167\141\171\163\040\160\162\151\156\164\040" \ +"\150\145\141\144\145\162\163\012\012\116\040\155\141\171\040\142" \ +"\145\040\163\165\146\146\151\170\145\144\040\142\171\040\153\040" \ +"\050\170\061\060\062\064\051\054\040\142\040\050\170\065\061\062" \ +"\051\054\040\157\162\040\155\040\050\170\061\060\062\064\136\062" \ +"\051\056\000\055\133\143\170\164\172\112\152\141\150\155\166\117" \ +"\135\040\133\055\130\040\106\111\114\105\135\040\133\055\124\040" \ +"\106\111\114\105\135\040\133\055\146\040\124\101\122\106\111\114" \ +"\105\135\040\133\055\103\040\104\111\122\135\040\133\106\111\114" \ +"\105\135\056\056\056\012\012\103\162\145\141\164\145\054\040\145" \ +"\170\164\162\141\143\164\054\040\157\162\040\154\151\163\164\040" \ +"\146\151\154\145\163\040\146\162\157\155\040\141\040\164\141\162" \ +"\040\146\151\154\145\012\012\117\160\145\162\141\164\151\157\156" \ +"\072\012\011\143\011\103\162\145\141\164\145\012\011\170\011\105" \ +"\170\164\162\141\143\164\012\011\164\011\114\151\163\164\012\011" \ +"\146\011\116\141\155\145\040\157\146\040\124\101\122\106\111\114" \ +"\105\040\050\047\055\047\040\146\157\162\040\163\164\144\151\156" \ +"\057\157\165\164\051\012\011\103\011\103\150\141\156\147\145\040" \ +"\164\157\040\104\111\122\040\142\145\146\157\162\145\040\157\160" \ +"\145\162\141\164\151\157\156\012\011\166\011\126\145\162\142\157" \ +"\163\145\012\011\172\011\050\104\145\051\143\157\155\160\162\145" \ +"\163\163\040\165\163\151\156\147\040\147\172\151\160\012\011\112" \ +"\011\050\104\145\051\143\157\155\160\162\145\163\163\040\165\163" \ +"\151\156\147\040\170\172\012\011\152\011\050\104\145\051\143\157" \ +"\155\160\162\145\163\163\040\165\163\151\156\147\040\142\172\151" \ +"\160\062\012\011\141\011\050\104\145\051\143\157\155\160\162\145" \ +"\163\163\040\165\163\151\156\147\040\154\172\155\141\012\011\117" \ +"\011\105\170\164\162\141\143\164\040\164\157\040\163\164\144\157" \ +"\165\164\012\011\150\011\106\157\154\154\157\167\040\163\171\155" \ +"\154\151\156\153\163\012\011\155\011\104\157\156\047\164\040\162" \ +"\145\163\164\157\162\145\040\155\164\151\155\145\012\011\145\170" \ +"\143\154\165\144\145\011\106\151\154\145\040\164\157\040\145\170" \ +"\143\154\165\144\145\012\011\130\011\106\151\154\145\040\167\151" \ +"\164\150\040\156\141\155\145\163\040\164\157\040\145\170\143\154" \ +"\165\144\145\012\011\124\011\106\151\154\145\040\167\151\164\150" \ +"\040\156\141\155\145\163\040\164\157\040\151\156\143\154\165\144" \ +"\145\000\133\055\160\135\040\133\115\101\123\113\135\040\133\120" \ +"\111\104\040\174\040\120\122\117\107\040\101\122\107\123\135\012" \ +"\012\123\145\164\040\157\162\040\147\145\164\040\103\120\125\040" \ +"\141\146\146\151\156\151\164\171\012\012\011\055\160\011\117\160" \ +"\145\162\141\164\145\040\157\156\040\141\156\040\145\170\151\163" \ +"\164\151\156\147\040\120\111\104\000\133\055\141\151\135\040\133" \ +"\106\111\114\105\135\056\056\056\012\012\103\157\160\171\040\163" \ +"\164\144\151\156\040\164\157\040\145\141\143\150\040\106\111\114" \ +"\105\054\040\141\156\144\040\141\154\163\157\040\164\157\040\163" \ +"\164\144\157\165\164\012\012\011\055\141\011\101\160\160\145\156" \ +"\144\040\164\157\040\164\150\145\040\147\151\166\145\156\040\106" \ +"\111\114\105\163\054\040\144\157\156\047\164\040\157\166\145\162" \ +"\167\162\151\164\145\012\011\055\151\011\111\147\156\157\162\145" \ +"\040\151\156\164\145\162\162\165\160\164\040\163\151\147\156\141" \ +"\154\163\040\050\123\111\107\111\116\124\051\000\110\117\123\124" \ +"\040\133\120\117\122\124\135\012\012\103\157\156\156\145\143\164" \ +"\040\164\157\040\164\145\154\156\145\164\040\163\145\162\166\145" \ +"\162\000\133\117\120\124\111\117\116\123\135\012\012\110\141\156" \ +"\144\154\145\040\151\156\143\157\155\151\156\147\040\164\145\154" \ +"\156\145\164\040\143\157\156\156\145\143\164\151\157\156\163\012" \ +"\012\011\055\154\040\114\117\107\111\116\011\105\170\145\143\040" \ +"\114\117\107\111\116\040\157\156\040\143\157\156\156\145\143\164" \ +"\012\011\055\146\040\111\123\123\125\105\137\106\111\114\105\011" \ +"\104\151\163\160\154\141\171\040\111\123\123\125\105\137\106\111" \ +"\114\105\040\151\156\163\164\145\141\144\040\157\146\040\057\145" \ +"\164\143\057\151\163\163\165\145\012\011\055\113\011\011\103\154" \ +"\157\163\145\040\143\157\156\156\145\143\164\151\157\156\040\141" \ +"\163\040\163\157\157\156\040\141\163\040\154\157\147\151\156\040" \ +"\145\170\151\164\163\012\011\011\011\050\156\157\162\155\141\154" \ +"\154\171\040\167\141\151\164\040\165\156\164\151\154\040\141\154" \ +"\154\040\160\162\157\147\162\141\155\163\040\143\154\157\163\145" \ +"\040\163\154\141\166\145\040\160\164\171\051\012\011\055\160\040" \ +"\120\117\122\124\011\011\120\157\162\164\040\164\157\040\154\151" \ +"\163\164\145\156\040\157\156\012\011\055\142\040\101\104\104\122" \ +"\133\072\120\117\122\124\135\011\101\144\144\162\145\163\163\040" \ +"\164\157\040\142\151\156\144\040\164\157\012\011\055\106\011\011" \ +"\122\165\156\040\151\156\040\146\157\162\145\147\162\157\165\156" \ +"\144\012\011\055\151\011\011\111\156\145\164\144\040\155\157\144" \ +"\145\012\011\055\167\040\123\105\103\011\011\111\156\145\164\144" \ +"\040\047\167\141\151\164\047\040\155\157\144\145\054\040\154\151" \ +"\156\147\145\162\040\164\151\155\145\040\123\105\103\012\011\055" \ +"\123\011\011\114\157\147\040\164\157\040\163\171\163\154\157\147" \ +"\040\050\151\155\160\154\151\145\144\040\142\171\040\055\151\040" \ +"\157\162\040\167\151\164\150\157\165\164\040\055\106\040\141\156" \ +"\144\040\055\167\051\000\105\130\120\122\105\123\123\111\117\116" \ +"\040\135\012\012\103\150\145\143\153\040\146\151\154\145\040\164" \ +"\171\160\145\163\054\040\143\157\155\160\141\162\145\040\166\141" \ +"\154\165\145\163\040\145\164\143\056\040\122\145\164\165\162\156" \ +"\040\141\040\060\057\061\040\145\170\151\164\040\143\157\144\145" \ +"\012\144\145\160\145\156\144\151\156\147\040\157\156\040\154\157" \ +"\147\151\143\141\154\040\166\141\154\165\145\040\157\146\040\105" \ +"\130\120\122\105\123\123\111\117\116\000\133\117\120\124\111\117" \ +"\116\123\135\040\110\117\123\124\040\133\120\117\122\124\135\012" \ +"\012\124\162\141\156\163\146\145\162\040\141\040\146\151\154\145" \ +"\040\146\162\157\155\057\164\157\040\164\146\164\160\040\163\145" \ +"\162\166\145\162\012\012\011\055\154\040\106\111\114\105\011\114" \ +"\157\143\141\154\040\106\111\114\105\012\011\055\162\040\106\111" \ +"\114\105\011\122\145\155\157\164\145\040\106\111\114\105\012\011" \ +"\055\147\011\107\145\164\040\146\151\154\145\012\011\055\160\011" \ +"\120\165\164\040\146\151\154\145\000\133\055\143\162\135\040\133" \ +"\055\165\040\125\123\105\122\135\040\133\104\111\122\135\012\012" \ +"\124\162\141\156\163\146\145\162\040\141\040\146\151\154\145\040" \ +"\157\156\040\164\146\164\160\040\143\154\151\145\156\164\047\163" \ +"\040\162\145\161\165\145\163\164\012\012\164\146\164\160\144\040" \ +"\163\150\157\165\154\144\040\142\145\040\165\163\145\144\040\141" \ +"\163\040\141\156\040\151\156\145\164\144\040\163\145\162\166\151" \ +"\143\145\056\012\164\146\164\160\144\047\163\040\154\151\156\145" \ +"\040\146\157\162\040\151\156\145\164\144\056\143\157\156\146\072" \ +"\012\011\066\071\040\144\147\162\141\155\040\165\144\160\040\156" \ +"\157\167\141\151\164\040\162\157\157\164\040\164\146\164\160\144" \ +"\040\164\146\164\160\144\040\055\154\040\057\146\151\154\145\163" \ +"\057\164\157\057\163\145\162\166\145\012\111\164\040\141\154\163" \ +"\157\040\143\141\156\040\142\145\040\162\141\156\040\146\162\157" \ +"\155\040\165\144\160\163\166\144\072\012\011\165\144\160\163\166" \ +"\144\040\055\166\105\040\060\056\060\056\060\056\060\040\066\071" \ +"\040\164\146\164\160\144\040\057\146\151\154\145\163\057\164\157" \ +"\057\163\145\162\166\145\012\012\011\055\162\011\120\162\157\150" \ +"\151\142\151\164\040\165\160\154\157\141\144\012\011\055\143\011" \ +"\101\154\154\157\167\040\146\151\154\145\040\143\162\145\141\164" \ +"\151\157\156\040\166\151\141\040\165\160\154\157\141\144\012\011" \ +"\055\165\011\101\143\143\145\163\163\040\146\151\154\145\163\040" \ +"\141\163\040\125\123\105\122\012\011\055\154\011\114\157\147\040" \ +"\164\157\040\163\171\163\154\157\147\040\050\151\156\145\164\144" \ +"\040\155\157\144\145\040\162\145\161\165\151\162\145\163\040\164" \ +"\150\151\163\051\000\133\055\166\135\040\120\122\117\107\040\101" \ +"\122\107\123\012\012\122\165\156\040\120\122\117\107\054\040\144" \ +"\151\163\160\154\141\171\040\162\145\163\157\165\162\143\145\040" \ +"\165\163\141\147\145\040\167\150\145\156\040\151\164\040\145\170" \ +"\151\164\163\012\012\011\055\166\011\126\145\162\142\157\163\145" \ +"\000\133\055\164\040\123\105\103\123\135\040\133\055\163\040\123" \ +"\111\107\135\040\120\122\117\107\040\101\122\107\123\012\012\122" \ +"\165\156\163\040\120\122\117\107\056\040\123\145\156\144\163\040" \ +"\123\111\107\040\164\157\040\151\164\040\151\146\040\151\164\040" \ +"\151\163\040\156\157\164\040\147\157\156\145\040\151\156\040\123" \ +"\105\103\123\040\163\145\143\157\156\144\163\056\012\104\145\146" \ +"\141\165\154\164\163\072\040\123\105\103\123\072\040\061\060\054" \ +"\040\123\111\107\072\040\124\105\122\115\056\000\133\055\142\135" \ +"\040\133\055\156\103\117\125\116\124\135\040\133\055\144\123\105" \ +"\103\117\116\104\123\135\040\133\055\155\135\012\012\120\162\157" \ +"\166\151\144\145\040\141\040\166\151\145\167\040\157\146\040\160" \ +"\162\157\143\145\163\163\040\141\143\164\151\166\151\164\171\040" \ +"\151\156\040\162\145\141\154\040\164\151\155\145\056\012\122\145" \ +"\141\144\040\164\150\145\040\163\164\141\164\165\163\040\157\146" \ +"\040\141\154\154\040\160\162\157\143\145\163\163\145\163\040\146" \ +"\162\157\155\040\057\160\162\157\143\040\145\141\143\150\040\123" \ +"\105\103\117\116\104\123\012\141\156\144\040\144\151\163\160\154" \ +"\141\171\040\141\040\163\143\162\145\145\156\146\165\154\040\157" \ +"\146\040\164\150\145\155\056\012\113\145\171\163\072\012\011\116" \ +"\057\115\057\120\057\124\072\040\163\150\157\167\040\103\120\125" \ +"\040\165\163\141\147\145\054\040\163\157\162\164\040\142\171\040" \ +"\160\151\144\057\155\145\155\057\143\160\165\057\164\151\155\145" \ +"\012\011\123\072\040\163\150\157\167\040\155\145\155\157\162\171" \ +"\012\011\122\072\040\162\145\166\145\162\163\145\040\163\157\162" \ +"\164\012\011\110\072\040\164\157\147\147\154\145\040\164\150\162" \ +"\145\141\144\163\054\040\061\072\040\164\157\147\147\154\145\040" \ +"\123\115\120\012\011\121\054\136\103\072\040\145\170\151\164\012" \ +"\012\117\160\164\151\157\156\163\072\012\011\055\142\011\102\141" \ +"\164\143\150\040\155\157\144\145\012\011\055\156\040\116\011\105" \ +"\170\151\164\040\141\146\164\145\162\040\116\040\151\164\145\162" \ +"\141\164\151\157\156\163\012\011\055\144\040\116\011\104\145\154" \ +"\141\171\040\142\145\164\167\145\145\156\040\165\160\144\141\164" \ +"\145\163\012\011\055\155\011\123\141\155\145\040\141\163\040\047" \ +"\163\047\040\153\145\171\000\133\055\143\135\040\133\055\144\040" \ +"\104\101\124\105\135\040\133\055\164\040\104\101\124\105\135\040" \ +"\133\055\162\040\106\111\114\105\135\040\106\111\114\105\056\056" \ +"\056\012\012\125\160\144\141\164\145\040\164\150\145\040\154\141" \ +"\163\164\055\155\157\144\151\146\151\145\144\040\144\141\164\145" \ +"\040\157\156\040\164\150\145\040\147\151\166\145\156\040\106\111" \ +"\114\105\133\163\135\012\012\011\055\143\011\104\157\156\047\164" \ +"\040\143\162\145\141\164\145\040\146\151\154\145\163\012\011\055" \ +"\144\040\104\124\011\104\141\164\145\057\164\151\155\145\040\164" \ +"\157\040\165\163\145\012\011\055\164\040\104\124\011\104\141\164" \ +"\145\057\164\151\155\145\040\164\157\040\165\163\145\012\011\055" \ +"\162\040\106\111\114\105\011\125\163\145\040\106\111\114\105\047" \ +"\163\040\144\141\164\145\057\164\151\155\145\000\133\055\143\144" \ +"\163\135\040\123\124\122\111\116\107\061\040\133\123\124\122\111" \ +"\116\107\062\135\012\012\124\162\141\156\163\154\141\164\145\054" \ +"\040\163\161\165\145\145\172\145\054\040\157\162\040\144\145\154" \ +"\145\164\145\040\143\150\141\162\141\143\164\145\162\163\040\146" \ +"\162\157\155\040\163\164\144\151\156\054\040\167\162\151\164\151" \ +"\156\147\040\164\157\040\163\164\144\157\165\164\012\012\011\055" \ +"\143\011\124\141\153\145\040\143\157\155\160\154\145\155\145\156" \ +"\164\040\157\146\040\123\124\122\111\116\107\061\012\011\055\144" \ +"\011\104\145\154\145\164\145\040\151\156\160\165\164\040\143\150" \ +"\141\162\141\143\164\145\162\163\040\143\157\144\145\144\040\123" \ +"\124\122\111\116\107\061\012\011\055\163\011\123\161\165\145\145" \ +"\172\145\040\155\165\154\164\151\160\154\145\040\157\165\164\160" \ +"\165\164\040\143\150\141\162\141\143\164\145\162\163\040\157\146" \ +"\040\123\124\122\111\116\107\062\040\151\156\164\157\040\157\156" \ +"\145\040\143\150\141\162\141\143\164\145\162\000\133\055\106\111" \ +"\154\144\156\162\166\135\040\133\055\146\040\061\123\124\137\124" \ +"\124\114\135\040\133\055\155\040\115\101\130\124\124\114\135\040" \ +"\133\055\160\040\120\117\122\124\135\040\133\055\161\040\120\122" \ +"\117\102\105\123\135\012\011\133\055\163\040\123\122\103\137\111" \ +"\120\135\040\133\055\164\040\124\117\123\135\040\133\055\167\040" \ +"\127\101\111\124\137\123\105\103\135\040\133\055\147\040\107\101" \ +"\124\105\127\101\131\135\040\133\055\151\040\111\106\101\103\105" \ +"\135\012\011\133\055\172\040\120\101\125\123\105\137\115\123\105" \ +"\103\135\040\110\117\123\124\040\133\102\131\124\105\123\135\012" \ +"\012\124\162\141\143\145\040\164\150\145\040\162\157\165\164\145" \ +"\040\164\157\040\110\117\123\124\012\012\011\055\106\011\123\145" \ +"\164\040\164\150\145\040\144\157\156\047\164\040\146\162\141\147" \ +"\155\145\156\164\040\142\151\164\012\011\055\111\011\125\163\145" \ +"\040\111\103\115\120\040\105\103\110\117\040\151\156\163\164\145" \ +"\141\144\040\157\146\040\125\104\120\040\144\141\164\141\147\162" \ +"\141\155\163\012\011\055\154\011\104\151\163\160\154\141\171\040" \ +"\164\150\145\040\124\124\114\040\166\141\154\165\145\040\157\146" \ +"\040\164\150\145\040\162\145\164\165\162\156\145\144\040\160\141" \ +"\143\153\145\164\012\011\055\144\011\123\145\164\040\123\117\137" \ +"\104\105\102\125\107\040\157\160\164\151\157\156\163\040\164\157" \ +"\040\163\157\143\153\145\164\012\011\055\156\011\120\162\151\156" \ +"\164\040\156\165\155\145\162\151\143\040\141\144\144\162\145\163" \ +"\163\145\163\012\011\055\162\011\102\171\160\141\163\163\040\162" \ +"\157\165\164\151\156\147\040\164\141\142\154\145\163\054\040\163" \ +"\145\156\144\040\144\151\162\145\143\164\154\171\040\164\157\040" \ +"\110\117\123\124\012\011\055\166\011\126\145\162\142\157\163\145" \ +"\012\011\055\155\011\115\141\170\040\164\151\155\145\055\164\157" \ +"\055\154\151\166\145\040\050\155\141\170\040\156\165\155\142\145" \ +"\162\040\157\146\040\150\157\160\163\051\012\011\055\160\011\102" \ +"\141\163\145\040\125\104\120\040\160\157\162\164\040\156\165\155" \ +"\142\145\162\040\165\163\145\144\040\151\156\040\160\162\157\142" \ +"\145\163\012\011\011\050\144\145\146\141\165\154\164\040\063\063" \ +"\064\063\064\051\012\011\055\161\011\116\165\155\142\145\162\040" \ +"\157\146\040\160\162\157\142\145\163\040\160\145\162\040\124\124" \ +"\114\040\050\144\145\146\141\165\154\164\040\063\051\012\011\055" \ +"\163\011\111\120\040\141\144\144\162\145\163\163\040\164\157\040" \ +"\165\163\145\040\141\163\040\164\150\145\040\163\157\165\162\143" \ +"\145\040\141\144\144\162\145\163\163\012\011\055\164\011\124\171" \ +"\160\145\055\157\146\055\163\145\162\166\151\143\145\040\151\156" \ +"\040\160\162\157\142\145\040\160\141\143\153\145\164\163\040\050" \ +"\144\145\146\141\165\154\164\040\060\051\012\011\055\167\011\124" \ +"\151\155\145\040\151\156\040\163\145\143\157\156\144\163\040\164" \ +"\157\040\167\141\151\164\040\146\157\162\040\141\040\162\145\163" \ +"\160\157\156\163\145\040\050\144\145\146\141\165\154\164\040\063" \ +"\051\012\011\055\147\011\114\157\157\163\145\040\163\157\165\162" \ +"\143\145\040\162\157\165\164\145\040\147\141\164\145\167\141\171" \ +"\040\050\070\040\155\141\170\051\000\012\012\122\145\164\165\162" \ +"\156\040\141\156\040\145\170\151\164\040\143\157\144\145\040\157" \ +"\146\040\124\122\125\105\040\050\060\051\000\133\167\135\040\133" \ +"\150\135\012\012\120\162\151\156\164\040\144\151\155\145\156\163" \ +"\151\157\156\050\163\051\040\157\146\040\163\164\144\151\156\047" \ +"\163\040\164\145\162\155\151\156\141\154\054\040\157\156\040\145" \ +"\162\162\157\162\040\162\145\164\165\162\156\040\070\060\170\062" \ +"\065\000\133\055\143\040\115\101\130\137\115\117\125\116\124\137" \ +"\103\117\125\116\124\135\040\133\055\151\040\104\101\131\123\135" \ +"\040\133\055\103\040\115\117\125\116\124\137\103\117\125\116\124" \ +"\135\040\133\055\114\040\114\101\102\105\114\135\040\102\114\117" \ +"\103\113\104\105\126\012\012\101\144\152\165\163\164\040\146\151" \ +"\154\145\163\171\163\164\145\155\040\157\160\164\151\157\156\163" \ +"\040\157\156\040\145\170\164\133\062\063\135\040\146\151\154\145" \ +"\163\171\163\164\145\155\163\000\133\117\120\124\111\117\116\123" \ +"\135\040\106\111\114\105\123\131\123\124\105\115\174\104\111\122" \ +"\105\103\124\117\122\131\012\012\125\156\155\157\165\156\164\040" \ +"\146\151\154\145\040\163\171\163\164\145\155\163\012\012\011\055" \ +"\141\011\125\156\155\157\165\156\164\040\141\154\154\040\146\151" \ +"\154\145\040\163\171\163\164\145\155\163\012\011\055\162\011\124" \ +"\162\171\040\164\157\040\162\145\155\157\165\156\164\040\144\145" \ +"\166\151\143\145\163\040\141\163\040\162\145\141\144\055\157\156" \ +"\154\171\040\151\146\040\155\157\165\156\164\040\151\163\040\142" \ +"\165\163\171\012\011\055\154\011\114\141\172\171\040\165\155\157" \ +"\165\156\164\040\050\144\145\164\141\143\150\040\146\151\154\145" \ +"\163\171\163\164\145\155\051\012\011\055\146\011\106\157\162\143" \ +"\145\040\165\155\157\165\156\164\040\050\151\056\145\056\054\040" \ +"\165\156\162\145\141\143\150\141\142\154\145\040\116\106\123\040" \ +"\163\145\162\166\145\162\051\012\011\055\144\011\106\162\145\145" \ +"\040\154\157\157\160\040\144\145\166\151\143\145\040\145\166\145" \ +"\156\040\151\146\040\151\164\040\150\141\163\040\142\145\145\156" \ +"\040\165\163\145\144\000\133\055\141\155\156\162\163\160\166\135" \ +"\012\012\120\162\151\156\164\040\163\171\163\164\145\155\040\151" \ +"\156\146\157\162\155\141\164\151\157\156\012\012\011\055\141\011" \ +"\120\162\151\156\164\040\141\154\154\012\011\055\155\011\124\150" \ +"\145\040\155\141\143\150\151\156\145\040\050\150\141\162\144\167" \ +"\141\162\145\051\040\164\171\160\145\012\011\055\156\011\110\157" \ +"\163\164\156\141\155\145\012\011\055\162\011\117\123\040\162\145" \ +"\154\145\141\163\145\012\011\055\163\011\117\123\040\156\141\155" \ +"\145\040\050\144\145\146\141\165\154\164\051\012\011\055\160\011" \ +"\120\162\157\143\145\163\163\157\162\040\164\171\160\145\012\011" \ +"\055\166\011\117\123\040\166\145\162\163\151\157\156\000\133\055" \ +"\143\146\135\040\133\106\111\114\105\135\056\056\056\012\012\104" \ +"\145\143\157\155\160\162\145\163\163\040\056\132\040\146\151\154" \ +"\145\133\163\135\012\012\011\055\143\011\127\162\151\164\145\040" \ +"\164\157\040\163\164\144\157\165\164\012\011\055\146\011\117\166" \ +"\145\162\167\162\151\164\145\000\133\055\146\141\135\133\055\164" \ +"\040\116\135\040\133\106\111\114\105\135\056\056\056\012\012\103" \ +"\157\156\166\145\162\164\040\163\160\141\143\145\163\040\164\157" \ +"\040\164\141\142\163\054\040\167\162\151\164\151\156\147\040\164" \ +"\157\040\163\164\144\157\165\164\012\012\011\055\141\054\055\055" \ +"\141\154\154\011\103\157\156\166\145\162\164\040\141\154\154\040" \ +"\142\154\141\156\153\163\012\011\055\146\054\055\055\146\151\162" \ +"\163\164\055\157\156\154\171\011\103\157\156\166\145\162\164\040" \ +"\157\156\154\171\040\154\145\141\144\151\156\147\040\142\154\141" \ +"\156\153\163\012\011\055\164\054\055\055\164\141\142\163\075\116" \ +"\011\124\141\142\163\164\157\160\163\040\145\166\145\162\171\040" \ +"\116\040\143\150\141\162\163\000\133\055\143\144\165\135\133\055" \ +"\146\054\163\054\167\040\116\135\040\133\111\116\120\125\124\040" \ +"\133\117\125\124\120\125\124\135\135\012\012\104\151\163\143\141" \ +"\162\144\040\144\165\160\154\151\143\141\164\145\040\154\151\156" \ +"\145\163\012\012\011\055\143\011\120\162\145\146\151\170\040\154" \ +"\151\156\145\163\040\142\171\040\164\150\145\040\156\165\155\142" \ +"\145\162\040\157\146\040\157\143\143\165\162\162\145\156\143\145" \ +"\163\012\011\055\144\011\117\156\154\171\040\160\162\151\156\164" \ +"\040\144\165\160\154\151\143\141\164\145\040\154\151\156\145\163" \ +"\012\011\055\165\011\117\156\154\171\040\160\162\151\156\164\040" \ +"\165\156\151\161\165\145\040\154\151\156\145\163\012\011\055\146" \ +"\040\116\011\123\153\151\160\040\146\151\162\163\164\040\116\040" \ +"\146\151\145\154\144\163\012\011\055\163\040\116\011\123\153\151" \ +"\160\040\146\151\162\163\164\040\116\040\143\150\141\162\163\040" \ +"\050\141\146\164\145\162\040\141\156\171\040\163\153\151\160\160" \ +"\145\144\040\146\151\145\154\144\163\051\012\011\055\167\040\116" \ +"\011\103\157\155\160\141\162\145\040\116\040\143\150\141\162\141" \ +"\143\164\145\162\163\040\151\156\040\154\151\156\145\000\133\055" \ +"\165\144\135\040\133\106\111\114\105\135\012\012\103\157\156\166" \ +"\145\162\164\040\106\111\114\105\040\151\156\055\160\154\141\143" \ +"\145\040\146\162\157\155\040\125\156\151\170\040\164\157\040\104" \ +"\117\123\040\146\157\162\155\141\164\056\012\127\150\145\156\040" \ +"\156\157\040\146\151\154\145\040\151\163\040\147\151\166\145\156" \ +"\054\040\165\163\145\040\163\164\144\151\156\057\163\164\144\157" \ +"\165\164\056\012\012\011\055\165\011\144\157\163\062\165\156\151" \ +"\170\012\011\055\144\011\165\156\151\170\062\144\157\163\000\133" \ +"\055\143\146\135\040\133\106\111\114\105\135\056\056\056\012\012" \ +"\104\145\143\157\155\160\162\145\163\163\040\106\111\114\105\040" \ +"\050\157\162\040\163\164\144\151\156\051\012\012\011\055\143\011" \ +"\127\162\151\164\145\040\164\157\040\163\164\144\157\165\164\012" \ +"\011\055\146\011\106\157\162\143\145\000\133\055\143\146\166\103" \ +"\106\135\040\133\106\111\114\105\135\056\056\056\012\012\011\055" \ +"\143\011\127\162\151\164\145\040\164\157\040\163\164\144\157\165" \ +"\164\012\011\055\146\011\106\157\162\143\145\012\011\055\166\011" \ +"\126\145\162\142\157\163\145\012\011\055\106\011\104\157\156\047" \ +"\164\040\163\164\157\162\145\040\157\162\040\166\145\162\151\146" \ +"\171\040\143\150\145\143\153\163\165\155\000\133\055\143\146\135" \ +"\040\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157" \ +"\155\160\162\145\163\163\040\106\111\114\105\040\050\157\162\040" \ +"\163\164\144\151\156\051\012\012\011\055\143\011\127\162\151\164" \ +"\145\040\164\157\040\163\164\144\157\165\164\012\011\055\146\011" \ +"\106\157\162\143\145\000\133\055\154\156\157\160\161\135\040\106" \ +"\111\114\105\133\056\172\151\160\135\040\133\106\111\114\105\135" \ +"\056\056\056\040\133\055\170\040\106\111\114\105\056\056\056\135" \ +"\040\133\055\144\040\104\111\122\135\012\012\105\170\164\162\141" \ +"\143\164\040\106\111\114\105\163\040\146\162\157\155\040\132\111" \ +"\120\040\141\162\143\150\151\166\145\012\012\011\055\154\011\114" \ +"\151\163\164\040\143\157\156\164\145\156\164\163\040\050\167\151" \ +"\164\150\040\055\161\040\146\157\162\040\163\150\157\162\164\040" \ +"\146\157\162\155\051\012\011\055\156\011\116\145\166\145\162\040" \ +"\157\166\145\162\167\162\151\164\145\040\146\151\154\145\163\040" \ +"\050\144\145\146\141\165\154\164\072\040\141\163\153\051\012\011" \ +"\055\157\011\117\166\145\162\167\162\151\164\145\012\011\055\160" \ +"\011\120\162\151\156\164\040\164\157\040\163\164\144\157\165\164" \ +"\012\011\055\161\011\121\165\151\145\164\012\011\055\170\040\106" \ +"\111\114\105\011\105\170\143\154\165\144\145\040\106\111\114\105" \ +"\163\012\011\055\144\040\104\111\122\011\105\170\164\162\141\143" \ +"\164\040\151\156\164\157\040\104\111\122\000\012\012\104\151\163" \ +"\160\154\141\171\040\164\150\145\040\164\151\155\145\040\163\151" \ +"\156\143\145\040\164\150\145\040\154\141\163\164\040\142\157\157" \ +"\164\000\116\012\012\120\141\165\163\145\040\146\157\162\040\116" \ +"\040\155\151\143\162\157\163\145\143\157\156\144\163\000\133\055" \ +"\157\040\117\125\124\106\111\114\105\135\040\133\111\116\106\111" \ +"\114\105\135\012\012\125\165\144\145\143\157\144\145\040\141\040" \ +"\146\151\154\145\012\106\151\156\144\163\040\117\125\124\106\111" \ +"\114\105\040\151\156\040\165\165\145\156\143\157\144\145\144\040" \ +"\163\157\165\162\143\145\040\165\156\154\145\163\163\040\055\157" \ +"\040\151\163\040\147\151\166\145\156\000\133\055\155\135\040\133" \ +"\106\111\114\105\135\040\123\124\117\122\105\104\137\106\111\114" \ +"\105\116\101\115\105\012\012\125\165\145\156\143\157\144\145\040" \ +"\106\111\114\105\040\050\157\162\040\163\164\144\151\156\051\040" \ +"\164\157\040\163\164\144\157\165\164\012\012\011\055\155\011\125" \ +"\163\145\040\142\141\163\145\066\064\040\145\156\143\157\144\151" \ +"\156\147\040\160\145\162\040\122\106\103\061\065\062\061\000\133" \ +"\117\120\124\111\117\116\123\135\040\133\106\111\114\105\135\056" \ +"\056\056\012\012\105\144\151\164\040\106\111\114\105\012\012\011" \ +"\055\143\040\103\115\104\011\111\156\151\164\151\141\154\040\143" \ +"\157\155\155\141\156\144\040\164\157\040\162\165\156\040\050\044" \ +"\105\130\111\116\111\124\040\141\154\163\157\040\141\166\141\151" \ +"\154\141\142\154\145\051\012\011\055\122\011\122\145\141\144\055" \ +"\157\156\154\171\012\011\055\110\011\114\151\163\164\040\141\166" \ +"\141\151\154\141\142\154\145\040\146\145\141\164\165\162\145\163" \ +"\000\133\055\156\040\123\105\103\135\040\133\055\164\135\040\120" \ +"\122\117\107\040\101\122\107\123\012\012\122\165\156\040\120\122" \ +"\117\107\040\160\145\162\151\157\144\151\143\141\154\154\171\012" \ +"\012\011\055\156\011\114\157\157\160\040\160\145\162\151\157\144" \ +"\040\151\156\040\163\145\143\157\156\144\163\040\050\144\145\146" \ +"\141\165\154\164\040\062\051\012\011\055\164\011\104\157\156\047" \ +"\164\040\160\162\151\156\164\040\150\145\141\144\145\162\000\133" \ +"\055\143\155\154\167\114\135\040\133\106\111\114\105\135\056\056" \ +"\056\012\012\103\157\165\156\164\040\154\151\156\145\163\054\040" \ +"\167\157\162\144\163\054\040\141\156\144\040\142\171\164\145\163" \ +"\040\146\157\162\040\145\141\143\150\040\106\111\114\105\040\050" \ +"\157\162\040\163\164\144\151\156\051\012\012\011\055\143\011\103" \ +"\157\165\156\164\040\142\171\164\145\163\012\011\055\155\011\103" \ +"\157\165\156\164\040\143\150\141\162\141\143\164\145\162\163\012" \ +"\011\055\154\011\103\157\165\156\164\040\156\145\167\154\151\156" \ +"\145\163\012\011\055\167\011\103\157\165\156\164\040\167\157\162" \ +"\144\163\012\011\055\114\011\120\162\151\156\164\040\154\157\156" \ +"\147\145\163\164\040\154\151\156\145\040\154\145\156\147\164\150" \ +"\000\133\055\143\174\055\055\143\157\156\164\151\156\165\145\135" \ +"\040\133\055\163\174\055\055\163\160\151\144\145\162\135\040\133" \ +"\055\161\174\055\055\161\165\151\145\164\135\040\133\055\117\174" \ +"\055\055\157\165\164\160\165\164\055\144\157\143\165\155\145\156" \ +"\164\040\106\111\114\105\135\012\011\133\055\055\150\145\141\144" \ +"\145\162\040\047\150\145\141\144\145\162\072\040\166\141\154\165" \ +"\145\047\135\040\133\055\131\174\055\055\160\162\157\170\171\040" \ +"\157\156\057\157\146\146\135\040\133\055\120\040\104\111\122\135" \ +"\012\011\133\055\125\174\055\055\165\163\145\162\055\141\147\145" \ +"\156\164\040\101\107\105\116\124\135\040\133\055\124\040\123\105" \ +"\103\135\040\125\122\114\056\056\056\012\012\122\145\164\162\151" \ +"\145\166\145\040\146\151\154\145\163\040\166\151\141\040\110\124" \ +"\124\120\040\157\162\040\106\124\120\012\012\011\055\163\011\123" \ +"\160\151\144\145\162\040\155\157\144\145\040\055\040\157\156\154" \ +"\171\040\143\150\145\143\153\040\146\151\154\145\040\145\170\151" \ +"\163\164\145\156\143\145\012\011\055\143\011\103\157\156\164\151" \ +"\156\165\145\040\162\145\164\162\151\145\166\141\154\040\157\146" \ +"\040\141\142\157\162\164\145\144\040\164\162\141\156\163\146\145" \ +"\162\012\011\055\161\011\121\165\151\145\164\012\011\055\120\040" \ +"\104\111\122\011\123\141\166\145\040\164\157\040\104\111\122\040" \ +"\050\144\145\146\141\165\154\164\040\056\051\012\011\055\124\040" \ +"\123\105\103\011\116\145\164\167\157\162\153\040\162\145\141\144" \ +"\040\164\151\155\145\157\165\164\040\151\163\040\123\105\103\040" \ +"\163\145\143\157\156\144\163\012\011\055\117\040\106\111\114\105" \ +"\011\123\141\166\145\040\164\157\040\106\111\114\105\040\050\047" \ +"\055\047\040\146\157\162\040\163\164\144\157\165\164\051\012\011" \ +"\055\125\040\123\124\122\011\125\163\145\040\123\124\122\040\146" \ +"\157\162\040\125\163\145\162\055\101\147\145\156\164\040\150\145" \ +"\141\144\145\162\012\011\055\131\011\125\163\145\040\160\162\157" \ +"\170\171\040\050\047\157\156\047\040\157\162\040\047\157\146\146" \ +"\047\051\000\133\103\117\115\115\101\116\104\135\056\056\056\012" \ +"\012\114\157\143\141\164\145\040\141\040\103\117\115\115\101\116" \ +"\104\000\012\012\120\162\151\156\164\040\164\150\145\040\165\163" \ +"\145\162\040\156\141\155\145\040\141\163\163\157\143\151\141\164" \ +"\145\144\040\167\151\164\150\040\164\150\145\040\143\165\162\162" \ +"\145\156\164\040\145\146\146\145\143\164\151\166\145\040\165\163" \ +"\145\162\040\151\144\000\133\117\120\124\111\117\116\123\135\040" \ +"\133\120\122\117\107\040\101\122\107\123\135\012\012\122\165\156" \ +"\040\120\122\117\107\040\157\156\040\145\166\145\162\171\040\151" \ +"\164\145\155\040\147\151\166\145\156\040\142\171\040\163\164\144" \ +"\151\156\012\012\011\055\160\011\101\163\153\040\165\163\145\162" \ +"\040\167\150\145\164\150\145\162\040\164\157\040\162\165\156\040" \ +"\145\141\143\150\040\143\157\155\155\141\156\144\012\011\055\162" \ +"\011\104\157\156\047\164\040\162\165\156\040\143\157\155\155\141" \ +"\156\144\040\151\146\040\151\156\160\165\164\040\151\163\040\145" \ +"\155\160\164\171\012\011\055\060\011\111\156\160\165\164\040\151" \ +"\163\040\163\145\160\141\162\141\164\145\144\040\142\171\040\116" \ +"\125\114\040\143\150\141\162\141\143\164\145\162\163\012\011\055" \ +"\164\011\120\162\151\156\164\040\164\150\145\040\143\157\155\155" \ +"\141\156\144\040\157\156\040\163\164\144\145\162\162\040\142\145" \ +"\146\157\162\145\040\145\170\145\143\165\164\151\157\156\012\011" \ +"\055\145\133\123\124\122\135\011\123\124\122\040\163\164\157\160" \ +"\163\040\151\156\160\165\164\040\160\162\157\143\145\163\163\151" \ +"\156\147\012\011\055\156\040\116\011\120\141\163\163\040\156\157" \ +"\040\155\157\162\145\040\164\150\141\156\040\116\040\141\162\147" \ +"\163\040\164\157\040\120\122\117\107\012\011\055\163\040\116\011" \ +"\120\141\163\163\040\143\157\155\155\141\156\144\040\154\151\156" \ +"\145\040\157\146\040\156\157\040\155\157\162\145\040\164\150\141" \ +"\156\040\116\040\142\171\164\145\163\012\011\055\170\011\105\170" \ +"\151\164\040\151\146\040\163\151\172\145\040\151\163\040\145\170" \ +"\143\145\145\144\145\144\000\055\144\040\133\055\143\146\135\040" \ +"\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157\155" \ +"\160\162\145\163\163\040\106\111\114\105\040\050\157\162\040\163" \ +"\164\144\151\156\051\012\012\011\055\144\011\104\145\143\157\155" \ +"\160\162\145\163\163\012\011\055\143\011\127\162\151\164\145\040" \ +"\164\157\040\163\164\144\157\165\164\012\011\055\146\011\106\157" \ +"\162\143\145\000\133\106\111\114\105\135\056\056\056\012\012\104" \ +"\145\143\157\155\160\162\145\163\163\040\164\157\040\163\164\144" \ +"\157\165\164\000\133\123\124\122\111\116\107\135\012\012\122\145" \ +"\160\145\141\164\145\144\154\171\040\157\165\164\160\165\164\040" \ +"\141\040\154\151\156\145\040\167\151\164\150\040\123\124\122\111" \ +"\116\107\054\040\157\162\040\047\171\047\000\133\106\111\114\105" \ +"\135\056\056\056\012\012\104\145\143\157\155\160\162\145\163\163" \ +"\040\164\157\040\163\164\144\157\165\164\000" \ #define PACKED_USAGE \ -0x68,0x31,0x31,0x41,0x59,0x26,0x53,0x59,0x2e,0x83,0x30,0xf7,0x00,0x1a,0xcf,0x5f, \ -0x80,0x72,0x70,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x60, \ -0x4f,0x05,0x07,0xa0,0x00,0x7d,0xf6,0x78,0xa0,0x14,0x1a,0x8e,0xe7,0x6c,0x06,0xb3, \ -0x65,0x06,0xf7,0xb7,0xbd,0x48,0xda,0xb5,0x1a,0x34,0x85,0xa6,0x47,0xd3,0x76,0x68, \ -0x1e,0xec,0x1d,0x52,0xa7,0xde,0xc0,0x0b,0xd0,0x02,0x4d,0xed,0x8f,0x7b,0xbb,0xce, \ -0xc3,0xd9,0x25,0xed,0xb0,0xfa,0xdd,0x4c,0x92,0xc5,0x29,0x5b,0x46,0xca,0xbe,0xdb, \ -0x9e,0xee,0xdd,0xdd,0x6a,0x3d,0xb4,0x44,0x87,0x4f,0x80,0x72,0xf6,0xe9,0x5b,0x5b, \ -0x21,0x7b,0x90,0xee,0x50,0x32,0xd7,0xd1,0x95,0xe8,0x5c,0x80,0x00,0xde,0xbd,0xce, \ -0xeb,0x99,0x73,0x77,0x77,0xa7,0xb8,0x7b,0x2c,0x54,0x94,0x6b,0x6a,0x52,0xcd,0xce, \ -0xe5,0x37,0x1b,0xa3,0xde,0xf7,0x1e,0xd9,0x66,0x64,0x50,0xf1,0x32,0x6b,0x95,0xd8, \ -0x6d,0xb6,0xd2,0x1a,0xd2,0xd5,0x1a,0xf6,0xeb,0x95,0x50,0xed,0x92,0x1d,0x48,0x67, \ -0x1b,0x61,0xa3,0x6f,0x4d,0x5e,0xce,0xee,0x5b,0xd5,0x01,0x37,0x89,0x3d,0x99,0xb5, \ -0xb5,0x1b,0x36,0xd6,0x64,0x63,0xbc,0x33,0xe6,0x1a,0x98,0x80,0x80,0x01,0x00,0x13, \ -0x09,0x88,0x1a,0x04,0xc4,0x1a,0x99,0x29,0xfe,0x90,0xd3,0x2a,0x7e,0x98,0x99,0x06, \ -0x29,0xa6,0x14,0xf5,0x06,0x9a,0x09,0x90,0x82,0x02,0x27,0xa4,0x60,0xa6,0x80,0xd2, \ -0x9f,0xaa,0x7a,0x26,0x02,0x34,0x69,0xb5,0x34,0xd3,0x40,0x00,0x68,0x00,0x68,0x1a, \ -0x61,0x12,0x12,0x12,0x34,0x00,0xd1,0xa6,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, \ -0x00,0x49,0xa5,0x10,0x40,0x80,0x04,0xd0,0x4c,0x89,0x90,0xd1,0x27,0xb4,0x69,0x4f, \ -0xd5,0x3c,0xa3,0xd3,0xca,0x9a,0x32,0x1f,0xaa,0x7a,0x83,0xd2,0x68,0x01,0xa0,0xc8, \ -0x11,0x24,0x40,0x80,0x9a,0x69,0xa1,0xaa,0x69,0xb2,0x9a,0x6d,0x25,0x3f,0x46,0x8d, \ -0x53,0x7a,0x64,0x0a,0x7e,0x94,0xf5,0x37,0x95,0x0c,0x83,0xd4,0x3c,0xa0,0x1e,0xa1, \ -0xa1,0xa0,0x12,0x22,0x20,0x13,0x10,0x26,0x4d,0x02,0x06,0x9a,0x23,0x4c,0x10,0x04, \ -0xc5,0x47,0xea,0x9f,0xaa,0x7a,0x4f,0x4d,0x13,0xd2,0x03,0x4d,0x19,0x34,0x0d,0x27, \ -0xf9,0x9f,0xb3,0xcb,0x83,0xcc,0x5e,0x6f,0x9c,0xc1,0xfc,0xf1,0x7e,0xb9,0x0d,0x64, \ -0x50,0xf0,0x5c,0x9f,0x40,0xdf,0x73,0x10,0xff,0x97,0xa7,0x9d,0xae,0xb7,0x23,0xc3, \ -0xbf,0x26,0xa0,0x8d,0x69,0x27,0xce,0x34,0x5c,0x8c,0xec,0x73,0xdc,0x42,0x8a,0xbf, \ -0x78,0x96,0x55,0x14,0x7f,0x26,0xb1,0x6b,0x04,0xe4,0xfa,0x7d,0x12,0xb3,0x6c,0x82, \ -0x43,0x86,0xf3,0x32,0x55,0x03,0xbf,0x7d,0x1f,0x73,0x8f,0xf2,0x96,0x81,0x47,0xf5, \ -0xe5,0x71,0x04,0xc6,0x20,0x46,0x99,0xbf,0x73,0xfb,0xff,0xa2,0x6b,0x3d,0xad,0xfb, \ -0x39,0x6d,0xa3,0xc2,0xc9,0x71,0xd4,0x10,0x61,0x91,0xcd,0x88,0xd2,0x8f,0xa9,0xaa, \ -0x9c,0xc7,0x52,0xe1,0x2c,0x71,0xbe,0xf2,0xd8,0x91,0x34,0x8e,0x33,0x96,0x3a,0x7f, \ -0xa6,0x1e,0x5a,0x0e,0x65,0xfa,0x65,0x96,0x11,0xbb,0xad,0x6b,0x29,0x61,0x3b,0x5f, \ -0x4c,0x75,0xae,0x10,0xee,0x26,0x17,0x10,0x2f,0x8f,0xe6,0x36,0x16,0x33,0xdc,0x03, \ -0x42,0xb6,0xa8,0x08,0xe6,0x3f,0xfa,0x5c,0x3f,0xd3,0x11,0x4a,0x1f,0xb1,0x3b,0xfa, \ -0x20,0x63,0xd0,0x66,0xa2,0xd7,0x5b,0x07,0xc5,0x62,0x4d,0x79,0x7d,0x9f,0xc7,0xc0, \ -0xe0,0xb6,0x06,0xbb,0x44,0x40,0xf5,0xab,0x8a,0x61,0x7e,0xbd,0x43,0x27,0xf7,0xd1, \ -0x9a,0x89,0xb7,0xd5,0xfc,0xd7,0xd3,0xef,0xf1,0x5a,0x93,0x7f,0x63,0x2d,0xd8,0x7f, \ -0xab,0xbf,0x60,0xf8,0x5f,0x7e,0xae,0xdb,0x3f,0x69,0x79,0x27,0xa8,0x66,0x1c,0xf9, \ -0x1f,0x1d,0x7d,0x68,0xf4,0x0c,0xbe,0x1f,0x4c,0xf3,0x20,0x18,0x97,0xfb,0xe4,0x7b, \ -0x70,0xdb,0x93,0xaf,0x2c,0xd5,0xa5,0x8a,0xe2,0x25,0xce,0xee,0xb9,0x71,0xd0,0xed, \ -0x9b,0xf6,0x0b,0xe2,0xa0,0xc8,0xf8,0x25,0x54,0x44,0x51,0x61,0x24,0x92,0x7e,0xff, \ -0x37,0x57,0xe9,0xc3,0x2c,0xb2,0x88,0x46,0x40,0x40,0x53,0xfa,0xfe,0xaa,0xf6,0xf4, \ -0xd0,0x85,0xc9,0xc9,0xbf,0xbf,0x2e,0xaa,0x07,0xe3,0xc7,0xd2,0xc8,0xfa,0x05,0x54, \ -0x49,0x27,0x8f,0x84,0xc6,0xf2,0xd1,0xb5,0xe1,0xe9,0x84,0x74,0xdf,0x70,0xe7,0x61, \ -0x19,0x56,0xad,0xc9,0xc2,0x57,0xe5,0x3d,0xf1,0x89,0xe9,0x99,0x4a,0x62,0x97,0xef, \ -0x11,0xbe,0x26,0x36,0xe8,0xb4,0x50,0x5b,0x6d,0xe5,0x7b,0xea,0xcc,0xd1,0xc6,0xbd, \ -0xd6,0xba,0x3c,0xd4,0xb6,0xe5,0xa6,0x30,0x61,0x56,0xde,0x01,0xec,0x2b,0x18,0xc2, \ -0x4e,0x6a,0xd5,0x95,0x1c,0x0b,0x1d,0xcd,0x5c,0xee,0xaa,0xec,0xb8,0xa3,0xb4,0x95, \ -0x31,0x4d,0xbd,0xf6,0x2e,0x89,0x28,0x98,0xd4,0x17,0x3d,0x0d,0x40,0x57,0xaa,0x4b, \ -0xb3,0x2b,0xc5,0xc8,0x25,0xe3,0xbd,0x10,0x90,0xa1,0x8a,0x76,0x65,0x60,0x7a,0x2f, \ -0x96,0xe0,0x50,0x2c,0xf9,0xf7,0xe7,0x97,0x05,0x62,0x69,0x26,0xeb,0xe0,0x5d,0xec, \ -0x1c,0xc0,0x37,0x3e,0xe5,0x63,0x52,0x90,0x12,0x94,0x44,0xac,0xc3,0xe9,0xd5,0xbd, \ -0x9e,0xf4,0x30,0x5d,0x36,0x62,0xc7,0x74,0xb3,0xef,0x10,0xe1,0x29,0xf1,0x0f,0xa7, \ -0x1f,0xd1,0x0c,0xa2,0x6d,0xf8,0xb6,0x97,0x3a,0xc6,0x43,0x0e,0xa3,0xb0,0xd9,0x97, \ -0x0d,0xc9,0x6d,0xbc,0x18,0xba,0xb2,0x72,0x70,0xbf,0x88,0xf3,0x6c,0x0c,0x02,0xc9, \ -0xb7,0xed,0x58,0x90,0x53,0x52,0x60,0xcf,0xc4,0x95,0x62,0x3b,0xe7,0x5c,0x30,0x58, \ -0xd1,0xc2,0x51,0xe0,0xc9,0x38,0x7d,0x71,0xe7,0x17,0xb8,0xc1,0x05,0x82,0xb1,0x5a, \ -0x38,0x86,0xde,0x96,0x58,0x2a,0x19,0xe3,0xe9,0xbe,0x17,0x8a,0xc3,0x0c,0x61,0x87, \ -0xf2,0x3e,0x7d,0xf1,0x62,0xae,0xec,0xfa,0xfc,0xf2,0x0c,0x1d,0x15,0xd0,0xbc,0x39, \ -0x3e,0xbc,0x92,0x8a,0x6b,0xe8,0xba,0x42,0x3e,0x99,0x73,0x71,0x66,0xa3,0xbb,0x10, \ -0xd4,0x08,0x4c,0x1b,0x5a,0xa3,0x91,0x8b,0xdd,0x01,0xc1,0x23,0x07,0x28,0x83,0x4b, \ -0x39,0x0b,0x84,0xc6,0x63,0x66,0xbc,0x2d,0xd8,0xd3,0x8b,0x46,0x78,0xe7,0x66,0xc3, \ -0xc0,0xf3,0x76,0xec,0x29,0xaf,0x26,0x40,0xa7,0x10,0xc8,0xbc,0x8b,0x50,0x42,0xd5, \ -0x11,0x83,0x30,0x44,0x40,0x88,0x1a,0x12,0x5e,0xf8,0x63,0x8a,0x67,0x3b,0x81,0x62, \ -0xa8,0x2c,0x10,0xfd,0x71,0x0b,0xa2,0x64,0xe0,0xb1,0x03,0x5e,0x45,0xce,0x59,0x29, \ -0x9d,0x7e,0x66,0x08,0x7a,0x77,0x20,0xa4,0xb2,0x90,0xfd,0xf5,0x9f,0x2e,0x99,0x93, \ -0x41,0x06,0x4e,0x73,0x90,0x19,0x64,0x4e,0x5c,0x87,0x14,0xce,0x50,0xd7,0x9c,0xec, \ -0x12,0xeb,0xa9,0x30,0x39,0xa5,0x07,0x43,0x86,0x46,0xc7,0x97,0x5b,0x36,0x19,0xc3, \ -0x9b,0xa3,0x24,0x03,0xa9,0xca,0xae,0xe6,0xe0,0xbd,0xa5,0x3e,0xc9,0xaa,0xcf,0x21, \ -0x87,0xe3,0x09,0x7d,0x37,0x1e,0x55,0xb7,0x93,0x5c,0x5b,0x7f,0x4d,0xec,0x6b,0x3f, \ -0xdd,0xc3,0x1f,0x55,0xe1,0xc0,0x92,0xe2,0x2c,0xfc,0x2e,0xcc,0x3a,0xc4,0x2c,0xd7, \ -0x8e,0x0a,0x8e,0x5b,0x33,0x13,0x98,0xdc,0x23,0x85,0x3b,0xa5,0xa5,0x03,0x2d,0xa9, \ -0x6f,0x7e,0x1f,0x46,0x7f,0x5e,0xe9,0xc4,0x62,0x99,0x74,0xa8,0x1f,0x08,0x21,0x8c, \ -0x66,0xa4,0x14,0xf3,0xea,0x97,0xfe,0x5f,0x3c,0x3b,0x39,0xb2,0xed,0x7e,0xfb,0xfe, \ -0x9a,0x55,0x21,0xe2,0x72,0xfc,0x23,0xd6,0x0c,0x00,0xca,0x29,0x3f,0x85,0xa0,0x73, \ -0x30,0x17,0x08,0x88,0x07,0x03,0xd2,0xe0,0x44,0x18,0x4c,0x92,0x94,0x6a,0x21,0x58, \ -0x20,0xa5,0xc2,0xdd,0x1f,0xab,0xc2,0xcb,0xe7,0xc9,0xc3,0xe3,0x65,0xad,0xfb,0x5d, \ -0x8e,0x00,0x4d,0x1b,0xc9,0xc7,0xda,0x40,0xd6,0x87,0x9a,0x2d,0x56,0xc7,0xeb,0x73, \ -0xa0,0xba,0xd7,0xde,0xb2,0xca,0x7d,0x48,0x60,0x98,0x9a,0xea,0x40,0x39,0x6d,0x37, \ -0x17,0xb1,0xf5,0x90,0xa5,0x8f,0x4d,0xad,0x5b,0x16,0x74,0x50,0x20,0xc9,0xa9,0x84, \ -0xbb,0x85,0x16,0xc7,0xab,0xd9,0x2c,0x50,0xd8,0x5f,0xf1,0x0f,0x9c,0x78,0x3e,0x74, \ -0xa1,0xfc,0x87,0xf0,0x94,0x61,0x9c,0xf8,0x69,0xd2,0x66,0x6c,0x08,0x9b,0x3c,0x87, \ -0x83,0x00,0x61,0xdb,0x73,0x3e,0xef,0xb1,0xb3,0x36,0xf9,0x0e,0x52,0x0d,0x2a,0xc0, \ -0xb6,0x05,0x8b,0x10,0x6c,0xbb,0xe5,0x45,0x52,0xa0,0xb2,0xcb,0x24,0x78,0x2d,0x1b, \ -0x7b,0xac,0xe5,0xc0,0xf6,0x9d,0xe9,0x50,0x5c,0xd1,0x42,0x53,0xec,0xe2,0xb4,0xeb, \ -0x04,0xa1,0x28,0x88,0x21,0x67,0x41,0x04,0x85,0xf7,0x24,0xd5,0xca,0x8a,0xd8,0x32, \ -0x4f,0x5b,0xa4,0xc4,0xe8,0x24,0x04,0xf9,0xd9,0xbc,0x52,0xd5,0x4c,0xb5,0x6a,0x34, \ -0x09,0xf9,0x8b,0x36,0xc5,0xb9,0x1e,0x59,0x89,0x71,0xf6,0x91,0xa8,0x41,0x7f,0x82, \ -0x71,0x98,0x5f,0x2d,0x3d,0xb5,0x50,0xf6,0xd7,0xa5,0xfd,0x82,0xbf,0x04,0xac,0x28, \ -0x9f,0x7e,0x39,0x7b,0xdf,0x41,0xf9,0x2a,0xc3,0xba,0xea,0x75,0x99,0xcc,0x41,0x55, \ -0xdd,0x5b,0xb9,0xd4,0x35,0x9a,0x7c,0x43,0x3b,0x88,0x3c,0x7b,0xf0,0xde,0xe2,0xf2, \ -0x83,0x56,0xa3,0xe0,0x7b,0x55,0xb7,0x21,0xc9,0xe7,0xf9,0xb5,0xda,0x62,0xce,0xa1, \ -0xb5,0x57,0x03,0x90,0x61,0xc2,0xd1,0xbe,0xcc,0x35,0x1a,0xdd,0xa9,0x24,0x2c,0x3b, \ -0x1e,0x6e,0xc1,0xb3,0xb3,0x5e,0x13,0xbb,0xf7,0x64,0x30,0x8e,0xee,0xe6,0x2f,0xf5, \ -0xf0,0xed,0x81,0xa4,0x5d,0x41,0xe2,0x1d,0xdb,0x6c,0x35,0x77,0xb3,0x52,0xa8,0x28, \ -0xa0,0xd3,0x36,0x94,0x17,0xe7,0x3f,0xaa,0x45,0x8b,0x5d,0x7b,0x9e,0x44,0x17,0x5b, \ -0xb7,0x68,0x1d,0x36,0x91,0x31,0x76,0xeb,0x5e,0x4e,0xed,0x7d,0xa5,0x98,0x29,0xa6, \ -0x58,0x83,0x8e,0xb0,0x29,0xd5,0x04,0xca,0x95,0x0d,0x4f,0x1a,0x3d,0x93,0xd6,0xd6, \ -0x13,0x1d,0xbc,0x5e,0x88,0xf0,0x3c,0x21,0x67,0x15,0xf2,0xbe,0xc7,0xfb,0xcb,0x93, \ -0x83,0x24,0x86,0x1c,0xf5,0xbe,0xf1,0x16,0x5d,0x0b,0x1a,0xb4,0x10,0xf8,0x61,0xc5, \ -0x80,0x87,0xfc,0x4c,0xc2,0x11,0xcf,0x9c,0xa2,0x8b,0xfa,0x30,0x61,0xe2,0xbd,0x4e, \ -0xd6,0xc6,0x16,0x61,0xd3,0x52,0xcc,0xa8,0x15,0x88,0x97,0xc3,0xa9,0x81,0xd0,0x1c, \ -0x10,0x73,0x08,0x95,0x02,0x1c,0xd6,0x99,0x72,0x2d,0xa6,0xa0,0x85,0xe9,0x33,0x51, \ -0x4a,0xdc,0x70,0xc0,0xc9,0xfb,0xa7,0xbf,0x2c,0x65,0x5b,0x69,0xdc,0xff,0x70,0x0e, \ -0x07,0x89,0x02,0x19,0x40,0xe1,0x04,0x0c,0x2a,0x96,0x26,0x86,0x19,0xfb,0x6f,0xa1, \ -0xd6,0x3e,0x5b,0x29,0x05,0xac,0x3e,0xb6,0x91,0x3c,0x9b,0x5f,0x4f,0xbd,0xc2,0x7b, \ -0xab,0x4a,0x3e,0xbd,0x3e,0x47,0x52,0xd3,0x04,0xed,0xbc,0x12,0x1e,0xa3,0x94,0x77, \ -0x18,0x78,0x17,0xde,0xb2,0x6d,0xfd,0x33,0xd3,0xbf,0xe2,0xc2,0xde,0x67,0x96,0x5e, \ -0xe7,0x61,0x13,0xc2,0x1a,0xd4,0xbb,0xc0,0xb5,0x4f,0xed,0x94,0xec,0x09,0xf3,0x70, \ -0x9a,0x30,0x54,0x76,0x02,0xcf,0x39,0xd3,0xce,0xc9,0x6b,0xec,0x4e,0x3e,0x67,0xb9, \ -0x97,0xfc,0x9e,0xf5,0xfa,0xb4,0x5d,0xb2,0xac,0x7e,0x7e,0x47,0x68,0x71,0x66,0xbd, \ -0x9d,0x39,0x47,0x86,0xb1,0xf7,0xba,0xe9,0x2f,0xf5,0xf5,0x6b,0xe9,0x17,0x59,0x6b, \ -0x36,0x33,0xd7,0x5b,0x6d,0x70,0xb0,0xbd,0x41,0x72,0xce,0x48,0xfa,0x17,0x4e,0xcf, \ -0xa7,0x23,0x3f,0x9a,0x94,0x67,0xfe,0x2f,0xe9,0xe1,0xee,0xd1,0xc8,0x5e,0x08,0x53, \ -0xc6,0xfa,0xdc,0x4f,0x61,0x9c,0xe0,0x04,0x2d,0x7c,0xed,0x44,0xb8,0x75,0x23,0x67, \ -0x0c,0xa5,0x7f,0x01,0x0e,0x59,0x3d,0xca,0x96,0x65,0x1e,0x3d,0x99,0x3e,0x1b,0xd1, \ -0x16,0xe9,0xeb,0x6e,0xba,0x9e,0xb6,0x74,0x24,0xc5,0xed,0x61,0x57,0xa2,0x8d,0xb9, \ -0xc4,0x38,0xf3,0xba,0x1e,0x94,0xba,0x8a,0x27,0x51,0x85,0x72,0xe3,0x1b,0xd9,0x4d, \ -0x2a,0xd5,0x9b,0x5f,0x7b,0x80,0xe4,0x97,0x3b,0xdb,0x86,0x86,0xae,0x3f,0xcc,0x6b, \ -0xd3,0xdf,0xf3,0x9d,0xa8,0x43,0x66,0x40,0x11,0x84,0x14,0x5e,0xcb,0x64,0x57,0x5c, \ -0x5c,0x01,0xf4,0x21,0x37,0x42,0x06,0x18,0x2c,0x88,0x6d,0x00,0xed,0x88,0x68,0x06, \ -0x86,0x8b,0xf7,0xb3,0x19,0xdb,0x76,0xdf,0x4f,0x76,0x4b,0xeb,0xf2,0xb2,0xdb,0xab, \ -0x36,0x69,0xc4,0xce,0x95,0x6a,0x6d,0xa7,0xe5,0x5f,0xb4,0x2b,0xc7,0xf8,0x4f,0x10, \ -0xbd,0xdb,0xbc,0x74,0xad,0x93,0x99,0xf4,0xc7,0x58,0x05,0x5b,0x22,0xb4,0x13,0xdb, \ -0xd2,0x0b,0xb0,0xda,0xb7,0x31,0xe4,0xc2,0xbd,0xbf,0x33,0xc8,0x6f,0x8e,0x0d,0x54, \ -0x09,0x58,0x51,0xcb,0x3d,0x81,0xe0,0xf9,0x42,0xe1,0x51,0xb8,0x9e,0x46,0xb3,0x91, \ -0x35,0x9a,0x6e,0x5c,0x48,0x0f,0xb3,0xe9,0x50,0xc8,0x38,0xdd,0xbe,0x78,0x86,0xdb, \ -0xee,0xf3,0x6c,0x1b,0xfb,0xd2,0x58,0x89,0xfc,0x8c,0x83,0xfb,0x99,0x7b,0xcc,0x30, \ -0x9c,0xea,0x5f,0x8b,0xcc,0xf0,0x27,0xbb,0x28,0x2d,0xdd,0xf8,0xcc,0x9a,0x36,0x36, \ -0x3f,0x8b,0x81,0x37,0x30,0xfb,0x1c,0xcc,0x21,0xef,0xed,0xe8,0xa1,0x74,0x3f,0x8f, \ -0xdb,0xf1,0xf8,0x2e,0x5d,0x36,0x09,0xaf,0x98,0x55,0x0b,0x9a,0xfd,0x09,0x4f,0x67, \ -0x52,0xf8,0x63,0xe5,0xe8,0x8a,0x4c,0xbb,0x13,0x40,0xce,0xe7,0x35,0x81,0x7d,0xf0, \ -0xf9,0xb6,0x1b,0x65,0xce,0x74,0xb2,0x4c,0xf2,0x32,0x82,0x4f,0xfe,0xff,0x6a,0xbf, \ -0xaf,0x0d,0x93,0xc1,0x5d,0x52,0x27,0x24,0x98,0x75,0x32,0x5b,0x1d,0x34,0x4c,0xa8, \ -0x21,0xf1,0xba,0x70,0x4d,0x0e,0x99,0x6f,0x27,0x55,0x22,0xc3,0x47,0xbd,0xb1,0xa3, \ -0x5f,0x27,0x36,0x06,0x2d,0xd7,0xf5,0xca,0xca,0xa1,0x3d,0x76,0x44,0xc0,0x84,0xdc, \ -0x12,0xaa,0x26,0xcf,0x6d,0x08,0x1d,0x25,0xe1,0x18,0x3f,0x1b,0xc0,0x54,0xae,0x23, \ -0xaa,0x8d,0x15,0x4a,0x6e,0xa7,0x4c,0xde,0x45,0x12,0xd5,0xb1,0x44,0xa1,0x2c,0xfa, \ -0x92,0x2f,0xb6,0x79,0xda,0x7b,0x46,0x6e,0x83,0xcb,0x88,0xb2,0xe4,0x3f,0xf3,0xfe, \ -0x18,0xc7,0xf3,0xa2,0x60,0xf5,0xab,0xfe,0x7b,0x71,0x8a,0x71,0xcb,0x8b,0x79,0x63, \ -0x73,0x86,0x77,0x8d,0xb3,0x7d,0xbe,0x9c,0x1a,0xfa,0x60,0xda,0xc7,0xfd,0xe2,0xfe, \ -0x38,0xfd,0xfb,0xf6,0x79,0xb6,0x66,0x62,0xbf,0x8b,0x30,0xe9,0x52,0x85,0x5a,0x52, \ -0x2e,0xdc,0x40,0x3b,0xaf,0x47,0x09,0x28,0x37,0x30,0x21,0xa7,0x9f,0x06,0x00,0x83, \ -0xb6,0x53,0x6e,0x72,0xcc,0x3f,0x0a,0x99,0x07,0x36,0xbd,0x0b,0x4e,0x41,0x3c,0xae, \ -0xa8,0xd8,0xc0,0xe2,0x88,0xba,0xa0,0x2d,0x22,0xef,0x1a,0x92,0x38,0x70,0x9a,0xa7, \ -0xea,0x10,0x3f,0x74,0xe0,0xe8,0x1e,0x65,0xba,0x22,0x65,0xa7,0xb8,0xdb,0x8f,0x15, \ -0xd8,0xe2,0x3b,0x33,0xe9,0xb5,0x98,0x8b,0xe2,0xf7,0xe2,0x63,0xc6,0x23,0x39,0xf0, \ -0xda,0x30,0x17,0xb9,0x01,0x68,0x6d,0xc7,0xc3,0x3c,0x2f,0x09,0x1c,0xe7,0x55,0x5c, \ -0x69,0x3f,0xaa,0xa3,0x42,0x81,0xbe,0x67,0x50,0xd9,0x57,0x81,0xf5,0xf1,0x81,0x84, \ -0x44,0x82,0x05,0xe6,0xf7,0x6e,0x13,0x2e,0xf3,0x44,0x52,0x4a,0xc1,0x15,0x63,0x8c, \ -0xc3,0x3a,0xb9,0xd8,0x74,0x6b,0x95,0xf0,0xac,0x22,0xdf,0x90,0xf1,0xa9,0x86,0x3c, \ -0x33,0xe7,0xfa,0xfd,0x9e,0x39,0x57,0x96,0x78,0x23,0xf6,0x72,0xba,0xdd,0x0c,0x9d, \ -0x2c,0xcf,0xe7,0x4b,0xe9,0x0c,0xb3,0xc3,0x47,0xc0,0x8f,0x2f,0x57,0x5c,0x97,0xd6, \ -0xa7,0xf4,0x24,0xe3,0x9b,0x08,0xd1,0x5d,0x87,0xa8,0xb5,0x19,0xd0,0x93,0x03,0xd7, \ -0x4c,0x0f,0x5c,0xbf,0xcd,0x84,0xab,0xfd,0x2e,0x13,0x1c,0x39,0x65,0xd2,0x06,0x94, \ -0x37,0xea,0xdc,0xe9,0xb9,0xfe,0x59,0xfd,0xf4,0xc8,0x3c,0x70,0xa8,0x80,0x8a,0xa8, \ -0x8f,0x0c,0x46,0xa4,0xf8,0xe8,0x93,0x97,0x76,0x31,0x2c,0x92,0x2e,0xe5,0xc5,0x6d, \ -0x62,0xf4,0x3d,0x15,0x52,0x73,0x85,0xc6,0x7f,0xf9,0x25,0x58,0x09,0xa0,0x69,0x9c, \ -0xd4,0x57,0x10,0xe4,0x63,0x84,0xa7,0x33,0x03,0x6a,0xc7,0x97,0x8c,0x42,0x41,0x03, \ -0x92,0x50,0x93,0x7e,0x5f,0x2c,0xb4,0xb4,0xfe,0xff,0x2b,0xef,0x30,0x9d,0x42,0xf0, \ -0x82,0xa8,0x6c,0x6c,0x1e,0x7b,0x33,0x73,0x56,0x58,0x70,0xe4,0x07,0x57,0xd3,0xbb, \ -0x7e,0xa1,0xed,0xce,0x2f,0xdb,0x5e,0xde,0xc9,0xf0,0xd4,0x9b,0xec,0x2f,0x34,0x4b, \ -0x1d,0xd7,0xef,0x5f,0x78,0xc1,0x01,0x54,0xb4,0xd9,0x6d,0x56,0x2c,0x40,0xb9,0xe8, \ -0x38,0x12,0x9c,0x43,0x28,0xe8,0xc0,0x34,0x4d,0x71,0x17,0x2b,0x81,0x2b,0x05,0x0c, \ -0x8f,0xa6,0x8b,0x88,0x84,0xdb,0x62,0x0e,0x83,0xc5,0xaf,0x62,0xf1,0x55,0x63,0x14, \ -0x7c,0x6c,0xbe,0xb5,0x1d,0x97,0xf7,0x8c,0x03,0xcb,0x8a,0x7a,0x36,0xd1,0x30,0x5a, \ -0x9a,0x46,0xa5,0x62,0x21,0x63,0x9c,0x4b,0xe2,0x1d,0x03,0x1c,0xe5,0x86,0x2c,0x02, \ -0xea,0xeb,0xbc,0x51,0x81,0x7f,0xe0,0x59,0x55,0x36,0x18,0x2e,0x8a,0x86,0x55,0xd9, \ -0x49,0xd8,0xfa,0x8c,0xd9,0xd0,0xf8,0x16,0x4e,0x20,0x0d,0x54,0x92,0xb8,0x68,0x33, \ -0x6d,0xc5,0x61,0x18,0x99,0x9a,0x93,0x91,0x95,0x4d,0x4b,0xb4,0xdf,0x63,0x18,0x65, \ -0x2c,0x0f,0x94,0x60,0x03,0x9a,0x35,0x86,0xb7,0x48,0xcf,0x15,0x18,0x00,0x21,0xa0, \ -0x08,0x39,0xaf,0x09,0x59,0x34,0x44,0x42,0x74,0x37,0xad,0x36,0xc2,0x08,0x2a,0xcc, \ -0xd7,0xb3,0x70,0xce,0x66,0xbb,0x72,0x8f,0xae,0x95,0x8f,0x0c,0x58,0xf1,0xe9,0xd5, \ -0x9d,0xec,0x04,0x7d,0x6c,0x32,0x1e,0xd3,0x79,0x08,0x96,0x0b,0x8e,0x50,0x86,0xf0, \ -0x45,0xbc,0x02,0x49,0x85,0x6d,0x27,0xec,0x2c,0x7b,0xcf,0x25,0xfe,0x69,0xeb,0xb5, \ -0x7a,0xc8,0x9b,0x62,0x65,0x1c,0x20,0x01,0x50,0xe2,0x9f,0x6e,0xd6,0x65,0x3e,0xe8, \ -0x38,0x61,0xd7,0xad,0xc6,0x85,0x2c,0x70,0xd5,0x66,0xf9,0x2c,0xf8,0x79,0x42,0x3f, \ -0xb1,0xf2,0x1a,0x0a,0xe7,0x04,0x6d,0x5e,0x13,0x34,0x8a,0x77,0xf0,0x39,0xfe,0x09, \ -0xfb,0x3b,0x20,0x07,0x8f,0x67,0x82,0x80,0xef,0x74,0x91,0xb7,0x8a,0xbf,0x9e,0x87, \ -0x40,0xc6,0xd7,0x1a,0xdc,0xc7,0x9b,0x31,0x2c,0x2f,0x92,0x6e,0x29,0x6e,0x01,0x31, \ -0xa9,0xd2,0xfa,0x3b,0x3e,0x10,0x42,0x11,0x2d,0x63,0xbd,0xeb,0x52,0x91,0x6e,0x20, \ -0x3b,0x92,0x49,0xe5,0xc3,0x2b,0xd9,0x33,0x87,0xde,0xf3,0x11,0x76,0xf5,0xa1,0x04, \ -0xe1,0x2a,0x6a,0x07,0xc5,0x13,0x87,0xdd,0x2b,0x10,0xe3,0xb8,0x3a,0x06,0x8d,0x36, \ -0x1a,0xb5,0x15,0x85,0x24,0xb2,0x8e,0x9d,0xcb,0xa6,0x2d,0x68,0x7b,0x70,0x3c,0x3a, \ -0x8b,0x81,0xf5,0x18,0x70,0xae,0x25,0x19,0x44,0xd1,0x39,0xa6,0x75,0xdc,0x81,0x7c, \ -0xd2,0x23,0xa7,0x8d,0x01,0x00,0x93,0x92,0x0d,0xfa,0x5b,0xa6,0x46,0xde,0xcd,0xf6, \ -0x8b,0x84,0x77,0x9c,0x96,0x3c,0x0e,0xfa,0xe7,0x46,0xe8,0x31,0x6d,0x46,0xc6,0x40, \ -0xc6,0x67,0xa4,0xd0,0xb9,0x98,0x5c,0x8f,0x50,0x37,0x4f,0xc5,0x9a,0x57,0xca,0x03, \ -0xa4,0x95,0x2b,0x45,0x09,0xd5,0xed,0xf2,0x36,0xd8,0xb1,0xe5,0x6d,0xc8,0x47,0x25, \ -0x33,0x57,0xf3,0xf2,0x8d,0xfe,0x95,0xc9,0xe4,0x54,0x89,0x3f,0x73,0x3e,0x9f,0x2a, \ -0x87,0x11,0x85,0x43,0x2d,0xe9,0xbf,0x45,0x94,0x77,0x0a,0x9e,0x7d,0xda,0xb7,0xb7, \ -0x36,0xcd,0xac,0x95,0x88,0x1d,0x38,0x28,0xa5,0x8c,0x06,0xbc,0x25,0xc0,0xd5,0x99, \ -0x58,0x5c,0x05,0x59,0x21,0x85,0xba,0xdb,0xbf,0xb9,0x40,0xfd,0x30,0xb5,0xf4,0xb5, \ -0x1d,0x75,0xcc,0xf2,0xdb,0x07,0x73,0xba,0xe9,0x06,0xc2,0x95,0xc2,0x64,0x1e,0x82, \ -0xd8,0x9b,0xab,0x5b,0xff,0xba,0x49,0x77,0x97,0x7b,0xfb,0x7e,0x79,0xe9,0xaf,0x1d, \ -0x08,0xe9,0x89,0x23,0x63,0x2a,0xf5,0xca,0x80,0x42,0x43,0x54,0xbb,0x96,0x12,0xb7, \ -0x22,0x34,0xd7,0x10,0x5e,0x51,0x0e,0x03,0x02,0x97,0x4b,0x35,0xdc,0x9f,0x28,0xa4, \ -0xe2,0x92,0xc8,0x70,0x4b,0x1b,0x19,0x7f,0x5d,0x40,0xef,0xf0,0xe5,0x27,0x16,0x37, \ -0xa7,0xc7,0x08,0xcb,0x3a,0xc5,0xb4,0x85,0x7a,0x2a,0x1c,0x11,0x67,0xb7,0x7e,0xe3, \ -0xfc,0x6b,0xd3,0x85,0xf7,0x74,0xc9,0x0c,0x58,0x12,0xf4,0xb7,0xe7,0xbc,0xb5,0x30, \ -0x15,0xe7,0x98,0x2e,0x45,0xcd,0x11,0x05,0xdc,0xa6,0xf1,0xca,0xeb,0x2b,0xb9,0x2e, \ -0x27,0x54,0x36,0x23,0xf4,0xcb,0x52,0x61,0x9e,0x21,0xd5,0xf1,0x7f,0x86,0xa2,0xcf, \ -0xd1,0x9e,0xc3,0xa9,0x85,0xad,0x3c,0xbc,0xac,0x32,0x41,0x11,0xdf,0xab,0x0d,0x44, \ -0x28,0xef,0x55,0x19,0x04,0x38,0x54,0x4c,0xe6,0x25,0x46,0xe1,0x36,0xa4,0xa6,0xd1, \ -0x0b,0x6b,0x75,0x0d,0x9b,0x07,0x7c,0x4b,0x7d,0x69,0x44,0x8a,0xdb,0x1b,0x22,0xaa, \ -0x0f,0xe9,0xcb,0x1e,0x06,0x2d,0x44,0xba,0xa3,0x4c,0xc0,0x96,0x17,0xaa,0x01,0xb5, \ -0x3f,0xe7,0xce,0xe3,0x19,0xd2,0xdb,0x47,0x67,0x55,0x0c,0x1d,0x41,0xc4,0x3f,0x7e, \ -0xf3,0x75,0x90,0x19,0x2a,0x98,0x61,0xfe,0xb1,0x03,0x56,0x50,0x4f,0xf0,0x56,0xa8, \ -0xe6,0xb5,0x1d,0x71,0xcd,0x7e,0xa9,0x14,0xcb,0x2a,0xcd,0xde,0xf3,0x50,0x34,0x1b, \ -0xaa,0x8d,0x7e,0xed,0xde,0x23,0xca,0xd3,0x61,0x7f,0x8d,0x97,0x40,0x8f,0x94,0xbf, \ -0xeb,0x0d,0x04,0xa1,0xce,0x37,0x0c,0x3c,0x74,0x56,0x5b,0x06,0x83,0x4e,0x5e,0x93, \ -0xf4,0xc1,0xdd,0x92,0xec,0xae,0x6e,0x6d,0x65,0xdb,0x02,0x30,0x31,0x34,0xb4,0x2c, \ -0x6c,0x81,0xfa,0x3f,0x4e,0x35,0xf1,0x55,0x0b,0x7b,0x7b,0xf3,0x74,0xb1,0xe7,0xde, \ -0xf9,0xab,0xed,0xd8,0xd5,0xd1,0x4f,0xaf,0x21,0x3a,0xe7,0x97,0x6c,0x73,0x16,0x16, \ -0x3b,0xfb,0xe4,0xc6,0x64,0xc4,0xac,0x91,0xd7,0xd4,0x56,0xd0,0x2e,0x1a,0x5b,0xd8, \ -0x75,0x71,0xca,0xfa,0x43,0xb6,0x12,0x99,0x34,0xe3,0xa8,0xcd,0x7f,0xe5,0x83,0xe2, \ -0x2c,0x7d,0x1d,0x38,0x70,0xc3,0x61,0xdb,0x84,0x3d,0xe3,0x46,0x03,0xb0,0xa2,0x29, \ -0xb6,0x7e,0x65,0x3e,0x70,0x5e,0x29,0x75,0xb4,0x6f,0xa0,0xd3,0xf0,0x4a,0xd1,0xbe, \ -0xdc,0x2e,0xf6,0x1c,0x03,0xad,0x4c,0x14,0x86,0xb9,0x1f,0x43,0x80,0xe6,0x96,0x76, \ -0xd0,0xee,0x87,0x1a,0xd4,0x7d,0x43,0xa3,0x00,0x5c,0x21,0x2c,0x4f,0xc6,0xd5,0xd2, \ -0x7e,0x97,0xbf,0xd0,0xb8,0xd5,0x68,0xc0,0xa0,0xe9,0x30,0xce,0xfc,0xd6,0x98,0x7b, \ -0xfe,0x3f,0x1e,0x48,0x22,0x36,0xc8,0xaf,0x71,0x86,0x33,0x6f,0x3f,0xd1,0x11,0x95, \ -0x48,0x92,0xa0,0x6a,0x7f,0x4b,0x28,0xed,0x0d,0x7b,0x2f,0x98,0x2a,0xea,0x39,0x0d, \ -0xeb,0x67,0x4f,0x6d,0xc4,0x4b,0x2d,0x91,0x80,0xf7,0x2a,0x5d,0xd6,0x45,0xec,0xbc, \ -0xeb,0x0e,0x26,0x66,0xac,0xe9,0x27,0x82,0x50,0x43,0xd4,0x82,0x37,0x62,0xa6,0x65, \ -0x4c,0x33,0x35,0x1d,0xa9,0x32,0xeb,0xe2,0x7a,0xe7,0x7f,0xc9,0xf0,0xa8,0xd6,0x1a, \ -0xb9,0x11,0x05,0x07,0x67,0x72,0xf8,0x1c,0xa1,0xf9,0x87,0x2d,0x14,0x37,0x27,0x26, \ -0x58,0xda,0x21,0x6b,0x43,0xd6,0x52,0x02,0x35,0x00,0x94,0x4f,0x8d,0x88,0xb1,0x32, \ -0x62,0x72,0x97,0x9c,0xc8,0x58,0xb5,0x87,0x7b,0xb9,0x24,0x6f,0xe1,0x2b,0x88,0x84, \ -0xb2,0x5a,0x5b,0x55,0x21,0xe4,0x4b,0x83,0xb3,0x12,0xe3,0xcb,0x52,0xc3,0x38,0xeb, \ -0x5f,0x39,0x0e,0x02,0x17,0x8a,0x7e,0xb8,0x38,0x2c,0x72,0x78,0xf2,0x62,0x6e,0x41, \ -0x29,0xd9,0x38,0x33,0xbc,0x01,0x45,0x8f,0x61,0xe2,0xe2,0xf1,0xbe,0x0f,0x32,0xc1, \ -0x11,0x1f,0xbd,0x67,0xe3,0x55,0x07,0xc3,0x22,0xd8,0xf1,0x80,0xe4,0x7c,0xc6,0x49, \ -0x1d,0xca,0x8b,0xc8,0xc7,0xd4,0xba,0xf6,0xbf,0x1f,0x25,0x29,0xe7,0x1b,0x4c,0x67, \ -0xbe,0x01,0x51,0xd4,0xab,0x0f,0x6f,0xbe,0x2c,0xf7,0x3c,0xbb,0xbd,0xce,0xe9,0x61, \ -0x62,0x75,0xc6,0x30,0x73,0x96,0x72,0x67,0x69,0x0f,0x35,0xb6,0xca,0x18,0x1a,0xe6, \ -0xe8,0x35,0xe1,0xae,0x27,0x2c,0xe4,0x0d,0x35,0x5d,0x35,0x35,0xee,0x70,0x1a,0xb8, \ -0x7b,0xd0,0x6a,0x97,0xe1,0xb8,0x20,0x5e,0x97,0x07,0xbf,0xa0,0xa7,0x2f,0xbd,0x83, \ -0xae,0xda,0x47,0xcc,0x9b,0xf3,0xe3,0x22,0x90,0x4d,0xe2,0xba,0x46,0xf6,0xe0,0xf5, \ -0x6c,0x15,0x32,0x79,0xa6,0x1b,0x12,0xa6,0x13,0x12,0x15,0x61,0xbc,0x8f,0x5c,0x4c, \ -0x62,0x18,0x79,0x83,0x63,0xd8,0x72,0x06,0x33,0xdc,0xca,0x14,0xde,0x11,0x6c,0xcc, \ -0xcb,0x74,0x8f,0xb3,0x19,0x9b,0x6f,0xd9,0x25,0x86,0x0f,0x09,0x57,0x4d,0x42,0x60, \ -0xd2,0x35,0xad,0xc2,0x08,0x20,0x16,0xcb,0x0a,0xc9,0xce,0x2a,0xae,0x11,0xb9,0x82, \ -0xda,0x0d,0xf8,0xfa,0xd1,0xf8,0x8d,0x50,0x9a,0x34,0xf4,0xd3,0x56,0xb3,0x2f,0x12, \ -0x8a,0x53,0x7d,0x79,0x27,0x18,0x07,0x29,0x6e,0x5c,0xee,0x2e,0x4e,0xf9,0x85,0xbd, \ -0xd7,0xcd,0x2e,0x34,0x7d,0x48,0xb8,0xd2,0x34,0x1a,0x07,0x0d,0xa7,0x84,0x8c,0xc0, \ -0xd2,0xfb,0x56,0xdd,0x0b,0x10,0xcc,0x32,0x58,0x06,0x5c,0x66,0x0e,0x82,0x34,0x1d, \ -0x91,0x40,0x5d,0x95,0x54,0x6a,0xcc,0x48,0xcf,0xd6,0x1e,0xf0,0x92,0x64,0x73,0x50, \ -0x8e,0x49,0xd8,0x71,0xc3,0xb8,0xb2,0x95,0xc3,0x21,0x70,0x26,0x04,0xc5,0xcd,0xe0, \ -0x62,0xb1,0xd0,0x2f,0x78,0x20,0xb3,0x1a,0x0d,0x24,0xc4,0x33,0x41,0x2e,0xa5,0xf2, \ -0xcb,0x03,0x72,0x06,0xcf,0x34,0xae,0xaa,0x1c,0xa6,0x02,0xc1,0xa3,0x68,0x2c,0xae, \ -0x47,0x1e,0x01,0x74,0x0b,0x65,0x0d,0x28,0x9e,0xd3,0x5c,0xb9,0xfd,0x6e,0xf2,0x8b, \ -0x4d,0x41,0xba,0x4b,0xe0,0x2e,0x5b,0x15,0x3b,0x83,0x70,0x42,0x16,0xe1,0x6a,0x04, \ -0x7e,0x2e,0x57,0x60,0xa8,0x49,0x1f,0x67,0x7d,0xf0,0x39,0x9a,0xf5,0x2e,0x89,0x25, \ -0x39,0xa5,0xba,0xb1,0x35,0x8b,0xab,0x31,0xaa,0x32,0x96,0x19,0xbb,0xfc,0x57,0xe0, \ -0xf3,0xc4,0x38,0xf4,0x5b,0x3d,0xb3,0x98,0x54,0x21,0x39,0x18,0x7a,0xc5,0x02,0x83, \ -0xa0,0xf3,0xa1,0x15,0xe7,0x62,0xfe,0xaa,0x45,0x79,0x72,0xe5,0x1e,0xab,0x0e,0x9d, \ -0xd9,0x58,0x3e,0x5d,0x78,0x9e,0x18,0x64,0x8d,0xf8,0xf8,0x58,0xbe,0xca,0xe0,0xb6, \ -0xea,0xb2,0xaa,0x0d,0xd5,0x81,0x6f,0x2f,0xd5,0x21,0xf6,0xf6,0x8d,0xfd,0x38,0xac, \ -0x1b,0xae,0x0e,0x80,0xfc,0x39,0x78,0x7b,0xf7,0xda,0xda,0x10,0xa4,0xf4,0xce,0x03, \ -0xb8,0x98,0xbe,0x40,0x7b,0xfa,0xdf,0x97,0xc9,0xc9,0xaf,0x8d,0x78,0x72,0xc8,0x5e, \ -0xfc,0x50,0xf7,0x97,0x1e,0xab,0x71,0xd8,0x66,0xfe,0x69,0x2d,0x5a,0xf6,0xb5,0x71, \ -0x6d,0x8a,0x41,0x60,0x7a,0x98,0xd1,0xe3,0x66,0x78,0x5f,0x84,0x9d,0x07,0x81,0xc5, \ -0x5d,0xc2,0xb6,0x2c,0x81,0xcc,0x60,0x4b,0x8c,0x91,0xac,0xac,0x43,0x85,0xb7,0x16, \ -0xa8,0x7d,0x6d,0x91,0xb3,0xd7,0xb2,0xfb,0x8f,0xb0,0x6d,0xb4,0xdf,0x0b,0x32,0x6e, \ -0xe5,0x63,0xdc,0xd2,0x04,0x99,0x4c,0xeb,0x81,0x71,0x69,0xfa,0xe2,0x47,0xdb,0xa2, \ -0xe8,0x2d,0x96,0xb0,0x34,0x98,0xe4,0xa1,0xa5,0xe5,0xa4,0x77,0xde,0xd2,0x38,0x9b, \ -0x0f,0x88,0x8a,0x51,0x70,0x33,0xb8,0xbd,0x37,0x08,0xd7,0x11,0x75,0x0e,0x52,0x4a, \ -0x47,0x4c,0xf7,0xee,0x38,0xe2,0x44,0x3f,0x06,0xd4,0x7d,0x02,0xcb,0xbb,0xec,0x4f, \ -0x77,0x4e,0x13,0xf5,0x6a,0xbe,0xbe,0x4c,0x1a,0xd7,0x5e,0xe1,0xe9,0x9e,0x3d,0x66, \ -0x55,0x74,0x5a,0x59,0xde,0xc2,0x23,0xae,0xc1,0x5b,0xc8,0x03,0x7f,0x2e,0x90,0x69, \ -0x03,0xd2,0x68,0x90,0xaa,0xcd,0xab,0x46,0xd7,0xf6,0x03,0xbb,0xa2,0x7b,0x1c,0x50, \ -0x67,0x38,0x1b,0xde,0xb7,0xe8,0xda,0xf3,0x1c,0xb7,0x7c,0x70,0x4e,0xab,0xb4,0x05, \ -0x15,0xdf,0xf1,0xe3,0x6d,0xc9,0xa4,0x1c,0xb8,0xdc,0x94,0x27,0x89,0x19,0xf8,0x59, \ -0x84,0xd2,0xf3,0xe9,0x9a,0x1f,0x47,0x19,0xcd,0x7a,0x7a,0x0d,0x10,0x36,0xfa,0xf6, \ -0xd9,0xd5,0x5b,0xdf,0xc2,0x40,0xdd,0xd8,0xd8,0x81,0xa2,0x43,0x0a,0x8e,0xdb,0x9f, \ -0x5d,0xeb,0xe7,0x33,0xb9,0xdc,0xbe,0x16,0x63,0x6d,0x6c,0x29,0x57,0xed,0xdc,0x29, \ -0xed,0x8d,0x6b,0xb9,0xaf,0x9f,0xef,0x7e,0x68,0xca,0xc2,0xea,0x78,0x36,0x63,0xa6, \ -0xf3,0xa5,0xa9,0x99,0x22,0xd2,0x11,0x43,0x06,0x4a,0x13,0xe3,0xd5,0x2f,0x22,0xc2, \ -0x0a,0x8b,0xbe,0x7c,0x70,0xa1,0x45,0xb3,0x34,0xd7,0x6f,0xcf,0x75,0x9d,0x81,0x87, \ -0xef,0x46,0x8d,0xbe,0xfa,0xe8,0xdb,0x2d,0x69,0xf9,0xb5,0xc2,0x4a,0x74,0x2c,0xd7, \ -0x04,0x82,0xca,0x45,0xdb,0xc6,0xd8,0x25,0xc4,0xc9,0x10,0x6c,0x1d,0x50,0x9e,0xd0, \ -0x64,0xd3,0x88,0x49,0xed,0x4c,0xf7,0xd1,0xb0,0xec,0x39,0xb0,0x71,0x95,0x05,0xb0, \ -0xbc,0xda,0x99,0x5a,0x03,0x8b,0x28,0xa3,0x21,0x7a,0xdc,0x6f,0x89,0xd9,0xaf,0x21, \ -0xef,0x69,0x88,0xa3,0x68,0xe2,0xc2,0x1c,0xec,0x21,0x82,0xeb,0x7d,0x35,0x5c,0xa6, \ -0xd8,0xe5,0xb2,0xe8,0xc9,0xad,0x95,0xc6,0xb2,0xd6,0x15,0x19,0xae,0xab,0xc3,0x3a, \ -0xe7,0xc6,0x9c,0x8f,0x2f,0x79,0x5b,0x64,0x3e,0x14,0x0c,0xda,0xed,0x27,0xe1,0xec, \ -0x5e,0xae,0xd8,0x5d,0x1b,0x46,0x32,0x6e,0xd5,0x2d,0xa6,0xb9,0x96,0x01,0xe3,0xb1, \ -0x2c,0x2e,0x52,0x54,0x08,0x04,0xba,0x24,0x7d,0x4d,0x9e,0x36,0x86,0x34,0x72,0x46, \ -0xc7,0x03,0x8b,0x62,0x7c,0xe3,0xd9,0x3c,0x7a,0xd8,0x44,0xcb,0x49,0x4e,0x7b,0xaa, \ -0x7b,0x08,0xca,0x20,0xc8,0xed,0x02,0xc4,0x70,0xb7,0x62,0xa1,0x91,0x6d,0x23,0xc5, \ -0xf8,0xcc,0x30,0x2b,0x40,0x23,0x6b,0x6a,0x44,0xc8,0xc6,0x12,0x0f,0x66,0xc4,0x6a, \ -0xca,0x16,0xda,0xc9,0xac,0x6d,0x6f,0x35,0x4e,0xb5,0x86,0xb2,0xd6,0xc9,0x0e,0x5d, \ -0x46,0x15,0x84,0x9f,0x36,0x83,0x1c,0xa3,0x31,0xa3,0x25,0xb8,0x9c,0xe8,0xff,0x9f, \ -0xb9,0x36,0xc4,0xb7,0xa0,0x6d,0x86,0x77,0xba,0x64,0xaf,0x3b,0xc1,0x71,0xb6,0xde, \ -0x74,0xda,0x91,0x07,0x1b,0x06,0xb9,0x1c,0x50,0xa7,0xc9,0xdf,0xa3,0xeb,0x08,0xc4, \ -0x82,0x76,0x4f,0x4d,0x75,0xd4,0x58,0xb6,0x39,0xe6,0x3a,0x83,0xfe,0xf6,0xbb,0x14, \ -0x25,0x2f,0xdb,0xc1,0xb9,0xa4,0x8a,0xda,0x6f,0x94,0x8a,0xaf,0x25,0x37,0xc0,0x58, \ -0x8a,0x79,0xd1,0xe6,0x72,0xe1,0x2d,0x80,0x96,0xd8,0xa1,0xe9,0x1d,0xf6,0x8f,0x52, \ -0xec,0xa4,0x10,0x39,0x69,0x96,0xc0,0xd9,0x75,0xaa,0xa5,0xb7,0x88,0xe1,0xec,0xe9, \ -0x60,0x24,0x1c,0xae,0x61,0x1b,0x86,0xcd,0x7b,0xf8,0x11,0x1d,0x53,0x1d,0xba,0xe4, \ -0xba,0xa9,0x47,0x1d,0xa3,0x08,0xff,0x65,0x39,0x57,0xf1,0xf9,0x73,0x77,0xcc,0xb5, \ -0x81,0xe8,0xec,0x06,0x3f,0xc2,0x40,0x80,0xbf,0x12,0x40,0x64,0xac,0x5c,0xf5,0x7b, \ -0x0f,0x36,0xbd,0x1d,0x1c,0x37,0xde,0x87,0x90,0x66,0x16,0x8e,0x75,0x71,0x1b,0x9f, \ -0xa3,0x99,0x57,0xc1,0x0c,0x35,0xb8,0x7c,0x2d,0x01,0x00,0x1a,0xe3,0xbb,0x9f,0x85, \ -0x96,0xa2,0x61,0xb8,0xf3,0xe3,0xab,0x7f,0x47,0x45,0xcc,0xca,0x45,0x21,0xa7,0xfe, \ -0x94,0x83,0x8c,0x3e,0xad,0x2d,0x64,0xd0,0x06,0x2c,0x8a,0x75,0xb2,0x54,0x20,0xb2, \ -0x05,0x2d,0x20,0x28,0x48,0xa6,0x77,0x60,0x5c,0x69,0x14,0x81,0xa1,0x4e,0x20,0x14, \ -0x21,0x08,0xa4,0xcd,0x82,0x49,0x5c,0x88,0x64,0xef,0x62,0x03,0xcd,0xd4,0x93,0x17, \ -0x86,0x73,0xc7,0x3f,0x7f,0x6f,0x8b,0x51,0xe2,0x85,0xee,0x92,0xd3,0x1f,0x4f,0xe9, \ -0xd7,0xaf,0xa3,0xc0,0x5c,0xe1,0xf5,0x89,0x64,0x9e,0xe2,0xd0,0x5c,0x52,0xde,0x47, \ -0x95,0x11,0x18,0x73,0x67,0xdf,0x8d,0xb1,0x3a,0xf4,0x69,0x26,0x67,0x70,0x49,0x37, \ -0x88,0x47,0xc7,0x24,0x5d,0x46,0xb9,0x0e,0x94,0x31,0x2e,0x8a,0xf3,0x85,0x02,0x89, \ -0xee,0x2d,0x27,0x59,0x58,0x5b,0x4b,0x0f,0x64,0xb0,0x6c,0x73,0x70,0x3d,0x05,0x3f, \ -0xdc,0x17,0x08,0xf2,0x20,0x14,0x7e,0xfe,0x04,0x22,0x52,0x12,0xd9,0xb9,0x2d,0xfc, \ -0x36,0xab,0x26,0x1c,0x3f,0x8b,0x2e,0x60,0x8e,0xd4,0x7a,0x88,0x66,0x92,0x44,0x98, \ -0x86,0x78,0xd2,0x0a,0xc9,0x7d,0x00,0x4e,0x01,0xd5,0xcf,0xc7,0x8f,0x78,0x3e,0x32, \ -0x00,0x19,0x11,0x0e,0x6f,0x99,0xa7,0x2f,0x3a,0x7f,0x30,0x03,0xb0,0x0d,0xdc,0xe0, \ -0x61,0xff,0x35,0x8c,0xeb,0xb0,0xb8,0xaa,0xee,0xcf,0x5d,0xe1,0x83,0x8e,0x38,0xa6, \ -0xf8,0x24,0x4d,0xb4,0xbb,0x39,0x4f,0xf4,0xac,0x09,0x0a,0x6e,0x02,0x34,0xdb,0xb7, \ -0x56,0xcf,0x75,0xed,0xa4,0x76,0x43,0xa6,0x83,0x0b,0x8a,0xb1,0x25,0xa6,0x30,0x5d, \ -0xc6,0xbf,0x21,0xcb,0x1b,0xe5,0x25,0x86,0x86,0x2b,0x6b,0x06,0xd8,0x9c,0xa4,0x9f, \ -0x3b,0xd6,0x3b,0x05,0xe8,0xc6,0x7d,0xb0,0x12,0xdb,0x51,0xa8,0x20,0x3f,0x8b,0x29, \ -0x91,0x9e,0x4c,0xf9,0xac,0x83,0x06,0x8a,0xea,0xce,0xb6,0x3e,0x61,0x39,0x9b,0x31, \ -0x08,0x4c,0x12,0x10,0x39,0x96,0xb5,0xd5,0x37,0xb9,0x49,0x5a,0x83,0x01,0xe8,0xee, \ -0xe7,0xe8,0x93,0x36,0x81,0x92,0xa3,0x89,0x46,0x67,0x6d,0xe1,0xd0,0xf8,0xf4,0xd0, \ -0x29,0x19,0xe2,0xf1,0x0b,0x07,0xb0,0x6a,0xfe,0x71,0xe0,0xd2,0x2a,0x0e,0xa8,0x65, \ -0xf5,0x01,0xc8,0xae,0x21,0x63,0x37,0x57,0x10,0xae,0xed,0xe3,0x52,0xfe,0x12,0xd8, \ -0xca,0xeb,0x85,0x5c,0xd8,0x5a,0x94,0x12,0x17,0x57,0x4e,0x92,0x22,0x50,0x1b,0x00, \ -0x3d,0xb3,0x98,0xdf,0xf5,0x1f,0xbf,0x16,0xa5,0x58,0x61,0xa0,0x60,0x41,0x45,0x2b, \ -0x18,0xd6,0x0a,0x49,0x09,0x0a,0x32,0x07,0xbf,0xfb,0xa3,0xc9,0x9f,0xad,0xa7,0xbb, \ -0xf8,0xfd,0x78,0x16,0x2d,0x8c,0xc4,0xdf,0x05,0x1c,0xb4,0x34,0xf7,0xc4,0xca,0xfe, \ -0x16,0x86,0x12,0x0a,0xb7,0x52,0xe2,0x8c,0xa4,0x15,0x07,0x14,0xa5,0x65,0x15,0x08, \ -0x83,0x1b,0x7f,0x77,0xf6,0xd9,0x63,0xf7,0x26,0x8c,0x3a,0x6b,0x71,0xdc,0x5a,0x8a, \ -0x41,0xc5,0x0b,0x04,0x15,0x54,0xc5,0x94,0x55,0x15,0x62,0xbb,0x77,0xd0,0x31,0x08, \ -0x68,0xd6,0x9b,0xda,0x26,0x20,0x73,0x74,0x19,0x88,0x44,0x46,0x54,0xe5,0xf2,0xfb, \ -0x3f,0x30,0xbf,0x77,0xf4,0x6f,0x20,0x1b,0x44,0xe2,0x55,0xa2,0x82,0x04,0xe1,0x12, \ -0xc2,0x46,0x0a,0xe0,0x60,0xf3,0x29,0x80,0xcd,0xfd,0x18,0x9f,0x56,0xb4,0xcc,0x05, \ -0xed,0x6b,0x81,0xce,0x9c,0xb4,0x32,0x40,0x34,0xa5,0x86,0xb6,0x51,0x63,0x8b,0x6b, \ -0x0c,0xef,0x7f,0x6a,0x70,0x54,0xd6,0xb2,0x55,0xd5,0xc4,0x31,0x23,0xf8,0xd0,0x99, \ -0x72,0x2c,0x06,0x54,0xef,0xc5,0x7b,0x75,0xc2,0x60,0xa8,0xa9,0x11,0x24,0x34,0x41, \ -0x8c,0x65,0x87,0xd9,0x9b,0x9e,0xcb,0x87,0x04,0x14,0x18,0xa8,0x88,0xf8,0x3d,0x5b, \ -0x67,0xc9,0xd5,0xec,0x40,0x0c,0xeb,0x5f,0xec,0x4a,0x0a,0xa0,0xac,0x31,0x74,0xc5, \ -0xda,0xd8,0x19,0x96,0xab,0xf7,0xa5,0x15,0xc1,0xe6,0x60,0xb8,0xee,0xdb,0x8f,0x1f, \ -0x9c,0x38,0xe7,0x0e,0xf2,0x4e,0xc4,0xe1,0xc0,0xa2,0x31,0x8b,0x27,0x09,0x52,0xaa, \ -0xab,0x25,0xaa,0x48,0x9e,0xb8,0xdb,0x48,0x48,0x2c,0x2b,0x10,0x12,0x9c,0x20,0xb9, \ -0xb6,0x91,0x0e,0x90,0x16,0xef,0xb2,0xac,0x31,0xac,0x96,0xb4,0x25,0x05,0xa7,0x09, \ -0x44,0x83,0x1a,0x6f,0xd1,0x6a,0x27,0xe5,0x05,0x09,0x24,0x44,0x45,0x51,0x75,0x29, \ -0xd3,0x06,0x62,0x76,0x73,0xba,0x40,0x35,0x6c,0x42,0xd0,0xd3,0x0f,0x5b,0x2c,0x84, \ -0xe2,0xe5,0x8e,0x8c,0x99,0x8e,0x08,0x1e,0x6c,0x2c,0xcb,0x3a,0x62,0x43,0xdb,0x9b, \ -0x9c,0x5a,0x82,0x0b,0x2b,0x2b,0xd2,0xde,0xaf,0x12,0x1c,0x10,0x8b,0x5d,0xa6,0xf2, \ -0xb8,0x15,0x00,0x86,0xa2,0x00,0x28,0x08,0x56,0x51,0x6b,0xb8,0xd0,0xd7,0xda,0xb3, \ -0x47,0x80,0xd2,0xf6,0xdc,0xcb,0x80,0xf2,0xaa,0x46,0x3b,0xa6,0xfb,0x25,0xfe,0x3e, \ -0xfe,0x7c,0x70,0x83,0x52,0x9c,0x81,0x1e,0x0d,0xb0,0x67,0x20,0x00,0x47,0xf1,0x93, \ -0xf6,0x8c,0x0f,0xf8,0xb0,0x2a,0x28,0x11,0xb7,0xfc,0x78,0xb3,0xea,0xad,0x9f,0xb9, \ -0xc2,0x0a,0xaa,0x39,0xc9,0x40,0x68,0xcc,0xc3,0x0d,0x6f,0xbe,0x3c,0x60,0x82,0xa9, \ -0x51,0x0c,0xb3,0x77,0x12,0x28,0x69,0xed,0xc5,0xc1,0x87,0xb0,0x5c,0xad,0x4a,0x1f, \ -0x58,0x80,0x1b,0x46,0xc0,0x0f,0x9e,0xe9,0xb5,0x79,0xeb,0x57,0x3f,0xd9,0xe4,0xf9, \ -0xe1,0x57,0x5c,0x5f,0x68,0xc3,0x50,0xe0,0xf2,0x79,0xa7,0xc5,0xcd,0x62,0x83,0xaf, \ -0xa8,0xd5,0x85,0x86,0x39,0x82,0x72,0xf6,0xe5,0x48,0x80,0xbd,0xea,0x77,0x71,0x31, \ -0xa0,0x1c,0x07,0x0c,0x4d,0xf2,0x87,0x18,0xe9,0x84,0x70,0x0e,0x9b,0xec,0x21,0xae, \ -0xa8,0x85,0x22,0x7d,0xb4,0xe6,0x21,0x36,0x91,0x5a,0xb4,0x7a,0xca,0xfb,0x08,0x66, \ -0x54,0xe5,0x6f,0xcf,0x4f,0xd3,0x08,0x95,0x2a,0xe9,0x99,0x03,0xef,0xc0,0x0b,0xff, \ -0x8c,0x7c,0xf0,0x7e,0xd2,0x19,0x87,0xc3,0x5a,0x68,0x79,0x6a,0x64,0x31,0x7a,0x58, \ -0xa4,0x87,0x07,0xb7,0x67,0xcd,0x57,0xf8,0x55,0x6c,0xba,0x97,0x14,0xff,0x3e,0x27, \ -0xf2,0xca,0xd1,0x9e,0xb8,0x3f,0x92,0x65,0x61,0xc9,0x0b,0xdd,0x27,0xae,0xd8,0x98, \ -0xfb,0xec,0xeb,0x4f,0xff,0x3e,0xac,0x38,0x3f,0xa9,0x9b,0xa7,0x43,0x34,0xeb,0x9d, \ -0xa5,0xa6,0xd4,0xa8,0x90,0x28,0x5e,0x40,0x1a,0x01,0xd8,0xa7,0x78,0x0c,0xa1,0xd7, \ -0x29,0xd2,0x0b,0x1e,0xaf,0x72,0xcb,0xc6,0xe5,0x92,0xc5,0xb8,0x82,0xc6,0x03,0xf0, \ -0x02,0x10,0x8b,0xb7,0xb6,0xc9,0xcc,0x59,0x13,0x96,0x1e,0x47,0x4f,0x90,0x4e,0xf4, \ -0x2f,0xd4,0x2f,0x77,0x4e,0xbc,0x7f,0x9e,0x21,0x1e,0xe7,0xc9,0x0b,0xca,0xa2,0xc8, \ -0x80,0xde,0xfa,0xb3,0x24,0xaf,0x34,0x64,0xf8,0xc2,0xe2,0xf3,0xeb,0xd5,0x91,0xbd, \ -0x74,0xdf,0x9a,0x6f,0xc7,0xa5,0x62,0xe1,0x34,0xc6,0x9a,0x4e,0x80,0xdd,0xae,0xd3, \ -0xb2,0x75,0xa9,0x6f,0x92,0x8c,0x93,0x0c,0xd8,0x58,0xfa,0xb5,0x83,0xfb,0xff,0x8f, \ -0xcb,0x96,0x98,0x5e,0xf5,0xdb,0x81,0x93,0x37,0xa9,0x99,0x24,0x48,0x6d,0x63,0x68, \ -0xd8,0x16,0x3a,0x88,0x55,0xe9,0xc6,0x05,0x9e,0x07,0xe9,0x08,0x79,0xfa,0x0f,0x39, \ -0x71,0x93,0x0b,0x21,0x2b,0x95,0x0f,0x20,0xdc,0x40,0xec,0x04,0x6a,0xd4,0xc3,0x2e, \ -0x49,0xbb,0xba,0xa6,0xcc,0x73,0xc9,0xd0,0xaf,0x36,0x3f,0x53,0x64,0xed,0x29,0x7c, \ -0xb3,0xd6,0x5d,0xb6,0x0f,0x17,0x93,0x9f,0x53,0x1d,0xb1,0xfe,0xbf,0x6a,0xa9,0x7a, \ -0xa3,0xfd,0x94,0xa6,0xcf,0x4d,0x98,0xfd,0x55,0xfe,0x63,0xae,0xa1,0x3d,0x51,0xa4, \ -0xf3,0x09,0xc9,0x5d,0x05,0xe1,0xf4,0xfe,0x79,0x96,0x35,0x89,0xfe,0xcf,0xbb,0x84, \ -0x0c,0x16,0xfa,0x29,0x31,0xe7,0xb0,0xd4,0x64,0x64,0x10,0x16,0x1c,0x1c,0x3e,0xbb, \ -0x7d,0xbe,0x50,0x3e,0xe0,0x50,0xcc,0xf8,0x3b,0x7d,0xc2,0xe6,0x95,0xdf,0x7f,0x87, \ -0xe9,0xde,0xec,0xa4,0x01,0xf3,0x11,0x8e,0x50,0x21,0x5a,0x9d,0x1f,0xf6,0x02,0xc6, \ -0x64,0x5d,0xd0,0x3d,0x1f,0xb8,0xbf,0xe3,0x74,0xc0,0x8b,0xc0,0x86,0x38,0xfb,0x4f, \ -0xd9,0xf5,0xc3,0xc3,0xd5,0x91,0x34,0x86,0x55,0x0b,0x2d,0xb4,0x84,0x2e,0xe6,0x99, \ -0x22,0xd5,0x5f,0x66,0x27,0xda,0x48,0x62,0x68,0x0a,0x18,0xdb,0x00,0x94,0xc4,0x48, \ -0x36,0x36,0xca,0xa6,0x58,0x7e,0xfa,0x47,0xd8,0x97,0x96,0x22,0x31,0x38,0x10,0x6a, \ -0x4c,0x87,0xe0,0xff,0xa8,0x93,0x51,0x82,0x18,0x93,0x75,0x17,0x3a,0xb1,0x7b,0x3d, \ -0x3e,0x2e,0xa3,0xf2,0x88,0x48,0xde,0x28,0x54,0xaf,0xe9,0x81,0xf4,0x7b,0x3f,0xb5, \ -0xc0,0x87,0xd4,0xbf,0x33,0xad,0x29,0xe6,0x2f,0x77,0x0b,0xf0,0xb8,0x05,0xa7,0x38, \ -0xff,0x82,0x5b,0x51,0xbc,0x9e,0x8f,0xe2,0xb5,0x90,0xe8,0x33,0x5c,0x40,0x43,0x0f, \ -0x08,0x46,0xdf,0x34,0x63,0x5e,0xca,0x3f,0xec,0xe1,0x5a,0xfa,0xf8,0x1c,0x0f,0x10, \ -0x3b,0x98,0x42,0x84,0x38,0x80,0x99,0x90,0x98,0xfe,0x7e,0xf2,0xe1,0x69,0x79,0x7d, \ -0xd7,0x82,0x75,0x40,0xc6,0x8f,0x2e,0x3f,0xcc,0xb4,0x22,0x97,0x0f,0xb7,0xfd,0x6e, \ -0x85,0x30,0xaa,0x4f,0x84,0xe3,0x46,0x6e,0xf8,0x44,0x36,0xc2,0x91,0xc4,0x9d,0x51, \ -0x31,0xe1,0xd6,0x9e,0xde,0xd5,0xa2,0x04,0x19,0x95,0x2a,0x31,0x41,0x11,0x18,0xc1, \ -0x8c,0x12,0x22,0xc5,0x91,0x04,0x44,0xfc,0x77,0xec,0xbb,0x82,0x27,0xb9,0xc2,0x87, \ -0x63,0x3a,0x34,0x7d,0x94,0xf5,0xbb,0x2d,0x8d,0xe8,0x7e,0x36,0xef,0x72,0x39,0x61, \ -0x19,0x85,0xbf,0xee,0xde,0x09,0xf9,0x61,0xc8,0x7b,0x72,0x76,0x11,0x3e,0x30,0xf3, \ -0x91,0x69,0xb9,0xe3,0x94,0x42,0x1e,0x26,0x17,0xc8,0x4d,0xa8,0x16,0x21,0xed,0x61, \ -0xba,0x4a,0xc3,0x54,0x9c,0xe3,0x37,0x4f,0xd3,0x3b,0x02,0x1c,0xf4,0x45,0xc9,0xc0, \ -0x9c,0x43,0xa5,0xcb,0x75,0xee,0x87,0xba,0x77,0xf9,0x87,0xb4,0xf5,0x0a,0x4f,0x6c, \ -0x23,0x21,0xb3,0x88,0x93,0x0a,0x8a,0x23,0x11,0x18,0xab,0x19,0x08,0x2c,0x38,0x07, \ -0x9a,0x1f,0xd3,0x8c,0xb8,0x87,0xb7,0xa1,0xd3,0xea,0x9f,0xdb,0xee,0x29,0x71,0x0a, \ -0x7d,0x98,0x97,0xa7,0x8e,0x71,0xa3,0xd1,0x3d,0x89,0xa9,0xa6,0x4c,0x06,0x34,0xa0, \ -0x77,0xa5,0xe0,0x17,0x51,0x1c,0x52,0x53,0x4a,0xda,0x46,0xb6,0xe9,0xa8,0x6a,0xab, \ -0xbd,0xd3,0xc0,0x81,0xe2,0xe0,0x82,0xa3,0x08,0x86,0x52,0x54,0x5a,0xdc,0x85,0xc8, \ -0xe7,0x04,0xe3,0xa5,0x30,0x30,0xca,0x53,0x14,0xc3,0x39,0x24,0xa9,0x91,0xa5,0xa1, \ -0x37,0xbf,0xa8,0xff,0x86,0xfc,0xc1,0xc3,0xb4,0xa5,0xfd,0xe4,0x0f,0x04,0x2f,0x49, \ -0x5f,0x49,0x66,0x9d,0x50,0x34,0xbf,0xd3,0xa3,0x6a,0x1b,0x5d,0xdc,0xb8,0xf9,0x20, \ -0xda,0x5b,0x03,0x6e,0x92,0xb5,0xd2,0xdc,0xc2,0xf5,0x87,0x6c,0xa8,0x71,0x4e,0x32, \ -0xb5,0x09,0x49,0x1a,0xd8,0xe0,0xa2,0x2a,0xd5,0x23,0x8d,0xdb,0xe4,0xa9,0xb7,0x20, \ -0xe5,0x36,0x1d,0x19,0x0e,0x56,0xd1,0x37,0xbb,0xe8,0xc9,0x1b,0x91,0x43,0x1c,0x4f, \ -0x66,0x41,0xa0,0x7a,0x43,0xb2,0x3b,0xa7,0xd1,0x3c,0x78,0x63,0x92,0xda,0xc3,0x66, \ -0x90,0x4a,0x64,0x35,0x41,0xae,0xb6,0x8b,0x02,0x08,0xec,0x82,0xd2,0x7e,0xf9,0x8b, \ -0xad,0x81,0x25,0xa5,0xf0,0x70,0x62,0x0a,0xd6,0x14,0x4a,0xb9,0xbd,0xf5,0x0d,0xa7, \ -0x78,0xda,0xd1,0xbb,0x80,0xe0,0xc2,0x64,0xc8,0x0a,0xb7,0xe5,0xea,0x7c,0xdd,0x94, \ -0x9f,0x3b,0x50,0x14,0x31,0x27,0xaf,0x18,0x89,0xfd,0x78,0xd9,0xf5,0x3b,0x0c,0x13, \ -0x49,0xfb,0x15,0x3e,0x96,0x4e,0x88,0x15,0x0f,0x50,0x6d,0x78,0xe0,0x03,0xc5,0xfd, \ -0x36,0xc7,0x42,0x9c,0x59,0x63,0x48,0x25,0x89,0x76,0x38,0x99,0x9e,0x2d,0x40,0x6d, \ -0x79,0xb9,0xab,0x71,0x84,0xad,0x19,0x65,0xfb,0x0b,0x12,0x15,0xac,0x41,0x57,0xe7, \ -0x80,0x25,0x82,0x97,0xc6,0xdf,0x30,0xdf,0x0a,0x1f,0x68,0xf4,0x61,0xbc,0xd2,0xd4, \ -0x4c,0xdb,0x0b,0xac,0xeb,0x86,0x9e,0xb3,0xc4,0xd3,0xdd,0x64,0xaf,0x45,0x1e,0x83, \ -0x09,0x29,0xdf,0x6a,0x73,0x31,0x9e,0x63,0x8a,0x89,0xad,0x33,0x89,0x0a,0x0c,0xac, \ -0xf3,0x79,0x66,0x99,0xff,0x3c,0xc6,0x1e,0xeb,0x93,0x02,0x11,0x64,0x05,0x1d,0x36, \ -0x3c,0xa0,0x1d,0x2a,0xb6,0x84,0x5b,0xdb,0x69,0x6c,0x90,0x9c,0x36,0xb8,0xb2,0xd4, \ -0x95,0xe1,0x41,0xd4,0x22,0x49,0x66,0x7a,0x30,0x28,0xf5,0xf4,0x07,0x38,0xc8,0xb1, \ -0x23,0x2f,0xc8,0x3a,0x87,0x59,0xc2,0xd6,0xf4,0xcb,0x87,0x64,0x24,0x5d,0xe5,0xbb, \ -0x9f,0x86,0xe0,0x6a,0x0d,0xce,0xbf,0xd7,0xb6,0x98,0x7a,0xe0,0x1c,0x72,0x3f,0x77, \ -0x4b,0xe7,0x40,0xd4,0x5c,0xf0,0x92,0x13,0xea,0x25,0x11,0x8c,0x09,0x30,0x40,0xfb, \ -0x46,0x82,0xd3,0xbb,0x7c,0xae,0x44,0x6e,0x07,0x8c,0xe7,0x49,0x73,0x3f,0x1d,0x2f, \ -0x2f,0x89,0x01,0x0b,0xcb,0x30,0x56,0xe5,0xde,0xe1,0x75,0xf5,0x83,0xc5,0x20,0xb1, \ -0xba,0x7f,0x9d,0x48,0x0b,0x4b,0x07,0xe1,0x74,0xab,0xae,0x1b,0x36,0x24,0x8b,0x01, \ -0x09,0x54,0x71,0xcc,0xe7,0xe7,0xa3,0xd5,0x89,0xf1,0x58,0xc7,0xa9,0x07,0x83,0x10, \ -0xb3,0xbc,0x3a,0xb2,0xf8,0xf1,0xdb,0x02,0x03,0xf0,0xed,0x3b,0xf4,0xaa,0x60,0xbe, \ -0xfc,0x68,0x42,0xd3,0xe8,0x33,0x36,0x3f,0xf5,0x7d,0x35,0x73,0x87,0xb5,0x84,0xdd, \ -0x4b,0x8a,0x28,0x0b,0x91,0x1a,0x4d,0x03,0xbf,0x70,0x61,0xa3,0x2f,0x9e,0x4f,0x53, \ -0x60,0x36,0x76,0xed,0x86,0xd4,0x95,0xab,0x1c,0xa1,0x73,0xbb,0x19,0x86,0x15,0xcb, \ -0xa3,0x7a,0x1d,0xc9,0x93,0x43,0xe4,0x05,0xc6,0x08,0xc8,0xa4,0x88,0x6b,0x8b,0xaa, \ -0x20,0xf3,0xf4,0x62,0xd9,0x81,0xde,0x53,0x44,0x41,0x71,0x80,0xe5,0x14,0x6a,0x7c, \ -0x07,0xaf,0xe9,0x31,0x03,0x00,0xc3,0x16,0x5a,0xc2,0x9c,0xea,0x0a,0x11,0x8d,0x11, \ -0x62,0x28,0xe3,0x69,0x1f,0x0d,0xd4,0x54,0xe2,0x7b,0xda,0x2f,0x67,0x26,0x22,0x42, \ -0x44,0x92,0x40,0xff,0x3a,0xa2,0x10,0x4f,0xd7,0xd3,0xa3,0x0e,0xdc,0xbf,0xa9,0xe6, \ -0xfc,0x9d,0xf7,0x2d,0x6f,0x2d,0x5b,0xd7,0x57,0x4f,0x1c,0x86,0xff,0xb2,0xe1,0x34, \ -0x04,0xf4,0xf9,0xce,0xc6,0x18,0xde,0x9e,0x1e,0xc0,0x58,0x80,0x83,0x3c,0xda,0xc7, \ -0xd9,0xaa,0xcb,0xf0,0xf3,0x22,0x61,0x88,0xfd,0x73,0x84,0xcb,0xc8,0x3c,0xde,0xac, \ -0x8e,0xda,0xa3,0x65,0x7c,0x95,0xa9,0x7c,0x47,0x14,0xae,0xbb,0x57,0x68,0x98,0xc0, \ -0x35,0xfc,0x68,0x60,0x4f,0x69,0xaf,0x6c,0x7b,0xd4,0x36,0x8b,0x7c,0x8a,0x1e,0x2e, \ -0x1c,0x47,0x0c,0xaf,0x8b,0x14,0x34,0x2d,0xc0,0x8c,0xd7,0xa9,0xc0,0x20,0xec,0x93, \ -0xe9,0xb4,0x0d,0x11,0x89,0x0e,0x46,0x94,0xe0,0xca,0xfd,0x57,0x84,0xf6,0x4b,0x5d, \ -0x8e,0x98,0xfd,0x27,0x17,0x7a,0x78,0x4a,0xf8,0x52,0xf9,0xde,0x61,0xe0,0x27,0x20, \ -0xb3,0xf3,0x18,0x2f,0xc3,0x02,0xd6,0x8a,0x1a,0x31,0x7f,0x1b,0x05,0x0c,0xca,0x9c, \ -0x0f,0x41,0x79,0x40,0x84,0xe7,0x91,0x85,0x12,0x46,0x9b,0xfa,0x8a,0xa6,0x27,0xa5, \ -0xc0,0xb8,0x75,0x70,0x25,0x7a,0xfc,0x63,0x06,0x5c,0xed,0xb5,0x36,0x6e,0xa1,0xd4, \ -0x21,0xb5,0x6d,0x90,0x65,0xfe,0x19,0xcb,0x47,0x1e,0x47,0x67,0x97,0xa4,0xfc,0x7c, \ -0xd8,0x6f,0xc8,0xf2,0x21,0x82,0x8b,0x83,0x73,0x13,0x06,0x8d,0x64,0xdc,0xd2,0xb1, \ -0x21,0xc5,0x89,0xdf,0xb8,0xf9,0x79,0xa7,0x00,0x74,0x94,0x30,0x84,0x10,0x35,0x4c, \ -0xcc,0xcc,0xba,0xcd,0x4f,0x8f,0x77,0x60,0x07,0x98,0x69,0x2d,0x2a,0x5e,0xcd,0x7f, \ -0x21,0xe1,0x66,0x53,0xe9,0x0a,0x06,0xe4,0x93,0x40,0xce,0xfe,0xb1,0xb8,0xdd,0xcd, \ -0x01,0x5e,0x07,0x13,0x8c,0xc1,0x21,0x41,0xd6,0xbb,0xcd,0xd0,0xdc,0x7b,0x6f,0xab, \ -0x60,0x9e,0x8e,0x54,0x4c,0xaa,0xa2,0x3e,0x2f,0x4f,0x3a,0x1a,0xd1,0xb3,0xab,0xfa, \ -0x8e,0x22,0x51,0xc3,0x28,0x80,0x2d,0x36,0xe6,0xb5,0x60,0xe2,0xd0,0xbc,0x55,0xc7, \ -0x2f,0x1b,0x0e,0xee,0x9c,0x10,0x92,0x51,0x0d,0x06,0xbe,0x23,0xb4,0xd7,0xe8,0x5c, \ -0x4a,0x23,0xc8,0x94,0x42,0x5c,0xef,0x8e,0xf6,0x94,0x93,0x6a,0x37,0xee,0xaa,0x3f, \ -0x76,0xea,0x42,0xed,0xfd,0x28,0xe0,0x5f,0x90,0x36,0x13,0x59,0x1b,0x04,0x47,0xbf, \ -0x75,0xac,0x63,0xd0,0x71,0x20,0x21,0x68,0x3d,0x64,0xf0,0x3a,0xac,0xeb,0xd7,0xcf, \ -0xda,0x7b,0x3b,0x67,0xab,0x0e,0x4d,0x15,0x9e,0xc6,0x4a,0xc1,0x45,0x22,0x22,0x20, \ -0x88,0x0a,0x24,0x55,0x50,0x12,0x0b,0xb4,0xdb,0x38,0xa6,0x6c,0x86,0x71,0x9a,0x7e, \ -0x5f,0x6e,0x73,0x24,0x4c,0x47,0xcd,0x2b,0xe2,0xb8,0xcd,0x74,0x8a,0x5a,0x11,0x90, \ -0xd1,0x83,0x35,0x29,0x3c,0x20,0x81,0xd3,0x57,0xb9,0xaf,0x0b,0x98,0x2a,0x6c,0x15, \ -0xe0,0xfb,0x6e,0x41,0x8f,0x62,0xb4,0x37,0x3e,0x3e,0x6c,0x1c,0x9a,0x96,0x02,0x69, \ -0x63,0x26,0xc3,0x7b,0x10,0x07,0x82,0x06,0xbe,0x90,0x4c,0xdd,0x85,0xb7,0xe8,0x1a, \ -0x59,0x29,0x31,0x88,0xe2,0x20,0x7c,0xc4,0xe0,0x9a,0x8c,0xab,0x4f,0x10,0x51,0xf5, \ -0xd4,0x65,0x54,0x34,0x06,0xce,0xa9,0x50,0x1c,0xe9,0xdd,0xb4,0x6a,0x2e,0xc1,0x12, \ -0xc3,0x24,0x7e,0x17,0x71,0x75,0x12,0x6b,0xe0,0x1e,0x48,0x28,0x20,0x90,0x55,0x11, \ -0x22,0x2a,0x0a,0x33,0x88,0x30,0x85,0x23,0x08,0x49,0xa7,0xca,0x7a,0xa2,0xe2,0x64, \ -0x89,0x9e,0x0f,0x2b,0x7c,0xdd,0x73,0xe6,0xb7,0x6a,0x26,0x9f,0x9b,0xbb,0x73,0x0d, \ -0x98,0x6b,0xb9,0x99,0xb2,0x8e,0xbc,0xcc,0x33,0xb9,0xf9,0x5f,0x0d,0xd9,0xfc,0x5d, \ -0x3e,0x53,0xe8,0x3c,0x59,0xf9,0xfa,0xd5,0xf6,0x45,0xe5,0x3b,0xc8,0x9d,0xcb,0xbc, \ -0x93,0xcd,0x22,0xe0,0x88,0x22,0xb0,0xc3,0xd2,0xc3,0xe7,0xd4,0x10,0xf9,0x82,0xdf, \ -0xca,0x86,0x03,0x4c,0x1e,0xf3,0xbd,0x82,0x85,0xa9,0x38,0xbe,0x56,0xf5,0x68,0x30, \ -0x9a,0x18,0xa0,0x77,0x75,0x70,0x7f,0x8e,0xa1,0x83,0x49,0xb5,0x2a,0x72,0x61,0x10, \ -0x4c,0x77,0x14,0x45,0xf8,0xb1,0xbf,0x0d,0x90,0x4b,0x25,0xa0,0xd8,0xb7,0x67,0x9d, \ -0xdf,0x66,0x9a,0x9f,0xbd,0xd7,0x9f,0xd7,0x1a,0x15,0x4d,0x4f,0x97,0x2b,0x2c,0xad, \ -0xe9,0x80,0xac,0x3a,0x20,0x76,0x77,0x7c,0x57,0x1f,0x37,0x65,0x84,0xe2,0x3b,0xde, \ -0x20,0x98,0xee,0x81,0xf3,0x8c,0xeb,0x6a,0x2a,0x09,0x59,0x25,0x61,0x3f,0xee,0xc8, \ -0x54,0x52,0x28,0x45,0x98,0x18,0x15,0x91,0x49,0xfe,0xc6,0x15,0x8b,0x11,0xc3,0x58, \ -0x17,0x6e,0x1b,0xf0,0x78,0xfd,0x5d,0x39,0xe7,0xdf,0xed,0xbd,0x67,0x3b,0x60,0xf7, \ -0x61,0x22,0x1b,0xe9,0x71,0x62,0x90,0x42,0x5f,0xdb,0x98,0xbc,0x1a,0x30,0xc9,0xe0, \ -0x41,0xd5,0x7d,0xc6,0xdb,0x56,0x5c,0x97,0x6c,0x62,0x39,0xa9,0x65,0x8b,0x1e,0x35, \ -0xba,0xd0,0x32,0x2f,0xfa,0x37,0x0d,0x99,0xd2,0x0d,0x72,0x11,0x21,0x26,0xf7,0xcf, \ -0x33,0x0c,0xb4,0xa8,0x7a,0x10,0x29,0xe9,0x03,0x80,0x77,0x9d,0x0f,0x2f,0x25,0x5c, \ -0xba,0xa5,0xde,0x13,0x9f,0x03,0x01,0xdb,0xcd,0x14,0x00,0x82,0x40,0xf9,0xe6,0x8c, \ -0xae,0x3b,0xe6,0xe4,0x29,0xe2,0x65,0x4b,0xa6,0x73,0xa2,0x48,0xc6,0xc8,0xf5,0x92, \ -0xb2,0x10,0x6d,0x2a,0x70,0x66,0x56,0x47,0x5f,0xd1,0x1c,0x70,0x90,0xe9,0x8f,0x5a, \ -0xcd,0x0d,0x37,0x55,0xce,0x86,0x95,0x0d,0x2d,0x76,0x66,0x96,0x03,0x4e,0x18,0x40, \ -0x17,0xf7,0x7f,0x6c,0x85,0xdd,0xb8,0xb1,0x90,0xd4,0xdb,0x99,0x1e,0x37,0xff,0xe2, \ -0x16,0x21,0xe5,0x66,0x98,0x2e,0xd0,0x6a,0xa7,0x44,0x83,0x40,0x3f,0x3f,0xbc,0xb3, \ -0xbb,0xed,0x9d,0x86,0x35,0x96,0xba,0x5e,0xc3,0xb2,0xda,0xac,0x49,0x0a,0x8a,0x53, \ -0xb7,0x43,0xd6,0x43,0x44,0xff,0x6f,0xe7,0xf0,0x37,0xbc,0x1d,0x4a,0xe4,0xd4,0x4a, \ -0xd8,0x07,0xde,0x9a,0xc2,0x1c,0x44,0x38,0x9e,0xd3,0x6d,0x33,0xbe,0x3d,0xe9,0xd7, \ -0xd4,0x6a,0x6d,0x0d,0x80,0xe0,0x24,0x41,0x3f,0x8d,0xab,0x16,0x11,0x7e,0x13,0x7b, \ -0xcb,0xe6,0xc5,0xf7,0x97,0xb1,0x80,0x4b,0x31,0xb4,0x53,0xec,0xfe,0x57,0x5a,0x59, \ -0xcb,0xef,0xf2,0x31,0xe0,0x83,0x0f,0x12,0xcf,0x10,0x2e,0x81,0xf8,0x20,0xb8,0x35, \ -0xea,0xfd,0x7f,0xfd,0x11,0xbe,0xd0,0xb0,0x36,0x61,0xbb,0x50,0x59,0xec,0xc8,0xc6, \ -0x70,0xb5,0xe3,0x25,0x7e,0xe2,0x06,0x36,0xd0,0xda,0x69,0xa0,0xd6,0x45,0x8a,0xc1, \ -0x81,0x59,0xac,0x8e,0x05,0x20,0xc5,0x44,0x56,0x45,0x50,0x11,0x01,0x63,0x15,0x3f, \ -0xad,0x96,0x2c,0x9a,0x21,0x62,0xaa,0x2c,0x16,0x08,0xa0,0x88,0xa2,0x8a,0x30,0x55, \ -0x05,0x06,0x20,0xa2,0x81,0x9b,0x28,0xa8,0x8a,0xc6,0x4d,0x06,0xb3,0x2d,0x48,0xb0, \ -0x62,0xf9,0x03,0x1a,0x14,0x5c,0xdf,0xab,0xf6,0x7d,0x99,0x6a,0xd8,0x62,0x63,0xcb, \ -0x16,0x70,0xf9,0x70,0x17,0x5c,0x24,0x13,0xc2,0x2b,0x44,0x11,0x91,0x91,0x3f,0x39, \ -0x50,0x43,0xad,0xa1,0x16,0x0b,0x08,0x82,0x84,0xea,0x7e,0xf7,0xbd,0xcf,0xba,0xc2, \ -0xf7,0x5a,0xeb,0xb1,0x4a,0xc5,0x3a,0x63,0x06,0x17,0xf1,0xfc,0xd6,0x7a,0x66,0x8b, \ -0xb6,0x61,0x4c,0x3f,0xd9,0x68,0x91,0x3c,0x46,0x82,0x1e,0x3c,0xf1,0x8f,0xf7,0x28, \ -0x10,0x06,0x1e,0xa3,0x94,0x95,0x9b,0x0f,0xf5,0xa3,0xdf,0x94,0x68,0xb0,0x0a,0xf1, \ -0x75,0xa4,0x5a,0xc8,0x76,0x0a,0xdb,0x9c,0xd2,0xdb,0xc6,0x6b,0xc4,0x6b,0xb9,0x61, \ -0x1a,0xd0,0x7b,0xd2,0x49,0xdb,0x62,0xbd,0xcf,0xb6,0x77,0x88,0xca,0x39,0xbc,0xe5, \ -0x32,0xee,0x4a,0xc4,0xab,0x20,0xe9,0xc8,0xd3,0xf1,0x6d,0xb6,0x31,0x2d,0x2f,0x63, \ -0xe2,0x84,0x48,0xe5,0x48,0x4e,0x60,0xbe,0x94,0xae,0xb7,0x06,0xaa,0x8f,0x44,0x7c, \ -0x8a,0x16,0x34,0x7d,0xfe,0xee,0xe0,0xad,0xb3,0x7b,0x5d,0x5a,0x0f,0x6a,0x5c,0x91, \ -0x14,0x93,0xf2,0xfb,0x57,0x90,0xa7,0x2c,0x24,0xaf,0xac,0x1e,0x97,0x42,0x34,0x5a, \ -0xc8,0x1e,0xec,0x31,0x62,0x1b,0xde,0x79,0xdf,0x4c,0x08,0xe7,0x47,0x4f,0xd6,0x92, \ -0x92,0xa4,0xd7,0xeb,0x82,0xcb,0xdb,0x5f,0x95,0x6b,0xee,0x1d,0x9a,0x55,0xed,0x9f, \ -0x0c,0x25,0xcc,0xc8,0xa5,0xbc,0x52,0x44,0x52,0x7a,0xa2,0x65,0xa1,0xfd,0x37,0x5e, \ -0x1c,0x91,0x99,0x7a,0xf1,0x4b,0x7f,0x4b,0x35,0xae,0x45,0x57,0x8d,0xcd,0x1d,0xcd, \ -0x03,0x59,0x2b,0xbe,0xfb,0x5f,0xe7,0x62,0xab,0xd7,0x38,0xb2,0xad,0xd2,0xab,0x26, \ -0x2b,0x21,0xa7,0x8a,0x0d,0x4f,0x9e,0x2b,0xa9,0xf0,0xee,0xbe,0xc9,0x2b,0x6c,0x94, \ -0x70,0x63,0x14,0x39,0xf1,0x71,0x45,0xb2,0x4b,0xe9,0x3f,0x15,0xe8,0x61,0x8f,0xc3, \ -0x4c,0xc5,0xa7,0x2e,0x05,0xf4,0x4a,0x6b,0x7e,0xf1,0x10,0x64,0xaa,0xb1,0xfa,0x95, \ -0xe9,0x84,0x8d,0x8d,0x05,0x98,0x63,0xdc,0x15,0x39,0xe8,0x6b,0xb9,0x50,0xc6,0x05, \ -0x02,0x67,0x6f,0xfa,0xdc,0xd8,0xac,0x89,0xf2,0xf1,0x1e,0x67,0x71,0x5f,0x58,0xe9, \ -0x5e,0x74,0xee,0x38,0xc5,0x06,0xb6,0x5e,0x97,0x77,0x0f,0xed,0x95,0x66,0x78,0x44, \ -0xfd,0x6e,0x5f,0xa3,0xdd,0x86,0xba,0x98,0x22,0xff,0x1b,0xd3,0x62,0x17,0xb6,0x60, \ -0x37,0x6e,0xcb,0xdf,0x4f,0x06,0x05,0xbb,0xa0,0xb6,0x21,0x12,0xc3,0x99,0xc4,0x89, \ -0x75,0xeb,0xca,0xee,0x7f,0x52,0xdd,0xe3,0xbe,0x79,0x9a,0x9b,0xbe,0xed,0x9a,0x36, \ -0xdc,0x86,0xbe,0xdc,0x7a,0x21,0x75,0x3b,0x1e,0x21,0xcb,0xb5,0x11,0x01,0x15,0xc9, \ -0xdb,0xf8,0xb1,0xa4,0xd3,0x05,0x58,0x44,0xf2,0x0f,0xa8,0xf8,0x18,0xf3,0x82,0x50, \ -0x1f,0x5c,0xf6,0x8e,0xe9,0xd4,0x3e,0x8e,0x2e,0x54,0xb1,0x58,0x03,0xb8,0xfb,0x1f, \ -0xad,0x87,0xcb,0x0e,0x2f,0x7b,0xcc,0xc8,0x16,0x11,0x24,0xfc,0x47,0xa9,0xe9,0xdb, \ -0xe9,0xed,0x1e,0x56,0x73,0xf0,0x26,0x67,0xf8,0x3f,0xfb,0x7f,0x3a,0x9d,0x81,0xcd, \ -0xb6,0x80,0x82,0xee,0x7f,0x6b,0x54,0x22,0x03,0xe6,0xdc,0x95,0x90,0x6d,0x25,0x08, \ -0x46,0xd2,0x06,0x18,0x14,0x6a,0x60,0xe2,0xf5,0xa7,0xf2,0xd7,0x43,0x1f,0xce,0x87, \ -0xed,0x5f,0xe9,0x34,0x81,0xa6,0x77,0xc3,0xa3,0x5e,0xab,0x36,0xec,0x84,0x44,0xf0, \ -0x25,0xfa,0xec,0x92,0xa1,0x64,0xcd,0x3d,0xf6,0x52,0x94,0x06,0x62,0x03,0x01,0x9d, \ -0x66,0x34,0x34,0xa0,0xba,0x8d,0x58,0xee,0x6d,0x3f,0x54,0xcb,0x0e,0x68,0x3b,0x1a, \ -0x31,0x62,0xf9,0xbe,0x5f,0x8d,0x2e,0x88,0xb5,0x1f,0xce,0x25,0x19,0x0e,0x48,0xa0, \ -0x0c,0x3d,0x6d,0x3f,0x78,0x70,0xf6,0x83,0x11,0x35,0xfd,0x36,0x61,0x02,0x29,0x46, \ -0x22,0xe9,0xb3,0xb1,0xab,0xca,0x78,0x4a,0x0f,0xef,0x2b,0x11,0x85,0xb7,0x08,0x31, \ -0xa9,0xdd,0xe7,0x82,0x82,0xed,0x3d,0x32,0x55,0x9e,0x61,0x80,0x7f,0xc7,0x7a,0xa2, \ -0x74,0xea,0xab,0xe1,0xb1,0xf1,0x60,0xb1,0xb2,0xa9,0xe7,0x39,0xb5,0x9e,0xe9,0xfb, \ -0x3d,0x6d,0xf9,0x44,0x78,0xfe,0x54,0x2b,0x48,0x5d,0x94,0x9d,0xfe,0xeb,0xd1,0xf9, \ -0x49,0xeb,0xfc,0x91,0x45,0x32,0x79,0xf6,0xbb,0x4c,0x7d,0x16,0x54,0xde,0xf7,0xfd, \ -0x38,0xeb,0x98,0x27,0x5f,0xcf,0xc1,0xd4,0xd5,0x12,0xa4,0x95,0xb1,0x69,0x87,0x02, \ -0x59,0xec,0x3f,0x0d,0xa6,0x16,0x40,0x34,0xa2,0x19,0x26,0x5c,0xb0,0xae,0xca,0x3b, \ -0xc0,0x3d,0x20,0x00,0xab,0x48,0xa3,0x85,0xeb,0x8a,0xff,0x92,0xd6,0x31,0xc0,0x2d, \ -0x92,0xc5,0x29,0xaf,0xc4,0xc3,0x66,0x68,0xfc,0x9a,0x03,0xd1,0xa4,0xdd,0x61,0xcd, \ -0x21,0xfe,0x02,0x32,0xb3,0xf7,0x20,0x19,0x6b,0x24,0x2c,0x1f,0x53,0xe9,0xe5,0xd0, \ -0xf8,0x9a,0x92,0xf4,0xeb,0xf8,0x40,0xc0,0xc4,0xb2,0xf9,0xe0,0x98,0x66,0x89,0x91, \ -0xee,0x97,0x37,0xd3,0xd3,0x4c,0x24,0x9f,0x88,0x9e,0xc7,0x0b,0x10,0xd3,0x68,0x4d, \ -0xf9,0xdc,0x5f,0x07,0x95,0x90,0x2b,0x79,0xd8,0x1c,0x32,0x12,0xc7,0xcc,0x2f,0xad, \ -0x5d,0x66,0x28,0xf0,0xd4,0x9b,0xab,0x0d,0xb1,0x50,0xab,0xd4,0x22,0x64,0x19,0xb7, \ -0xd7,0x9c,0x1f,0x47,0x6e,0x09,0x2d,0xe1,0xf4,0x34,0x54,0x2e,0x57,0xe2,0xd9,0x66, \ -0x1f,0x44,0x4f,0x8c,0x70,0x77,0x85,0xd7,0x35,0x0d,0x22,0x1c,0x28,0x95,0x02,0x93, \ -0x60,0x31,0x19,0x12,0x46,0x99,0x6e,0x29,0xe2,0x8b,0xcf,0x56,0x0b,0x04,0xaa,0x34, \ -0x7a,0x5c,0x31,0x83,0xe5,0xe1,0xc6,0x72,0x9d,0x82,0x57,0x30,0x6c,0x17,0x56,0xed, \ -0x1a,0xfa,0x5f,0x28,0x6f,0xa1,0x4c,0x27,0x71,0xc6,0x1b,0xdf,0x49,0xd7,0x7a,0xf3, \ -0x0c,0x99,0x0c,0xbc,0x69,0xc5,0x2a,0x5f,0x89,0xb8,0x6c,0x8a,0x60,0x51,0xb6,0xd6, \ -0xa6,0x9b,0x1c,0xd7,0xe6,0x8d,0x69,0x07,0xc4,0xee,0xaa,0x52,0x36,0x89,0xdb,0x87, \ -0x0d,0x4e,0xd8,0x74,0x8e,0x36,0x60,0x0a,0x85,0x01,0x52,0x3a,0x31,0x70,0xea,0xa2, \ -0x4f,0x80,0x30,0xf4,0xda,0x8b,0xd4,0x2a,0xdc,0x48,0x51,0x2a,0x92,0x82,0xb2,0x00, \ -0xa0,0x47,0x5d,0x25,0xfb,0xf8,0x01,0xfa,0x20,0x39,0x52,0x72,0xcc,0x06,0x55,0x29, \ -0xc3,0x32,0x9d,0x75,0x58,0x01,0xb1,0x67,0x09,0x53,0x21,0xd6,0x75,0x49,0x5a,0xd6, \ -0xfa,0xb4,0x03,0xaf,0x92,0x89,0xa5,0x66,0xe5,0xfa,0x44,0xfb,0x23,0x87,0x61,0x0f, \ -0x90,0xd6,0xbe,0x9f,0x35,0x6c,0xdd,0xcc,0x92,0x06,0x4b,0xdd,0x10,0xa4,0x8a,0x3f, \ -0x37,0x3a,0xb8,0x7a,0xb4,0x0f,0x34,0x1f,0xb8,0x3e,0x33,0xa1,0xb2,0x16,0x3c,0xd1, \ -0xe5,0x87,0x1d,0xde,0xee,0xcc,0x2f,0x8b,0x6c,0x73,0x34,0x53,0xb7,0xf3,0xa7,0xe9, \ -0xbd,0x4f,0x0f,0x9f,0xc9,0x71,0x37,0xc1,0x1d,0x69,0xd6,0xa3,0x63,0xfd,0x2d,0x74, \ -0xbf,0xc7,0x5e,0x58,0x48,0x54,0x7e,0x78,0x18,0x25,0xa2,0xad,0x25,0xa0,0x07,0x10, \ -0xfd,0xad,0x09,0xd6,0xce,0xe0,0x14,0x9e,0x32,0x95,0x9d,0xbd,0xb5,0x5d,0xec,0xd9, \ -0x60,0xb6,0x76,0x6b,0x23,0xdd,0x4e,0x14,0x0e,0x41,0x79,0xf9,0x59,0xc4,0xec,0x67, \ -0xce,0xc3,0x70,0x10,0x81,0xb9,0xfc,0x59,0x50,0x43,0x87,0xca,0x93,0x9b,0x09,0xe3, \ -0xe7,0x4d,0x67,0x87,0x2b,0xf2,0x60,0x76,0xa6,0x6d,0x28,0x93,0xb1,0x09,0x67,0x2a, \ -0x6d,0xd2,0xf8,0x0f,0x04,0x98,0x4a,0xd4,0x4e,0x6c,0xbd,0xce,0x18,0x47,0x7f,0x7d, \ -0xb4,0x16,0xce,0x9b,0x3c,0x07,0x72,0x30,0xd2,0x11,0x8f,0xd3,0xae,0x36,0x0d,0xb6, \ -0x0e,0x08,0xf1,0x6a,0x03,0x8f,0xd3,0xa8,0x18,0x3b,0x04,0xee,0xd7,0x71,0x9c,0xad, \ -0xa5,0xa2,0xf9,0xf4,0x61,0xfb,0xa8,0x51,0xcf,0x54,0xd3,0xe0,0x66,0x96,0x0d,0x2e, \ -0xc9,0x44,0x31,0x0a,0xd9,0x71,0x6a,0xe0,0x46,0x46,0xd3,0x13,0x18,0x07,0x10,0x7c, \ -0x61,0xfa,0xfe,0xbb,0xd5,0x34,0xd4,0xc6,0x7a,0x64,0xdc,0xde,0x85,0x6d,0x6b,0xc7, \ -0x48,0x20,0xb2,0x20,0x83,0xad,0x81,0x58,0x71,0x21,0xe2,0x4d,0x08,0x2b,0x13,0x55, \ -0xb4,0xe0,0x32,0x9b,0xe2,0x85,0x4c,0xa8,0x86,0x45,0xe0,0x48,0x28,0x41,0xa7,0x11, \ -0xd5,0xc2,0x14,0x38,0xc3,0x60,0x4e,0x00,0xc0,0x2e,0xb7,0x1a,0xa2,0x96,0x0d,0x65, \ -0x0b,0x6b,0x22,0x4b,0x77,0xf0,0xa6,0x19,0x06,0x0c,0x01,0x53,0x32,0x31,0xd2,0xd1, \ -0x3c,0x0e,0x8d,0x37,0x24,0x26,0xdc,0x1b,0x66,0xd1,0x50,0x61,0x4e,0xac,0xcc,0x30, \ -0x1b,0xe1,0x42,0x1c,0x22,0x96,0x49,0x14,0xf8,0x02,0xa9,0x4f,0x7b,0x59,0x44,0x3f, \ -0x5c,0x47,0x32,0x19,0x3f,0x14,0xa5,0xe3,0x3b,0xe1,0x6b,0xd3,0x5d,0x7e,0xdc,0x4e, \ -0xf8,0x08,0x75,0x49,0xf9,0xfa,0x4e,0xf8,0xaf,0xa5,0x28,0x2a,0x75,0x05,0x25,0x92, \ -0x6b,0x6a,0xd9,0x04,0x05,0x60,0x85,0x6b,0x08,0x01,0x1f,0x1f,0x1b,0xb5,0xbc,0x02, \ -0xa9,0x27,0xf4,0x74,0x09,0x46,0xbc,0x4a,0x9a,0xc1,0x93,0x93,0x38,0xbd,0x4e,0x74, \ -0xf5,0x4c,0xb9,0x48,0x77,0xa6,0x50,0x9a,0x69,0xa6,0x47,0x6c,0xb6,0xb1,0x70,0x85, \ -0x58,0x23,0xb5,0xae,0x50,0x31,0xe4,0x75,0xcc,0x05,0x98,0xef,0xbc,0xe2,0x1a,0x16, \ -0x44,0x37,0x0a,0x21,0x24,0xc2,0x13,0x70,0xab,0x39,0x2a,0x8d,0x99,0x18,0x56,0x89, \ -0x63,0xa5,0xbc,0xe9,0x96,0x2c,0x93,0x0c,0x16,0x23,0xae,0x71,0x84,0x30,0xd3,0x25, \ -0xa2,0xc1,0xc5,0xc3,0x87,0xb6,0x97,0x0d,0xca,0x41,0xbc,0xb0,0xda,0x6c,0xcd,0x22, \ -0x81,0xcd,0x21,0x93,0x00,0xcd,0x6e,0x98,0xca,0x2e,0x18,0x82,0xca,0xdf,0x7d,0xa7, \ -0x0d,0xf0,0x73,0x77,0xd0,0x86,0xcb,0xe2,0x29,0x71,0x0d,0xcd,0x65,0xb9,0x52,0xd0, \ -0xc7,0x4a,0x84,0x87,0x86,0x38,0xcd,0x89,0xac,0x8f,0x4d,0xe1,0x73,0xad,0x71,0xa4, \ -0x85,0x34,0x38,0x77,0x5f,0x57,0x9b,0x35,0x36,0xd3,0x51,0x3b,0xd1,0xbc,0x81,0xc3, \ -0x17,0x46,0x5b,0xfd,0x70,0x2b,0x22,0x2a,0xc7,0xb7,0x06,0xbf,0xcd,0xeb,0x55,0x04, \ -0x91,0x19,0x39,0x1d,0x9e,0x01,0x44,0x8a,0x2d,0x11,0x17,0x78,0xe6,0x51,0x11,0x00, \ -0x48,0xd7,0xca,0xb8,0x1d,0x4e,0xcb,0x0b,0x36,0xd9,0xa9,0x36,0xda,0xd0,0x36,0x9b, \ -0x10,0xbe,0x7d,0x27,0xdb,0xed,0x59,0x3f,0xd8,0xca,0x16,0xbd,0x7d,0x13,0xbb,0xb5, \ -0x8d,0x6a,0x36,0x24,0x9e,0x4c,0xc8,0xb1,0xee,0x46,0x01,0xc6,0x1c,0x0f,0x20,0x78, \ -0x94,0x63,0xdd,0x87,0x60,0x51,0x7d,0x0c,0x42,0xb8,0xf5,0xe4,0x89,0xf8,0xdf,0x53, \ -0xba,0x82,0x94,0x74,0x8d,0x00,0x0a,0xf5,0xea,0x88,0x56,0x46,0xd7,0x62,0xd9,0xa5, \ -0xb2,0x09,0x6e,0x68,0x3e,0x0d,0x01,0xf9,0x83,0xf6,0xdc,0x77,0xa7,0xb7,0x66,0x44, \ -0x98,0x33,0x05,0xd5,0x78,0x45,0xbd,0x52,0x34,0xc7,0xcb,0xde,0x76,0x1b,0xc1,0x07, \ -0x67,0x85,0xec,0xc7,0x91,0x83,0x49,0x63,0xa5,0x34,0x83,0x31,0xa7,0x10,0x94,0xb9, \ -0x71,0x3a,0x4c,0xb3,0xd5,0xe1,0x8d,0xd3,0xcc,0x56,0x98,0x9d,0xcd,0x59,0x81,0x87, \ -0x3d,0x97,0xec,0x67,0x93,0xf5,0x33,0x49,0xf9,0x76,0x50,0xb1,0xf0,0x88,0x1d,0x5b, \ -0xef,0x91,0x46,0x4c,0x7d,0x3d,0x61,0xd8,0xa5,0xd6,0xc9,0xb8,0x17,0x29,0x45,0x72, \ -0x8d,0x90,0xa6,0x92,0x9c,0x5f,0x05,0xe2,0xd0,0xc4,0x3e,0x4a,0xc4,0x25,0x1a,0xe0, \ -0xec,0x30,0x44,0xef,0x74,0x1f,0x35,0xd8,0x82,0xed,0x29,0x22,0xd0,0x05,0xef,0x93, \ -0x64,0x48,0x6d,0x97,0x65,0x11,0xb1,0x19,0x63,0x2e,0x35,0xb1,0xe9,0x14,0x0f,0x4e, \ -0x8c,0xdd,0x57,0x05,0x91,0xc9,0xec,0xf8,0xf1,0x62,0x77,0xd6,0xe1,0x58,0x2b,0xca, \ -0x96,0xa3,0x19,0x46,0xa2,0x07,0xbc,0x44,0x5d,0x45,0x44,0x86,0xa3,0xbb,0xc2,0x30, \ -0xb6,0x6b,0x71,0x49,0x6d,0x6e,0x61,0xe8,0x9c,0x67,0x30,0x1a,0xe1,0x80,0xf7,0x99, \ -0x35,0xc0,0x8d,0xd8,0x71,0x10,0xaf,0x7d,0x57,0x01,0xf6,0x17,0x0c,0xe1,0xc5,0x5d, \ -0x69,0xf8,0x5d,0xdc,0xb8,0xa5,0xdb,0x59,0x7d,0x06,0x34,0x28,0xb3,0x2b,0x76,0x17, \ -0x4a,0x57,0x07,0x85,0xf2,0xd6,0xdb,0x74,0xdf,0x0e,0xb2,0xa8,0xb8,0x2a,0x94,0xfc, \ -0x6b,0x8f,0x17,0xb0,0x8c,0x8c,0x38,0xc0,0x84,0x63,0xc2,0x96,0x6c,0xa6,0xd0,0xbb, \ -0x04,0xa3,0xa6,0xe3,0x05,0x22,0x23,0x4a,0xb8,0x27,0x8e,0x1a,0x42,0x2b,0xd1,0x1b, \ -0xb3,0x88,0x68,0x5b,0xa8,0xb6,0xee,0x9a,0x14,0x21,0xb4,0x30,0xf6,0x2c,0x15,0x48, \ -0x9b,0xe2,0x9c,0x40,0xc3,0x0d,0x19,0x14,0x15,0xbe,0x9b,0xea,0xa2,0x5f,0x5b,0x85, \ -0x7a,0x60,0xcf,0x3a,0xc2,0x1a,0x85,0xab,0x2c,0x23,0x02,0x92,0x1c,0x46,0x9c,0x73, \ -0x0e,0x20,0x8c,0x62,0x0e,0x1c,0x35,0xd8,0xa0,0x66,0x0d,0x8d,0x73,0x85,0xab,0x41, \ -0x9a,0x65,0x34,0x64,0x59,0xd5,0xa7,0x89,0x72,0x45,0x21,0x02,0x05,0x0b,0x38,0x0a, \ -0x17,0x7b,0xe1,0xc7,0x16,0x49,0x63,0x52,0x74,0xd7,0x76,0xe2,0x2a,0x97,0x0a,0x90, \ -0x5c,0x9c,0xcd,0xf5,0xb8,0x1b,0xca,0x89,0xb2,0x2b,0x22,0xbc,0xc8,0x70,0xc2,0xfc, \ -0x6a,0x08,0xd5,0xf6,0x41,0x1b,0xa9,0x55,0x77,0x25,0xc1,0xb0,0x75,0x6a,0x15,0x59, \ -0x30,0x2e,0xb5,0xc6,0xcf,0x6b,0x08,0x4c,0x3d,0x45,0x68,0xab,0x64,0x7d,0xaa,0xb5, \ -0xbf,0x0b,0x07,0xad,0x9d,0xb3,0x7c,0x10,0x49,0xad,0xa6,0xfa,0x98,0x35,0x70,0xa3, \ -0x41,0x90,0xaf,0x04,0xf0,0x38,0x41,0x8a,0x51,0x71,0xb2,0x4a,0x51,0x20,0x09,0x36, \ -0x2c,0x2e,0x16,0x24,0x6a,0xf1,0xaa,0x32,0x8b,0xec,0xa2,0x85,0x06,0x2a,0x30,0x12, \ -0xad,0x82,0xa0,0x2a,0xb7,0x0d,0x2f,0x55,0x8a,0x37,0xdc,0x1e,0x2f,0x42,0x40,0xe1, \ -0x36,0x44,0x0e,0x4a,0x54,0x6c,0x40,0xd5,0x5d,0xd8,0x6b,0x4e,0x2c,0xf6,0x0a,0xb5, \ -0x2c,0xc1,0x40,0x94,0x70,0xf7,0x15,0x62,0xc8,0x26,0x66,0xe3,0x43,0xa5,0x93,0x4d, \ -0x1f,0x2e,0xc5,0xd6,0x71,0x3f,0x20,0x0b,0x78,0xad,0x83,0x63,0x81,0x39,0xe3,0xc2, \ -0xc6,0x6d,0x57,0x0f,0xa6,0xaf,0x72,0x38,0x13,0xf2,0x8f,0x34,0x74,0xba,0x67,0x61, \ -0xb6,0xea,0xd6,0x85,0xe6,0xd6,0x67,0x6c,0x70,0xb7,0xdb,0x65,0x8c,0xb6,0x39,0xa4, \ -0x1a,0x98,0x7d,0x68,0x81,0xc2,0x11,0x10,0x9b,0x1b,0x51,0x3a,0xd4,0xd1,0x68,0x2a, \ -0x0d,0x7a,0xe1,0xfc,0x2e,0x99,0xd9,0xc0,0x43,0xa8,0x89,0xb3,0x76,0xa9,0xf0,0xb7, \ -0x4b,0x4d,0xb9,0xf9,0xc2,0xe4,0x96,0xd0,0xae,0x69,0x25,0x07,0x49,0x2e,0xdf,0x20, \ -0x19,0x8b,0x41,0xfc,0x1e,0x4b,0x53,0x52,0xf9,0x22,0x54,0x6e,0x54,0xc1,0x9d,0x19, \ -0x06,0x08,0x43,0x07,0x12,0x16,0x1d,0x90,0xe9,0xd3,0x5e,0x17,0x4e,0x0e,0x96,0x68, \ -0x9e,0x2f,0x75,0xf7,0x30,0xf4,0x92,0x05,0x18,0x9b,0x91,0x6d,0x70,0xcd,0x43,0xc2, \ -0x98,0x3e,0x9b,0x02,0x19,0x1b,0x2a,0x81,0x52,0x00,0x5e,0x66,0x9d,0x5c,0x95,0x85, \ -0x76,0x93,0x79,0x77,0xee,0xb3,0x6e,0x2f,0xab,0xe0,0x31,0x8c,0x78,0xba,0x59,0xd4, \ -0x58,0x70,0xb5,0x6c,0x05,0x03,0xc6,0x5b,0x63,0x47,0x8c,0x08,0x4d,0xd9,0x49,0xa1, \ -0x67,0xd4,0x1d,0x74,0xf0,0xe6,0x70,0x11,0x3b,0x0b,0x9c,0xcf,0x82,0x96,0xf9,0x09, \ -0xc0,0x9f,0xbc,0xdb,0x09,0x52,0x21,0x65,0xe0,0x68,0x69,0xb8,0xb6,0x59,0xe0,0x31, \ -0xe3,0x21,0x0d,0x3b,0x89,0xcd,0x0c,0xea,0x14,0xef,0x35,0xbc,0x31,0x71,0x84,0x1c, \ -0xfa,0x97,0x71,0xcb,0x59,0xc4,0x7b,0xa9,0x32,0xc1,0x4c,0x60,0x54,0x6a,0x24,0x67, \ -0x18,0x65,0x4f,0x49,0xf2,0x94,0x31,0xd6,0xa8,0x09,0xa1,0xc7,0xc9,0x06,0xc0,0xef, \ -0x5e,0x48,0x87,0x07,0xcf,0x93,0x68,0xda,0xba,0x60,0x29,0x58,0xca,0x3a,0x18,0x4c, \ -0x06,0xbf,0x5c,0xe3,0xbc,0x9b,0x4e,0x30,0xed,0xe4,0xae,0x3b,0xb9,0xf7,0x93,0xca, \ -0xcc,0x43,0x76,0x50,0x88,0x3e,0x37,0xda,0x50,0x2b,0x6f,0xee,0x75,0x9a,0xab,0x7e, \ -0x2c,0x6e,0xec,0x5e,0xfb,0x87,0x9c,0x42,0xb9,0xa9,0x4a,0x5c,0xc9,0x49,0x8a,0x8e, \ -0x14,0xb2,0x5c,0xb3,0xad,0x96,0x4c,0xb3,0x7e,0x81,0x7d,0x8e,0x00,0x82,0xe0,0xaf, \ -0x37,0x09,0xe6,0x09,0xe7,0xd7,0xc4,0x36,0x3b,0xdc,0xcb,0x46,0x0c,0xdb,0xa3,0x98, \ -0x74,0xe1,0xa1,0xab,0x3d,0x75,0x5d,0x7a,0x16,0xc7,0x81,0xe8,0x15,0x94,0x3f,0x89, \ -0x83,0x68,0x1d,0x9a,0x22,0x41,0x6e,0xa2,0x91,0xf8,0x19,0x22,0x0b,0x91,0x0e,0x8f, \ -0x65,0xe3,0xbc,0x43,0xe2,0xc2,0x5b,0x21,0x04,0x23,0x32,0xad,0x1b,0xd9,0x40,0x68, \ -0x15,0x7a,0x65,0x5b,0x5f,0x96,0x2e,0x4a,0x17,0x4f,0xc3,0x02,0x85,0x28,0xc4,0x99, \ -0x18,0x83,0x1c,0x35,0xf9,0x06,0x09,0x80,0x3b,0xcb,0xc3,0x3d,0x75,0xd4,0xc9,0xa3, \ -0x00,0xc3,0x86,0x89,0x86,0x2a,0xb7,0x03,0x04,0x24,0x4c,0x02,0x7c,0x40,0x6b,0xf2, \ -0xfe,0x24,0x2e,0xba,0x9f,0x97,0xad,0x65,0x8e,0xbd,0x74,0x52,0x4c,0x08,0x25,0xb0, \ -0x50,0x59,0x7d,0x71,0x8c,0x79,0xdf,0x2e,0xb0,0xa9,0x0f,0x23,0x52,0xc9,0xd8,0x84, \ -0xf4,0x74,0x0e,0xd9,0x20,0xe0,0x03,0x04,0x4f,0x11,0x71,0x69,0x37,0x4a,0xe8,0xb0, \ -0x4e,0x73,0x03,0x46,0xcb,0x05,0x4a,0xd2,0x5b,0xa0,0xb8,0x10,0xed,0x97,0xec,0xc3, \ -0x6d,0x10,0x4a,0x9c,0xec,0x6f,0x15,0xd8,0x4d,0x5e,0x6f,0x62,0x70,0xb3,0x8d,0x8e, \ -0xb4,0xaf,0x5b,0xba,0x37,0x1e,0x70,0xda,0xc2,0x8d,0x60,0x1b,0xaf,0x5c,0xa4,0x0a, \ -0xcd,0x8b,0x25,0x99,0x5d,0x14,0xba,0x35,0x21,0x67,0xcb,0xb3,0x89,0x55,0xb7,0x40, \ -0x25,0xf4,0x31,0x71,0x2c,0xc0,0x54,0xd0,0x10,0x90,0xaa,0x45,0x30,0x90,0xc6,0xfb, \ -0xda,0x13,0x6b,0x5e,0x70,0x2d,0xaa,0xca,0x30,0x2b,0x8c,0xdc,0x49,0x8d,0xcc,0xca, \ -0x62,0xc8,0xb4,0xf3,0x8f,0x45,0x37,0x56,0x84,0xfa,0x99,0x49,0xac,0xf9,0x1c,0x83, \ -0xd5,0xc0,0x37,0x6d,0x16,0xd0,0xe9,0x29,0x38,0x8c,0xe8,0xc8,0xc1,0x5e,0x2c,0x0b, \ -0x18,0x31,0x8b,0x68,0x5a,0x16,0xc8,0xc5,0x56,0x46,0x3a,0x5a,0xac,0x87,0x5c,0xa2, \ -0x59,0xa7,0x7f,0xf0,0x3b,0xaf,0xb8,0xe6,0x69,0xe5,0x78,0x72,0x02,0x78,0xce,0x49, \ -0xe6,0x33,0x8e,0x17,0xe6,0xd5,0x2b,0x47,0xe4,0x9e,0x43,0x4d,0x1a,0x69,0x36,0xa1, \ -0x75,0xb4,0x6b,0x32,0x8e,0xb7,0x28,0xc5,0xd2,0xc3,0x18,0xd8,0x5b,0x4a,0x9c,0x3b, \ -0x2d,0x8f,0x07,0xc0,0x3e,0x89,0xb4,0x39,0x93,0x51,0x39,0x9b,0xc2,0xb2,0x32,0xea, \ -0x65,0xf7,0x66,0xe1,0xa9,0x85,0xf3,0xea,0xbd,0xdd,0xcd,0x11,0x0a,0x29,0xd4,0xd2, \ -0x5f,0x08,0x31,0xf0,0xd0,0x2f,0x0f,0x5b,0x6c,0xe0,0x66,0x2d,0x7d,0xef,0x14,0xb4, \ -0x56,0x85,0xb8,0x18,0x8d,0xb7,0x40,0xb8,0x49,0x4d,0x2d,0x4f,0xe7,0xc6,0x04,0x68, \ -0x16,0x0f,0x6e,0xeb,0xc1,0xbe,0x8d,0x47,0xbb,0x74,0xa3,0x46,0x20,0xfb,0x58,0x5c, \ -0x3c,0x50,0xc0,0xe2,0xae,0x1b,0xf7,0x51,0x21,0x27,0x94,0xcc,0xc7,0xc3,0x50,0x8e, \ -0xc8,0xbd,0x7d,0x35,0xe6,0x7b,0x2d,0x56,0x9f,0xdc,0x4b,0x05,0xa9,0x62,0x48,0xab, \ -0x31,0x70,0xd6,0x18,0x66,0x18,0x0b,0xb2,0x4c,0xb0,0x98,0x12,0x2c,0x60,0xc1,0x56, \ -0x8d,0xad,0x83,0x8a,0x15,0x92,0x28,0x44,0x4f,0x0b,0x4c,0x3c,0x33,0xa9,0xd6,0xe7, \ -0x9e,0x6e,0xc8,0xfe,0x1a,0x6e,0x87,0x9d,0xf9,0x13,0xe3,0x9c,0x83,0xc4,0xf8,0x21, \ -0xca,0x42,0x17,0x19,0xe7,0xb6,0x35,0xde,0x0f,0xc2,0xaa,0x30,0xdc,0x61,0xb0,0x7d, \ -0x87,0xa6,0xe6,0xee,0x91,0x81,0x2d,0x16,0xd6,0xfb,0xf1,0x4a,0x50,0xd0,0x67,0x04, \ -0xa0,0x13,0xaa,0x28,0xfa,0x8c,0xe8,0x80,0x1d,0xa2,0x48,0x7b,0xf0,0x59,0xaf,0x55, \ -0x21,0x8b,0xc8,0x11,0x10,0x70,0x18,0x2a,0x5f,0x6d,0x5d,0x43,0x4f,0x3d,0x22,0xe2, \ -0x24,0x5e,0x30,0x4c,0x80,0x8b,0x9e,0x54,0x1e,0xd8,0xa0,0x74,0x46,0xeb,0x3d,0xdf, \ -0x5f,0x42,0x72,0xdc,0x8f,0x5a,0xeb,0x7a,0xf3,0x30,0x3f,0x1c,0x83,0x0d,0xab,0x14, \ -0xe4,0xc2,0x98,0x81,0xbe,0x24,0xc8,0xac,0x99,0x45,0x93,0x1c,0x6c,0x00,0xc0,0x83, \ -0x18,0x68,0xcd,0x19,0x3e,0xe8,0xf5,0xf4,0xbd,0xba,0xbb,0xc8,0xce,0x74,0x99,0x47, \ -0xc2,0xda,0x94,0x62,0x0b,0x3c,0x47,0xd3,0x3a,0xe8,0x7c,0x9d,0x32,0x59,0xd5,0xbb, \ -0xc3,0xfb,0xb0,0x55,0x88,0xe6,0xbb,0xb7,0xbb,0x9a,0x28,0x33,0xd7,0x96,0x39,0xab, \ -0x7b,0x9a,0xf2,0x17,0x27,0xc6,0xa5,0x46,0x62,0xe9,0x32,0xef,0x9a,0x9d,0x1d,0xd0, \ -0xd1,0x63,0xc4,0x3e,0x38,0x3a,0x24,0xfe,0x6e,0x1b,0x1d,0x54,0x52,0xa4,0xa0,0x73, \ -0xae,0x9e,0x66,0xd3,0xdc,0xcf,0x39,0x85,0x88,0xc9,0x10,0x15,0x14,0x58,0xab,0x04, \ -0x62,0x7a,0x5a,0x20,0xd1,0x28,0xce,0xe8,0xd1,0x88,0x0a,0x8c,0x42,0xb5,0x15,0x23, \ -0x01,0x7d,0xdf,0x44,0xc7,0xf4,0x7e,0x63,0xf1,0xa6,0xb6,0xfb,0x2d,0x00,0xfd,0x40, \ -0x94,0x67,0x58,0x96,0x85,0x2b,0x0c,0xbe,0xa7,0x45,0x42,0xd0,0xf6,0x45,0x26,0x8c, \ -0x10,0xbe,0x0c,0x14,0x84,0x33,0x3b,0x13,0xea,0x43,0xe3,0xa9,0x39,0x10,0x62,0xc8, \ -0x6e,0xc1,0x0d,0xb4,0xb4,0x9f,0x98,0x60,0x7b,0x89,0x40,0x75,0x44,0xa3,0x5c,0xa4, \ -0xc9,0x94,0xe4,0x6a,0xb3,0xaf,0x95,0xfe,0x7f,0x57,0xb3,0xf9,0x37,0x7c,0x5c,0xb6, \ -0x26,0x77,0x48,0x46,0xc9,0x61,0x90,0xa0,0x19,0x9b,0xa1,0x40,0x80,0xfe,0x1c,0xfc, \ -0x27,0xb6,0xa8,0xb1,0x17,0xd2,0x6f,0xe6,0x8a,0xd4,0x9d,0xf6,0x05,0x38,0x23,0x21, \ -0x22,0x31,0x3c,0x96,0x32,0x63,0x8b,0xbb,0xe8,0xc7,0xc7,0xfd,0xfc,0x3e,0xef,0x67, \ -0x33,0x9c,0x05,0xe2,0xc7,0xbc,0xf9,0x6b,0xc9,0xe9,0xd5,0x0f,0xa0,0x7a,0xca,0x36, \ -0x6f,0x20,0xf6,0x04,0x05,0x29,0x86,0xdc,0xb6,0xdc,0x07,0xc6,0xc8,0x4d,0xbf,0x1b, \ -0x3d,0x94,0xf4,0x2b,0xe7,0x4a,0xda,0x6c,0x53,0x78,0xf2,0x12,0x2c,0xed,0x82,0xac, \ -0x0b,0x91,0x6f,0x7e,0x47,0xed,0x21,0xe8,0xed,0xfa,0x7a,0x1d,0xda,0xd1,0x72,0xa6, \ -0x7b,0x0a,0xf9,0x3c,0xdb,0xe6,0x27,0x24,0xf7,0xd1,0x6e,0x43,0xc6,0x2c,0x88,0x46, \ -0x4c,0x04,0x87,0x45,0x25,0x43,0x78,0x30,0xfb,0xcc,0xb4,0x5d,0x56,0x40,0x77,0x34, \ -0x07,0x4e,0x95,0x17,0x63,0x4d,0x0f,0xa4,0x26,0xc2,0x36,0xa3,0x15,0xb3,0x30,0xfc, \ -0x28,0x70,0x17,0xa8,0x63,0x6b,0x96,0xca,0xd9,0x7e,0x87,0xe8,0xf0,0x3c,0x06,0xd1, \ -0xdc,0x71,0xb5,0x20,0x3e,0xf1,0xa0,0x6c,0x4f,0x37,0x00,0x32,0x0e,0x04,0x5d,0xa5, \ -0x52,0x09,0x68,0x12,0x0b,0x46,0xbc,0xdf,0x17,0xdb,0x0f,0x53,0x82,0x6b,0x72,0xde, \ -0x71,0x0c,0xe1,0x27,0xd6,0x82,0x84,0xed,0xb6,0x1d,0xe7,0x77,0x71,0xb7,0xa2,0xab, \ -0x0f,0x21,0xe5,0xc0,0xb4,0xb1,0x28,0x0f,0x3a,0x13,0xe8,0x40,0xb9,0xb2,0xb0,0x06, \ -0xd4,0x90,0x63,0x3a,0x1a,0x13,0xcb,0xba,0x9d,0x35,0xf0,0x4c,0xfe,0xfd,0xaf,0x11, \ -0x96,0xe6,0x74,0xb4,0xac,0x82,0xe4,0xc4,0x06,0xd6,0x80,0xa1,0xb5,0xaf,0x06,0x83, \ -0xa2,0xcf,0xb5,0x9a,0x32,0xfa,0x4f,0xc1,0xf9,0x06,0xf9,0xbd,0xa1,0xfb,0xfd,0xb6, \ -0x14,0x1c,0xca,0xb6,0xc5,0x6c,0x6d,0x67,0x5f,0x57,0x9c,0xf6,0x66,0xc5,0x95,0xe0, \ -0x2d,0x7b,0xa7,0x2c,0xf6,0x7b,0x81,0x84,0xa3,0x23,0x22,0x8d,0x91,0xfa,0xc5,0xf6, \ -0xbc,0x59,0x11,0xd6,0x83,0x9b,0xa0,0x25,0xe4,0xbb,0xd8,0x8f,0x9a,0xfe,0xd1,0xd8, \ -0xe2,0xcf,0x14,0xd4,0xa0,0x58,0xc0,0x97,0x82,0x42,0xb7,0xde,0xe6,0x2b,0x17,0xae, \ -0x2b,0xa7,0x81,0x12,0x11,0x20,0x16,0x48,0x83,0x0b,0x79,0x43,0x73,0xf0,0xf6,0x7c, \ -0xda,0x1d,0x7a,0xd3,0xb2,0xc1,0x41,0x51,0x82,0xb1,0x82,0x24,0x88,0x2a,0x45,0x84, \ -0x2c,0x0d,0xbd,0x9d,0xc7,0xf3,0xe7,0xd1,0x4f,0xd8,0xd4,0x72,0xe4,0xc0,0xce,0x3a, \ -0x93,0x4e,0x77,0xcb,0x27,0x98,0x76,0xa6,0x21,0x10,0x0f,0x2b,0xa6,0xc4,0xf7,0x7e, \ -0xaf,0xa7,0xc4,0xbe,0x48,0x1d,0xa9,0xb6,0x09,0x11,0x00,0x7f,0x44,0xac,0x39,0x2f, \ -0x83,0x59,0xf1,0x0e,0xb3,0xbb,0x04,0xed,0xea,0xa4,0xd6,0x28,0xb2,0x2c,0x8a,0x44, \ -0xdb,0xed,0xf6,0x40,0x3e,0x02,0xc1,0x88,0x30,0x51,0xf9,0xef,0xaf,0x90,0x62,0x65, \ -0x9f,0x37,0xd3,0x7b,0x16,0xd1,0x87,0x5f,0x61,0xcc,0x85,0x41,0x0c,0xb2,0xd6,0x47, \ -0x60,0xff,0xda,0xa9,0x13,0x02,0xc9,0x52,0xbc,0x50,0xdf,0x82,0x04,0x01,0xae,0x24, \ -0x52,0x29,0xbc,0xde,0x8f,0x72,0x60,0x86,0x30,0x0f,0x12,0x81,0x12,0x3b,0x89,0x46, \ -0x81,0xaa,0x9c,0x8d,0x91,0x11,0x84,0x58,0xb1,0xe1,0x0a,0xc6,0xa1,0x9d,0x9b,0x60, \ -0xc3,0x32,0xd8,0x59,0xce,0x52,0xa1,0xc2,0x3d,0x49,0x2b,0x64,0xb7,0x9e,0x23,0x0a, \ -0x44,0x21,0x89,0x85,0xea,0xd1,0x4b,0x6d,0x11,0x58,0x41,0x29,0xfb,0x53,0x3d,0x99, \ -0x3f,0xfa,0x71,0x36,0xfd,0xf9,0x43,0x0b,0x30,0xed,0xbc,0x92,0x5e,0x4e,0x2d,0x35, \ -0x98,0xa6,0x29,0x49,0xbb,0x75,0x28,0x1f,0x95,0xab,0x1d,0x06,0xb0,0xce,0xcd,0x86, \ -0x4a,0x2a,0x9a,0x95,0x8c,0x3d,0xf5,0xc4,0xd2,0xfc,0xeb,0xd2,0x1f,0x3d,0xf7,0x39, \ -0x01,0x23,0xa5,0xb1,0x02,0xd4,0x01,0x48,0x29,0xfa,0x31,0xd2,0x77,0x13,0xa0,0x7d, \ -0xbb,0x9b,0x8c,0x14,0x58,0x2a,0x31,0x45,0x90,0x60,0x61,0x20,0x76,0x33,0xb3,0xa7, \ -0x5c,0xcb,0xc7,0x27,0x83,0x2a,0x13,0xc1,0x86,0x4c,0x66,0x96,0x2c,0x97,0x1f,0x0c, \ -0xdc,0x88,0x3d,0x8e,0x4d,0x32,0x86,0x17,0x66,0xc5,0x42,0xa5,0x22,0x08,0xa0,0xba, \ -0xcb,0x28,0x8b,0xa3,0x41,0x05,0xe5,0xc0,0xe5,0x09,0x6c,0x31,0x08,0x10,0x84,0x49, \ -0xaa,0xb0,0xd8,0x03,0x2e,0xdd,0x11,0x69,0x13,0x65,0x10,0x9c,0xf7,0xa1,0x6a,0xb7, \ -0x79,0x94,0x71,0x7d,0xbd,0x33,0x02,0x4a,0x48,0x3c,0xc0,0xc2,0x7d,0x28,0x3b,0x00, \ -0x7c,0x82,0x30,0xe6,0x37,0xf8,0xda,0x96,0x34,0xf5,0xed,0x26,0x94,0x57,0x8a,0x8d, \ -0x03,0x60,0xc1,0x80,0x36,0x3c,0xaf,0xb2,0x4d,0x4f,0x9c,0x06,0x5a,0x65,0x2a,0xa8, \ -0x8b,0xee,0xb4,0x8b,0x22,0x3f,0x0a,0xa5,0x88,0xc5,0x72,0xc9,0x4c,0xda,0x1b,0x33, \ -0x2a,0xa2,0x4e,0x16,0xcc,0xa3,0xad,0xac,0x8b,0x26,0x19,0x44,0x66,0x6f,0x29,0x3a, \ -0xba,0x8e,0x38,0x18,0x78,0x68,0x6d,0xb4,0xce,0x24,0xe9,0xa9,0xe7,0xdd,0x93,0x79, \ -0x69,0xd1,0x93,0x83,0x51,0x61,0x16,0x42,0xda,0x70,0xe5,0xbf,0x40,0xb8,0x0e,0xb4, \ -0x28,0x4f,0x46,0x46,0xc6,0x66,0x54,0x6f,0x0d,0xc7,0x65,0x06,0x57,0x61,0xee,0x29, \ -0x3c,0x06,0x0d,0x89,0x52,0x9f,0x7c,0xa1,0x51,0x82,0x31,0x30,0x35,0x9f,0x3b,0x18, \ -0xd6,0x8f,0xe1,0x2b,0x57,0x2c,0x5b,0x9a,0x87,0x27,0x3a,0x48,0xc7,0x86,0x59,0xd9, \ -0x05,0x27,0x14,0x50,0xa2,0x74,0x1c,0x62,0x95,0x86,0x19,0x3f,0xc8,0x92,0x63,0x19, \ -0xc4,0xf2,0x70,0x25,0x9a,0x0b,0x69,0x19,0x69,0x8c,0x40,0xe9,0x4d,0xbd,0xb8,0x3a, \ -0xb9,0x28,0x9c,0xb8,0xbf,0x45,0xd6,0x49,0xd4,0xcb,0x1b,0xf9,0xcf,0xe2,0xf9,0x0c, \ -0x91,0x95,0xef,0x21,0x25,0x3d,0xe1,0x41,0x19,0xbe,0xc6,0xbc,0x77,0x2e,0xec,0x0a, \ -0x93,0x6a,0x87,0xdd,0x0e,0x1d,0xbc,0x9e,0x99,0x68,0x68,0x53,0x85,0xc0,0xfe,0x63, \ -0x07,0xb3,0x4e,0xd4,0x6d,0x24,0x51,0x90,0x91,0xa0,0x29,0x53,0x34,0x33,0xfd,0x5c, \ -0xf0,0xbb,0xae,0x3f,0x06,0x8e,0x79,0xf9,0x79,0xb5,0x04,0xe4,0x6f,0x29,0xbb,0x24, \ -0xa8,0x4f,0x8c,0x13,0x0c,0x5e,0x2c,0xc8,0xcc,0x52,0xbd,0x96,0xa6,0xa9,0xa9,0x90, \ -0xdb,0xc7,0xcb,0x19,0xed,0x30,0x78,0x20,0x5c,0x75,0xe8,0x5f,0xd1,0x41,0x36,0x32, \ -0x13,0x3a,0x90,0xa8,0x26,0x89,0x85,0x35,0x98,0x5c,0x54,0xea,0xc1,0x59,0x28,0x64, \ -0xc1,0x12,0xd3,0x13,0x53,0x11,0x43,0xba,0x23,0x9f,0x9e,0x6e,0x62,0xb2,0xe9,0xcb, \ -0x7a,0x3b,0x03,0xf4,0xa2,0xb4,0xfb,0x33,0xf5,0xdc,0x52,0x51,0x06,0xc6,0xdb,0xfa, \ -0x78,0x28,0xc8,0x32,0x04,0x58,0x0c,0xea,0x51,0x34,0x11,0x02,0xe0,0xfc,0x5a,0x36, \ -0x3d,0x9a,0x49,0x2f,0x73,0xbe,0x86,0x30,0x1b,0xc0,0x9d,0x0f,0x0e,0xf0,0x7a,0xc8, \ -0x91,0x00,0x41,0x14,0x45,0x90,0xe3,0x6a,0xc5,0x66,0x80,0xd8,0xad,0xb4,0x11,0x15, \ -0x18,0xc8,0xb5,0x1e,0xed,0xbe,0x84,0x9a,0x79,0x9a,0x2b,0xf9,0x69,0xc7,0x14,0xa3, \ -0x32,0x73,0xa1,0xc0,0x0c,0x31,0x60,0xb2,0x6c,0x30,0xf4,0xfa,0xf3,0xf6,0x52,0xa4, \ -0x90,0xb1,0xed,0x35,0x38,0xef,0x03,0x2d,0xae,0xc2,0xf3,0x85,0x6a,0xff,0x65,0x8c, \ -0xb3,0x3e,0x09,0x23,0xc3,0xcb,0xde,0xa9,0x60,0x23,0xbc,0xe9,0x77,0x31,0xda,0x87, \ -0x49,0x0f,0xd6,0xcd,0x52,0x78,0xf6,0xda,0x3d,0xa3,0x25,0x04,0x44,0xd4,0xbe,0x4b, \ -0x8d,0xc4,0x9e,0xb9,0x95,0x93,0xd7,0x52,0x37,0x9c,0x86,0xaf,0x3b,0x4b,0x1c,0x24, \ -0x25,0x83,0x0b,0x26,0x10,0x51,0x1d,0x21,0x58,0x34,0xd6,0x72,0xde,0x7a,0x60,0xf9, \ -0x5b,0xc0,0xe9,0xe7,0x82,0xbd,0x9e,0x9c,0xce,0x47,0x41,0xaa,0xf3,0x87,0x34,0x84, \ -0xe9,0xc8,0xd4,0x71,0x68,0x93,0x5a,0x5c,0xb3,0x0c,0xc2,0x45,0x5d,0x73,0x96,0x4f, \ -0x3d,0x75,0x97,0x56,0x22,0xb2,0x2f,0x21,0x42,0x88,0x62,0xc5,0x06,0x20,0x40,0xd4, \ -0x42,0x23,0x75,0x42,0xe1,0x0c,0xe5,0x18,0x45,0x99,0x05,0x26,0xe9,0x82,0x16,0x22, \ -0x45,0xaa,0x4e,0xc3,0x92,0x84,0x2d,0x52,0x12,0x47,0x46,0xa1,0xa8,0x43,0x31,0xc1, \ -0x0a,0xab,0xb4,0xcd,0x10,0x41,0x56,0x0d,0xbf,0x16,0xd8,0x26,0x9e,0x06,0xd9,0x34, \ -0x41,0x9a,0x18,0x71,0x79,0xb9,0x44,0xcc,0x6e,0x58,0x69,0x4a,0xa8,0x2d,0xb6,0xd1, \ -0x6e,0x1a,0x8e,0x30,0x17,0x19,0x12,0xa4,0x90,0x42,0x1a,0xe6,0x5d,0xf3,0x0b,0x34, \ -0xa4,0xb1,0xdf,0x3a,0x7e,0xbf,0x7e,0xfc,0xf5,0xdc,0xfa,0x8d,0xc2,0x4f,0xe9,0x86, \ -0x07,0xb1,0xe5,0x70,0x79,0x96,0x71,0x0a,0xc6,0x88,0x80,0x85,0x75,0x0b,0xf7,0x75, \ -0x34,0x5b,0x37,0xd4,0xa2,0x80,0x62,0x19,0x3c,0x7b,0x28,0x2a,0x30,0x38,0xb0,0xe2, \ -0x33,0xba,0xfd,0x96,0x10,0xb0,0x74,0xc9,0x89,0xd4,0xaa,0x74,0x85,0x9d,0x0f,0xcb, \ -0xa8,0x69,0xf9,0x0d,0x42,0xa6,0x34,0xc6,0xb6,0x2e,0x6c,0x50,0x55,0x31,0x41,0xbd, \ -0xbf,0xd5,0x93,0x06,0x89,0x44,0xca,0x14,0x64,0x1d,0x28,0x54,0x59,0x33,0x82,0x93, \ -0x0c,0xad,0x60,0xb8,0x1a,0x83,0x5a,0x64,0x36,0x4d,0x68,0x86,0x04,0xdc,0x06,0xd3, \ -0x09,0x0a,0x40,0xbb,0x35,0x41,0x97,0x46,0x8f,0x59,0x04,0x55,0x58,0x88,0xa6,0x6c, \ -0xae,0x0e,0xda,0x74,0xf7,0xc8,0x7a,0x1d,0x66,0x01,0x03,0xbf,0x7c,0xf2,0x04,0xda, \ -0x40,0x30,0xf1,0x94,0x6d,0x23,0x93,0x98,0xd7,0xaa,0x93,0x5c,0x1d,0x40,0x5c,0x4d, \ -0x4c,0x15,0x2a,0x21,0x20,0x04,0x62,0xa1,0xb9,0x09,0x54,0xc9,0x55,0x12,0xc3,0x6b, \ -0x17,0xdc,0x60,0x1b,0x4c,0x71,0xbb,0x75,0xd5,0x95,0xb0,0x9e,0x90,0x4c,0x1e,0x93, \ -0x5d,0x22,0xc9,0x91,0x0a,0xa8,0x89,0x03,0xcb,0x01,0xd9,0xb4,0xd8,0x92,0x76,0x91, \ -0x5a,0x22,0x97,0x32,0xd8,0x27,0x7f,0xa7,0x80,0xeb,0xbc,0xda,0xff,0x2f,0x76,0x38, \ -0x1d,0x31,0x34,0x21,0xd5,0x33,0x38,0x00,0x51,0x67,0x9f,0xdd,0x2b,0x8b,0x4a,0x5b, \ -0x1a,0x2e,0xae,0x26,0xab,0x0b,0xbd,0x76,0xf9,0x17,0x6e,0xb7,0x66,0xac,0x06,0xd7, \ -0xa2,0x90,0x3f,0x56,0xda,0x59,0x0d,0x32,0x5d,0x10,0xa8,0x0e,0x2c,0x9e,0xcb,0x37, \ -0x0a,0x0e,0x26,0x09,0x26,0x07,0x4c,0xe0,0xae,0x16,0xcb,0x45,0x8a,0x51,0x04,0x6d, \ -0x94,0xc0,0xd7,0x11,0x51,0x12,0xd2,0x8a,0x0a,0x05,0xa5,0x06,0xd8,0x36,0xc6,0x50, \ -0xb2,0x5a,0x32,0x8c,0xb4,0xb6,0xc8,0x51,0x8d,0x6a,0x46,0x99,0x85,0x1c,0x1f,0x0c, \ -0x86,0x4c,0xc9,0xc2,0x82,0xb1,0x02,0xc5,0xc4,0xb2,0xc3,0x40,0x28,0x6d,0x43,0x64, \ -0x88,0x5a,0x0e,0x34,0x9a,0xd4,0x6a,0x38,0x58,0x30,0x4d,0xb0,0xca,0x03,0x92,0x65, \ -0x56,0x82,0x4e,0xd5,0x92,0x06,0x7a,0x24,0x9d,0x9d,0xa7,0xcb,0xaa,0x96,0x14,0x8a, \ -0x93,0x79,0xbe,0xb2,0x81,0xb4,0x55,0xa4,0x32,0x7f,0xd8,0x6c,0x63,0x11,0xd9,0x22, \ -0x9a,0xed,0xf5,0xe2,0x41,0x72,0xc3,0xdc,0x87,0x36,0x7e,0x0c,0x32,0x7c,0x6f,0x08, \ -0xf4,0xc2,0xa0,0xde,0x04,0x2f,0x58,0x7d,0xcb,0x46,0x50,0xc2,0x28,0xbe,0x37,0x7e, \ -0xbb,0x0c,0x8e,0x81,0xa3,0x58,0xdb,0x04,0x50,0xc3,0x64,0x8a,0x97,0xde,0x97,0xdb, \ -0x74,0x7c,0x77,0xca,0xf6,0x7a,0x2b,0x25,0x84,0x0d,0x87,0x49,0x12,0x5a,0x04,0xa4, \ -0x51,0x02,0xfe,0xa6,0x05,0x20,0x72,0x0d,0x67,0xcf,0xe3,0xd7,0xf0,0x9f,0xc1,0xfb, \ -0x25,0xa5,0x9d,0xc2,0xa5,0x56,0x14,0xb2,0x07,0x17,0x15,0x90,0xad,0x60,0x55,0x2e, \ -0x04,0x1d,0x8c,0x49,0xb4,0x84,0xae,0xe3,0x1b,0x76,0xf5,0xc9,0xe8,0x82,0x2b,0xfb, \ -0x91,0xaa,0x37,0xa1,0xea,0x30,0xcd,0x70,0x49,0xb3,0x3f,0x87,0xd6,0x8e,0x5f,0xa5, \ -0x96,0x37,0xd6,0xc7,0x89,0xcf,0xcc,0x36,0x37,0x4e,0xdf,0x92,0x04,0xdb,0xee,0x77, \ -0x3f,0x00,0xb0,0xdc,0x9b,0x00,0x1d,0x98,0x2f,0x1a,0x40,0xd9,0x10,0x41,0x64,0x04, \ -0x60,0x26,0x21,0xee,0x26,0x58,0x1d,0x48,0x7b,0x50,0xc0,0x31,0x16,0x0f,0x5b,0xdb, \ -0x88,0x4b,0x18,0x82,0xa3,0x06,0x26,0x53,0xcf,0xe5,0x0f,0x6b,0x15,0x04,0x58,0x2c, \ -0x82,0xc0,0xc6,0xb3,0xd1,0x2c,0xd8,0x40,0xe4,0x5e,0x72,0x1b,0x50,0xf8,0xbf,0x33, \ -0xb5,0xa1,0x7a,0x6b,0x36,0x11,0xf4,0xf6,0x28,0xcd,0x0e,0xa9,0xcf,0x79,0x09,0x04, \ -0x24,0x91,0xd2,0x21,0xd0,0x9a,0x3a,0x10,0x69,0xcb,0x6a,0xf4,0xc5,0x76,0x18,0x38, \ -0x24,0x53,0x8b,0xb4,0x51,0x50,0x10,0x15,0x36,0xf6,0xf7,0x9c,0x7a,0x72,0x61,0xd4, \ -0x78,0xf2,0x8f,0x84,0x36,0x53,0xa2,0x6f,0x0f,0xd1,0xd8,0x89,0xa6,0x30,0x1d,0x6d, \ -0x57,0x73,0x5e,0x0d,0x1c,0x27,0xbc,0xdb,0xb9,0x36,0x1a,0x5d,0x97,0x4d,0xd2,0xb0, \ -0x90,0x68,0x88,0xaa,0x74,0x49,0x7b,0xe8,0x51,0x51,0x91,0xf2,0x4a,0xc1,0x44,0x11, \ -0xc9,0x9c,0x18,0x0f,0x98,0x1b,0x1c,0x1b,0xd3,0x67,0x20,0x28,0xaa,0xe0,0xb2,0x98, \ -0x77,0xde,0x40,0xb0,0xcb,0x82,0xd4,0x3b,0x3e,0xda,0x4d,0x87,0xf2,0x37,0x17,0xf2, \ -0xa7,0x0e,0xf4,0x83,0xd4,0x05,0xcb,0x7c,0x2d,0xa0,0x66,0x74,0x20,0x8b,0xa4,0x88, \ -0x4d,0x43,0x4c,0x2c,0x9a,0x6f,0xad,0x30,0x31,0x53,0x0e,0xc7,0xc4,0x86,0x81,0xf8, \ -0x46,0x43,0x10,0x33,0x08,0x39,0x91,0x03,0x37,0x34,0xc6,0xff,0x43,0x76,0xae,0xb0, \ -0x10,0x7a,0xc6,0x33,0x37,0x23,0x4d,0xc4,0xcb,0xac,0x04,0x84,0xc7,0x7b,0x0b,0x0e, \ -0x8c,0xc9,0x15,0x84,0x74,0xef,0x21,0xbe,0x8c,0x95,0x38,0x6a,0x9d,0xf6,0xac,0x58, \ -0xea,0x38,0x9a,0x8f,0x76,0x67,0x0d,0x20,0xc6,0x86,0xd2,0x63,0x32,0x55,0xfa,0x8f, \ -0x6b,0x32,0x39,0x16,0x30,0xec,0x8a,0x66,0x41,0xef,0x85,0x8b,0x0b,0x77,0x2c,0x11, \ -0xf4,0x31,0xf9,0xd4,0x26,0x3d,0x5c,0xb2,0x65,0xb2,0x13,0x76,0x08,0xb9,0x71,0x47, \ -0x75,0xd8,0x7e,0xb9,0x72,0x66,0x7c,0x90,0x95,0x4d,0x1e,0xdf,0x7c,0xa1,0xcc,0xcd, \ -0x17,0x9f,0xe2,0x40,0x74,0xd4,0x3f,0x76,0x5b,0xe4,0xc1,0x26,0xfe,0xee,0x09,0x10, \ -0x2a,0x11,0x99,0x95,0xcd,0x24,0x60,0xaa,0x0a,0xb0,0x19,0x10,0x42,0xdb,0x7d,0xf4, \ -0xa7,0x1d,0xa1,0xf5,0xef,0xb4,0x3a,0xa9,0xb7,0xbb,0x0e,0xed,0x81,0xe4,0xd2,0x38, \ -0x1e,0x55,0xe3,0x31,0x1e,0x51,0x15,0xb9,0x8a,0x0a,0x83,0x70,0x91,0x10,0xc9,0xb8, \ -0xf9,0x0c,0xa0,0xe4,0x16,0x21,0x78,0x15,0x73,0x26,0x1a,0xc4,0x44,0x2c,0x29,0x9e, \ -0x03,0x0a,0x1b,0xbd,0x96,0xc3,0x68,0x49,0xda,0xe0,0x69,0xf4,0x3f,0xbb,0x5d,0x13, \ -0x63,0x86,0x33,0x03,0x9c,0x3c,0x10,0xe6,0x87,0x42,0x70,0x92,0x87,0x06,0x88,0x1e, \ -0xfc,0x16,0x0e,0xed,0x0d,0xf3,0x08,0xd2,0x68,0x3f,0x5e,0xb0,0xcd,0xcd,0x84,0x92, \ -0x68,0x60,0xaf,0x67,0x4e,0x9d,0xbc,0x64,0xbe,0x30,0x23,0x74,0xce,0x62,0x25,0x8c, \ -0x3a,0x53,0x5d,0xd1,0x0f,0xbf,0xc0,0xc6,0x43,0xf2,0xf2,0xb3,0x91,0x1f,0x93,0x0e, \ -0x1c,0xd1,0xed,0xd6,0x08,0x33,0x82,0xd6,0x1a,0x27,0x03,0x2b,0x4f,0x66,0x05,0xb6, \ -0x9b,0x6e,0xc3,0x76,0xd8,0xfc,0xec,0xca,0xe2,0x84,0x3c,0x8d,0x84,0x43,0x19,0xfb, \ -0x72,0x85,0x86,0x3e,0x56,0x1a,0xfe,0x81,0xbd,0x16,0xe9,0x9c,0x9f,0xe1,0x08,0x26, \ -0xd4,0x19,0xa4,0xb0,0x13,0x06,0xc1,0xb5,0x92,0x98,0xea,0x64,0x16,0x09,0xeb,0x62, \ -0x9d,0x5c,0xa8,0x1d,0xa8,0x7e,0x41,0x02,0x6a,0xd4,0x98,0x43,0x78,0x2a,0x86,0x0a, \ -0xcd,0x20,0xcb,0xb9,0x5b,0x2c,0x24,0x82,0xa8,0x65,0x5f,0x63,0x01,0xb2,0x25,0xc1, \ -0x51,0x5c,0xf9,0xc1,0xf1,0xd3,0xa4,0x3a,0x98,0x31,0x08,0xc5,0x54,0x41,0x05,0x81, \ -0xe5,0xbc,0x0e,0x9c,0xd0,0x87,0x60,0xea,0xed,0xee,0x85,0xf4,0xe9,0x8a,0xe9,0x8c, \ -0xe6,0xc7,0x6d,0xaa,0x57,0x9e,0x98,0x33,0x65,0x6a,0xaf,0x6a,0x79,0x6c,0x92,0xaa, \ -0x8c,0x40,0xe1,0x31,0x0c,0x35,0x14,0x32,0xca,0xb0,0x58,0xa4,0x3c,0x2f,0xce,0x62, \ -0xea,0x36,0xa1,0x50,0x45,0x18,0x3d,0xad,0x46,0x08,0xc1,0x9b,0x52,0x55,0xde,0x85, \ -0x60,0x88,0x2a,0x85,0x42,0xee,0xd5,0x44,0x14,0x18,0xaa,0x8b,0x16,0x22,0x8a,0x41, \ -0x51,0x05,0x56,0x55,0x6a,0xb1,0x56,0x48,0x3d,0xb1,0x25,0x06,0x2b,0x11,0x8c,0x44, \ -0x30,0xd0,0x32,0x51,0x15,0x61,0x43,0x21,0x04,0xbd,0xfd,0xff,0xa5,0xf5,0x15,0x27, \ -0xa9,0xea,0x03,0x7e,0x0d,0x80,0x19,0x44,0x46,0xe1,0x7f,0x84,0x23,0x8a,0xf9,0x2b, \ -0x3d,0x17,0x22,0x45,0x2e,0xc2,0xf5,0xeb,0x9c,0x2f,0x2d,0xb5,0xb3,0x6c,0x81,0x29, \ -0x97,0x5c,0x31,0x8f,0x6c,0x80,0xad,0x93,0xb9,0x20,0x8a,0xb4,0xd4,0x9f,0x14,0xcc, \ -0x51,0x8a,0x08,0xa0,0x8c,0x4c,0xa1,0x96,0xa6,0x0c,0x14,0xa4,0xdc,0xc5,0xc0,0xa2, \ -0x2d,0x65,0x8c,0x82,0xa3,0x8b,0x41,0x16,0x57,0x1b,0x70,0x55,0x6b,0x31,0x91,0xbe, \ -0x1f,0xab,0xfd,0x9c,0xa8,0x7e,0xda,0x9a,0xfc,0x00,0xe4,0x36,0xd6,0xf4,0xe3,0xc0, \ -0xf9,0x8e,0xe6,0xcd,0xc8,0x03,0xd7,0xd0,0x37,0xf0,0x7b,0x87,0x0c,0x6f,0x25,0xd7, \ -0xd0,0x71,0x90,0xb8,0xdb,0x90,0x6c,0x1e,0xca,0x31,0x5e,0xbd,0x50,0x77,0xba,0x3b, \ -0x4f,0x83,0xd0,0xa4,0xa9,0x44,0x04,0xe1,0x95,0x87,0x37,0xad,0x36,0xf5,0xed,0x9a, \ -0x99,0x11,0xfa,0x52,0x7b,0xfa,0xe0,0x8a,0xc0,0x5f,0x16,0xb1,0x51,0x05,0x50,0x45, \ -0x54,0xc3,0x22,0x4d,0xd2,0xed,0xd0,0x32,0xf3,0x22,0x84,0x67,0x74,0x04,0x3d,0x21, \ -0xdd,0x86,0x2c,0x11,0x10,0xc4,0xb6,0x6e,0x63,0x4c,0x10,0xdc,0xe6,0x0b,0x14,0x11, \ -0x8a,0x0c,0x18,0x8c,0x92,0x22,0xc2,0x64,0xb4,0x0c,0x43,0x8b,0x87,0xad,0x7b,0xe0, \ -0x42,0x30,0x92,0x11,0x5d,0x1b,0x58,0x6b,0x74,0x03,0x23,0xe3,0xc2,0xca,0x67,0x5a, \ -0x91,0x31,0x2a,0x15,0x24,0x94,0x87,0x6c,0x30,0x44,0xa0,0xc5,0x60,0x89,0x0c,0x9c, \ -0xca,0x78,0xf5,0x68,0x26,0xe2,0x0c,0x82,0xc2,0x01,0x31,0x4e,0xc0,0x02,0xc5,0xa3, \ -0xc1,0x3b,0x9e,0x01,0xf0,0x6b,0xe3,0x31,0x4e,0xd1,0x36,0x98,0xb6,0xd3,0x37,0xa5, \ -0x3f,0x6c,0x24,0x4c,0xc7,0x0c,0x2d,0x47,0x02,0xb8,0x68,0xbb,0x48,0xd2,0x04,0x0f, \ -0x73,0x26,0x34,0x2f,0x7a,0x8c,0x88,0x82,0xc6,0xda,0x32,0x0b,0x34,0x62,0x87,0x53, \ -0x44,0x40,0x60,0x44,0x9f,0x2d,0x42,0x79,0x6a,0x6c,0xc5,0xd5,0x11,0x2d,0x88,0xb6, \ -0x02,0x80,0xdb,0x52,0xd1,0x28,0xa5,0x04,0x6d,0x92,0xb5,0xa4,0x47,0xbf,0x5e,0x84, \ -0x96,0x73,0xa7,0x6c,0xce,0xd2,0x13,0xd9,0xae,0x9f,0x79,0xc0,0xd0,0x93,0x14,0xcf, \ -0x0b,0x50,0xcc,0x43,0x02,0xfc,0xcd,0x30,0x95,0xbf,0x64,0x29,0x73,0x49,0x1d,0xac, \ -0xc7,0xdb,0xda,0xe6,0xae,0xfd,0x84,0x2b,0x29,0x64,0xfc,0xe9,0x64,0xfc,0x6f,0x3e, \ -0xf9,0xc1,0xea,0xef,0xe2,0x23,0xb9,0x97,0xb4,0xa8,0xd2,0x3c,0x35,0xa5,0x06,0x99, \ -0x94,0x3e,0x73,0x0d,0x19,0xa6,0x47,0x3a,0xe6,0xca,0x47,0x74,0x2d,0xcd,0x5b,0xb1, \ -0x10,0x17,0xba,0x79,0x45,0x5a,0xac,0xb2,0x8e,0x0a,0x48,0xd0,0xe8,0x1b,0x21,0xb0, \ -0x40,0xe0,0xf3,0x8e,0x58,0xbe,0x29,0x49,0x30,0x42,0xe5,0x54,0x56,0x63,0x44,0x10, \ -0x05,0x76,0xe9,0xed,0xd7,0x02,0xfb,0xb0,0xa6,0xcf,0xe4,0xb0,0x74,0x72,0x96,0x40, \ -0x74,0x69,0x61,0x04,0x47,0x25,0x02,0x8e,0x2d,0x66,0x5c,0x10,0xb4,0x39,0x0e,0xb4, \ -0x13,0x10,0x1e,0xb1,0x1b,0xf1,0xb6,0xbd,0xf7,0x61,0x19,0x56,0x23,0x38,0x0a,0x7d, \ -0x9e,0xe3,0x67,0x3d,0x04,0x31,0x6e,0x9d,0x99,0x45,0x70,0x39,0x78,0xc8,0x98,0xd7, \ -0x4d,0xf3,0xb8,0xf1,0xb6,0xb8,0xf4,0x0c,0x43,0x28,0x53,0xaa,0x97,0x7d,0xa9,0x60, \ -0xf1,0x8c,0xdc,0xa2,0x5a,0x2e,0x25,0xa6,0x9d,0xb7,0xf9,0xf5,0x44,0x15,0xae,0x37, \ -0xd0,0x36,0x0d,0x43,0xcb,0xc3,0x48,0x24,0x4f,0x05,0xcc,0x29,0x23,0x45,0x5c,0x82, \ -0x8c,0x26,0x7a,0x3c,0x02,0x35,0xe6,0x82,0xaa,0x60,0x5b,0xb9,0x57,0xfd,0x61,0x60, \ -0xb8,0x1e,0x61,0x5c,0xb8,0xea,0xcc,0x38,0x58,0x5d,0x82,0x85,0x27,0x8a,0x8e,0x9b, \ -0xbd,0xac,0x9b,0x94,0xac,0x1c,0x5d,0x1c,0x55,0xba,0xbf,0x02,0x18,0xe0,0x81,0xe0, \ -0x46,0xda,0x28,0x9e,0xaa,0xa0,0x80,0x5b,0x0d,0xc7,0x9e,0xc9,0xb8,0x71,0x90,0xd1, \ -0x6d,0x9e,0xcc,0x20,0x85,0xb6,0x60,0xe7,0x99,0x70,0x82,0x41,0x03,0x44,0x07,0x42, \ -0x6e,0xb8,0x80,0x38,0xf4,0x76,0xe7,0xc1,0xa4,0x6e,0xa9,0x2e,0x35,0x2d,0x1b,0xad, \ -0x8d,0x6e,0xb0,0x3a,0x55,0xbc,0xfd,0x61,0xb6,0x87,0x42,0xdd,0xc3,0x59,0x76,0x1b, \ -0x87,0xba,0xf3,0x38,0x15,0xeb,0x34,0x88,0xce,0x14,0x5b,0x90,0x88,0x29,0xdd,0x2c, \ -0xca,0x0a,0x29,0xe6,0x46,0xd4,0xe2,0x0b,0xa0,0xd4,0x28,0x4b,0x97,0x8c,0x86,0x0b, \ -0xd3,0x4b,0x1a,0x48,0x9a,0xbb,0x07,0x1f,0x2d,0xb7,0x58,0xe4,0xed,0x44,0x0c,0x96, \ -0xa0,0xa1,0x6d,0x28,0xcf,0x6d,0x4f,0xb4,0xf1,0x74,0xe9,0x43,0x0d,0x1d,0xfa,0x37, \ -0x33,0xd8,0x11,0xdd,0xf6,0xdb,0xa9,0xac,0xaf,0x2d,0x29,0x57,0x46,0xb1,0x1b,0x03, \ -0xd2,0x0a,0xe6,0xd6,0x67,0x55,0x8e,0x50,0x91,0xb0,0x00,0xfe,0x3c,0x03,0xda,0x3d, \ -0x70,0xfd,0x2d,0xc0,0xad,0xe6,0x02,0xc4,0xe1,0x46,0xbe,0xea,0x7a,0x95,0x20,0xa8, \ -0x30,0x6a,0x48,0x62,0x81,0xe9,0xad,0xee,0x22,0xb0,0x63,0xe5,0x65,0x82,0xf0,0xc5, \ -0xac,0xdb,0x39,0xc1,0xdd,0x47,0xee,0xef,0x36,0xc3,0xb5,0xb7,0x21,0x50,0x0b,0x2b, \ -0x40,0xad,0x40,0x32,0x9f,0x06,0xc6,0x5d,0x3a,0xc6,0x20,0x30,0xc7,0xa3,0x70,0x14, \ -0x23,0x00,0xed,0x9a,0x26,0xe5,0xe2,0xaa,0xbe,0xa8,0x7d,0x09,0xc0,0x53,0xa2,0x58, \ -0xcd,0x93,0xf2,0x78,0xf1,0xd0,0x88,0xf7,0x30,0xd3,0x9a,0xa4,0x53,0xbb,0x06,0x0c, \ -0x1c,0x4e,0xc2,0x64,0xa9,0x45,0x13,0xc5,0x39,0x90,0x43,0xbd,0x0f,0x8b,0xaa,0x58, \ -0xdb,0x52,0xdd,0x8c,0xd8,0x43,0x43,0x22,0x51,0xa9,0xb0,0x2f,0xc3,0x43,0xdd,0x64, \ -0xf0,0x85,0x7b,0xfd,0x9a,0xc5,0xd3,0x88,0x53,0x09,0x0e,0x1e,0x47,0x71,0x82,0x4c, \ -0x70,0x86,0xad,0x4e,0x99,0xc9,0xbb,0xd3,0x5a,0x85,0x68,0x8d,0x34,0xd7,0x10,0xf0, \ -0xb4,0x0c,0x4c,0xa1,0x1a,0xb3,0x16,0xb1,0x5a,0x03,0x1f,0xc5,0xe9,0xd5,0xc2,0xcb, \ -0x31,0x34,0xdd,0x43,0x70,0x6a,0xbc,0xd3,0xc7,0xac,0x39,0x05,0x84,0xcd,0xed,0xe9, \ -0x4d,0x97,0xe5,0x8b,0x6b,0x23,0x7f,0x08,0x52,0x1c,0x22,0x72,0x80,0xcc,0x11,0x0e, \ -0x18,0x1b,0xe9,0xed,0xc1,0xe4,0xc2,0x78,0xa0,0xa4,0x8b,0x01,0x64,0x50,0x91,0x7f, \ -0x0f,0xb2,0x5a,0x92,0x7a,0xb0,0x38,0xe8,0x16,0x5f,0x66,0x09,0x8c,0x51,0xe3,0xa7, \ -0xdb,0xe5,0xae,0xba,0x69,0x4a,0xb2,0xb7,0x55,0x26,0x85,0xb2,0xab,0x1e,0xf1,0x1e, \ -0x11,0x13,0x75,0x4a,0x50,0x57,0x15,0x05,0x2c,0x81,0x25,0x65,0xcb,0x2a,0xcf,0x53, \ -0xa0,0x76,0x9d,0x5e,0x18,0xaa,0xa9,0x62,0x12,0xe6,0x32,0x44,0x8e,0xb4,0x01,0x92, \ -0x09,0x2e,0x20,0x30,0x68,0xca,0x87,0x31,0xaa,0x35,0xd5,0x30,0x91,0x89,0xd7,0x81, \ -0x89,0x63,0xe5,0xe8,0xac,0xa2,0x3c,0xe0,0x1e,0x2f,0x85,0xa2,0x2d,0x9a,0xa4,0x83, \ -0xc7,0xcc,0x6a,0xee,0x4b,0xae,0x21,0xdd,0xb7,0x59,0xd5,0x86,0x3f,0x75,0x00,0xec, \ -0xfa,0x3b,0x6c,0xcb,0x53,0xef,0x9d,0xb0,0x39,0x10,0x8c,0x60,0x48,0x89,0x8c,0xef, \ -0xea,0x3e,0xac,0xf3,0xe6,0xcd,0xd6,0xf3,0x72,0x74,0xea,0x6e,0x38,0x3a,0x71,0x8a, \ -0x9c,0xf0,0x43,0x6b,0x93,0x45,0xd4,0xed,0x30,0xbc,0xcd,0x84,0x8a,0x03,0x54,0x2f, \ -0x9f,0x8d,0xb9,0xd9,0x2f,0x0e,0x22,0x31,0x1d,0xb4,0x9a,0x82,0xc8,0x88,0x62,0x4c, \ -0x68,0xc9,0x40,0xf4,0xa0,0xc0,0x33,0x6d,0x5a,0x03,0x58,0x13,0x70,0xd8,0xd4,0x0b, \ -0x5c,0x15,0xe8,0x85,0x30,0x41,0xa1,0x1a,0x8b,0xb8,0x5b,0x99,0xcf,0xbe,0xb0,0x62, \ -0x98,0xf0,0xe9,0x00,0x2c,0x60,0xb0,0x5d,0xbd,0x1c,0x68,0x22,0x09,0x59,0x57,0x94, \ -0x83,0x11,0x94,0x17,0x07,0xe6,0xd4,0xd8,0x67,0x29,0x9a,0x0e,0x44,0x9c,0x00,0x4f, \ -0xda,0xee,0x31,0x94,0x49,0x16,0x23,0x17,0x61,0x91,0x7d,0x00,0x1e,0x5a,0x0a,0xad, \ -0x56,0x0e,0x19,0xa2,0x40,0xba,0xb1,0x28,0x6d,0x83,0x10,0x3b,0x25,0x0e,0x4c,0x55, \ -0x74,0x70,0x1c,0x28,0xe5,0x1c,0x37,0xc2,0xc3,0x74,0x6b,0x59,0x23,0xd4,0x4c,0x5d, \ -0x04,0x50,0x56,0xd9,0xa0,0xc0,0x65,0xa1,0xb3,0xda,0x3c,0x57,0x29,0xe9,0xe8,0x52, \ -0x9b,0x71,0x63,0x7a,0x1b,0x50,0xc1,0xad,0xc9,0x2f,0x67,0xcd,0x9a,0xc0,0x95,0x24, \ -0x08,0xd3,0xb7,0x5d,0x50,0x78,0xdf,0x57,0x1d,0x0d,0x02,0xaa,0xc6,0xe6,0x4b,0x76, \ -0x27,0x24,0x38,0xc8,0xf0,0x16,0x40,0x2c,0xa6,0x51,0xda,0xc3,0xe0,0xe4,0x17,0x89, \ -0x14,0x10,0xa7,0x8a,0xe6,0xf4,0x2c,0x69,0x04,0x02,0xb1,0xa7,0x2f,0x2e,0x88,0x17, \ -0xb5,0x85,0x1b,0xa8,0x70,0x69,0x21,0x78,0x90,0xc2,0xa0,0xe6,0xd4,0x7c,0x6e,0x6d, \ -0xd6,0x85,0xd8,0xe0,0x3a,0x2f,0x68,0x23,0xa1,0xb1,0xde,0xd9,0x60,0x9e,0x6b,0x40, \ -0x61,0x95,0xd1,0xac,0x3b,0x45,0x58,0x30,0x40,0x77,0x02,0xc2,0xc6,0x89,0x11,0x78, \ -0xb0,0x18,0xa8,0x29,0x45,0xa0,0x45,0x29,0x39,0x18,0x02,0x5d,0x0b,0x86,0x52,0x89, \ -0x92,0xcc,0xa0,0xbd,0x07,0x2d,0x42,0x86,0x73,0x74,0x88,0x48,0x0a,0x34,0x04,0x2d, \ -0x0e,0x01,0x72,0x88,0x38,0x07,0x0d,0xff,0x7f,0x8f,0x59,0xcc,0x0f,0x2f,0x56,0xbe, \ -0xca,0x99,0x6b,0x98,0x8d,0x95,0x67,0x36,0x3e,0xd6,0x58,0xcc,0xe9,0x33,0x11,0x00, \ -0x60,0x5f,0x6a,0x6d,0xdd,0x48,0x59,0xf3,0xba,0x9b,0xbb,0xe2,0x3b,0x98,0x82,0x72, \ -0x05,0x14,0x43,0x45,0x42,0x3b,0xce,0x4c,0x9c,0x60,0x07,0x10,0xb0,0xd2,0x48,0x07, \ -0x4c,0xb0,0x56,0x18,0x4e,0x29,0x70,0x53,0x0c,0xc3,0x88,0x2a,0x1f,0x20,0xc6,0x16, \ -0xb8,0x56,0x6d,0x8c,0xe4,0x99,0x71,0x18,0x66,0x96,0x61,0x9a,0x5c,0xa1,0x13,0x15, \ -0x26,0x35,0x24,0x35,0x2b,0x6d,0x2c,0x22,0x6e,0x28,0xb1,0x5d,0x10,0xe6,0xd7,0x49, \ -0xb2,0x14,0x39,0x32,0x2f,0x41,0x80,0xd2,0x5e,0x13,0x08,0x2f,0x62,0xb0,0x6f,0x81, \ -0x0c,0x76,0xa4,0xcb,0xb1,0x2f,0x37,0x0a,0x46,0x2b,0x55,0x48,0x9b,0x2a,0x30,0xbc, \ -0x0f,0x2c,0x11,0xca,0x90,0x35,0x9c,0x45,0xcd,0x91,0x29,0xae,0x43,0xb3,0xb1,0x27, \ -0x36,0x0d,0x97,0x8a,0x4a,0xa8,0x89,0x81,0x1b,0x54,0x70,0x77,0xf2,0xd3,0x53,0x65, \ -0xde,0xb4,0x3e,0x2b,0xfa,0x3d,0x5d,0x35,0xbc,0x3d,0x12,0x1a,0x1e,0x36,0x51,0xd0, \ -0xd2,0x96,0xa1,0x23,0x7f,0xba,0x90,0xbc,0x02,0xe4,0x2b,0x40,0x4b,0x45,0x50,0xd2, \ -0x28,0x6a,0x8b,0x30,0xb6,0x1b,0x71,0x52,0x67,0xf2,0x88,0x0a,0x86,0x82,0x6a,0xc0, \ -0xb3,0x48,0x09,0x46,0xe8,0xe4,0xea,0x5c,0xdd,0x2b,0xc4,0x1d,0xfa,0xab,0xd7,0x9e, \ -0x97,0x27,0xc7,0xe0,0x4c,0xd1,0xc3,0x96,0x05,0xf1,0x09,0xa6,0xbd,0x15,0x2a,0x4a, \ -0x0f,0xab,0x1c,0xf3,0xcb,0x99,0x4a,0x18,0xea,0xc0,0x5e,0xa9,0xa8,0x6b,0xa8,0xe6, \ -0x1e,0x9c,0x61,0xaa,0xa1,0xab,0x3c,0x97,0xb0,0xa0,0x8e,0x23,0x30,0xb0,0xc5,0xd5, \ -0x2c,0x5c,0x2c,0x55,0xa9,0xd9,0x90,0xc0,0x70,0x07,0x53,0x5a,0xd4,0x37,0xd2,0x82, \ -0x3d,0xa1,0xbf,0x7e,0xd8,0xb8,0x44,0x91,0x00,0x24,0x52,0x40,0x7a,0x22,0x09,0x78, \ -0x5a,0x25,0xa0,0xe5,0x73,0x61,0xa0,0xd5,0x06,0xd7,0x69,0x71,0x73,0x0b,0xd6,0x4b, \ -0x26,0x65,0xa4,0x55,0x12,0x01,0x0c,0x11,0x72,0xbe,0x9d,0x0c,0xe2,0x69,0x5b,0xf0, \ -0x54,0x30,0xc7,0xc4,0xbe,0x6a,0x0b,0x40,0xee,0x67,0x50,0x19,0xe8,0x30,0xc1,0x37, \ -0xc0,0x20,0x7d,0xd8,0x33,0x0d,0x7b,0x57,0x18,0x11,0xed,0xeb,0xc1,0x81,0x17,0x74, \ -0x2d,0xcc,0xc0,0xe3,0xb5,0xc6,0x29,0x8b,0x66,0x1d,0x09,0xac,0xd9,0xb7,0x89,0x4b, \ -0x8b,0x8d,0xad,0x55,0x17,0x34,0x40,0x36,0x34,0xbd,0x5c,0x6d,0xe2,0xdf,0x3c,0x6c, \ -0xb4,0x6c,0x46,0x8d,0x03,0x6b,0xb2,0x19,0x88,0x1f,0x1e,0x27,0x33,0xbe,0xd5,0x41, \ -0x45,0x2b,0x6d,0xb4,0xd2,0x6c,0xc9,0xd5,0x6c,0xae,0x74,0x80,0x0a,0xb3,0x7b,0x0b, \ -0x5f,0xd2,0xef,0xf6,0xd9,0xe7,0xe3,0xf9,0x69,0xf9,0xe0,0x43,0x7d,0x1a,0x16,0xec, \ -0x4e,0x60,0x7c,0x75,0xda,0xf1,0xb7,0x75,0x92,0xf2,0x60,0x41,0x04,0x1d,0x26,0x09, \ -0x29,0x77,0x49,0x3f,0xe7,0x54,0x10,0x17,0x77,0x2f,0xcd,0xa8,0x49,0xe1,0xc9,0x65, \ -0x4b,0x8b,0x58,0x9b,0x76,0x35,0x07,0x67,0x98,0x1e,0xbb,0xfb,0x70,0xea,0x16,0x47, \ -0x9e,0x0b,0x8d,0xeb,0x8a,0x04,0x60,0x99,0x98,0xbb,0x6d,0x49,0xd9,0x2b,0xdd,0xed, \ -0x78,0xe6,0x07,0x9e,0x48,0x0c,0x9d,0x61,0x93,0xe7,0xe1,0x16,0xe1,0xaa,0xf8,0x26, \ -0x46,0xe7,0xd8,0xdc,0x86,0xa7,0x6c,0x3f,0x04,0x56,0x03,0x11,0xf9,0xfe,0x83,0x7c, \ -0x1e,0xbd,0xf7,0xc8,0x0b,0x93,0x1d,0xf4,0x9f,0xd4,0x7c,0x4a,0xbf,0x6a,0x68,0x3e, \ -0xd7,0x9f,0x00,0x02,0xc5,0xf7,0xc3,0xc3,0x18,0xf6,0x58,0xb7,0xf5,0x50,0x5b,0x7d, \ -0x95,0x43,0xc6,0x33,0xcf,0x8b,0x02,0xec,0x8d,0xf7,0x81,0xca,0x98,0xa4,0x4b,0x1f, \ -0x34,0x03,0x18,0x04,0x43,0x49,0xd9,0x78,0xb5,0x68,0xe0,0x46,0x41,0x3b,0x20,0x74, \ -0xc4,0x81,0xa8,0xc2,0xcb,0x59,0x3a,0x72,0x3f,0x6f,0x8e,0xa3,0x8f,0x69,0x8b,0xdd, \ -0x18,0x11,0x45,0x44,0x58,0x0c,0x58,0x22,0x45,0x59,0x2f,0xdf,0x66,0xe1,0x9a,0x91, \ -0x0f,0x14,0x2a,0x48,0x32,0x41,0x91,0x2c,0x67,0xb2,0xda,0xe3,0x73,0x34,0xdb,0x08, \ -0x4d,0xda,0xdc,0x1c,0x71,0xba,0xd8,0x4f,0x4b,0x10,0x98,0x31,0x36,0xab,0xb6,0xef, \ -0x1c,0x13,0x69,0x23,0xb1,0x86,0x5e,0xef,0x6c,0xad,0x96,0x06,0xd5,0x72,0x3d,0x35, \ -0x2e,0xca,0x03,0x6d,0x7a,0x4f,0x26,0x67,0x8e,0xd5,0x40,0xc8,0xd4,0x47,0xc9,0x34, \ -0x1c,0xd9,0xa9,0xfd,0x31,0xd5,0xce,0x98,0x46,0x03,0x25,0x8d,0xb1,0x70,0xe1,0x78, \ -0xa6,0x47,0x94,0xd3,0x44,0xc2,0x66,0x61,0x1d,0x24,0xa4,0x8c,0x49,0xd5,0xa1,0x0c, \ -0x02,0x3d,0x53,0x90,0x53,0x61,0x23,0x0b,0x34,0x46,0x13,0xc0,0xdd,0x45,0x9a,0x07, \ -0xec,0xd0,0x2c,0x26,0xec,0x06,0xc1,0xb0,0xa1,0x2e,0x2c,0x45,0xea,0xff,0x87,0x87, \ -0x9f,0x8e,0x97,0x9f,0x9b,0x2d,0xc8,0x68,0x0e,0xb8,0x99,0xd9,0xb2,0x46,0x49,0xf9, \ -0xcc,0x09,0x88,0xee,0x69,0x14,0x60,0x37,0xb9,0xa4,0xa9,0x69,0xd5,0x3a,0xf0,0xaf, \ -0x3f,0x64,0x5d,0xe8,0xd5,0x17,0x65,0x9a,0x87,0xf7,0x72,0x8a,0xa5,0x99,0xc7,0x57, \ -0x4a,0xce,0x60,0xd6,0x61,0x7c,0x55,0x9b,0x21,0x2f,0xb5,0x88,0x6c,0x0a,0xb8,0x65, \ -0x4c,0xf0,0x09,0x4e,0x10,0x10,0x99,0x86,0x08,0x64,0x7a,0x9f,0xab,0x70,0x47,0x26, \ -0xeb,0x26,0x6b,0x41,0x21,0x3d,0x9b,0x2a,0xc9,0xe3,0xd0,0x7d,0x57,0xeb,0xc5,0xed, \ -0x80,0x50,0xcd,0xf5,0x4e,0xe4,0xca,0xac,0x5a,0x37,0x09,0xed,0x33,0xa6,0xf7,0xaa, \ -0xa9,0xd0,0x0f,0xf9,0x5c,0xa7,0xeb,0xfc,0x21,0xe5,0xc5,0x32,0xfc,0x0a,0x48,0x79, \ -0xec,0x6c,0xbb,0x78,0x9a,0x3c,0xaa,0xa2,0x96,0x8b,0x22,0x74,0x82,0x8b,0x1d,0x32, \ -0xe0,0x23,0x84,0x3f,0x55,0x71,0x15,0xcc,0x45,0x27,0x62,0x48,0xe8,0xb9,0xf8,0x3e, \ -0xce,0x96,0x21,0x44,0x95,0x7c,0x2a,0x37,0x15,0xa1,0x04,0x28,0x85,0x0a,0x65,0x0f, \ -0x32,0x0f,0x12,0xc6,0xd8,0x97,0x84,0xd5,0xa2,0x69,0x40,0x82,0x24,0x39,0x6a,0xca, \ -0x37,0xd0,0x83,0xdb,0xab,0xc6,0xfa,0xca,0x0c,0xbb,0x88,0x8e,0xde,0x96,0xed,0x0b, \ -0x4c,0x5c,0x50,0xed,0x4a,0xe4,0xb7,0x41,0xd3,0x09,0xc6,0x40,0x35,0x00,0x51,0x02, \ -0x8a,0x63,0x4c,0x40,0x79,0x1d,0x3e,0x58,0xa2,0x1a,0xa4,0x1d,0x14,0x16,0xa5,0x0d, \ -0x95,0xbb,0xc6,0xb5,0x33,0x55,0x61,0xd8,0x61,0x9c,0x53,0xe3,0x21,0x59,0xae,0xb1, \ -0x1a,0x24,0x8c,0xb5,0xe3,0x6d,0xb4,0x60,0xd8,0x27,0xd1,0x49,0xb3,0x7f,0x4e,0x9d, \ -0xda,0x17,0x05,0xe1,0x11,0xc0,0x3e,0xcd,0x43,0xe4,0x89,0x9e,0x90,0x66,0x3e,0x04, \ -0x13,0xd5,0x04,0x78,0x28,0x19,0xc0,0xe2,0x38,0x87,0xc9,0x87,0x6c,0xed,0x7b,0x6a, \ -0xb6,0x77,0xd7,0x8d,0xbc,0x44,0x79,0x28,0x88,0x08,0x50,0x0c,0x2b,0xa2,0x41,0xf6, \ -0x5d,0x53,0x47,0xe5,0x29,0x8f,0x39,0x0a,0x7a,0x7d,0x48,0x00,0x59,0x00,0x3f,0xc8, \ -0xf0,0xf5,0xe8,0xf8,0xf5,0xdb,0xf6,0x79,0x85,0x5e,0x4b,0xd6,0xf6,0x86,0x8f,0xbb, \ -0xd6,0x3d,0xa5,0xcb,0x10,0x58,0x2f,0x08,0xf6,0x51,0x56,0x39,0xf9,0xbb,0x17,0xc9, \ -0x16,0x01,0xf9,0xee,0x4d,0x45,0x83,0x42,0x37,0x8e,0x34,0xe1,0x5f,0x19,0x7f,0xe2, \ -0xee,0x48,0xa7,0x0a,0x12,0x05,0xd0,0x66,0x1e,0xe0, \ +0150,0061,0061,0101,0131,0046,0123,0131,0353,0003,0246,0026,0000,0032,0337,0137, \ +0200,0160,0160,0167,0377,0377,0377,0377,0377,0377,0377,0377,0377,0377,0377,0140, \ +0117,0104,0330,0364,0000,0017,0276,0317,0200,0371,0024,0027,0274,0136,0166,0317, \ +0102,0233,0147,0103,0167,0226,0352,0106,0306,0274,0301,0245,0110,0121,0216,0347, \ +0050,0246,0270,0200,0352,0175,0366,0000,0137,0100,0012,0057,0155,0304,0134,0207, \ +0270,0257,0267,0335,0255,0271,0270,0056,0262,0133,0146,0225,0244,0106,0044,0335, \ +0306,0175,0354,0351,0314,0032,0250,0007,0335,0003,0257,0257,0162,0136,0275,0363, \ +0334,0115,0310,0167,0050,0012,0256,0215,0043,0257,0276,0371,0005,0005,0037,0171, \ +0272,0373,0274,0275,0274,0346,0367,0217,0173,0325,0075,0141,0251,0050,0324,0006, \ +0145,0313,0051,0357,0060,0244,0235,0151,0146,0325,0263,0154,0071,0071,0012,0166, \ +0301,0111,0120,0051,0051,0125,0172,0157,0275,0272,0202,0212,0003,0041,0257,0175, \ +0156,0356,0066,0315,0335,0065,0054,0363,0273,0217,0165,0201,0267,0031,0021,0041, \ +0047,0226,0246,0331,0063,0067,0205,0327,0301,0251,0220,0004,0000,0023,0100,0321, \ +0061,0060,0043,0040,0103,0124,0360,0106,0230,0231,0117,0124,0367,0251,0240,0322, \ +0170,0251,0345,0075,0032,0236,0203,0115,0002,0004,0004,0023,0104,0300,0024,0323, \ +0010,0325,0075,0065,0064,0323,0311,0033,0123,0107,0250,0304,0064,0032,0150,0320, \ +0001,0246,0201,0246,0042,0010,0042,0032,0236,0112,0171,0117,0124,0172,0232,0064, \ +0362,0047,0352,0217,0123,0100,0321,0352,0031,0075,0103,0103,0115,0001,0220,0014, \ +0200,0002,0115,0050,0202,0002,0004,0302,0011,0202,0232,0064,0323,0104,0236,0065, \ +0117,0152,0233,0051,0351,0351,0064,0201,0230,0221,0223,0106,0200,0000,0021,0050, \ +0200,0111,0264,0010,0311,0241,0115,0250,0332,0151,0061,0023,0365,0031,0117,0011, \ +0066,0120,0315,0115,0064,0000,0320,0014,0217,0120,0000,0221,0020,0200,0214,0201, \ +0000,0004,0144,0046,0232,0062,0142,0002,0247,0352,0172,0064,0123,0324,0365,0075, \ +0106,0172,0123,0322,0000,0075,0100,0045,0357,0077,0363,0364,0273,0314,0136,0157, \ +0244,0201,0174,0241,0373,0144,0065,0021,0077,0356,0127,0326,0062,0147,0342,0264, \ +0237,0362,0344,0372,0130,0326,0170,0044,0303,0332,0230,0175,0036,0225,0101,0176, \ +0046,0271,0244,0045,0237,0347,0013,0226,0164,0024,0177,0253,0127,0042,0326,0011, \ +0352,0372,0375,0123,0111,0262,0121,0051,0303,0211,0231,0042,0041,0347,0236,0067, \ +0324,0337,0366,0121,0240,0124,0377,0236,0026,0361,0371,0314,0342,0104,0347,0225, \ +0375,0357,0353,0372,0151,0134,0272,0247,0367,0161,0323,0047,0205,0241,0161,0374, \ +0375,0024,0112,0225,0327,0275,0133,0174,0325,0074,0216,0377,0357,0155,0062,0307, \ +0036,0307,0206,0306,0326,0270,0263,0306,0153,0264,0151,0377,0220,0276,0133,0256, \ +0317,0371,0265,0326,0332,0337,0356,0114,0235,0363,0327,0154,0165,0152,0361,0217, \ +0111,0223,0342,0017,0311,0361,0307,0207,0324,0002,0204,0173,0160,0006,0332,0257, \ +0360,0174,0377,0352,0134,0100,0376,0144,0337,0366,0100,0307,0250,0315,0005,0370, \ +0154,0251,0203,0364,0130,0223,0136,0137,0017,0343,0363,0067,0251,0154,0056,0150, \ +0007,0352,0105,0035,0023,0213,0264,0217,0371,0333,0174,0322,0365,0321,0374,0323, \ +0335,0307,0311,0132,0144,0377,0202,0272,0212,0357,0367,0134,0073,0203,0341,0153, \ +0377,0307,0171,0327,0376,0245,0233,0242,0221,0224,0165,0163,0271,0365,0370,0222, \ +0364,0205,0334,0035,0104,0322,0244,0014,0152,0371,0345,0163,0055,0263,0057,0165, \ +0362,0324,0232,0321,0274,0246,0157,0164,0231,0047,0146,0276,0132,0305,0302,0132, \ +0103,0043,0346,0122,0040,0104,0113,0011,0044,0223,0375,0366,0362,0375,0273,0057, \ +0276,0370,0204,0144,0101,0005,0047,0352,0364,0127,0331,0266,0202,0026,0023,0231, \ +0234,0172,0065,0116,0075,0374,0072,0327,0027,0120,0246,0170,0343,0357,0326,0143, \ +0221,0150,0332,0340,0344,0342,0035,0167,0064,0165,0054,0214,0252,0106,0344,0353, \ +0053,0244,0076,0121,0011,0250,0225,0010,0132,0025,0361,0021,0071,0260,0143,0155, \ +0206,0211,0313,0155,0235,0056,0165,0071,0230,0070,0053,0165,0215,0213,0065,0054, \ +0265,0111,0310,0014,0042,0332,0300,0160,0135,0153,0131,0161,0251,0027,0265,0240, \ +0262,0132,0305,0114,0332,0155,0277,0034,0126,0022,0045,0051,0171,0072,0265,0117, \ +0034,0362,0232,0002,0246,0235,0211,0005,0202,0224,0333,0231,0035,0335,0002,0116, \ +0030,0040,0003,0261,0314,0253,0326,0032,0225,0164,0332,0045,0072,0013,0076,0176, \ +0131,0345,0303,0130,0232,0111,0273,0171,0225,0203,0017,0024,0136,0131,0367,0043, \ +0052,0021,0000,0101,0003,0070,0372,0366,0362,0137,0305,0046,0013,0262,0314,0267, \ +0340,0222,0176,0101,0364,0024,0330,0307,0327,0207,0325,0046,0120,0145,0320,0332, \ +0135,0112,0031,0114,0066,0177,0031,0256,0374,0126,0246,0313,0071,0261,0366,0345, \ +0350,0330,0356,0007,0233,0140,0130,0025,0313,0313,0152,0204,0142,0212,0123,0207, \ +0077,0004,0323,0214,0356,0072,0237,0206,0266,0015,0145,0026,0034,0263,0007,0125, \ +0026,0161,0203,0240,0020,0120,0052,0321,0243,0170,0333,0330,0272,0305,0043,0074, \ +0135,0227,0005,0143,0254,0302,0326,0150,0167,0103,0246,0351,0206,0072,0255,0317, \ +0317,0351,0214,0141,0353,0252,0165,0142,0313,0377,0275,0022,0012,0052,0353,0266, \ +0062,0076,0311,0063,0157,0315,0074,0370,0206,0220,0102,0120,0305,0042,0021,0055, \ +0133,0134,0063,0304,0261,0320,0037,0133,0117,0061,0004,0216,0363,0061,0263,0237, \ +0023,0026,0011,0374,0331,0241,0052,0365,0235,0316,0066,0356,0302,0235,0131,0062, \ +0004,0064,0206,0105,0144,0122,0002,0113,0114,0014,0031,0202,0042,0004,0100,0322, \ +0111,0267,0362,0307,0011,0132,0334,0352,0024,0277,0231,0140,0307,0355,0214,0140, \ +0211,0163,0202,0306,0015,0131,0125,0071,0145,0246,0165,0175,0253,0017,0366,0155, \ +0110,0244,0257,0055,0345,0363,0326,0175,0032,0246,0117,0111,0005,0316,0163,0220, \ +0031,0344,0115,0344,0371,0130,0201,0257,0230,0353,0021,0353,0245,0054,0131,0071, \ +0216,0331,0023,0041,0233,0132,0366,0345,0112,0141,0307,0257,0054,0003,0250,0275, \ +0035,0354,0272,0335,0051,0364,0313,0126,0170,0314,0073,0030,0112,0256,0126,0363, \ +0312,0266,0364,0363,0303,0167,0313,0222,0330,0277,0357,0253,0170,0277,0266,0341, \ +0245,0071,0046,0321,0257,0070,0356,0016,0263,0136,0127,0042,0022,0131,0234,0232, \ +0266,0144,0033,0023,0337,0044,0351,0013,0266,0205,0064,0143,0373,0171,0276,0033, \ +0146,0020,0024,0107,0251,0000,0370,0301,0014,0143,0036,0203,0051,0350,0321,0057, \ +0374,0076,0214,0172,0272,0031,0176,0277,0176,0036,0352,0125,0041,0344,0163,0176, \ +0021,0353,0004,0000,0312,0051,0077,0155,0260,0071,0230,0013,0204,0106,0001,0300, \ +0364,0270,0021,0006,0021,0104,0204,0032,0010,0124,0010,0041,0117,0263,0117,0354, \ +0340,0242,0372,0164,0354,0363,0056,0306,0172,0233,0221,0340,0113,0023,0211,0247, \ +0336,0100,0324,0223,0315,0015,0126,0105,0376,0132,0327,0252,0245,0171,0143,0131, \ +0336,0175,0311,0063,0040,0154,0116,0301,0112,0100,0343,0143,0123,0377,0216,0206, \ +0023,0245,0217,0116,0326,0251,0152,0075,0367,0027,0144,0320,0302,0131,0302,0211, \ +0307,0234,0301,0111,0050,0144,0133,0354,0037,0070,0355,0174,0145,0121,0372,0017, \ +0330,0121,0206,0006,0073,0162,0347,0112,0122,0101,0024,0227,0240,0061,0020,0005, \ +0341,0265,0064,0357,0374,0015,0212,0117,0241,0302,0101,0252,0254,0011,0270,0222, \ +0304,0031,0135,0160,0242,0265,0120,0206,0212,0217,0332,0264,0065,0357,0227,0056, \ +0007,0161,0326,0252,0202,0306,0245,0011,0117,0253,0165,0253,0254,0041,0004,0202, \ +0100,0363,0273,0135,0327,0256,0133,0116,0064,0141,0356,0047,0303,0116,0064,0277, \ +0155,0054,0326,0032,0171,0307,0324,0066,0224,0321,0323,0305,0130,0067,0326,0131, \ +0264,0060,0374,0355,0303,0024,0264,0217,0274,0214,0302,0014,0174,0123,0172,0102, \ +0370,0151,0333,0132,0303,0316,0234,0255,0326,0053,0370,0250,0260,0243,0326,0374, \ +0175,0161,0220,0374,0165,0221,0322,0312,0163,0245,0061,0020,0125,0165,0126,0350, \ +0352,0032,0132,0235,0341,0235,0304,0035,0372,0135,0273,0213,0321,0006,0154,0247, \ +0330,0145,0264,0041,0211,0341,0371,0161,0235,0042,0135,0103,0141,0134,0015,0303, \ +0015,0146,0063,0325,0207,0170,0337,0057,0021,0160,0252,0131,0345,0054,0075,0170, \ +0074,0324,0164,0373,0367,0240,0144,0056,0235,0031,0237,0027,0335,0221,0255,0141, \ +0003,0324,0046,0136,0367,0175,0175,0255,0341,0040,0141,0003,0206,0366,0300,0136, \ +0143,0360,0334,0130,0274,0256,0223,0161,0106,0126,0137,0165,0016,0132,0120,0122, \ +0024,0163,0247,0206,0035,0255,0245,0031,0202,0232,0262,0274,0134,0363,0312,0154, \ +0352,0202,0265,0122,0241,0254,0361,0057,0051,0347,0062,0051,0035,0235,0357,0122, \ +0075,0207,0150,0132,0123,0346,0155,0017,0353,0056,0115,0214,0222,0030,0161,0313, \ +0115,0142,0045,0162,0054,0153,0060,0103,0273,0015,0330,0010,0307,0330,0314,0041, \ +0034,0370,0325,0024,0133,0311,0203,0016,0365,0346,0164,0233,0335,0151,0016,0231, \ +0226,0152,0002,0144,0317,0233,0331,0241,0174,0217,0143,0067,0243,0110,0144,0217, \ +0107,0064,0176,0254,0335,0100,0147,0340,0112,0016,0366,0360,0323,0272,0265,0373, \ +0163,0353,0317,0006,0272,0145,0324,0377,0200,0015,0216,0344,0010,0145,0003,0150, \ +0040,0135,0124,0261,0065,0027,0147,0354,0327,0043,0234,0174,0322,0247,0241,0127, \ +0240,0372,0032,0242,0274,0133,0117,0057,0303,0275,0072,0126,0231,0047,0237,0077, \ +0107,0122,0324,0202,0164,0326,0011,0017,0130,0343,0035,0014,0074,0013,0153,0134, \ +0031,0376,0332,0163,0353,0371,0064,0370,0236,0030,0367,0105,0316,0242,0153,0274, \ +0065,0054,0273,0100,0232,0376,0072,0375,0105,0073,0201,0076,0220,0023,0106,0012, \ +0216,0300,0121,0353,0031,0147,0351,0104,0245,0266,0046,0236,0347,0022,0331,0374, \ +0313,0163,0235,0225,0217,0317,0276,0213,0234,0300,0243,0132,0216,0233,0307,0263, \ +0073,0317,0034,0250,0377,0036,0055,0154,0253,0145,0253,0113,0137,0034,0143,0112, \ +0205,0165,0342,0013,0226,0162,0107,0232,0353,0353,0116,0275,0206,0376,0244,0020, \ +0061,0362,0257,0034,0372,0364,0144,0005,0222,0002,0034,0327,0064,0343,0264,0114, \ +0260,0041,0023,0321,0103,0031,0201,0110,0146,0332,0023,0016,0076,0154,0243,0225, \ +0325,0012,0323,0007,0137,0104,0257,0243,0113,0332,0267,0205,0170,0346,0370,0326, \ +0221,0130,0275,0254,0052,0363,0121,0267,0070,0207,0016,0127,0103,0335,0113,0250, \ +0242,0164,0060,0256,0134,0143,0173,0051,0245,0132,0263,0153,0372,0234,0007,0044, \ +0271,0336,0334,0064,0065,0161,0375,0106,0275,0076,0217,0231,0332,0204,0066,0144, \ +0001,0030,0101,0105,0355,0264,0007,0134,0134,0004,0066,0102,0005,0140,0262,0101, \ +0264,0003,0264,0103,0100,0064,0064,0137,0271,0230,0316,0276,0235,0336,0236,0334, \ +0327,0313,0327,0153,0257,0254,0333,0221,0262,0151,0131,0333,0077,0353,0127,0200, \ +0107,0370,0367,0113,0001,0203,0311,0310,0166,0051,0163,0031,0302,0200,0013,0022, \ +0237,0130,0046,0263,0254,0027,0214,0330,0246,0255,0304,0262,0267,0225,0356,0041, \ +0306,0047,0261,0017,0044,0141,0113,0124,0174,0341,0302,0123,0344,0256,0235,0132, \ +0015,0322,0126,0161,0024,0144,0152,0071,0323,0316,0151,0332,0251,0222,0027,0273, \ +0350,0101,0300,0347,0227,0347,0252,0175,0135,0175,0036,0207,0076,0314,0135,0221, \ +0177,0113,0201,0362,0064,0173,0325,0061,0175,0167,0063,0327,0067,0273,0126,0175, \ +0071,0301,0166,0377,0306,0144,0321,0061,0267,0357,0210,0023,0163,0017,0271,0314, \ +0302,0037,0005,0320,0164,0236,0337,0015,0014,0052,0060,0210,0224,0372,0263,0106, \ +0251,0073,0272,0225,0246,0075,0345,0344,0212,0114,0134,0351,0274,0144,0167,0046, \ +0054,0052,0177,0074,0137,0107,0072,0034,0363,0145,0072,0226,0314,0262,0056,0222, \ +0122,0277,0377,0373,0253,0026,0214,0226,0075,0023,0165,0310,0166,0107,0217,0202, \ +0344,0255,0262,0301,0164,0204,0236,0326,0314,0011,0201,0262,0251,0304,0332,0243, \ +0120,0221,0372,0247,0015,0065,0313,0273,0262,0036,0235,0176,0231,0307,0013,0153, \ +0307,0225,0340,0061,0236,0314,0322,0363,0257,0075,0230,0123,0056,0203,0001,0176, \ +0312,0200,0211,0032,0107,0114,0372,0051,0220,0333,0106,0231,0173,0320,0112,0107, \ +0371,0101,0040,0131,0054,0372,0225,0027,0252,0171,0330,0176,0161,0233,0221,0337, \ +0031,0136,0137,0327,0356,0143,0037,0322,0151,0003,0124,0217,0337,0303,0030,0237, \ +0036,0214,0174,0113,0043,0132,0063,0270,0155,0227,0325,0354,0303,0317,0336,0366, \ +0124,0077,0373,0177,0361,0303,0362,0345,0263,0317,0263,0062,0321,0374,0127,0213, \ +0112,0020,0051,0322,0230,0043,0020,0014,0355,0346,0347,0044,0005,0336,0010,0150, \ +0345,0165,0301,0043,0307,0031,0263,0061,0136,0075,0324,0055,0355,0145,0074,0312, \ +0117,0001,0064,0215,0244,0326,0260,0322,0201,0166,0074,0172,0110,0275,0003,0122, \ +0142,0176,0263,0104,0335,0241,0347,0361,0230,0034,0343,0316,0246,0300,0227,0141, \ +0356,0066,0337,0165,0320,0336,0073,0062,0170,0322,0124,0213,0136,0326,0334,0307, \ +0174,0106,0057,0354,0322,0056,0027,0251,0001,0150,0155,0107,0307,0033,0072,0142, \ +0143,0246,0236,0011,0233,0337,0111,0244,0250,0062,0164,0255,0235,0222,0053,0013, \ +0152,0340,0006,0041,0004,0207,0227,0267,0343,0270,0112,0254,0014,0020,0216,0105, \ +0210,0054,0354,0111,0220,0266,0346,0014,0104,0214,0017,0064,0060,0033,0172,0301, \ +0104,0261,0010,0253,0226,0357,0263,0273,0236,0065,0340,0226,0010,0037,0161,0045, \ +0030,0111,0106,0156,0226,0333,0361,0246,0024,0206,0133,0277,0107,0304,0364,0372, \ +0337,0115,0114,0053,0123,0366,0044,0345,0265,0204,0150,0257,0307,0310,0213,0221, \ +0265,0111,0060,0074,0362,0270,0363,0303,0373,0156,0070,0233,0137,0337,0001,0061, \ +0277,0034,0235,0040,0147,0135,0271,0362,0252,0362,0374,0223,0367,0046,0001,0341, \ +0145,0102,0101,0025,0120,0074,0120,0122,0120,0257,0327,0104,0175,0073,0260,0011, \ +0043,0202,0255,0205,0225,0014,0017,0232,0100,0156,0142,0175,0157,0236,0342,0150, \ +0032,0046,0064,0025,0204,0070,0056,0322,0306,0163,0054,0062,0225,0345,0336,0044, \ +0214,0100,0343,0220,0046,0137,0307,0345,0226,0206,0037,0273,0312,0354,0013,0046, \ +0316,0254,0040,0251,0034,0015,0204,0337,0271,0276,0111,0267,0110,0111,0002,0124, \ +0364,0343,0314,0072,0345,0130,0370,0066,0357,0365,0257,0337,0261,0071,0334,0147, \ +0003,0303,0245,0326,0334,0321,0205,0256,0246,0072,0060,0331,0105,0152,0020,0056, \ +0250,0033,0311,0015,0041,0170,0353,0302,0064,0113,0141,0027,0113,0101,0042,0351, \ +0327,0027,0144,0366,0221,0011,0166,0300,0065,0356,0026,0071,0152,0305,0115,0153, \ +0101,0360,0135,0312,0101,0327,0167,0041,0204,0171,0261,0315,0076,0331,0345,0012, \ +0103,0010,0320,0214,0144,0053,0153,0111,0133,0307,0130,0311,0061,0142,0206,0021, \ +0155,0125,0140,0050,0200,0273,0363,0041,0172,0045,0304,0371,0351,0027,0246,0272, \ +0016,0266,0322,0146,0276,0267,0074,0262,0357,0000,0321,0101,0043,0134,0306,0154, \ +0264,0253,0043,0022,0257,0122,0172,0027,0114,0264,0067,0115,0313,0132,0314,0244, \ +0171,0364,0214,0040,0161,0211,0102,0147,0324,0171,0137,0156,0300,0010,0364,0002, \ +0324,0232,0206,0342,0144,0134,0215,0131,0152,0355,0357,0370,0101,0275,0340,0161, \ +0362,0255,0042,0203,0154,0315,0167,0147,0037,0052,0126,0074,0062,0143,0313,0253, \ +0233,0156,0017,0106,0041,0017,0345,0001,0260,0173,0216,0004,0042,0130,0054,0330, \ +0114,0062,0022,0141,0001,0134,0336,0203,0376,0263,0007,0365,0037,0054,0376,0107, \ +0355,0305,0373,0106,0034,0330,0154,0315,0020,0002,0241,0305,0076,0335,0254,0312, \ +0177,0262,0016,0030,0175,0032,0334,0150,0131,0143,0206,0253,0067,0311,0127,0167, \ +0256,0021,0367,0276,0201,0240,0256,0330,0043,0162,0357,0231,0244,0123,0277,0211, \ +0323,0370,0047,0354,0354,0200,0036,0136,0011,0207,0173,0226,0031,0367,0253,0371, \ +0140,0340,0061,0237,0021,0235,0214,0171,0063,0022,0302,0330,0046,0302,0267,0153, \ +0200,0114,0347,0225,0345,0231,0356,0200,0367,0301,0112,0036,0207,0051,0010,0112, \ +0232,0100,0167,0246,0071,0244,0305,0043,0227,0053,0107,0336,0343,0020,0362,0167, \ +0044,0202,0171,0312,0212,0101,0357,0205,0007,0326,0126,0041,0307,0120,0164,0015, \ +0031,0150,0063,0152,0225,0205,0044,0262,0247,0056,0245,0312,0363,0060,0363,0261, \ +0333,0230,0260,0033,0214,0064,0125,0004,0031,0101,0202,0143,0116,0165,0132,0220, \ +0256,0061,0245,0263,0104,0220,0100,0046,0142,0110,0345,0245,0232,0143,0146,0014, \ +0336,0241,0150,0213,0003,0123,0133,0200,0364,0125,0062,0131,0241,0051,0026,0122, \ +0151,0133,0314,0146,0162,0145,0175,0253,0304,0324,0271,0000,0333,0066,0374,0322, \ +0072,0100,0033,0036,0155,0134,0224,0047,0067,0237,0106,0322,0362,0170,0116,0244, \ +0043,0222,0230,0255,0274,0174,0043,0137,0172,0340,0360,0052,0105,0017,0340,0307, \ +0227,0314,0241,0304,0135,0120,0321,0274,0265,0344,0264,0107,0160,0251,0343,0325, \ +0233,0166,0342,0161,0062,0225,0274,0016,0133,0050,0252,0305,0303,0132,0022,0300, \ +0146,0314,0266,0000,0275,0010,0141,0074,0347,0247,0122,0201,0371,0342,0276,0365, \ +0251,0317,0074,0127,0206,0227,0072,0235,0127,0050,0062,0052,0246,0023,0040,0364, \ +0027,0104,0337,0132,0341,0375,0144,0227,0201,0177,0327,0331,0361,0333,0246,0274, \ +0264,0043,0253,0042,0106,0306,0125,0353,0041,0004,0146,0211,0067,0050,0046,0246, \ +0045,0054,0065,0074,0052,0361,0077,0061,0300,0221,0103,0244,0226,0336,0217,0224, \ +0122,0157,0222,0267,0363,0111,0022,0327,0167,0075,0100,0137,0232,0244,0213,0010, \ +0021,0115,0325,0003,0216,0125,0233,0124,0150,0172,0002,0300,0255,0001,0233,0252, \ +0244,0176,0353,0305,0133,0335,0212,0064,0002,0010,0302,0234,0022,0135,0066,0005, \ +0041,0140,0260,0070,0320,0135,0012,0226,0004,0025,0152,0031,0302,0106,0327,0125, \ +0251,0264,0251,0166,0304,0273,0114,0224,0247,0024,0320,0026,0053,0026,0370,0346, \ +0045,0371,0063,0310,0346,0141,0153,0227,0207,0204,0214,0020,0104,0164,0315,0206, \ +0142,0024,0164,0125,0030,0004,0070,0126,0154,0346,0044,0113,0061,0033,0023,0041, \ +0260,0076,0312,0233,0073,0045,0303,0350,0202,0235,0122,0147,0215,0033,0142,0134, \ +0051,0173,0273,0057,0302,0243,0111,0235,0062,0107,0025,0013,0261,0234,0140,0007, \ +0271,0376,0274,0262,0064,0327,0153,0160,0256,0351,0110,0061,0050,0035,0052,0173, \ +0170,0337,0052,0340,0070,0306,0030,0322,0174,0105,0015,0332,0004,0373,0370,0336, \ +0044,0343,0161,0317,0116,0113,0333,0270,0303,0127,0115,0366,0315,0361,0103,0141, \ +0305,0041,0277,0330,0263,0307,0204,0122,0005,0276,0126,0134,0202,0076,0022,0337, \ +0350,0032,0000,0070,0276,0241,0207,0177,0142,0266,0164,0015,0042,0316,0116,0317, \ +0364,0050,0357,0315,0057,0032,0026,0241,0025,0351,0240,0015,0317,0041,0230,0336, \ +0310,0052,0110,0120,0175,0076,0356,0221,0355,0110,0002,0235,0307,0303,0147,0111, \ +0074,0373,0037,0024,0266,0272,0232,0331,0024,0371,0361,0024,0317,0034,0075,0227, \ +0342,0044,0111,0327,0326,0206,0061,0103,0024,0132,0021,0325,0346,0053,0244,0013, \ +0006,0243,0166,0034,0334,0160,0266,0120,0355,0164,0253,0046,0133,0346,0051,0373, \ +0140,0065,0262,0223,0330,0351,0266,0327,0153,0273,0155,0017,0150,0311,0200,0354, \ +0025,0042,0255,0243,0361,0051,0363,0202,0361,0125,0316,0143,0134,0206,0137,0212, \ +0213,0123,0155,0066,0263,0310,0330,0072,0270,0330,0055,0211,0154,0314,0003,0214, \ +0162,0262,0146,0365,0264,0324,0216,0321,0327,0204,0045,0357,0222,0031,0026,0231, \ +0317,0330,0326,0375,0252,0202,0053,0022,0207,0005,0042,0220,0316,0374,0126,0254, \ +0075,0176,0137,0056,0010,0042,0064,0300,0257,0151,0020,0306,0223,0375,0036,0121, \ +0030,0136,0242,0046,0245,0100,0320,0251,0035,0152,0307,0274,0025,0205,0034,0047, \ +0066,0117,0146,0133,0121,0226,0121,0200,0361,0124,0263,0255,0005,0245,0170,0326, \ +0364,0061,0341,0305,0167,0065,0004,0200,0223,0322,0221,0023,0161,0321,0052,0045, \ +0027,0261,0055,0322,0233,0365,0053,0163,0227,0063,0276,0117,0155,0046,0240,0305, \ +0106,0224,0211,0316,0277,0042,0271,0250,0203,0365,0212,0073,0040,0367,0267,0321, \ +0341,0211,0026,0347,0042,0256,0162,0005,0120,0006,0333,0136,0350,0147,0032,0067, \ +0155,0021,0374,0224,0216,0112,0120,0157,0307,0204,0154,0373,0344,0151,0020,0222, \ +0073,0013,0152,0043,0074,0251,0264,0067,0061,0052,0053,0351,0120,0136,0372,0225, \ +0310,0207,0061,0014,0005,0067,0153,0332,0024,0065,0367,0345,0306,0314,0242,0103, \ +0256,0140,0147,0200,0002,0206,0115,0207,0217,0167,0173,0236,0343,0054,0060,0043, \ +0374,0224,0175,0346,0140,0261,0104,0031,0176,0370,0016,0107,0264,0320,0221,0324, \ +0250,0274,0014,0174,0027,0076,0313,0157,0340,0245,0037,0071,0173,0365,0100,0052, \ +0071,0244,0051,0333,0344,0263,0364,0234,0167,0175,0046,0254,0100,0224,0071,0116, \ +0115,0202,0317,0233,0017,0112,0005,0072,0046,0362,0342,0343,0155,0013,0214,0366, \ +0316,0364,0303,0071,0003,0054,0335,0262,0314,0327,0271,0320,0064,0155,0352,0203, \ +0072,0133,0146,0032,0205,0002,0366,0131,0075,0071,0012,0071,0175,0144,0072,0351, \ +0224,0173,0123,0136,0073,0320,0125,0005,0055,0025,0345,0032,0316,0317,0131,0271, \ +0123,0103,0305,0056,0327,0242,0230,0002,0364,0012,0342,0176,0227,0052,0013,0132, \ +0114,0070,0301,0255,0313,0070,0302,0327,0361,0234,0005,0353,0026,0112,0373,0355, \ +0236,0107,0327,0220,0315,0267,0127,0043,0214,0036,0042,0253,0176,0003,0101,0045, \ +0135,0350,0054,0302,0301,0343,0221,0345,0252,0337,0207,0120,0305,0040,0163,0331, \ +0153,0335,0370,0132,0275,0252,0226,0323,0015,0214,0226,0031,0166,0050,0245,0064, \ +0313,0164,0332,0001,0272,0116,0374,0054,0054,0116,0230,0205,0265,0227,0301,0054, \ +0062,0174,0313,0165,0255,0306,0157,0230,0314,0070,0154,0373,0050,0062,0254,0214, \ +0327,0132,0353,0310,0261,0014,0330,0054,0003,0055,0361,0007,0041,0031,0016,0304, \ +0120,0027,0125,0110,0156,0331,0043,0137,0021,0071,0250,0271,0270,0344,0204,0111, \ +0047,0200,0354,0322,0144,0131,0025,0243,0203,0061,0261,0305,0205,0135,0127,0232, \ +0312,0207,0001,0131,0221,0042,0214,0264,0032,0111,0211,0063,0160,0227,0052,0326, \ +0324,0006,0110,0030,0172,0341,0112,0102,0114,0150,0025,0034,0033,0121,0152,0110, \ +0353,0352,0013,0141,0116,0314,0115,0342,0073,0315,0273,0071,0170,0314,0336,0025, \ +0363,0171,0047,0033,0251,0211,0031,0116,0067,0335,0240,0360,0030,0231,0072,0332, \ +0361,0237,0166,0374,0044,0204,0333,0075,0374,0370,0142,0124,0125,0151,0124,0361, \ +0310,0162,0310,0126,0324,0045,0255,0164,0336,0150,0210,0244,0175,0376,0176,0353, \ +0233,0214,0160,0346,0262,0153,0045,0060,0211,0235,0061,0030,0162,0202,0200,0120, \ +0045,0002,0225,0100,0327,0163,0021,0355,0125,0211,0146,0014,0012,0075,0054,0030, \ +0262,0306,0300,0130,0060,0304,0063,0102,0064,0012,0263,0055,0035,0257,0142,0332, \ +0252,0312,0250,0065,0126,0005,0274,0077,0105,0003,0347,0332,0064,0362,0331,0165, \ +0225,0272,0340,0346,0017,0303,0177,0147,0256,0332,0316,0144,0051,0071,0142,0341, \ +0334,0122,0055,0200,0036,0336,0166,0341,0351,0301,0255,0174,0366,0341,0200,0275, \ +0127,0250,0365,0056,0074,0326,0303,0260,0142,0336,0050,0324,0324,0255,0214,0124, \ +0066,0102,0061,0130,0160,0013,0140,0357,0136,0167,0334,0370,0372,0317,0013,0112, \ +0253,0105,0113,0121,0003,0224,0300,0223,0041,0045,0221,0304,0103,0205,0235,0331, \ +0163,0174,0015,0036,0172,0351,0250,0372,0206,0171,0322,0327,0132,0120,0331,0312, \ +0307,0163,0120,0012,0032,0146,0062,0067,0026,0023,0117,0214,0120,0177,0066,0113, \ +0224,0341,0244,0125,0057,0301,0134,0232,0075,0032,0203,0245,0246,0203,0163,0043, \ +0351,0021,0125,0026,0003,0032,0213,0125,0266,0214,0357,0026,0120,0345,0050,0122, \ +0007,0052,0362,0313,0246,0303,0206,0126,0020,0373,0265,0107,0270,0112,0354,0372, \ +0223,0225,0163,0267,0164,0207,0315,0172,0102,0130,0363,0264,0147,0212,0213,0032, \ +0323,0070,0315,0306,0331,0230,0026,0273,0045,0006,0233,0300,0047,0324,0242,0274, \ +0071,0003,0325,0062,0111,0125,0146,0315,0243,0113,0165,0203,0253,0242,0165,0270, \ +0250,0147,0067,0032,0332,0272,0362,0154,0370,0216,0032,0275,0367,0116,0153,0244, \ +0005,0025,0351,0365,0157,0072,0223,0124,0034,0067,0261,0043,0162,0061,0361,0226, \ +0024,0257,0036,0130,0250,0332,0057,0137,0037,0036,0047,0044,0017,0246,0315,0320, \ +0266,0303,0216,0030,0244,0027,0273,0213,0204,0025,0142,0045,0266,0073,0257,0075, \ +0261,0246,0305,0113,0315,0355,0361,0124,0305,0042,0103,0301,0370,0160,0010,0335, \ +0253,0264,0161,0051,0373,0377,0175,0264,0101,0224,0212,0277,0201,0043,0032,0361, \ +0034,0305,0020,0344,0202,0201,0102,0014,0070,0300,0277,0207,0070,0315,0305,0205, \ +0024,0063,0072,0370,0150,0202,0026,0326,0370,0171,0176,0254,0253,0360,0006,0247, \ +0266,0035,0160,0373,0153,0140,0370,0054,0155,0357,0357,0244,0136,0074,0205,0274, \ +0202,0101,0150,0214,0272,0311,0054,0132,0304,0170,0033,0011,0120,0117,0165,0135, \ +0142,0105,0105,0373,0260,0347,0073,0075,0045,0216,0114,0110,0325,0002,0364,0134, \ +0236,0032,0165,0043,0027,0141,0115,0002,0327,0113,0112,0322,0003,0122,0046,0043, \ +0231,0230,0335,0204,0071,0314,0103,0005,0312,0330,0311,0160,0231,0337,0206,0213, \ +0223,0046,0162,0256,0063,0243,0110,0254,0142,0274,0327,0167,0306,0170,0375,0347, \ +0162,0074,0075,0112,0316,0003,0335,0100,0304,0331,0250,0176,0044,0162,0150,0257, \ +0073,0310,0356,0063,0357,0107,0225,0174,0334,0057,0167,0026,0342,0176,0105,0054, \ +0100,0156,0167,0152,0357,0072,0342,0104,0110,0372,0161,0024,0006,0363,0172,0170, \ +0307,0106,0033,0362,0120,0363,0152,0075,0012,0161,0325,0123,0241,0030,0104,0024, \ +0035,0160,0044,0215,0247,0254,0250,0144,0131,0312,0275,0060,0242,0002,0172,0002, \ +0263,0074,0031,0273,0242,0013,0017,0353,0367,0064,0271,0347,0315,0364,0345,0034, \ +0150,0251,0253,0270,0236,0161,0102,0030,0321,0106,0312,0302,0207,0303,0017,0046, \ +0170,0116,0121,0054,0223,0271,0306,0117,0374,0275,0111,0245,0350,0336,0041,0264, \ +0030,0326,0311,0202,0274,0155,0005,0306,0232,0172,0125,0263,0042,0015,0364,0015, \ +0142,0067,0102,0236,0235,0062,0174,0341,0030,0220,0116,0211,0345,0236,0102,0014, \ +0137,0131,0016,0220,0337,0153,0033,0215,0361,0227,0317,0356,0146,0150,0341,0144, \ +0367,0024,0150,0247,0055,0027,0000,0241,0011,0246,0113,0234,0162,0142,0063,0330, \ +0011,0215,0170,0362,0176,0330,0247,0231,0166,0122,0012,0016,0031,0342,0343,0130, \ +0322,0265,0252,0317,0170,0327,0257,0224,0201,0100,0160,0270,0204,0155,0275,0336, \ +0321,0365,0163,0045,0055,0245,0155,0335,0152,0155,0246,0101,0302,0301,0210,0177, \ +0162,0034,0212,0375,0176,0134,0175,0022,0251,0100,0175,0276,0060,0143,0372,0044, \ +0204,0202,0367,0222,0101,0222,0072,0250,0311,0360,0116,0156,0175,0035,0172,0356, \ +0172,0117,0050,0314,0054,0035,0110,0336,0155,0166,0216,0050,0270,0020,0304,0301, \ +0130,0025,0200,0040,0110,0222,0356,0312,0255,0042,0133,0244,0370,0156,0307,0075, \ +0132,0254,0060,0050,0212,0103,0037,0372,0120,0127,0317,0215,0026,0300,0043,0044, \ +0212,0165,0144,0250,0101,0144,0012,0065,0040,0050,0110,0246,0066,0167,0177,0046, \ +0070,0163,0065,0010,0151,0041,0002,0047,0302,0073,0356,0216,0106,0245,0046,0115, \ +0060,0131,0172,0323,0041,0172,0257,0074,0122,0371,0274,0135,0272,0017,0023,0355, \ +0352,0056,0150,0272,0277,0156,0315,0074,0275,0102,0326,0207,0244,0217,0360,0054, \ +0345,0262,0073,0123,0373,0224,0360,0060,0326,0115,0323,0370,0062,0015,0301,0022, \ +0143,0314,0336,0150,0345,0356,0021,0157,0216,0035,0206,0250,0316,0024,0051,0042, \ +0115,0025,0147,0010,0005,0023,0332,0132,0116,0242,0254,0266,0226,0057,0024,0217, \ +0144,0122,0363,0071,0042,0227,0045,0320,0310,0220,0046,0371,0372,0210,0075,0011, \ +0045,0054,0352,0366,0353,0105,0330,0023,0111,0207,0120,0226,0040,0206,0115,0320, \ +0110,0214,0257,0367,0045,0350,0307,0152,0100,0116,0161,0327,0313,0176,0056,0040, \ +0367,0220,0000,0310,0210,0175,0010,0370,0162,0117,0362,0340,0017,0270,0044,0206, \ +0276,0040,0141,0376,0264,0213,0352,0136,0312,0074,0171,0273,0160,0014,0073,0242, \ +0204,0277,0212,0140,0313,0013,0305,0300,0377,0112,0200,0214,0245,0346,0043,0116, \ +0316,0072,0266,0170,0172,0172,0067,0236,0045,0133,0027,0145,0046,0025,0035,0202, \ +0134,0006,0061,0335,0322,0257,0241,0311,0023,0244,0045,0006,0005,0243,0172,0306, \ +0370,0065,0011,0233,0103,0224,0074,0143,0014,0103,0106,0367,0211,0055,0244,0320, \ +0022,0017,0363,0135,0021,0371,0164,0163,0126,0347,0215,0125,0123,0241,0113,0164, \ +0242,0143,0065,0343,0022,0203,0163,0216,0125,0051,0124,0313,0370,0241,0065,0040, \ +0054,0036,0256,0376,0316,0330,0363,0152,0031,0150,0070,0040,0314,0353,0300,0073, \ +0135,0027,0074,0342,0201,0236,0036,0061,0130,0370,0015,0137,0316,0074,0072,0105, \ +0041,0264,0214,0276,0340,0070,0243,0241,0365,0351,0156,0352,0343,0025,0340,0352, \ +0032,0225,0371,0115,0142,0353,0225,0365,0165,0143,0142,0150,0044,0227,0213,0267, \ +0121,0021,0004,0015,0300,0033,0124,0244,0021,0373,0207,0225,0046,0155,0305,0253, \ +0012,0330,0333,0014,0010,0050,0246,0027,0024,0261,0302,0027,0027,0011,0050,0110, \ +0121,0220,0076,0037,0264,0173,0037,0351,0167,0325,0374,0276,0130,0226,0133,0031, \ +0221,0302,0012,0071,0150,0151,0360,0211,0225,0366,0304,0116,0056,0122,0012,0270, \ +0330,0270,0243,0054,0202,0240,0342,0312,0126,0121,0120,0210,0061,0264,0375,0177, \ +0367,0262,0307,0356,0315,0064,0141,0266,0056,0073,0313,0121,0110,0070,0241,0140, \ +0202,0252,0230,0262,0212,0242,0254,0127,0157,0013,0003,0020,0206,0203,0132,0157, \ +0150,0230,0201,0315,0320,0146,0041,0021,0031,0123,0227,0317,0364,0175,0142,0375, \ +0337,0277,0171,0000,0332,0047,0022,0255,0024,0020,0047,0010,0226,0022,0060,0127, \ +0003,0007,0231,0114,0006,0157,0345,0304,0374,0132,0323,0044,0027,0271,0256,0007, \ +0072,0162,0322,0216,0166,0030,0001,0251,0202,0303,0153,0050,0261,0305,0265,0015, \ +0167,0277,0251,0066,0124,0357,0277,0357,0336,0114,0256,0356,0141,0211,0037,0327, \ +0102,0145,0310,0260,0031,0123,0134,0127,0277,0134,0046,0012,0212,0221,0030,0103, \ +0104,0251,0106,0062,0303,0364,0346,0346,0235,0332,0147,0016,0110,0050,0061,0121, \ +0021,0361,0173,0064,0317,0233,0253,0334,0200,0031,0115,0127,0242,0120,0125,0005, \ +0141,0213,0246,0056,0326,0300,0314,0265,0137,0275,0050,0256,0017,0063,0005,0307, \ +0176,0334,0016,0057,0314,0070,0347,0016,0361,0055,0131,0206,0004,0014,0151,0246, \ +0311,0306,0124,0252,0252,0311,0162,0222,0047,0246,0067,0122,0022,0013,0025,0210, \ +0014,0106,0300,0335,0122,0025,0063,0103,0157,0015,0164,0111,0313,0114,0033,0060, \ +0222,0233,0036,0254,0103,0000,0214,0137,0236,0320,0307,0351,0246,0114,0102,0042, \ +0042,0250,0272,0224,0351,0203,0060,0173,0171,0335,0040,0032,0266,0041,0150,0151, \ +0207,0261,0226,0102,0161,0162,0307,0106,0114,0307,0004,0017,0066,0026,0145,0255, \ +0222,0221,0327,0110,0244,0304,0060,0146,0021,0335,0363,0343,0345,0164,0375,0323, \ +0030,0113,0176,0174,0243,0067,0314,0075,0303,0074,0230,0042,0001,0156,0046,0376, \ +0336,0246,0057,0366,0302,0265,0100,0152,0074,0352,0150,0340,0075,0025,0110,0277, \ +0012,0133,0104,0267,0313,0327,0216,0367,0101,0321,0235,0342,0173,0061,0324,0306, \ +0120,0201,0037,0353,0223,0365,0014,0017,0360,0141,0052,0050,0021,0267,0355,0305, \ +0136,0250,0160,0277,0007,0054,0033,0155,0263,0340,0320,0172,0073,0353,0005,0255, \ +0375,0173,0363,0355,0032,0133,0323,0073,0364,0374,0034,0243,0117,0223,0046,0214, \ +0176,0061,0201,0032,0203,0211,0037,0130,0000,0066,0215,0200,0037,0126,0006,0363, \ +0375,0225,0043,0253,0323,0345,0371,0343,0107,0164,0075,0103,0025,0043,0107,0227, \ +0317,0066,0076,0125,0240,0066,0344,0032,0061,0054,0307,0040,0236,0076,0113,0323, \ +0000,0060,0173,0233,0336,0113,0140,0006,0361,0262,0014,0363,0006,0230,0355,0174, \ +0117,0015,0227,0322,0103,0236,0230,0012,0003,0346,0333,0106,0151,0164,0212,0221, \ +0243,0270,0037,0220,0020,0160,0062,0261,0077,0224,0076,0153,0044,0003,0043,0122, \ +0003,0201,0003,0363,0250,0123,0375,0357,0330,0305,0370,0227,0207,0277,0131,0320, \ +0365,0352,0146,0061,0172,0130,0244,0207,0007,0321,0263,0344,0253,0366,0125,0154, \ +0276,0227,0224,0376,0374,0214,0254,0063,0316,0017,0352,0312,0067,0375,0014,0231, \ +0073,0322,0352,0276,0124,0376,0220,0264,0147,0377,0237,0123,0106,0014,0056,0146, \ +0044,0301,0265,0152,0161,0213,0116,0347,0042,0071,0244,0054,0021,0301,0135,0374, \ +0116,0322,0356,0112,0354,0325,0313,0366,0047,0361,0142,0211,0042,0254,0101,0102, \ +0354,0040,0055,0004,0056,0136,0046,0042,0240,0304,0042,0230,0051,0242,0275,0001, \ +0255,0016,0260,0037,0145,0166,0116,0245,0041,0250,0173,0321,0344,0262,0031,0020, \ +0336,0260,0251,0053,0270,0144,0372,0177,0112,0336,0324,0363,0344,0310,0336,0171, \ +0153,0331,0304,0154,0274,0253,0173,0004,0312,0371,0116,0015,0066,0337,0265,0234, \ +0153,0357,0105,0302,0020,0063,0040,0101,0352,0325,0107,0354,0374,0337,0135,0106, \ +0232,0320,0134,0215,0321,0231,0202,0101,0055,0166,0154,0011,0035,0244,0047,0366, \ +0144,0002,0237,0131,0373,0002,0117,0077,0141,0347,0056,0004,0262,0310,0110,0351, \ +0111,0343,0033,0210,0035,0100,0215,0032,0226,0145,0321,0057,0177,0164,0270,0316, \ +0150,0373,0021,0347,0317,0357,0144,0176,0102,0223,0315,0065,0105,0337,0130,0361, \ +0171,0172,0264,0255,0274,0035,0360,0360,0105,0016,0104,0137,0351,0010,0144,0324, \ +0127,0223,0337,0127,0346,0073,0151,0023,0123,0022,0146,0224,0114,0103,0221,0172, \ +0377,0217,0347,0212,0207,0070,0233,0323,0355,0326,0006,0033,0075,0124,0030,0373, \ +0053,0064,0031,0031,0004,0202,0305,0207,0137,0302,0317,0017,0050,0036,0320,0101, \ +0371,0234,0366,0362,0264,0132,0055,0373,0375,0177,0057,0271,0227,0220,0007,0304, \ +0214,0164,0200,0372,0220,0214,0137,0271,0012,0230,0021,0164,0300,0370,0275,0315, \ +0237,0256,0304,0264,0213,0254,0205,0327,0172,0317,0257,0323,0017,0007,0226,0362, \ +0143,0014,0352,0026,0272,0343,0266,0120,0233,0114,0221,0152,0260,0266,0107,0332, \ +0110,0144,0150,0012,0030,0333,0000,0224,0304,0110,0066,0066,0312,0246,0130,0376, \ +0032,0107,0315,0057,0136,0102,0062,0070,0220,0152,0114,0207,0340,0377,0324,0111, \ +0250,0230,0202,0303,0317,0154,0225,0070,0334,0271,0376,0276,0276,0047,0373,0232, \ +0006,0325,0032,0101,0016,0077,0243,0017,0253,0347,0373,0052,0220,0364,0057,0221, \ +0320,0224,0165,0213,0336,0331,0146,0313,0000,0053,0070,0307,0370,0245,0162,0065, \ +0023,0342,0371,0353,0124,0065,0230,0047,0020,0210,0153,0276,0021,0273,0302,0062, \ +0257,0135,0037,0373,0170,0326,0276,0256,0047,0023,0315,0264,0035,0254,0041,0102, \ +0034,0100,0066,0300,0153,0342,0364,0014,0010,0343,0221,0234,0144,0010,0065,0000, \ +0020,0140,0171,0371,0376,0221,0160,0024,0340,0037,0017,0121,0221,0071,0132,0223, \ +0250,0335,0103,0007,0124,0042,0032,0141,0104,0156,0047,0054,0113,0266,0157,0117, \ +0137,0072,0320,0201,0005,0332,0225,0030,0240,0210,0212,0214,0030,0301,0042,0054, \ +0131,0020,0104,0147,0372,0357,0353,0277,0212,0047,0265,0302,0207,0146,0165,0064, \ +0174,0351,0133,0106,0364,0374,0255,0275,0310,0375,0121,0111,0010,0332,0027,0377, \ +0075,0310,0237,0145,0274,0303,0317,0173,0244,0211,0337,0017,0024,0132,0066,0007, \ +0275,0050,0102,0035,0054,0054,0266,0361,0064,0240,0120,0107,0133,0105,0030,0241, \ +0242,0314,0131,0246,0257,0147,0271,0152,0204,0147,0126,0067,0103,0001,0142,0035, \ +0056,0133,0257,0204,0236,0351,0352,0363,0017,0151,0354,0012,0117,0154,0043,0041, \ +0263,0210,0303,0012,0212,0042,0302,0021,0222,0106,0050,0222,0046,0041,0302,0007, \ +0325,0145,0205,0123,0247,0111,0247,0302,0173,0272,0212,0024,0252,0020,0367,0034, \ +0055,0371,0313,0243,0271,0035,0304,0130,0124,0206,0003,0244,0031,0211,0040,0162, \ +0042,0162,0002,0220,0101,0206,0202,0026,0115,0244,0143,0035,0212,0114,0104,0175, \ +0053,0273,0004,0016,0225,0042,0104,0113,0010,0206,0122,0120,0342,0360,0113,0311, \ +0316,0011,0307,0112,0140,0141,0224,0246,0051,0206,0162,0111,0123,0043,0113,0102, \ +0137,0036,0363,0374,0357,0314,0025,0172,0010,0113,0377,0143,0017,0044,0024,0204, \ +0107,0304,0225,0013,0026,0030,0123,0343,0202,0230,0024,0321,0155,0112,0336,0054, \ +0155,0055,0201,0273,0111,0015,0164,0273,0150,0140,0261,0354,0225,0016,0051,0312, \ +0126,0241,0051,0043,0133,0070,0050,0212,0265,0106,0255,0105,0113,0222,0106,0313, \ +0203,0223,0314,0326,0341,0135,0070,0043,0105,0244,0027,0002,0240,0304,0213,0130, \ +0371,0334,0032,0007,0244,0072,0343,0266,0175,0023,0313,0216,0131,0255,0314,0066, \ +0151,0004,0246,0107,0341,0012,0243,0135,0114,0045,0334,0022,0107,0144,0027,0223, \ +0367,0314,0141,0174,0010,0015,0161,0203,0223,0020,0126,0260,0242,0125,0355,0361, \ +0250,0167,0237,0001,0147,0152,0356,0007,0006,0023,0046,0140,0052,0337,0237,0264, \ +0370,0366,0322,0176,0006,0240,0050,0124,0016,0234,0230,0103,0354,0255,0363,0244, \ +0326,0124,0155,0076,0374,0220,0360,0305,0323,0020,0244,0111,0323,0062,0250,0007, \ +0213,0371,0255,0216,0205,0074,0123,0126,0100,0302,0111,0356,0156,0061,0217,0026, \ +0120,0356,0172,0270,0321,0157,0034,0115,0031,0154,0066,0026,0111,0053,0230,0202, \ +0257,0321,0000,0113,0005,0057,0225,0336,0043,0174,0150,0175,0303,0321,0207,0003, \ +0113,0221,0063,0164,0056,0223,0104,0127,0251,0162,0053,0331,0011,0103,0330,0330, \ +0366,0014,0022,0203,0204,0103,0051,0235,0035,0171,0215,0250,0211,0213,0041,0101, \ +0225,0236,0157,0054,0323,0077,0350,0230,0303,0337,0162,0140,0102,0054,0200,0243, \ +0246,0347,0224,0003,0331,0244,0356,0013,0267,0273,0143,0154,0026,0065,0031,0342, \ +0233,0111,0070,0006,0107,0100,0211,0045,0233,0164,0140,0101,0363,0325,0035,0055, \ +0066,0223,0103,0116,0234,0203,0210,0262,0067,0114,0333,0337,0025,0016,0020,0221, \ +0165,0025,0357,0075,0126,0041,0240,0063,0171,0076,0215,0024,0141,0347,0200,0156, \ +0274,0367,0155,0174,0152,0031,0026,0037,0112,0243,0367,0015,0030,0304,0027,0110, \ +0007,0353,0045,0014,0076,0376,0306,0370,0214,0314,0017,0240,0365,0330,0120,0277, \ +0266,0022,0345,0340,0200,0102,0366,0155,0005,0166,0175,0316,0027,0117,0110,0074, \ +0222,0013,0067,0117,0357,0122,0002,0342,0303,0357,0276,0125,0367,0215,0231,0241, \ +0264,0230,0040,0161,0007,0013,0316,0237,0144,0174,0154,0170,0115,0270,0240,0133, \ +0223,0102,0256,0240,0345,0277,0277,0166,0230,0020,0036,0255,0046,0023,0255,0202, \ +0373,0156,0240,0205,0147,0161,0201,0310,0377,0233,0061,0313,0245,0237,0232,0143, \ +0333,0013,0222,0050,0013,0234,0215,0046,0201,0334,0157,0014,0164,0146,0023,0316, \ +0365,0066,0003,0147,0146,0350,0155,0111,0132,0261,0312,0012,0035,0326,0165,0254, \ +0127,0226,0272,0040,0356,0105,0352,0005,0342,0011,0134,0304,0206,0324,0221,0015, \ +0021,0164,0104,0036,0077,0025,0315,0130,0235,0145,0032,0021,0025,0272,0003,0174, \ +0121,0207,0324,0174,0376,0105,0200,0250,0143,0223,0056,0141,0116,0212,0202,0200, \ +0356,0316,0250,0271,0025,0161,0300,0217,0177,0037,0256,0253,0117,0063,0014,0070, \ +0247,0242,0101,0105,0202,0250,0177,0215,0242,0044,0077,0247,0303,0204,0341,0117, \ +0137,0360,0236,0311,0217,0253,0302,0011,0237,0050,0237,0234,0121,0034,0324,0300, \ +0170,0174,0146,0224,0054,0014,0351,0364,0245,0005,0360,0154,0352,0006,0323,0001, \ +0203,0134,0356,0032,0175,0066,0131,0376,0076,0050,0230,0142,0077,0166,0310,0114, \ +0300,0203,0307,0317,0063,0262,0250,0331,0137,0142,0271,0117,0316,0067,0072,0166, \ +0373,0247,0270,0210,0300,0065,0376,0312,0030,0023,0310,0327,0272,0076,0012,0033, \ +0105,0276,0105,0017,0027,0016,0043,0206,0127,0305,0212,0032,0026,0340,0106,0153, \ +0325,0300,0040,0354,0223,0361,0132,0006,0210,0306,0103,0224,0322,0234,0022,0277, \ +0125,0341,0075,0162,0327,0143,0246,0077,0051,0305,0336,0236,0251,0137,0125,0057, \ +0235,0346,0034,0106,0144,0020,0276,0202,0112,0156,0251,0062,0322,0014,0023,0113, \ +0374,0144,0040,0116,0350,0125,0075,0305,0034,0002,0007,0323,0161,0130,0033,0152, \ +0234,0071,0212,0246,0047,0245,0351,0153,0331,0015,0361,0174,0271,0371,0211,0127, \ +0372,0274,0347,0143,0050,0356,0271,0066,0162,0241,0320,0041,0260,0272,0320,0177, \ +0323,0164,0064,0164,0150,0166,0172,0375,0047,0345,0343,0317,0303,0063,0326,0103, \ +0005,0027,0206,0330,0060,0042,0153,0251,0266,0055,0312,0067,0060,0175,0374,0317, \ +0037,0112,0154,0007,0031,0101,0204,0040,0201,0224,0300,0300,0277,0171,0223,0327, \ +0237,0000,0016,0044,0127,0125,0246,0060,0327,0353,0046,0127,0162,0127,0300,0026, \ +0006,0325,0142,0020,0353,0342,0111,0115,0274,0350,0026,0354,0067,0033,0245,0251, \ +0012,0006,0365,0324,0147,0014,0317,0145,0231,0162,0010,0372,0171,0100,0356,0210, \ +0150,0135,0176,0376,0230,0024,0147,0071,0154,0247,0240,0334,0134,0250,0114,0025, \ +0013,0135,0156,0021,0175,0212,0024,0173,0242,0115,0375,0270,0034,0334,0165,0115, \ +0266,0221,0240,0327,0324,0073,0215,0175,0253,0221,0104,0173,0011,0104,0045,0321, \ +0204,0167,0105,0251,0133,0323,0166,0333,0123,0352,0222,0322,0213,0247,0356,0241, \ +0260,0263,0230,0032,0211,0240,0215,0102,0043,0327,0231,0132,0227,0153,0067,0020, \ +0020,0254,0035,0343,0312,0147,0107,0125,0334,0072,0116,0073,0036,0210,0232,0045, \ +0011,0043,0306,0062,0260,0121,0144,0104,0104,0021,0001,0104,0212,0252,0002,0101, \ +0166,0057,0055,0011,0121,0002,0134,0241,0355,0172,0363,0061,0022,0230,0227,0264, \ +0307,0303,0122,0314,0161,0051,0134,0113,0041,0243,0045,0251,0165,0124,0322,0314, \ +0141,0276,0053,0203,0372,0030,0363,0012,0233,0005,0200,0076,0313,0320,0147,0326, \ +0256,0015,0357,0227,0206,0056,0115,0113,0002,0151,0145,0046,0303,0203,0020,0007, \ +0222,0003,0055,0340,0213,0326,0144,0351,0200,0141,0050,0204,0131,0241,0131,0040, \ +0076,0221,0356,0106,0045,0321,0164,0332,0010,0244,0352,0235,0022,0243,0101,0174, \ +0245,0010,0072,0134,0151,0246,0053,0063,0174,0053,0212,0341,0117,0361,0322,0342, \ +0352,0044,0327,0324,0036,0110,0050,0040,0220,0125,0021,0042,0052,0012,0063,0210, \ +0062,0254,0300,0205,0221,0217,0236,0074,0256,0346,0030,0053,0067,0043,0225,0074, \ +0273,0033,0312,0233,0240,0147,0374,0206,0274,0010,0031,0106,0034,0124,0144,0243, \ +0252,0242,0052,0343,0365,0074,0151,0137,0056,0035,0207,0161,0323,0207,0213,0172, \ +0276,0170,0274,0323,0254,0211,0336,0135,0305,0117,0176,0243,0312,0224,0051,0155, \ +0040,0166,0100,0363,0157,0012,0372,0004,0360,0363,0311,0304,0142,0017,0201,0357, \ +0101,0102,0324,0234,0137,0053,0172,0350,0060,0232,0030,0240,0167,0365,0340,0377, \ +0035,0103,0006,0223,0152,0124,0344,0302,0323,0027,0350,0063,0016,0034,0221,0176, \ +0035,0051,0204,0303,0101,0261,0157,0333,0266,0377,0236,0232,0237,0351,0277,0003, \ +0370,0306,0205,0123,0154,0361,0312,0024,0050,0161,0262,0102,0032,0026,0273,0374, \ +0033,0217,0207,0145,0204,0340,0167,0135,0361,0304,0023,0035,0360,0076,0143,0073, \ +0032,0212,0202,0124,0002,0241,0077,0352,0310,0124,0130,0050,0105,0014,0014,0012, \ +0310,0244,0376,0111,0053,0026,0043,0202,0244,0040,0132,0136,0266,0070,0371,0364, \ +0311,0373,0373,0127,0141,0222,0310,0173,0060,0240,0206,0367,0270,0222,0220,0102, \ +0133,0267,0021,0150,0065,0060,0311,0354,0040,0346,0275,0306,0164,0256,0034,0227, \ +0153,0340,0026,0201,0062,0230,0345,0025,0240,0003,0041,0157,0217,0000,0110,0333, \ +0110,0065,0314,0104,0204,0234,0037,0106,0323,0034,0364,0250,0164,0010,0040,0350, \ +0101,0200,0160,0066,0034,0334,0315,0267,0107,0146,0105,0350,0131,0340,0110,0156, \ +0315,0215,0200,0020,0110,0037,0035,0250,0316,0363,0272,0157,0102,0236,0106,0164, \ +0276,0147,0155,0022,0106,0126,0217,0121,0053,0061,0006,0342,0247,0026,0147,0150, \ +0351,0366,0307,0054,0144,0072,0262,0351,0133,0120,0323,0165,0135,0024,0064,0250, \ +0151,0163,0266,0321,0142,0061,0303,0010,0003,0016,0337,0361,0220,0277,0263,0046, \ +0062,0032,0233,0266,0221,0347,0207,0375,0241,0144,0036,0273,0151,0212,0354,0006, \ +0245,0124,0352,0110,0040,0017,0243,0264,0205,0277,0344,0265,0046,0312,0041,0326, \ +0065,0073,0155,0252,0304,0220,0250,0245,0073,0264,0075,0204,0064,0117,0355,0372, \ +0375,0106,0367,0203,0251,0134,0232,0211,0016,0022,0017,0321,0226,0022,0061,0030, \ +0106,0047,0132,0272,0151,0174,0366,0263,0103,0151,0142,0344,0134,0006,0003,0042, \ +0011,0374,0155,0130,0242,0204,0367,0315,0357,0057,0206,0057,0320,0160,0104,0003, \ +0011,0313,0142,0143,0361,0377,0136,0373,0026,0347,0373,0375,0146,0134,0120,0143, \ +0346,0133,0314,0013,0340,0175,0350,0057,0015,0171,0277,0077,0376,0304,0160,0270, \ +0054,0033,0061,0337,0250,0056,0275,0071,0234,0260,0161,0331,0345,0211,0243,0076, \ +0341,0021,0130,0054,0143,0101,0243,0042,0305,0140,0300,0250,0153,0046,0045,0110, \ +0061,0121,0025,0221,0124,0004,0100,0130,0305,0117,0357,0145,0213,0046,0214,0261, \ +0125,0026,0013,0004,0120,0142,0050,0242,0214,0025,0101,0101,0210,0050,0240,0146, \ +0312,0052,0042,0261,0223,0101,0254,0313,0131,0006,0057,0220,0061,0241,0105,0315, \ +0374,0137,0247,0363,0355,0307,0231,0251,0257,0216,0261,0356,0372,0364,0044,0344, \ +0212,0103,0351,0144,0224,0102,0040,0222,0054,0130,0177,0173,0122,0007,0143,0102, \ +0054,0026,0021,0200,0165,0176,0367,0301,0317,0272,0302,0367,0332,0353,0261,0112, \ +0305,0072,0143,0006,0027,0373,0077,0035,0236,0231,0242,0355,0231,0051,0207,0374, \ +0055,0022,0047,0210,0320,0103,0307,0236,0061,0376,0330,0041,0115,0345,0350,0317, \ +0207,0263,0377,0137,0077,0356,0274,0150,0255,0002,0254,0175,0311,0020,0347,0041, \ +0343,0025,0063,0071,0246,0314,0006,0152,0306,0152,0265,0101,0054,0140,0076,0111, \ +0216,0146,0126,0217,0213,0254,0231,0303,0007,0032,0176,0123,0243,0365,0067,0021, \ +0233,0221,0115,0112,0267,0365,0117,0076,0120,0334,0317,0351,0255,0355,0166,0242, \ +0144,0151,0003,0255,0267,0176,0064,0014,0104,0377,0157,0102,0005,0153,0037,0177, \ +0307,0274,0041,0321,0370,0067,0202,0107,0202,0155,0114,0012,0267,0164,0370,0053, \ +0051,0112,0130,0211,0037,0273,0335,0143,0342,0142,0224,0100,0367,0141,0206,0041, \ +0103,0217,0063,0250,0171,0034,0311,0154,0335,0311,0220,0225,0312,0375,0352,0023, \ +0153,0370,0106,0242,0360,0267,0314,0245,0167,0217,0036,0244,0170,0115,0225,0362, \ +0147,0134,0044,0304,0121,0300,0243,0367,0302,0340,0356,0314,0070,0207,0114,0014, \ +0276,0027,0307,0101,0053,0131,0304,0212,0157,0312,0301,0336,0300,0065,0222,0075, \ +0013,0201,0073,0354,0132,0051,0331,0050,0252,0215,0362,0043,0046,0055,0057,0347, \ +0340,0366,0047,0353,0175,0264,0172,0365,0334,0270,0352,0144,0163,0363,0144,0023, \ +0265,0320,0341,0015,0221,0334,0231,0270,0140,0176,0050,0275,0172,0145,0055,0067, \ +0341,0127,0134,0206,0247,0162,0020,0013,0221,0025,0273,0122,0075,0217,0215,0221, \ +0044,0127,0212,0055,0301,0023,0036,0206,0067,0212,0114,0141,0100,0045,0371,0077, \ +0266,0146,0307,0134,0035,0046,0363,0314,0335,0367,0050,0063,0251,0171,0325,0336, \ +0161,0011,0315,0113,0301,0045,0065,0376,0011,0103,0046,0201,0247,0264,0222,0375, \ +0036,0354,0167,0152,0142,0214,0017,0074,0023,0142,0113,0350,0230,0015,0373,0363, \ +0372,0351,0336,0300,0273,0174,0027,0104,0042,0130,0164,0013,0001,0244,0227,0206, \ +0067,0141,0351,0263,0342,0142,0275,0166,0047,0010,0244,0127,0344,0232,0202,0042, \ +0044,0201,0116,0370,0261,0240,0052,0266,0337,0070,0343,0271,0055,0202,0173,0137, \ +0336,0370,0252,0306,0310,0036,0101,0277,0300,0076,0141,0361,0241,0352,0006,0000, \ +0371,0275,0216,0143,0323,0306,0043,0332,0353,0222,0213,0051,0140,0132,0127,0052, \ +0306,0016,0160,0265,0007,0275,0355,0153,0100,0140,0133,0110,0270,0215,0005,0136, \ +0035,0330,0127,0173,0024,0135,0101,0051,0117,0234,0276,0177,0307,0103,0332,0036, \ +0212,0300,0051,0275,0373,0275,0162,0226,0207,0332,0270,0064,0300,0054,0222,0241, \ +0033,0104,0022,0320,0100,0341,0222,0142,0364,0147,0366,0265,0111,0375,0030,0175, \ +0255,0377,0043,0205,0220,0132,0270,0145,0324,0327,0225,0215,0373,0140,0042,0171, \ +0022,0353,0005,0002,0263,0076,0257,0175,0251,0112,0003,0062,0001,0200,0316,0223, \ +0052,0032,0320,0134,0347,0162,0073,0254,0176,0234,0141,0017,0134,0017,0152,0034, \ +0222,0175,0257,0247,0354,0316,0366,0355,0017,0343,0161,0014,0207,0044,0120,0006, \ +0036,0333,0117,0330,0034,0075,0300,0304,0115,0177,0055,0230,0100,0212,0121,0220, \ +0337,0032,0373,0225,0201,0110,0101,0377,0042,0221,0030,0132,0341,0006,0065,0073, \ +0074,0140,0240,0272,0317,0114,0225,0147,0200,0300,0376,0374,0320,0227,0016,0112, \ +0275,0232,0036,0346,0013,0032,0052,0236,0024,0304,0274,0305,0223,0367,0171,0123, \ +0356,0021,0335,0367,0041,0132,0241,0166,0122,0153,0366,0056,0147,0311,0026,0317, \ +0077,0354,0306,0306,0312,0234,0372,0273,0324,0372,0141,0103,0060,0216,0036,0163, \ +0252,0221,0153,0350,0301,0330,0263,0056,0206,0332,0261,0167,0251,0002,0356,0154, \ +0075,0333,0136,0225,0300,0070,0102,0234,0136,0362,0130,0307,0162,0035,0240,0036, \ +0152,0000,0002,0330,0245,0222,0217,0206,0226,0373,0235,0164,0321,0220,0137,0122, \ +0346,0254,0176,0163,0055,0071,0247,0256,0040,0167,0365,0070,0110,0234,0220,0116, \ +0341,0215,0043,0363,0105,0154,0224,0212,0224,0111,0322,0166,0350,0322,0173,0345, \ +0301,0115,0072,0272,0320,0250,0304,0262,0371,0340,0230,0146,0211,0221,0357,0227, \ +0067,0323,0323,0114,0044,0237,0300,0117,0133,0205,0010,0305,0022,0157,0265,0306, \ +0020,0172,0355,0002,0273,0242,0301,0307,0061,0054,0274,0005,0362,0127,0333,0044, \ +0167,0352,0115,0365,0206,0330,0250,0252,0365,0010,0231,0006,0156,0365,0155,0203, \ +0333,0331,0212,0113,0200,0173,0132,0052,0027,0254,0062,0154,0266,0076,0330,0237, \ +0070,0342,0360,0013,0357,0152,0032,0104,0070,0121,0052,0005,0046,0300,0142,0063, \ +0044,0215,0063,0336,0123,0315,0030,0036,0130,0254,0111,0242,0260,0374,0015,0104, \ +0074,0376,0036,0071,0347,0216,0204,0233,0240,0241,0074,0273,0373,0031,0366,0076, \ +0165,0276,0205,0060,0235,0347,0020,0336,0372,0116,0313,0331,0230,0144,0310,0145, \ +0343,0116,0054,0251,0176,0046,0341,0262,0060,0320,0247,0112,0326,0215,0032,0234, \ +0127,0311,0032,0143,0007,0245,0316,0224,0122,0065,0211,0317,0156,0314,0235,0060, \ +0332,0130,0147,0120,0210,0040,0024,0127,0221,0231,0022,0220,0271,0357,0006,0247, \ +0017,0161,0234,0122,0131,0027,0010,0135,0105,0340,0143,0120,0006,0001,0034,0366, \ +0274,0366,0365,0001,0371,0250,0111,0104,0352,0330,0032,0250,0304,0206,0321,0337, \ +0165,0100,0075,0034,0121,0106,0343,0240,0345,0222,0232,0026,0314,0261,0103,0171, \ +0314,0242,0143,0203,0177,0335,0023,0325,0033,0070,0020,0360,0232,0027,0273,0266, \ +0234,0231,0361,0044,0201,0172,0367,0242,0024,0110,0243,0344,0343,0113,0003,0313, \ +0210,0166,0301,0374,0011,0337,0065,0265,0102,0247,0154,0167,0333,0273,0077,0157, \ +0013,0154,0271,0255,0330,0030,0251,0317,0374,0050,0371,0254,0244,0360,0174,0177, \ +0005,0202,0152,0212,0232,0023,0170,0215,0117,0266,0266,0045,0235,0372,0166,0102, \ +0102,0221,0370,0340,0132,0225,0202,0264,0112,0300,0015,0303,0355,0274,0053,0255, \ +0273,0100,0122,0171,0312,0126,0354,0354,0252,0356,0146,0313,0013,0147,0136,0262, \ +0075,0364,0343,0100,0347,0014,0017,0312,0026,0046,0255,0174,0330,0156,0003,0040, \ +0033,0237,0311,0225,0004,0070,0174,0254,0234,0330,0117,0037,0072,0153,0075,0134, \ +0257,0311,0201,0334,0231,0264,0242,0116,0324,0045,0234,0251,0267,0113,0352,0036, \ +0011,0060,0225,0242,0074,0323,0203,0216,0074,0143,0273,0272,0352,0013,0147,0126, \ +0316,0361,0336,0214,0164,0204,0145,0364,0353,0225,0206,0333,0007,0004,0171,0265, \ +0001,0217,0235,0200,0223,0264,0116,0375,0167,0031,0312,0332,0132,0057,0237,0106, \ +0037,0317,0102,0216,0172,0315,0060,0236,0371,0050,0354,0224,0103,0001,0133,0056, \ +0032,0340,0106,0106,0323,0023,0030,0007,0000,0370,0303,0364,0176,0113,0326,0151, \ +0251,0215,0064,0351,0241,0271,0275,0012,0332,0327,0216,0220,0101,0144,0101,0007, \ +0153,0002,0260,0342,0103,0304,0232,0020,0126,0046,0253,0157,0021,0224,0337,0024, \ +0052,0145,0104,0062,0057,0002,0101,0102,0015,0071,0016,0256,0020,0241,0306,0033, \ +0002,0160,0004,0222,0353,0161,0252,0051,0140,0326,0120,0266,0262,0044,0267,0177, \ +0125,0060,0310,0060,0140,0012,0231,0222,0063,0206,0030,0175,0047,0157,0016,0260, \ +0107,0246,0223,0033,0312,0124,0211,0103,0216,0346,0232,0023,0072,0131,0003,0271, \ +0220,0304,0026,0103,0250,0042,0022,0077,0212,0213,0230,0037,0275,0241,0136,0062, \ +0345,0340,0310,0113,0203,0357,0144,0322,0013,0133,0345,0053,0200,0104,0072,0311, \ +0365,0364,0074,0042,0276,0224,0260,0124,0352,0024,0226,0111,0255,0253,0255,0050, \ +0151,0112,0256,0141,0000,0043,0341,0347,0176,0270,0000,0125,0044,0375,0275,0101, \ +0042,0327,0221,0123,0130,0050,0144,0326,0057,0153,0246,0236,0304,0313,0224,0207, \ +0202,0145,0011,0246,0232,0144,0166,0313,0153,0027,0011,0134,0011,0351,0071,0144, \ +0301,0350,0352,0140,0052,0123,0364,0164,0223,0003,0004,0111,0251,0052,0120,0155, \ +0020,0362,0024,0072,0010,0220,0124,0110,0060,0255,0022,0307,0113,0171,0323,0054, \ +0131,0046,0030,0054,0107,0134,0343,0010,0141,0271,0055,0026,0016,0056,0034,0075, \ +0324,0270,0156,0131,0006,0362,0303,0151,0263,0064,0212,0007,0064,0206,0114,0002, \ +0032,0335,0061,0224,0134,0061,0202,0312,0337,0242,0323,0206,0370,0071,0273,0350, \ +0125,0070,0133,0235,0312,0271,0254,0267,0052,0132,0030,0351,0120,0220,0357,0313, \ +0051,0262,0153,0063,0323,0200,0136,0351,0224,0330,0051,0241,0307,0267,0015,0036, \ +0251,0332,0167,0075,0244,0323,0204,0074,0012,0065,0047,0261,0066,0376,0024,0232, \ +0333,0126,0075,0330,0065,0374,0336,0312,0250,0060,0210,0311,0304,0355,0365,0005, \ +0022,0050,0264,0104,0137,0001,0306,0041,0155,0003,0003,0137,0145,0161,0071,0235, \ +0254,0133,0165,0265,0046,0353,0232,0006,0323,0142,0027,0307,0252,0172,0372,0342, \ +0347,0375,0246,0010,0277,0307,0301,0163,0164,0331,0337,0263,0153,0155,0267,0276, \ +0145,0105,0173,0024,0205,0014,0150,0035,0303,0334,0324,0236,0354,0172,0302,0213, \ +0332,0300,0127,0236,0254,0321,0077,0014,0052,0166,0320,0122,0216,0250,0320,0000, \ +0257,0116,0250,0205,0150,0334,0354,0266,0151,0164,0202,0133,0332,0037,0044,0100, \ +0366,0004,0361,0340,0167,0231,0263,0117,0041,0123,0050,0144,0357,0304,0051,0176, \ +0372,0221,0204,0341,0334,0164,0233,0201,0007,0137,0176,0014,0313,0237,0026,0222, \ +0313,0112,0151,0006,0321,0247,0020,0224,0271,0161,0072,0114,0263,0313,0277,0053, \ +0347,0240,0103,0104,0103,0051,0041,0220,0020,0272,0107,0310,0066,0036,0242,0023, \ +0047,0257,0032,0203,0012,0263,0060,0116,0147,0161,0007,0054,0033,0111,0233,0154, \ +0143,0261,0113,0054,0246,0240,0134,0245,0114,0266,0021,0356,0245,0322,0256,0055, \ +0162,0361,0060,0305,0260,0260,0034,0225,0051,0163,0201,0141,0051,0326,0120,0173, \ +0125,0011,0025,0233,0067,0125,0053,0000,0027,0141,0151,0070,0004,0066,0313,0242, \ +0210,0301,0026,0241,0152,0226,0260,0170,0224,0017,0144,0031,0312,0215,0013,0043, \ +0127,0207,0247,0215,0137,0216,0371,0114,0051,0272,0055,0123,0030,0106,0251,0003, \ +0324,0104,0131,0105,0142,0201,0252,0165,0170,0106,0023,0212,0352,0052,0223,0235, \ +0214,0075,0111,0276,0061,0001,0254,0030,0017,0123,0103,0121,0276,0352,0066,0160, \ +0342,0025,0355,0232,0334,0076,0202,0301,0234,0070,0255,0226,0257,0263,0061,0141, \ +0105,0323,0066,0310,0133,0005,0026,0145,0152,0302,0251,0145,0160,0166,0266,0155, \ +0072,0152,0232,0335,0326,0212,0026,0345,0122,0257,0275,0167,0335,0344,0106,0005, \ +0334,0134,0102,0061,0330,0125,0151,0052,0146,0027,0100,0225,0071,0152,0056,0122, \ +0042,0062,0255,0201,0073,0335,0250,0021,0136,0244,0152,0316,0041,0241,0154,0242, \ +0165,0164,0310,0241,0015,0221,0207,0222,0301,0124,0212,0132,0365,0161,0103,0106, \ +0066,0141,0002,0266,0343,0272,0026,0276,0333,0240,0247,0014,0071,0276,0365,0007, \ +0024,0261,0145,0120,0301,0213,0211,0021,0226,0370,0207,0020,0105,0357,0006,0356, \ +0032,0314,0120,0063,0006,0276,0170,0272,0326,0140,0322,0254,0246,0246,0202,0135, \ +0132,0233,0227,0044,0125,0010,0020,0052,0045,0300,0120,0272,0332,0356,0067,0144, \ +0243,0032,0320,0345,0236,0255,0272,0126,0253,0165,0110,0056,0116,0051,0154,0354, \ +0006,0264,0121,0111,0105,0144,0311,0242,0265,0020,0030,0137,0173,0101,0025,0175, \ +0020,0106,0252,0125,0135,0311,0160,0144,0072,0265,0105,0153,0203,0011,0145,0256, \ +0362,0363,0042,0022,0357,0110,0071,0052,0302,0133,0112,0327,0073,0155,0041,0353, \ +0243,0266,0055,0160,0115,0153,0103,0221,0163,0112,0205,0030,0027,0012,0360,0116, \ +0306,0310,0065,0252,0213,0015,0022,0211,0122,0104,0136,0311,0214,0205,0127,0033, \ +0315,0157,0015,0014,0360,0103,0003,0001,0224,0064,0021,0213,0150,0124,0044,0372, \ +0266,0316,0061,0245,0115,0265,0007,0167,0132,0212,0001,0265,0035,0020,0070,0025, \ +0215,0010,0031,0253,0273,0014,0352,0342,0136,0102,0255,0150,0314,0024,0012,0043, \ +0207,0260,0250,0124,0024,0231,0260,0310,0345,0051,0226,0117,0167,0142,0353,0113, \ +0323,0320,0005,0264,0127,0100,0327,0330,0235,0365,0203,0061,0112,0207,0306,0117, \ +0231,0033,0023,0363,0017,0024,0164,0262,0143,0101,0247,0010,0207,0026,0033,0221, \ +0245,0027,0225,0047,0341,0115,0223,0027,0320,0201,0332,0161,0373,0141,0106,0302, \ +0026,0305,0026,0060,0362,0220,0341,0045,0012,0222,0076,0114,0367,0254,0057,0225, \ +0121,0007,0021,0243,0075,0270,0276,0305,0104,0113,0331,0177,0210,0136,0013,0160, \ +0127,0152,0111,0101,0325,0045,0357,0204,0200,0155,0026,0203,0367,0274,0315,0115, \ +0113,0345,0104,0250,0336,0333,0044,0245,0132,0103,0103,0001,0003,0013,0204,0012, \ +0203,0140,0231,0347,0066,0130,0261,0205,0110,0051,0277,0162,0217,0051,0042,0207, \ +0245,0054,0104,0347,0166,0154,0016,0374,0061,0073,0160,0004,0070,0172,0250,0012, \ +0052,0027,0043,0211,0122,0112,0245,0056,0347,0155,0061,0125,0322,0357,0210,0323, \ +0107,0300,0143,0030,0357,0164,0227,0121,0043,0151,0256,0240,0124,0035,0350,0332, \ +0013,0047,0022,0200,0203,0245,0011,0260,0144,0372,0301,0276,0216,0316,0046,0301, \ +0023,0201,0141,0304,0350,0242,0331,0170,0233,0012,0372,0215,0224,0131,0036,0116, \ +0263,0121,0253,0151,0215,0131,0336,0061,0345,0041,0015,0073,0311,0332,0206,0163, \ +0012,0170,0031,0055,0326,0126,0143,0025,0374,0122,0332,0162,0310,0340,0117,0175, \ +0206,0332,0020,0325,0012,0312,0301,0217,0202,0155,0117,0111,0362,0224,0061,0330, \ +0250,0011,0241,0307,0311,0006,0300,0360,0136,0110,0207,0007,0317,0223,0151,0125, \ +0323,0001,0112,0306,0121,0320,0302,0110,0133,0332,0261,0275,0053,0226,0050,0335, \ +0223,0156,0167,0347,0300,0134,0321,0061,0015,0332,0204,0107,0303,0013,0212,0005, \ +0156,0376,0047,0110,0352,0213,0373,0204,0023,0215,0117,0054,0003,0301,0050,0301, \ +0207,0020,0313,0142,0132,0240,0124,0062,0031,0144,0167,0021,0256,0060,0236,0035, \ +0201,0303,0126,0201,0115,0303,0117,0106,0307,0060,0117,0076,0316,0041,0261,0340, \ +0346,0132,0060,0105,0063,0071,0302,0003,0150,0022,0123,0331,0044,0316,0141,0124, \ +0003,0141,0346,0025,0224,0077,0171,0203,0060,0073,0032,0042,0200,0267,0061,0124, \ +0175,0215,0010,0202,0344,0103,0243,0312,0357,0254,0103,0336,0105,0033,0001,0004, \ +0043,0062,0255,0115,0245,0100,0152,0227,0341,0174,0304,0133,0015,0370,0340,0332, \ +0164,0137,0165,0113,0313,0340,0306,0343,0063,0040,0143,0206,0277,0040,0305,0060, \ +0007,0201,0200,0155,0327,0135,0114,0332,0061,0014,0170,0350,0230,0144,0253,0100, \ +0052,0201,0264,0124,0037,0200,0031,0174,0317,0355,0023,0062,0161,0237,0137,0303, \ +0316,0050,0134,0236,0174,0351,0140,0352,0042,0133,0005,0222,0373,0161,0214,0172, \ +0123,0206,0261,0244,0123,0201,0161,0100,0341,0015,0260,0036,0062,0340,0334,0251, \ +0264,0052,0257,0170,0310,0272,0371,0224,0143,0242,0242,0166,0332,0206,0357,0126, \ +0024,0143,0153,0276,0203,0061,0122,0365,0236,0366,0061,0162,0011,0220,0316,0354, \ +0146,0125,0120,0115,0125,0263,0102,0164,0126,0323,0006,0367,0125,0174,0270,0065, \ +0041,0333,0106,0326,0210,0157,0100,0345,0166,0353,0024,0061,0255,0213,0213,0065, \ +0060,0214,0303,0304,0027,0072,0313,0221,0164,0255,0320,0013,0316,0306,0262,0056, \ +0330,0030,0276,0000,0204,0205,0122,0052,0302,0202,0256,0266,0326,0222,0232,0115, \ +0351,0201,0071,0255,0021,0201,0134,0145,0120,0303,0025,0043,0046,0131,0133,0217, \ +0021,0350,0246,0372,0320,0237,0046,0122,0153,0076,0263,0240,0074,0270,0206,0375, \ +0302,0334,0035,0212,0021,0210,0326,0306,0223,0202,0274,0130,0026,0060,0143,0026, \ +0320,0264,0055,0221,0212,0254,0214,0164,0055,0133,0110,0321,0100,0310,0125,0047, \ +0204,0176,0173,0347,0270,0314,0257,0063,0213,0262,0001,0162,0131,0063,0234,0153, \ +0031,0157,0302,0314,0255,0037,0232,0171,0015,0064,0151,0244,0332,0205,0326,0321, \ +0254,0312,0072,0334,0243,0027,0112,0023,0067,0015,0304,0020,0314,0065,0210,0117, \ +0007,0304,0074,0225,0310,0314,0126,0031,0231,0172,0042,0342,0356,0051,0323,0113, \ +0325,0161,0145,0057,0343,0112,0055,0252,0006,0202,0010,0130,0250,0025,0052,0304, \ +0327,0206,0001,0200,0172,0233,0147,0023,0061,0327,0335,0064,0056,0246,0360,0277, \ +0047,0103,0044,0222,0304,0300,0026,0227,0226,0311,0346,0346,0240,0232,0202,0342, \ +0156,0337,0200,0066,0165,0065,0036,0355,0362,0055,0030,0203,0355,0222,0027,0173, \ +0060,0036,0150,0314,0200,0071,0226,0043,0177,0255,0024,0137,0244,0344,0155,0370, \ +0171,0020,0235,0131,0074,0374,0057,0342,0236,0227,0030,0257,0367,0016,0003,0026, \ +0106,0013,0042,0306,0270,0141,0206,0141,0120,0027,0146,0114,0241,0060,0044,0130, \ +0301,0202,0255,0033,0133,0007,0024,0053,0044,0120,0210,0235,0226,0230,0170,0147, \ +0123,0261,0317,0074,0335,0221,0375,0332,0156,0317,0113,0363,0047,0313,0071,0007, \ +0211,0360,0103,0224,0204,0056,0063,0317,0154,0153,0274,0037,0205,0124,0141,0270, \ +0303,0220,0174,0347,0165,0206,0173,0106,0004,0254,0132,0327,0331,0162,0120,0003, \ +0021,0233,0022,0200,0047,0054,0021,0366,0214,0350,0200,0035,0302,0110,0173,0360, \ +0131,0257,0133,0003,0027,0220,0042,0040,0340,0060,0124,0263,0115,0054,0120,0307, \ +0252,0212,0067,0011,0027,0164,0022,0360,0042,0341,0175,0003,0327,0004,0015,0161, \ +0261,0147,0323,0351,0326,0234,0331,0243,0275,0164,0073,0360,0055,0077,0145,0341, \ +0246,0350,0261,0116,0146,0024,0140,0006,0250,0223,0042,0262,0145,0026,0114,0161, \ +0260,0003,0002,0014,0141,0243,0064,0144,0373,0243,0331,0322,0367,0152,0357,0043, \ +0071,0322,0145,0037,0125,0265,0050,0304,0026,0170,0217,0246,0165,0320,0371,0072, \ +0144,0265,0072,0356,0360,0377,0222,0204,0160,0134,0365,0071,0264,0050,0030,0150, \ +0277,0021,0153,0123,0053,0205,0270,0075,0345,0051,0031,0163,0204,0277,0341,0065, \ +0072,0157,0146,0213,0036,0101,0361,0301,0321,0047,0346,0341,0261,0326,0212,0124, \ +0224,0016,0165,0323,0314,0332,0173,0231,0347,0060,0261,0020,0004,0005,0105,0026, \ +0052,0202,0061,0075,0055,0020,0150,0321,0235,0361,0252,0214,0005,0106,0041,0132, \ +0212,0301,0200,0276,0357,0301,0061,0373,0377,0031,0370,0323,0133,0275,0227,0000, \ +0176,0200,0112,0066,0326,0045,0241,0112,0307,0077,0251,0321,0120,0270,0075,0221, \ +0111,0243,0020,0057,0173,0005,0222,0006,0147,0152,0176,0044,0076,0072,0223,0221, \ +0006,0054,0206,0354,0020,0333,0113,0111,0370,0305,0207,0352,0070,0003,0213,0104, \ +0031,0070,0105,0311,0302,0270,0306,0126,0134,0251,0356,0373,0076,0177,0273,0157, \ +0207,0054,0321,0175,0020,0310,0331,0054,0063,0024,0003,0066,0272,0024,0010,0017, \ +0364,0164,0167,0317,0145,0121,0144,0141,0111,0303,0241,0025,0251,0074,0054,0020, \ +0124,0023,0143,0030,0015,0211,0243,0306,0113,0223,0126,0133,0176,0253,0166,0353, \ +0370,0374,0272,0016,0206,0011,0157,0115,0167,0036,0310,0365,0075,0274,0241,0364, \ +0207,0231,0106,0315,0344,0036,0260,0200,0245,0061,0327,0075,0157,0003,0337,0150, \ +0115,0277,0053,0172,0351,0342,0260,0235,0053,0161,0261,0116,0003,0314,0021,0146, \ +0121,0201,0162,0055,0333,0221,0373,0344,0074,0172,0275,0275,0047,0136,0224,0134, \ +0324,0357,0330,0127,0303,0313,0107,0143,0222,0077,0130,0047,0220,0160,0142,0155, \ +0003,0115,0324,0103,0065,0204,0103,0064,0004,0317,0310,0317,0105,0315,0150,0107, \ +0153,0100,0165,0165,0124,0135,0155,0064,0372,0240,0154,0043,0162,0062,0133,0066, \ +0207,0337,0103,0210,0366,0020,0221,0341,0246,0333,0261,0324,0173,0046,0107,0131, \ +0042,0173,0307,0065,0352,0007,0244,0210,0110,0063,0071,0100,0041,0022,0322,0056, \ +0222,0224,0101,0053,0002,0101,0150,0150,0301,0351,0365,0103,0345,0155,0115,0015, \ +0372,0215,0301,0274,0044,0372,0320,0120,0235,0311,0074,0016,0376,0363,0157,0105, \ +0126,0036,0103,0313,0162,0322,0304,0240,0074,0350,0117,0300,0201,0163,0145,0140, \ +0015,0251,0040,0306,0164,0064,0047,0227,0175,0072,0153,0352,0114,0377,0076,0324, \ +0346,0041,0176,0147,0105,0345,0265,0007,0204,0104,0066,0104,0013,0015,0221,0353, \ +0210,0164,0071,0365,0103,0124,0306,0130,0337,0006,0340,0033,0333,0332,0037,0247, \ +0154,0212,0245,0041,0264,0053,0046,0145,0327,0315,0351,0216,0306,0153,0312,0274, \ +0005,0257,0165,0060,0317,0057,0140,0056,0225,0064,0030,0025,0062,0217,0316,0055, \ +0245,0242,0121,0035,0152,0034,0331,0001,0057,0102,0357,0044,0173,0155,0332,0073, \ +0006,0346,0164,0314,0224,0012,0226,0222,0310,0044,0051,0132,0226,0254,0135,0361, \ +0134,0074,0004,0110,0105,0100,0262,0104,0030,0133,0306,0033,0037,0177,0257,0341, \ +0241,0327,0132,0166,0130,0054,0125,0202,0261,0202,0062,0012,0010,0052,0105,0044, \ +0054,0015,0275,0175,0307,0355,0317,0242,0237,0241,0250,0345,0311,0201,0233,0162, \ +0114,0170,0331,0175,0343,0316,0034,0036,0130,0136,0021,0000,0354,0162,0322,0237, \ +0107,0311,0345,0350,0137,0202,0074,0123,0070,0102,0042,0000,0375,0222,0241,0311, \ +0174,0132,0317,0210,0166,0236,0030,0047,0177,0132,0115,0142,0213,0042,0310,0244, \ +0115,0277,0117,0277,0333,0000,0105,0203,0020,0142,0212,0077,0073,0355,0362,0014, \ +0114,0263,0317,0360,0336,0242,0122,0032,0112,0365,0216,0267,0012,0005,0065,0167, \ +0150,0227,0044,0374,0152,0052,0364,0055,0030,0272,0353,0202,0206,0172,0240,0040, \ +0246,0027,0024,0212,0160,0070,0043,0334,0230,0041,0214,0003,0310,0240,0104,0216, \ +0362,0121,0240,0152,0247,0043,0144,0104,0143,0012,0313,0056,0060,0254,0324,0063, \ +0257,0164,0030,0355,0056,0205,0266,0163,0225,0016,0021,0346,0045,0164,0227,0164, \ +0144,0041,0233,0140,0221,0016,0023,0142,0142,0053,0013,0245,0201,0201,0372,0342, \ +0176,0076,0157,0374,0174,0116,0357,0273,0235,0103,0137,0166,0345,0045,0343,0312, \ +0347,0032,0340,0114,0123,0024,0244,0335,0272,0024,0017,0251,0253,0035,0006,0260, \ +0316,0315,0206,0113,0154,0255,0325,0077,0175,0360,0070,0147,0327,0177,0230,0237, \ +0227,0075,0146,0300,0054,0341,0215,0100,0305,0000,0260,0024,0373,0061,0322,0167, \ +0223,0240,0175,0273,0233,0211,0024,0120,0124,0142,0213,0040,0320,0113,0020,0152, \ +0326,0273,0064,0124,0170,0320,0342,0324,0060,0134,0130,0120,0232,0101,0011,0264, \ +0242,0173,0263,0162,0060,0173,0134,0232,0145,0014,0056,0315,0212,0203,0151,0110, \ +0202,0050,0056,0262,0312,0042,0350,0321,0034,0153,0246,0114,0146,0031,0323,0006, \ +0014,0241,0224,0252,0311,0241,0214,0001,0232,0102,0152,0221,0015,0326,0013,0056, \ +0032,0136,0132,0373,0163,0273,0225,0014,0066,0370,0145,0124,0130,0174,0003,0025, \ +0354,0107,0110,0076,0341,0111,0300,0341,0347,0160,0030,0323,0325,0270,0232,0121, \ +0140,0052,0064,0015,0203,0006,0000,0330,0363,0302,0322,0166,0037,0246,0207,0063, \ +0114,0245,0125,0105,0367,0132,0105,0221,0037,0175,0122,0304,0101,0313,0045,0063, \ +0150,0154,0314,0252,0211,0070,0133,0062,0216,0266,0262,0054,0230,0145,0026,0146, \ +0362,0216,0171,0231,0124,0211,0272,0322,0373,0333,0052,0272,0156,0070,0155,0260, \ +0301,0245,0015,0061,0161,0224,0204,0210,0310,0245,0264,0341,0352,0354,0340,0031, \ +0002,0162,0201,0110,0175,0233,0034,0343,0271,0131,0224,0352,0171,0320,0333,0061, \ +0077,0244,0204,0171,0014,0033,0000,0245,0076,0351,0022,0243,0004,0144,0142,0153, \ +0076,0054,0143,0132,0077,0174,0206,0256,0130,0167,0262,0262,0163,0306,0044,0026, \ +0130,0360,0303,0073,0140,0244,0342,0305,0012,0047,0101,0306,0051,0130,0141,0223, \ +0366,0062,0032,0063,0071,0323,0023,0311,0300,0226,0152,0055,0244,0145,0246,0061, \ +0003,0245,0056,0353,0223,0156,0115,0214,0313,0027,0355,0276,0322,0163,0062,0315, \ +0374,0147,0360,0174,0343,0044,0145,0173,0210,0111,0117,0160,0120,0114,0347,0114, \ +0016,0335,0257,0275,0221,0153,0064,0250,0174,0320,0331,0317,0314,0355,0225,0206, \ +0045,0033,0154,0003,0362,0026,0274,0061,0347,0106,0262,0105,0031,0011,0032,0001, \ +0105,0114,0020,0303,0345,0343,0155,0206,0210,0364,0142,0341,0207,0203,0213,0111, \ +0041,0342,0166,0026,0146,0053,0122,0174,0140,0230,0142,0361,0146,0106,0142,0225, \ +0355,0265,0065,0115,0112,0005,0334,0271,0246,0233,0211,0070,0260,0042,0164,0251, \ +0037,0114,0003,0056,0050,0205,0113,0010,0206,0014,0253,0045,0115,0146,0027,0025, \ +0072,0342,0142,0011,0151,0160,0304,0031,0213,0162,0175,0026,0372,0174,0261,0272, \ +0115,0167,0306,0174,0021,0326,0217,0315,0321,0134,0174,0366,0372,0257,0051,0050, \ +0203,0143,0155,0375,0074,0124,0146,0031,0241,0026,0006,0163,0050,0240,0220,0171, \ +0147,0154,0115,0063,0135,0252,0323,0154,0276,0322,0265,0014,0100,0164,0234,0273, \ +0202,0152,0030,0060,0001,0004,0121,0026,0103,0215,0253,0025,0232,0003,0142,0133, \ +0101,0021,0121,0214,0213,0121,0360,0333,0360,0044,0323,0314,0321,0137,0252,0234, \ +0161,0112,0063,0047,0072,0034,0000,0303,0026,0015,0245,0162,0150,0350,0366,0323, \ +0347,0112,0222,0102,0313,0260,0324,0345,0300,0014,0367,0073,0030,0034,0153,0127, \ +0373,0326,0122,0315,0274,0122,0235,0177,0017,0163,0145,0310,0233,0215,0064,0300, \ +0256,0310,0032,0124,0362,0306,0350,0074,0333,0051,0102,0154,0042,0320,0040,0211, \ +0251,0174,0227,0033,0211,0075,0231,0225,0223,0331,0251,0033,0316,0103,0127,0235, \ +0245,0216,0022,0022,0301,0205,0220,0302,0056,0220,0254,0032,0153,0071,0157,0075, \ +0060,0174,0255,0340,0164,0363,0301,0136,0337,0116,0147,0043,0240,0325,0171,0303, \ +0232,0102,0164,0344,0151,0251,0163,0150,0301,0034,0246,0131,0204,0212,0272,0347, \ +0051,0064,0037,0073,0254,0272,0340,0315,0321,0064,0327,0055,0042,0140,0320,0206, \ +0014,0224,0146,0151,0222,0272,0110,0025,0044,0063,0150,0062,0105,0031,0221,0011, \ +0270,0140,0205,0144,0110,0245,0011,0320,0163,0042,0044,0264,0020,0231,0227,0006, \ +0044,0304,0220,0314,0271,0022,0124,0125,0046,0140,0202,0012,0240,0151,0370,0323, \ +0004,0306,0065,0061,0214,0054,0106,0150,0141,0301,0171,0271,0104,0314,0156,0130, \ +0151,0112,0250,0051,0155,0264,0133,0206,0243,0214,0141,0230,0271,0022,0244,0220, \ +0102,0032,0346,0135,0363,0045,0232,0131,0052,0167,0322,0277,0147,0155,0371,0332, \ +0363,0324,0136,0022,0176,0330,0342,0173,0036,0167,0207,0202,0333,0020,0254,0321, \ +0020,0020,0257,0241,0206,0376,0146,0213,0247,0012,0224,0120,0015,0003,0047,0227, \ +0135,0005,0106,0007,0046,0034,0206,0166,0341,0262,0304,0054,0135,0063,0110,0350, \ +0151,0034,0331,0327,0047,0325,0250,0151,0364,0232,0205,0114,0151,0215,0154,0134, \ +0330,0240,0252,0142,0203,0173,0277,0323,0223,0006,0211,0104,0312,0024,0102,0072, \ +0120,0250,0240,0147,0005,0046,0031,0132,0301,0160,0060,0270,0152,0143,0013,0066, \ +0114,0006,0170,0006,0061,0160,0132,0112,0070,0321,0220,0303,0210,0203,0362,0245, \ +0125,0130,0304,0123,0066,0127,0007,0165,0072,0175,0022,0036,0207,0141,0200,0100, \ +0341,0175,0062,0006,0134,0010,0053,0332,0101,0260,0152,0345,0170,0243,0354,0204, \ +0144,0300,0304,0012,0010,0306,0060,0220,0254,0005,0000,0143,0044,0016,0260,0033, \ +0142,0332,0303,0004,0306,0014,0365,0064,0016,0206,0272,0346,0146,0116,0073,0143, \ +0011,0351,0004,0364,0312,0246,0272,0105,0223,0043,0012,0250,0214,0003,0175,0103, \ +0135,0355,0352,0273,0010,0255,0010,0245,0205,0374,0202,0165,0367,0154,0035,0026, \ +0115,0057,0267,0275,0165,0246,0326,0054,0006,0161,0167,0233,0200,0040,0267,0217, \ +0272,0127,0046,0051,0154,0150,0276,0271,0032,0254,0157,0365,0135,0353,0057,0337, \ +0166,0316,0324,0005,0237,0074,0321,0076,0236,0354,0352,0115,0062,0135,0020,0250, \ +0013,0047,0257,0063,0160,0240,0342,0140,0222,0140,0164,0316,0012,0341,0154,0264, \ +0130,0245,0030,0043,0154,0246,0006,0270,0212,0210,0226,0224,0120,0120,0055,0050, \ +0066,0301,0266,0062,0205,0222,0321,0224,0145,0245,0264,0045,0030,0326,0244,0151, \ +0230,0121,0301,0357,0310,0144,0314,0234,0050,0053,0020,0054,0134,0113,0054,0064, \ +0002,0223,0024,0230,0203,0003,0011,0065,0260,0345,0041,0053,0064,0300,0124,0133, \ +0031,0163,0005,0162,0056,0253,0101,0047,0142,0315,0003,0136,0211,0047,0147,0141, \ +0366,0163,0122,0305,0042,0244,0340,0170,0151,0210,0013,0015,0031,0004,0237,0310, \ +0154,0143,0021,0331,0042,0232,0355,0371,0061,0001,0162,0303,0334,0207,0066,0176, \ +0341,0206,0117,0215,0340,0316,0364,0251,0062,0202,0146,0351,0372,0344,0246,0311, \ +0242,0022,0056,0325,0246,0122,0046,0326,0001,0202,0213,0135,0004,0120,0307,0144, \ +0212,0230,0140,0227,0333,0174,0174,0070,0112,0366,0172,0053,0045,0210,0033,0016, \ +0251,0022,0132,0004,0244,0121,0201,0036,0366,0202,0004,0031,0005,0227,0243,0226, \ +0235,0313,0363,0177,0005,0020,0131,0336,0052,0125,0141,0113,0050,0335,0315,0060, \ +0032,0151,0111,0241,0274,0040,0173,0130,0020,0067,0345,0033,0267,0164,0311,0350, \ +0202,0053,0374,0010,0325,0034,0020,0365,0030,0155,0016,0050,0154,0333,0357,0371, \ +0043,0237,0374,0055,0146,0372,0130,0362,0075,0076,0042,0213,0237,0167,0350,0200, \ +0233,0175,0316,0347,0356,0013,0015,0341,0261,0044,0355,0301,0170,0331,0003,0144, \ +0101,0005,0220,0021,0200,0230,0207,0270,0231,0144,0352,0207,0265,0014,0002,0052, \ +0054,0036,0307,0273,0020,0365,0040,0142,0061,0202,0242,0106,0046,0226,0236,0177, \ +0050,0173,0130,0250,0042,0301,0144,0026,0006,0066,0075,0005,0145,0232,0210,0034, \ +0313,0322,0103,0152,0037,0027,0340,0355,0150,0136,0272,0315,0204,0175,0176,0305, \ +0031,0241,0326,0163,0335,0105,0220,0025,0147,0006,0007,0164,0070,0034,0042,0113, \ +0066,0350,0007,0203,0044,0346,0151,0064,0203,0041,0305,0332,0050,0254,0004,0005, \ +0115,0275,0276,0243,0035,0231,0061,0155,0071,0262,0117,0220,0256,0154,0330,0313, \ +0321,0376,0016,0310,0232,0145,0001,0324,0353,0275,0256,0366,0056,0063,0334,0167, \ +0167,0305,0016,0315,0371,0236,0336,0374,0116,0070,0006,0026,0325,0072,0060,0276, \ +0026,0121,0121,0221,0362,0112,0310,0202,0071,0063,0203,0001,0360,0006,0314,0033, \ +0340,0331,0314,0060,0312,0212,0255,0262,0230,0167,0336,0220,0102,0050,0344,0210, \ +0141,0257,0333,0111,0261,0374,0315,0346,0034,0356,0234,0173,0304,0036,0100,0136, \ +0034,0041,0156,0003,0151,0324,0101,0027,0311,0020,0232,0206,0230,0112,0061,0322, \ +0060,0251,0144,0212,0363,0256,0264,0030,0007,0350,0322,0232,0201,0270,0044,0334, \ +0140,0033,0316,0261,0027,0372,0016,0376,0327,0112,0024,0374,0102,0047,0127,0002, \ +0233,0211,0227,0130,0011,0011,0216,0346,0254,0153,0170,0332,0111,0215,0141,0336, \ +0063,0110,0056,0111,0033,0261,0175,0363,0026,0114,0061,0070,0030,0237,0255,0346, \ +0354,0030,0233,0006,0322,0143,0063,0125,0372,0217,0241,0231,0234,0345,0230,0165, \ +0334,0365,0051,0374,0326,0162,0103,0156,0371,0306,0037,0221,0037,0224,0261,0036, \ +0327,0011,0214,0051,0142,0352,0103,0171,0311,0035,0267,0343,0372,0147,0316,0315, \ +0274,0350,0017,0255,0202,0261,0253,0337,0010,0244,0314,0321,0170,0374,0010,0016, \ +0255,0103,0370,0062,0357,0251,0220,0213,0367,0172,0244,0051,0062,0136,0247,0075, \ +0322,0043,0005,0130,0252,0101,0122,0040,0302,0040,0210,0355,0202,0014,0156,0107, \ +0266,0373,0221,0266,0013,0273,0061,0355,0330,0036,0266,0221,0304,0365,0327,0224, \ +0304,0172,0342,0026,0233,0244,0246,0064,0012,0342,0101,0246,0167,0237,0240,0114, \ +0227,0064,0152,0136,0326,0345,0331,0323,0032,0244,0027,0203,0115,0205,0324,0067, \ +0106,0131,0032,0102,0123,0113,0001,0227,0271,0373,0246,0010,0240,0263,0072,0001, \ +0222,0016,0105,0006,0104,0072,0023,0204,0224,0070,0064,0100,0372,0060,0130,0073, \ +0264,0073,0035,0031,0141,0300,0237,0167,0040,0336,0157,0021,0127,0201,0240,0117, \ +0076,0376,0036,0236,0013,0235,0120,0146,0141,0234,0304,0113,0030,0164,0246,0273, \ +0242,0037,0247,0022,0150,0036,0274,0241,0144,0047,0342,0321,0206,0154,0173,0254, \ +0204,0033,0140,0271,0206,0211,0300,0312,0323,0331,0210,0153,0105,0016,0205,0064, \ +0037,0235,0221,0270,0050,0031,0106,0044,0006,0144,0010,0172,0260,0030,0204,0133, \ +0030,0047,0364,0001,0122,0003,0146,0225,0043,0355,0242,0025,0275,0014,0325,0310, \ +0140,0110,0022,0074,0213,0134,0342,0222,0014,0072,0050,0310,0147,0242,0000,0334, \ +0303,0310,0140,0053,0070,0141,0054,0057,0103,0124,0061,0126,0322,0014,0373,0125, \ +0323,0130,0012,0324,0304,0062,0141,0366,0260,0024,0263,0015,0064,0046,0357,0245, \ +0077,0076,0235,0041,0325,0203,0031,0006,0052,0261,0203,0006,0320,0163,0136,0203, \ +0146,0154,0021,0250,0354,0367,0166,0302,0372,0164,0311,0165,0145,0073,0130,0356, \ +0271,0112,0371,0147,0212,0164,0323,0111,0301,0230,0363,0351,0203,0111,0224,0131, \ +0045,0254,0104,0060,0324,0120,0313,0052,0301,0142,0220,0365,0137,0231,0213,0250, \ +0332,0312,0304,0121,0203,0334,0324,0140,0214,0031,0265,0045,0067,0241,0130,0042, \ +0012,0241,0120,0273,0265,0121,0212,0014,0125,0105,0005,0210,0243,0212,0102,0250, \ +0202,0252,0141,0132,0254,0125,0222,0017,0164,0111,0101,0212,0304,0143,0021,0014, \ +0064,0035,0206,0113,0164,0246,0042,0056,0171,0036,0237,0345,0102,0353,0076,0117, \ +0220,0117,0335,0260,0014,0122,0123,0255,0376,0332,0252,0027,0375,0212,0336,0213, \ +0321,0041,0056,0306,0013,0325,0074,0170,0033,0154,0247,0156,0000,0304,0115,0367, \ +0021,0037,0126,0000,0233,0111,0336,0300,0105,0132,0152,0117,0212,0146,0050,0305, \ +0004,0130,0043,0023,0050,0145,0251,0203,0005,0051,0067,0061,0160,0050,0213,0131, \ +0143,0040,0250,0342,0320,0105,0225,0276,0034,0146,0214,0352,0045,0360,0257,0323, \ +0375,0134,0364,0077,0135,0115,0175,0340,0163,0215,0265,0301,0070,0357,0076,0043, \ +0275,0263,0115,0350,0003,0325,0324,0034,0070,0276,0003,0206,0057,0111,0353,0366, \ +0106,0364,0047,0226,0335,0003,0250,0365,0312,0116,0023,0351,0247,0275,0313,0264, \ +0367,0275,0012,0112,0224,0100,0116,0031,0120,0346,0366,0046,0336,0316,0351,0251, \ +0221,0077,0015,0047,0321,0331,0004,0126,0002,0371,0065,0212,0210,0052,0202,0052, \ +0246,0006,0104,0233,0210,0335,0272,0006,0036,0144,0120,0214,0357,0200,0207,0256, \ +0035,0370,0142,0301,0021,0014,0113,0146,0346,0064,0301,0015,0316,0140,0240,0240, \ +0214,0120,0140,0304,0102,0105,0210,0260,0231,0055,0003,0020,0360,0046,0237,0154, \ +0237,0004,0021,0210,0250,0311,0070,0114,0140,0227,0252,0006,0307,0317,0114,0110, \ +0157,0170,0301,0061,0052,0025,0044,0224,0207,0164,0060,0104,0240,0305,0140,0211, \ +0014,0234,0352,0236,0075,0170,0020,0352,0044,0220,0130,0101,0227,0047,0001,0132, \ +0225,0216,0304,0353,0166,0007,0116,0215,0322,0344,0347,0007,0111,0163,0134,0160, \ +0166,0247,0327,0011,0023,0001,0266,0332,0320,0330,0123,0146,0053,0244,0215,0020, \ +0042,0175,0060,0012,0332,0123,0164,0203,0042,0040,0261,0266,0211,0005,0232,0061, \ +0103,0253,0106,0040,0062,0021,0047,0321,0254,0207,0226,0246,0310,0152,0210,0226, \ +0304,0133,0001,0100,0113,0152,0132,0045,0024,0240,0215,0262,0126,0322,0123,0303, \ +0136,0204,0226,0163,0247,0164,0316,0322,0023,0327,0256,0237,0171,0271,0241,0046, \ +0051,0236,0026,0241,0230,0206,0005,0370,0064,0302,0133,0137,0317,0012,0134,0322, \ +0137,0162,0162,0366,0375,0170,0321,0341,0260,0205,0152,0132,0176,0064,0264,0374, \ +0060,0076,0371,0305,0352,0360,0344,0043,0265,0230,0064,0250,0322,0073,0365,0245, \ +0006,0231,0234,0067,0323,0030,0141,0324,0022,0372,0151,0325,0063,0176,0216,0374, \ +0105,0233,0164,0205,0325,0070,0072,0175,0127,0126,0335,0361,0116,0332,0110,0310, \ +0344,0032,0301,0256,0100,0331,0351,0176,0027,0265,0352,0212,0111,0202,0027,0012, \ +0242,0257,0222,0007,0002,0235,0234,0273,0162,0310,0343,0305,0214,0061,0351,0240, \ +0341,0230,0250,0007,0126,0204,0221,0075,0210,0015,0316,0231,0263,0247,0241,0017, \ +0035,0203,0236,0102,0136,0003,0305,0255,0072,0357,0114,0372,0135,0204,0131,0130, \ +0214,0033,0202,0172,0373,0214,0271,0344,0041,0213,0162,0331,0310,0044,0340,0162, \ +0361,0221,0061,0256,0233,0347,0161,0343,0155,0161,0350,0030,0206,0120,0247,0132, \ +0135,0366,0246,0243,0312,0365,0162,0211,0150,0274,0226,0232,0167,0141,0343,0252, \ +0040,0255,0162,0302,0201,0260,0152,0036,0175,0372,0101,0045,0332,0306,0125,0202, \ +0106,0311,0152,0014,0061,0173,0371,0046,0201,0033,0362,0201,0214,0136,0205,0272, \ +0045,0362,0322,0243,0040,0171,0102,0223,0043,0233,0141,0264,0213,0060,0120,0244, \ +0356,0243,0226,0257,0062,0232,0224,0255,0315,0354,0216,0053,0074,0337,0142,0030, \ +0334,0201,0354,0043,0114,0224,0123,0232,0250,0040,0026,0273,0157,0307,0104,0324, \ +0070,0303,0104,0350,0362,0302,0010,0131,0304,0034,0161,0056,0020,0120,0020,0062, \ +0100,0162,0044,0330,0336,0000,0337,0223,0267,0035,0232,0203,0125,0112,0070,0314, \ +0264,0152,0262,0153,0252,0300,0060,0244,0256,0175,0110,0272,0246,0302,0042,0360, \ +0262,0213,0207,0022,0367,0306,0143,0303,0102,0251,0215,0141,0044,0221,0033,0312, \ +0325,0256,0227,0155,0003,0010,0362,0043,0206,0044,0121,0230,0033,0204,0043,0046, \ +0153,0120,0302,0036,0115,0206,0042,0155,0214,0261,0043,0346,0235,0126,0070,0073, \ +0124,0201,0162,0325,0012,0026,0150,0214,0363,0231,0355,0073,0272,0162,0250,0273, \ +0107,0114,0233,0211,0354,0004,0165,0175,0363,0310,0327,0013,0303,0052,0252,0344, \ +0322,0106,0200,0363,0202,0270,0231,0147,0125,0216,0020,0221,0240,0000,0375,0267, \ +0003,0340,0016,0327,0376,0113,0261,0053,0201,0212,0062,0070,0321,0247,0367,0123, \ +0311,0114,0025,0006,0015,0111,0015,0050,0032,0323,0134,0032,0143,0150,0261,0217, \ +0225,0226,0013,0303,0026,0263,0154,0347,0007,0175,0037,0273,0300,0333,0016,0326, \ +0334,0205,0100,0320,0253,0202,0257,0040,0130,0121,0235,0015,0204,0324,0070,0263, \ +0222,0101,0223,0056,0346,0244,0024,0045,0200,0161,0155,0023,0163,0114,0161,0125, \ +0137,0142,0037,0201,0070,0012,0164,0113,0031,0272,0175,0076,0074,0264,0042,0075, \ +0354,0064,0350,0251,0024,0357,0301,0203,0007,0023,0264,0231,0052,0121,0104,0361, \ +0116,0144,0020,0360,0103,0342,0352,0313,0066,0324,0267,0146,0154,0041,0241,0221, \ +0050,0325,0154,0014,0061,0320,0367,0132,0170,0302,0301,0376,0255,0144,0351,0304, \ +0051,0206,0103,0207,0221,0336,0140,0223,0034,0041,0253,0123,0246,0162,0157,0323, \ +0134,0040,0333,0104,0151,0246,0270,0107,0175,0300,0144,0147,0010,0325,0231,0065, \ +0222,0320,0031,0360,0215,0071,0270,0332,0331,0032,0157,0241,0274,0065,0136,0023, \ +0313,0244,0071,0004,0210,0275,0164,0157,0014,0351,0312,0312,0145,0012,0236,0114, \ +0204,0033,0232,0071,0064,0016,0250,0101,0272,0246,0372,0173,0160,0171,0060,0236, \ +0050,0051,0042,0300,0131,0024,0044,0137,0277,0363,0313,0131,0047,0261,0201,0245, \ +0000,0241,0167,0061,0014,0062,0120,0072,0127,0332,0351,0141,0152,0245,0010,0004, \ +0225,0221,0021,0101,0050,0104,0230,0074,0204,0273,0021,0046,0041,0125,0100,0152, \ +0224,0005,0064,0100,0231,0213,0124,0321,0125,0115,0370,0160,0035,0276,0135,0032, \ +0055,0140,0213,0316,0102,0242,0234,0120,0014,0120,0251,0201,0100,0306,0047,0045, \ +0207,0071,0033,0043,0276,0264,0110,0304,0337,0151,0161,0123,0307,0256,0227,0304, \ +0170,0300,0072,0172,0232,0021,0152,0322,0211,0007,0167,0151,0217,0162,0075,0325, \ +0112,0340,0357,0333,0231,0312,0267,0176,0060,0002,0331,0207,0104,0247,0060,0277, \ +0203,0350,0141,0310,0143,0115,0060,0130,0104,0117,0177,0221,0371,0272,0365,0364, \ +0116,0375,0275,0034,0036,0315,0274,0253,0217,0123,0247,0211,0164,0257,0247,0040, \ +0131,0346,0301,0211,0360,0032,0344,0133,0042,0147,0056,0201,0210,0026,0326,0161, \ +0275,0027,0142,0321,0026,0107,0026,0115,0110,0242,0045,0013,0244,0305,0315,0314, \ +0011,0302,0006,0201,0255,0324,0207,0100,0322,0310,0235,0067,0002,0366,0005,0171, \ +0040,0306,0304,0034,0012,0334,0146,0102,0311,0235,0363,0173,0013,0051,0263,0261, \ +0272,0003,0102,0005,0205,0305,0201,0166,0170,0067,0150,0042,0011,0053,0051,0022, \ +0212,0030,0214,0040,0270,0076,0334,0314,0214,0260,0227,0250,0162,0224,0067,0000, \ +0237,0275,0334,0137,0010,0256,0054,0314,0160,0223,0042,0273,0003,0053,0211,0125, \ +0205,0143,0031,0151,0260,0252,0251,0104,0137,0142,0320,0073,0341,0134,0313,0312, \ +0244,0041,0220,0144,0251,0224,0062,0142,0353,0046,0020,0245,0045,0355,0017,0130, \ +0126,0022,0201,0112,0205,0146,0314,0006,0003,0214,0254,0361,0016,0325,0061,0174, \ +0074,0010,0123,0246,0265,0032,0100,0304,0013,0013,0344,0222,0360,0367,0265,0354, \ +0022,0204,0201,0027,0164,0343,0312,0016,0231,0027,0251,0160,0056,0012,0212,0031, \ +0063,0064,0350,0116,0250,0151,0151,0166,0005,0220,0013,0051,0224,0160,0350,0116, \ +0206,0324,0055,0144,0212,0010,0103,0262,0251,0314,0012,0027,0101,0000,0250,0135, \ +0315,0132,0240,0201,0130,0240,0245,0270,0223,0141,0164,0205,0131,0041,0142,0244, \ +0157,0171,0172,0144,0323,0213,0212,0241,0240,0160,0136,0044,0113,0201,0203,0232, \ +0145,0301,0073,0122,0002,0306,0142,0374,0161,0162,0345,0105,0205,0204,0203,0220, \ +0051,0126,0321,0125,0232,0260,0032,0142,0214,0140,0272,0025,0204,0116,0100,0263, \ +0202,0303,0106,0026,0056,0146,0007,0113,0212,0071,0270,0270,0307,0034,0025,0152, \ +0136,0073,0022,0146,0062,0060,0066,0221,0222,0106,0245,0006,0375,0277,0156,0224, \ +0276,0122,0247,0303,0315,0357,0020,0062,0323,0100,0203,0070,0043,0254,0203,0334, \ +0144,0246,0216,0314,0252,0240,0013,0213,0122,0053,0276,0154,0353,0351,0276,0173, \ +0374,0042,0073,0230,0203,0310,0026,0050,0315,0025,0204,0167,0234,0231,0070,0300, \ +0016,0041,0141,0244,0220,0016,0231,0140,0254,0060,0047,0024,0270,0051,0204,0054, \ +0025,0017,0220,0147,0013,0134,0053,0066,0306,0162,0114,0270,0214,0321,0064,0301, \ +0146,0130,0341,0010,0226,0242,0245,0204,0213,0020,0356,0245,0210,0233,0312,0054, \ +0227,0122,0034,0334,0351,0066,0205,0016,0114,0314,0020,0142,0322,0135,0363,0010, \ +0060,0142,0260,0337,0022,0030,0356,0111,0227,0344,0140,0157,0024,0214,0127,0052, \ +0221,0066,0250,0303,0200,0037,0127,0030,0171,0346,0006,0263,0210,0271,0262,0045, \ +0065,0310,0166,0366,0244,0346,0301,0245,0136,0051,0052,0242,0046,0004,0155,0121, \ +0301,0340,0153,0312,0353,0261,0225,0336,0264,0076,0053,0366,0173,0135,0065,0274, \ +0075,0022,0032,0057,0215,0224,0164,0064,0244,0250,0263,0057,0353,0140,0145,0223, \ +0042,0136,0001,0014,0061,0010,0060,0142,0014,0132,0116,0267,0103,0156,0052,0114, \ +0376,0121,0001,0120,0320,0115,0130,0055,0244,0004,0243,0174,0163,0272,0227,0267, \ +0112,0362,0007,0206,0253,0005,0343,0113,0323,0345,0357,0046,0150,0341,0313,0003, \ +0010,0204,0323,0136,0212,0225,0044,0107,0325,0226,0335,0271,0364,0024,0244,0355, \ +0220,0215,0252,0301,0153,0016,0210,0347,0304,0126,0141,0146,0271,0233,0324,0241, \ +0232,0134,0306,0145,0141,0213,0165,0246,0042,0341,0126,0055,0116,0334,0206,0003, \ +0200,0072,0232,0326,0241,0224,0021,0356,0016,0316,0316,0214,0232,0060,0131,0044, \ +0213,0040,0244,0235,0254,0010,0121,0222,0302,0130,0266,0120,0330,0150,0065,0101, \ +0265,0330,0136,0136,0303,0014,0326,0154,0317,0110,0252,0044,0002,0030,0042,0365, \ +0205,0072,0213,0332,0060,0215,0052,0044,0025,0267,0132,0136,0160,0022,0303,0271, \ +0076,0040,0137,0200,0231,0124,0150,0300,0141,0367,0111,0104,0133,0163,0163,0043, \ +0036,0355,0044,0235,0316,0014,0042,0024,0262,0046,0252,0107,0064,0163,0060,0114, \ +0102,0227,0244,0252,0315,0267,0162,0051,0171,0171,0271,0252,0242,0366,0210,0006, \ +0306,0227,0227,0055,0274,0127,0323,0226,0273,0105,0041,0330,0330,0033,0135,0220, \ +0310,0201,0361,0342,0163,0074,0055,0124,0024,0122,0266,0333,0115,0046,0314,0236, \ +0133,0142,0172,0146,0222,0150,0207,0202,0033,0077,0143,0303,0353,0327,0345,0343, \ +0373,0073,0077,0157,0022,0257,0123,0102,0337,0220,0372,0000,0370,0153,0271,0345, \ +0166,0373,0113,0315,0201,0004,0020,0165,0114,0022,0122,0376,0251,0077,0316,0250, \ +0040,0057,0355,0137,0233,0120,0223,0307,0235,0147,0113,0313,0230,0233,0166,0152, \ +0016,0277,0000,0173,0270,0166,0143,0314,0054,0317,0030,0057,0067,0074,0310,0046, \ +0114,0063,0036,0172,0321,0070,0112,0175,0076,0266,0360,0074,0122,0104,0167,0205, \ +0317,0213,0134,0133,0003,0033,0055,0115,0346,0157,0235,0260,0113,0215,0211,0370, \ +0341,0044,0102,0060,0235,0376,0303,0012,0235,0033,0251,0274,0013,0010,0341,0002, \ +0376,0107,0201,0015,0374,0231,0121,0365,0263,0073,0300,0010,0115,0366,0243,0214, \ +0317,0112,0200,0217,0174,0003,0166,0372,0352,0207,0214,0147,0237,0212,0006,0374, \ +0317,0016,0000,0171,0347,0224,0206,0021,0364,0200,0042,0001,0153,0001,0333,0001, \ +0152,0321,0304,0365,0302,0206,0043,0241,0207,0006,0206,0031,0026,0224,0242,0365, \ +0217,0061,0374,0373,0241,0315,0175,0146,0263,0340,0304,0020,0212,0210,0260,0030, \ +0260,0104,0212,0244,0277,0175,0233,0203,0222,0041,0344,0205,0105,0042,0244,0130, \ +0140,0337,0236,0071,0063,0046,0360,0350,0210,0365,0345,0055,0155,0052,0264,0023, \ +0271,0200,0300,0203,0043,0146,0333,0374,0071,0062,0052,0165,0100,0344,0370,0374, \ +0225,0163,0270,0067,0027,0213,0312,0245,0371,0300,0156,0257,0134,0364,0063,0156, \ +0133,0225,0003,0063,0121,0037,0142,0150,0072,0031,0251,0376,0131,0152,0347,0263, \ +0215,0342,0046,0021,0121,0160,0341,0170,0246,0107,0224,0323,0104,0302,0146,0141, \ +0035,0044,0260,0214,0111,0327,0102,0030,0004,0172,0316,0101,0146,0303,0042,0013, \ +0115,0021,0204,0365,0033,0250,0262,0250,0370,0324,0041,0042,0366,0201,0260,0154, \ +0050,0113,0213,0043,0005,0207,0277,0303,0321,0313,0114,0017,0315,0335,0230,0310, \ +0151,0056,0231,0215,0224,0066,0022,0176,0163,0002,0142,0047,0266,0022,0041,0200, \ +0336,0366,0001,0113,0216,0151,0065,0343,0157,0077,0216,0230,0166,0153,0114,0046, \ +0155,0047,0247,0205,0054,0073,0142,0146,0157,0327,0055,0272,0271,0204,0163,0014, \ +0251,0154,0064,0321,0175,0020,0111,0020,0220,0260,0317,0040,0252,0154,0200,0204, \ +0274,0055,0103,0003,0314,0372,0063,0010,0336,0330,0305,0336,0112,0012,0077,0127, \ +0073,0210,0173,0370,0023,0364,0147,0313,0131,0353,0100,0244,0173,0055,0235,0141, \ +0265,0301,0206,0144,0037,0363,0233,0331,0234,0333,0136,0320,0377,0206,0112,0175, \ +0337,0172,0175,0072,0303,0157,0274,0244,0117,0257,0007,0074,0314,0244,0301,0162, \ +0210,0151,0022,0322,0143,0101,0274,0152,0053,0307,0052,0011,0120,0117,0333,0176, \ +0342,0376,0007,0115,0260,0010,0147,0221,0153,0343,0074,0046,0054,0102,0202,0364, \ +0120,0336,0002,0244,0044,0111,0010,0205,0045,0062,0207,0331,0221,0343,0103,0026, \ +0113,0333,0152,0221,0060,0244,0040,0211,0016,0151,0121,0106,0270,0040,0361,0345, \ +0323,0067,0264,0006,0135,0112,0043,0276,0026,0132,0024,0230,0251,0122,0161,0012, \ +0246,0151,0300,0141,0204,0345,0220,0014,0110,0012,0120,0050,0246,0056,0304,0203, \ +0251,0273,0326,0312,0124,0136,0020,0160,0120,0127,0230,0030,0124,0352,0315,0136, \ +0155,0170,0240,0350,0061,0056,0321,0117,0350,0310,0253,0136,0206,0134,0333,0056, \ +0312,0323,0262,0012,0251,0007,0365,0302,0063,0323,0176,0035,0330,0024,0004,0267, \ +0104,0155,0017,0126,0103,0360,0104,0303,0030,0062,0357,0204,0202,0166,0301,0035, \ +0200,0206,0020,0067,0015,0301,0352,0257,0103,0350,0135,0021,0031,0367,0307,0152, \ +0243,0111,0027,0264,0332,0302,0232,0222,0057,0263,0063,0364,0346,0337,0145,0376, \ +0133,0040,0375,0314,0335,0361,0367,0244,0000,0242,0000,0177,0121,0142,0356,0321, \ +0372,0167,0133,0351,0363,0212,0174,0267,0131,0344,0014,0036,0337,0200,0360,0056, \ +0235,0361,0005,0202,0365,0307,0266,0212,0262,0317,0307,0306,0256,0230,0142,0037, \ +0236,0364,0353,0057,0014,0172,0224,0336,0230,0323,0265,0135,0045,0377,0105,0334, \ +0221,0116,0024,0044,0072,0300,0351,0205,0200, \ diff --git a/include-minimal/applet_tables.h b/include-minimal/applet_tables.h index 2e9b5e7..a082ee1 100644 --- a/include-minimal/applet_tables.h +++ b/include-minimal/applet_tables.h @@ -520,5 +520,3 @@ const uint16_t applet_nameofs[] ALIGN2 = { 0x0412, }; - -#define MAX_APPLET_NAME_LEN 11 diff --git a/include-minimal/applets.h b/include-minimal/applets.h index 7b47429..f24268a 100644 --- a/include-minimal/applets.h +++ b/include-minimal/applets.h @@ -53,6 +53,12 @@ s - suid type: # define APPLET_NOEXEC(name,main,l,s,name2) LINK l name # define APPLET_NOFORK(name,main,l,s,name2) LINK l name +#elif defined(MAKE_SUID) +# define APPLET(name,l,s) SUID s l name +# define APPLET_ODDNAME(name,main,l,s,name2) SUID s l name +# define APPLET_NOEXEC(name,main,l,s,name2) SUID s l name +# define APPLET_NOFORK(name,main,l,s,name2) SUID s l name + #else static struct bb_applet applets[] = { /* name, main, location, need_suid */ # define APPLET(name,l,s) { #name, #name, l, s }, @@ -67,8 +73,30 @@ s - suid type: #endif +IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP)) +IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP)) +IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat)) IF_BUNZIP2(APPLET(bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_BUNZIP2(APPLET_ODDNAME(bzcat, bunzip2, BB_DIR_USR_BIN, BB_SUID_DROP, bzcat)) +IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat)) +IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma)) +IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat)) +IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz)) +IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP)) +IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb)) +IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP)) +IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP)) +IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat)) +IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop)) +IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP)) +IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP)) +IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_DATE(APPLET(date, BB_DIR_BIN, BB_SUID_DROP)) IF_HOSTID(APPLET_NOFORK(hostid, hostid, BB_DIR_USR_BIN, BB_SUID_DROP, hostid)) IF_GROUPS(APPLET_NOEXEC(groups, id, BB_DIR_USR_BIN, BB_SUID_DROP, groups)) @@ -77,7 +105,12 @@ IF_TOUCH(APPLET_NOFORK(touch, touch, BB_DIR_BIN, BB_SUID_DROP, touch)) IF_BASE64(APPLET(base64, BB_DIR_BIN, BB_SUID_DROP)) IF_USERS(APPLET_ODDNAME(users, who, BB_DIR_USR_BIN, BB_SUID_DROP, users)) IF_WHO( APPLET( who, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk)) +IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP)) IF_PATCH(APPLET(patch, BB_DIR_USR_BIN, BB_SUID_DROP)) +IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP)) IF_VI(APPLET(vi, BB_DIR_BIN, BB_SUID_DROP)) IF_FIND(APPLET_NOEXEC(find, find, BB_DIR_USR_BIN, BB_SUID_DROP, find)) IF_GREP(APPLET(grep, BB_DIR_BIN, BB_SUID_DROP)) @@ -95,7 +128,8 @@ IF_ADD_SHELL( APPLET_ODDNAME(add-shell , add_remove_shell, BB_DIR_USR_SBIN, IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, remove_shell)) IF_CONSPY(APPLET(conspy, BB_DIR_BIN, BB_SUID_DROP)) IF_NANDWRITE(APPLET(nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump)) +IF_NANDDUMP(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump)) +IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_SETSERIAL(APPLET(setserial, BB_DIR_BIN, BB_SUID_DROP)) IF_UBIATTACH(APPLET_ODDNAME(ubiattach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiattach)) IF_UBIDETACH(APPLET_ODDNAME(ubidetach, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubidetach)) @@ -103,16 +137,17 @@ IF_UBIMKVOL(APPLET_ODDNAME(ubimkvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, u IF_UBIRMVOL(APPLET_ODDNAME(ubirmvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirmvol)) IF_UBIRSVOL(APPLET_ODDNAME(ubirsvol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubirsvol)) IF_UBIUPDATEVOL(APPLET_ODDNAME(ubiupdatevol, ubi_tools, BB_DIR_USR_SBIN, BB_SUID_DROP, ubiupdatevol)) +IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) IF_DEPMOD(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP)) IF_INSMOD(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP)) IF_LSMOD(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP)) IF_MODINFO(APPLET(modinfo, BB_DIR_SBIN, BB_SUID_DROP)) +IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe)) IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe)) IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe)) IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, modprobe)) -IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) IF_RMMOD(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP)) IF_NBDCLIENT(APPLET_ODDNAME(nbd-client, nbdclient, BB_DIR_USR_SBIN, BB_SUID_DROP, nbdclient)) IF_PING(APPLET(ping, BB_DIR_BIN, BB_SUID_MAYBE)) @@ -146,16 +181,13 @@ IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP)) IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP)) -IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP)) IF_ARPING(APPLET(arping, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk)) IF_BASENAME(APPLET_NOFORK(basename, basename, BB_DIR_USR_BIN, BB_SUID_DROP, basename)) IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP)) IF_BEEP(APPLET(beep, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_BLKID(APPLET(blkid, BB_DIR_SBIN, BB_SUID_DROP)) IF_BRCTL(APPLET(brctl, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CAL(APPLET(cal, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat)) IF_CATV(APPLET(catv, BB_DIR_BIN, BB_SUID_DROP)) @@ -172,10 +204,8 @@ IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CKSUM(APPLET_NOEXEC(cksum, cksum, BB_DIR_USR_BIN, BB_SUID_DROP, cksum)) IF_CLEAR(APPLET(clear, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp)) -IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP)) IF_CROND(APPLET(crond, BB_DIR_USR_SBIN, BB_SUID_DROP)) /* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */ IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) @@ -190,21 +220,17 @@ IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP)) IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP)) IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP)) IF_DHCPRELAY(APPLET(dhcprelay, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname)) IF_DMESG(APPLET(dmesg, BB_DIR_BIN, BB_SUID_DROP)) IF_DNSD(APPLET(dnsd, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, BB_DIR_BIN, BB_SUID_DROP, dnsdomainname)) IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix)) -IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb)) IF_DU(APPLET(du, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_DUMPKMAP(APPLET(dumpkmap, BB_DIR_BIN, BB_SUID_DROP)) IF_DUMPLEASES(APPLET(dumpleases, BB_DIR_USR_BIN, BB_SUID_DROP)) //IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP)) //IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label)) IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo)) -IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP)) IF_EJECT(APPLET(eject, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_ENV(APPLET_NOEXEC(env, env, BB_DIR_USR_BIN, BB_SUID_DROP, env)) IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envdir)) @@ -243,8 +269,6 @@ IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP)) IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP)) -IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP)) -IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP)) IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd)) IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP)) IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head)) @@ -303,13 +327,9 @@ IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls)) IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP)) IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_LSUSB(APPLET(lsusb, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat)) -IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma)) -IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP)) -IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat)) IF_MAKEDEVS(APPLET(makedevs, BB_DIR_SBIN, BB_SUID_DROP)) IF_MAKEMIME(APPLET(makemime, BB_DIR_BIN, BB_SUID_DROP)) -IF_MAN(APPLET(man, BB_DIR_SBIN, BB_SUID_DROP)) +IF_MAN(APPLET(man, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_MATCHPATHCON(APPLET(matchpathcon, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, md5sum)) IF_MICROCOM(APPLET(microcom, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -370,12 +390,9 @@ IF_RENICE(APPLET(renice, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESET(APPLET(reset, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESIZE(APPLET(resize, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, BB_DIR_SBIN, BB_SUID_DROP, restorecon)) -IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_RM(APPLET_NOFORK(rm, rm, BB_DIR_BIN, BB_SUID_DROP, rm)) IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir)) IF_ROUTE(APPLET(route, BB_DIR_SBIN, BB_SUID_DROP)) -IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP)) -IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RTCWAKE(APPLET(rtcwake, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts)) IF_RUNCON(APPLET(runcon, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -385,7 +402,6 @@ IF_RUNSVDIR(APPLET(runsvdir, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RX(APPLET(rx, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_SCRIPT(APPLET(script, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_SCRIPTREPLAY(APPLET(scriptreplay, BB_DIR_BIN, BB_SUID_DROP)) -IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP)) IF_SELINUXENABLED(APPLET(selinuxenabled, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_SENDMAIL(APPLET(sendmail, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_SEQ(APPLET_NOFORK(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq)) @@ -429,7 +445,6 @@ IF_BB_SYSCTL(APPLET(sysctl, BB_DIR_SBIN, BB_SUID_DROP)) IF_SYSLOGD(APPLET(syslogd, BB_DIR_SBIN, BB_SUID_DROP)) IF_TAC(APPLET_NOEXEC(tac, tac, BB_DIR_USR_BIN, BB_SUID_DROP, tac)) IF_TAIL(APPLET(tail, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP)) IF_TASKSET(APPLET(taskset, BB_DIR_USR_BIN, BB_SUID_DROP)) /* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */ IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, tcpsvd)) @@ -458,14 +473,9 @@ IF_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd)) IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP)) IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP)) -IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP)) IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand)) IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos)) -IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop)) -IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep)) IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -474,21 +484,17 @@ IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP)) /* Needs to be run by root or be suid root - needs to change uid and gid: */ IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP)) -/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */ -IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP)) IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP)) IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami)) -IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat)) -IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz)) IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes)) -IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat)) IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP)) -#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) +#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) \ + && !defined(MAKE_LINKS) && !defined(MAKE_SUID) }; #endif diff --git a/include-minimal/autoconf.h b/include-minimal/autoconf.h index 63d7e72..f9477fb 100644 --- a/include-minimal/autoconf.h +++ b/include-minimal/autoconf.h @@ -1,12 +1,16 @@ /* * Automatically generated C config: don't edit - * Busybox version: 1.21.1-kk + * Busybox version: 1.22.1 */ -#define AUTOCONF_TIMESTAMP "2013-11-24 11:52 +0100" +#define AUTOCONF_TIMESTAMP "2014-04-04 19:53 +0100" #define CONFIG_HAVE_DOT_CONFIG 1 #define ENABLE_HAVE_DOT_CONFIG 1 -#define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__ "CONFIG_HAVE_DOT_CONFIG" +#else +# define IF_HAVE_DOT_CONFIG(...) __VA_ARGS__ +#endif #define IF_NOT_HAVE_DOT_CONFIG(...) /* @@ -34,11 +38,19 @@ #define IF_NOT_USE_PORTABLE_CODE(...) __VA_ARGS__ #define CONFIG_PLATFORM_LINUX 1 #define ENABLE_PLATFORM_LINUX 1 -#define IF_PLATFORM_LINUX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PLATFORM_LINUX(...) __VA_ARGS__ "CONFIG_PLATFORM_LINUX" +#else +# define IF_PLATFORM_LINUX(...) __VA_ARGS__ +#endif #define IF_NOT_PLATFORM_LINUX(...) #define CONFIG_FEATURE_BUFFERS_USE_MALLOC 1 #define ENABLE_FEATURE_BUFFERS_USE_MALLOC 1 -#define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__ "CONFIG_FEATURE_BUFFERS_USE_MALLOC" +#else +# define IF_FEATURE_BUFFERS_USE_MALLOC(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BUFFERS_USE_MALLOC(...) #undef CONFIG_FEATURE_BUFFERS_GO_ON_STACK #define ENABLE_FEATURE_BUFFERS_GO_ON_STACK 0 @@ -50,15 +62,27 @@ #define IF_NOT_FEATURE_BUFFERS_GO_IN_BSS(...) __VA_ARGS__ #define CONFIG_SHOW_USAGE 1 #define ENABLE_SHOW_USAGE 1 -#define IF_SHOW_USAGE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHOW_USAGE(...) __VA_ARGS__ "CONFIG_SHOW_USAGE" +#else +# define IF_SHOW_USAGE(...) __VA_ARGS__ +#endif #define IF_NOT_SHOW_USAGE(...) #define CONFIG_FEATURE_VERBOSE_USAGE 1 #define ENABLE_FEATURE_VERBOSE_USAGE 1 -#define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__ "CONFIG_FEATURE_VERBOSE_USAGE" +#else +# define IF_FEATURE_VERBOSE_USAGE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VERBOSE_USAGE(...) #define CONFIG_FEATURE_COMPRESS_USAGE 1 #define ENABLE_FEATURE_COMPRESS_USAGE 1 -#define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__ "CONFIG_FEATURE_COMPRESS_USAGE" +#else +# define IF_FEATURE_COMPRESS_USAGE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_COMPRESS_USAGE(...) #undef CONFIG_FEATURE_INSTALLER #define ENABLE_FEATURE_INSTALLER 0 @@ -66,7 +90,11 @@ #define IF_NOT_FEATURE_INSTALLER(...) __VA_ARGS__ #define CONFIG_INSTALL_NO_USR 1 #define ENABLE_INSTALL_NO_USR 1 -#define IF_INSTALL_NO_USR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INSTALL_NO_USR(...) __VA_ARGS__ "CONFIG_INSTALL_NO_USR" +#else +# define IF_INSTALL_NO_USR(...) __VA_ARGS__ +#endif #define IF_NOT_INSTALL_NO_USR(...) #undef CONFIG_LOCALE_SUPPORT #define ENABLE_LOCALE_SUPPORT 0 @@ -74,7 +102,11 @@ #define IF_NOT_LOCALE_SUPPORT(...) __VA_ARGS__ #define CONFIG_UNICODE_SUPPORT 1 #define ENABLE_UNICODE_SUPPORT 1 -#define IF_UNICODE_SUPPORT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNICODE_SUPPORT(...) __VA_ARGS__ "CONFIG_UNICODE_SUPPORT" +#else +# define IF_UNICODE_SUPPORT(...) __VA_ARGS__ +#endif #define IF_NOT_UNICODE_SUPPORT(...) #undef CONFIG_UNICODE_USING_LOCALE #define ENABLE_UNICODE_USING_LOCALE 0 @@ -86,11 +118,19 @@ #define IF_NOT_FEATURE_CHECK_UNICODE_IN_ENV(...) __VA_ARGS__ #define CONFIG_SUBST_WCHAR 63 #define ENABLE_SUBST_WCHAR 1 -#define IF_SUBST_WCHAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SUBST_WCHAR(...) __VA_ARGS__ "CONFIG_SUBST_WCHAR" +#else +# define IF_SUBST_WCHAR(...) __VA_ARGS__ +#endif #define IF_NOT_SUBST_WCHAR(...) #define CONFIG_LAST_SUPPORTED_WCHAR 0 #define ENABLE_LAST_SUPPORTED_WCHAR 1 -#define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__ "CONFIG_LAST_SUPPORTED_WCHAR" +#else +# define IF_LAST_SUPPORTED_WCHAR(...) __VA_ARGS__ +#endif #define IF_NOT_LAST_SUPPORTED_WCHAR(...) #undef CONFIG_UNICODE_COMBINING_WCHARS #define ENABLE_UNICODE_COMBINING_WCHARS 0 @@ -98,7 +138,11 @@ #define IF_NOT_UNICODE_COMBINING_WCHARS(...) __VA_ARGS__ #define CONFIG_UNICODE_WIDE_WCHARS 1 #define ENABLE_UNICODE_WIDE_WCHARS 1 -#define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__ "CONFIG_UNICODE_WIDE_WCHARS" +#else +# define IF_UNICODE_WIDE_WCHARS(...) __VA_ARGS__ +#endif #define IF_NOT_UNICODE_WIDE_WCHARS(...) #undef CONFIG_UNICODE_BIDI_SUPPORT #define ENABLE_UNICODE_BIDI_SUPPORT 0 @@ -110,11 +154,19 @@ #define IF_NOT_UNICODE_NEUTRAL_TABLE(...) __VA_ARGS__ #define CONFIG_UNICODE_PRESERVE_BROKEN 1 #define ENABLE_UNICODE_PRESERVE_BROKEN 1 -#define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__ "CONFIG_UNICODE_PRESERVE_BROKEN" +#else +# define IF_UNICODE_PRESERVE_BROKEN(...) __VA_ARGS__ +#endif #define IF_NOT_UNICODE_PRESERVE_BROKEN(...) #define CONFIG_LONG_OPTS 1 #define ENABLE_LONG_OPTS 1 -#define IF_LONG_OPTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LONG_OPTS(...) __VA_ARGS__ "CONFIG_LONG_OPTS" +#else +# define IF_LONG_OPTS(...) __VA_ARGS__ +#endif #define IF_NOT_LONG_OPTS(...) #undef CONFIG_FEATURE_DEVPTS #define ENABLE_FEATURE_DEVPTS 0 @@ -138,11 +190,19 @@ #define IF_NOT_FEATURE_PIDFILE(...) __VA_ARGS__ #define CONFIG_PID_FILE_PATH "" #define ENABLE_PID_FILE_PATH 1 -#define IF_PID_FILE_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PID_FILE_PATH(...) __VA_ARGS__ "CONFIG_PID_FILE_PATH" +#else +# define IF_PID_FILE_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_PID_FILE_PATH(...) #define CONFIG_FEATURE_SUID 1 #define ENABLE_FEATURE_SUID 1 -#define IF_FEATURE_SUID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SUID(...) __VA_ARGS__ "CONFIG_FEATURE_SUID" +#else +# define IF_FEATURE_SUID(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SUID(...) #undef CONFIG_FEATURE_SUID_CONFIG #define ENABLE_FEATURE_SUID_CONFIG 0 @@ -162,7 +222,11 @@ #define IF_NOT_FEATURE_PREFER_APPLETS(...) __VA_ARGS__ #define CONFIG_BUSYBOX_EXEC_PATH "/proc/self/exe" #define ENABLE_BUSYBOX_EXEC_PATH 1 -#define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__ "CONFIG_BUSYBOX_EXEC_PATH" +#else +# define IF_BUSYBOX_EXEC_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_BUSYBOX_EXEC_PATH(...) #undef CONFIG_FEATURE_SYSLOG #define ENABLE_FEATURE_SYSLOG 0 @@ -206,23 +270,43 @@ #define IF_NOT_LFS(...) __VA_ARGS__ #define CONFIG_CROSS_COMPILER_PREFIX "arm-eabi-" #define ENABLE_CROSS_COMPILER_PREFIX 1 -#define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__ "CONFIG_CROSS_COMPILER_PREFIX" +#else +# define IF_CROSS_COMPILER_PREFIX(...) __VA_ARGS__ +#endif #define IF_NOT_CROSS_COMPILER_PREFIX(...) #define CONFIG_SYSROOT "" #define ENABLE_SYSROOT 1 -#define IF_SYSROOT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SYSROOT(...) __VA_ARGS__ "CONFIG_SYSROOT" +#else +# define IF_SYSROOT(...) __VA_ARGS__ +#endif #define IF_NOT_SYSROOT(...) #define CONFIG_EXTRA_CFLAGS "-Os -fno-short-enums -fgcse-after-reload -frerun-cse-after-loop -frename-registers" #define ENABLE_EXTRA_CFLAGS 1 -#define IF_EXTRA_CFLAGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXTRA_CFLAGS(...) __VA_ARGS__ "CONFIG_EXTRA_CFLAGS" +#else +# define IF_EXTRA_CFLAGS(...) __VA_ARGS__ +#endif #define IF_NOT_EXTRA_CFLAGS(...) #define CONFIG_EXTRA_LDFLAGS "" #define ENABLE_EXTRA_LDFLAGS 1 -#define IF_EXTRA_LDFLAGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXTRA_LDFLAGS(...) __VA_ARGS__ "CONFIG_EXTRA_LDFLAGS" +#else +# define IF_EXTRA_LDFLAGS(...) __VA_ARGS__ +#endif #define IF_NOT_EXTRA_LDFLAGS(...) #define CONFIG_EXTRA_LDLIBS "" #define ENABLE_EXTRA_LDLIBS 1 -#define IF_EXTRA_LDLIBS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXTRA_LDLIBS(...) __VA_ARGS__ "CONFIG_EXTRA_LDLIBS" +#else +# define IF_EXTRA_LDLIBS(...) __VA_ARGS__ +#endif #define IF_NOT_EXTRA_LDLIBS(...) /* @@ -242,7 +326,11 @@ #define IF_NOT_WERROR(...) __VA_ARGS__ #define CONFIG_NO_DEBUG_LIB 1 #define ENABLE_NO_DEBUG_LIB 1 -#define IF_NO_DEBUG_LIB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NO_DEBUG_LIB(...) __VA_ARGS__ "CONFIG_NO_DEBUG_LIB" +#else +# define IF_NO_DEBUG_LIB(...) __VA_ARGS__ +#endif #define IF_NOT_NO_DEBUG_LIB(...) #undef CONFIG_DMALLOC #define ENABLE_DMALLOC 0 @@ -258,7 +346,11 @@ */ #define CONFIG_INSTALL_APPLET_SYMLINKS 1 #define ENABLE_INSTALL_APPLET_SYMLINKS 1 -#define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__ "CONFIG_INSTALL_APPLET_SYMLINKS" +#else +# define IF_INSTALL_APPLET_SYMLINKS(...) __VA_ARGS__ +#endif #define IF_NOT_INSTALL_APPLET_SYMLINKS(...) #undef CONFIG_INSTALL_APPLET_HARDLINKS #define ENABLE_INSTALL_APPLET_HARDLINKS 0 @@ -286,7 +378,11 @@ #define IF_NOT_INSTALL_SH_APPLET_SCRIPT_WRAPPER(...) __VA_ARGS__ #define CONFIG_PREFIX "/system/xbin/bb" #define ENABLE_PREFIX 1 -#define IF_PREFIX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PREFIX(...) __VA_ARGS__ "CONFIG_PREFIX" +#else +# define IF_PREFIX(...) __VA_ARGS__ +#endif #define IF_NOT_PREFIX(...) /* @@ -302,19 +398,35 @@ #define IF_NOT_FEATURE_RTMINMAX(...) __VA_ARGS__ #define CONFIG_PASSWORD_MINLEN 6 #define ENABLE_PASSWORD_MINLEN 1 -#define IF_PASSWORD_MINLEN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PASSWORD_MINLEN(...) __VA_ARGS__ "CONFIG_PASSWORD_MINLEN" +#else +# define IF_PASSWORD_MINLEN(...) __VA_ARGS__ +#endif #define IF_NOT_PASSWORD_MINLEN(...) #define CONFIG_MD5_SMALL 0 #define ENABLE_MD5_SMALL 1 -#define IF_MD5_SMALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MD5_SMALL(...) __VA_ARGS__ "CONFIG_MD5_SMALL" +#else +# define IF_MD5_SMALL(...) __VA_ARGS__ +#endif #define IF_NOT_MD5_SMALL(...) #define CONFIG_SHA3_SMALL 1 #define ENABLE_SHA3_SMALL 1 -#define IF_SHA3_SMALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA3_SMALL(...) __VA_ARGS__ "CONFIG_SHA3_SMALL" +#else +# define IF_SHA3_SMALL(...) __VA_ARGS__ +#endif #define IF_NOT_SHA3_SMALL(...) #define CONFIG_FEATURE_FAST_TOP 1 #define ENABLE_FEATURE_FAST_TOP 1 -#define IF_FEATURE_FAST_TOP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FAST_TOP(...) __VA_ARGS__ "CONFIG_FEATURE_FAST_TOP" +#else +# define IF_FEATURE_FAST_TOP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FAST_TOP(...) #undef CONFIG_FEATURE_ETC_NETWORKS #define ENABLE_FEATURE_ETC_NETWORKS 0 @@ -322,39 +434,75 @@ #define IF_NOT_FEATURE_ETC_NETWORKS(...) __VA_ARGS__ #define CONFIG_FEATURE_USE_TERMIOS 1 #define ENABLE_FEATURE_USE_TERMIOS 1 -#define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__ "CONFIG_FEATURE_USE_TERMIOS" +#else +# define IF_FEATURE_USE_TERMIOS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_USE_TERMIOS(...) #define CONFIG_FEATURE_EDITING 1 #define ENABLE_FEATURE_EDITING 1 -#define IF_FEATURE_EDITING(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING" +#else +# define IF_FEATURE_EDITING(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING(...) #define CONFIG_FEATURE_EDITING_MAX_LEN 1024 #define ENABLE_FEATURE_EDITING_MAX_LEN 1 -#define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_MAX_LEN" +#else +# define IF_FEATURE_EDITING_MAX_LEN(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_MAX_LEN(...) #define CONFIG_FEATURE_EDITING_VI 1 #define ENABLE_FEATURE_EDITING_VI 1 -#define IF_FEATURE_EDITING_VI(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_VI(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_VI" +#else +# define IF_FEATURE_EDITING_VI(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_VI(...) #define CONFIG_FEATURE_EDITING_HISTORY 256 #define ENABLE_FEATURE_EDITING_HISTORY 1 -#define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_HISTORY" +#else +# define IF_FEATURE_EDITING_HISTORY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_HISTORY(...) #define CONFIG_FEATURE_EDITING_SAVEHISTORY 1 #define ENABLE_FEATURE_EDITING_SAVEHISTORY 1 -#define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_SAVEHISTORY" +#else +# define IF_FEATURE_EDITING_SAVEHISTORY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_SAVEHISTORY(...) #define CONFIG_FEATURE_EDITING_SAVE_ON_EXIT 1 #define ENABLE_FEATURE_EDITING_SAVE_ON_EXIT 1 -#define IF_FEATURE_EDITING_SAVE_ON_EXIT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_SAVE_ON_EXIT(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_SAVE_ON_EXIT" +#else +# define IF_FEATURE_EDITING_SAVE_ON_EXIT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_SAVE_ON_EXIT(...) #define CONFIG_FEATURE_REVERSE_SEARCH 1 #define ENABLE_FEATURE_REVERSE_SEARCH 1 -#define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__ "CONFIG_FEATURE_REVERSE_SEARCH" +#else +# define IF_FEATURE_REVERSE_SEARCH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_REVERSE_SEARCH(...) #define CONFIG_FEATURE_TAB_COMPLETION 1 #define ENABLE_FEATURE_TAB_COMPLETION 1 -#define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__ "CONFIG_FEATURE_TAB_COMPLETION" +#else +# define IF_FEATURE_TAB_COMPLETION(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAB_COMPLETION(...) #undef CONFIG_FEATURE_USERNAME_COMPLETION #define ENABLE_FEATURE_USERNAME_COMPLETION 0 @@ -362,7 +510,11 @@ #define IF_NOT_FEATURE_USERNAME_COMPLETION(...) __VA_ARGS__ #define CONFIG_FEATURE_EDITING_FANCY_PROMPT 1 #define ENABLE_FEATURE_EDITING_FANCY_PROMPT 1 -#define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__ "CONFIG_FEATURE_EDITING_FANCY_PROMPT" +#else +# define IF_FEATURE_EDITING_FANCY_PROMPT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_EDITING_FANCY_PROMPT(...) #undef CONFIG_FEATURE_EDITING_ASK_TERMINAL #define ENABLE_FEATURE_EDITING_ASK_TERMINAL 0 @@ -370,7 +522,11 @@ #define IF_NOT_FEATURE_EDITING_ASK_TERMINAL(...) __VA_ARGS__ #define CONFIG_FEATURE_NON_POSIX_CP 1 #define ENABLE_FEATURE_NON_POSIX_CP 1 -#define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__ "CONFIG_FEATURE_NON_POSIX_CP" +#else +# define IF_FEATURE_NON_POSIX_CP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_NON_POSIX_CP(...) #undef CONFIG_FEATURE_VERBOSE_CP_MESSAGE #define ENABLE_FEATURE_VERBOSE_CP_MESSAGE 0 @@ -378,19 +534,35 @@ #define IF_NOT_FEATURE_VERBOSE_CP_MESSAGE(...) __VA_ARGS__ #define CONFIG_FEATURE_COPYBUF_KB 4 #define ENABLE_FEATURE_COPYBUF_KB 1 -#define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__ "CONFIG_FEATURE_COPYBUF_KB" +#else +# define IF_FEATURE_COPYBUF_KB(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_COPYBUF_KB(...) #define CONFIG_FEATURE_SKIP_ROOTFS 1 #define ENABLE_FEATURE_SKIP_ROOTFS 1 -#define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__ "CONFIG_FEATURE_SKIP_ROOTFS" +#else +# define IF_FEATURE_SKIP_ROOTFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SKIP_ROOTFS(...) #define CONFIG_MONOTONIC_SYSCALL 1 #define ENABLE_MONOTONIC_SYSCALL 1 -#define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__ "CONFIG_MONOTONIC_SYSCALL" +#else +# define IF_MONOTONIC_SYSCALL(...) __VA_ARGS__ +#endif #define IF_NOT_MONOTONIC_SYSCALL(...) #define CONFIG_IOCTL_HEX2STR_ERROR 1 #define ENABLE_IOCTL_HEX2STR_ERROR 1 -#define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__ "CONFIG_IOCTL_HEX2STR_ERROR" +#else +# define IF_IOCTL_HEX2STR_ERROR(...) __VA_ARGS__ +#endif #define IF_NOT_IOCTL_HEX2STR_ERROR(...) #undef CONFIG_FEATURE_HWIB #define ENABLE_FEATURE_HWIB 0 @@ -414,11 +586,19 @@ #define IF_NOT_FEATURE_SEAMLESS_LZMA(...) __VA_ARGS__ #define CONFIG_FEATURE_SEAMLESS_BZ2 1 #define ENABLE_FEATURE_SEAMLESS_BZ2 1 -#define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_BZ2" +#else +# define IF_FEATURE_SEAMLESS_BZ2(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SEAMLESS_BZ2(...) #define CONFIG_FEATURE_SEAMLESS_GZ 1 #define ENABLE_FEATURE_SEAMLESS_GZ 1 -#define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__ "CONFIG_FEATURE_SEAMLESS_GZ" +#else +# define IF_FEATURE_SEAMLESS_GZ(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SEAMLESS_GZ(...) #undef CONFIG_FEATURE_SEAMLESS_Z #define ENABLE_FEATURE_SEAMLESS_Z 0 @@ -436,21 +616,77 @@ #define ENABLE_FEATURE_AR_CREATE 0 #define IF_FEATURE_AR_CREATE(...) #define IF_NOT_FEATURE_AR_CREATE(...) __VA_ARGS__ +#undef CONFIG_UNCOMPRESS +#define ENABLE_UNCOMPRESS 0 +#define IF_UNCOMPRESS(...) +#define IF_NOT_UNCOMPRESS(...) __VA_ARGS__ +#define CONFIG_GUNZIP 1 +#define ENABLE_GUNZIP 1 +#ifdef MAKE_SUID +# define IF_GUNZIP(...) __VA_ARGS__ "CONFIG_GUNZIP" +#else +# define IF_GUNZIP(...) __VA_ARGS__ +#endif +#define IF_NOT_GUNZIP(...) #define CONFIG_BUNZIP2 1 #define ENABLE_BUNZIP2 1 -#define IF_BUNZIP2(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BUNZIP2(...) __VA_ARGS__ "CONFIG_BUNZIP2" +#else +# define IF_BUNZIP2(...) __VA_ARGS__ +#endif #define IF_NOT_BUNZIP2(...) +#define CONFIG_UNLZMA 1 +#define ENABLE_UNLZMA 1 +#ifdef MAKE_SUID +# define IF_UNLZMA(...) __VA_ARGS__ "CONFIG_UNLZMA" +#else +# define IF_UNLZMA(...) __VA_ARGS__ +#endif +#define IF_NOT_UNLZMA(...) +#undef CONFIG_FEATURE_LZMA_FAST +#define ENABLE_FEATURE_LZMA_FAST 0 +#define IF_FEATURE_LZMA_FAST(...) +#define IF_NOT_FEATURE_LZMA_FAST(...) __VA_ARGS__ +#undef CONFIG_LZMA +#define ENABLE_LZMA 0 +#define IF_LZMA(...) +#define IF_NOT_LZMA(...) __VA_ARGS__ +#define CONFIG_UNXZ 1 +#define ENABLE_UNXZ 1 +#ifdef MAKE_SUID +# define IF_UNXZ(...) __VA_ARGS__ "CONFIG_UNXZ" +#else +# define IF_UNXZ(...) __VA_ARGS__ +#endif +#define IF_NOT_UNXZ(...) +#undef CONFIG_XZ +#define ENABLE_XZ 0 +#define IF_XZ(...) +#define IF_NOT_XZ(...) __VA_ARGS__ #define CONFIG_BZIP2 1 #define ENABLE_BZIP2 1 -#define IF_BZIP2(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BZIP2(...) __VA_ARGS__ "CONFIG_BZIP2" +#else +# define IF_BZIP2(...) __VA_ARGS__ +#endif #define IF_NOT_BZIP2(...) #define CONFIG_CPIO 1 #define ENABLE_CPIO 1 -#define IF_CPIO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CPIO(...) __VA_ARGS__ "CONFIG_CPIO" +#else +# define IF_CPIO(...) __VA_ARGS__ +#endif #define IF_NOT_CPIO(...) #define CONFIG_FEATURE_CPIO_O 1 #define ENABLE_FEATURE_CPIO_O 1 -#define IF_FEATURE_CPIO_O(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CPIO_O(...) __VA_ARGS__ "CONFIG_FEATURE_CPIO_O" +#else +# define IF_FEATURE_CPIO_O(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CPIO_O(...) #undef CONFIG_FEATURE_CPIO_P #define ENABLE_FEATURE_CPIO_P 0 @@ -468,25 +704,37 @@ #define ENABLE_FEATURE_DPKG_DEB_EXTRACT_ONLY 0 #define IF_FEATURE_DPKG_DEB_EXTRACT_ONLY(...) #define IF_NOT_FEATURE_DPKG_DEB_EXTRACT_ONLY(...) __VA_ARGS__ -#define CONFIG_GUNZIP 1 -#define ENABLE_GUNZIP 1 -#define IF_GUNZIP(...) __VA_ARGS__ -#define IF_NOT_GUNZIP(...) #define CONFIG_GZIP 1 #define ENABLE_GZIP 1 -#define IF_GZIP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GZIP(...) __VA_ARGS__ "CONFIG_GZIP" +#else +# define IF_GZIP(...) __VA_ARGS__ +#endif #define IF_NOT_GZIP(...) #define CONFIG_FEATURE_GZIP_LONG_OPTIONS 1 #define ENABLE_FEATURE_GZIP_LONG_OPTIONS 1 -#define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_GZIP_LONG_OPTIONS" +#else +# define IF_FEATURE_GZIP_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GZIP_LONG_OPTIONS(...) #define CONFIG_GZIP_FAST 2 #define ENABLE_GZIP_FAST 1 -#define IF_GZIP_FAST(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GZIP_FAST(...) __VA_ARGS__ "CONFIG_GZIP_FAST" +#else +# define IF_GZIP_FAST(...) __VA_ARGS__ +#endif #define IF_NOT_GZIP_FAST(...) #define CONFIG_LZOP 1 #define ENABLE_LZOP 1 -#define IF_LZOP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LZOP(...) __VA_ARGS__ "CONFIG_LZOP" +#else +# define IF_LZOP(...) __VA_ARGS__ +#endif #define IF_NOT_LZOP(...) #undef CONFIG_LZOP_COMPR_HIGH #define ENABLE_LZOP_COMPR_HIGH 0 @@ -502,11 +750,19 @@ #define IF_NOT_RPM(...) __VA_ARGS__ #define CONFIG_TAR 1 #define ENABLE_TAR 1 -#define IF_TAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TAR(...) __VA_ARGS__ "CONFIG_TAR" +#else +# define IF_TAR(...) __VA_ARGS__ +#endif #define IF_NOT_TAR(...) #define CONFIG_FEATURE_TAR_CREATE 1 #define ENABLE_FEATURE_TAR_CREATE 1 -#define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_CREATE" +#else +# define IF_FEATURE_TAR_CREATE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_CREATE(...) #undef CONFIG_FEATURE_TAR_AUTODETECT #define ENABLE_FEATURE_TAR_AUTODETECT 0 @@ -514,7 +770,11 @@ #define IF_NOT_FEATURE_TAR_AUTODETECT(...) __VA_ARGS__ #define CONFIG_FEATURE_TAR_FROM 1 #define ENABLE_FEATURE_TAR_FROM 1 -#define IF_FEATURE_TAR_FROM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_FROM(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_FROM" +#else +# define IF_FEATURE_TAR_FROM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_FROM(...) #undef CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY #define ENABLE_FEATURE_TAR_OLDGNU_COMPATIBILITY 0 @@ -526,11 +786,19 @@ #define IF_NOT_FEATURE_TAR_OLDSUN_COMPATIBILITY(...) __VA_ARGS__ #define CONFIG_FEATURE_TAR_GNU_EXTENSIONS 1 #define ENABLE_FEATURE_TAR_GNU_EXTENSIONS 1 -#define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_GNU_EXTENSIONS" +#else +# define IF_FEATURE_TAR_GNU_EXTENSIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_GNU_EXTENSIONS(...) #define CONFIG_FEATURE_TAR_LONG_OPTIONS 1 #define ENABLE_FEATURE_TAR_LONG_OPTIONS 1 -#define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_LONG_OPTIONS" +#else +# define IF_FEATURE_TAR_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_LONG_OPTIONS(...) #undef CONFIG_FEATURE_TAR_TO_COMMAND #define ENABLE_FEATURE_TAR_TO_COMMAND 0 @@ -542,39 +810,23 @@ #define IF_NOT_FEATURE_TAR_UNAME_GNAME(...) __VA_ARGS__ #define CONFIG_FEATURE_TAR_NOPRESERVE_TIME 1 #define ENABLE_FEATURE_TAR_NOPRESERVE_TIME 1 -#define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__ "CONFIG_FEATURE_TAR_NOPRESERVE_TIME" +#else +# define IF_FEATURE_TAR_NOPRESERVE_TIME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TAR_NOPRESERVE_TIME(...) #undef CONFIG_FEATURE_TAR_SELINUX #define ENABLE_FEATURE_TAR_SELINUX 0 #define IF_FEATURE_TAR_SELINUX(...) #define IF_NOT_FEATURE_TAR_SELINUX(...) __VA_ARGS__ -#undef CONFIG_UNCOMPRESS -#define ENABLE_UNCOMPRESS 0 -#define IF_UNCOMPRESS(...) -#define IF_NOT_UNCOMPRESS(...) __VA_ARGS__ -#define CONFIG_UNLZMA 1 -#define ENABLE_UNLZMA 1 -#define IF_UNLZMA(...) __VA_ARGS__ -#define IF_NOT_UNLZMA(...) -#undef CONFIG_FEATURE_LZMA_FAST -#define ENABLE_FEATURE_LZMA_FAST 0 -#define IF_FEATURE_LZMA_FAST(...) -#define IF_NOT_FEATURE_LZMA_FAST(...) __VA_ARGS__ -#undef CONFIG_LZMA -#define ENABLE_LZMA 0 -#define IF_LZMA(...) -#define IF_NOT_LZMA(...) __VA_ARGS__ -#define CONFIG_UNXZ 1 -#define ENABLE_UNXZ 1 -#define IF_UNXZ(...) __VA_ARGS__ -#define IF_NOT_UNXZ(...) -#undef CONFIG_XZ -#define ENABLE_XZ 0 -#define IF_XZ(...) -#define IF_NOT_XZ(...) __VA_ARGS__ #define CONFIG_UNZIP 1 #define ENABLE_UNZIP 1 -#define IF_UNZIP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNZIP(...) __VA_ARGS__ "CONFIG_UNZIP" +#else +# define IF_UNZIP(...) __VA_ARGS__ +#endif #define IF_NOT_UNZIP(...) /* @@ -582,19 +834,35 @@ */ #define CONFIG_BASENAME 1 #define ENABLE_BASENAME 1 -#define IF_BASENAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BASENAME(...) __VA_ARGS__ "CONFIG_BASENAME" +#else +# define IF_BASENAME(...) __VA_ARGS__ +#endif #define IF_NOT_BASENAME(...) #define CONFIG_CAT 1 #define ENABLE_CAT 1 -#define IF_CAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CAT(...) __VA_ARGS__ "CONFIG_CAT" +#else +# define IF_CAT(...) __VA_ARGS__ +#endif #define IF_NOT_CAT(...) #define CONFIG_DATE 1 #define ENABLE_DATE 1 -#define IF_DATE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DATE(...) __VA_ARGS__ "CONFIG_DATE" +#else +# define IF_DATE(...) __VA_ARGS__ +#endif #define IF_NOT_DATE(...) #define CONFIG_FEATURE_DATE_ISOFMT 1 #define ENABLE_FEATURE_DATE_ISOFMT 1 -#define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__ "CONFIG_FEATURE_DATE_ISOFMT" +#else +# define IF_FEATURE_DATE_ISOFMT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DATE_ISOFMT(...) #undef CONFIG_FEATURE_DATE_NANO #define ENABLE_FEATURE_DATE_NANO 0 @@ -602,7 +870,11 @@ #define IF_NOT_FEATURE_DATE_NANO(...) __VA_ARGS__ #define CONFIG_FEATURE_DATE_COMPAT 1 #define ENABLE_FEATURE_DATE_COMPAT 1 -#define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__ "CONFIG_FEATURE_DATE_COMPAT" +#else +# define IF_FEATURE_DATE_COMPAT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DATE_COMPAT(...) #undef CONFIG_HOSTID #define ENABLE_HOSTID 0 @@ -610,15 +882,27 @@ #define IF_NOT_HOSTID(...) __VA_ARGS__ #define CONFIG_ID 1 #define ENABLE_ID 1 -#define IF_ID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ID(...) __VA_ARGS__ "CONFIG_ID" +#else +# define IF_ID(...) __VA_ARGS__ +#endif #define IF_NOT_ID(...) #define CONFIG_GROUPS 1 #define ENABLE_GROUPS 1 -#define IF_GROUPS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GROUPS(...) __VA_ARGS__ "CONFIG_GROUPS" +#else +# define IF_GROUPS(...) __VA_ARGS__ +#endif #define IF_NOT_GROUPS(...) #define CONFIG_TEST 1 #define ENABLE_TEST 1 -#define IF_TEST(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TEST(...) __VA_ARGS__ "CONFIG_TEST" +#else +# define IF_TEST(...) __VA_ARGS__ +#endif #define IF_NOT_TEST(...) #undef CONFIG_FEATURE_TEST_64 #define ENABLE_FEATURE_TEST_64 0 @@ -626,19 +910,35 @@ #define IF_NOT_FEATURE_TEST_64(...) __VA_ARGS__ #define CONFIG_TOUCH 1 #define ENABLE_TOUCH 1 -#define IF_TOUCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TOUCH(...) __VA_ARGS__ "CONFIG_TOUCH" +#else +# define IF_TOUCH(...) __VA_ARGS__ +#endif #define IF_NOT_TOUCH(...) +#undef CONFIG_FEATURE_TOUCH_NODEREF +#define ENABLE_FEATURE_TOUCH_NODEREF 0 +#define IF_FEATURE_TOUCH_NODEREF(...) +#define IF_NOT_FEATURE_TOUCH_NODEREF(...) __VA_ARGS__ #undef CONFIG_FEATURE_TOUCH_SUSV3 #define ENABLE_FEATURE_TOUCH_SUSV3 0 #define IF_FEATURE_TOUCH_SUSV3(...) #define IF_NOT_FEATURE_TOUCH_SUSV3(...) __VA_ARGS__ #define CONFIG_TR 1 #define ENABLE_TR 1 -#define IF_TR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TR(...) __VA_ARGS__ "CONFIG_TR" +#else +# define IF_TR(...) __VA_ARGS__ +#endif #define IF_NOT_TR(...) #define CONFIG_FEATURE_TR_CLASSES 1 #define ENABLE_FEATURE_TR_CLASSES 1 -#define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__ "CONFIG_FEATURE_TR_CLASSES" +#else +# define IF_FEATURE_TR_CLASSES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TR_CLASSES(...) #undef CONFIG_FEATURE_TR_EQUIV #define ENABLE_FEATURE_TR_EQUIV 0 @@ -646,7 +946,11 @@ #define IF_NOT_FEATURE_TR_EQUIV(...) __VA_ARGS__ #define CONFIG_BASE64 1 #define ENABLE_BASE64 1 -#define IF_BASE64(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BASE64(...) __VA_ARGS__ "CONFIG_BASE64" +#else +# define IF_BASE64(...) __VA_ARGS__ +#endif #define IF_NOT_BASE64(...) #undef CONFIG_WHO #define ENABLE_WHO 0 @@ -658,31 +962,59 @@ #define IF_NOT_USERS(...) __VA_ARGS__ #define CONFIG_CAL 1 #define ENABLE_CAL 1 -#define IF_CAL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CAL(...) __VA_ARGS__ "CONFIG_CAL" +#else +# define IF_CAL(...) __VA_ARGS__ +#endif #define IF_NOT_CAL(...) #define CONFIG_CATV 1 #define ENABLE_CATV 1 -#define IF_CATV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CATV(...) __VA_ARGS__ "CONFIG_CATV" +#else +# define IF_CATV(...) __VA_ARGS__ +#endif #define IF_NOT_CATV(...) #define CONFIG_CHGRP 1 #define ENABLE_CHGRP 1 -#define IF_CHGRP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHGRP(...) __VA_ARGS__ "CONFIG_CHGRP" +#else +# define IF_CHGRP(...) __VA_ARGS__ +#endif #define IF_NOT_CHGRP(...) #define CONFIG_CHMOD 1 #define ENABLE_CHMOD 1 -#define IF_CHMOD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHMOD(...) __VA_ARGS__ "CONFIG_CHMOD" +#else +# define IF_CHMOD(...) __VA_ARGS__ +#endif #define IF_NOT_CHMOD(...) #define CONFIG_CHOWN 1 #define ENABLE_CHOWN 1 -#define IF_CHOWN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHOWN(...) __VA_ARGS__ "CONFIG_CHOWN" +#else +# define IF_CHOWN(...) __VA_ARGS__ +#endif #define IF_NOT_CHOWN(...) #define CONFIG_FEATURE_CHOWN_LONG_OPTIONS 1 #define ENABLE_FEATURE_CHOWN_LONG_OPTIONS 1 -#define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_CHOWN_LONG_OPTIONS" +#else +# define IF_FEATURE_CHOWN_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CHOWN_LONG_OPTIONS(...) #define CONFIG_CHROOT 1 #define ENABLE_CHROOT 1 -#define IF_CHROOT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHROOT(...) __VA_ARGS__ "CONFIG_CHROOT" +#else +# define IF_CHROOT(...) __VA_ARGS__ +#endif #define IF_NOT_CHROOT(...) #undef CONFIG_CKSUM #define ENABLE_CKSUM 0 @@ -694,71 +1026,139 @@ #define IF_NOT_COMM(...) __VA_ARGS__ #define CONFIG_CP 1 #define ENABLE_CP 1 -#define IF_CP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CP(...) __VA_ARGS__ "CONFIG_CP" +#else +# define IF_CP(...) __VA_ARGS__ +#endif #define IF_NOT_CP(...) #define CONFIG_FEATURE_CP_LONG_OPTIONS 1 #define ENABLE_FEATURE_CP_LONG_OPTIONS 1 -#define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_CP_LONG_OPTIONS" +#else +# define IF_FEATURE_CP_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CP_LONG_OPTIONS(...) #define CONFIG_CUT 1 #define ENABLE_CUT 1 -#define IF_CUT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CUT(...) __VA_ARGS__ "CONFIG_CUT" +#else +# define IF_CUT(...) __VA_ARGS__ +#endif #define IF_NOT_CUT(...) #define CONFIG_DD 1 #define ENABLE_DD 1 -#define IF_DD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DD(...) __VA_ARGS__ "CONFIG_DD" +#else +# define IF_DD(...) __VA_ARGS__ +#endif #define IF_NOT_DD(...) #define CONFIG_FEATURE_DD_SIGNAL_HANDLING 1 #define ENABLE_FEATURE_DD_SIGNAL_HANDLING 1 -#define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__ "CONFIG_FEATURE_DD_SIGNAL_HANDLING" +#else +# define IF_FEATURE_DD_SIGNAL_HANDLING(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DD_SIGNAL_HANDLING(...) #define CONFIG_FEATURE_DD_THIRD_STATUS_LINE 1 #define ENABLE_FEATURE_DD_THIRD_STATUS_LINE 1 -#define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__ "CONFIG_FEATURE_DD_THIRD_STATUS_LINE" +#else +# define IF_FEATURE_DD_THIRD_STATUS_LINE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DD_THIRD_STATUS_LINE(...) #define CONFIG_FEATURE_DD_IBS_OBS 1 #define ENABLE_FEATURE_DD_IBS_OBS 1 -#define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__ "CONFIG_FEATURE_DD_IBS_OBS" +#else +# define IF_FEATURE_DD_IBS_OBS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DD_IBS_OBS(...) #define CONFIG_DF 1 #define ENABLE_DF 1 -#define IF_DF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DF(...) __VA_ARGS__ "CONFIG_DF" +#else +# define IF_DF(...) __VA_ARGS__ +#endif #define IF_NOT_DF(...) #define CONFIG_FEATURE_DF_FANCY 1 #define ENABLE_FEATURE_DF_FANCY 1 -#define IF_FEATURE_DF_FANCY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DF_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_DF_FANCY" +#else +# define IF_FEATURE_DF_FANCY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DF_FANCY(...) #define CONFIG_DIRNAME 1 #define ENABLE_DIRNAME 1 -#define IF_DIRNAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DIRNAME(...) __VA_ARGS__ "CONFIG_DIRNAME" +#else +# define IF_DIRNAME(...) __VA_ARGS__ +#endif #define IF_NOT_DIRNAME(...) #define CONFIG_DOS2UNIX 1 #define ENABLE_DOS2UNIX 1 -#define IF_DOS2UNIX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DOS2UNIX(...) __VA_ARGS__ "CONFIG_DOS2UNIX" +#else +# define IF_DOS2UNIX(...) __VA_ARGS__ +#endif #define IF_NOT_DOS2UNIX(...) #define CONFIG_UNIX2DOS 1 #define ENABLE_UNIX2DOS 1 -#define IF_UNIX2DOS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNIX2DOS(...) __VA_ARGS__ "CONFIG_UNIX2DOS" +#else +# define IF_UNIX2DOS(...) __VA_ARGS__ +#endif #define IF_NOT_UNIX2DOS(...) #define CONFIG_DU 1 #define ENABLE_DU 1 -#define IF_DU(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DU(...) __VA_ARGS__ "CONFIG_DU" +#else +# define IF_DU(...) __VA_ARGS__ +#endif #define IF_NOT_DU(...) #define CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K 1 #define ENABLE_FEATURE_DU_DEFAULT_BLOCKSIZE_1K 1 -#define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__ "CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K" +#else +# define IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(...) #define CONFIG_ECHO 1 #define ENABLE_ECHO 1 -#define IF_ECHO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ECHO(...) __VA_ARGS__ "CONFIG_ECHO" +#else +# define IF_ECHO(...) __VA_ARGS__ +#endif #define IF_NOT_ECHO(...) #define CONFIG_FEATURE_FANCY_ECHO 1 #define ENABLE_FEATURE_FANCY_ECHO 1 -#define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_ECHO" +#else +# define IF_FEATURE_FANCY_ECHO(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FANCY_ECHO(...) #define CONFIG_ENV 1 #define ENABLE_ENV 1 -#define IF_ENV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ENV(...) __VA_ARGS__ "CONFIG_ENV" +#else +# define IF_ENV(...) __VA_ARGS__ +#endif #define IF_NOT_ENV(...) #undef CONFIG_FEATURE_ENV_LONG_OPTIONS #define ENABLE_FEATURE_ENV_LONG_OPTIONS 0 @@ -766,7 +1166,11 @@ #define IF_NOT_FEATURE_ENV_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_EXPAND 1 #define ENABLE_EXPAND 1 -#define IF_EXPAND(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXPAND(...) __VA_ARGS__ "CONFIG_EXPAND" +#else +# define IF_EXPAND(...) __VA_ARGS__ +#endif #define IF_NOT_EXPAND(...) #undef CONFIG_FEATURE_EXPAND_LONG_OPTIONS #define ENABLE_FEATURE_EXPAND_LONG_OPTIONS 0 @@ -774,19 +1178,35 @@ #define IF_NOT_FEATURE_EXPAND_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_EXPR 1 #define ENABLE_EXPR 1 -#define IF_EXPR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXPR(...) __VA_ARGS__ "CONFIG_EXPR" +#else +# define IF_EXPR(...) __VA_ARGS__ +#endif #define IF_NOT_EXPR(...) #define CONFIG_EXPR_MATH_SUPPORT_64 1 #define ENABLE_EXPR_MATH_SUPPORT_64 1 -#define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__ "CONFIG_EXPR_MATH_SUPPORT_64" +#else +# define IF_EXPR_MATH_SUPPORT_64(...) __VA_ARGS__ +#endif #define IF_NOT_EXPR_MATH_SUPPORT_64(...) #define CONFIG_FALSE 1 #define ENABLE_FALSE 1 -#define IF_FALSE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FALSE(...) __VA_ARGS__ "CONFIG_FALSE" +#else +# define IF_FALSE(...) __VA_ARGS__ +#endif #define IF_NOT_FALSE(...) #define CONFIG_FOLD 1 #define ENABLE_FOLD 1 -#define IF_FOLD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FOLD(...) __VA_ARGS__ "CONFIG_FOLD" +#else +# define IF_FOLD(...) __VA_ARGS__ +#endif #define IF_NOT_FOLD(...) #undef CONFIG_FSYNC #define ENABLE_FSYNC 0 @@ -794,7 +1214,11 @@ #define IF_NOT_FSYNC(...) __VA_ARGS__ #define CONFIG_HEAD 1 #define ENABLE_HEAD 1 -#define IF_HEAD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_HEAD(...) __VA_ARGS__ "CONFIG_HEAD" +#else +# define IF_HEAD(...) __VA_ARGS__ +#endif #define IF_NOT_HEAD(...) #undef CONFIG_FEATURE_FANCY_HEAD #define ENABLE_FEATURE_FANCY_HEAD 0 @@ -802,7 +1226,11 @@ #define IF_NOT_FEATURE_FANCY_HEAD(...) __VA_ARGS__ #define CONFIG_INSTALL 1 #define ENABLE_INSTALL 1 -#define IF_INSTALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INSTALL(...) __VA_ARGS__ "CONFIG_INSTALL" +#else +# define IF_INSTALL(...) __VA_ARGS__ +#endif #define IF_NOT_INSTALL(...) #undef CONFIG_FEATURE_INSTALL_LONG_OPTIONS #define ENABLE_FEATURE_INSTALL_LONG_OPTIONS 0 @@ -810,7 +1238,11 @@ #define IF_NOT_FEATURE_INSTALL_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_LN 1 #define ENABLE_LN 1 -#define IF_LN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LN(...) __VA_ARGS__ "CONFIG_LN" +#else +# define IF_LN(...) __VA_ARGS__ +#endif #define IF_NOT_LN(...) #undef CONFIG_LOGNAME #define ENABLE_LOGNAME 0 @@ -818,35 +1250,67 @@ #define IF_NOT_LOGNAME(...) __VA_ARGS__ #define CONFIG_LS 1 #define ENABLE_LS 1 -#define IF_LS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LS(...) __VA_ARGS__ "CONFIG_LS" +#else +# define IF_LS(...) __VA_ARGS__ +#endif #define IF_NOT_LS(...) #define CONFIG_FEATURE_LS_FILETYPES 1 #define ENABLE_FEATURE_LS_FILETYPES 1 -#define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__ "CONFIG_FEATURE_LS_FILETYPES" +#else +# define IF_FEATURE_LS_FILETYPES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_FILETYPES(...) #define CONFIG_FEATURE_LS_FOLLOWLINKS 1 #define ENABLE_FEATURE_LS_FOLLOWLINKS 1 -#define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__ "CONFIG_FEATURE_LS_FOLLOWLINKS" +#else +# define IF_FEATURE_LS_FOLLOWLINKS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_FOLLOWLINKS(...) #define CONFIG_FEATURE_LS_RECURSIVE 1 #define ENABLE_FEATURE_LS_RECURSIVE 1 -#define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__ "CONFIG_FEATURE_LS_RECURSIVE" +#else +# define IF_FEATURE_LS_RECURSIVE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_RECURSIVE(...) #define CONFIG_FEATURE_LS_SORTFILES 1 #define ENABLE_FEATURE_LS_SORTFILES 1 -#define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__ "CONFIG_FEATURE_LS_SORTFILES" +#else +# define IF_FEATURE_LS_SORTFILES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_SORTFILES(...) #define CONFIG_FEATURE_LS_TIMESTAMPS 1 #define ENABLE_FEATURE_LS_TIMESTAMPS 1 -#define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__ "CONFIG_FEATURE_LS_TIMESTAMPS" +#else +# define IF_FEATURE_LS_TIMESTAMPS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_TIMESTAMPS(...) #define CONFIG_FEATURE_LS_USERNAME 1 #define ENABLE_FEATURE_LS_USERNAME 1 -#define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__ "CONFIG_FEATURE_LS_USERNAME" +#else +# define IF_FEATURE_LS_USERNAME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_USERNAME(...) #define CONFIG_FEATURE_LS_COLOR 1 #define ENABLE_FEATURE_LS_COLOR 1 -#define IF_FEATURE_LS_COLOR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LS_COLOR(...) __VA_ARGS__ "CONFIG_FEATURE_LS_COLOR" +#else +# define IF_FEATURE_LS_COLOR(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LS_COLOR(...) #undef CONFIG_FEATURE_LS_COLOR_IS_DEFAULT #define ENABLE_FEATURE_LS_COLOR_IS_DEFAULT 0 @@ -854,11 +1318,19 @@ #define IF_NOT_FEATURE_LS_COLOR_IS_DEFAULT(...) __VA_ARGS__ #define CONFIG_MD5SUM 1 #define ENABLE_MD5SUM 1 -#define IF_MD5SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MD5SUM(...) __VA_ARGS__ "CONFIG_MD5SUM" +#else +# define IF_MD5SUM(...) __VA_ARGS__ +#endif #define IF_NOT_MD5SUM(...) #define CONFIG_MKDIR 1 #define ENABLE_MKDIR 1 -#define IF_MKDIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKDIR(...) __VA_ARGS__ "CONFIG_MKDIR" +#else +# define IF_MKDIR(...) __VA_ARGS__ +#endif #define IF_NOT_MKDIR(...) #undef CONFIG_FEATURE_MKDIR_LONG_OPTIONS #define ENABLE_FEATURE_MKDIR_LONG_OPTIONS 0 @@ -866,15 +1338,27 @@ #define IF_NOT_FEATURE_MKDIR_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_MKFIFO 1 #define ENABLE_MKFIFO 1 -#define IF_MKFIFO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKFIFO(...) __VA_ARGS__ "CONFIG_MKFIFO" +#else +# define IF_MKFIFO(...) __VA_ARGS__ +#endif #define IF_NOT_MKFIFO(...) #define CONFIG_MKNOD 1 #define ENABLE_MKNOD 1 -#define IF_MKNOD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKNOD(...) __VA_ARGS__ "CONFIG_MKNOD" +#else +# define IF_MKNOD(...) __VA_ARGS__ +#endif #define IF_NOT_MKNOD(...) #define CONFIG_MV 1 #define ENABLE_MV 1 -#define IF_MV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MV(...) __VA_ARGS__ "CONFIG_MV" +#else +# define IF_MV(...) __VA_ARGS__ +#endif #define IF_NOT_MV(...) #undef CONFIG_FEATURE_MV_LONG_OPTIONS #define ENABLE_FEATURE_MV_LONG_OPTIONS 0 @@ -882,67 +1366,131 @@ #define IF_NOT_FEATURE_MV_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_NICE 1 #define ENABLE_NICE 1 -#define IF_NICE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NICE(...) __VA_ARGS__ "CONFIG_NICE" +#else +# define IF_NICE(...) __VA_ARGS__ +#endif #define IF_NOT_NICE(...) #define CONFIG_NOHUP 1 #define ENABLE_NOHUP 1 -#define IF_NOHUP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NOHUP(...) __VA_ARGS__ "CONFIG_NOHUP" +#else +# define IF_NOHUP(...) __VA_ARGS__ +#endif #define IF_NOT_NOHUP(...) #define CONFIG_OD 1 #define ENABLE_OD 1 -#define IF_OD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_OD(...) __VA_ARGS__ "CONFIG_OD" +#else +# define IF_OD(...) __VA_ARGS__ +#endif #define IF_NOT_OD(...) #define CONFIG_PRINTENV 1 #define ENABLE_PRINTENV 1 -#define IF_PRINTENV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PRINTENV(...) __VA_ARGS__ "CONFIG_PRINTENV" +#else +# define IF_PRINTENV(...) __VA_ARGS__ +#endif #define IF_NOT_PRINTENV(...) #define CONFIG_PRINTF 1 #define ENABLE_PRINTF 1 -#define IF_PRINTF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PRINTF(...) __VA_ARGS__ "CONFIG_PRINTF" +#else +# define IF_PRINTF(...) __VA_ARGS__ +#endif #define IF_NOT_PRINTF(...) #define CONFIG_PWD 1 #define ENABLE_PWD 1 -#define IF_PWD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PWD(...) __VA_ARGS__ "CONFIG_PWD" +#else +# define IF_PWD(...) __VA_ARGS__ +#endif #define IF_NOT_PWD(...) #define CONFIG_READLINK 1 #define ENABLE_READLINK 1 -#define IF_READLINK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_READLINK(...) __VA_ARGS__ "CONFIG_READLINK" +#else +# define IF_READLINK(...) __VA_ARGS__ +#endif #define IF_NOT_READLINK(...) #define CONFIG_FEATURE_READLINK_FOLLOW 1 #define ENABLE_FEATURE_READLINK_FOLLOW 1 -#define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__ "CONFIG_FEATURE_READLINK_FOLLOW" +#else +# define IF_FEATURE_READLINK_FOLLOW(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_READLINK_FOLLOW(...) #define CONFIG_REALPATH 1 #define ENABLE_REALPATH 1 -#define IF_REALPATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_REALPATH(...) __VA_ARGS__ "CONFIG_REALPATH" +#else +# define IF_REALPATH(...) __VA_ARGS__ +#endif #define IF_NOT_REALPATH(...) #define CONFIG_RM 1 #define ENABLE_RM 1 -#define IF_RM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RM(...) __VA_ARGS__ "CONFIG_RM" +#else +# define IF_RM(...) __VA_ARGS__ +#endif #define IF_NOT_RM(...) #define CONFIG_RMDIR 1 #define ENABLE_RMDIR 1 -#define IF_RMDIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RMDIR(...) __VA_ARGS__ "CONFIG_RMDIR" +#else +# define IF_RMDIR(...) __VA_ARGS__ +#endif #define IF_NOT_RMDIR(...) #define CONFIG_FEATURE_RMDIR_LONG_OPTIONS 1 #define ENABLE_FEATURE_RMDIR_LONG_OPTIONS 1 -#define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_RMDIR_LONG_OPTIONS" +#else +# define IF_FEATURE_RMDIR_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_RMDIR_LONG_OPTIONS(...) #define CONFIG_SEQ 1 #define ENABLE_SEQ 1 -#define IF_SEQ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SEQ(...) __VA_ARGS__ "CONFIG_SEQ" +#else +# define IF_SEQ(...) __VA_ARGS__ +#endif #define IF_NOT_SEQ(...) #define CONFIG_SHA1SUM 1 #define ENABLE_SHA1SUM 1 -#define IF_SHA1SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA1SUM(...) __VA_ARGS__ "CONFIG_SHA1SUM" +#else +# define IF_SHA1SUM(...) __VA_ARGS__ +#endif #define IF_NOT_SHA1SUM(...) #define CONFIG_SHA256SUM 1 #define ENABLE_SHA256SUM 1 -#define IF_SHA256SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA256SUM(...) __VA_ARGS__ "CONFIG_SHA256SUM" +#else +# define IF_SHA256SUM(...) __VA_ARGS__ +#endif #define IF_NOT_SHA256SUM(...) #define CONFIG_SHA512SUM 1 #define ENABLE_SHA512SUM 1 -#define IF_SHA512SUM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SHA512SUM(...) __VA_ARGS__ "CONFIG_SHA512SUM" +#else +# define IF_SHA512SUM(...) __VA_ARGS__ +#endif #define IF_NOT_SHA512SUM(...) #undef CONFIG_SHA3SUM #define ENABLE_SHA3SUM 0 @@ -950,19 +1498,35 @@ #define IF_NOT_SHA3SUM(...) __VA_ARGS__ #define CONFIG_SLEEP 1 #define ENABLE_SLEEP 1 -#define IF_SLEEP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SLEEP(...) __VA_ARGS__ "CONFIG_SLEEP" +#else +# define IF_SLEEP(...) __VA_ARGS__ +#endif #define IF_NOT_SLEEP(...) #define CONFIG_FEATURE_FANCY_SLEEP 1 #define ENABLE_FEATURE_FANCY_SLEEP 1 -#define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_SLEEP" +#else +# define IF_FEATURE_FANCY_SLEEP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FANCY_SLEEP(...) #define CONFIG_FEATURE_FLOAT_SLEEP 1 #define ENABLE_FEATURE_FLOAT_SLEEP 1 -#define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__ "CONFIG_FEATURE_FLOAT_SLEEP" +#else +# define IF_FEATURE_FLOAT_SLEEP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FLOAT_SLEEP(...) #define CONFIG_SORT 1 #define ENABLE_SORT 1 -#define IF_SORT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SORT(...) __VA_ARGS__ "CONFIG_SORT" +#else +# define IF_SORT(...) __VA_ARGS__ +#endif #define IF_NOT_SORT(...) #undef CONFIG_FEATURE_SORT_BIG #define ENABLE_FEATURE_SORT_BIG 0 @@ -970,7 +1534,11 @@ #define IF_NOT_FEATURE_SORT_BIG(...) __VA_ARGS__ #define CONFIG_SPLIT 1 #define ENABLE_SPLIT 1 -#define IF_SPLIT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SPLIT(...) __VA_ARGS__ "CONFIG_SPLIT" +#else +# define IF_SPLIT(...) __VA_ARGS__ +#endif #define IF_NOT_SPLIT(...) #undef CONFIG_FEATURE_SPLIT_FANCY #define ENABLE_FEATURE_SPLIT_FANCY 0 @@ -978,7 +1546,11 @@ #define IF_NOT_FEATURE_SPLIT_FANCY(...) __VA_ARGS__ #define CONFIG_STAT 1 #define ENABLE_STAT 1 -#define IF_STAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_STAT(...) __VA_ARGS__ "CONFIG_STAT" +#else +# define IF_STAT(...) __VA_ARGS__ +#endif #define IF_NOT_STAT(...) #undef CONFIG_FEATURE_STAT_FORMAT #define ENABLE_FEATURE_STAT_FORMAT 0 @@ -986,7 +1558,11 @@ #define IF_NOT_FEATURE_STAT_FORMAT(...) __VA_ARGS__ #define CONFIG_STTY 1 #define ENABLE_STTY 1 -#define IF_STTY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_STTY(...) __VA_ARGS__ "CONFIG_STTY" +#else +# define IF_STTY(...) __VA_ARGS__ +#endif #define IF_NOT_STTY(...) #undef CONFIG_SUM #define ENABLE_SUM 0 @@ -994,23 +1570,43 @@ #define IF_NOT_SUM(...) __VA_ARGS__ #define CONFIG_SYNC 1 #define ENABLE_SYNC 1 -#define IF_SYNC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SYNC(...) __VA_ARGS__ "CONFIG_SYNC" +#else +# define IF_SYNC(...) __VA_ARGS__ +#endif #define IF_NOT_SYNC(...) #define CONFIG_TAC 1 #define ENABLE_TAC 1 -#define IF_TAC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TAC(...) __VA_ARGS__ "CONFIG_TAC" +#else +# define IF_TAC(...) __VA_ARGS__ +#endif #define IF_NOT_TAC(...) #define CONFIG_TAIL 1 #define ENABLE_TAIL 1 -#define IF_TAIL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TAIL(...) __VA_ARGS__ "CONFIG_TAIL" +#else +# define IF_TAIL(...) __VA_ARGS__ +#endif #define IF_NOT_TAIL(...) #define CONFIG_FEATURE_FANCY_TAIL 1 #define ENABLE_FEATURE_FANCY_TAIL 1 -#define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__ "CONFIG_FEATURE_FANCY_TAIL" +#else +# define IF_FEATURE_FANCY_TAIL(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FANCY_TAIL(...) #define CONFIG_TEE 1 #define ENABLE_TEE 1 -#define IF_TEE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TEE(...) __VA_ARGS__ "CONFIG_TEE" +#else +# define IF_TEE(...) __VA_ARGS__ +#endif #define IF_NOT_TEE(...) #undef CONFIG_FEATURE_TEE_USE_BLOCK_IO #define ENABLE_FEATURE_TEE_USE_BLOCK_IO 0 @@ -1018,7 +1614,11 @@ #define IF_NOT_FEATURE_TEE_USE_BLOCK_IO(...) __VA_ARGS__ #define CONFIG_TRUE 1 #define ENABLE_TRUE 1 -#define IF_TRUE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TRUE(...) __VA_ARGS__ "CONFIG_TRUE" +#else +# define IF_TRUE(...) __VA_ARGS__ +#endif #define IF_NOT_TRUE(...) #undef CONFIG_TTY #define ENABLE_TTY 0 @@ -1026,35 +1626,67 @@ #define IF_NOT_TTY(...) __VA_ARGS__ #define CONFIG_UNAME 1 #define ENABLE_UNAME 1 -#define IF_UNAME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNAME(...) __VA_ARGS__ "CONFIG_UNAME" +#else +# define IF_UNAME(...) __VA_ARGS__ +#endif #define IF_NOT_UNAME(...) #define CONFIG_UNEXPAND 1 #define ENABLE_UNEXPAND 1 -#define IF_UNEXPAND(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNEXPAND(...) __VA_ARGS__ "CONFIG_UNEXPAND" +#else +# define IF_UNEXPAND(...) __VA_ARGS__ +#endif #define IF_NOT_UNEXPAND(...) #define CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS 1 #define ENABLE_FEATURE_UNEXPAND_LONG_OPTIONS 1 -#define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS" +#else +# define IF_FEATURE_UNEXPAND_LONG_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_UNEXPAND_LONG_OPTIONS(...) #define CONFIG_UNIQ 1 #define ENABLE_UNIQ 1 -#define IF_UNIQ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UNIQ(...) __VA_ARGS__ "CONFIG_UNIQ" +#else +# define IF_UNIQ(...) __VA_ARGS__ +#endif #define IF_NOT_UNIQ(...) #define CONFIG_USLEEP 1 #define ENABLE_USLEEP 1 -#define IF_USLEEP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_USLEEP(...) __VA_ARGS__ "CONFIG_USLEEP" +#else +# define IF_USLEEP(...) __VA_ARGS__ +#endif #define IF_NOT_USLEEP(...) #define CONFIG_UUDECODE 1 #define ENABLE_UUDECODE 1 -#define IF_UUDECODE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UUDECODE(...) __VA_ARGS__ "CONFIG_UUDECODE" +#else +# define IF_UUDECODE(...) __VA_ARGS__ +#endif #define IF_NOT_UUDECODE(...) #define CONFIG_UUENCODE 1 #define ENABLE_UUENCODE 1 -#define IF_UUENCODE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UUENCODE(...) __VA_ARGS__ "CONFIG_UUENCODE" +#else +# define IF_UUENCODE(...) __VA_ARGS__ +#endif #define IF_NOT_UUENCODE(...) #define CONFIG_WC 1 #define ENABLE_WC 1 -#define IF_WC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WC(...) __VA_ARGS__ "CONFIG_WC" +#else +# define IF_WC(...) __VA_ARGS__ +#endif #define IF_NOT_WC(...) #undef CONFIG_FEATURE_WC_LARGE #define ENABLE_FEATURE_WC_LARGE 0 @@ -1062,11 +1694,19 @@ #define IF_NOT_FEATURE_WC_LARGE(...) __VA_ARGS__ #define CONFIG_WHOAMI 1 #define ENABLE_WHOAMI 1 -#define IF_WHOAMI(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WHOAMI(...) __VA_ARGS__ "CONFIG_WHOAMI" +#else +# define IF_WHOAMI(...) __VA_ARGS__ +#endif #define IF_NOT_WHOAMI(...) #define CONFIG_YES 1 #define ENABLE_YES 1 -#define IF_YES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_YES(...) __VA_ARGS__ "CONFIG_YES" +#else +# define IF_YES(...) __VA_ARGS__ +#endif #define IF_NOT_YES(...) /* @@ -1074,7 +1714,11 @@ */ #define CONFIG_FEATURE_PRESERVE_HARDLINKS 1 #define ENABLE_FEATURE_PRESERVE_HARDLINKS 1 -#define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__ "CONFIG_FEATURE_PRESERVE_HARDLINKS" +#else +# define IF_FEATURE_PRESERVE_HARDLINKS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PRESERVE_HARDLINKS(...) /* @@ -1082,7 +1726,11 @@ */ #define CONFIG_FEATURE_AUTOWIDTH 1 #define ENABLE_FEATURE_AUTOWIDTH 1 -#define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__ "CONFIG_FEATURE_AUTOWIDTH" +#else +# define IF_FEATURE_AUTOWIDTH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_AUTOWIDTH(...) /* @@ -1090,7 +1738,11 @@ */ #define CONFIG_FEATURE_HUMAN_READABLE 1 #define ENABLE_FEATURE_HUMAN_READABLE 1 -#define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__ "CONFIG_FEATURE_HUMAN_READABLE" +#else +# define IF_FEATURE_HUMAN_READABLE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_HUMAN_READABLE(...) /* @@ -1098,7 +1750,11 @@ */ #define CONFIG_FEATURE_MD5_SHA1_SUM_CHECK 1 #define ENABLE_FEATURE_MD5_SHA1_SUM_CHECK 1 -#define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__ "CONFIG_FEATURE_MD5_SHA1_SUM_CHECK" +#else +# define IF_FEATURE_MD5_SHA1_SUM_CHECK(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MD5_SHA1_SUM_CHECK(...) /* @@ -1114,7 +1770,11 @@ #define IF_NOT_FGCONSOLE(...) __VA_ARGS__ #define CONFIG_CLEAR 1 #define ENABLE_CLEAR 1 -#define IF_CLEAR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CLEAR(...) __VA_ARGS__ "CONFIG_CLEAR" +#else +# define IF_CLEAR(...) __VA_ARGS__ +#endif #define IF_NOT_CLEAR(...) #undef CONFIG_DEALLOCVT #define ENABLE_DEALLOCVT 0 @@ -1142,11 +1802,19 @@ #define IF_NOT_OPENVT(...) __VA_ARGS__ #define CONFIG_RESET 1 #define ENABLE_RESET 1 -#define IF_RESET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RESET(...) __VA_ARGS__ "CONFIG_RESET" +#else +# define IF_RESET(...) __VA_ARGS__ +#endif #define IF_NOT_RESET(...) #define CONFIG_RESIZE 1 #define ENABLE_RESIZE 1 -#define IF_RESIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RESIZE(...) __VA_ARGS__ "CONFIG_RESIZE" +#else +# define IF_RESIZE(...) __VA_ARGS__ +#endif #define IF_NOT_RESIZE(...) #undef CONFIG_FEATURE_RESIZE_PRINT #define ENABLE_FEATURE_RESIZE_PRINT 0 @@ -1154,7 +1822,11 @@ #define IF_NOT_FEATURE_RESIZE_PRINT(...) __VA_ARGS__ #define CONFIG_SETCONSOLE 1 #define ENABLE_SETCONSOLE 1 -#define IF_SETCONSOLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SETCONSOLE(...) __VA_ARGS__ "CONFIG_SETCONSOLE" +#else +# define IF_SETCONSOLE(...) __VA_ARGS__ +#endif #define IF_NOT_SETCONSOLE(...) #undef CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS #define ENABLE_FEATURE_SETCONSOLE_LONG_OPTIONS 0 @@ -1170,7 +1842,11 @@ #define IF_NOT_FEATURE_SETFONT_TEXTUAL_MAP(...) __VA_ARGS__ #define CONFIG_DEFAULT_SETFONT_DIR "" #define ENABLE_DEFAULT_SETFONT_DIR 1 -#define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__ "CONFIG_DEFAULT_SETFONT_DIR" +#else +# define IF_DEFAULT_SETFONT_DIR(...) __VA_ARGS__ +#endif #define IF_NOT_DEFAULT_SETFONT_DIR(...) #undef CONFIG_SETKEYCODES #define ENABLE_SETKEYCODES 0 @@ -1198,7 +1874,11 @@ */ #define CONFIG_MKTEMP 1 #define ENABLE_MKTEMP 1 -#define IF_MKTEMP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKTEMP(...) __VA_ARGS__ "CONFIG_MKTEMP" +#else +# define IF_MKTEMP(...) __VA_ARGS__ +#endif #define IF_NOT_MKTEMP(...) #undef CONFIG_PIPE_PROGRESS #define ENABLE_PIPE_PROGRESS 0 @@ -1206,7 +1886,11 @@ #define IF_NOT_PIPE_PROGRESS(...) __VA_ARGS__ #define CONFIG_RUN_PARTS 1 #define ENABLE_RUN_PARTS 1 -#define IF_RUN_PARTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RUN_PARTS(...) __VA_ARGS__ "CONFIG_RUN_PARTS" +#else +# define IF_RUN_PARTS(...) __VA_ARGS__ +#endif #define IF_NOT_RUN_PARTS(...) #undef CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS #define ENABLE_FEATURE_RUN_PARTS_LONG_OPTIONS 0 @@ -1214,7 +1898,11 @@ #define IF_NOT_FEATURE_RUN_PARTS_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_FEATURE_RUN_PARTS_FANCY 1 #define ENABLE_FEATURE_RUN_PARTS_FANCY 1 -#define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__ "CONFIG_FEATURE_RUN_PARTS_FANCY" +#else +# define IF_FEATURE_RUN_PARTS_FANCY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_RUN_PARTS_FANCY(...) #undef CONFIG_START_STOP_DAEMON #define ENABLE_START_STOP_DAEMON 0 @@ -1230,23 +1918,99 @@ #define IF_NOT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS(...) __VA_ARGS__ #define CONFIG_WHICH 1 #define ENABLE_WHICH 1 -#define IF_WHICH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WHICH(...) __VA_ARGS__ "CONFIG_WHICH" +#else +# define IF_WHICH(...) __VA_ARGS__ +#endif #define IF_NOT_WHICH(...) /* * Editors */ +#define CONFIG_AWK 1 +#define ENABLE_AWK 1 +#ifdef MAKE_SUID +# define IF_AWK(...) __VA_ARGS__ "CONFIG_AWK" +#else +# define IF_AWK(...) __VA_ARGS__ +#endif +#define IF_NOT_AWK(...) +#undef CONFIG_FEATURE_AWK_LIBM +#define ENABLE_FEATURE_AWK_LIBM 0 +#define IF_FEATURE_AWK_LIBM(...) +#define IF_NOT_FEATURE_AWK_LIBM(...) __VA_ARGS__ +#define CONFIG_FEATURE_AWK_GNU_EXTENSIONS 1 +#define ENABLE_FEATURE_AWK_GNU_EXTENSIONS 1 +#ifdef MAKE_SUID +# define IF_FEATURE_AWK_GNU_EXTENSIONS(...) __VA_ARGS__ "CONFIG_FEATURE_AWK_GNU_EXTENSIONS" +#else +# define IF_FEATURE_AWK_GNU_EXTENSIONS(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_AWK_GNU_EXTENSIONS(...) +#define CONFIG_CMP 1 +#define ENABLE_CMP 1 +#ifdef MAKE_SUID +# define IF_CMP(...) __VA_ARGS__ "CONFIG_CMP" +#else +# define IF_CMP(...) __VA_ARGS__ +#endif +#define IF_NOT_CMP(...) +#define CONFIG_DIFF 1 +#define ENABLE_DIFF 1 +#ifdef MAKE_SUID +# define IF_DIFF(...) __VA_ARGS__ "CONFIG_DIFF" +#else +# define IF_DIFF(...) __VA_ARGS__ +#endif +#define IF_NOT_DIFF(...) +#define CONFIG_FEATURE_DIFF_LONG_OPTIONS 1 +#define ENABLE_FEATURE_DIFF_LONG_OPTIONS 1 +#ifdef MAKE_SUID +# define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__ "CONFIG_FEATURE_DIFF_LONG_OPTIONS" +#else +# define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_DIFF_LONG_OPTIONS(...) +#define CONFIG_FEATURE_DIFF_DIR 1 +#define ENABLE_FEATURE_DIFF_DIR 1 +#ifdef MAKE_SUID +# define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__ "CONFIG_FEATURE_DIFF_DIR" +#else +# define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_DIFF_DIR(...) +#undef CONFIG_ED +#define ENABLE_ED 0 +#define IF_ED(...) +#define IF_NOT_ED(...) __VA_ARGS__ #define CONFIG_PATCH 1 #define ENABLE_PATCH 1 -#define IF_PATCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PATCH(...) __VA_ARGS__ "CONFIG_PATCH" +#else +# define IF_PATCH(...) __VA_ARGS__ +#endif #define IF_NOT_PATCH(...) +#define CONFIG_SED 1 +#define ENABLE_SED 1 +#ifdef MAKE_SUID +# define IF_SED(...) __VA_ARGS__ "CONFIG_SED" +#else +# define IF_SED(...) __VA_ARGS__ +#endif +#define IF_NOT_SED(...) #undef CONFIG_VI #define ENABLE_VI 0 #define IF_VI(...) #define IF_NOT_VI(...) __VA_ARGS__ #define CONFIG_FEATURE_VI_MAX_LEN 0 #define ENABLE_FEATURE_VI_MAX_LEN 1 -#define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__ "CONFIG_FEATURE_VI_MAX_LEN" +#else +# define IF_FEATURE_VI_MAX_LEN(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VI_MAX_LEN(...) #undef CONFIG_FEATURE_VI_8BIT #define ENABLE_FEATURE_VI_8BIT 0 @@ -1296,41 +2060,13 @@ #define ENABLE_FEATURE_VI_ASK_TERMINAL 0 #define IF_FEATURE_VI_ASK_TERMINAL(...) #define IF_NOT_FEATURE_VI_ASK_TERMINAL(...) __VA_ARGS__ -#define CONFIG_AWK 1 -#define ENABLE_AWK 1 -#define IF_AWK(...) __VA_ARGS__ -#define IF_NOT_AWK(...) -#undef CONFIG_FEATURE_AWK_LIBM -#define ENABLE_FEATURE_AWK_LIBM 0 -#define IF_FEATURE_AWK_LIBM(...) -#define IF_NOT_FEATURE_AWK_LIBM(...) __VA_ARGS__ -#define CONFIG_CMP 1 -#define ENABLE_CMP 1 -#define IF_CMP(...) __VA_ARGS__ -#define IF_NOT_CMP(...) -#define CONFIG_DIFF 1 -#define ENABLE_DIFF 1 -#define IF_DIFF(...) __VA_ARGS__ -#define IF_NOT_DIFF(...) -#define CONFIG_FEATURE_DIFF_LONG_OPTIONS 1 -#define ENABLE_FEATURE_DIFF_LONG_OPTIONS 1 -#define IF_FEATURE_DIFF_LONG_OPTIONS(...) __VA_ARGS__ -#define IF_NOT_FEATURE_DIFF_LONG_OPTIONS(...) -#define CONFIG_FEATURE_DIFF_DIR 1 -#define ENABLE_FEATURE_DIFF_DIR 1 -#define IF_FEATURE_DIFF_DIR(...) __VA_ARGS__ -#define IF_NOT_FEATURE_DIFF_DIR(...) -#undef CONFIG_ED -#define ENABLE_ED 0 -#define IF_ED(...) -#define IF_NOT_ED(...) __VA_ARGS__ -#define CONFIG_SED 1 -#define ENABLE_SED 1 -#define IF_SED(...) __VA_ARGS__ -#define IF_NOT_SED(...) #define CONFIG_FEATURE_ALLOW_EXEC 1 #define ENABLE_FEATURE_ALLOW_EXEC 1 -#define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__ "CONFIG_FEATURE_ALLOW_EXEC" +#else +# define IF_FEATURE_ALLOW_EXEC(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_ALLOW_EXEC(...) /* @@ -1338,39 +2074,75 @@ */ #define CONFIG_FIND 1 #define ENABLE_FIND 1 -#define IF_FIND(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FIND(...) __VA_ARGS__ "CONFIG_FIND" +#else +# define IF_FIND(...) __VA_ARGS__ +#endif #define IF_NOT_FIND(...) #define CONFIG_FEATURE_FIND_PRINT0 1 #define ENABLE_FEATURE_FIND_PRINT0 1 -#define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PRINT0" +#else +# define IF_FEATURE_FIND_PRINT0(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PRINT0(...) #define CONFIG_FEATURE_FIND_MTIME 1 #define ENABLE_FEATURE_FIND_MTIME 1 -#define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MTIME" +#else +# define IF_FEATURE_FIND_MTIME(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_MTIME(...) #define CONFIG_FEATURE_FIND_MMIN 1 #define ENABLE_FEATURE_FIND_MMIN 1 -#define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MMIN" +#else +# define IF_FEATURE_FIND_MMIN(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_MMIN(...) #define CONFIG_FEATURE_FIND_PERM 1 #define ENABLE_FEATURE_FIND_PERM 1 -#define IF_FEATURE_FIND_PERM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PERM(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PERM" +#else +# define IF_FEATURE_FIND_PERM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PERM(...) #define CONFIG_FEATURE_FIND_TYPE 1 #define ENABLE_FEATURE_FIND_TYPE 1 -#define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_TYPE" +#else +# define IF_FEATURE_FIND_TYPE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_TYPE(...) #define CONFIG_FEATURE_FIND_XDEV 1 #define ENABLE_FEATURE_FIND_XDEV 1 -#define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_XDEV" +#else +# define IF_FEATURE_FIND_XDEV(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_XDEV(...) #define CONFIG_FEATURE_FIND_MAXDEPTH 1 #define ENABLE_FEATURE_FIND_MAXDEPTH 1 -#define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_MAXDEPTH" +#else +# define IF_FEATURE_FIND_MAXDEPTH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_MAXDEPTH(...) #define CONFIG_FEATURE_FIND_NEWER 1 #define ENABLE_FEATURE_FIND_NEWER 1 -#define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_NEWER" +#else +# define IF_FEATURE_FIND_NEWER(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_NEWER(...) #undef CONFIG_FEATURE_FIND_INUM #define ENABLE_FEATURE_FIND_INUM 0 @@ -1378,35 +2150,67 @@ #define IF_NOT_FEATURE_FIND_INUM(...) __VA_ARGS__ #define CONFIG_FEATURE_FIND_EXEC 1 #define ENABLE_FEATURE_FIND_EXEC 1 -#define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_EXEC" +#else +# define IF_FEATURE_FIND_EXEC(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_EXEC(...) #define CONFIG_FEATURE_FIND_USER 1 #define ENABLE_FEATURE_FIND_USER 1 -#define IF_FEATURE_FIND_USER(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_USER(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_USER" +#else +# define IF_FEATURE_FIND_USER(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_USER(...) #define CONFIG_FEATURE_FIND_GROUP 1 #define ENABLE_FEATURE_FIND_GROUP 1 -#define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_GROUP" +#else +# define IF_FEATURE_FIND_GROUP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_GROUP(...) #define CONFIG_FEATURE_FIND_NOT 1 #define ENABLE_FEATURE_FIND_NOT 1 -#define IF_FEATURE_FIND_NOT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_NOT(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_NOT" +#else +# define IF_FEATURE_FIND_NOT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_NOT(...) #define CONFIG_FEATURE_FIND_DEPTH 1 #define ENABLE_FEATURE_FIND_DEPTH 1 -#define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_DEPTH" +#else +# define IF_FEATURE_FIND_DEPTH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_DEPTH(...) #define CONFIG_FEATURE_FIND_PAREN 1 #define ENABLE_FEATURE_FIND_PAREN 1 -#define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PAREN" +#else +# define IF_FEATURE_FIND_PAREN(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PAREN(...) #define CONFIG_FEATURE_FIND_SIZE 1 #define ENABLE_FEATURE_FIND_SIZE 1 -#define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_SIZE" +#else +# define IF_FEATURE_FIND_SIZE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_SIZE(...) #define CONFIG_FEATURE_FIND_PRUNE 1 #define ENABLE_FEATURE_FIND_PRUNE 1 -#define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PRUNE" +#else +# define IF_FEATURE_FIND_PRUNE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PRUNE(...) #undef CONFIG_FEATURE_FIND_DELETE #define ENABLE_FEATURE_FIND_DELETE 0 @@ -1414,11 +2218,19 @@ #define IF_NOT_FEATURE_FIND_DELETE(...) __VA_ARGS__ #define CONFIG_FEATURE_FIND_PATH 1 #define ENABLE_FEATURE_FIND_PATH 1 -#define IF_FEATURE_FIND_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_PATH(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_PATH" +#else +# define IF_FEATURE_FIND_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_PATH(...) #define CONFIG_FEATURE_FIND_REGEX 1 #define ENABLE_FEATURE_FIND_REGEX 1 -#define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__ "CONFIG_FEATURE_FIND_REGEX" +#else +# define IF_FEATURE_FIND_REGEX(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FIND_REGEX(...) #undef CONFIG_FEATURE_FIND_CONTEXT #define ENABLE_FEATURE_FIND_CONTEXT 0 @@ -1430,31 +2242,59 @@ #define IF_NOT_FEATURE_FIND_LINKS(...) __VA_ARGS__ #define CONFIG_GREP 1 #define ENABLE_GREP 1 -#define IF_GREP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GREP(...) __VA_ARGS__ "CONFIG_GREP" +#else +# define IF_GREP(...) __VA_ARGS__ +#endif #define IF_NOT_GREP(...) #define CONFIG_FEATURE_GREP_EGREP_ALIAS 1 #define ENABLE_FEATURE_GREP_EGREP_ALIAS 1 -#define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_EGREP_ALIAS" +#else +# define IF_FEATURE_GREP_EGREP_ALIAS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GREP_EGREP_ALIAS(...) #define CONFIG_FEATURE_GREP_FGREP_ALIAS 1 #define ENABLE_FEATURE_GREP_FGREP_ALIAS 1 -#define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_FGREP_ALIAS" +#else +# define IF_FEATURE_GREP_FGREP_ALIAS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GREP_FGREP_ALIAS(...) #define CONFIG_FEATURE_GREP_CONTEXT 1 #define ENABLE_FEATURE_GREP_CONTEXT 1 -#define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__ "CONFIG_FEATURE_GREP_CONTEXT" +#else +# define IF_FEATURE_GREP_CONTEXT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_GREP_CONTEXT(...) #define CONFIG_XARGS 1 #define ENABLE_XARGS 1 -#define IF_XARGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_XARGS(...) __VA_ARGS__ "CONFIG_XARGS" +#else +# define IF_XARGS(...) __VA_ARGS__ +#endif #define IF_NOT_XARGS(...) #define CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION 1 #define ENABLE_FEATURE_XARGS_SUPPORT_CONFIRMATION 1 -#define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION" +#else +# define IF_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_XARGS_SUPPORT_CONFIRMATION(...) #define CONFIG_FEATURE_XARGS_SUPPORT_QUOTES 1 #define ENABLE_FEATURE_XARGS_SUPPORT_QUOTES 1 -#define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_QUOTES" +#else +# define IF_FEATURE_XARGS_SUPPORT_QUOTES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_XARGS_SUPPORT_QUOTES(...) #undef CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT #define ENABLE_FEATURE_XARGS_SUPPORT_TERMOPT 0 @@ -1462,7 +2302,11 @@ #define IF_NOT_FEATURE_XARGS_SUPPORT_TERMOPT(...) __VA_ARGS__ #define CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM 1 #define ENABLE_FEATURE_XARGS_SUPPORT_ZERO_TERM 1 -#define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__ "CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM" +#else +# define IF_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_XARGS_SUPPORT_ZERO_TERM(...) /* @@ -1490,7 +2334,11 @@ #define IF_NOT_FEATURE_CALL_TELINIT(...) __VA_ARGS__ #define CONFIG_TELINIT_PATH "" #define ENABLE_TELINIT_PATH 1 -#define IF_TELINIT_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TELINIT_PATH(...) __VA_ARGS__ "CONFIG_TELINIT_PATH" +#else +# define IF_TELINIT_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_TELINIT_PATH(...) #undef CONFIG_INIT #define ENABLE_INIT 0 @@ -1506,7 +2354,11 @@ #define IF_NOT_FEATURE_KILL_REMOVED(...) __VA_ARGS__ #define CONFIG_FEATURE_KILL_DELAY 0 #define ENABLE_FEATURE_KILL_DELAY 1 -#define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__ "CONFIG_FEATURE_KILL_DELAY" +#else +# define IF_FEATURE_KILL_DELAY(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_KILL_DELAY(...) #undef CONFIG_FEATURE_INIT_SCTTY #define ENABLE_FEATURE_INIT_SCTTY 0 @@ -1530,7 +2382,11 @@ #define IF_NOT_FEATURE_INITRD(...) __VA_ARGS__ #define CONFIG_INIT_TERMINAL_TYPE "" #define ENABLE_INIT_TERMINAL_TYPE 1 -#define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__ "CONFIG_INIT_TERMINAL_TYPE" +#else +# define IF_INIT_TERMINAL_TYPE(...) __VA_ARGS__ +#endif #define IF_NOT_INIT_TERMINAL_TYPE(...) #undef CONFIG_MESG #define ENABLE_MESG 0 @@ -1566,7 +2422,11 @@ #define IF_NOT_USE_BB_SHADOW(...) __VA_ARGS__ #define CONFIG_USE_BB_CRYPT 1 #define ENABLE_USE_BB_CRYPT 1 -#define IF_USE_BB_CRYPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_USE_BB_CRYPT(...) __VA_ARGS__ "CONFIG_USE_BB_CRYPT" +#else +# define IF_USE_BB_CRYPT(...) __VA_ARGS__ +#endif #define IF_NOT_USE_BB_CRYPT(...) #undef CONFIG_USE_BB_CRYPT_SHA #define ENABLE_USE_BB_CRYPT_SHA 0 @@ -1586,11 +2446,19 @@ #define IF_NOT_FEATURE_CHECK_NAMES(...) __VA_ARGS__ #define CONFIG_FIRST_SYSTEM_ID 0 #define ENABLE_FIRST_SYSTEM_ID 1 -#define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__ "CONFIG_FIRST_SYSTEM_ID" +#else +# define IF_FIRST_SYSTEM_ID(...) __VA_ARGS__ +#endif #define IF_NOT_FIRST_SYSTEM_ID(...) #define CONFIG_LAST_SYSTEM_ID 0 #define ENABLE_LAST_SYSTEM_ID 1 -#define IF_LAST_SYSTEM_ID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LAST_SYSTEM_ID(...) __VA_ARGS__ "CONFIG_LAST_SYSTEM_ID" +#else +# define IF_LAST_SYSTEM_ID(...) __VA_ARGS__ +#endif #define IF_NOT_LAST_SYSTEM_ID(...) #undef CONFIG_ADDGROUP #define ENABLE_ADDGROUP 0 @@ -1662,7 +2530,11 @@ #define IF_NOT_CHPASSWD(...) __VA_ARGS__ #define CONFIG_FEATURE_DEFAULT_PASSWD_ALGO "" #define ENABLE_FEATURE_DEFAULT_PASSWD_ALGO 1 -#define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__ "CONFIG_FEATURE_DEFAULT_PASSWD_ALGO" +#else +# define IF_FEATURE_DEFAULT_PASSWD_ALGO(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_DEFAULT_PASSWD_ALGO(...) #undef CONFIG_SU #define ENABLE_SU 0 @@ -1690,7 +2562,11 @@ */ #define CONFIG_CHATTR 1 #define ENABLE_CHATTR 1 -#define IF_CHATTR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_CHATTR(...) __VA_ARGS__ "CONFIG_CHATTR" +#else +# define IF_CHATTR(...) __VA_ARGS__ +#endif #define IF_NOT_CHATTR(...) #undef CONFIG_FSCK #define ENABLE_FSCK 0 @@ -1698,11 +2574,19 @@ #define IF_NOT_FSCK(...) __VA_ARGS__ #define CONFIG_LSATTR 1 #define ENABLE_LSATTR 1 -#define IF_LSATTR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LSATTR(...) __VA_ARGS__ "CONFIG_LSATTR" +#else +# define IF_LSATTR(...) __VA_ARGS__ +#endif #define IF_NOT_LSATTR(...) #define CONFIG_TUNE2FS 1 #define ENABLE_TUNE2FS 1 -#define IF_TUNE2FS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TUNE2FS(...) __VA_ARGS__ "CONFIG_TUNE2FS" +#else +# define IF_TUNE2FS(...) __VA_ARGS__ +#endif #define IF_NOT_TUNE2FS(...) /* @@ -1710,15 +2594,27 @@ */ #define CONFIG_MODINFO 1 #define ENABLE_MODINFO 1 -#define IF_MODINFO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MODINFO(...) __VA_ARGS__ "CONFIG_MODINFO" +#else +# define IF_MODINFO(...) __VA_ARGS__ +#endif #define IF_NOT_MODINFO(...) #define CONFIG_MODPROBE_SMALL 1 #define ENABLE_MODPROBE_SMALL 1 -#define IF_MODPROBE_SMALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MODPROBE_SMALL(...) __VA_ARGS__ "CONFIG_MODPROBE_SMALL" +#else +# define IF_MODPROBE_SMALL(...) __VA_ARGS__ +#endif #define IF_NOT_MODPROBE_SMALL(...) #define CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE 1 #define ENABLE_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE 1 -#define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__ "CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE" +#else +# define IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(...) #undef CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED #define ENABLE_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED 0 @@ -1762,7 +2658,11 @@ #define IF_NOT_FEATURE_2_4_MODULES(...) __VA_ARGS__ #define CONFIG_FEATURE_INSMOD_TRY_MMAP 1 #define ENABLE_FEATURE_INSMOD_TRY_MMAP 1 -#define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__ "CONFIG_FEATURE_INSMOD_TRY_MMAP" +#else +# define IF_FEATURE_INSMOD_TRY_MMAP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_INSMOD_TRY_MMAP(...) #undef CONFIG_FEATURE_INSMOD_VERSION_CHECKING #define ENABLE_FEATURE_INSMOD_VERSION_CHECKING 0 @@ -1798,7 +2698,11 @@ #define IF_NOT_FEATURE_MODUTILS_SYMBOLS(...) __VA_ARGS__ #define CONFIG_DEFAULT_DEPMOD_FILE "modules.dep" #define ENABLE_DEFAULT_DEPMOD_FILE 1 -#define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__ "CONFIG_DEFAULT_DEPMOD_FILE" +#else +# define IF_DEFAULT_DEPMOD_FILE(...) __VA_ARGS__ +#endif #define IF_NOT_DEFAULT_DEPMOD_FILE(...) /* @@ -1806,11 +2710,19 @@ */ #define CONFIG_BLOCKDEV 1 #define ENABLE_BLOCKDEV 1 -#define IF_BLOCKDEV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BLOCKDEV(...) __VA_ARGS__ "CONFIG_BLOCKDEV" +#else +# define IF_BLOCKDEV(...) __VA_ARGS__ +#endif #define IF_NOT_BLOCKDEV(...) #define CONFIG_FSTRIM 1 #define ENABLE_FSTRIM 1 -#define IF_FSTRIM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FSTRIM(...) __VA_ARGS__ "CONFIG_FSTRIM" +#else +# define IF_FSTRIM(...) __VA_ARGS__ +#endif #define IF_NOT_FSTRIM(...) #undef CONFIG_MDEV #define ENABLE_MDEV 0 @@ -1838,7 +2750,11 @@ #define IF_NOT_FEATURE_MDEV_LOAD_FIRMWARE(...) __VA_ARGS__ #define CONFIG_REV 1 #define ENABLE_REV 1 -#define IF_REV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_REV(...) __VA_ARGS__ "CONFIG_REV" +#else +# define IF_REV(...) __VA_ARGS__ +#endif #define IF_NOT_REV(...) #undef CONFIG_ACPID #define ENABLE_ACPID 0 @@ -1850,15 +2766,27 @@ #define IF_NOT_FEATURE_ACPID_COMPAT(...) __VA_ARGS__ #define CONFIG_BLKID 1 #define ENABLE_BLKID 1 -#define IF_BLKID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BLKID(...) __VA_ARGS__ "CONFIG_BLKID" +#else +# define IF_BLKID(...) __VA_ARGS__ +#endif #define IF_NOT_BLKID(...) #define CONFIG_FEATURE_BLKID_TYPE 1 #define ENABLE_FEATURE_BLKID_TYPE 1 -#define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__ "CONFIG_FEATURE_BLKID_TYPE" +#else +# define IF_FEATURE_BLKID_TYPE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BLKID_TYPE(...) #define CONFIG_DMESG 1 #define ENABLE_DMESG 1 -#define IF_DMESG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DMESG(...) __VA_ARGS__ "CONFIG_DMESG" +#else +# define IF_DMESG(...) __VA_ARGS__ +#endif #define IF_NOT_DMESG(...) #undef CONFIG_FEATURE_DMESG_PRETTY #define ENABLE_FEATURE_DMESG_PRETTY 0 @@ -1886,15 +2814,27 @@ #define IF_NOT_FDFORMAT(...) __VA_ARGS__ #define CONFIG_FDISK 1 #define ENABLE_FDISK 1 -#define IF_FDISK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FDISK(...) __VA_ARGS__ "CONFIG_FDISK" +#else +# define IF_FDISK(...) __VA_ARGS__ +#endif #define IF_NOT_FDISK(...) #define CONFIG_FDISK_SUPPORT_LARGE_DISKS 1 #define ENABLE_FDISK_SUPPORT_LARGE_DISKS 1 -#define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__ "CONFIG_FDISK_SUPPORT_LARGE_DISKS" +#else +# define IF_FDISK_SUPPORT_LARGE_DISKS(...) __VA_ARGS__ +#endif #define IF_NOT_FDISK_SUPPORT_LARGE_DISKS(...) #define CONFIG_FEATURE_FDISK_WRITABLE 1 #define ENABLE_FEATURE_FDISK_WRITABLE 1 -#define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__ "CONFIG_FEATURE_FDISK_WRITABLE" +#else +# define IF_FEATURE_FDISK_WRITABLE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_FDISK_WRITABLE(...) #undef CONFIG_FEATURE_AIX_LABEL #define ENABLE_FEATURE_AIX_LABEL 0 @@ -1930,7 +2870,11 @@ #define IF_NOT_FLOCK(...) __VA_ARGS__ #define CONFIG_FREERAMDISK 1 #define ENABLE_FREERAMDISK 1 -#define IF_FREERAMDISK(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FREERAMDISK(...) __VA_ARGS__ "CONFIG_FREERAMDISK" +#else +# define IF_FREERAMDISK(...) __VA_ARGS__ +#endif #define IF_NOT_FREERAMDISK(...) #undef CONFIG_FSCK_MINIX #define ENABLE_FSCK_MINIX 0 @@ -1938,7 +2882,11 @@ #define IF_NOT_FSCK_MINIX(...) __VA_ARGS__ #define CONFIG_MKFS_EXT2 1 #define ENABLE_MKFS_EXT2 1 -#define IF_MKFS_EXT2(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKFS_EXT2(...) __VA_ARGS__ "CONFIG_MKFS_EXT2" +#else +# define IF_MKFS_EXT2(...) __VA_ARGS__ +#endif #define IF_NOT_MKFS_EXT2(...) #undef CONFIG_MKFS_MINIX #define ENABLE_MKFS_MINIX 0 @@ -1954,11 +2902,19 @@ #define IF_NOT_MKFS_REISER(...) __VA_ARGS__ #define CONFIG_MKFS_VFAT 1 #define ENABLE_MKFS_VFAT 1 -#define IF_MKFS_VFAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKFS_VFAT(...) __VA_ARGS__ "CONFIG_MKFS_VFAT" +#else +# define IF_MKFS_VFAT(...) __VA_ARGS__ +#endif #define IF_NOT_MKFS_VFAT(...) #define CONFIG_GETOPT 1 #define ENABLE_GETOPT 1 -#define IF_GETOPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_GETOPT(...) __VA_ARGS__ "CONFIG_GETOPT" +#else +# define IF_GETOPT(...) __VA_ARGS__ +#endif #define IF_NOT_GETOPT(...) #undef CONFIG_FEATURE_GETOPT_LONG #define ENABLE_FEATURE_GETOPT_LONG 0 @@ -1966,7 +2922,11 @@ #define IF_NOT_FEATURE_GETOPT_LONG(...) __VA_ARGS__ #define CONFIG_HEXDUMP 1 #define ENABLE_HEXDUMP 1 -#define IF_HEXDUMP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_HEXDUMP(...) __VA_ARGS__ "CONFIG_HEXDUMP" +#else +# define IF_HEXDUMP(...) __VA_ARGS__ +#endif #define IF_NOT_HEXDUMP(...) #undef CONFIG_FEATURE_HEXDUMP_REVERSE #define ENABLE_FEATURE_HEXDUMP_REVERSE 0 @@ -1998,19 +2958,35 @@ #define IF_NOT_IPCS(...) __VA_ARGS__ #define CONFIG_LOSETUP 1 #define ENABLE_LOSETUP 1 -#define IF_LOSETUP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LOSETUP(...) __VA_ARGS__ "CONFIG_LOSETUP" +#else +# define IF_LOSETUP(...) __VA_ARGS__ +#endif #define IF_NOT_LOSETUP(...) #define CONFIG_LSPCI 1 #define ENABLE_LSPCI 1 -#define IF_LSPCI(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LSPCI(...) __VA_ARGS__ "CONFIG_LSPCI" +#else +# define IF_LSPCI(...) __VA_ARGS__ +#endif #define IF_NOT_LSPCI(...) #define CONFIG_LSUSB 1 #define ENABLE_LSUSB 1 -#define IF_LSUSB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LSUSB(...) __VA_ARGS__ "CONFIG_LSUSB" +#else +# define IF_LSUSB(...) __VA_ARGS__ +#endif #define IF_NOT_LSUSB(...) #define CONFIG_MKSWAP 1 #define ENABLE_MKSWAP 1 -#define IF_MKSWAP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MKSWAP(...) __VA_ARGS__ "CONFIG_MKSWAP" +#else +# define IF_MKSWAP(...) __VA_ARGS__ +#endif #define IF_NOT_MKSWAP(...) #undef CONFIG_FEATURE_MKSWAP_UUID #define ENABLE_FEATURE_MKSWAP_UUID 0 @@ -2018,11 +2994,19 @@ #define IF_NOT_FEATURE_MKSWAP_UUID(...) __VA_ARGS__ #define CONFIG_MORE 1 #define ENABLE_MORE 1 -#define IF_MORE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MORE(...) __VA_ARGS__ "CONFIG_MORE" +#else +# define IF_MORE(...) __VA_ARGS__ +#endif #define IF_NOT_MORE(...) #define CONFIG_MOUNT 1 #define ENABLE_MOUNT 1 -#define IF_MOUNT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MOUNT(...) __VA_ARGS__ "CONFIG_MOUNT" +#else +# define IF_MOUNT(...) __VA_ARGS__ +#endif #define IF_NOT_MOUNT(...) #undef CONFIG_FEATURE_MOUNT_FAKE #define ENABLE_FEATURE_MOUNT_FAKE 0 @@ -2038,7 +3022,11 @@ #define IF_NOT_FEATURE_MOUNT_HELPERS(...) __VA_ARGS__ #define CONFIG_FEATURE_MOUNT_LABEL 1 #define ENABLE_FEATURE_MOUNT_LABEL 1 -#define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LABEL" +#else +# define IF_FEATURE_MOUNT_LABEL(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_LABEL(...) #undef CONFIG_FEATURE_MOUNT_NFS #define ENABLE_FEATURE_MOUNT_NFS 0 @@ -2046,15 +3034,27 @@ #define IF_NOT_FEATURE_MOUNT_NFS(...) __VA_ARGS__ #define CONFIG_FEATURE_MOUNT_CIFS 1 #define ENABLE_FEATURE_MOUNT_CIFS 1 -#define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_CIFS" +#else +# define IF_FEATURE_MOUNT_CIFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_CIFS(...) #define CONFIG_FEATURE_MOUNT_FLAGS 1 #define ENABLE_FEATURE_MOUNT_FLAGS 1 -#define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FLAGS" +#else +# define IF_FEATURE_MOUNT_FLAGS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_FLAGS(...) #define CONFIG_FEATURE_MOUNT_FSTAB 1 #define ENABLE_FEATURE_MOUNT_FSTAB 1 -#define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_FSTAB" +#else +# define IF_FEATURE_MOUNT_FSTAB(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_FSTAB(...) #undef CONFIG_PIVOT_ROOT #define ENABLE_PIVOT_ROOT 0 @@ -2066,7 +3066,11 @@ #define IF_NOT_RDATE(...) __VA_ARGS__ #define CONFIG_RDEV 1 #define ENABLE_RDEV 1 -#define IF_RDEV(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RDEV(...) __VA_ARGS__ "CONFIG_RDEV" +#else +# define IF_RDEV(...) __VA_ARGS__ +#endif #define IF_NOT_RDEV(...) #undef CONFIG_READPROFILE #define ENABLE_READPROFILE 0 @@ -2090,7 +3094,11 @@ #define IF_NOT_SETARCH(...) __VA_ARGS__ #define CONFIG_SWAPONOFF 1 #define ENABLE_SWAPONOFF 1 -#define IF_SWAPONOFF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SWAPONOFF(...) __VA_ARGS__ "CONFIG_SWAPONOFF" +#else +# define IF_SWAPONOFF(...) __VA_ARGS__ +#endif #define IF_NOT_SWAPONOFF(...) #undef CONFIG_FEATURE_SWAPON_PRI #define ENABLE_FEATURE_SWAPON_PRI 0 @@ -2102,7 +3110,11 @@ #define IF_NOT_SWITCH_ROOT(...) __VA_ARGS__ #define CONFIG_UMOUNT 1 #define ENABLE_UMOUNT 1 -#define IF_UMOUNT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UMOUNT(...) __VA_ARGS__ "CONFIG_UMOUNT" +#else +# define IF_UMOUNT(...) __VA_ARGS__ +#endif #define IF_NOT_UMOUNT(...) #undef CONFIG_FEATURE_UMOUNT_ALL #define ENABLE_FEATURE_UMOUNT_ALL 0 @@ -2114,7 +3126,11 @@ */ #define CONFIG_FEATURE_MOUNT_LOOP 1 #define ENABLE_FEATURE_MOUNT_LOOP 1 -#define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__ "CONFIG_FEATURE_MOUNT_LOOP" +#else +# define IF_FEATURE_MOUNT_LOOP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MOUNT_LOOP(...) #undef CONFIG_FEATURE_MOUNT_LOOP_CREATE #define ENABLE_FEATURE_MOUNT_LOOP_CREATE 0 @@ -2126,92 +3142,132 @@ #define IF_NOT_FEATURE_MTAB_SUPPORT(...) __VA_ARGS__ #define CONFIG_VOLUMEID 1 #define ENABLE_VOLUMEID 1 -#define IF_VOLUMEID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_VOLUMEID(...) __VA_ARGS__ "CONFIG_VOLUMEID" +#else +# define IF_VOLUMEID(...) __VA_ARGS__ +#endif #define IF_NOT_VOLUMEID(...) /* * Filesystem/Volume identification */ -#define CONFIG_FEATURE_VOLUMEID_EXT 1 -#define ENABLE_FEATURE_VOLUMEID_EXT 1 -#define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__ -#define IF_NOT_FEATURE_VOLUMEID_EXT(...) #undef CONFIG_FEATURE_VOLUMEID_BTRFS #define ENABLE_FEATURE_VOLUMEID_BTRFS 0 #define IF_FEATURE_VOLUMEID_BTRFS(...) #define IF_NOT_FEATURE_VOLUMEID_BTRFS(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_REISERFS -#define ENABLE_FEATURE_VOLUMEID_REISERFS 0 -#define IF_FEATURE_VOLUMEID_REISERFS(...) -#define IF_NOT_FEATURE_VOLUMEID_REISERFS(...) __VA_ARGS__ -#define CONFIG_FEATURE_VOLUMEID_FAT 1 -#define ENABLE_FEATURE_VOLUMEID_FAT 1 -#define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__ -#define IF_NOT_FEATURE_VOLUMEID_FAT(...) +#undef CONFIG_FEATURE_VOLUMEID_CRAMFS +#define ENABLE_FEATURE_VOLUMEID_CRAMFS 0 +#define IF_FEATURE_VOLUMEID_CRAMFS(...) +#define IF_NOT_FEATURE_VOLUMEID_CRAMFS(...) __VA_ARGS__ #define CONFIG_FEATURE_VOLUMEID_EXFAT 1 #define ENABLE_FEATURE_VOLUMEID_EXFAT 1 -#define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_EXFAT" +#else +# define IF_FEATURE_VOLUMEID_EXFAT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VOLUMEID_EXFAT(...) +#define CONFIG_FEATURE_VOLUMEID_EXT 1 +#define ENABLE_FEATURE_VOLUMEID_EXT 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_EXT" +#else +# define IF_FEATURE_VOLUMEID_EXT(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_EXT(...) +#define CONFIG_FEATURE_VOLUMEID_F2FS 1 +#define ENABLE_FEATURE_VOLUMEID_F2FS 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_F2FS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_F2FS" +#else +# define IF_FEATURE_VOLUMEID_F2FS(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_F2FS(...) +#define CONFIG_FEATURE_VOLUMEID_FAT 1 +#define ENABLE_FEATURE_VOLUMEID_FAT 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_FAT" +#else +# define IF_FEATURE_VOLUMEID_FAT(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_FAT(...) #undef CONFIG_FEATURE_VOLUMEID_HFS #define ENABLE_FEATURE_VOLUMEID_HFS 0 #define IF_FEATURE_VOLUMEID_HFS(...) #define IF_NOT_FEATURE_VOLUMEID_HFS(...) __VA_ARGS__ +#define CONFIG_FEATURE_VOLUMEID_ISO9660 1 +#define ENABLE_FEATURE_VOLUMEID_ISO9660 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_ISO9660" +#else +# define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_ISO9660(...) #undef CONFIG_FEATURE_VOLUMEID_JFS #define ENABLE_FEATURE_VOLUMEID_JFS 0 #define IF_FEATURE_VOLUMEID_JFS(...) #define IF_NOT_FEATURE_VOLUMEID_JFS(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_XFS -#define ENABLE_FEATURE_VOLUMEID_XFS 0 -#define IF_FEATURE_VOLUMEID_XFS(...) -#define IF_NOT_FEATURE_VOLUMEID_XFS(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_LINUXRAID +#define ENABLE_FEATURE_VOLUMEID_LINUXRAID 0 +#define IF_FEATURE_VOLUMEID_LINUXRAID(...) +#define IF_NOT_FEATURE_VOLUMEID_LINUXRAID(...) __VA_ARGS__ +#define CONFIG_FEATURE_VOLUMEID_LINUXSWAP 1 +#define ENABLE_FEATURE_VOLUMEID_LINUXSWAP 1 +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_LINUXSWAP" +#else +# define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__ +#endif +#define IF_NOT_FEATURE_VOLUMEID_LINUXSWAP(...) +#undef CONFIG_FEATURE_VOLUMEID_LUKS +#define ENABLE_FEATURE_VOLUMEID_LUKS 0 +#define IF_FEATURE_VOLUMEID_LUKS(...) +#define IF_NOT_FEATURE_VOLUMEID_LUKS(...) __VA_ARGS__ #undef CONFIG_FEATURE_VOLUMEID_NILFS #define ENABLE_FEATURE_VOLUMEID_NILFS 0 #define IF_FEATURE_VOLUMEID_NILFS(...) #define IF_NOT_FEATURE_VOLUMEID_NILFS(...) __VA_ARGS__ #define CONFIG_FEATURE_VOLUMEID_NTFS 1 #define ENABLE_FEATURE_VOLUMEID_NTFS 1 -#define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_NTFS" +#else +# define IF_FEATURE_VOLUMEID_NTFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VOLUMEID_NTFS(...) -#define CONFIG_FEATURE_VOLUMEID_ISO9660 1 -#define ENABLE_FEATURE_VOLUMEID_ISO9660 1 -#define IF_FEATURE_VOLUMEID_ISO9660(...) __VA_ARGS__ -#define IF_NOT_FEATURE_VOLUMEID_ISO9660(...) -#undef CONFIG_FEATURE_VOLUMEID_UDF -#define ENABLE_FEATURE_VOLUMEID_UDF 0 -#define IF_FEATURE_VOLUMEID_UDF(...) -#define IF_NOT_FEATURE_VOLUMEID_UDF(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_LUKS -#define ENABLE_FEATURE_VOLUMEID_LUKS 0 -#define IF_FEATURE_VOLUMEID_LUKS(...) -#define IF_NOT_FEATURE_VOLUMEID_LUKS(...) __VA_ARGS__ -#define CONFIG_FEATURE_VOLUMEID_LINUXSWAP 1 -#define ENABLE_FEATURE_VOLUMEID_LINUXSWAP 1 -#define IF_FEATURE_VOLUMEID_LINUXSWAP(...) __VA_ARGS__ -#define IF_NOT_FEATURE_VOLUMEID_LINUXSWAP(...) -#undef CONFIG_FEATURE_VOLUMEID_CRAMFS -#define ENABLE_FEATURE_VOLUMEID_CRAMFS 0 -#define IF_FEATURE_VOLUMEID_CRAMFS(...) -#define IF_NOT_FEATURE_VOLUMEID_CRAMFS(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_OCFS2 +#define ENABLE_FEATURE_VOLUMEID_OCFS2 0 +#define IF_FEATURE_VOLUMEID_OCFS2(...) +#define IF_NOT_FEATURE_VOLUMEID_OCFS2(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_REISERFS +#define ENABLE_FEATURE_VOLUMEID_REISERFS 0 +#define IF_FEATURE_VOLUMEID_REISERFS(...) +#define IF_NOT_FEATURE_VOLUMEID_REISERFS(...) __VA_ARGS__ #undef CONFIG_FEATURE_VOLUMEID_ROMFS #define ENABLE_FEATURE_VOLUMEID_ROMFS 0 #define IF_FEATURE_VOLUMEID_ROMFS(...) #define IF_NOT_FEATURE_VOLUMEID_ROMFS(...) __VA_ARGS__ #define CONFIG_FEATURE_VOLUMEID_SQUASHFS 1 #define ENABLE_FEATURE_VOLUMEID_SQUASHFS 1 -#define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__ "CONFIG_FEATURE_VOLUMEID_SQUASHFS" +#else +# define IF_FEATURE_VOLUMEID_SQUASHFS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_VOLUMEID_SQUASHFS(...) #undef CONFIG_FEATURE_VOLUMEID_SYSV #define ENABLE_FEATURE_VOLUMEID_SYSV 0 #define IF_FEATURE_VOLUMEID_SYSV(...) #define IF_NOT_FEATURE_VOLUMEID_SYSV(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_OCFS2 -#define ENABLE_FEATURE_VOLUMEID_OCFS2 0 -#define IF_FEATURE_VOLUMEID_OCFS2(...) -#define IF_NOT_FEATURE_VOLUMEID_OCFS2(...) __VA_ARGS__ -#undef CONFIG_FEATURE_VOLUMEID_LINUXRAID -#define ENABLE_FEATURE_VOLUMEID_LINUXRAID 0 -#define IF_FEATURE_VOLUMEID_LINUXRAID(...) -#define IF_NOT_FEATURE_VOLUMEID_LINUXRAID(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_UDF +#define ENABLE_FEATURE_VOLUMEID_UDF 0 +#define IF_FEATURE_VOLUMEID_UDF(...) +#define IF_NOT_FEATURE_VOLUMEID_UDF(...) __VA_ARGS__ +#undef CONFIG_FEATURE_VOLUMEID_XFS +#define ENABLE_FEATURE_VOLUMEID_XFS 0 +#define IF_FEATURE_VOLUMEID_XFS(...) +#define IF_NOT_FEATURE_VOLUMEID_XFS(...) __VA_ARGS__ /* * Miscellaneous Utilities @@ -2222,11 +3278,19 @@ #define IF_NOT_CONSPY(...) __VA_ARGS__ #define CONFIG_LESS 1 #define ENABLE_LESS 1 -#define IF_LESS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LESS(...) __VA_ARGS__ "CONFIG_LESS" +#else +# define IF_LESS(...) __VA_ARGS__ +#endif #define IF_NOT_LESS(...) #define CONFIG_FEATURE_LESS_MAXLINES 65536 #define ENABLE_FEATURE_LESS_MAXLINES 1 -#define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_MAXLINES" +#else +# define IF_FEATURE_LESS_MAXLINES(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_MAXLINES(...) #undef CONFIG_FEATURE_LESS_BRACKETS #define ENABLE_FEATURE_LESS_BRACKETS 0 @@ -2238,15 +3302,27 @@ #define IF_NOT_FEATURE_LESS_FLAGS(...) __VA_ARGS__ #define CONFIG_FEATURE_LESS_MARKS 1 #define ENABLE_FEATURE_LESS_MARKS 1 -#define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_MARKS" +#else +# define IF_FEATURE_LESS_MARKS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_MARKS(...) #define CONFIG_FEATURE_LESS_REGEXP 1 #define ENABLE_FEATURE_LESS_REGEXP 1 -#define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_REGEXP" +#else +# define IF_FEATURE_LESS_REGEXP(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_REGEXP(...) #define CONFIG_FEATURE_LESS_WINCH 1 #define ENABLE_FEATURE_LESS_WINCH 1 -#define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__ "CONFIG_FEATURE_LESS_WINCH" +#else +# define IF_FEATURE_LESS_WINCH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_LESS_WINCH(...) #undef CONFIG_FEATURE_LESS_ASK_TERMINAL #define ENABLE_FEATURE_LESS_ASK_TERMINAL 0 @@ -2262,15 +3338,31 @@ #define IF_NOT_FEATURE_LESS_LINENUMS(...) __VA_ARGS__ #define CONFIG_NANDWRITE 1 #define ENABLE_NANDWRITE 1 -#define IF_NANDWRITE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NANDWRITE(...) __VA_ARGS__ "CONFIG_NANDWRITE" +#else +# define IF_NANDWRITE(...) __VA_ARGS__ +#endif #define IF_NOT_NANDWRITE(...) #define CONFIG_NANDDUMP 1 #define ENABLE_NANDDUMP 1 -#define IF_NANDDUMP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_NANDDUMP(...) __VA_ARGS__ "CONFIG_NANDDUMP" +#else +# define IF_NANDDUMP(...) __VA_ARGS__ +#endif #define IF_NOT_NANDDUMP(...) +#undef CONFIG_RFKILL +#define ENABLE_RFKILL 0 +#define IF_RFKILL(...) +#define IF_NOT_RFKILL(...) __VA_ARGS__ #define CONFIG_SETSERIAL 1 #define ENABLE_SETSERIAL 1 -#define IF_SETSERIAL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SETSERIAL(...) __VA_ARGS__ "CONFIG_SETSERIAL" +#else +# define IF_SETSERIAL(...) __VA_ARGS__ +#endif #define IF_NOT_SETSERIAL(...) #undef CONFIG_UBIATTACH #define ENABLE_UBIATTACH 0 @@ -2296,17 +3388,29 @@ #define ENABLE_UBIUPDATEVOL 0 #define IF_UBIUPDATEVOL(...) #define IF_NOT_UBIUPDATEVOL(...) __VA_ARGS__ +#undef CONFIG_WALL +#define ENABLE_WALL 0 +#define IF_WALL(...) +#define IF_NOT_WALL(...) __VA_ARGS__ #undef CONFIG_ADJTIMEX #define ENABLE_ADJTIMEX 0 #define IF_ADJTIMEX(...) #define IF_NOT_ADJTIMEX(...) __VA_ARGS__ #define CONFIG_BBCONFIG 1 #define ENABLE_BBCONFIG 1 -#define IF_BBCONFIG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BBCONFIG(...) __VA_ARGS__ "CONFIG_BBCONFIG" +#else +# define IF_BBCONFIG(...) __VA_ARGS__ +#endif #define IF_NOT_BBCONFIG(...) #define CONFIG_FEATURE_COMPRESS_BBCONFIG 1 #define ENABLE_FEATURE_COMPRESS_BBCONFIG 1 -#define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__ "CONFIG_FEATURE_COMPRESS_BBCONFIG" +#else +# define IF_FEATURE_COMPRESS_BBCONFIG(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_COMPRESS_BBCONFIG(...) #undef CONFIG_BEEP #define ENABLE_BEEP 0 @@ -2314,11 +3418,19 @@ #define IF_NOT_BEEP(...) __VA_ARGS__ #define CONFIG_FEATURE_BEEP_FREQ 0 #define ENABLE_FEATURE_BEEP_FREQ 1 -#define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__ "CONFIG_FEATURE_BEEP_FREQ" +#else +# define IF_FEATURE_BEEP_FREQ(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BEEP_FREQ(...) #define CONFIG_FEATURE_BEEP_LENGTH_MS 0 #define ENABLE_FEATURE_BEEP_LENGTH_MS 1 -#define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__ "CONFIG_FEATURE_BEEP_LENGTH_MS" +#else +# define IF_FEATURE_BEEP_LENGTH_MS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BEEP_LENGTH_MS(...) #undef CONFIG_CHAT #define ENABLE_CHAT 0 @@ -2370,7 +3482,11 @@ #define IF_NOT_FEATURE_CROND_CALL_SENDMAIL(...) __VA_ARGS__ #define CONFIG_FEATURE_CROND_DIR "" #define ENABLE_FEATURE_CROND_DIR 1 -#define IF_FEATURE_CROND_DIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_CROND_DIR(...) __VA_ARGS__ "CONFIG_FEATURE_CROND_DIR" +#else +# define IF_FEATURE_CROND_DIR(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_CROND_DIR(...) #undef CONFIG_CRONTAB #define ENABLE_CRONTAB 0 @@ -2378,7 +3494,11 @@ #define IF_NOT_CRONTAB(...) __VA_ARGS__ #define CONFIG_DC 1 #define ENABLE_DC 1 -#define IF_DC(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DC(...) __VA_ARGS__ "CONFIG_DC" +#else +# define IF_DC(...) __VA_ARGS__ +#endif #define IF_NOT_DC(...) #undef CONFIG_FEATURE_DC_LIBM #define ENABLE_FEATURE_DC_LIBM 0 @@ -2406,7 +3526,11 @@ #define IF_NOT_FEATURE_DEVFS(...) __VA_ARGS__ #define CONFIG_DEVMEM 1 #define ENABLE_DEVMEM 1 -#define IF_DEVMEM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DEVMEM(...) __VA_ARGS__ "CONFIG_DEVMEM" +#else +# define IF_DEVMEM(...) __VA_ARGS__ +#endif #define IF_NOT_DEVMEM(...) #undef CONFIG_EJECT #define ENABLE_EJECT 0 @@ -2486,7 +3610,11 @@ #define IF_NOT_FEATURE_HDPARM_HDIO_GETSET_DMA(...) __VA_ARGS__ #define CONFIG_MAKEDEVS 1 #define ENABLE_MAKEDEVS 1 -#define IF_MAKEDEVS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MAKEDEVS(...) __VA_ARGS__ "CONFIG_MAKEDEVS" +#else +# define IF_MAKEDEVS(...) __VA_ARGS__ +#endif #define IF_NOT_MAKEDEVS(...) #undef CONFIG_FEATURE_MAKEDEVS_LEAF #define ENABLE_FEATURE_MAKEDEVS_LEAF 0 @@ -2494,7 +3622,11 @@ #define IF_NOT_FEATURE_MAKEDEVS_LEAF(...) __VA_ARGS__ #define CONFIG_FEATURE_MAKEDEVS_TABLE 1 #define ENABLE_FEATURE_MAKEDEVS_TABLE 1 -#define IF_FEATURE_MAKEDEVS_TABLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MAKEDEVS_TABLE(...) __VA_ARGS__ "CONFIG_FEATURE_MAKEDEVS_TABLE" +#else +# define IF_FEATURE_MAKEDEVS_TABLE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MAKEDEVS_TABLE(...) #undef CONFIG_MAN #define ENABLE_MAN 0 @@ -2506,7 +3638,11 @@ #define IF_NOT_MICROCOM(...) __VA_ARGS__ #define CONFIG_MOUNTPOINT 1 #define ENABLE_MOUNTPOINT 1 -#define IF_MOUNTPOINT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_MOUNTPOINT(...) __VA_ARGS__ "CONFIG_MOUNTPOINT" +#else +# define IF_MOUNTPOINT(...) __VA_ARGS__ +#endif #define IF_NOT_MOUNTPOINT(...) #undef CONFIG_MT #define ENABLE_MT 0 @@ -2520,10 +3656,6 @@ #define ENABLE_READAHEAD 0 #define IF_READAHEAD(...) #define IF_NOT_READAHEAD(...) __VA_ARGS__ -#undef CONFIG_RFKILL -#define ENABLE_RFKILL 0 -#define IF_RFKILL(...) -#define IF_NOT_RFKILL(...) __VA_ARGS__ #undef CONFIG_RUNLEVEL #define ENABLE_RUNLEVEL 0 #define IF_RUNLEVEL(...) @@ -2534,11 +3666,19 @@ #define IF_NOT_RX(...) __VA_ARGS__ #define CONFIG_SETSID 1 #define ENABLE_SETSID 1 -#define IF_SETSID(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SETSID(...) __VA_ARGS__ "CONFIG_SETSID" +#else +# define IF_SETSID(...) __VA_ARGS__ +#endif #define IF_NOT_SETSID(...) #define CONFIG_STRINGS 1 #define ENABLE_STRINGS 1 -#define IF_STRINGS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_STRINGS(...) __VA_ARGS__ "CONFIG_STRINGS" +#else +# define IF_STRINGS(...) __VA_ARGS__ +#endif #define IF_NOT_STRINGS(...) #undef CONFIG_TASKSET #define ENABLE_TASKSET 0 @@ -2550,7 +3690,11 @@ #define IF_NOT_FEATURE_TASKSET_FANCY(...) __VA_ARGS__ #define CONFIG_TIME 1 #define ENABLE_TIME 1 -#define IF_TIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TIME(...) __VA_ARGS__ "CONFIG_TIME" +#else +# define IF_TIME(...) __VA_ARGS__ +#endif #define IF_NOT_TIME(...) #undef CONFIG_TIMEOUT #define ENABLE_TIMEOUT 0 @@ -2558,16 +3702,16 @@ #define IF_NOT_TIMEOUT(...) __VA_ARGS__ #define CONFIG_TTYSIZE 1 #define ENABLE_TTYSIZE 1 -#define IF_TTYSIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TTYSIZE(...) __VA_ARGS__ "CONFIG_TTYSIZE" +#else +# define IF_TTYSIZE(...) __VA_ARGS__ +#endif #define IF_NOT_TTYSIZE(...) #undef CONFIG_VOLNAME #define ENABLE_VOLNAME 0 #define IF_VOLNAME(...) #define IF_NOT_VOLNAME(...) __VA_ARGS__ -#undef CONFIG_WALL -#define ENABLE_WALL 0 -#define IF_WALL(...) -#define IF_NOT_WALL(...) __VA_ARGS__ #undef CONFIG_WATCHDOG #define ENABLE_WATCHDOG 0 #define IF_WATCHDOG(...) @@ -2786,7 +3930,11 @@ #define IF_NOT_IFUPDOWN(...) __VA_ARGS__ #define CONFIG_IFUPDOWN_IFSTATE_PATH "" #define ENABLE_IFUPDOWN_IFSTATE_PATH 1 -#define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__ "CONFIG_IFUPDOWN_IFSTATE_PATH" +#else +# define IF_IFUPDOWN_IFSTATE_PATH(...) __VA_ARGS__ +#endif #define IF_NOT_IFUPDOWN_IFSTATE_PATH(...) #undef CONFIG_FEATURE_IFUPDOWN_IP #define ENABLE_FEATURE_IFUPDOWN_IP 0 @@ -3054,7 +4202,11 @@ #define IF_NOT_FEATURE_UDHCPD_BASE_IP_ON_MAC(...) __VA_ARGS__ #define CONFIG_DHCPD_LEASES_FILE "" #define ENABLE_DHCPD_LEASES_FILE 1 -#define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__ "CONFIG_DHCPD_LEASES_FILE" +#else +# define IF_DHCPD_LEASES_FILE(...) __VA_ARGS__ +#endif #define IF_NOT_DHCPD_LEASES_FILE(...) #undef CONFIG_UDHCPC #define ENABLE_UDHCPC 0 @@ -3070,7 +4222,11 @@ #define IF_NOT_FEATURE_UDHCP_PORT(...) __VA_ARGS__ #define CONFIG_UDHCP_DEBUG 0 #define ENABLE_UDHCP_DEBUG 1 -#define IF_UDHCP_DEBUG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UDHCP_DEBUG(...) __VA_ARGS__ "CONFIG_UDHCP_DEBUG" +#else +# define IF_UDHCP_DEBUG(...) __VA_ARGS__ +#endif #define IF_NOT_UDHCP_DEBUG(...) #undef CONFIG_FEATURE_UDHCP_RFC3397 #define ENABLE_FEATURE_UDHCP_RFC3397 0 @@ -3082,15 +4238,27 @@ #define IF_NOT_FEATURE_UDHCP_8021Q(...) __VA_ARGS__ #define CONFIG_UDHCPC_DEFAULT_SCRIPT "" #define ENABLE_UDHCPC_DEFAULT_SCRIPT 1 -#define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__ "CONFIG_UDHCPC_DEFAULT_SCRIPT" +#else +# define IF_UDHCPC_DEFAULT_SCRIPT(...) __VA_ARGS__ +#endif #define IF_NOT_UDHCPC_DEFAULT_SCRIPT(...) #define CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS 0 #define ENABLE_UDHCPC_SLACK_FOR_BUGGY_SERVERS 1 -#define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__ "CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS" +#else +# define IF_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) __VA_ARGS__ +#endif #define IF_NOT_UDHCPC_SLACK_FOR_BUGGY_SERVERS(...) #define CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS "" #define ENABLE_IFUPDOWN_UDHCPC_CMD_OPTIONS 1 -#define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__ "CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS" +#else +# define IF_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) __VA_ARGS__ +#endif #define IF_NOT_IFUPDOWN_UDHCPC_CMD_OPTIONS(...) #undef CONFIG_UDPSVD #define ENABLE_UDPSVD 0 @@ -3150,7 +4318,11 @@ #define IF_NOT_MAKEMIME(...) __VA_ARGS__ #define CONFIG_FEATURE_MIME_CHARSET "" #define ENABLE_FEATURE_MIME_CHARSET 1 -#define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__ "CONFIG_FEATURE_MIME_CHARSET" +#else +# define IF_FEATURE_MIME_CHARSET(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_MIME_CHARSET(...) #undef CONFIG_POPMAILDIR #define ENABLE_POPMAILDIR 0 @@ -3182,7 +4354,11 @@ #define IF_NOT_IOSTAT(...) __VA_ARGS__ #define CONFIG_LSOF 1 #define ENABLE_LSOF 1 -#define IF_LSOF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_LSOF(...) __VA_ARGS__ "CONFIG_LSOF" +#else +# define IF_LSOF(...) __VA_ARGS__ +#endif #define IF_NOT_LSOF(...) #undef CONFIG_MPSTAT #define ENABLE_MPSTAT 0 @@ -3202,7 +4378,11 @@ #define IF_NOT_POWERTOP(...) __VA_ARGS__ #define CONFIG_PSTREE 1 #define ENABLE_PSTREE 1 -#define IF_PSTREE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PSTREE(...) __VA_ARGS__ "CONFIG_PSTREE" +#else +# define IF_PSTREE(...) __VA_ARGS__ +#endif #define IF_NOT_PSTREE(...) #undef CONFIG_PWDX #define ENABLE_PWDX 0 @@ -3214,15 +4394,27 @@ #define IF_NOT_SMEMCAP(...) __VA_ARGS__ #define CONFIG_TOP 1 #define ENABLE_TOP 1 -#define IF_TOP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_TOP(...) __VA_ARGS__ "CONFIG_TOP" +#else +# define IF_TOP(...) __VA_ARGS__ +#endif #define IF_NOT_TOP(...) #define CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE 1 #define ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE 1 -#define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE" +#else +# define IF_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOP_CPU_USAGE_PERCENTAGE(...) #define CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS 1 #define ENABLE_FEATURE_TOP_CPU_GLOBAL_PERCENTS 1 -#define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS" +#else +# define IF_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOP_CPU_GLOBAL_PERCENTS(...) #undef CONFIG_FEATURE_TOP_SMP_CPU #define ENABLE_FEATURE_TOP_SMP_CPU 0 @@ -3230,7 +4422,11 @@ #define IF_NOT_FEATURE_TOP_SMP_CPU(...) __VA_ARGS__ #define CONFIG_FEATURE_TOP_DECIMALS 1 #define ENABLE_FEATURE_TOP_DECIMALS 1 -#define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__ "CONFIG_FEATURE_TOP_DECIMALS" +#else +# define IF_FEATURE_TOP_DECIMALS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOP_DECIMALS(...) #undef CONFIG_FEATURE_TOP_SMP_PROCESS #define ENABLE_FEATURE_TOP_SMP_PROCESS 0 @@ -3238,11 +4434,19 @@ #define IF_NOT_FEATURE_TOP_SMP_PROCESS(...) __VA_ARGS__ #define CONFIG_FEATURE_TOPMEM 1 #define ENABLE_FEATURE_TOPMEM 1 -#define IF_FEATURE_TOPMEM(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_TOPMEM(...) __VA_ARGS__ "CONFIG_FEATURE_TOPMEM" +#else +# define IF_FEATURE_TOPMEM(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_TOPMEM(...) #define CONFIG_UPTIME 1 #define ENABLE_UPTIME 1 -#define IF_UPTIME(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_UPTIME(...) __VA_ARGS__ "CONFIG_UPTIME" +#else +# define IF_UPTIME(...) __VA_ARGS__ +#endif #define IF_NOT_UPTIME(...) #undef CONFIG_FEATURE_UPTIME_UTMP_SUPPORT #define ENABLE_FEATURE_UPTIME_UTMP_SUPPORT 0 @@ -3250,55 +4454,107 @@ #define IF_NOT_FEATURE_UPTIME_UTMP_SUPPORT(...) __VA_ARGS__ #define CONFIG_FREE 1 #define ENABLE_FREE 1 -#define IF_FREE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FREE(...) __VA_ARGS__ "CONFIG_FREE" +#else +# define IF_FREE(...) __VA_ARGS__ +#endif #define IF_NOT_FREE(...) #define CONFIG_FUSER 1 #define ENABLE_FUSER 1 -#define IF_FUSER(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FUSER(...) __VA_ARGS__ "CONFIG_FUSER" +#else +# define IF_FUSER(...) __VA_ARGS__ +#endif #define IF_NOT_FUSER(...) #define CONFIG_KILL 1 #define ENABLE_KILL 1 -#define IF_KILL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_KILL(...) __VA_ARGS__ "CONFIG_KILL" +#else +# define IF_KILL(...) __VA_ARGS__ +#endif #define IF_NOT_KILL(...) #define CONFIG_KILLALL 1 #define ENABLE_KILLALL 1 -#define IF_KILLALL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_KILLALL(...) __VA_ARGS__ "CONFIG_KILLALL" +#else +# define IF_KILLALL(...) __VA_ARGS__ +#endif #define IF_NOT_KILLALL(...) #define CONFIG_KILLALL5 1 #define ENABLE_KILLALL5 1 -#define IF_KILLALL5(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_KILLALL5(...) __VA_ARGS__ "CONFIG_KILLALL5" +#else +# define IF_KILLALL5(...) __VA_ARGS__ +#endif #define IF_NOT_KILLALL5(...) #define CONFIG_PGREP 1 #define ENABLE_PGREP 1 -#define IF_PGREP(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PGREP(...) __VA_ARGS__ "CONFIG_PGREP" +#else +# define IF_PGREP(...) __VA_ARGS__ +#endif #define IF_NOT_PGREP(...) #define CONFIG_PIDOF 1 #define ENABLE_PIDOF 1 -#define IF_PIDOF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PIDOF(...) __VA_ARGS__ "CONFIG_PIDOF" +#else +# define IF_PIDOF(...) __VA_ARGS__ +#endif #define IF_NOT_PIDOF(...) #define CONFIG_FEATURE_PIDOF_SINGLE 1 #define ENABLE_FEATURE_PIDOF_SINGLE 1 -#define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__ "CONFIG_FEATURE_PIDOF_SINGLE" +#else +# define IF_FEATURE_PIDOF_SINGLE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PIDOF_SINGLE(...) #define CONFIG_FEATURE_PIDOF_OMIT 1 #define ENABLE_FEATURE_PIDOF_OMIT 1 -#define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__ "CONFIG_FEATURE_PIDOF_OMIT" +#else +# define IF_FEATURE_PIDOF_OMIT(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PIDOF_OMIT(...) #define CONFIG_PKILL 1 #define ENABLE_PKILL 1 -#define IF_PKILL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PKILL(...) __VA_ARGS__ "CONFIG_PKILL" +#else +# define IF_PKILL(...) __VA_ARGS__ +#endif #define IF_NOT_PKILL(...) #define CONFIG_PS 1 #define ENABLE_PS 1 -#define IF_PS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_PS(...) __VA_ARGS__ "CONFIG_PS" +#else +# define IF_PS(...) __VA_ARGS__ +#endif #define IF_NOT_PS(...) #define CONFIG_FEATURE_PS_WIDE 1 #define ENABLE_FEATURE_PS_WIDE 1 -#define IF_FEATURE_PS_WIDE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PS_WIDE(...) __VA_ARGS__ "CONFIG_FEATURE_PS_WIDE" +#else +# define IF_FEATURE_PS_WIDE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PS_WIDE(...) #define CONFIG_FEATURE_PS_LONG 1 #define ENABLE_FEATURE_PS_LONG 1 -#define IF_FEATURE_PS_LONG(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_PS_LONG(...) __VA_ARGS__ "CONFIG_FEATURE_PS_LONG" +#else +# define IF_FEATURE_PS_LONG(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_PS_LONG(...) #undef CONFIG_FEATURE_PS_TIME #define ENABLE_FEATURE_PS_TIME 0 @@ -3314,19 +4570,35 @@ #define IF_NOT_FEATURE_PS_UNUSUAL_SYSTEMS(...) __VA_ARGS__ #define CONFIG_RENICE 1 #define ENABLE_RENICE 1 -#define IF_RENICE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_RENICE(...) __VA_ARGS__ "CONFIG_RENICE" +#else +# define IF_RENICE(...) __VA_ARGS__ +#endif #define IF_NOT_RENICE(...) #define CONFIG_BB_SYSCTL 1 #define ENABLE_BB_SYSCTL 1 -#define IF_BB_SYSCTL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_BB_SYSCTL(...) __VA_ARGS__ "CONFIG_BB_SYSCTL" +#else +# define IF_BB_SYSCTL(...) __VA_ARGS__ +#endif #define IF_NOT_BB_SYSCTL(...) #define CONFIG_FEATURE_SHOW_THREADS 1 #define ENABLE_FEATURE_SHOW_THREADS 1 -#define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__ "CONFIG_FEATURE_SHOW_THREADS" +#else +# define IF_FEATURE_SHOW_THREADS(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SHOW_THREADS(...) #define CONFIG_WATCH 1 #define ENABLE_WATCH 1 -#define IF_WATCH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_WATCH(...) __VA_ARGS__ "CONFIG_WATCH" +#else +# define IF_WATCH(...) __VA_ARGS__ +#endif #define IF_NOT_WATCH(...) /* @@ -3350,7 +4622,11 @@ #define IF_NOT_SV(...) __VA_ARGS__ #define CONFIG_SV_DEFAULT_SERVICE_DIR "" #define ENABLE_SV_DEFAULT_SERVICE_DIR 1 -#define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__ "CONFIG_SV_DEFAULT_SERVICE_DIR" +#else +# define IF_SV_DEFAULT_SERVICE_DIR(...) __VA_ARGS__ +#endif #define IF_NOT_SV_DEFAULT_SERVICE_DIR(...) #undef CONFIG_SVLOGD #define ENABLE_SVLOGD 0 @@ -3442,11 +4718,19 @@ */ #define CONFIG_ASH 1 #define ENABLE_ASH 1 -#define IF_ASH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH(...) __VA_ARGS__ "CONFIG_ASH" +#else +# define IF_ASH(...) __VA_ARGS__ +#endif #define IF_NOT_ASH(...) #define CONFIG_ASH_BASH_COMPAT 1 #define ENABLE_ASH_BASH_COMPAT 1 -#define IF_ASH_BASH_COMPAT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_BASH_COMPAT(...) __VA_ARGS__ "CONFIG_ASH_BASH_COMPAT" +#else +# define IF_ASH_BASH_COMPAT(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_BASH_COMPAT(...) #undef CONFIG_ASH_IDLE_TIMEOUT #define ENABLE_ASH_IDLE_TIMEOUT 0 @@ -3454,31 +4738,59 @@ #define IF_NOT_ASH_IDLE_TIMEOUT(...) __VA_ARGS__ #define CONFIG_ASH_JOB_CONTROL 1 #define ENABLE_ASH_JOB_CONTROL 1 -#define IF_ASH_JOB_CONTROL(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_JOB_CONTROL(...) __VA_ARGS__ "CONFIG_ASH_JOB_CONTROL" +#else +# define IF_ASH_JOB_CONTROL(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_JOB_CONTROL(...) #define CONFIG_ASH_ALIAS 1 #define ENABLE_ASH_ALIAS 1 -#define IF_ASH_ALIAS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_ALIAS(...) __VA_ARGS__ "CONFIG_ASH_ALIAS" +#else +# define IF_ASH_ALIAS(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_ALIAS(...) #define CONFIG_ASH_GETOPTS 1 #define ENABLE_ASH_GETOPTS 1 -#define IF_ASH_GETOPTS(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_GETOPTS(...) __VA_ARGS__ "CONFIG_ASH_GETOPTS" +#else +# define IF_ASH_GETOPTS(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_GETOPTS(...) #define CONFIG_ASH_BUILTIN_ECHO 1 #define ENABLE_ASH_BUILTIN_ECHO 1 -#define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_ECHO" +#else +# define IF_ASH_BUILTIN_ECHO(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_BUILTIN_ECHO(...) #define CONFIG_ASH_BUILTIN_PRINTF 1 #define ENABLE_ASH_BUILTIN_PRINTF 1 -#define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_PRINTF" +#else +# define IF_ASH_BUILTIN_PRINTF(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_BUILTIN_PRINTF(...) #define CONFIG_ASH_BUILTIN_TEST 1 #define ENABLE_ASH_BUILTIN_TEST 1 -#define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__ "CONFIG_ASH_BUILTIN_TEST" +#else +# define IF_ASH_BUILTIN_TEST(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_BUILTIN_TEST(...) #define CONFIG_ASH_CMDCMD 1 #define ENABLE_ASH_CMDCMD 1 -#define IF_ASH_CMDCMD(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_CMDCMD(...) __VA_ARGS__ "CONFIG_ASH_CMDCMD" +#else +# define IF_ASH_CMDCMD(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_CMDCMD(...) #undef CONFIG_ASH_MAIL #define ENABLE_ASH_MAIL 0 @@ -3486,7 +4798,11 @@ #define IF_NOT_ASH_MAIL(...) __VA_ARGS__ #define CONFIG_ASH_OPTIMIZE_FOR_SIZE 1 #define ENABLE_ASH_OPTIMIZE_FOR_SIZE 1 -#define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__ "CONFIG_ASH_OPTIMIZE_FOR_SIZE" +#else +# define IF_ASH_OPTIMIZE_FOR_SIZE(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_OPTIMIZE_FOR_SIZE(...) #undef CONFIG_ASH_RANDOM_SUPPORT #define ENABLE_ASH_RANDOM_SUPPORT 0 @@ -3494,7 +4810,11 @@ #define IF_NOT_ASH_RANDOM_SUPPORT(...) __VA_ARGS__ #define CONFIG_ASH_EXPAND_PRMT 1 #define ENABLE_ASH_EXPAND_PRMT 1 -#define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__ "CONFIG_ASH_EXPAND_PRMT" +#else +# define IF_ASH_EXPAND_PRMT(...) __VA_ARGS__ +#endif #define IF_NOT_ASH_EXPAND_PRMT(...) #undef CONFIG_CTTYHACK #define ENABLE_CTTYHACK 0 @@ -3570,7 +4890,11 @@ #define IF_NOT_MSH(...) __VA_ARGS__ #define CONFIG_FEATURE_SH_IS_ASH 1 #define ENABLE_FEATURE_SH_IS_ASH 1 -#define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__ "CONFIG_FEATURE_SH_IS_ASH" +#else +# define IF_FEATURE_SH_IS_ASH(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SH_IS_ASH(...) #undef CONFIG_FEATURE_SH_IS_HUSH #define ENABLE_FEATURE_SH_IS_HUSH 0 @@ -3590,19 +4914,35 @@ #define IF_NOT_FEATURE_BASH_IS_HUSH(...) __VA_ARGS__ #define CONFIG_FEATURE_BASH_IS_NONE 1 #define ENABLE_FEATURE_BASH_IS_NONE 1 -#define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__ "CONFIG_FEATURE_BASH_IS_NONE" +#else +# define IF_FEATURE_BASH_IS_NONE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_BASH_IS_NONE(...) #define CONFIG_SH_MATH_SUPPORT 1 #define ENABLE_SH_MATH_SUPPORT 1 -#define IF_SH_MATH_SUPPORT(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SH_MATH_SUPPORT(...) __VA_ARGS__ "CONFIG_SH_MATH_SUPPORT" +#else +# define IF_SH_MATH_SUPPORT(...) __VA_ARGS__ +#endif #define IF_NOT_SH_MATH_SUPPORT(...) #define CONFIG_SH_MATH_SUPPORT_64 1 #define ENABLE_SH_MATH_SUPPORT_64 1 -#define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__ "CONFIG_SH_MATH_SUPPORT_64" +#else +# define IF_SH_MATH_SUPPORT_64(...) __VA_ARGS__ +#endif #define IF_NOT_SH_MATH_SUPPORT_64(...) #define CONFIG_FEATURE_SH_EXTRA_QUIET 1 #define ENABLE_FEATURE_SH_EXTRA_QUIET 1 -#define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__ "CONFIG_FEATURE_SH_EXTRA_QUIET" +#else +# define IF_FEATURE_SH_EXTRA_QUIET(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SH_EXTRA_QUIET(...) #undef CONFIG_FEATURE_SH_STANDALONE #define ENABLE_FEATURE_SH_STANDALONE 0 @@ -3642,7 +4982,11 @@ #define IF_NOT_FEATURE_SYSLOGD_CFG(...) __VA_ARGS__ #define CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE 0 #define ENABLE_FEATURE_SYSLOGD_READ_BUFFER_SIZE 1 -#define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE" +#else +# define IF_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_SYSLOGD_READ_BUFFER_SIZE(...) #undef CONFIG_FEATURE_IPC_SYSLOG #define ENABLE_FEATURE_IPC_SYSLOG 0 @@ -3650,7 +4994,11 @@ #define IF_NOT_FEATURE_IPC_SYSLOG(...) __VA_ARGS__ #define CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE 0 #define ENABLE_FEATURE_IPC_SYSLOG_BUFFER_SIZE 1 -#define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__ +#ifdef MAKE_SUID +# define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__ "CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE" +#else +# define IF_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) __VA_ARGS__ +#endif #define IF_NOT_FEATURE_IPC_SYSLOG_BUFFER_SIZE(...) #undef CONFIG_LOGREAD #define ENABLE_LOGREAD 0 diff --git a/include-minimal/bbconfigopts.h b/include-minimal/bbconfigopts.h index 9eebcdd..d716789 100644 --- a/include-minimal/bbconfigopts.h +++ b/include-minimal/bbconfigopts.h @@ -109,7 +109,14 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_AR is not set\n" "# CONFIG_FEATURE_AR_LONG_FILENAMES is not set\n" "# CONFIG_FEATURE_AR_CREATE is not set\n" +"# CONFIG_UNCOMPRESS is not set\n" +"CONFIG_GUNZIP=y\n" "CONFIG_BUNZIP2=y\n" +"CONFIG_UNLZMA=y\n" +"# CONFIG_FEATURE_LZMA_FAST is not set\n" +"# CONFIG_LZMA is not set\n" +"CONFIG_UNXZ=y\n" +"# CONFIG_XZ is not set\n" "CONFIG_BZIP2=y\n" "CONFIG_CPIO=y\n" "CONFIG_FEATURE_CPIO_O=y\n" @@ -117,7 +124,6 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_DPKG is not set\n" "# CONFIG_DPKG_DEB is not set\n" "# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set\n" -"CONFIG_GUNZIP=y\n" "CONFIG_GZIP=y\n" "CONFIG_FEATURE_GZIP_LONG_OPTIONS=y\n" "CONFIG_GZIP_FAST=2\n" @@ -137,12 +143,6 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_FEATURE_TAR_UNAME_GNAME is not set\n" "CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y\n" "# CONFIG_FEATURE_TAR_SELINUX is not set\n" -"# CONFIG_UNCOMPRESS is not set\n" -"CONFIG_UNLZMA=y\n" -"# CONFIG_FEATURE_LZMA_FAST is not set\n" -"# CONFIG_LZMA is not set\n" -"CONFIG_UNXZ=y\n" -"# CONFIG_XZ is not set\n" "CONFIG_UNZIP=y\n" "CONFIG_BASENAME=y\n" "CONFIG_CAT=y\n" @@ -156,6 +156,7 @@ static const char bbconfig_config[] ALIGN1 = "CONFIG_TEST=y\n" "# CONFIG_FEATURE_TEST_64 is not set\n" "CONFIG_TOUCH=y\n" +"# CONFIG_FEATURE_TOUCH_NODEREF is not set\n" "# CONFIG_FEATURE_TOUCH_SUSV3 is not set\n" "CONFIG_TR=y\n" "CONFIG_FEATURE_TR_CLASSES=y\n" @@ -301,7 +302,16 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set\n" "# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set\n" "CONFIG_WHICH=y\n" +"CONFIG_AWK=y\n" +"# CONFIG_FEATURE_AWK_LIBM is not set\n" +"CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y\n" +"CONFIG_CMP=y\n" +"CONFIG_DIFF=y\n" +"CONFIG_FEATURE_DIFF_LONG_OPTIONS=y\n" +"CONFIG_FEATURE_DIFF_DIR=y\n" +"# CONFIG_ED is not set\n" "CONFIG_PATCH=y\n" +"CONFIG_SED=y\n" "# CONFIG_VI is not set\n" "CONFIG_FEATURE_VI_MAX_LEN=0\n" "# CONFIG_FEATURE_VI_8BIT is not set\n" @@ -316,14 +326,6 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_FEATURE_VI_SET is not set\n" "# CONFIG_FEATURE_VI_WIN_RESIZE is not set\n" "# CONFIG_FEATURE_VI_ASK_TERMINAL is not set\n" -"CONFIG_AWK=y\n" -"# CONFIG_FEATURE_AWK_LIBM is not set\n" -"CONFIG_CMP=y\n" -"CONFIG_DIFF=y\n" -"CONFIG_FEATURE_DIFF_LONG_OPTIONS=y\n" -"CONFIG_FEATURE_DIFF_DIR=y\n" -"# CONFIG_ED is not set\n" -"CONFIG_SED=y\n" "CONFIG_FEATURE_ALLOW_EXEC=y\n" "CONFIG_FIND=y\n" "CONFIG_FEATURE_FIND_PRINT0=y\n" @@ -516,26 +518,27 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set\n" "# CONFIG_FEATURE_MTAB_SUPPORT is not set\n" "CONFIG_VOLUMEID=y\n" -"CONFIG_FEATURE_VOLUMEID_EXT=y\n" "# CONFIG_FEATURE_VOLUMEID_BTRFS is not set\n" -"# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n" -"CONFIG_FEATURE_VOLUMEID_FAT=y\n" +"# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n" "CONFIG_FEATURE_VOLUMEID_EXFAT=y\n" +"CONFIG_FEATURE_VOLUMEID_EXT=y\n" +"CONFIG_FEATURE_VOLUMEID_F2FS=y\n" +"CONFIG_FEATURE_VOLUMEID_FAT=y\n" "# CONFIG_FEATURE_VOLUMEID_HFS is not set\n" +"CONFIG_FEATURE_VOLUMEID_ISO9660=y\n" "# CONFIG_FEATURE_VOLUMEID_JFS is not set\n" -"# CONFIG_FEATURE_VOLUMEID_XFS is not set\n" +"# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n" +"CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y\n" +"# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n" "# CONFIG_FEATURE_VOLUMEID_NILFS is not set\n" "CONFIG_FEATURE_VOLUMEID_NTFS=y\n" -"CONFIG_FEATURE_VOLUMEID_ISO9660=y\n" -"# CONFIG_FEATURE_VOLUMEID_UDF is not set\n" -"# CONFIG_FEATURE_VOLUMEID_LUKS is not set\n" -"CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y\n" -"# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set\n" +"# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n" +"# CONFIG_FEATURE_VOLUMEID_REISERFS is not set\n" "# CONFIG_FEATURE_VOLUMEID_ROMFS is not set\n" "CONFIG_FEATURE_VOLUMEID_SQUASHFS=y\n" "# CONFIG_FEATURE_VOLUMEID_SYSV is not set\n" -"# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set\n" -"# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set\n" +"# CONFIG_FEATURE_VOLUMEID_UDF is not set\n" +"# CONFIG_FEATURE_VOLUMEID_XFS is not set\n" "# CONFIG_CONSPY is not set\n" "CONFIG_LESS=y\n" "CONFIG_FEATURE_LESS_MAXLINES=65536\n" @@ -549,6 +552,7 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_FEATURE_LESS_LINENUMS is not set\n" "CONFIG_NANDWRITE=y\n" "CONFIG_NANDDUMP=y\n" +"# CONFIG_RFKILL is not set\n" "CONFIG_SETSERIAL=y\n" "# CONFIG_UBIATTACH is not set\n" "# CONFIG_UBIDETACH is not set\n" @@ -556,6 +560,7 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_UBIRMVOL is not set\n" "# CONFIG_UBIRSVOL is not set\n" "# CONFIG_UBIUPDATEVOL is not set\n" +"# CONFIG_WALL is not set\n" "# CONFIG_ADJTIMEX is not set\n" "CONFIG_BBCONFIG=y\n" "CONFIG_FEATURE_COMPRESS_BBCONFIG=y\n" @@ -612,7 +617,6 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_MT is not set\n" "# CONFIG_RAIDAUTORUN is not set\n" "# CONFIG_READAHEAD is not set\n" -"# CONFIG_RFKILL is not set\n" "# CONFIG_RUNLEVEL is not set\n" "# CONFIG_RX is not set\n" "CONFIG_SETSID=y\n" @@ -623,7 +627,6 @@ static const char bbconfig_config[] ALIGN1 = "# CONFIG_TIMEOUT is not set\n" "CONFIG_TTYSIZE=y\n" "# CONFIG_VOLNAME is not set\n" -"# CONFIG_WALL is not set\n" "# CONFIG_WATCHDOG is not set\n" "# CONFIG_NAMEIF is not set\n" "# CONFIG_FEATURE_NAMEIF_EXTENDED is not set\n" diff --git a/include-minimal/bbconfigopts_bz2.h b/include-minimal/bbconfigopts_bz2.h index 8a80def..569d6a1 100644 --- a/include-minimal/bbconfigopts_bz2.h +++ b/include-minimal/bbconfigopts_bz2.h @@ -9,333 +9,334 @@ * Do not edit. */ static const char bbconfig_config_bz2[] ALIGN1 = { -0x68,0x31,0x31,0x41,0x59,0x26,0x53,0x59,0x40,0x43,0xf9,0xa7,0x00,0x0b,0xbf,0xdf, -0x80,0x00,0x10,0x58,0x03,0xff,0xe2,0x3f,0xff,0xff,0xf0,0xbf,0xe7,0xdf,0x60,0x60, -0x1a,0xfc,0x00,0x3d,0x87,0x41,0x88,0x35,0x7d,0x47,0xd0,0x2f,0x80,0x02,0xf2,0xe3, -0xc7,0x30,0xd5,0x00,0xd6,0x9e,0x87,0x40,0xea,0xf6,0x74,0x3a,0x1c,0x80,0x34,0x50, -0xd9,0x61,0x6e,0x71,0xbb,0x6b,0xb5,0xb2,0x54,0x85,0xd5,0xb5,0x1d,0xdb,0x6c,0xe4, -0x50,0x60,0x5f,0x72,0x1a,0xa7,0x81,0x32,0x08,0x35,0x0d,0x21,0x35,0x00,0x03,0x4d, -0x1e,0x93,0x4d,0x00,0x00,0x34,0xc8,0x10,0x82,0x04,0xc8,0xa9,0xfa,0x53,0x40,0x00, -0x00,0x68,0x0c,0x80,0x18,0x22,0x49,0xe8,0x4d,0x05,0x4c,0xf4,0xa6,0x46,0x8d,0x00, -0x00,0x00,0x00,0x02,0x4f,0x54,0xa5,0x22,0x9e,0xa1,0xa7,0xea,0x9a,0x01,0x88,0x06, -0x80,0x00,0x68,0x69,0x90,0x00,0x4a,0x20,0x15,0x36,0x93,0xd4,0xc4,0x1a,0x18,0x86, -0x23,0xd4,0xc8,0xf4,0x9b,0x44,0xc9,0xea,0x30,0xd4,0xd0,0x24,0x42,0x13,0x44,0xc1, -0x05,0x34,0x2a,0x6d,0x40,0x68,0x00,0x00,0x06,0x9a,0x34,0xff,0xde,0xef,0xf7,0x6e, -0xd2,0xe5,0x74,0xde,0xc7,0x5d,0xd5,0xcd,0x1a,0x0b,0x62,0x36,0x35,0x89,0x24,0x18, -0x53,0x28,0xa8,0xb6,0x36,0xe6,0xb7,0x8d,0x79,0x97,0x35,0xbb,0xea,0xf6,0xdd,0x9b, -0x21,0x09,0x15,0x8c,0x51,0x05,0x89,0x92,0x53,0xd3,0xa7,0x5c,0x91,0x45,0x33,0x16, -0xf4,0xee,0x49,0xdd,0xb5,0xd9,0xb2,0x1a,0x36,0x66,0xa3,0x56,0xf1,0xb9,0x6d,0x14, -0xf3,0xb5,0xc1,0xe7,0x72,0x0d,0x52,0x72,0xe6,0x36,0x8a,0xdc,0xdc,0xa3,0x9c,0xe5, -0xcb,0x10,0x6b,0x91,0xde,0x77,0x0d,0x05,0x04,0xb0,0xa0,0xf1,0x71,0x14,0xc2,0x18, -0x6c,0x9d,0x9c,0xcb,0xce,0xd7,0x24,0xa3,0x45,0xe8,0xf5,0x6f,0x79,0x7a,0x36,0x2d, -0x94,0xb4,0x04,0xca,0x93,0x3c,0xf6,0xf7,0x92,0x24,0x41,0x0c,0x81,0x30,0x4d,0x7b, -0x55,0xd5,0xeb,0xe7,0x97,0x8a,0x5e,0xbd,0x7b,0xbc,0xec,0x8c,0x12,0x06,0x13,0x04, -0x84,0x81,0x7a,0x39,0x08,0xd7,0xb7,0xae,0x0b,0x1c,0xdc,0xc9,0x86,0x55,0x14,0x52, -0xc3,0x8e,0xc9,0xd0,0x10,0x40,0x2f,0xd1,0x96,0xaf,0x66,0xe3,0xa6,0x9f,0x8c,0x8c, -0xce,0xc6,0x67,0x86,0x89,0x3a,0x10,0x1a,0xb1,0x64,0x1f,0xed,0xfa,0x5f,0x46,0xfa, -0x97,0xd6,0x7e,0xb6,0x0d,0x6d,0x41,0x33,0x32,0x6f,0x1a,0xdb,0xd9,0x63,0xad,0x28, -0x6c,0x47,0x53,0x91,0x64,0xf5,0xc6,0xbe,0x67,0x89,0x37,0x28,0x47,0xe3,0xed,0x14, -0x73,0xde,0x9f,0x56,0xfe,0x9c,0x46,0xef,0x85,0x41,0x9e,0xbe,0x9d,0x17,0x71,0xd4, -0x7c,0xcb,0xd7,0xda,0xb6,0x1e,0xdc,0x09,0xeb,0xb5,0x93,0xb5,0xbc,0x19,0x50,0x86, -0xfd,0xec,0x3c,0x2d,0x55,0xb1,0x51,0x67,0xe7,0x31,0xda,0xd7,0xf1,0xbd,0xb8,0x31, -0x52,0xd1,0x4a,0xe9,0x37,0x29,0xe6,0x16,0x8e,0x41,0xc6,0x5f,0xd5,0xba,0x3d,0x63, -0x4e,0x3c,0xaa,0xf9,0xd9,0xcb,0xd5,0xb1,0xae,0xb5,0x83,0x23,0x06,0x66,0x43,0x98, -0xcb,0xe3,0xd9,0x2f,0x15,0x93,0x7a,0xe3,0x54,0xd3,0xcf,0x31,0xe7,0xd9,0x79,0x2d, -0xed,0x34,0xfb,0xad,0xb3,0xb4,0x19,0x89,0x0b,0x79,0x23,0x77,0x55,0x75,0x06,0x31, -0x37,0x75,0xb4,0xf6,0xbf,0x16,0x8a,0x2a,0x55,0x51,0x14,0x54,0x35,0x06,0x55,0xcb, -0x9d,0x68,0xed,0x39,0xaf,0x2b,0x67,0x1b,0x57,0x59,0xb4,0x8a,0x78,0xd1,0xfa,0x2d, -0xaf,0x44,0xf8,0x27,0x7d,0xd7,0x6a,0x60,0x45,0xe8,0xed,0x0e,0x48,0x2e,0xfb,0x1c, -0x02,0xf1,0xeb,0x64,0x6e,0xc4,0x90,0x30,0x49,0x32,0xcc,0x28,0xe6,0x9b,0x5b,0x55, -0xd7,0xcd,0xf1,0x5a,0xd7,0x6a,0xc5,0x12,0x83,0x1a,0x2f,0x7c,0x46,0xf8,0x8c,0xe1, -0x31,0x7b,0x15,0x84,0xb1,0x05,0x1c,0x59,0x1d,0x87,0x63,0xec,0x13,0x92,0xc1,0x74, -0x21,0x4e,0x16,0x96,0xdf,0x6d,0xac,0xd3,0xb3,0x1f,0x75,0x31,0x00,0xb9,0xb5,0x2f, -0xcd,0x1f,0xc4,0xbb,0x90,0x0c,0x45,0x93,0x7e,0xf9,0x9d,0x77,0x21,0x66,0x7a,0x04, -0x89,0xc1,0x2f,0x5a,0x79,0xce,0x58,0x2b,0x48,0x3e,0xa6,0xb0,0x67,0x44,0x74,0xa6, -0x2e,0xdc,0x8c,0xb0,0x45,0xae,0x1a,0x2f,0xbf,0x02,0x90,0x9d,0x96,0xcb,0xb8,0xaf, -0x39,0xcf,0xc8,0x80,0x82,0x01,0xe6,0x80,0x82,0x01,0xe8,0x9b,0x76,0x30,0x0a,0x15, -0xea,0x52,0xba,0x81,0x0a,0x50,0x10,0x40,0x3f,0x1b,0x23,0x87,0x09,0xaa,0x0b,0x1e, -0xb6,0x5b,0x8e,0xfe,0x6d,0xeb,0x6b,0x9c,0x12,0xbd,0xba,0x7b,0x18,0xe1,0x77,0x6b, -0x5d,0x58,0x47,0xd5,0x83,0x37,0x2a,0xc7,0xc2,0x6a,0x0c,0x7e,0xb2,0xc6,0xbd,0x13, -0x4e,0x5c,0xcf,0xa6,0xf6,0x69,0xce,0x9b,0x90,0x88,0x2c,0xa9,0x84,0x9f,0x13,0x5b, -0x69,0x2d,0x3f,0x75,0x76,0x2b,0xd5,0xae,0xc4,0x0f,0xf7,0x84,0x32,0x1e,0xca,0xfa, -0x6f,0xe8,0x27,0xba,0xb9,0x23,0x29,0x31,0x99,0xf5,0x0b,0xba,0xfd,0xc9,0xc7,0xe0, -0x73,0xe8,0xf4,0xea,0x1e,0xd3,0xef,0x48,0xa7,0x67,0x8a,0xdb,0xc7,0xdc,0xc2,0x16, -0xa6,0xce,0xfd,0xf8,0x83,0xb4,0xa5,0xbc,0xee,0x38,0xad,0xdd,0x8c,0x93,0x7c,0xaf, -0x95,0x8d,0xde,0x87,0x4a,0xd9,0xa9,0xe6,0x75,0x80,0x2f,0xf1,0x2f,0x05,0x42,0x63, -0x0e,0x46,0x9d,0x2e,0x84,0x4b,0xf0,0xf0,0x7b,0x74,0xbb,0xaa,0xc4,0x4d,0xbe,0x0c, -0x43,0x76,0x7e,0x36,0x8e,0x45,0xd8,0x74,0x39,0x0e,0xbe,0xee,0x8e,0xaf,0xdf,0x10, -0x98,0x9d,0x4a,0x30,0xbc,0x3b,0x95,0x01,0x2e,0x20,0x26,0x6d,0x9d,0x92,0xac,0x5d, -0xfa,0x73,0x33,0x63,0x0e,0xbb,0xc1,0x7b,0xcf,0xde,0xba,0xcc,0xe5,0xf7,0xdf,0x38, -0xf0,0xeb,0x05,0xbe,0xec,0x89,0xcf,0x82,0xbd,0x89,0x34,0x82,0x74,0xc4,0x83,0xba, -0x0b,0xba,0x47,0xdb,0x9e,0x7d,0x5f,0xad,0x45,0xe3,0x4f,0xcb,0xe5,0x48,0xe7,0x89, -0xea,0x6a,0xb1,0x7b,0x49,0x09,0x5e,0xbb,0xe7,0xc2,0x0c,0xad,0x52,0x14,0xd7,0xe1, -0x3c,0x36,0xb8,0xe8,0x9e,0xf6,0x8c,0x5a,0x7c,0xd0,0x5d,0xd6,0x32,0x2d,0x19,0xa1, -0xf9,0x4d,0x66,0x64,0xeb,0xbe,0xf9,0xc3,0x20,0xc6,0x1b,0x41,0x8b,0x6f,0xe1,0x1f, -0xbc,0x10,0x92,0xac,0x32,0x02,0xd5,0x88,0x08,0x78,0xd0,0x63,0x2b,0xc3,0x21,0x83, -0x96,0x10,0x38,0x0b,0x8c,0x96,0x48,0x3d,0x53,0xf0,0xb2,0xf0,0xf2,0x16,0xc9,0xde, -0xcb,0x00,0x83,0xdb,0x63,0x06,0x19,0x1d,0x71,0xdb,0xe8,0x50,0xea,0x83,0x61,0x85, -0x56,0x1f,0x78,0x1a,0x34,0xee,0xe2,0xa6,0xa0,0x08,0x21,0xde,0x13,0xf0,0x5e,0xf9, -0xbe,0xdd,0x4a,0xf1,0xf1,0xf1,0x3d,0x44,0x00,0x3e,0xf5,0x46,0xfa,0xef,0xef,0xc2, -0x4a,0x72,0x58,0xcf,0x8d,0x48,0xa5,0x1f,0x99,0x9c,0xe3,0x56,0x88,0x7d,0x10,0xcc, -0x13,0xc8,0x0e,0x63,0x93,0x53,0x1b,0x31,0xbd,0x25,0x5d,0xe7,0x3d,0xcb,0xf8,0x8d, -0x8d,0x2e,0x96,0xca,0xe2,0x85,0xa8,0x72,0xe9,0xa6,0xd2,0xf4,0x1e,0x37,0xf0,0xf2, -0x9d,0xfc,0x33,0xd4,0x7a,0x91,0x51,0x2c,0xb2,0x9a,0x29,0xe4,0x43,0x36,0x05,0x77, -0x0b,0x54,0x5d,0x73,0xc6,0x02,0x47,0x86,0x9b,0xb7,0xa3,0x1d,0x62,0xbd,0xc7,0x86, -0xfd,0x33,0x46,0xdb,0xdb,0x09,0x5d,0x32,0x73,0x35,0xce,0xde,0xf5,0x40,0x90,0x2c, -0x06,0x2a,0x18,0xde,0xad,0x47,0x84,0xb7,0x47,0x87,0xae,0x4b,0xb7,0xd5,0x1e,0x11, -0x65,0x7a,0x25,0x86,0xdf,0xa6,0xfe,0x23,0xf3,0x31,0xb5,0x3d,0x41,0x53,0x47,0x67, -0xcc,0x5e,0x96,0x05,0x01,0xe8,0x93,0x04,0x6c,0xcf,0xd6,0xea,0xe9,0x34,0xac,0x58, -0xd8,0x95,0x47,0x81,0x7d,0x29,0x02,0xf9,0xec,0x27,0x35,0x02,0xb6,0x8a,0x18,0xc1, -0x6e,0xc3,0x3a,0x49,0x4c,0x97,0x3d,0x57,0xb3,0x9c,0xc6,0x27,0x69,0xc7,0x7f,0x34, -0x2f,0x8b,0x1b,0x61,0x41,0xe6,0x46,0x74,0xc8,0xcb,0xd9,0xe3,0xa9,0x79,0x81,0xf5, -0x27,0xcb,0x23,0x5b,0xc5,0x60,0xa7,0x04,0xa7,0x8c,0x7c,0x27,0x1c,0x18,0x63,0xa4, -0xd2,0x1b,0x05,0xc0,0x35,0x0c,0x1d,0xf8,0x9a,0xfd,0xfc,0x46,0xbb,0x27,0x30,0x71, -0x51,0x4d,0xb4,0x31,0x1a,0x8c,0x54,0x02,0x8f,0x1b,0x17,0xcf,0xc3,0xa4,0x72,0x86, -0x2f,0xcd,0x40,0xb4,0x28,0xe5,0x24,0x49,0x8d,0xf4,0x39,0xed,0xf3,0xeb,0xbe,0xe7, -0xda,0xe7,0xef,0xab,0xf9,0x6a,0x03,0x44,0xbd,0x87,0x5b,0x86,0x46,0x49,0x22,0x53, -0x25,0x4c,0x40,0x88,0xc6,0x51,0x0a,0x4b,0x11,0x94,0xb1,0x58,0x50,0x99,0x29,0x99, -0x22,0xcd,0x13,0x31,0x32,0x55,0x34,0xa5,0x68,0xb6,0xc5,0x8a,0x8b,0x4a,0x50,0xb2, -0x4b,0x1a,0x21,0x13,0x51,0x49,0x82,0x4c,0x94,0x25,0xa4,0x28,0xd1,0xa8,0x1a,0x55, -0x29,0x63,0x51,0x44,0x51,0x69,0x84,0x46,0x35,0x21,0xe9,0xdc,0x69,0x91,0x41,0x34, -0x24,0xda,0xbc,0x72,0x93,0x11,0x93,0x15,0x99,0x30,0xb4,0x99,0x18,0x19,0x39,0x76, -0x4d,0x1a,0x61,0x2c,0x04,0x66,0x9a,0x4c,0xa2,0x78,0xb8,0x13,0x04,0xd4,0x63,0x11, -0x64,0x44,0x63,0xce,0xba,0x1d,0xd7,0x14,0x82,0x92,0x46,0x19,0x01,0x52,0x08,0x64, -0x6c,0x29,0x9a,0x02,0x0f,0x3b,0x8e,0xfc,0x57,0xd9,0xba,0xbe,0x8f,0xd2,0xeb,0xa4, -0xb5,0xf5,0xaf,0xc3,0xe1,0x96,0xcb,0x08,0x20,0x88,0xee,0x4f,0x9b,0xac,0x20,0x39, -0xd0,0x67,0x3e,0x1e,0xd7,0x3b,0x2a,0x9c,0xb1,0xa1,0x78,0xdb,0x04,0x6a,0xb4,0xd0, -0x54,0xc8,0x1f,0x8f,0x6e,0xc6,0xf2,0xcf,0x42,0x18,0x3b,0x5d,0x50,0x1d,0x8e,0x2f, -0x0e,0xa4,0xb8,0x9f,0x1a,0xcb,0xea,0xcd,0x30,0xc9,0x74,0xd9,0xd3,0x97,0x94,0xda, -0xc8,0x9c,0x8b,0x9e,0xba,0xb9,0xa6,0x00,0x30,0x5a,0xaa,0x4c,0xba,0x70,0xe0,0xc2, -0x89,0x3a,0x6f,0xa1,0x30,0x3d,0x56,0xe8,0xda,0x17,0xe3,0x78,0x21,0x3a,0x22,0xd2, -0x19,0xc2,0x09,0x06,0x40,0xf6,0x6a,0xe1,0x06,0xc2,0x1e,0xda,0xac,0x3a,0x8c,0x6b, -0x7f,0xd5,0x74,0xb8,0x56,0x45,0xc5,0xab,0x34,0x64,0x5b,0x5a,0xe7,0xf1,0xe1,0x3a, -0xb5,0x8b,0x74,0x4e,0x00,0x6d,0xb0,0x6b,0x4d,0x3d,0xa2,0xfe,0x4b,0x06,0xfe,0x22, -0xaa,0xaa,0x9f,0x88,0x6b,0x70,0x36,0xdf,0x7d,0x93,0xd7,0x4a,0xe6,0xcc,0x7b,0xeb, -0x43,0x52,0xf0,0xb7,0xa2,0xa8,0xfa,0x64,0x79,0x10,0xec,0x94,0xac,0x22,0x7a,0xf0, -0xa9,0xfa,0xad,0xf6,0xb3,0xe3,0x43,0xce,0x96,0x2a,0x62,0x5a,0x02,0xbe,0x32,0xb7, -0x45,0xbd,0x6a,0x35,0x5e,0xaa,0x45,0x15,0x08,0x81,0x0e,0x10,0x76,0xf7,0xd2,0xc4, -0x66,0xb3,0x3b,0x6a,0x9c,0x6b,0x37,0xc4,0xc8,0x86,0xc3,0x87,0xd0,0x5d,0x8f,0xae, -0x29,0xc5,0x12,0x3c,0x26,0xbc,0x21,0xa2,0x76,0x87,0xa1,0xbc,0xb7,0x02,0x22,0x37, -0x2c,0x14,0x61,0x49,0x35,0xb4,0x56,0xdc,0xcd,0x5f,0x9c,0xbf,0x4d,0x65,0x72,0x0a, -0x5d,0x1e,0x2e,0x6e,0x84,0xd8,0xcf,0xce,0x2d,0x7d,0x29,0x68,0x5e,0x01,0x55,0xe6, -0xe9,0x66,0x69,0x29,0x33,0x6c,0x9a,0x86,0x25,0x85,0xe1,0x1f,0x0b,0x7c,0x30,0xae, -0x84,0xce,0x48,0x8f,0x3b,0x92,0x19,0xf6,0x6b,0xa4,0x94,0xc4,0xa3,0xb1,0xed,0x51, -0x88,0x17,0xbe,0x2d,0x7b,0xd6,0x03,0x73,0xa1,0x02,0x2d,0x00,0xae,0x6a,0xca,0x7a, -0x05,0x1a,0xf9,0x0a,0x57,0xdd,0x02,0x40,0xad,0x61,0x8b,0xe9,0x5c,0x23,0x44,0x0e, -0xff,0xf7,0xbb,0xc4,0xe3,0x7b,0x9a,0xf5,0xae,0x3d,0xa8,0x03,0x45,0xae,0x8d,0x41, -0xf6,0xd0,0x19,0x13,0x94,0xaf,0x29,0x0f,0x27,0x39,0x62,0x45,0x14,0x60,0xe9,0xa7, -0x78,0xac,0x2d,0x0d,0x94,0x70,0xa4,0x4c,0x83,0x21,0x3a,0xfd,0xd6,0x02,0x4a,0x67, -0x8f,0x4d,0x55,0xf9,0xe2,0x76,0xb4,0x77,0xf6,0xb6,0x6e,0x0c,0xbd,0xe2,0xff,0x5e, -0x78,0xe5,0xc7,0x9d,0x56,0x1f,0xd9,0x9c,0x74,0xbe,0xcb,0xc0,0xc7,0x90,0xcc,0x22, -0x47,0xc6,0x19,0x6f,0x7a,0xbf,0x3d,0x67,0x7f,0x48,0x56,0xb3,0x80,0xd4,0x24,0x4a, -0x2c,0xc8,0x6c,0xc3,0xdd,0xf1,0x6d,0x54,0x6c,0x0e,0xed,0x30,0xcc,0xee,0xa9,0x2d, -0x41,0x1d,0xf3,0xa6,0xe5,0xed,0xc4,0x5b,0xba,0xce,0x2d,0xf9,0xdf,0xb4,0x68,0x0e, -0x99,0x96,0xba,0x64,0xd6,0x33,0x34,0x31,0x0d,0xac,0x89,0x88,0x78,0x70,0x3c,0x1d, -0xb7,0x44,0x3a,0x27,0x45,0xb6,0x96,0x61,0x51,0x53,0x92,0xc2,0xa4,0x21,0x04,0xb7, -0x87,0x4e,0x37,0x85,0xac,0xb2,0x54,0xd5,0x44,0xcb,0x19,0x24,0x10,0x43,0x1c,0x9a, -0x59,0xaa,0x82,0x05,0xab,0x41,0x59,0xe3,0x0c,0xd4,0x50,0x3a,0x6d,0xa2,0xec,0x6d, -0x21,0xce,0xa7,0x9c,0x89,0x6c,0x0c,0xd7,0xea,0x25,0x87,0x96,0x1e,0x1a,0x16,0xf7, -0x9d,0x5d,0x0a,0xed,0x01,0xd6,0xd1,0xa3,0x12,0x96,0x91,0x66,0x92,0x35,0x61,0x0d, -0x14,0xc0,0x58,0xc4,0x02,0x1b,0x48,0xd1,0xa5,0x0d,0x12,0xc4,0xda,0x43,0x1e,0x58, -0x29,0x68,0x4a,0x59,0x4d,0x55,0xa0,0xa9,0xcc,0x85,0xea,0x0b,0xbd,0x3a,0x80,0x32, -0xf2,0xf0,0xd6,0xb3,0x02,0x25,0xb6,0x28,0x60,0x43,0xd9,0x3c,0xb0,0x36,0xd4,0x81, -0x0a,0xcd,0x17,0xa8,0x49,0x15,0x51,0xee,0xf0,0x53,0xcc,0xc2,0x40,0x4b,0x43,0x6d, -0x87,0x6b,0xa7,0x2f,0xeb,0x4f,0x7f,0x8d,0x2f,0x33,0x2f,0xd2,0x11,0xf7,0x7c,0x6e, -0x94,0x07,0x8d,0x92,0x84,0x92,0x40,0xa6,0x34,0x50,0x33,0x13,0xf7,0x43,0x3b,0xb8, -0x47,0xce,0x41,0x00,0x25,0xbf,0xcb,0x69,0x30,0xb8,0x06,0x21,0x59,0x9b,0x1e,0x22, -0xda,0x9e,0x9a,0x1d,0x2b,0x45,0xd2,0x18,0x88,0x12,0x06,0x45,0x80,0x4c,0x41,0xcb, -0x41,0xce,0xd5,0xcf,0x8c,0xf5,0xce,0x1d,0x1f,0x59,0xb5,0xfc,0x8b,0x03,0x50,0x74, -0xce,0xc3,0xab,0x4b,0x60,0xd0,0xd5,0x08,0x6f,0xd3,0xe3,0xd7,0xba,0xc1,0xd5,0x66, -0x4c,0x52,0xbc,0x49,0x2c,0x75,0x4a,0x84,0x3b,0xda,0x73,0x08,0x53,0xa2,0x26,0x48, -0x12,0x40,0xf3,0x64,0x03,0xe5,0x56,0xdf,0x3f,0x08,0x02,0x59,0x16,0xbe,0x83,0x17, -0xd0,0xce,0xde,0xb9,0x28,0x58,0xe3,0xc6,0xd8,0x1d,0xaf,0x1f,0x1a,0x91,0xef,0xce, -0x65,0x50,0xcb,0xde,0x14,0x3f,0x7b,0xad,0x5f,0x08,0x8a,0xe9,0xa3,0xc0,0x91,0x2d, -0x23,0x2c,0x10,0x76,0xc6,0xd0,0x97,0x0d,0x0a,0x9a,0x00,0xd6,0x2d,0x51,0xaa,0xaf, -0x7d,0x5c,0xd5,0x8a,0xb5,0xea,0xae,0xab,0x2b,0xc4,0x95,0x30,0x41,0x23,0x48,0x14, -0x34,0x20,0x21,0xa4,0xda,0x44,0x1e,0x5f,0x63,0x35,0x85,0x03,0x90,0x70,0xd3,0x80, -0x81,0xc2,0x5f,0x96,0x6c,0x50,0xd4,0x40,0x04,0x11,0x14,0xe3,0x90,0x0a,0x14,0xb4, -0xb8,0x6a,0x10,0x52,0x82,0xc3,0x08,0x9f,0x52,0x45,0x47,0x96,0xe4,0xa6,0x99,0x6a, -0x19,0x23,0x1a,0xb3,0x37,0xa1,0x2e,0x58,0x82,0x58,0x16,0x49,0x05,0x9b,0x61,0x2e, -0x1b,0x51,0x0a,0xdb,0x75,0xec,0xb7,0xda,0x7d,0x87,0xe3,0xc4,0x1a,0x82,0xd2,0xc6, -0x33,0xa4,0xf6,0x65,0x66,0x00,0x4a,0xe1,0x37,0xc0,0xe7,0xb4,0x94,0x82,0xe7,0xa2, -0x4c,0x6a,0x15,0x76,0x49,0x80,0x8a,0x9a,0x2f,0x37,0x9b,0x90,0x10,0xd0,0xb2,0xc8, -0xde,0x95,0xd5,0x61,0x07,0xb5,0xd7,0xa9,0xf4,0xd2,0x39,0xbd,0x2d,0xda,0xbf,0x24, -0x09,0x24,0x90,0xb9,0x14,0xb3,0x69,0x03,0x76,0x2e,0xf0,0x72,0x96,0xa5,0xc4,0x7a, -0xde,0x57,0xa1,0xa0,0x63,0x3b,0xde,0x34,0xe6,0x0f,0x41,0x74,0x79,0xad,0xc6,0xc4, -0x8d,0x02,0x00,0xf3,0xc9,0xc0,0xc2,0xb3,0xb6,0xf0,0xa1,0x87,0x3b,0xe6,0xed,0x36, -0xbc,0x28,0x46,0xac,0x50,0x4a,0x41,0xa1,0xef,0xb8,0x91,0x8e,0xc2,0x79,0x43,0x7c, -0x72,0x41,0xbd,0x36,0x46,0xed,0x10,0xc4,0x88,0x60,0xc7,0xac,0xec,0x58,0x6b,0x49, -0x3f,0x3d,0xb4,0x40,0x16,0x6b,0x60,0x6d,0x31,0x4b,0x6c,0xe9,0x87,0x5a,0x20,0xf5, -0xe7,0xcb,0x9b,0x44,0xc8,0x79,0x7e,0xc6,0x2b,0x1b,0x9b,0x77,0x90,0xa4,0xb9,0xdb, -0x5f,0x51,0xa7,0xcc,0xe7,0xd8,0xb1,0xd9,0x80,0xa1,0xe2,0xc2,0xf0,0x90,0x1a,0xf3, -0x3e,0x67,0x38,0xf3,0x80,0x3c,0x03,0x5c,0xa4,0xdc,0x16,0x62,0x7d,0x01,0xe5,0x8b, -0x46,0xbd,0x1e,0x54,0x9d,0x2d,0x3c,0x10,0x10,0x98,0x77,0x9f,0xe6,0x75,0x82,0xdb, -0x1e,0x00,0xf8,0x4e,0x9d,0xd9,0x1d,0x2e,0xc3,0xb6,0x5c,0x81,0x63,0x62,0x99,0xf9, -0xdc,0x3e,0x17,0x3d,0xd3,0x61,0xd2,0x18,0x69,0x14,0x93,0xf0,0x9d,0xcf,0x34,0x87, -0x24,0x0a,0x48,0xa5,0x8e,0x3d,0x1d,0x3b,0x15,0x96,0x93,0x6e,0x9c,0xaa,0xbb,0xa1, -0x20,0x0e,0xad,0x36,0x80,0xa7,0x4a,0xaa,0xd8,0x46,0xc2,0xf7,0xa7,0x61,0x62,0x8e, -0xe4,0x36,0x94,0x4d,0x8d,0xa1,0xea,0xb3,0xb5,0xdc,0x11,0x11,0x2f,0xa1,0x8d,0xcb, -0xd9,0x8e,0x19,0xee,0xfa,0x99,0x82,0xb5,0x08,0x5c,0xe9,0x1b,0xc1,0xab,0x25,0x74, -0xc6,0xdb,0x06,0x46,0xf9,0x50,0xd6,0x94,0x9b,0x92,0xe3,0x32,0x89,0x04,0x02,0x00, -0xb1,0x4c,0x6e,0xac,0x3b,0x1c,0x04,0xba,0x41,0x04,0x43,0xc9,0x30,0x52,0x21,0xbf, -0x73,0xc6,0xe3,0xb7,0x07,0x5c,0xcb,0x76,0x84,0x0c,0x18,0x72,0x32,0x5a,0x25,0xa6, -0xd1,0x8a,0xa1,0x6b,0x22,0x31,0xeb,0xd7,0xa2,0x83,0xcf,0xa8,0xfb,0x5f,0x12,0xcb, -0x37,0x7e,0x95,0x36,0xfd,0xf7,0xa3,0x94,0xdd,0x1b,0xb7,0xd4,0x22,0x67,0x92,0x52, -0x14,0xb5,0x23,0xd0,0x39,0xb4,0xc3,0x23,0x5b,0x43,0xb3,0x8a,0x1b,0x47,0x4c,0x4d, -0x91,0xa4,0x88,0x62,0xbf,0x76,0xb8,0x91,0x1a,0x71,0x3f,0x3a,0x57,0x1b,0x5b,0x23, -0x66,0xf9,0x6e,0x21,0x8d,0x90,0xd5,0xa4,0x87,0x3a,0x6d,0xd5,0xe5,0xda,0x7d,0xce, -0x88,0xdc,0x55,0xc7,0x33,0x04,0x91,0x1f,0x1e,0xc4,0x70,0x89,0xc0,0x40,0x76,0x01, -0xd2,0x18,0x5a,0xc2,0xee,0x2d,0x41,0x0e,0xf5,0x18,0x3e,0xa0,0x35,0xf1,0xf8,0x37, -0xf4,0xdd,0x81,0x8c,0x58,0x3a,0x93,0x72,0x18,0xc6,0xc6,0x98,0xd9,0xba,0x10,0xcd, -0xbd,0xf1,0xce,0x70,0xae,0x47,0x4d,0xb9,0xe5,0xaa,0x6c,0x6f,0x87,0x5e,0x37,0x88, -0xe9,0x84,0x07,0x98,0xc6,0x19,0x49,0x0f,0x08,0xe8,0xa2,0x8b,0x47,0x3b,0xef,0xab, -0xfc,0x71,0xa2,0x15,0xa9,0x2d,0xe5,0x9a,0xeb,0x32,0x3c,0xb6,0xc4,0x41,0xb9,0xdd, -0x4c,0x47,0x81,0x0c,0x67,0x0c,0x23,0x8c,0x4e,0xa5,0x69,0x98,0xcd,0xfb,0x70,0xeb, -0xe4,0x1d,0x39,0x6e,0xef,0x2d,0x18,0x09,0x86,0xb6,0x0d,0xb4,0x05,0xbd,0xb1,0x4d, -0x08,0x17,0x96,0x0b,0xf1,0x2a,0xa9,0x16,0x7c,0xa6,0x5c,0xae,0x7a,0x50,0x96,0x33, -0xa8,0x8a,0x49,0x08,0xea,0x1e,0xd9,0x0c,0x58,0x30,0x93,0x67,0x56,0x2d,0x01,0x61, -0x86,0xc2,0x32,0x24,0x39,0x80,0x91,0xa0,0x6c,0x52,0xac,0x41,0x1e,0xc8,0x35,0x6c, -0x6d,0x8b,0x01,0x03,0x2c,0x58,0x48,0x01,0x2a,0xc1,0x50,0x94,0xb6,0xcc,0x32,0x99, -0x2d,0x30,0x13,0x07,0x15,0x60,0x26,0x2a,0x58,0x26,0x9a,0x2c,0xc0,0x82,0x93,0x8a, -0x82,0xb9,0x9b,0x34,0x16,0x88,0x56,0x85,0xc3,0x01,0x7a,0xc6,0x85,0xf0,0x95,0x81, -0xa4,0x61,0x40,0x54,0x92,0x39,0x92,0x02,0x06,0x54,0x8c,0xaa,0x98,0x21,0x80,0xd3, -0xa9,0x88,0x16,0xe4,0x81,0x21,0x54,0x32,0x21,0x10,0x72,0xf1,0x02,0xab,0x52,0x96, -0xe5,0x41,0x6b,0x35,0x0c,0xa9,0xf7,0x2f,0x78,0xf3,0x9d,0x6c,0x53,0xf2,0x73,0xdd, -0x40,0x8a,0x67,0xef,0x3a,0x45,0xe6,0x45,0x33,0x00,0xbd,0x4d,0xe7,0xb4,0x6d,0x78, -0x3d,0x86,0x1a,0x08,0x04,0x78,0xf3,0x73,0x33,0x0e,0x4d,0x10,0xd8,0x91,0x43,0xaf, -0x9e,0x28,0xef,0xec,0xc6,0xa3,0x9d,0xcd,0x56,0x24,0xb6,0x9b,0xee,0xbe,0xed,0xd2, -0x11,0x18,0x79,0x6f,0x30,0x61,0x80,0x49,0xb9,0x07,0x1c,0x72,0x48,0xd1,0x60,0xbd, -0x0e,0x84,0x80,0x12,0x84,0x85,0x5b,0x63,0x43,0x7c,0xd8,0x46,0x18,0x03,0x07,0xbd, -0xde,0xb4,0xa0,0x28,0xc3,0x35,0x00,0xad,0x61,0x6b,0x80,0x44,0x9c,0x80,0xec,0x76, -0x6e,0x7e,0x15,0xe0,0x2c,0xc8,0xcb,0xc8,0x0c,0xc4,0x91,0xab,0x42,0x58,0xb4,0x35, -0xf0,0x7b,0xcd,0xb4,0xaa,0x62,0xbf,0x8f,0x09,0x72,0xc1,0xb1,0xb1,0x76,0xe5,0xa3, -0x40,0xbe,0xb8,0x8e,0x8e,0xb0,0xac,0xd7,0x3a,0x62,0xd9,0x38,0x0e,0xaa,0x17,0xce, -0x88,0xaa,0x7b,0x1e,0x78,0x2e,0x25,0x60,0x39,0xfb,0x28,0x41,0xbd,0x1b,0x69,0xcf, -0x19,0xa9,0xa8,0x69,0x36,0xa0,0x83,0x93,0x47,0x6f,0x1c,0xc3,0x7f,0x21,0xb2,0xcc, -0xaf,0xf3,0xee,0x9c,0xef,0xdc,0x97,0x3e,0x9f,0xe7,0xa8,0x07,0xd2,0xe9,0x2f,0x4a, -0x10,0xe2,0xb6,0x7e,0xfa,0x56,0x14,0xb8,0x58,0x49,0xe2,0x94,0xd6,0x08,0x9d,0x5a, -0x81,0x14,0x43,0xec,0x5c,0x4f,0xb4,0x98,0x77,0xf6,0x85,0x84,0x98,0xb8,0xa9,0x36, -0xf0,0x3c,0xaf,0x6c,0x80,0x63,0xe4,0x31,0xba,0x44,0x12,0xc4,0xd8,0x9f,0xe4,0x39, -0xf9,0xe1,0x3c,0x77,0x6a,0xce,0x84,0x68,0xc1,0xb3,0xc7,0x8c,0xb9,0x54,0x0c,0xe5, -0x3b,0x6f,0x1d,0xca,0xc0,0x0f,0x36,0x3e,0xaf,0x93,0x82,0x1e,0x86,0xd3,0xb8,0xcd, -0x41,0xb0,0x6c,0x47,0x96,0x43,0x64,0xa4,0x74,0x84,0x5b,0xac,0xbc,0x5c,0x39,0x66, -0xbc,0x28,0x11,0xca,0x1b,0x61,0xcb,0x6e,0x6e,0xec,0xe7,0x56,0x77,0x31,0xa6,0x90, -0x30,0x8f,0x26,0xad,0xf6,0xe8,0x32,0x21,0x20,0xcb,0x7e,0x4d,0x95,0x6b,0xc4,0xb8, -0x35,0xed,0xaf,0x51,0x05,0x00,0xe1,0xf6,0x34,0xb9,0xc8,0xa5,0x0f,0xba,0x0d,0x12, -0xa2,0x48,0xef,0x29,0xf8,0xa4,0x49,0xb9,0x0e,0x9d,0x01,0x61,0xd5,0xcf,0x7d,0xbe, -0x9a,0x15,0xb6,0xec,0xe4,0x8c,0x1d,0xb3,0x8b,0x13,0xd5,0xe9,0xa2,0x13,0x6e,0x5d, -0x9d,0x8a,0x70,0xab,0x35,0x31,0x52,0xe5,0x9b,0xe0,0x25,0xe3,0x67,0x36,0x87,0xc0, -0x51,0x50,0x2c,0x1d,0x82,0x1d,0x72,0x06,0x4a,0xbc,0x06,0x71,0xab,0x7d,0xe8,0x9f, -0x37,0x9d,0xc5,0xb9,0xb6,0x1d,0xf4,0xfb,0x1c,0x85,0x85,0xf4,0xc8,0x61,0x66,0xb4, -0x2e,0xd1,0x7b,0x2a,0x17,0x92,0xa5,0xb2,0x5f,0x0e,0x14,0x24,0x00,0x18,0x62,0x42, -0x08,0x31,0xcd,0xac,0x03,0x89,0x21,0x1b,0x25,0x1d,0x06,0x7c,0x61,0xb3,0x2e,0xfa, -0x19,0xb1,0xcc,0x10,0x4a,0x21,0xc6,0xb4,0x5c,0x53,0x52,0xce,0xac,0x2c,0x35,0x06, -0xdb,0xe6,0xa2,0xc8,0x93,0xcf,0x71,0xec,0x2a,0x2f,0xd0,0x10,0x43,0xd5,0x10,0xf7, -0xa2,0x88,0x19,0x3e,0x18,0x6e,0xd5,0x36,0xdb,0x38,0xa2,0x15,0x6a,0xd2,0x2f,0x82, -0xc3,0xa8,0x60,0x21,0x20,0x11,0x47,0x9d,0x66,0x30,0xd1,0x36,0x4a,0x8d,0x0d,0x4d, -0xf7,0xd2,0xd5,0xd3,0x19,0x41,0x41,0xc2,0x1d,0x6a,0xa6,0x12,0x32,0x9a,0x21,0x10, -0x92,0x27,0x8e,0xeb,0x05,0x24,0x17,0x17,0xac,0xf4,0xf3,0x8d,0x1c,0x64,0x51,0x38, -0xd0,0x29,0x10,0x92,0xad,0xbd,0x54,0xe1,0xb4,0x92,0x4d,0xb1,0x16,0x9b,0x39,0x50, -0x46,0x51,0x96,0x2c,0xa4,0x41,0xcd,0x78,0x2d,0x88,0x9c,0x50,0x92,0x9c,0x74,0x4a, -0x8a,0x52,0xb7,0xf0,0x27,0x2c,0x2d,0x4b,0x13,0x0f,0x98,0x16,0xbd,0x10,0xcd,0x46, -0x0e,0xd5,0x32,0xcd,0xee,0x89,0x9a,0xa8,0x81,0xcb,0xef,0x4e,0xc3,0x3e,0xd4,0x1f, -0x7c,0x4e,0xbf,0x35,0x24,0x0b,0x38,0xd5,0xae,0x17,0x7c,0x9b,0x3b,0x81,0xd8,0xd1, -0x0d,0x1e,0x0d,0x58,0xea,0x14,0xad,0x93,0x85,0x6d,0xe4,0x83,0xbb,0x77,0x5a,0xcc, -0x20,0x36,0xcd,0xee,0xeb,0x28,0xb3,0x34,0x64,0x69,0x0a,0x39,0x79,0x2e,0xcf,0x56, -0xc3,0x6c,0x88,0x28,0x43,0x1a,0x6d,0x0d,0xa9,0x86,0xd3,0x68,0x28,0xa2,0x92,0x05, -0x02,0x4a,0x24,0x92,0x82,0x29,0x12,0x8a,0xf6,0x3b,0x40,0xdc,0xcf,0x50,0xfb,0x0d, -0x71,0xb0,0xb2,0xbb,0x39,0x3a,0x08,0xb6,0x11,0x86,0x54,0x19,0x47,0x55,0xa0,0x22, -0x32,0x7a,0xb2,0x12,0x0c,0x5c,0x4e,0x1d,0x18,0x57,0x50,0x53,0xc6,0x2e,0x16,0x6b, -0x46,0x31,0x34,0x6a,0xc1,0x66,0x5b,0xe9,0xc9,0xde,0x75,0x48,0x98,0x3b,0x6b,0xad, -0xe5,0xf3,0x84,0x2c,0xb5,0x0d,0x80,0x91,0x42,0x1a,0x5d,0x95,0xda,0xfb,0xa6,0x76, -0x61,0xd4,0xf1,0x1c,0x96,0x1d,0x7f,0x22,0xc7,0xe2,0xfa,0x7e,0x7a,0xfa,0x62,0x47, -0xc6,0x1e,0x7e,0x46,0xdd,0x92,0x4f,0x2c,0xdf,0xf5,0x41,0x1f,0x48,0x87,0x85,0x01, -0x3e,0xa1,0x20,0xd3,0x5f,0x66,0x34,0x1d,0x7a,0xa8,0x40,0xab,0x4e,0x4d,0x98,0xae, -0x0d,0xc7,0x95,0xd2,0xb0,0x7a,0x4b,0x8e,0x76,0xab,0x36,0xa9,0xe4,0x04,0x9d,0x8c, -0xc9,0xce,0xf7,0x10,0xdb,0xed,0x21,0xee,0xf9,0xf9,0xe9,0xdb,0x28,0x5c,0xf2,0xe2, -0x0e,0x81,0x19,0xa5,0x5a,0x36,0x22,0xd3,0x8f,0x9f,0x9e,0x31,0x17,0xac,0xc9,0x12, -0x8b,0xd1,0x53,0x17,0xba,0x44,0x3d,0x88,0x36,0x2e,0xb5,0xbc,0xa6,0x02,0x8a,0x3c, -0x56,0x90,0xd2,0x80,0xda,0x8c,0xb5,0xac,0x20,0xf3,0x8c,0xf9,0xd7,0x3e,0xb0,0xee, -0xfc,0x3b,0x9a,0x5f,0x14,0xa0,0x49,0xcc,0x04,0x21,0x34,0x6a,0xd0,0x6a,0x42,0x66, -0x64,0x4e,0x51,0x22,0xd0,0x4c,0x04,0x6d,0x44,0x02,0xe5,0x10,0xee,0xa6,0x68,0x30, -0xc7,0x72,0xdb,0xd8,0x34,0x8c,0xb3,0x3a,0x8d,0x43,0x62,0x02,0x4d,0x98,0x4c,0x74, -0xd2,0x31,0xac,0x20,0x2a,0x2b,0x0c,0xd7,0x00,0x70,0x0f,0x92,0x1e,0xe4,0x2f,0x1b, -0x58,0x59,0xb6,0xba,0xe0,0xf9,0x4b,0x67,0xd3,0x0f,0xe0,0x24,0xf4,0x6c,0x03,0x03, -0x69,0xdc,0x8a,0x91,0x7b,0x69,0x06,0xbb,0xcd,0xd8,0x7c,0x88,0x0e,0xff,0x4b,0x9d, -0x75,0x03,0xf7,0x6e,0x56,0x80,0xcb,0xa6,0x9d,0xda,0x82,0x1a,0xc9,0xf3,0x68,0x21, -0x02,0x2c,0x82,0x31,0x5b,0xb8,0x6b,0xab,0x3e,0x53,0x03,0x64,0x37,0x33,0x7e,0xe8, -0x56,0x88,0x0a,0x06,0x88,0x27,0x69,0x4e,0x02,0x4c,0x74,0x7e,0x88,0x4c,0xae,0xd9, -0x9c,0xcc,0x12,0xf6,0x82,0x03,0x31,0x71,0x24,0x81,0x3d,0xf2,0xdb,0x1b,0x02,0x59, -0xd3,0x63,0x43,0x68,0x0b,0xbe,0x53,0x08,0xcf,0x60,0xfa,0x15,0x36,0x09,0xc4,0x27, -0xba,0x4e,0x09,0x7c,0x41,0x84,0x14,0x74,0x81,0x06,0x78,0xce,0x33,0x13,0x47,0x03, -0x56,0x86,0x31,0x70,0x34,0xb3,0x59,0x64,0xee,0x29,0xc1,0x8c,0xc4,0x3a,0x91,0x15, -0x17,0x2d,0xee,0xa7,0xe8,0xde,0x7f,0x93,0x91,0x45,0x70,0x73,0xc5,0x92,0x5a,0xcf, -0x90,0x25,0xd3,0x59,0xad,0x3f,0x13,0x06,0xaa,0xc9,0x0e,0xfa,0x6a,0xdf,0xbb,0xf0, -0x93,0xe5,0x8b,0xde,0x04,0x8d,0xcc,0x0a,0xd6,0xd2,0x93,0x34,0xd9,0x44,0x82,0xfd, -0x1c,0x32,0x47,0x0b,0x91,0x28,0x37,0x7f,0x9d,0x0b,0x2e,0x2e,0x1b,0x5e,0x3e,0x9e, -0x78,0xf9,0xb8,0x8d,0x50,0x8b,0x60,0x67,0xdb,0x08,0x12,0x05,0x31,0x1d,0x39,0x0b, -0x44,0xeb,0x58,0x61,0x03,0x05,0x39,0x10,0x42,0xeb,0x1c,0xad,0x23,0xda,0xd9,0x6c, -0xd0,0x79,0x5b,0x0d,0xb4,0x1c,0x08,0xf5,0x70,0xdb,0x06,0xc9,0xc1,0x87,0x2a,0x5c, -0x72,0xe8,0x40,0x10,0xfe,0x96,0xe4,0x3d,0xe0,0x5b,0x39,0xc6,0x96,0xac,0x69,0xdc, -0x68,0x0a,0x61,0xdc,0xa4,0x9a,0xb9,0x56,0x42,0x0e,0xd8,0x27,0x14,0x3b,0x6d,0x28, -0x12,0x2e,0xc0,0xe7,0xae,0xc1,0xe8,0x85,0x68,0x73,0xb5,0x6e,0x86,0x86,0x4e,0x43, -0x61,0x33,0x53,0x17,0x16,0x49,0x25,0x60,0xd9,0x60,0x24,0x96,0xcb,0x14,0xb9,0x52, -0x44,0x19,0xc3,0xa0,0x38,0x41,0x91,0xbf,0x87,0x2a,0x66,0xf9,0x74,0x62,0x20,0xa9, -0xe0,0x8b,0x54,0x2a,0x70,0xe5,0xa4,0x48,0xc0,0x31,0x47,0x17,0x97,0x71,0xda,0x33, -0xc0,0xfe,0x9c,0x53,0x8e,0xc8,0xda,0x61,0xc5,0xd4,0x74,0x90,0xf1,0x2e,0xe5,0x6d, -0xcb,0x56,0x3c,0x45,0xcb,0x31,0x61,0x4c,0x82,0x20,0x01,0x85,0x8c,0x95,0xd2,0x9c, -0x79,0x23,0x1e,0x0f,0x75,0x13,0xc0,0x86,0xd4,0xf5,0x67,0x0d,0x9a,0x8b,0x1c,0x1f, -0x9f,0xad,0xd3,0xef,0x5d,0xce,0x35,0xd1,0xbe,0xaf,0xfa,0xea,0x86,0x7d,0x05,0x55, -0xea,0xc6,0xd3,0x59,0xe6,0x89,0x24,0xe5,0xb9,0xa1,0x90,0xe1,0x98,0xee,0xba,0x4e, -0xb7,0xd2,0xc5,0x1c,0x21,0x3a,0x10,0xca,0x21,0xc0,0x20,0xb4,0x94,0x61,0x6f,0x10, -0xe4,0x55,0x3b,0x82,0x63,0x36,0xec,0x63,0x07,0x06,0x80,0xc3,0x15,0x27,0x04,0x2b, -0x97,0x0f,0xe0,0xe6,0x60,0x16,0x62,0x78,0xf7,0x8f,0x7e,0x93,0xa2,0x2d,0x10,0x8b, -0x0d,0x8f,0x0e,0x9c,0x6f,0x8e,0x62,0x7a,0x60,0x4a,0x2f,0x78,0xdb,0xe8,0x6d,0xd4, -0xf5,0xbd,0x53,0xb1,0x0c,0xf9,0x46,0xe5,0xa1,0x60,0xd5,0xdd,0xbc,0x1c,0x20,0x6d, -0x08,0x2b,0xa6,0x43,0x36,0x84,0x34,0x49,0x0b,0xb3,0x99,0x67,0x56,0xd2,0x28,0xd0, -0xe8,0xc3,0xbd,0xe5,0xf7,0xe7,0x3b,0x6a,0xf7,0x58,0x5c,0xe9,0xc4,0x42,0x4a,0x53, -0x20,0xf0,0xbe,0xe4,0x70,0xf0,0xe1,0x14,0x7c,0x3a,0x07,0x94,0xd6,0xfc,0x58,0xf8, -0x91,0x00,0x03,0xd0,0xa3,0x57,0x4e,0xd1,0x7c,0x92,0xb8,0x56,0xd5,0x3d,0x5d,0x0d, -0xd9,0xe0,0x88,0xc5,0xdb,0x6c,0xd3,0x3d,0x28,0x04,0xce,0x50,0x74,0x37,0xa1,0xe9, -0x6a,0xc6,0x94,0x21,0xdb,0xbb,0xe7,0x4c,0x20,0x12,0x48,0x10,0x48,0x06,0x49,0x31, -0x1b,0x6c,0x40,0x48,0x6e,0x68,0xc0,0xa4,0x3c,0xaa,0x82,0x88,0x15,0xdc,0x21,0x25, -0xa0,0x92,0x63,0x87,0x44,0x27,0x5e,0x0f,0xbf,0x68,0xc6,0x82,0x92,0xde,0x6e,0xf7, -0x92,0x69,0x21,0x47,0xb6,0xe1,0xdc,0x9a,0x60,0x50,0x6c,0x2a,0xda,0xae,0x2a,0x6b, -0x57,0x20,0x4b,0x06,0xca,0x25,0x80,0x09,0xa0,0xf5,0xb5,0xa9,0x6d,0x74,0x22,0xae, -0xc2,0x08,0x70,0x36,0x87,0x4e,0x1b,0x15,0xe2,0x10,0xd3,0x13,0x6c,0x1b,0x0b,0x55, -0x6d,0x6e,0x2a,0xeb,0x0d,0x50,0xc6,0x30,0x8c,0xb9,0x1b,0x4a,0x31,0x1a,0x12,0xc2, -0x59,0xd5,0xc2,0xc5,0x44,0x05,0x71,0x7e,0x3d,0x47,0x83,0x8c,0x02,0x3c,0x0e,0x8f, -0xa9,0xc0,0xf1,0x72,0xc0,0x11,0x38,0xe7,0x02,0xa3,0xa9,0x1b,0xdf,0x63,0x91,0x0b, -0xd2,0x0b,0x6e,0xa8,0x17,0x9e,0xc6,0x03,0x1e,0x77,0x8d,0xcf,0x11,0xb9,0xe5,0x5e, -0xfa,0xcf,0x8c,0xc5,0x23,0xae,0xe5,0xef,0x7d,0xb8,0x29,0x9b,0x62,0xc4,0x01,0x1b, -0x3b,0x91,0x9a,0x4e,0x09,0x33,0xb4,0xaa,0x8a,0xc1,0x88,0xef,0x30,0x70,0x41,0x60, -0x41,0xd2,0x53,0xca,0xc5,0x43,0x49,0xbe,0xa4,0xc4,0xc3,0xa6,0xc8,0xfb,0xc1,0x20, -0xc4,0x3a,0x64,0x54,0x46,0xf1,0x18,0x82,0x18,0x99,0xd4,0xcc,0xc2,0x2a,0x94,0x1c, -0x85,0xbd,0x47,0x24,0x23,0x1e,0xd5,0x11,0x43,0xae,0x6e,0x8f,0x38,0xbd,0x6e,0x80, -0x03,0x45,0x9b,0x6f,0x75,0x8f,0xab,0x1c,0x45,0xf7,0x65,0xc5,0xa0,0x51,0xe9,0x2b, -0x4a,0x43,0x92,0x0b,0x76,0x2c,0x28,0xc1,0x8e,0x48,0xc3,0xa0,0x72,0x82,0x9a,0x98, -0x78,0x72,0xaa,0x0d,0xa7,0x10,0x28,0xbb,0x09,0x43,0xe3,0xdd,0x19,0x5d,0x45,0xd4, -0x40,0xc9,0x18,0x7f,0x67,0xa3,0xdd,0x29,0x45,0xe0,0xbb,0xcf,0x15,0xe4,0x18,0x38, -0x28,0x11,0x94,0x53,0x23,0x77,0xa9,0x92,0x66,0x52,0x62,0xe9,0x16,0x24,0x83,0x04, -0x75,0x34,0x6e,0x1c,0x09,0x61,0xb7,0xa4,0x28,0x75,0x28,0xef,0x4b,0xb6,0xfd,0xa3, -0x69,0xd1,0x18,0x20,0x98,0x48,0x44,0x70,0x94,0xa9,0xee,0xa0,0x3b,0xd1,0xbe,0xdd, -0x77,0xc5,0xa6,0x59,0x0c,0x23,0x7e,0x38,0x2e,0x71,0x63,0x8d,0xda,0xdf,0xd7,0x83, -0x5b,0x04,0x37,0x81,0xac,0xf4,0xec,0xea,0x82,0x39,0x91,0x9e,0x28,0x08,0x50,0xf5, -0xbf,0x4f,0x75,0xb4,0xee,0xb5,0xca,0x1a,0x91,0xbf,0xa1,0x19,0x67,0x63,0x84,0xd5, -0x08,0x1f,0x6e,0x52,0xfd,0xab,0xb5,0x0b,0x6f,0x8b,0x1a,0xbe,0x55,0x63,0xbe,0xce, -0x12,0x12,0x41,0x5b,0x2c,0x0f,0x14,0x79,0x45,0x5d,0xa4,0x81,0xa4,0x73,0xe9,0xe3, -0x1b,0x5e,0x34,0x6e,0x47,0x01,0x4b,0xcf,0x14,0x30,0xea,0xf3,0x03,0xb4,0x93,0x5d, -0x77,0xb1,0x01,0x48,0x56,0x59,0x65,0x20,0xa9,0x35,0xc9,0x06,0x86,0xe8,0x97,0xb3, -0xd7,0x66,0x39,0x2b,0x11,0x6f,0xd3,0x6a,0xab,0xd9,0x00,0xcc,0x75,0xde,0x84,0xcb, -0x0c,0x73,0xe1,0xe1,0xd0,0x8a,0x69,0x04,0x20,0xa2,0x80,0x60,0xfc,0xb8,0x0a,0x54, -0x07,0x41,0x00,0x40,0x79,0x73,0x88,0x81,0xce,0x2e,0xc4,0x90,0x10,0xb7,0xb2,0x8d, -0xff,0x1a,0xb2,0x9a,0x74,0x6d,0xdf,0xc3,0xfa,0x31,0xb1,0xd6,0x39,0xff,0x46,0xc8, -0xd6,0xd5,0xfb,0x56,0xf1,0x6a,0x37,0x93,0xd0,0x10,0x40,0x2d,0xb2,0x01,0x31,0xba, -0xed,0xf9,0x3f,0xd1,0x02,0x10,0x1d,0x7e,0xeb,0x1a,0x6d,0x19,0xf3,0x63,0xf6,0x56, -0xd9,0x40,0x84,0x04,0x7b,0xdf,0x3d,0xc7,0xaf,0xdd,0x64,0x08,0x40,0x45,0xfb,0x67, -0x06,0xa7,0x1f,0xb6,0xae,0xf5,0xfe,0x1e,0x10,0x21,0x01,0xbd,0x7e,0xd3,0x6e,0x50, -0x21,0x01,0xe3,0xf7,0x62,0xa0,0x80,0x82,0x01,0x69,0x01,0x04,0x02,0x5d,0x73,0x8b, -0x7e,0xe3,0xb0,0xca,0x56,0x02,0x02,0x04,0x7f,0xc5,0xdc,0x91,0x4e,0x14,0x24,0x10, -0x10,0xfe,0x69,0xc0, +0150,0061,0061,0101,0131,0046,0123,0131,0354,0323,0245,0071,0000,0013,0311,0137, +0200,0000,0020,0130,0003,0377,0342,0077,0377,0377,0360,0277,0347,0337,0140,0140, +0033,0034,0000,0075,0334,0120,0254,0200,0337,0133,0000,0157,0000,0006,0335,0206, +0033,0025,0240,0012,0034,0115,0000,0105,0321,0221,0175,0200,0003,0273,0011,0330, +0063,0255,0172,0316,0242,0310,0110,0136,0315,0166,0120,0351,0313,0245,0007,0125, +0034,0015,0117,0102,0150,0002,0150,0206,0122,0172,0231,0110,0151,0352,0064,0033, +0123,0365,0046,0151,0006,0040,0006,0231,0004,0010,0106,0102,0021,0252,0000,0003, +0100,0000,0000,0003,0004,0205,0117,0117,0122,0172,0214,0241,0265,0032,0064,0000, +0000,0006,0200,0032,0001,0047,0252,0122,0121,0020,0077,0124,0144,0000,0150,0000, +0000,0000,0000,0002,0123,0122,0217,0123,0020,0002,0151,0220,0031,0062,0062,0155, +0036,0244,0331,0107,0244,0320,0306,0204,0022,0041,0011,0240,0020,0044,0115,0123, +0312,0000,0000,0000,0000,0365,0036,0247,0376,0370,0177,0335,0273,0113,0225,0323, +0173,0235,0167,0127,0064,0150,0055,0210,0330,0326,0044,0220,0141,0114,0242,0242, +0330,0333,0232,0336,0065,0346,0134,0326,0357,0237,0333,0166,0154,0204,0044,0126, +0061,0104,0026,0046,0111,0117,0135,0072,0344,0212,0051,0224,0133,0327,0162,0116, +0355,0256,0040,0104,0150,0331,0232,0215,0133,0306,0345,0264,0123,0316,0327,0007, +0235,0310,0065,0111,0313,0230,0306,0305,0156,0156,0121,0316,0162,0345,0210,0065, +0310,0357,0073,0206,0202,0202,0130,0100,0171,0335,0221,0100,0103,0015,0223,0263, +0203,0171,0332,0344,0224,0150,0275,0075,0233,0346,0257,0115,0213,0145,0055,0001, +0062,0244,0317,0075,0375,0344,0211,0020,0231,0110,0023,0010,0327,0275,0135,0136, +0336,0171,0170,0245,0355,0327,0303,0347,0144,0140,0220,0110,0114,0022,0021,0062, +0364,0344,0043,0136,0376,0270,0054,0163,0162,0144,0310,0111,0062,0102,0021,0111, +0312,0213,0143,0014,0060,0030,0264,0172,0315,0252,0246,0130,0103,0343,0063,0245, +0211,0322,0305,0262,0110,0253,0007,0067,0125,0077,0267,0362,0123,0117,0345,0217, +0261,0175,0222,0047,0133,0203,0063,0057,0336,0374,0153,0364,0351,0146,0326,0122, +0126,0126,0006,0227,0371,0117,0076,0251,0212,0043,0231,0253,0357,0374,0304,0235, +0065,0057,0263,0136,0373,0317,0117,0206,0121,0307,0177,0176,0315,0241,0334,0176, +0326,0357,0367,0065,0207,0335,0201,0116,0373,0131,0174,0133,0322,0054,0244,0153, +0253,0017,0113,0125,0254,0144,0324,0371,0040,0361,0153,0374,0057,0155,0320,0124, +0301,0215,0326,0227,0064,0346,0155,0047,0041,0307,0017,0361,0322,0275,0147,0015, +0374,0325,0370,0331,0317,0307,0144,0154,0326,0150,0120,0042,0046,0220,0163,0116, +0045,0237,0267,0065,0215,0141,0126,0270,0354,0371,0171,0355,0015,0350,0372,0357, +0346,0152,0166,0132,0306,0240,0314,0110,0133,0111,0033,0072,0253,0124,0030,0234, +0145,0047,0254,0167,0227,0153,0116,0114,0265,0145,0126,0025,0021,0220,0341,0234, +0363,0231,0074,0151,0305,0171,0153,0070,0332,0271,0245,0250,0045,0360,0223,0366, +0153,0136,0113,0355,0115,0151,0266,0226,0004,0357,0047,0214,0334,0250,0273,0354, +0223,0077,0016,0366,0126,0360,0355,0061,0202,0264,0170,0304,0111,0321,0166,0266, +0133,0076,0257,0212,0326,0273,0126,0162,0131,0014,0101,0272,0214,0265,0171,0361, +0165,0275,0146,0052,0051,0022,0033,0175,0053,0171,0074,0317,0225,0350,0344,0367, +0042,0166,0176,0036,0155,0276,0265,0050,0323,0121,0117,0106,0101,0060,0172,0264, +0257,0324,0237,0311,0364,0043,0104,0121,0075,0041,0157,0216,0263,0156,0344,0152, +0152,0301,0357,0215,0314,0172,0267,0332,0307,0122,0042,0143,0001,0374,0251,0272, +0113,0253,0054,0363,0207,0350,0166,0210,0126,0257,0257,0357,0352,0076,0244,0076, +0122,0374,0147,0206,0150,0375,0142,0002,0002,0000,0017,0220,0200,0200,0200,0003, +0073,0156,0241,0300,0150,0117,0104,0024,0340,0304,0006,0030,0140,0077,0152,0106, +0161,0343,0142,0140,0245,0352,0233,0061,0160,0223,0202,0257,0150,0033,0176,0355, +0270,0135,0124,0137,0337,0052,0177,0041,0373,0174,0174,0372,0157,0037,0132,0306, +0177,0245,0357,0035,0174,0256,0271,0146,0331,0166,0131,0257,0351,0270,0166,0136, +0171,0000,0147,0375,0036,0161,0220,0371,0306,0024,0215,0076,0165,0330,0336,0261, +0274,0110,0117,0312,0152,0204,0175,0265,0367,0327,0270,0247,0243,0071,0130,0261, +0212,0042,0167,0015,0246,0371,0256,0377,0325,0051,0356,0362,0356,0036,0324,0372, +0054,0345,0341,0347,0133,0171,0373,0342,0046,0325,0110,0273,0365,0274,0322,0324, +0133,0172,0334,0157,0133,0274,0120,0256,0270,0157,0066,0107,0171,0044,0253,0150, +0313,0331,0053,0060,0057,0354,0333,0231,0030,0240,0162,0213,0332,0363,0157,0251, +0134,0156,0166,0355,0051,0063,0116,0124,0267,0266,0047,0037,0017,0272,0355,0076, +0105,0334,0166,0112,0014,0267,0337,0331,0351,0056,0263,0105,0153,0320,0231,0141, +0154,0343,0143,0060,0133,0023,0013,0305,0370,0331,0132,0275,0166,0346,0224,0262, +0007,0155,0346,0176,0211,0364,0154,0322,0234,0076,0265,0306,0075,0073,0314,0353, +0121,0125,0347,0321,0236,0304,0227,0100,0212,0220,0044,0033,0240,0116,0021,0017, +0174,0347,0231,0163,0126,0224,0352,0271,0132,0010,0214,0341,0264,0142,0357,0151, +0221,0072,0167,0327,0036,0223,0103,0152,0221,0057,0250,0335,0261,0176,0313,0364, +0216,0370,0066,0365,0121,0171,0325,0372,0032,0277,0126,0137,0137,0131,0326,0152, +0216,0274,0157,0233,0262,0014,0141,0264,0030,0266,0376,0121,0373,0201,0011,0052, +0301,0220,0142,0060,0121,0007,0275,0104,0345,0156,0310,0140,0345,0204,0016,0002, +0343,0045,0222,0017,0124,0367,0154,0033,0034,0001,0070,0035,0151,0254,0010,0075, +0150,0301,0206,0107,0073,0365,0362,0120,0356,0203,0135,0205,0355,0147,0331,0306, +0113,0252,0250,0214,0135,0200,0142,0013,0244,0015,0303,0275,0036,0332,0130,0137, +0223,0225,0322,0040,0000,0035,0353,0001,0212,0343,0346,0351,0051,0311,0143,0073, +0352,0105,0050,0374,0114,0347,0032,0264,0103,0354,0206,0140,0236,0200,0163,0035, +0032,0230,0331,0215,0351,0052,0357,0071,0361,0057,0351,0033,0032,0135,0055,0225, +0305,0013,0120,0351,0323,0115,0245,0350,0067,0343,0167,0224,0357,0273,0075,0107, +0251,0025,0023,0012,0023,0206,0234,0144,0225,0073,0011,0371,0036,0255,0105,0161, +0173,0215,0256,0141,0304,0132,0061,0007,0162,0355,0271,0273,0176,0231,0243,0155, +0355,0204,0256,0231,0071,0232,0353,0157,0172,0202,0110,0026,0003,0025,0014,0157, +0126,0243,0164,0270,0106,0357,0134,0227,0157,0272,0133,0242,0312,0364,0113,0015, +0277,0116,0067,0217,0304,0306,0324,0365,0005,0115,0036,0017,0230,0275,0054,0012, +0003,0321,0046,0010,0331,0237,0306,0352,0351,0064,0254,0130,0330,0225,0106,0342, +0373,0051,0002,0371,0360,0023,0232,0201,0133,0105,0014,0140,0270,0141,0235,0044, +0246,0113,0236,0353,0331,0326,0143,0023,0264,0343,0307,0315,0013,0342,0306,0330, +0120,0171,0221,0235,0262,0062,0366,0170,0356,0136,0140,0175,0311,0362,0310,0326, +0361,0130,0051,0301,0051,0343,0037,0061,0121,0311,0206,0070,0115,0041,0260,0134, +0203,0120,0302,0360,0371,0170,0373,0227,0131,0323,0027,0103,0210,0120,0222,0042, +0235,0027,0102,0034,0010,0156,0064,0313,0177,0145,0005,0260,0105,0117,0237,0126, +0345,0353,0174,0241,0266,0361,0276,0016,0173,0374,0370,0337,0127,0351,0363,0365, +0325,0373,0265,0001,0242,0136,0343,0255,0303,0043,0044,0221,0051,0222,0246,0040, +0104,0143,0050,0205,0045,0211,0062,0226,0053,0012,0023,0045,0063,0044,0131,0242, +0146,0046,0112,0246,0224,0255,0026,0330,0261,0121,0151,0112,0026,0111,0143,0104, +0042,0152,0051,0060,0111,0222,0204,0264,0205,0032,0065,0003,0112,0245,0066,0065, +0024,0105,0026,0224,0042,0061,0251,0017,0135,0306,0231,0024,0023,0102,0115,0253, +0307,0051,0061,0031,0061,0131,0223,0013,0111,0221,0201,0223,0227,0144,0321,0246, +0022,0300,0106,0151,0244,0312,0047,0213,0201,0060,0115,0106,0061,0026,0104,0106, +0074,0353,0241,0335,0161,0110,0051,0044,0141,0220,0025,0040,0206,0106,0302,0231, +0240,0040,0363,0270,0357,0273,0175,0053,0203,0072,0301,0003,0030,0217,0007,0351, +0052,0155,0012,0006,0061,0243,0312,0136,0373,0224,0021,0075,0031,0317,0324,0155, +0057,0311,0207,0275,0131,0225,0152,0230,0144,0263,0014,0242,0027,0323,0327,0245, +0130,0232,0261,0033,0353,0147,0200,0264,0257,0265,0351,0213,0142,0237,0012,0321, +0363,0030,0322,0161,0133,0256,0316,0274,0275,0027,0144,0262,0362,0056,0231,0031, +0212,0056,0000,0100,0162,0312,0051,0154,0317,0213,0221,0046,0143,0035,0247,0142, +0065,0173,0265,0146,0133,0353,0171,0045,0054,0065,0015,0231,0273,0033,0041,0007, +0336,0255,0050,0126,0031,0371,0272,0271,0025,0030,0326,0377,0235,0322,0345,0131, +0027,0026,0254,0321,0221,0155,0153,0257,0313,0164,0352,0326,0055,0331,0070,0001, +0266,0301,0255,0064,0366,0213,0371,0054,0034,0157,0025,0125,0124,0367,0206,0270, +0003,0156,0070,0331,0075,0164,0256,0254,0307,0306,0264,0065,0057,0013,0212,0052, +0217,0263,0043,0310,0207,0144,0245,0141,0023,0336,0352,0017,0210,0337,0122,0170, +0270,0352,0362,0041,0323,0264,0005,0155,0360,0266,0105,0275,0263,0031,0257,0152, +0221,0105,0102,0040,0103,0204,0034,0017,0174,0253,0306,0053,0023,0254,0323,0214, +0342,0333,0314,0210,0153,0270,0174,0205,0311,0366,0336,0234,0121,0043,0302,0153, +0135,0014,0223,0250,0172,0033,0113,0156,0042,0043,0142,0301,0105,0324,0223,0132, +0212,0327,0023,0126,0365,0207,0355,0234,0056,0001,0113,0263,0305,0246,0324,0046, +0303,0037,0133,0331,0174,0324,0130,0374,0010,0212,0306,0317,0251,0234,0021,0205, +0075,0104,0011,0061,0170,0345,0137,0015,0174,0104,0126,0006,0056,0125,0136,0232, +0052,0211,0342,0067,0132,0032,0116,0212,0361,0115,0252,0061,0061,0173,0342,0327, +0275,0146,0133,0351,0061,0264,0032,0371,0326,0325,0010,0241,0257,0220,0245,0175, +0301,0044,0012,0326,0030,0276,0312,0341,0032,0040,0167,0377,0256,0036,0047,0034, +0134,0327,0275,0161,0355,0100,0032,0055,0164,0152,0017,0255,0001,0221,0057,0051, +0136,0022,0036,0116,0262,0322,0105,0024,0140,0355,0247,0170,0254,0055,0015,0224, +0162,0244,0114,0203,0041,0072,0375,0326,0002,0106,0042,0375,0214,0031,0366,0312, +0332,0051,0277,0061,0243,0200,0103,0272,0007,0353,0214,0354,0123,0212,0302,0107, +0222,0063,0250,0163,0013,0206,0074,0206,0141,0022,0076,0160,0313,0173,0325,0371, +0356,0333,0375,0101,0175,0163,0240,0256,0146,0345,0345,0245,0006,0310,0373,0076, +0056,0325,0106,0340,0164,0323,0014,0316,0352,0222,0322,0013,0236,0327,0340,0124, +0356,0247,0230,0305,0247,0353,0277,0054,0056,0001,0246,0145,0256,0331,0065,0214, +0315,0014,0103,0153,0045,0252,0246,0244,0075,0075,0267,0206,0114,0067,0253,0133, +0131,0042,0365,0173,0145,0242,0366,0040,0246,0327,0251,0211,0033,0302,0326,0131, +0052,0152,0242,0145,0214,0222,0010,0041,0216,0115,0054,0325,0101,0002,0325,0240, +0254,0363,0206,0152,0050,0035,0066,0321,0166,0066,0011,0316,0247,0234,0244,0266, +0006,0153,0366,0211,0141,0345,0206,0355,0013,0213,0316,0256,0205,0166,0200,0357, +0150,0321,0211,0113,0110,0263,0111,0032,0260,0206,0212,0140,0054,0142,0001,0015, +0244,0150,0322,0206,0211,0142,0155,0041,0217,0054,0024,0264,0045,0054,0246,0252, +0320,0124,0346,0102,0365,0005,0336,0235,0300,0031,0171,0170,0153,0131,0201,0022, +0333,0024,0060,0041,0354,0236,0130,0033,0152,0100,0205,0146,0213,0324,0000,0252, +0243,0335,0340,0247,0231,0200,0101,0055,0015,0266,0036,0027,0156,0365,0037,0155, +0074,0173,0374,0265,0304,0314,0272,0022,0076,0374,0352,0224,0206,0373,0045,0002, +0001,0012,0143,0105,0003,0061,0077,0164,0063,0305,0302,0076,0164,0222,0000,0113, +0177,0123,0167,0115,0300,0004,0060,0151,0043,0103,0145,0071,0114,0312,0331,0264, +0065,0344,0220,0134,0113,0305,0301,0222,0056,0321,0316,0177,0047,0217,0135,0355, +0353,0355,0121,0316,0365,0277,0340,0236,0014,0203,0246,0170,0016,0355,0055,0203, +0103,0124,0041,0277,0117,0217,0136,0353,0007,0125,0231,0061,0112,0361,0044,0263, +0270,0213,0225,0063,0210,0227,0120,0136,0141,0226,0263,0013,0060,0371,0206,0017, +0344,0137,0157,0307,0336,0001,0265,0015,0257,0260,0142,0372,0031,0333,0327,0105, +0013,0034,0357,0266,0007,0153,0301,0361,0251,0037,0035,0146,0125,0014,0275,0341, +0103,0367,0302,0325,0362,0210,0256,0332,0067,0022,0045,0244,0145,0326,0257,0211, +0032,0333,0331,0255,0351,0132,0265,0213,0124,0152,0253,0350,0053,0232,0261,0126, +0275,0225,0325,0145,0170,0266,0364,0255,0136,0115,0253,0163,0132,0256,0154,0155, +0165,0361,0276,0051,0174,0276,0335,0074,0247,0043,0250,0166,0337,0141,0174,0313, +0310,0242,0000,0040,0210,0247,0035,0000,0120,0245,0245,0313,0120,0202,0224,0026, +0030,0104,0372,0222,0052,0074,0267,0045,0064,0313,0120,0311,0030,0325,0231,0305, +0011,0164,0304,0022,0300,0262,0110,0054,0334,0240,0011,0104,0262,0115,0072,0357, +0344,0117,0263,0371,0003,0351,0262,0031,0005,0264,0207,0115,0217,0123,0023,0040, +0014,0106,0357,0261,0365,0363,0316,0143,0043,0363,0365,0071,0277,0045,0253,0251, +0316,0204,0324,0252,0352,0363,0162,0021,0015,0013,0054,0216,0051,0135,0126,0020, +0173,0135,0372,0237,0115,0043,0253,0322,0341,0253,0364,0102,0000,0004,0272,0024, +0263,0151,0003,0206,0057,0030,0072,0113,0122,0342,0075,0161,0053,0320,0320,0061, +0236,0070,0215,0072,0203,0320,0135,0036,0153,0201,0261,0043,0100,0200,0074,0364, +0162,0060,0254,0355,0304,0050,0141,0327,0031,0273,0115,0255,0324,0043,0126,0050, +0045,0040,0320,0367,0342,0044,0143,0260,0236,0120,0337,0075,0020,0161,0115,0221, +0303,0104,0060,0104,0061,0260,0143,0326,0166,0054,0065,0244,0237,0217,0015,0020, +0005,0232,0330,0033,0114,0122,0333,0073,0141,0336,0210,0075,0171,0362,0346,0321, +0062,0036,0137,0261,0212,0307,0006,0336,0062,0024,0227,0133,0153,0352,0064,0374, +0133,0076,0332,0173,0040,0271,0353,0004,0172,0210,0015,0176,0133,0345,0263,0247, +0315,0003,0320,0357,0314,0102,0341,0244,0337,0320,0171,0142,0321,0257,0107,0225, +0047,0153,0115,0310,0010,0114,0074,0147,0371,0135,0140,0266,0306,0340,0174,0047, +0117,0026,0107,0153,0301,0343,0062,0303,0006,0316,0024,0363,0271,0067,0351,0373, +0026,0272,0110,0135,0244,0122,0117,0272,0167,0074,0122,0340,0222,0004,0022,0304, +0357,0307,0321,0162,0306,0350,0224,0224,0047,0210,0314,0303,0273,0010,0223,0010, +0260,0205,0006,0042,0110,0013,0101,0274,0337,0220,0044,0100,0345,0300,0323,0260, +0171,0032,0107,0055,0215,0121,0101,0044,0347,0270,0040,0227,0072,0040,0242,0074, +0326,0106,0020,0214,0200,0227,0132,0107,0020,0152,0311,0135,0261,0266,0301,0221, +0306,0124,0064,0261,0235,0335,0161,0347,0063,0072,0060,0220,0255,0045,0215,0064, +0107,0204,0230,0133,0254,0310,0125,0116,0014,0103,0022,0065,0322,0113,0000,0307, +0043,0072,0052,0111,0211,0204,0010,0030,0164,0062,0132,0045,0246,0321,0212,0241, +0153,0042,0061,0353,0327,0242,0203,0317,0250,0372,0276,0045,0226,0156,0375,0252, +0155,0373,0361,0243,0224,0335,0034,0067,0334,0042,0147,0242,0122,0024,0265,0043, +0320,0072,0264,0303,0043,0133,0103,0263,0212,0033,0107,0154,0115,0221,0244,0210, +0142,0277,0213,0135,0044,0106,0234,0317,0316,0325,0306,0326,0310,0321,0075,0211, +0110,0202,0102,0055,0056,0021,0173,0353,0275,0071,0237,0061,0071,0043,0141,0126, +0216,0046,0011,0042,0076,0074,0221,0272,0046,0341,0001,0310,0016,0220,0272,0325, +0327,0102,0312,0010,0163,0220,0100,0075,0320,0031,0333,0350,0067,0360,0115,0201, +0214,0130,0073,0223,0202,0030,0306,0306,0230,0331,0300,0220,0315,0275,0363,0326, +0160,0256,0107,0155,0271,0351,0252,0154,0157,0227,0133,0361,0021,0333,0010,0017, +0061,0214,0062,0222,0036,0021,0331,0105,0026,0216,0270,0343,0127,0371,0163,0242, +0025,0251,0056,0045,0232,0353,0062,0074,0266,0304,0101,0301,0342,0245,0306,0342, +0040,0147,0054,0027,0026,0174,0210,0276,0026,0053,0222,0214,0172,0103,0271,0162, +0150,0340,0260,0240,0120,0107,0101,0044,0100,0225,0252,0246,0204,0013,0205,0313, +0346,0225,0124,0213,0074,0046,0216,0127,0036,0050,0113,0015,0066,0010,0244,0220, +0216,0120,0363,0240,0202,0302,0224,0225,0226,0260,0131,0205,0210,0042,0006,0246, +0133,0034,0300,0110,0320,0066,0051,0126,0040,0217,0144,0032,0266,0066,0305,0200, +0201,0226,0054,0201,0000,0225,0140,0250,0112,0133,0146,0031,0114,0226,0230,0011, +0203,0212,0260,0023,0025,0054,0023,0115,0026,0140,0101,0111,0305,0101,0135,0111, +0146,0202,0321,0012,0320,0271,0150,0027,0254,0150,0257,0204,0254,0015,0043,0012, +0002,0244,0221,0314,0220,0020,0062,0244,0145,0124,0301,0014,0006,0235,0114,0100, +0270,0122,0004,0205,0120,0310,0204,0101,0323,0304,0012,0255,0112,0133,0225,0005, +0254,0324,0062,0247,0334,0276,0043,0316,0165,0261,0117,0311,0327,0212,0201,0024, +0317,0334,0164,0213,0314,0212,0146,0001,0172,0233,0317,0204,0155,0170,0075,0251, +0170,0150,0044,0021,0277,0233,0031,0230,0162,0150,0206,0304,0212,0035,0174,0336, +0217,0013,0350,0043,0256,0015,0126,0044,0266,0234,0160,0276,0355,0320,0221,0030, +0171,0157,0060,0141,0200,0111,0301,0007,0074,0364,0110,0321,0140,0275,0016,0220, +0040,0022,0204,0205,0133,0143,0103,0214,0330,0106,0032,0001,0203,0342,0357,0132, +0120,0024,0141,0273,0320,0343,0135,0043,0136,0006,0131,0344,0045,0075,0227,0077, +0170,0306,0204,0146,0306,0146,0300,0223,0154,0327,0020,0131,0213,0103,0135,0317, +0171,0266,0225,0114,0127,0337,0164,0272,0140,0330,0330,0274,0071,0150,0320,0057, +0256,0043,0263,0274,0053,0065,0326,0230,0266,0116,0103,0272,0205,0363,0262,0052, +0236,0307,0236,0125,0304,0254,0007,0137,0112,0020,0161,0106,0332,0165,0316,0152, +0152,0032,0115,0250,0040,0350,0231,0215,0366,0102,0174,0041,0042,0044,0067,0341, +0273,0025,0306,0352,0034,0164,0174,0351,0201,0345,0066,0212,0272,0062,0014,0075, +0227,0214,0253,0005,0056,0025,0322,0161,0002,0224,0325,0310,0234,0332,0004,0064, +0150,0110,0143,0313,0061,0003,0237,0144,0331,0146,0142,0346,0244,0333,0161,0345, +0173,0144,0003,0037,0101,0216,0022,0040,0226,0046,0304,0377,0001,0327,0315,0323, +0307,0213,0126,0164,0043,0106,0015,0233,0357,0227,0052,0201,0235,0047,0156,0043, +0304,0254,0000,0363,0143,0355,0174,0234,0220,0364,0066,0236,0006,0152,0015,0203, +0142,0074,0262,0033,0045,0043,0264,0042,0335,0345,0342,0341,0323,0065,0345,0100, +0216,0220,0333,0016,0233,0163,0167,0147,0072,0263,0304,0306,0232,0101,0166,0264, +0207,0150,0361,0321,0222,0122,0023,0312,0367,0111,0214,0237,0147,0227,0031,0347, +0075,0303,0210,0001,0073,0170,0264,0316,0005,0050,0175,0220,0150,0225,0022,0107, +0122,0237,0172,0104,0233,0110,0164,0350,0013,0007,0126,0236,0265,0363,0221,0132, +0331,0234,0221,0163,0254,0136,0302,0173,0275,0064,0123,0073,0124,0060,0247,0003, +0276,0227,0265,0136,0321,0023,0331,0015,0365,0262,0346,0141,0346,0012,0052,0005, +0203,0220,0216,0362,0031,0116,0327,0041,0137,0130,0217,0064,0227,0277,0221,0057, +0165,0150,0035,0364,0372,0067,0350,0056,0057,0263,0041,0205,0332,0311,0206,0214, +0131,0120,0274,0221,0103,0045,0364,0341,0100,0040,0003,0014,0004,0202,0014,0146, +0326,0001,0304,0220,0215,0222,0216,0303,0073,0341,0263,0056,0372,0031,0261,0324, +0020,0112,0041,0306,0264,0134,0123,0122,0316,0354,0054,0065,0006,0334,0146,0242, +0310,0223,0317,0210,0366,0025,0027,0354,0010,0041,0352,0210,0174,0121,0104,0014, +0235,0330,0160,0325,0066,0333,0071,0242,0025,0152,0322,0057,0165,0004,0124,0251, +0020,0330,0064,0133,0170,0303,0240,0213,0064,0263,0027,0104,0145,0247,0253,0111, +0230,0103,0010,0050,0067,0103,0275,0124,0302,0106,0123,0104,0042,0022,0104,0357, +0333,0247,0301,0111,0005,0305,0365,0236,0376,0257,0243,0174,0013,0076,0107,0311, +0222,0106,0116,0266,0233,0157,0030,0120,0256,0330,0235,0251,0147,0062,0023,0341, +0142,0323,0263,0000,0350,0255,0271,0330,0225,0022,0131,0157,0331,0152,0044,0365, +0277,0241,0243,0274,0144,0035,0361,0172,0352,0355,0255,0254,0351,0100,0335,0153, +0050,0365,0266,0316,0370,0210,0110,0027,0074,0337,0220,0061,0345,0101,0367,0304, +0353,0363,0122,0100,0263,0215,0132,0345,0170,0350,0331,0334,0017,0003,0104,0064, +0156,0152,0307,0120,0245,0264,0305,0064,0356,0341,0016,0147,0230,0313,0246,0000, +0153,0025,0106,0060,0302,0110,0271,0012,0351,0227,0143,0201,0104,0175,0037,0167, +0300,0056,0353,0325,0244,0306,0215,0347,0030,0323,0234,0356,0351,0320,0342,0111, +0050,0042,0221,0050,0257,0047,0120,0066,0063,0335,0237,0103,0073,0350,0131,0217, +0051,0337,0260,0163,0240,0350,0044,0344,0313,0132,0274,0010,0230,0113,0270,0103, +0144,0026,0227,0022,0261,0001,0135,0301,0117,0030,0272,0054,0315,0030,0304,0321, +0253,0005,0231,0157,0267,0047,0214,0352,0221,0060,0170,0153,0274,0146,0163,0244, +0030,0152,0346,0301,0020,0341,0241,0025,0202,0112,0111,0352,0143,0150,0015,0034, +0066,0114,0006,0276,0111,0077,0257,0343,0366,0067,0104,0102,0003,0301,0003,0217, +0011,0155,0311,0047,0246,0161,0371,0301,0037,0144,0103,0302,0200,0237,0120,0220, +0151,0257,0263,0010,0367,0356,0211,0052,0261,0365,0026,0263,0270,0107,0036,0156, +0265,0232,0102,0216,0071,0332,0261,0216,0127,0310,0024,0113,0042,0027,0113,0311, +0232,0027,0264,0102,0312,0131,0363,0266,0364,0101,0050,0345,0103,0032,0202,0050, +0350,0365,0062,0015,0044,0121,0347,0316,0046,0322,0255,0050,0113,0013,0311,0227, +0027,0272,0316,0157,0142,0043,0213,0265,0157,0105,0300,0141,0047,0235,0145,0070, +0240,0054,0354,0325,0244,0226,0245,0051,0066,0342,0264,0355,0042,0346,0345,0315, +0057,0212,0120,0044,0346,0002,0020,0232,0065,0150,0065,0041,0063,0066,0055,0230, +0154,0304,0020,0202,0265,0104,0002,0345,0020,0356,0246,0150,0060,0277,0105,0266, +0260,0042,0221,0226,0147,0121,0230,0153,0300,0111,0261,0011,0216,0132,0105,0363, +0164,0005,0105,0135,0232,0320,0006,0340,0372,0041,0355,0041,0170,0324,0206,0304, +0347,0066,0036,0241,0264,0173,0260,0375,0342,0117,0106,0300,0060,0066,0236,0010, +0251,0027,0266,0220,0153,0304,0335,0207,0310,0200,0361,0372,0134,0357,0270,0037, +0273,0164,0264,0006,0135,0064,0356,0324,0050,0153,0047,0315,0240,0204,0020,0324, +0020,0352,0373,0310,0261,0174,0077,0220,0207,0206,0056,0155,0217,0264,0027,0325, +0204,0121,0253,0033,0332,0321,0040,0111,0216,0317,0321,0011,0225,0341,0231,0314, +0301,0057,0150,0040,0063,0027,0100,0010,0117,0214,0266,0306,0302,0312,0141,0151, +0251,0265,0021,0347,0011,0204,0143,0220,0371,0025,0066,0004,0336,0023,0332,0223, +0202,0136,0360,0141,0005,0035,0240,0101,0235,0361,0174,0104,0321,0270,0315,0220, +0275,0355,0003,0053,0025,0206,0116,0342,0234,0030,0304,0103,0251,0021,0012,0204, +0371,0207,0367,0033,0277,0341,0354,0024,0127,0053,0256,0154,0222,0326,0174,0201, +0056,0232,0315,0151,0371,0114,0032,0253,0044,0073,0351,0253,0176,0357,0312,0117, +0246,0057,0170,0111,0034,0030,0025,0255,0245,0046,0151,0262,0211,0005,0372,0070, +0144,0216,0027,0102,0120,0160,0377,0032,0026,0134,0334,0066,0274,0175,0236,0171, +0371,0300,0215,0120,0213,0140,0147,0326,0001,0044,0012,0142,0073,0162,0026,0211, +0326,0260,0302,0006,0012,0162,0040,0205,0336,0072,0132,0107,0265,0262,0331,0240, +0362,0266,0066,0324,0220,0257,0254,0122,0330,0130,0067,0042,0034,0251,0161,0303, +0241,0000,0103,0373,0055,0210,0173,0134,0131,0234,0337,0047,0050,0133,0241,0140, +0305,0005,0151,0111,0065,0151,0126,0041,0007,0146,0011,0275,0156,0314,0224,0111, +0026,0140,0153,0313,0221,0056,0203,0303,0032,0346,0373,0301,0251,0227,0221,0151, +0011,0135,0071,0060,0333,0156,0064,0170,0150,0054,0324,0102,0202,0236,0224,0306, +0205,0074,0305,0007,0054,0204,0157,0365,0023,0131,0266,0235,0142,0112,0143,0210, +0272,0054,0350,0124,0341,0313,0110,0220,0130,0001,0150,0034,0123,0232,0006,0126, +0070,0007,0334,0250,0053,0220,0264,0350,0252,0121,0332,0103,0304,0273,0225,0256, +0125,0364,0365,0130,0262,0115,0027,0120,0103,0000,0322,0064,0313,0216,0257,0047, +0306,0151,0271,0356,0242,0171,0020,0332,0126,0324,0022,0025,0020,0226,0107,0236, +0261,0003,0275,0160,0063,0131,0223,0247,0371,0063,0002,0072,0010,0357,0314,0205, +0242,0364,0313,0222,0111,0303,0161,0103,0001,0303,0061,0331,0166,0234,0355,0225, +0172,0042,0350,0116,0104,0062,0210,0160,0010,0055,0045,0030,0133,0104,0071,0025, +0116,0340,0230,0305,0235,0214,0134,0334,0320,0027,0142,0244,0334,0205,0151,0160, +0376,0016,0046,0001,0204,0011,0307,0115,0326,0321,0251,0022,0102,0020,0300,0130, +0341,0121,0105,0347,0226,0216,0323,0024,0126,0352,0173,0176,0350,0351,0223,0067, +0253,0372,0043,0257,0255,0373,0226,0073,0250,0252,0237,0212,0016,0045,0210,0212, +0176,0204,0313,0021,0142,0110,0231,0154,0074,0266,0122,0045,0213,0100,0354,0202, +0235,0236,0172,0335,0371,0312,0330,0321,0336,0023,0226,0004,0231,0114,0203,0302, +0372,0106,0357,0016,0021,0107,0303,0240,0170,0115,0147,0336,0303,0342,0104,0000, +0017,0142,0215,0132,0235,0243,0156,0214,0120,0211,0341,0376,0174,0052,0232,0271, +0050,0155,0075,0272,0026,0353,0305,0200,0306,0057,0324,0017,0012,0327,0115,0255, +0141,0254,0107,0256,0226,0141,0002,0001,0045,0020,0111,0000,0311,0045,0343,0155, +0210,0011,0015,0314,0060,0051,0016,0025,0101,0325,0013,0357,0014,0131,0064,0022, +0114,0156,0350,0204,0353,0301,0367,0346,0061,0214,0207,0242,0336,0257,0175,0244, +0232,0110,0121,0347,0160,0356,0115,0060,0050,0065,0325,0155,0126,0212,0232,0315, +0244,0011,0140,0330,0104,0260,0001,0064,0036,0366,0131,0023,0233,0205,0024,0101, +0004,0070,0033,0103,0247,0015,0212,0361,0010,0151,0211,0266,0015,0205,0252,0266, +0266,0365,0165,0206,0250,0143,0030,0106,0134,0215,0245,0030,0215,0011,0141,0054, +0356,0341,0142,0242,0010,0305,0143,0327,0325,0172,0172,0134,0021,0340,0166,0174, +0315,0307,0213,0113,0000,0104,0337,0213,0212,0216,0344,0155,0156,0116,0004,0057, +0144,0026,0273,0240,0136,0171,0054,0040,0163,0166,0271,0303,0134,0345,0045,0172, +0323,0265,0031,0320,0327,0202,0262,0275,0260,0122,0020,0261,0201,0000,0065,0225, +0110,0305,0047,0004,0231,0324,0252,0212,0271,0210,0352,0140,0334,0202,0300,0203, +0224,0247,0205,0150,0105,0230,0236,0356,0054,0350,0301,0041,0174,0040,0340,0020, +0300,0301,0012,0022,0335,0053,0040,0210,0142,0073,0231,0230,0106,0234,0246,0064, +0011,0167,0154,0220,0205,0273,0273,0063,0215,0122,0116,0163,0071,0126,0350,0000, +0025,0060,0205,0272,0111,0373,0117,0015,0056,0040,0267,0262,0005,0036,0322,0262, +0244,0071,0040,0267,0045,0205,0030,0061,0301,0027,0164,0016,0020,0123,0123,0017, +0016,0125,0101,0262,0161,0002,0213,0260,0224,0076,0075,0321,0225,0334,0132,0242, +0006,0010,0273,0371,0172,0075,0045,0050,0274,0027,0171,0336,0275,0003,0006,0345, +0002,0060,0212,0144,0155,0154,0314,0223,0062,0223,0027,0110,0261,0044,0030,0043, +0271,0243,0150,0160,0045,0206,0275,0220,0241,0334,0243,0265,0056,0166,0346,0065, +0071,0042,0344,0023,0011,0007,0055,0104,0274,0077,0335,0040,0165,0015,0074,0367, +0332,0244,0246,0114,0020,0055,0076,0334,0062,0176,0044,0161,0262,0073,0175,0352, +0150,0320,0043,0147,0010,0351,0311,0271,0325,0004,0164,0221,0235,0150,0010,0120, +0357,0276,0175,0353,0063,0172,0331,0242,0033,0010,0333,0332,0106,0130,0344,0335, +0063,0001,0302,0346,0357,0077,0063,0045,0331,0045,0304,0214,0253,0304,0216,0264, +0235,0230,0022,0101,0224,0310,0017,0150,0153,0305,0133,0244,0201,0244,0164,0347, +0326,0371,0265,0360,0334,0216,0002,0220,0354,0105,0014,0073,0036,0220,0073,0044, +0232,0357,0264,0207,0014,0110,0214,0046,0114,0110,0060,0121,0271,0010,0215,0213, +0062,0322,0316,0220,0271,0220,0347,0156,0332,0252,0266,0120,0014,0307,0133,0350, +0115,0030,0143,0217,0127,0167,0102,0051,0210,0041,0005,0024,0101,0023,0130,0003, +0263,0241,0030,0140,0040,0045,0242,0342,0252,0032,0361,0143,0002,0310,0006,0061, +0060,0232,0307,0303,0337,0342,0036,0357,0147,0317,0363,0372,0377,0143,0035,0125, +0325,0126,0372,0016,0234,0175,0142,0373,0051,0373,0206,0177,0154,0010,0040,0200, +0066,0273,0201,0221,0370,0335,0176,0101,0322,0010,0041,0001,0337,0355,0143,0115, +0243,0076,0154,0177,0335,0155,0221,0010,0100,0107,0276,0063,0342,0075,0176,0326, +0020,0204,0004,0137,0303,0071,0065,0071,0375,0152,0357,0137,0337,0344,0102,0020, +0034,0127,0352,0155,0320,0204,0040,0067,0375,0261,0127,0020,0204,0006,0242,0020, +0200,0323,0347,0043,0373,0167,0137,0236,0232,0176,0242,0100,0203,0037,0376,0056, +0344,0212,0160,0241,0041,0331,0247,0112,0162, }; #endif diff --git a/include-minimal/usage_compressed.h b/include-minimal/usage_compressed.h index 6a8d417..c800a2d 100644 --- a/include-minimal/usage_compressed.h +++ b/include-minimal/usage_compressed.h @@ -1,2993 +1,2948 @@ #define UNPACKED_USAGE "" \ -"\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x5d\x0a\x0a\x43\x68" \ -"\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x74\x79\x70\x65\x73\x2c\x20" \ -"\x63\x6f\x6d\x70\x61\x72\x65\x20\x76\x61\x6c\x75\x65\x73\x20\x65" \ -"\x74\x63\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x61\x20\x30\x2f\x31" \ -"\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x0a\x64\x65\x70\x65\x6e" \ -"\x64\x69\x6e\x67\x20\x6f\x6e\x20\x6c\x6f\x67\x69\x63\x61\x6c\x20" \ -"\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50\x52\x45\x53\x53" \ -"\x49\x4f\x4e\x00\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x5d" \ -"\x0a\x0a\x43\x68\x65\x63\x6b\x20\x66\x69\x6c\x65\x20\x74\x79\x70" \ -"\x65\x73\x2c\x20\x63\x6f\x6d\x70\x61\x72\x65\x20\x76\x61\x6c\x75" \ -"\x65\x73\x20\x65\x74\x63\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x61" \ -"\x20\x30\x2f\x31\x20\x65\x78\x69\x74\x20\x63\x6f\x64\x65\x0a\x64" \ -"\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e\x20\x6c\x6f\x67\x69" \ -"\x63\x61\x6c\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x45\x58\x50" \ -"\x52\x45\x53\x53\x49\x4f\x4e\x00\x5b\x2d\x2f\x2b\x4f\x50\x54\x49" \ -"\x4f\x4e\x53\x5d\x20\x5b\x2d\x2f\x2b\x6f\x20\x4f\x50\x54\x5d\x2e" \ -"\x2e\x2e\x20\x5b\x2d\x63\x20\x27\x53\x43\x52\x49\x50\x54\x27\x20" \ -"\x5b\x41\x52\x47\x30\x20\x5b\x41\x52\x47\x53\x5d\x5d\x20\x2f\x20" \ -"\x46\x49\x4c\x45\x20\x5b\x41\x52\x47\x53\x5d\x5d\x0a\x0a\x55\x6e" \ -"\x69\x78\x20\x73\x68\x65\x6c\x6c\x20\x69\x6e\x74\x65\x72\x70\x72" \ -"\x65\x74\x65\x72\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b" \ -"\x41\x57\x4b\x5f\x50\x52\x4f\x47\x52\x41\x4d\x5d\x20\x5b\x46\x49" \ -"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x76\x20\x56\x41\x52\x3d" \ -"\x56\x41\x4c\x09\x53\x65\x74\x20\x76\x61\x72\x69\x61\x62\x6c\x65" \ -"\x0a\x09\x2d\x46\x20\x53\x45\x50\x09\x09\x55\x73\x65\x20\x53\x45" \ -"\x50\x20\x61\x73\x20\x66\x69\x65\x6c\x64\x20\x73\x65\x70\x61\x72" \ -"\x61\x74\x6f\x72\x0a\x09\x2d\x66\x20\x46\x49\x4c\x45\x09\x09\x52" \ -"\x65\x61\x64\x20\x70\x72\x6f\x67\x72\x61\x6d\x20\x66\x72\x6f\x6d" \ -"\x20\x46\x49\x4c\x45\x00\x5b\x2d\x64\x5d\x20\x5b\x46\x49\x4c\x45" \ -"\x5d\x0a\x0a\x42\x61\x73\x65\x36\x34\x20\x65\x6e\x63\x6f\x64\x65" \ -"\x20\x6f\x72\x20\x64\x65\x63\x6f\x64\x65\x20\x46\x49\x4c\x45\x20" \ -"\x74\x6f\x20\x73\x74\x61\x6e\x64\x61\x72\x64\x20\x6f\x75\x74\x70" \ -"\x75\x74\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x64\x65\x20\x64\x61" \ -"\x74\x61\x00\x46\x49\x4c\x45\x20\x5b\x53\x55\x46\x46\x49\x58\x5d" \ -"\x0a\x0a\x53\x74\x72\x69\x70\x20\x64\x69\x72\x65\x63\x74\x6f\x72" \ -"\x79\x20\x70\x61\x74\x68\x20\x61\x6e\x64\x20\x2e\x53\x55\x46\x46" \ -"\x49\x58\x20\x66\x72\x6f\x6d\x20\x46\x49\x4c\x45\x0a\x00\x0a\x0a" \ -"\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x63\x6f\x6e\x66\x69\x67" \ -"\x20\x66\x69\x6c\x65\x20\x75\x73\x65\x64\x20\x62\x79\x20\x62\x75" \ -"\x73\x79\x62\x6f\x78\x20\x62\x75\x69\x6c\x64\x00\x5b\x42\x4c\x4f" \ -"\x43\x4b\x44\x45\x56\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74" \ -"\x20\x55\x55\x49\x44\x73\x20\x6f\x66\x20\x61\x6c\x6c\x20\x66\x69" \ -"\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x00\x4f\x50\x54\x49\x4f\x4e" \ -"\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x0a\x0a\x09\x2d\x2d\x73\x65" \ -"\x74\x72\x6f\x09\x09\x53\x65\x74\x20\x72\x6f\x0a\x09\x2d\x2d\x73" \ -"\x65\x74\x72\x77\x09\x09\x53\x65\x74\x20\x72\x77\x0a\x09\x2d\x2d" \ -"\x67\x65\x74\x72\x6f\x09\x09\x47\x65\x74\x20\x72\x6f\x0a\x09\x2d" \ -"\x2d\x67\x65\x74\x73\x73\x09\x09\x47\x65\x74\x20\x73\x65\x63\x74" \ -"\x6f\x72\x20\x73\x69\x7a\x65\x0a\x09\x2d\x2d\x67\x65\x74\x62\x73" \ -"\x7a\x09\x47\x65\x74\x20\x62\x6c\x6f\x63\x6b\x20\x73\x69\x7a\x65" \ -"\x0a\x09\x2d\x2d\x73\x65\x74\x62\x73\x7a\x20\x42\x59\x54\x45\x53" \ -"\x09\x53\x65\x74\x20\x62\x6c\x6f\x63\x6b\x20\x73\x69\x7a\x65\x0a" \ -"\x09\x2d\x2d\x67\x65\x74\x73\x7a\x09\x09\x47\x65\x74\x20\x64\x65" \ -"\x76\x69\x63\x65\x20\x73\x69\x7a\x65\x20\x69\x6e\x20\x35\x31\x32" \ -"\x2d\x62\x79\x74\x65\x20\x73\x65\x63\x74\x6f\x72\x73\x0a\x09\x2d" \ -"\x2d\x67\x65\x74\x73\x69\x7a\x65\x36\x34\x09\x47\x65\x74\x20\x64" \ -"\x65\x76\x69\x63\x65\x20\x73\x69\x7a\x65\x20\x69\x6e\x20\x62\x79" \ -"\x74\x65\x73\x0a\x09\x2d\x2d\x66\x6c\x75\x73\x68\x62\x75\x66\x73" \ -"\x09\x46\x6c\x75\x73\x68\x20\x62\x75\x66\x66\x65\x72\x73\x0a\x09" \ -"\x2d\x2d\x72\x65\x72\x65\x61\x64\x70\x74\x09\x52\x65\x72\x65\x61" \ -"\x64\x20\x70\x61\x72\x74\x69\x74\x69\x6f\x6e\x20\x74\x61\x62\x6c" \ -"\x65\x00\x5b\x2d\x63\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49" \ -"\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a" \ -"\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64" \ -"\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x00\x46\x49" \ -"\x4c\x45\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x74" \ -"\x6f\x20\x73\x74\x64\x6f\x75\x74\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \ -"\x53\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f" \ -"\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72" \ -"\x20\x73\x74\x64\x69\x6e\x29\x20\x77\x69\x74\x68\x20\x62\x7a\x69" \ -"\x70\x32\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d\x0a\x0a\x09\x2d" \ -"\x31\x2e\x2e\x39\x09\x43\x6f\x6d\x70\x72\x65\x73\x73\x69\x6f\x6e" \ -"\x20\x6c\x65\x76\x65\x6c\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d" \ -"\x70\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20" \ -"\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f" \ -"\x72\x63\x65\x00\x5b\x2d\x6a\x79\x5d\x20\x5b\x5b\x4d\x4f\x4e\x54" \ -"\x48\x5d\x20\x59\x45\x41\x52\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61" \ -"\x79\x20\x61\x20\x63\x61\x6c\x65\x6e\x64\x61\x72\x0a\x0a\x09\x2d" \ -"\x6a\x09\x55\x73\x65\x20\x6a\x75\x6c\x69\x61\x6e\x20\x64\x61\x74" \ -"\x65\x73\x0a\x09\x2d\x79\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x74" \ -"\x68\x65\x20\x65\x6e\x74\x69\x72\x65\x20\x79\x65\x61\x72\x00\x5b" \ -"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6e\x63\x61\x74" \ -"\x65\x6e\x61\x74\x65\x20\x46\x49\x4c\x45\x73\x20\x61\x6e\x64\x20" \ -"\x70\x72\x69\x6e\x74\x20\x74\x68\x65\x6d\x20\x74\x6f\x20\x73\x74" \ -"\x64\x6f\x75\x74\x00\x5b\x2d\x65\x74\x76\x5d\x20\x5b\x46\x49\x4c" \ -"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x6e" \ -"\x6f\x6e\x70\x72\x69\x6e\x74\x69\x6e\x67\x20\x63\x68\x61\x72\x61" \ -"\x63\x74\x65\x72\x73\x20\x61\x73\x20\x5e\x78\x20\x6f\x72\x20\x4d" \ -"\x2d\x78\x0a\x0a\x09\x2d\x65\x09\x45\x6e\x64\x20\x65\x61\x63\x68" \ -"\x20\x6c\x69\x6e\x65\x20\x77\x69\x74\x68\x20\x24\x0a\x09\x2d\x74" \ -"\x09\x53\x68\x6f\x77\x20\x74\x61\x62\x73\x20\x61\x73\x20\x5e\x49" \ -"\x0a\x09\x2d\x76\x09\x44\x6f\x6e\x27\x74\x20\x75\x73\x65\x20\x5e" \ -"\x78\x20\x6f\x72\x20\x4d\x2d\x78\x20\x65\x73\x63\x61\x70\x65\x73" \ -"\x00\x5b\x2d\x52\x5d\x20\x5b\x2d\x2b\x3d\x41\x61\x63\x44\x64\x69" \ -"\x6a\x73\x53\x74\x54\x75\x5d\x20\x5b\x2d\x76\x20\x56\x45\x52\x53" \ -"\x49\x4f\x4e\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x43\x68\x61\x6e\x67\x65\x20\x66\x69\x6c\x65\x20\x61\x74\x74\x72" \ -"\x69\x62\x75\x74\x65\x73\x20\x6f\x6e\x20\x61\x6e\x20\x65\x78\x74" \ -"\x32\x20\x66\x73\x0a\x0a\x4d\x6f\x64\x69\x66\x69\x65\x72\x73\x3a" \ -"\x0a\x09\x2d\x09\x52\x65\x6d\x6f\x76\x65\x20\x61\x74\x74\x72\x69" \ -"\x62\x75\x74\x65\x73\x0a\x09\x2b\x09\x41\x64\x64\x20\x61\x74\x74" \ -"\x72\x69\x62\x75\x74\x65\x73\x0a\x09\x3d\x09\x53\x65\x74\x20\x61" \ -"\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a\x41\x74\x74\x72\x69\x62" \ -"\x75\x74\x65\x73\x3a\x0a\x09\x41\x09\x44\x6f\x6e\x27\x74\x20\x74" \ -"\x72\x61\x63\x6b\x20\x61\x74\x69\x6d\x65\x0a\x09\x61\x09\x41\x70" \ -"\x70\x65\x6e\x64\x20\x6d\x6f\x64\x65\x20\x6f\x6e\x6c\x79\x0a\x09" \ -"\x63\x09\x45\x6e\x61\x62\x6c\x65\x20\x63\x6f\x6d\x70\x72\x65\x73" \ -"\x73\x0a\x09\x44\x09\x57\x72\x69\x74\x65\x20\x64\x69\x72\x20\x63" \ -"\x6f\x6e\x74\x65\x6e\x74\x73\x20\x73\x79\x6e\x63\x68\x72\x6f\x6e" \ -"\x6f\x75\x73\x6c\x79\x0a\x09\x64\x09\x44\x6f\x6e\x27\x74\x20\x62" \ -"\x61\x63\x6b\x75\x70\x20\x77\x69\x74\x68\x20\x64\x75\x6d\x70\x0a" \ -"\x09\x69\x09\x43\x61\x6e\x6e\x6f\x74\x20\x62\x65\x20\x6d\x6f\x64" \ -"\x69\x66\x69\x65\x64\x20\x28\x69\x6d\x6d\x75\x74\x61\x62\x6c\x65" \ -"\x29\x0a\x09\x6a\x09\x57\x72\x69\x74\x65\x20\x61\x6c\x6c\x20\x64" \ -"\x61\x74\x61\x20\x74\x6f\x20\x6a\x6f\x75\x72\x6e\x61\x6c\x20\x66" \ -"\x69\x72\x73\x74\x0a\x09\x73\x09\x5a\x65\x72\x6f\x20\x64\x69\x73" \ -"\x6b\x20\x73\x74\x6f\x72\x61\x67\x65\x20\x77\x68\x65\x6e\x20\x64" \ -"\x65\x6c\x65\x74\x65\x64\x0a\x09\x53\x09\x57\x72\x69\x74\x65\x20" \ -"\x66\x69\x6c\x65\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x73\x79" \ -"\x6e\x63\x68\x72\x6f\x6e\x6f\x75\x73\x6c\x79\x0a\x09\x74\x09\x44" \ -"\x69\x73\x61\x62\x6c\x65\x20\x74\x61\x69\x6c\x2d\x6d\x65\x72\x67" \ -"\x69\x6e\x67\x20\x6f\x66\x20\x70\x61\x72\x74\x69\x61\x6c\x20\x62" \ -"\x6c\x6f\x63\x6b\x73\x20\x77\x69\x74\x68\x20\x6f\x74\x68\x65\x72" \ -"\x20\x66\x69\x6c\x65\x73\x0a\x09\x75\x09\x41\x6c\x6c\x6f\x77\x20" \ -"\x66\x69\x6c\x65\x20\x74\x6f\x20\x62\x65\x20\x75\x6e\x64\x65\x6c" \ -"\x65\x74\x65\x64\x0a\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65" \ -"\x0a\x09\x2d\x76\x09\x53\x65\x74\x20\x74\x68\x65\x20\x66\x69\x6c" \ -"\x65\x27\x73\x20\x76\x65\x72\x73\x69\x6f\x6e\x2f\x67\x65\x6e\x65" \ -"\x72\x61\x74\x69\x6f\x6e\x20\x6e\x75\x6d\x62\x65\x72\x00\x5b\x2d" \ -"\x52\x68\x4c\x48\x50\x5d\x2e\x2e\x2e\x20\x47\x52\x4f\x55\x50\x20" \ -"\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20" \ -"\x74\x68\x65\x20\x67\x72\x6f\x75\x70\x20\x6d\x65\x6d\x62\x65\x72" \ -"\x73\x68\x69\x70\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x46\x49\x4c" \ -"\x45\x20\x74\x6f\x20\x47\x52\x4f\x55\x50\x0a\x0a\x09\x2d\x52\x09" \ -"\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x68\x09\x41\x66\x66\x65" \ -"\x63\x74\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69\x6e\x73\x74" \ -"\x65\x61\x64\x20\x6f\x66\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x20\x74" \ -"\x61\x72\x67\x65\x74\x73\x0a\x09\x2d\x4c\x09\x54\x72\x61\x76\x65" \ -"\x72\x73\x65\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73" \ -"\x20\x74\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a" \ -"\x09\x2d\x48\x09\x54\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79\x6d" \ -"\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64" \ -"\x20\x6c\x69\x6e\x65\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x50\x09\x44" \ -"\x6f\x6e\x27\x74\x20\x74\x72\x61\x76\x65\x72\x73\x65\x20\x73\x79" \ -"\x6d\x6c\x69\x6e\x6b\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29" \ -"\x00\x5b\x2d\x52\x5d\x20\x4d\x4f\x44\x45\x5b\x2c\x4d\x4f\x44\x45" \ -"\x5d\x2e\x2e\x2e\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x45\x61" \ -"\x63\x68\x20\x4d\x4f\x44\x45\x20\x69\x73\x20\x6f\x6e\x65\x20\x6f" \ -"\x72\x20\x6d\x6f\x72\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6c\x65" \ -"\x74\x74\x65\x72\x73\x20\x75\x67\x6f\x61\x2c\x20\x6f\x6e\x65\x20" \ -"\x6f\x66\x20\x74\x68\x65\x0a\x73\x79\x6d\x62\x6f\x6c\x73\x20\x2b" \ -"\x2d\x3d\x20\x61\x6e\x64\x20\x6f\x6e\x65\x20\x6f\x72\x20\x6d\x6f" \ -"\x72\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x6c\x65\x74\x74\x65\x72" \ -"\x73\x20\x72\x77\x78\x73\x74\x0a\x0a\x09\x2d\x52\x09\x52\x65\x63" \ -"\x75\x72\x73\x65\x00\x5b\x2d\x52\x68\x4c\x48\x50\x5d\x2e\x2e\x2e" \ -"\x20\x4f\x57\x4e\x45\x52\x5b\x3c\x2e\x7c\x3a\x3e\x5b\x47\x52\x4f" \ -"\x55\x50\x5d\x5d\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x43\x68" \ -"\x61\x6e\x67\x65\x20\x74\x68\x65\x20\x6f\x77\x6e\x65\x72\x20\x61" \ -"\x6e\x64\x2f\x6f\x72\x20\x67\x72\x6f\x75\x70\x20\x6f\x66\x20\x65" \ -"\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x74\x6f\x20\x4f\x57\x4e\x45" \ -"\x52\x20\x61\x6e\x64\x2f\x6f\x72\x20\x47\x52\x4f\x55\x50\x0a\x0a" \ -"\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x68\x09" \ -"\x41\x66\x66\x65\x63\x74\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20" \ -"\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x79\x6d\x6c\x69" \ -"\x6e\x6b\x20\x74\x61\x72\x67\x65\x74\x73\x0a\x09\x2d\x4c\x09\x54" \ -"\x72\x61\x76\x65\x72\x73\x65\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c" \ -"\x69\x6e\x6b\x73\x20\x74\x6f\x20\x64\x69\x72\x65\x63\x74\x6f\x72" \ -"\x69\x65\x73\x0a\x09\x2d\x48\x09\x54\x72\x61\x76\x65\x72\x73\x65" \ -"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d" \ -"\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x6f\x6e\x6c\x79\x0a\x09" \ -"\x2d\x50\x09\x44\x6f\x6e\x27\x74\x20\x74\x72\x61\x76\x65\x72\x73" \ -"\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x28\x64\x65\x66\x61" \ -"\x75\x6c\x74\x29\x00\x4e\x45\x57\x52\x4f\x4f\x54\x20\x5b\x50\x52" \ -"\x4f\x47\x20\x41\x52\x47\x53\x5d\x0a\x0a\x52\x75\x6e\x20\x50\x52" \ -"\x4f\x47\x20\x77\x69\x74\x68\x20\x72\x6f\x6f\x74\x20\x64\x69\x72" \ -"\x65\x63\x74\x6f\x72\x79\x20\x73\x65\x74\x20\x74\x6f\x20\x4e\x45" \ -"\x57\x52\x4f\x4f\x54\x00\x0a\x0a\x43\x6c\x65\x61\x72\x20\x73\x63" \ -"\x72\x65\x65\x6e\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x73\x5d\x20\x46" \ -"\x49\x4c\x45\x31\x20\x5b\x46\x49\x4c\x45\x32\x5d\x0a\x0a\x43\x6f" \ -"\x6d\x70\x61\x72\x65\x20\x46\x49\x4c\x45\x31\x20\x77\x69\x74\x68" \ -"\x20\x46\x49\x4c\x45\x32\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e" \ -"\x29\x0a\x0a\x09\x2d\x6c\x09\x57\x72\x69\x74\x65\x20\x74\x68\x65" \ -"\x20\x62\x79\x74\x65\x20\x6e\x75\x6d\x62\x65\x72\x73\x20\x28\x64" \ -"\x65\x63\x69\x6d\x61\x6c\x29\x20\x61\x6e\x64\x20\x76\x61\x6c\x75" \ -"\x65\x73\x20\x28\x6f\x63\x74\x61\x6c\x29\x0a\x09\x09\x66\x6f\x72" \ -"\x20\x61\x6c\x6c\x20\x64\x69\x66\x66\x65\x72\x69\x6e\x67\x20\x62" \ -"\x79\x74\x65\x73\x0a\x09\x2d\x73\x09\x51\x75\x69\x65\x74\x00\x5b" \ -"\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x53\x4f\x55\x52\x43\x45\x2e" \ -"\x2e\x2e\x20\x44\x45\x53\x54\x0a\x0a\x43\x6f\x70\x79\x20\x53\x4f" \ -"\x55\x52\x43\x45\x28\x73\x29\x20\x74\x6f\x20\x44\x45\x53\x54\x0a" \ -"\x0a\x09\x2d\x61\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x2d\x64\x70" \ -"\x52\x0a\x09\x2d\x52\x2c\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65" \ -"\x0a\x09\x2d\x64\x2c\x2d\x50\x09\x50\x72\x65\x73\x65\x72\x76\x65" \ -"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x28\x64\x65\x66\x61\x75" \ -"\x6c\x74\x20\x69\x66\x20\x2d\x52\x29\x0a\x09\x2d\x4c\x09\x46\x6f" \ -"\x6c\x6c\x6f\x77\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b" \ -"\x73\x0a\x09\x2d\x48\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d" \ -"\x6c\x69\x6e\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64" \ -"\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x70\x09\x50\x72\x65\x73\x65\x72" \ -"\x76\x65\x20\x66\x69\x6c\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74" \ -"\x65\x73\x20\x69\x66\x20\x70\x6f\x73\x73\x69\x62\x6c\x65\x0a\x09" \ -"\x2d\x66\x09\x4f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x69" \ -"\x09\x50\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f\x72\x65\x20\x6f" \ -"\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x6c\x2c\x2d\x73\x09" \ -"\x43\x72\x65\x61\x74\x65\x20\x28\x73\x79\x6d\x29\x6c\x69\x6e\x6b" \ -"\x73\x00\x5b\x2d\x64\x6d\x76\x75\x5d\x20\x5b\x2d\x46\x20\x46\x49" \ -"\x4c\x45\x5d\x20\x5b\x2d\x48\x20\x6e\x65\x77\x63\x5d\x20\x5b\x2d" \ -"\x74\x69\x6f\x5d\x20\x5b\x45\x58\x54\x52\x5f\x46\x49\x4c\x45\x5d" \ -"\x2e\x2e\x2e\x0a\x0a\x45\x78\x74\x72\x61\x63\x74\x20\x6f\x72\x20" \ -"\x6c\x69\x73\x74\x20\x66\x69\x6c\x65\x73\x20\x66\x72\x6f\x6d\x20" \ -"\x61\x20\x63\x70\x69\x6f\x20\x61\x72\x63\x68\x69\x76\x65\x2c\x20" \ -"\x6f\x72\x0a\x63\x72\x65\x61\x74\x65\x20\x61\x6e\x20\x61\x72\x63" \ -"\x68\x69\x76\x65\x20\x75\x73\x69\x6e\x67\x20\x66\x69\x6c\x65\x20" \ -"\x6c\x69\x73\x74\x20\x6f\x6e\x20\x73\x74\x64\x69\x6e\x0a\x0a\x4d" \ -"\x61\x69\x6e\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x20\x6d\x6f" \ -"\x64\x65\x3a\x0a\x09\x2d\x74\x09\x4c\x69\x73\x74\x0a\x09\x2d\x69" \ -"\x09\x45\x78\x74\x72\x61\x63\x74\x20\x45\x58\x54\x52\x5f\x46\x49" \ -"\x4c\x45\x73\x20\x28\x6f\x72\x20\x61\x6c\x6c\x29\x0a\x09\x2d\x6f" \ -"\x09\x43\x72\x65\x61\x74\x65\x20\x28\x72\x65\x71\x75\x69\x72\x65" \ -"\x73\x20\x2d\x48\x20\x6e\x65\x77\x63\x29\x0a\x09\x2d\x64\x09\x4d" \ -"\x61\x6b\x65\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x64\x69\x72\x65" \ -"\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x6d\x09\x50\x72\x65\x73" \ -"\x65\x72\x76\x65\x20\x6d\x74\x69\x6d\x65\x0a\x09\x2d\x76\x09\x56" \ -"\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x75\x09\x4f\x76\x65\x72\x77" \ -"\x72\x69\x74\x65\x0a\x09\x2d\x46\x20\x46\x49\x4c\x45\x09\x49\x6e" \ -"\x70\x75\x74\x20\x28\x2d\x74\x2c\x2d\x69\x2c\x2d\x70\x29\x20\x6f" \ -"\x72\x20\x6f\x75\x74\x70\x75\x74\x20\x28\x2d\x6f\x29\x20\x66\x69" \ -"\x6c\x65\x0a\x09\x2d\x48\x20\x6e\x65\x77\x63\x09\x41\x72\x63\x68" \ -"\x69\x76\x65\x20\x66\x6f\x72\x6d\x61\x74\x00\x5b\x4f\x50\x54\x49" \ -"\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x50\x72\x69\x6e\x74\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x66" \ -"\x69\x65\x6c\x64\x73\x20\x66\x72\x6f\x6d\x20\x65\x61\x63\x68\x20" \ -"\x69\x6e\x70\x75\x74\x20\x46\x49\x4c\x45\x20\x74\x6f\x20\x73\x74" \ -"\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x62\x20\x4c\x49\x53\x54\x09\x4f" \ -"\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x62\x79\x74\x65\x73" \ -"\x20\x66\x72\x6f\x6d\x20\x4c\x49\x53\x54\x0a\x09\x2d\x63\x20\x4c" \ -"\x49\x53\x54\x09\x4f\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20" \ -"\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x66\x72\x6f\x6d\x20" \ -"\x4c\x49\x53\x54\x0a\x09\x2d\x64\x20\x43\x48\x41\x52\x09\x55\x73" \ -"\x65\x20\x43\x48\x41\x52\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f" \ -"\x66\x20\x74\x61\x62\x20\x61\x73\x20\x74\x68\x65\x20\x66\x69\x65" \ -"\x6c\x64\x20\x64\x65\x6c\x69\x6d\x69\x74\x65\x72\x0a\x09\x2d\x73" \ -"\x09\x4f\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x74\x68\x65" \ -"\x20\x6c\x69\x6e\x65\x73\x20\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e" \ -"\x67\x20\x64\x65\x6c\x69\x6d\x69\x74\x65\x72\x0a\x09\x2d\x66\x20" \ -"\x4e\x09\x50\x72\x69\x6e\x74\x20\x6f\x6e\x6c\x79\x20\x74\x68\x65" \ -"\x73\x65\x20\x66\x69\x65\x6c\x64\x73\x0a\x09\x2d\x6e\x09\x49\x67" \ -"\x6e\x6f\x72\x65\x64\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20" \ -"\x5b\x2b\x46\x4d\x54\x5d\x20\x5b\x54\x49\x4d\x45\x5d\x0a\x0a\x44" \ -"\x69\x73\x70\x6c\x61\x79\x20\x74\x69\x6d\x65\x20\x28\x75\x73\x69" \ -"\x6e\x67\x20\x2b\x46\x4d\x54\x29\x2c\x20\x6f\x72\x20\x73\x65\x74" \ -"\x20\x74\x69\x6d\x65\x0a\x0a\x09\x5b\x2d\x73\x2c\x2d\x2d\x73\x65" \ -"\x74\x5d\x20\x54\x49\x4d\x45\x09\x53\x65\x74\x20\x74\x69\x6d\x65" \ -"\x20\x74\x6f\x20\x54\x49\x4d\x45\x0a\x09\x2d\x75\x2c\x2d\x2d\x75" \ -"\x74\x63\x09\x57\x6f\x72\x6b\x20\x69\x6e\x20\x55\x54\x43\x20\x28" \ -"\x64\x6f\x6e\x27\x74\x20\x63\x6f\x6e\x76\x65\x72\x74\x20\x74\x6f" \ -"\x20\x6c\x6f\x63\x61\x6c\x20\x74\x69\x6d\x65\x29\x0a\x09\x2d\x52" \ -"\x2c\x2d\x2d\x72\x66\x63\x2d\x32\x38\x32\x32\x09\x4f\x75\x74\x70" \ -"\x75\x74\x20\x52\x46\x43\x2d\x32\x38\x32\x32\x20\x63\x6f\x6d\x70" \ -"\x6c\x69\x61\x6e\x74\x20\x64\x61\x74\x65\x20\x73\x74\x72\x69\x6e" \ -"\x67\x0a\x09\x2d\x49\x5b\x53\x50\x45\x43\x5d\x09\x4f\x75\x74\x70" \ -"\x75\x74\x20\x49\x53\x4f\x2d\x38\x36\x30\x31\x20\x63\x6f\x6d\x70" \ -"\x6c\x69\x61\x6e\x74\x20\x64\x61\x74\x65\x20\x73\x74\x72\x69\x6e" \ -"\x67\x0a\x09\x09\x09\x53\x50\x45\x43\x3d\x27\x64\x61\x74\x65\x27" \ -"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x20\x66\x6f\x72\x20\x64" \ -"\x61\x74\x65\x20\x6f\x6e\x6c\x79\x2c\x0a\x09\x09\x09\x27\x68\x6f" \ -"\x75\x72\x73\x27\x2c\x20\x27\x6d\x69\x6e\x75\x74\x65\x73\x27\x2c" \ -"\x20\x6f\x72\x20\x27\x73\x65\x63\x6f\x6e\x64\x73\x27\x20\x66\x6f" \ -"\x72\x20\x64\x61\x74\x65\x20\x61\x6e\x64\x0a\x09\x09\x09\x74\x69" \ -"\x6d\x65\x20\x74\x6f\x20\x74\x68\x65\x20\x69\x6e\x64\x69\x63\x61" \ -"\x74\x65\x64\x20\x70\x72\x65\x63\x69\x73\x69\x6f\x6e\x0a\x09\x2d" \ -"\x72\x2c\x2d\x2d\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x46\x49" \ -"\x4c\x45\x09\x44\x69\x73\x70\x6c\x61\x79\x20\x6c\x61\x73\x74\x20" \ -"\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x74\x69\x6d" \ -"\x65\x20\x6f\x66\x20\x46\x49\x4c\x45\x0a\x09\x2d\x64\x2c\x2d\x2d" \ -"\x64\x61\x74\x65\x20\x54\x49\x4d\x45\x09\x44\x69\x73\x70\x6c\x61" \ -"\x79\x20\x54\x49\x4d\x45\x2c\x20\x6e\x6f\x74\x20\x27\x6e\x6f\x77" \ -"\x27\x0a\x09\x2d\x44\x20\x46\x4d\x54\x09\x09\x55\x73\x65\x20\x46" \ -"\x4d\x54\x20\x66\x6f\x72\x20\x2d\x64\x20\x54\x49\x4d\x45\x20\x63" \ -"\x6f\x6e\x76\x65\x72\x73\x69\x6f\x6e\x0a\x0a\x52\x65\x63\x6f\x67" \ -"\x6e\x69\x7a\x65\x64\x20\x54\x49\x4d\x45\x20\x66\x6f\x72\x6d\x61" \ -"\x74\x73\x3a\x0a\x09\x68\x68\x3a\x6d\x6d\x5b\x3a\x73\x73\x5d\x0a" \ -"\x09\x5b\x59\x59\x59\x59\x2e\x5d\x4d\x4d\x2e\x44\x44\x2d\x68\x68" \ -"\x3a\x6d\x6d\x5b\x3a\x73\x73\x5d\x0a\x09\x59\x59\x59\x59\x2d\x4d" \ -"\x4d\x2d\x44\x44\x20\x68\x68\x3a\x6d\x6d\x5b\x3a\x73\x73\x5d\x0a" \ -"\x09\x5b\x5b\x5b\x5b\x5b\x59\x59\x5d\x59\x59\x5d\x4d\x4d\x5d\x44" \ -"\x44\x5d\x68\x68\x5d\x6d\x6d\x5b\x2e\x73\x73\x5d\x0a\x09\x27\x64" \ -"\x61\x74\x65\x20\x54\x49\x4d\x45\x27\x20\x66\x6f\x72\x6d\x20\x61" \ -"\x63\x63\x65\x70\x74\x73\x20\x4d\x4d\x44\x44\x68\x68\x6d\x6d\x5b" \ -"\x5b\x59\x59\x5d\x59\x59\x5d\x5b\x2e\x73\x73\x5d\x20\x69\x6e\x73" \ -"\x74\x65\x61\x64\x00\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x2e" \ -"\x2e\x2e\x0a\x0a\x54\x69\x6e\x79\x20\x52\x50\x4e\x20\x63\x61\x6c" \ -"\x63\x75\x6c\x61\x74\x6f\x72\x2e\x20\x4f\x70\x65\x72\x61\x74\x69" \ -"\x6f\x6e\x73\x3a\x0a\x2b\x2c\x20\x61\x64\x64\x2c\x20\x2d\x2c\x20" \ -"\x73\x75\x62\x2c\x20\x2a\x2c\x20\x6d\x75\x6c\x2c\x20\x2f\x2c\x20" \ -"\x64\x69\x76\x2c\x20\x25\x2c\x20\x6d\x6f\x64\x2c\x20\x61\x6e\x64" \ -"\x2c\x20\x6f\x72\x2c\x20\x6e\x6f\x74\x2c\x20\x78\x6f\x72\x2c\x0a" \ -"\x70\x20\x2d\x20\x70\x72\x69\x6e\x74\x20\x74\x6f\x70\x20\x6f\x66" \ -"\x20\x74\x68\x65\x20\x73\x74\x61\x63\x6b\x20\x28\x77\x69\x74\x68" \ -"\x6f\x75\x74\x20\x70\x6f\x70\x70\x69\x6e\x67\x29\x2c\x0a\x66\x20" \ -"\x2d\x20\x70\x72\x69\x6e\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x73" \ -"\x74\x61\x63\x6b\x2c\x0a\x6f\x20\x2d\x20\x70\x6f\x70\x20\x74\x68" \ -"\x65\x20\x76\x61\x6c\x75\x65\x20\x61\x6e\x64\x20\x73\x65\x74\x20" \ -"\x6f\x75\x74\x70\x75\x74\x20\x72\x61\x64\x69\x78\x20\x28\x6d\x75" \ -"\x73\x74\x20\x62\x65\x20\x31\x30\x2c\x20\x31\x36\x2c\x20\x38\x20" \ -"\x6f\x72\x20\x32\x29\x2e\x0a\x45\x78\x61\x6d\x70\x6c\x65\x73\x3a" \ -"\x20\x27\x64\x63\x20\x32\x20\x32\x20\x61\x64\x64\x20\x70\x27\x20" \ -"\x2d\x3e\x20\x34\x2c\x20\x27\x64\x63\x20\x38\x20\x38\x20\x6d\x75" \ -"\x6c\x20\x32\x20\x32\x20\x2b\x20\x2f\x20\x70\x27\x20\x2d\x3e\x20" \ -"\x31\x36\x00\x5b\x69\x66\x3d\x46\x49\x4c\x45\x5d\x20\x5b\x6f\x66" \ -"\x3d\x46\x49\x4c\x45\x5d\x20\x5b\x69\x62\x73\x3d\x4e\x5d\x20\x5b" \ -"\x6f\x62\x73\x3d\x4e\x5d\x20\x5b\x62\x73\x3d\x4e\x5d\x20\x5b\x63" \ -"\x6f\x75\x6e\x74\x3d\x4e\x5d\x20\x5b\x73\x6b\x69\x70\x3d\x4e\x5d" \ -"\x0a\x09\x5b\x73\x65\x65\x6b\x3d\x4e\x5d\x20\x5b\x63\x6f\x6e\x76" \ -"\x3d\x6e\x6f\x74\x72\x75\x6e\x63\x7c\x6e\x6f\x65\x72\x72\x6f\x72" \ -"\x7c\x73\x79\x6e\x63\x7c\x66\x73\x79\x6e\x63\x5d\x0a\x0a\x43\x6f" \ -"\x70\x79\x20\x61\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x63" \ -"\x6f\x6e\x76\x65\x72\x74\x69\x6e\x67\x20\x61\x6e\x64\x20\x66\x6f" \ -"\x72\x6d\x61\x74\x74\x69\x6e\x67\x0a\x0a\x09\x69\x66\x3d\x46\x49" \ -"\x4c\x45\x09\x09\x52\x65\x61\x64\x20\x66\x72\x6f\x6d\x20\x46\x49" \ -"\x4c\x45\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74" \ -"\x64\x69\x6e\x0a\x09\x6f\x66\x3d\x46\x49\x4c\x45\x09\x09\x57\x72" \ -"\x69\x74\x65\x20\x74\x6f\x20\x46\x49\x4c\x45\x20\x69\x6e\x73\x74" \ -"\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x62" \ -"\x73\x3d\x4e\x09\x09\x52\x65\x61\x64\x20\x61\x6e\x64\x20\x77\x72" \ -"\x69\x74\x65\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61" \ -"\x20\x74\x69\x6d\x65\x0a\x09\x69\x62\x73\x3d\x4e\x09\x09\x52\x65" \ -"\x61\x64\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61\x20" \ -"\x74\x69\x6d\x65\x0a\x09\x6f\x62\x73\x3d\x4e\x09\x09\x57\x72\x69" \ -"\x74\x65\x20\x4e\x20\x62\x79\x74\x65\x73\x20\x61\x74\x20\x61\x20" \ -"\x74\x69\x6d\x65\x0a\x09\x63\x6f\x75\x6e\x74\x3d\x4e\x09\x09\x43" \ -"\x6f\x70\x79\x20\x6f\x6e\x6c\x79\x20\x4e\x20\x69\x6e\x70\x75\x74" \ -"\x20\x62\x6c\x6f\x63\x6b\x73\x0a\x09\x73\x6b\x69\x70\x3d\x4e\x09" \ -"\x09\x53\x6b\x69\x70\x20\x4e\x20\x69\x6e\x70\x75\x74\x20\x62\x6c" \ -"\x6f\x63\x6b\x73\x0a\x09\x73\x65\x65\x6b\x3d\x4e\x09\x09\x53\x6b" \ -"\x69\x70\x20\x4e\x20\x6f\x75\x74\x70\x75\x74\x20\x62\x6c\x6f\x63" \ -"\x6b\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x6e\x6f\x74\x72\x75\x6e\x63" \ -"\x09\x44\x6f\x6e\x27\x74\x20\x74\x72\x75\x6e\x63\x61\x74\x65\x20" \ -"\x6f\x75\x74\x70\x75\x74\x20\x66\x69\x6c\x65\x0a\x09\x63\x6f\x6e" \ -"\x76\x3d\x6e\x6f\x65\x72\x72\x6f\x72\x09\x43\x6f\x6e\x74\x69\x6e" \ -"\x75\x65\x20\x61\x66\x74\x65\x72\x20\x72\x65\x61\x64\x20\x65\x72" \ -"\x72\x6f\x72\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x73\x79\x6e\x63\x09" \ -"\x50\x61\x64\x20\x62\x6c\x6f\x63\x6b\x73\x20\x77\x69\x74\x68\x20" \ -"\x7a\x65\x72\x6f\x73\x0a\x09\x63\x6f\x6e\x76\x3d\x66\x73\x79\x6e" \ -"\x63\x09\x50\x68\x79\x73\x69\x63\x61\x6c\x6c\x79\x20\x77\x72\x69" \ -"\x74\x65\x20\x64\x61\x74\x61\x20\x6f\x75\x74\x20\x62\x65\x66\x6f" \ -"\x72\x65\x20\x66\x69\x6e\x69\x73\x68\x69\x6e\x67\x0a\x0a\x4e\x75" \ -"\x6d\x62\x65\x72\x73\x20\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66" \ -"\x66\x69\x78\x65\x64\x20\x62\x79\x20\x63\x20\x28\x78\x31\x29\x2c" \ -"\x20\x77\x20\x28\x78\x32\x29\x2c\x20\x62\x20\x28\x78\x35\x31\x32" \ -"\x29\x2c\x20\x6b\x44\x20\x28\x78\x31\x30\x30\x30\x29\x2c\x20\x6b" \ -"\x20\x28\x78\x31\x30\x32\x34\x29\x2c\x0a\x4d\x44\x20\x28\x78\x31" \ -"\x30\x30\x30\x30\x30\x30\x29\x2c\x20\x4d\x20\x28\x78\x31\x30\x34" \ -"\x38\x35\x37\x36\x29\x2c\x20\x47\x44\x20\x28\x78\x31\x30\x30\x30" \ -"\x30\x30\x30\x30\x30\x30\x29\x20\x6f\x72\x20\x47\x20\x28\x78\x31" \ -"\x30\x37\x33\x37\x34\x31\x38\x32\x34\x29\x00\x5b\x2d\x71\x66\x77" \ -"\x72\x73\x76\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x20\x5b\x73\x79\x6d" \ -"\x62\x6f\x6c\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x0a\x0a\x09" \ -"\x2d\x72\x09\x52\x65\x6d\x6f\x76\x65\x20\x4d\x4f\x44\x55\x4c\x45" \ -"\x20\x28\x73\x74\x61\x63\x6b\x73\x29\x20\x6f\x72\x20\x64\x6f\x20" \ -"\x61\x75\x74\x6f\x63\x6c\x65\x61\x6e\x0a\x09\x2d\x71\x09\x51\x75" \ -"\x69\x65\x74\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a" \ -"\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x77\x09\x57\x61" \ -"\x69\x74\x20\x66\x6f\x72\x20\x75\x6e\x6c\x6f\x61\x64\x0a\x09\x2d" \ -"\x73\x09\x52\x65\x70\x6f\x72\x74\x20\x76\x69\x61\x20\x73\x79\x73" \ -"\x6c\x6f\x67\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73" \ -"\x74\x64\x65\x72\x72\x00\x41\x44\x44\x52\x45\x53\x53\x20\x5b\x57" \ -"\x49\x44\x54\x48\x20\x5b\x56\x41\x4c\x55\x45\x5d\x5d\x0a\x0a\x52" \ -"\x65\x61\x64\x2f\x77\x72\x69\x74\x65\x20\x66\x72\x6f\x6d\x20\x70" \ -"\x68\x79\x73\x69\x63\x61\x6c\x20\x61\x64\x64\x72\x65\x73\x73\x0a" \ -"\x0a\x09\x41\x44\x44\x52\x45\x53\x53\x09\x41\x64\x64\x72\x65\x73" \ -"\x73\x20\x74\x6f\x20\x61\x63\x74\x20\x75\x70\x6f\x6e\x0a\x09\x57" \ -"\x49\x44\x54\x48\x09\x57\x69\x64\x74\x68\x20\x28\x38\x2f\x31\x36" \ -"\x2f\x2e\x2e\x2e\x29\x0a\x09\x56\x41\x4c\x55\x45\x09\x44\x61\x74" \ -"\x61\x20\x74\x6f\x20\x62\x65\x20\x77\x72\x69\x74\x74\x65\x6e\x00" \ -"\x5b\x2d\x50\x6b\x6d\x68\x61\x69\x5d\x20\x5b\x2d\x42\x20\x53\x49" \ -"\x5a\x45\x5d\x20\x5b\x46\x49\x4c\x45\x53\x59\x53\x54\x45\x4d\x5d" \ -"\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x66\x69\x6c\x65\x73" \ -"\x79\x73\x74\x65\x6d\x20\x75\x73\x61\x67\x65\x20\x73\x74\x61\x74" \ -"\x69\x73\x74\x69\x63\x73\x0a\x0a\x09\x2d\x50\x09\x50\x4f\x53\x49" \ -"\x58\x20\x6f\x75\x74\x70\x75\x74\x20\x66\x6f\x72\x6d\x61\x74\x0a" \ -"\x09\x2d\x6b\x09\x31\x30\x32\x34\x2d\x62\x79\x74\x65\x20\x62\x6c" \ -"\x6f\x63\x6b\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09" \ -"\x2d\x6d\x09\x31\x4d\x2d\x62\x79\x74\x65\x20\x62\x6c\x6f\x63\x6b" \ -"\x73\x0a\x09\x2d\x68\x09\x48\x75\x6d\x61\x6e\x20\x72\x65\x61\x64" \ -"\x61\x62\x6c\x65\x20\x28\x65\x2e\x67\x2e\x20\x31\x4b\x20\x32\x34" \ -"\x33\x4d\x20\x32\x47\x29\x0a\x09\x2d\x61\x09\x53\x68\x6f\x77\x20" \ -"\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x0a" \ -"\x09\x2d\x69\x09\x49\x6e\x6f\x64\x65\x73\x0a\x09\x2d\x42\x20\x53" \ -"\x49\x5a\x45\x09\x42\x6c\x6f\x63\x6b\x73\x69\x7a\x65\x00\x5b\x2d" \ -"\x61\x62\x42\x64\x69\x4e\x71\x72\x54\x73\x74\x77\x5d\x20\x5b\x2d" \ -"\x4c\x20\x4c\x41\x42\x45\x4c\x5d\x20\x5b\x2d\x53\x20\x46\x49\x4c" \ -"\x45\x5d\x20\x5b\x2d\x55\x20\x4c\x49\x4e\x45\x53\x5d\x20\x46\x49" \ -"\x4c\x45\x31\x20\x46\x49\x4c\x45\x32\x0a\x0a\x43\x6f\x6d\x70\x61" \ -"\x72\x65\x20\x66\x69\x6c\x65\x73\x20\x6c\x69\x6e\x65\x20\x62\x79" \ -"\x20\x6c\x69\x6e\x65\x20\x61\x6e\x64\x20\x6f\x75\x74\x70\x75\x74" \ -"\x20\x74\x68\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x73" \ -"\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x74\x68\x65\x6d\x2e\x0a\x54" \ -"\x68\x69\x73\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\x74\x69" \ -"\x6f\x6e\x20\x73\x75\x70\x70\x6f\x72\x74\x73\x20\x75\x6e\x69\x66" \ -"\x69\x65\x64\x20\x64\x69\x66\x66\x73\x20\x6f\x6e\x6c\x79\x2e\x0a" \ -"\x0a\x09\x2d\x61\x09\x54\x72\x65\x61\x74\x20\x61\x6c\x6c\x20\x66" \ -"\x69\x6c\x65\x73\x20\x61\x73\x20\x74\x65\x78\x74\x0a\x09\x2d\x62" \ -"\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x68\x61\x6e\x67\x65\x73\x20" \ -"\x69\x6e\x20\x74\x68\x65\x20\x61\x6d\x6f\x75\x6e\x74\x20\x6f\x66" \ -"\x20\x77\x68\x69\x74\x65\x73\x70\x61\x63\x65\x0a\x09\x2d\x42\x09" \ -"\x49\x67\x6e\x6f\x72\x65\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x77" \ -"\x68\x6f\x73\x65\x20\x6c\x69\x6e\x65\x73\x20\x61\x72\x65\x20\x61" \ -"\x6c\x6c\x20\x62\x6c\x61\x6e\x6b\x0a\x09\x2d\x64\x09\x54\x72\x79" \ -"\x20\x68\x61\x72\x64\x20\x74\x6f\x20\x66\x69\x6e\x64\x20\x61\x20" \ -"\x73\x6d\x61\x6c\x6c\x65\x72\x20\x73\x65\x74\x20\x6f\x66\x20\x63" \ -"\x68\x61\x6e\x67\x65\x73\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f\x72" \ -"\x65\x20\x63\x61\x73\x65\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63" \ -"\x65\x73\x0a\x09\x2d\x4c\x09\x55\x73\x65\x20\x4c\x41\x42\x45\x4c" \ -"\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x74\x68\x65\x20" \ -"\x66\x69\x6c\x65\x6e\x61\x6d\x65\x20\x69\x6e\x20\x74\x68\x65\x20" \ -"\x75\x6e\x69\x66\x69\x65\x64\x20\x68\x65\x61\x64\x65\x72\x0a\x09" \ -"\x2d\x4e\x09\x54\x72\x65\x61\x74\x20\x61\x62\x73\x65\x6e\x74\x20" \ -"\x66\x69\x6c\x65\x73\x20\x61\x73\x20\x65\x6d\x70\x74\x79\x0a\x09" \ -"\x2d\x71\x09\x4f\x75\x74\x70\x75\x74\x20\x6f\x6e\x6c\x79\x20\x77" \ -"\x68\x65\x74\x68\x65\x72\x20\x66\x69\x6c\x65\x73\x20\x64\x69\x66" \ -"\x66\x65\x72\x0a\x09\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x0a" \ -"\x09\x2d\x53\x09\x53\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x46" \ -"\x49\x4c\x45\x20\x77\x68\x65\x6e\x20\x63\x6f\x6d\x70\x61\x72\x69" \ -"\x6e\x67\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09" \ -"\x2d\x54\x09\x4d\x61\x6b\x65\x20\x74\x61\x62\x73\x20\x6c\x69\x6e" \ -"\x65\x20\x75\x70\x20\x62\x79\x20\x70\x72\x65\x66\x69\x78\x69\x6e" \ -"\x67\x20\x61\x20\x74\x61\x62\x20\x77\x68\x65\x6e\x20\x6e\x65\x63" \ -"\x65\x73\x73\x61\x72\x79\x0a\x09\x2d\x73\x09\x52\x65\x70\x6f\x72" \ -"\x74\x20\x77\x68\x65\x6e\x20\x74\x77\x6f\x20\x66\x69\x6c\x65\x73" \ -"\x20\x61\x72\x65\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x0a\x09\x2d" \ -"\x74\x09\x45\x78\x70\x61\x6e\x64\x20\x74\x61\x62\x73\x20\x74\x6f" \ -"\x20\x73\x70\x61\x63\x65\x73\x20\x69\x6e\x20\x6f\x75\x74\x70\x75" \ -"\x74\x0a\x09\x2d\x55\x09\x4f\x75\x74\x70\x75\x74\x20\x4c\x49\x4e" \ -"\x45\x53\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x63\x6f\x6e\x74" \ -"\x65\x78\x74\x0a\x09\x2d\x77\x09\x49\x67\x6e\x6f\x72\x65\x20\x61" \ -"\x6c\x6c\x20\x77\x68\x69\x74\x65\x73\x70\x61\x63\x65\x00\x46\x49" \ -"\x4c\x45\x4e\x41\x4d\x45\x0a\x0a\x53\x74\x72\x69\x70\x20\x6e\x6f" \ -"\x6e\x2d\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x73\x75\x66\x66" \ -"\x69\x78\x20\x66\x72\x6f\x6d\x20\x46\x49\x4c\x45\x4e\x41\x4d\x45" \ -"\x00\x5b\x2d\x63\x5d\x20\x5b\x2d\x6e\x20\x4c\x45\x56\x45\x4c\x5d" \ -"\x20\x5b\x2d\x72\x5d\x20\x5b\x2d\x73\x20\x53\x49\x5a\x45\x5d\x20" \ -"\x5b\x2d\x43\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63" \ -"\x6f\x6e\x74\x72\x6f\x6c\x20\x74\x68\x65\x20\x6b\x65\x72\x6e\x65" \ -"\x6c\x20\x72\x69\x6e\x67\x20\x62\x75\x66\x66\x65\x72\x0a\x0a\x09" \ -"\x2d\x63\x09\x09\x43\x6c\x65\x61\x72\x20\x72\x69\x6e\x67\x20\x62" \ -"\x75\x66\x66\x65\x72\x20\x61\x66\x74\x65\x72\x20\x70\x72\x69\x6e" \ -"\x74\x69\x6e\x67\x0a\x09\x2d\x6e\x20\x4c\x45\x56\x45\x4c\x09\x53" \ -"\x65\x74\x20\x63\x6f\x6e\x73\x6f\x6c\x65\x20\x6c\x6f\x67\x67\x69" \ -"\x6e\x67\x20\x6c\x65\x76\x65\x6c\x0a\x09\x2d\x72\x09\x09\x53\x68" \ -"\x6f\x77\x20\x6c\x65\x76\x65\x6c\x20\x70\x72\x65\x66\x69\x78\x0a" \ -"\x09\x2d\x73\x20\x53\x49\x5a\x45\x09\x09\x42\x75\x66\x66\x65\x72" \ -"\x20\x73\x69\x7a\x65\x0a\x09\x2d\x43\x09\x09\x43\x6f\x6c\x6f\x72" \ -"\x65\x64\x20\x6f\x75\x74\x70\x75\x74\x00\x5b\x2d\x75\x64\x5d\x20" \ -"\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x43\x6f\x6e\x76\x65\x72\x74\x20" \ -"\x46\x49\x4c\x45\x20\x69\x6e\x2d\x70\x6c\x61\x63\x65\x20\x66\x72" \ -"\x6f\x6d\x20\x44\x4f\x53\x20\x74\x6f\x20\x55\x6e\x69\x78\x20\x66" \ -"\x6f\x72\x6d\x61\x74\x2e\x0a\x57\x68\x65\x6e\x20\x6e\x6f\x20\x66" \ -"\x69\x6c\x65\x20\x69\x73\x20\x67\x69\x76\x65\x6e\x2c\x20\x75\x73" \ -"\x65\x20\x73\x74\x64\x69\x6e\x2f\x73\x74\x64\x6f\x75\x74\x2e\x0a" \ -"\x0a\x09\x2d\x75\x09\x64\x6f\x73\x32\x75\x6e\x69\x78\x0a\x09\x2d" \ -"\x64\x09\x75\x6e\x69\x78\x32\x64\x6f\x73\x00\x5b\x2d\x61\x48\x4c" \ -"\x64\x63\x6c\x73\x78\x68\x6d\x6b\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \ -"\x2e\x2e\x2e\x0a\x0a\x53\x75\x6d\x6d\x61\x72\x69\x7a\x65\x20\x64" \ -"\x69\x73\x6b\x20\x73\x70\x61\x63\x65\x20\x75\x73\x65\x64\x20\x66" \ -"\x6f\x72\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x61\x6e\x64" \ -"\x2f\x6f\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x0a\x09" \ -"\x2d\x61\x09\x53\x68\x6f\x77\x20\x66\x69\x6c\x65\x20\x73\x69\x7a" \ -"\x65\x73\x20\x74\x6f\x6f\x0a\x09\x2d\x4c\x09\x46\x6f\x6c\x6c\x6f" \ -"\x77\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09" \ -"\x2d\x48\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e" \ -"\x6b\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69" \ -"\x6e\x65\x0a\x09\x2d\x64\x20\x4e\x09\x4c\x69\x6d\x69\x74\x20\x6f" \ -"\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x64\x69\x72\x65\x63\x74\x6f" \ -"\x72\x69\x65\x73\x20\x28\x61\x6e\x64\x20\x66\x69\x6c\x65\x73\x20" \ -"\x77\x69\x74\x68\x20\x2d\x61\x29\x20\x6f\x66\x20\x64\x65\x70\x74" \ -"\x68\x20\x3c\x20\x4e\x0a\x09\x2d\x63\x09\x53\x68\x6f\x77\x20\x67" \ -"\x72\x61\x6e\x64\x20\x74\x6f\x74\x61\x6c\x0a\x09\x2d\x6c\x09\x43" \ -"\x6f\x75\x6e\x74\x20\x73\x69\x7a\x65\x73\x20\x6d\x61\x6e\x79\x20" \ -"\x74\x69\x6d\x65\x73\x20\x69\x66\x20\x68\x61\x72\x64\x20\x6c\x69" \ -"\x6e\x6b\x65\x64\x0a\x09\x2d\x73\x09\x44\x69\x73\x70\x6c\x61\x79" \ -"\x20\x6f\x6e\x6c\x79\x20\x61\x20\x74\x6f\x74\x61\x6c\x20\x66\x6f" \ -"\x72\x20\x65\x61\x63\x68\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x0a" \ -"\x09\x2d\x78\x09\x53\x6b\x69\x70\x20\x64\x69\x72\x65\x63\x74\x6f" \ -"\x72\x69\x65\x73\x20\x6f\x6e\x20\x64\x69\x66\x66\x65\x72\x65\x6e" \ -"\x74\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x0a\x09\x2d" \ -"\x68\x09\x53\x69\x7a\x65\x73\x20\x69\x6e\x20\x68\x75\x6d\x61\x6e" \ -"\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66\x6f\x72\x6d\x61\x74" \ -"\x20\x28\x65\x2e\x67\x2e\x2c\x20\x31\x4b\x20\x32\x34\x33\x4d\x20" \ -"\x32\x47\x29\x0a\x09\x2d\x6d\x09\x53\x69\x7a\x65\x73\x20\x69\x6e" \ -"\x20\x6d\x65\x67\x61\x62\x79\x74\x65\x73\x0a\x09\x2d\x6b\x09\x53" \ -"\x69\x7a\x65\x73\x20\x69\x6e\x20\x6b\x69\x6c\x6f\x62\x79\x74\x65" \ -"\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00\x5b\x2d\x6e\x65" \ -"\x45\x5d\x20\x5b\x41\x52\x47\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69" \ -"\x6e\x74\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64" \ -"\x20\x41\x52\x47\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a" \ -"\x0a\x09\x2d\x6e\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x74\x72" \ -"\x61\x69\x6c\x69\x6e\x67\x20\x6e\x65\x77\x6c\x69\x6e\x65\x0a\x09" \ -"\x2d\x65\x09\x49\x6e\x74\x65\x72\x70\x72\x65\x74\x20\x62\x61\x63" \ -"\x6b\x73\x6c\x61\x73\x68\x20\x65\x73\x63\x61\x70\x65\x73\x20\x28" \ -"\x69\x2e\x65\x2e\x2c\x20\x5c\x74\x3d\x74\x61\x62\x29\x0a\x09\x2d" \ -"\x45\x09\x44\x6f\x6e\x27\x74\x20\x69\x6e\x74\x65\x72\x70\x72\x65" \ -"\x74\x20\x62\x61\x63\x6b\x73\x6c\x61\x73\x68\x20\x65\x73\x63\x61" \ -"\x70\x65\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x00\x08\x00" \ -"\x5b\x2d\x69\x75\x5d\x20\x5b\x2d\x5d\x20\x5b\x6e\x61\x6d\x65\x3d" \ -"\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x20\x5b\x50\x52\x4f\x47\x20" \ -"\x41\x52\x47\x53\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65" \ -"\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x65\x6e\x76\x69\x72\x6f\x6e" \ -"\x6d\x65\x6e\x74\x20\x6f\x72\x20\x72\x75\x6e\x20\x50\x52\x4f\x47" \ -"\x20\x61\x66\x74\x65\x72\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x75" \ -"\x70\x0a\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20" \ -"\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x0a\x0a\x09\x2d\x2c" \ -"\x20\x2d\x69\x09\x53\x74\x61\x72\x74\x20\x77\x69\x74\x68\x20\x61" \ -"\x6e\x20\x65\x6d\x70\x74\x79\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d" \ -"\x65\x6e\x74\x0a\x09\x2d\x75\x09\x52\x65\x6d\x6f\x76\x65\x20\x76" \ -"\x61\x72\x69\x61\x62\x6c\x65\x20\x66\x72\x6f\x6d\x20\x74\x68\x65" \ -"\x20\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x00\x5b\x2d\x69" \ -"\x5d\x20\x5b\x2d\x74\x20\x4e\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e" \ -"\x2e\x2e\x0a\x0a\x43\x6f\x6e\x76\x65\x72\x74\x20\x74\x61\x62\x73" \ -"\x20\x74\x6f\x20\x73\x70\x61\x63\x65\x73\x2c\x20\x77\x72\x69\x74" \ -"\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09" \ -"\x2d\x69\x09\x44\x6f\x6e\x27\x74\x20\x63\x6f\x6e\x76\x65\x72\x74" \ -"\x20\x74\x61\x62\x73\x20\x61\x66\x74\x65\x72\x20\x6e\x6f\x6e\x20" \ -"\x62\x6c\x61\x6e\x6b\x73\x0a\x09\x2d\x74\x09\x54\x61\x62\x73\x74" \ -"\x6f\x70\x73\x20\x65\x76\x65\x72\x79\x20\x4e\x20\x63\x68\x61\x72" \ -"\x73\x00\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x0a\x0a\x50\x72" \ -"\x69\x6e\x74\x20\x74\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66" \ -"\x20\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x20\x74\x6f\x20\x73" \ -"\x74\x64\x6f\x75\x74\x0a\x0a\x45\x58\x50\x52\x45\x53\x53\x49\x4f" \ -"\x4e\x20\x6d\x61\x79\x20\x62\x65\x3a\x0a\x09\x41\x52\x47\x31\x20" \ -"\x7c\x20\x41\x52\x47\x32\x09\x41\x52\x47\x31\x20\x69\x66\x20\x69" \ -"\x74\x20\x69\x73\x20\x6e\x65\x69\x74\x68\x65\x72\x20\x6e\x75\x6c" \ -"\x6c\x20\x6e\x6f\x72\x20\x30\x2c\x20\x6f\x74\x68\x65\x72\x77\x69" \ -"\x73\x65\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x26\x20" \ -"\x41\x52\x47\x32\x09\x41\x52\x47\x31\x20\x69\x66\x20\x6e\x65\x69" \ -"\x74\x68\x65\x72\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x20\x69\x73" \ -"\x20\x6e\x75\x6c\x6c\x20\x6f\x72\x20\x30\x2c\x20\x6f\x74\x68\x65" \ -"\x72\x77\x69\x73\x65\x20\x30\x0a\x09\x41\x52\x47\x31\x20\x3c\x20" \ -"\x41\x52\x47\x32\x09\x31\x20\x69\x66\x20\x41\x52\x47\x31\x20\x69" \ -"\x73\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x41\x52\x47\x32" \ -"\x2c\x20\x65\x6c\x73\x65\x20\x30\x2e\x20\x53\x69\x6d\x69\x6c\x61" \ -"\x72\x6c\x79\x3a\x0a\x09\x41\x52\x47\x31\x20\x3c\x3d\x20\x41\x52" \ -"\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x3d\x20\x41\x52\x47\x32\x0a" \ -"\x09\x41\x52\x47\x31\x20\x21\x3d\x20\x41\x52\x47\x32\x0a\x09\x41" \ -"\x52\x47\x31\x20\x3e\x3d\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47" \ -"\x31\x20\x3e\x20\x41\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x2b" \ -"\x20\x41\x52\x47\x32\x09\x53\x75\x6d\x20\x6f\x66\x20\x41\x52\x47" \ -"\x31\x20\x61\x6e\x64\x20\x41\x52\x47\x32\x2e\x20\x53\x69\x6d\x69" \ -"\x6c\x61\x72\x6c\x79\x3a\x0a\x09\x41\x52\x47\x31\x20\x2d\x20\x41" \ -"\x52\x47\x32\x0a\x09\x41\x52\x47\x31\x20\x2a\x20\x41\x52\x47\x32" \ -"\x0a\x09\x41\x52\x47\x31\x20\x2f\x20\x41\x52\x47\x32\x0a\x09\x41" \ -"\x52\x47\x31\x20\x25\x20\x41\x52\x47\x32\x0a\x09\x53\x54\x52\x49" \ -"\x4e\x47\x20\x3a\x20\x52\x45\x47\x45\x58\x50\x09\x09\x41\x6e\x63" \ -"\x68\x6f\x72\x65\x64\x20\x70\x61\x74\x74\x65\x72\x6e\x20\x6d\x61" \ -"\x74\x63\x68\x20\x6f\x66\x20\x52\x45\x47\x45\x58\x50\x20\x69\x6e" \ -"\x20\x53\x54\x52\x49\x4e\x47\x0a\x09\x6d\x61\x74\x63\x68\x20\x53" \ -"\x54\x52\x49\x4e\x47\x20\x52\x45\x47\x45\x58\x50\x09\x53\x61\x6d" \ -"\x65\x20\x61\x73\x20\x53\x54\x52\x49\x4e\x47\x20\x3a\x20\x52\x45" \ -"\x47\x45\x58\x50\x0a\x09\x73\x75\x62\x73\x74\x72\x20\x53\x54\x52" \ -"\x49\x4e\x47\x20\x50\x4f\x53\x20\x4c\x45\x4e\x47\x54\x48\x20\x53" \ -"\x75\x62\x73\x74\x72\x69\x6e\x67\x20\x6f\x66\x20\x53\x54\x52\x49" \ -"\x4e\x47\x2c\x20\x50\x4f\x53\x20\x63\x6f\x75\x6e\x74\x65\x64\x20" \ -"\x66\x72\x6f\x6d\x20\x31\x0a\x09\x69\x6e\x64\x65\x78\x20\x53\x54" \ -"\x52\x49\x4e\x47\x20\x43\x48\x41\x52\x53\x09\x49\x6e\x64\x65\x78" \ -"\x20\x69\x6e\x20\x53\x54\x52\x49\x4e\x47\x20\x77\x68\x65\x72\x65" \ -"\x20\x61\x6e\x79\x20\x43\x48\x41\x52\x53\x20\x69\x73\x20\x66\x6f" \ -"\x75\x6e\x64\x2c\x20\x6f\x72\x20\x30\x0a\x09\x6c\x65\x6e\x67\x74" \ -"\x68\x20\x53\x54\x52\x49\x4e\x47\x09\x09\x4c\x65\x6e\x67\x74\x68" \ -"\x20\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x0a\x09\x71\x75\x6f\x74" \ -"\x65\x20\x54\x4f\x4b\x45\x4e\x09\x09\x49\x6e\x74\x65\x72\x70\x72" \ -"\x65\x74\x20\x54\x4f\x4b\x45\x4e\x20\x61\x73\x20\x61\x20\x73\x74" \ -"\x72\x69\x6e\x67\x2c\x20\x65\x76\x65\x6e\x20\x69\x66\x0a\x09\x09" \ -"\x09\x09\x69\x74\x20\x69\x73\x20\x61\x20\x6b\x65\x79\x77\x6f\x72" \ -"\x64\x20\x6c\x69\x6b\x65\x20\x27\x6d\x61\x74\x63\x68\x27\x20\x6f" \ -"\x72\x20\x61\x6e\x0a\x09\x09\x09\x09\x6f\x70\x65\x72\x61\x74\x6f" \ -"\x72\x20\x6c\x69\x6b\x65\x20\x27\x2f\x27\x0a\x09\x28\x45\x58\x50" \ -"\x52\x45\x53\x53\x49\x4f\x4e\x29\x09\x09\x56\x61\x6c\x75\x65\x20" \ -"\x6f\x66\x20\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x0a\x0a\x42" \ -"\x65\x77\x61\x72\x65\x20\x74\x68\x61\x74\x20\x6d\x61\x6e\x79\x20" \ -"\x6f\x70\x65\x72\x61\x74\x6f\x72\x73\x20\x6e\x65\x65\x64\x20\x74" \ -"\x6f\x20\x62\x65\x20\x65\x73\x63\x61\x70\x65\x64\x20\x6f\x72\x20" \ -"\x71\x75\x6f\x74\x65\x64\x20\x66\x6f\x72\x20\x73\x68\x65\x6c\x6c" \ -"\x73\x2e\x0a\x43\x6f\x6d\x70\x61\x72\x69\x73\x6f\x6e\x73\x20\x61" \ -"\x72\x65\x20\x61\x72\x69\x74\x68\x6d\x65\x74\x69\x63\x20\x69\x66" \ -"\x20\x62\x6f\x74\x68\x20\x41\x52\x47\x73\x20\x61\x72\x65\x20\x6e" \ -"\x75\x6d\x62\x65\x72\x73\x2c\x20\x65\x6c\x73\x65\x0a\x6c\x65\x78" \ -"\x69\x63\x6f\x67\x72\x61\x70\x68\x69\x63\x61\x6c\x2e\x20\x50\x61" \ -"\x74\x74\x65\x72\x6e\x20\x6d\x61\x74\x63\x68\x65\x73\x20\x72\x65" \ -"\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x73\x74\x72\x69\x6e\x67\x20" \ -"\x6d\x61\x74\x63\x68\x65\x64\x20\x62\x65\x74\x77\x65\x65\x6e\x0a" \ -"\x5c\x28\x20\x61\x6e\x64\x20\x5c\x29\x20\x6f\x72\x20\x6e\x75\x6c" \ -"\x6c\x3b\x20\x69\x66\x20\x5c\x28\x20\x61\x6e\x64\x20\x5c\x29\x20" \ -"\x61\x72\x65\x20\x6e\x6f\x74\x20\x75\x73\x65\x64\x2c\x20\x74\x68" \ -"\x65\x79\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x6e\x75" \ -"\x6d\x62\x65\x72\x0a\x6f\x66\x20\x63\x68\x61\x72\x61\x63\x74\x65" \ -"\x72\x73\x20\x6d\x61\x74\x63\x68\x65\x64\x20\x6f\x72\x20\x30\x2e" \ -"\x00\x0a\x0a\x52\x65\x74\x75\x72\x6e\x20\x61\x6e\x20\x65\x78\x69" \ -"\x74\x20\x63\x6f\x64\x65\x20\x6f\x66\x20\x46\x41\x4c\x53\x45\x20" \ -"\x28\x31\x29\x00\x5b\x2d\x75\x6c\x5d\x20\x5b\x2d\x43\x20\x43\x59" \ -"\x4c\x49\x4e\x44\x45\x52\x53\x5d\x20\x5b\x2d\x48\x20\x48\x45\x41" \ -"\x44\x53\x5d\x20\x5b\x2d\x53\x20\x53\x45\x43\x54\x4f\x52\x53\x5d" \ -"\x20\x5b\x2d\x62\x20\x53\x53\x5a\x5d\x20\x44\x49\x53\x4b\x0a\x0a" \ -"\x43\x68\x61\x6e\x67\x65\x20\x70\x61\x72\x74\x69\x74\x69\x6f\x6e" \ -"\x20\x74\x61\x62\x6c\x65\x0a\x0a\x09\x2d\x75\x09\x09\x53\x74\x61" \ -"\x72\x74\x20\x61\x6e\x64\x20\x45\x6e\x64\x20\x61\x72\x65\x20\x69" \ -"\x6e\x20\x73\x65\x63\x74\x6f\x72\x73\x20\x28\x69\x6e\x73\x74\x65" \ -"\x61\x64\x20\x6f\x66\x20\x63\x79\x6c\x69\x6e\x64\x65\x72\x73\x29" \ -"\x0a\x09\x2d\x6c\x09\x09\x53\x68\x6f\x77\x20\x70\x61\x72\x74\x69" \ -"\x74\x69\x6f\x6e\x20\x74\x61\x62\x6c\x65\x20\x66\x6f\x72\x20\x65" \ -"\x61\x63\x68\x20\x44\x49\x53\x4b\x2c\x20\x74\x68\x65\x6e\x20\x65" \ -"\x78\x69\x74\x0a\x09\x2d\x62\x20\x32\x30\x34\x38\x09\x09\x28\x66" \ -"\x6f\x72\x20\x63\x65\x72\x74\x61\x69\x6e\x20\x4d\x4f\x20\x64\x69" \ -"\x73\x6b\x73\x29\x20\x75\x73\x65\x20\x32\x30\x34\x38\x2d\x62\x79" \ -"\x74\x65\x20\x73\x65\x63\x74\x6f\x72\x73\x0a\x09\x2d\x43\x20\x43" \ -"\x59\x4c\x49\x4e\x44\x45\x52\x53\x09\x53\x65\x74\x20\x6e\x75\x6d" \ -"\x62\x65\x72\x20\x6f\x66\x20\x63\x79\x6c\x69\x6e\x64\x65\x72\x73" \ -"\x2f\x68\x65\x61\x64\x73\x2f\x73\x65\x63\x74\x6f\x72\x73\x0a\x09" \ -"\x2d\x48\x20\x48\x45\x41\x44\x53\x0a\x09\x2d\x53\x20\x53\x45\x43" \ -"\x54\x4f\x52\x53\x00\x08\x00\x5b\x50\x41\x54\x48\x5d\x2e\x2e\x2e" \ -"\x20\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x41\x43\x54\x49" \ -"\x4f\x4e\x53\x5d\x0a\x0a\x53\x65\x61\x72\x63\x68\x20\x66\x6f\x72" \ -"\x20\x66\x69\x6c\x65\x73\x20\x61\x6e\x64\x20\x70\x65\x72\x66\x6f" \ -"\x72\x6d\x20\x61\x63\x74\x69\x6f\x6e\x73\x20\x6f\x6e\x20\x74\x68" \ -"\x65\x6d\x2e\x0a\x46\x69\x72\x73\x74\x20\x66\x61\x69\x6c\x65\x64" \ -"\x20\x61\x63\x74\x69\x6f\x6e\x20\x73\x74\x6f\x70\x73\x20\x70\x72" \ -"\x6f\x63\x65\x73\x73\x69\x6e\x67\x20\x6f\x66\x20\x63\x75\x72\x72" \ -"\x65\x6e\x74\x20\x66\x69\x6c\x65\x2e\x0a\x44\x65\x66\x61\x75\x6c" \ -"\x74\x73\x3a\x20\x50\x41\x54\x48\x20\x69\x73\x20\x63\x75\x72\x72" \ -"\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x20\x61" \ -"\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x27\x2d\x70\x72\x69\x6e\x74" \ -"\x27\x0a\x0a\x09\x2d\x66\x6f\x6c\x6c\x6f\x77\x09\x09\x46\x6f\x6c" \ -"\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x78" \ -"\x64\x65\x76\x09\x09\x44\x6f\x6e\x27\x74\x20\x64\x65\x73\x63\x65" \ -"\x6e\x64\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20\x6f" \ -"\x6e\x20\x6f\x74\x68\x65\x72\x20\x66\x69\x6c\x65\x73\x79\x73\x74" \ -"\x65\x6d\x73\x0a\x09\x2d\x6d\x61\x78\x64\x65\x70\x74\x68\x20\x4e" \ -"\x09\x44\x65\x73\x63\x65\x6e\x64\x20\x61\x74\x20\x6d\x6f\x73\x74" \ -"\x20\x4e\x20\x6c\x65\x76\x65\x6c\x73\x2e\x20\x2d\x6d\x61\x78\x64" \ -"\x65\x70\x74\x68\x20\x30\x20\x61\x70\x70\x6c\x69\x65\x73\x0a\x09" \ -"\x09\x09\x61\x63\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x63\x6f\x6d" \ -"\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x61\x72\x67\x75\x6d\x65" \ -"\x6e\x74\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6d\x69\x6e\x64\x65" \ -"\x70\x74\x68\x20\x4e\x09\x44\x6f\x6e\x27\x74\x20\x61\x63\x74\x20" \ -"\x6f\x6e\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x6c\x65\x76\x65\x6c" \ -"\x73\x0a\x09\x2d\x64\x65\x70\x74\x68\x09\x09\x41\x63\x74\x20\x6f" \ -"\x6e\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x2a\x61\x66\x74" \ -"\x65\x72\x2a\x20\x74\x72\x61\x76\x65\x72\x73\x69\x6e\x67\x20\x69" \ -"\x74\x0a\x0a\x41\x63\x74\x69\x6f\x6e\x73\x3a\x0a\x09\x28\x20\x41" \ -"\x43\x54\x49\x4f\x4e\x53\x20\x29\x09\x47\x72\x6f\x75\x70\x20\x61" \ -"\x63\x74\x69\x6f\x6e\x73\x20\x66\x6f\x72\x20\x2d\x6f\x20\x2f\x20" \ -"\x2d\x61\x0a\x09\x21\x20\x41\x43\x54\x09\x09\x49\x6e\x76\x65\x72" \ -"\x74\x20\x41\x43\x54\x27\x73\x20\x73\x75\x63\x63\x65\x73\x73\x2f" \ -"\x66\x61\x69\x6c\x75\x72\x65\x0a\x09\x41\x43\x54\x31\x20\x5b\x2d" \ -"\x61\x5d\x20\x41\x43\x54\x32\x09\x49\x66\x20\x41\x43\x54\x31\x20" \ -"\x66\x61\x69\x6c\x73\x2c\x20\x73\x74\x6f\x70\x2c\x20\x65\x6c\x73" \ -"\x65\x20\x64\x6f\x20\x41\x43\x54\x32\x0a\x09\x41\x43\x54\x31\x20" \ -"\x2d\x6f\x20\x41\x43\x54\x32\x09\x49\x66\x20\x41\x43\x54\x31\x20" \ -"\x73\x75\x63\x63\x65\x65\x64\x73\x2c\x20\x73\x74\x6f\x70\x2c\x20" \ -"\x65\x6c\x73\x65\x20\x64\x6f\x20\x41\x43\x54\x32\x0a\x09\x09\x09" \ -"\x4e\x6f\x74\x65\x3a\x20\x2d\x61\x20\x68\x61\x73\x20\x68\x69\x67" \ -"\x68\x65\x72\x20\x70\x72\x69\x6f\x72\x69\x74\x79\x20\x74\x68\x61" \ -"\x6e\x20\x2d\x6f\x0a\x09\x2d\x6e\x61\x6d\x65\x20\x50\x41\x54\x54" \ -"\x45\x52\x4e\x09\x4d\x61\x74\x63\x68\x20\x66\x69\x6c\x65\x20\x6e" \ -"\x61\x6d\x65\x20\x28\x77\x2f\x6f\x20\x64\x69\x72\x65\x63\x74\x6f" \ -"\x72\x79\x20\x6e\x61\x6d\x65\x29\x20\x74\x6f\x20\x50\x41\x54\x54" \ -"\x45\x52\x4e\x0a\x09\x2d\x69\x6e\x61\x6d\x65\x20\x50\x41\x54\x54" \ -"\x45\x52\x4e\x09\x43\x61\x73\x65\x20\x69\x6e\x73\x65\x6e\x73\x69" \ -"\x74\x69\x76\x65\x20\x2d\x6e\x61\x6d\x65\x0a\x09\x2d\x70\x61\x74" \ -"\x68\x20\x50\x41\x54\x54\x45\x52\x4e\x09\x4d\x61\x74\x63\x68\x20" \ -"\x70\x61\x74\x68\x20\x74\x6f\x20\x50\x41\x54\x54\x45\x52\x4e\x0a" \ -"\x09\x2d\x69\x70\x61\x74\x68\x20\x50\x41\x54\x54\x45\x52\x4e\x09" \ -"\x43\x61\x73\x65\x20\x69\x6e\x73\x65\x6e\x73\x69\x74\x69\x76\x65" \ -"\x20\x2d\x70\x61\x74\x68\x0a\x09\x2d\x72\x65\x67\x65\x78\x20\x50" \ -"\x41\x54\x54\x45\x52\x4e\x09\x4d\x61\x74\x63\x68\x20\x70\x61\x74" \ -"\x68\x20\x74\x6f\x20\x72\x65\x67\x65\x78\x20\x50\x41\x54\x54\x45" \ -"\x52\x4e\x0a\x09\x2d\x74\x79\x70\x65\x20\x58\x09\x09\x46\x69\x6c" \ -"\x65\x20\x74\x79\x70\x65\x20\x69\x73\x20\x58\x20\x28\x6f\x6e\x65" \ -"\x20\x6f\x66\x3a\x20\x66\x2c\x64\x2c\x6c\x2c\x62\x2c\x63\x2c\x2e" \ -"\x2e\x2e\x29\x0a\x09\x2d\x70\x65\x72\x6d\x20\x4d\x41\x53\x4b\x09" \ -"\x41\x74\x20\x6c\x65\x61\x73\x74\x20\x6f\x6e\x65\x20\x6d\x61\x73" \ -"\x6b\x20\x62\x69\x74\x20\x28\x2b\x4d\x41\x53\x4b\x29\x2c\x20\x61" \ -"\x6c\x6c\x20\x62\x69\x74\x73\x20\x28\x2d\x4d\x41\x53\x4b\x29\x2c" \ -"\x0a\x09\x09\x09\x6f\x72\x20\x65\x78\x61\x63\x74\x6c\x79\x20\x4d" \ -"\x41\x53\x4b\x20\x62\x69\x74\x73\x20\x61\x72\x65\x20\x73\x65\x74" \ -"\x20\x69\x6e\x20\x66\x69\x6c\x65\x27\x73\x20\x6d\x6f\x64\x65\x0a" \ -"\x09\x2d\x6d\x74\x69\x6d\x65\x20\x44\x41\x59\x53\x09\x6d\x74\x69" \ -"\x6d\x65\x20\x69\x73\x20\x67\x72\x65\x61\x74\x65\x72\x20\x74\x68" \ -"\x61\x6e\x20\x28\x2b\x4e\x29\x2c\x20\x6c\x65\x73\x73\x20\x74\x68" \ -"\x61\x6e\x20\x28\x2d\x4e\x29\x2c\x0a\x09\x09\x09\x6f\x72\x20\x65" \ -"\x78\x61\x63\x74\x6c\x79\x20\x4e\x20\x64\x61\x79\x73\x20\x69\x6e" \ -"\x20\x74\x68\x65\x20\x70\x61\x73\x74\x0a\x09\x2d\x6d\x6d\x69\x6e" \ -"\x20\x4d\x49\x4e\x53\x09\x6d\x74\x69\x6d\x65\x20\x69\x73\x20\x67" \ -"\x72\x65\x61\x74\x65\x72\x20\x74\x68\x61\x6e\x20\x28\x2b\x4e\x29" \ -"\x2c\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x28\x2d\x4e\x29" \ -"\x2c\x0a\x09\x09\x09\x6f\x72\x20\x65\x78\x61\x63\x74\x6c\x79\x20" \ -"\x4e\x20\x6d\x69\x6e\x75\x74\x65\x73\x20\x69\x6e\x20\x74\x68\x65" \ -"\x20\x70\x61\x73\x74\x0a\x09\x2d\x6e\x65\x77\x65\x72\x20\x46\x49" \ -"\x4c\x45\x09\x6d\x74\x69\x6d\x65\x20\x69\x73\x20\x6d\x6f\x72\x65" \ -"\x20\x72\x65\x63\x65\x6e\x74\x20\x74\x68\x61\x6e\x20\x46\x49\x4c" \ -"\x45\x27\x73\x0a\x09\x2d\x75\x73\x65\x72\x20\x4e\x41\x4d\x45\x2f" \ -"\x49\x44\x09\x46\x69\x6c\x65\x20\x69\x73\x20\x6f\x77\x6e\x65\x64" \ -"\x20\x62\x79\x20\x67\x69\x76\x65\x6e\x20\x75\x73\x65\x72\x0a\x09" \ -"\x2d\x67\x72\x6f\x75\x70\x20\x4e\x41\x4d\x45\x2f\x49\x44\x09\x46" \ -"\x69\x6c\x65\x20\x69\x73\x20\x6f\x77\x6e\x65\x64\x20\x62\x79\x20" \ -"\x67\x69\x76\x65\x6e\x20\x67\x72\x6f\x75\x70\x0a\x09\x2d\x73\x69" \ -"\x7a\x65\x20\x4e\x5b\x62\x63\x6b\x5d\x09\x46\x69\x6c\x65\x20\x73" \ -"\x69\x7a\x65\x20\x69\x73\x20\x4e\x20\x28\x63\x3a\x62\x79\x74\x65" \ -"\x73\x2c\x6b\x3a\x6b\x62\x79\x74\x65\x73\x2c\x62\x3a\x35\x31\x32" \ -"\x20\x62\x79\x74\x65\x73\x28\x64\x65\x66\x2e\x29\x29\x0a\x09\x09" \ -"\x09\x2b\x2f\x2d\x4e\x3a\x20\x66\x69\x6c\x65\x20\x73\x69\x7a\x65" \ -"\x20\x69\x73\x20\x62\x69\x67\x67\x65\x72\x2f\x73\x6d\x61\x6c\x6c" \ -"\x65\x72\x20\x74\x68\x61\x6e\x20\x4e\x0a\x09\x2d\x70\x72\x75\x6e" \ -"\x65\x09\x09\x49\x66\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x66\x69" \ -"\x6c\x65\x20\x69\x73\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c" \ -"\x20\x64\x6f\x6e\x27\x74\x20\x64\x65\x73\x63\x65\x6e\x64\x20\x69" \ -"\x6e\x74\x6f\x20\x69\x74\x0a\x49\x66\x20\x6e\x6f\x6e\x65\x20\x6f" \ -"\x66\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20" \ -"\x61\x63\x74\x69\x6f\x6e\x73\x20\x69\x73\x20\x73\x70\x65\x63\x69" \ -"\x66\x69\x65\x64\x2c\x20\x2d\x70\x72\x69\x6e\x74\x20\x69\x73\x20" \ -"\x61\x73\x73\x75\x6d\x65\x64\x0a\x09\x2d\x70\x72\x69\x6e\x74\x09" \ -"\x09\x50\x72\x69\x6e\x74\x20\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65" \ -"\x0a\x09\x2d\x70\x72\x69\x6e\x74\x30\x09\x09\x50\x72\x69\x6e\x74" \ -"\x20\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x2c\x20\x4e\x55\x4c\x20" \ -"\x74\x65\x72\x6d\x69\x6e\x61\x74\x65\x64\x0a\x09\x2d\x65\x78\x65" \ -"\x63\x20\x43\x4d\x44\x20\x41\x52\x47\x20\x3b\x09\x52\x75\x6e\x20" \ -"\x43\x4d\x44\x20\x77\x69\x74\x68\x20\x61\x6c\x6c\x20\x69\x6e\x73" \ -"\x74\x61\x6e\x63\x65\x73\x20\x6f\x66\x20\x7b\x7d\x20\x72\x65\x70" \ -"\x6c\x61\x63\x65\x64\x20\x62\x79\x0a\x09\x09\x09\x66\x69\x6c\x65" \ -"\x20\x6e\x61\x6d\x65\x2e\x20\x46\x61\x69\x6c\x73\x20\x69\x66\x20" \ -"\x43\x4d\x44\x20\x65\x78\x69\x74\x73\x20\x77\x69\x74\x68\x20\x6e" \ -"\x6f\x6e\x7a\x65\x72\x6f\x00\x5b\x2d\x62\x73\x5d\x20\x5b\x2d\x77" \ -"\x20\x57\x49\x44\x54\x48\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x57\x72\x61\x70\x20\x69\x6e\x70\x75\x74\x20\x6c\x69" \ -"\x6e\x65\x73\x20\x69\x6e\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45" \ -"\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x2c\x20\x77\x72\x69" \ -"\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a" \ -"\x09\x2d\x62\x09\x43\x6f\x75\x6e\x74\x20\x62\x79\x74\x65\x73\x20" \ -"\x72\x61\x74\x68\x65\x72\x20\x74\x68\x61\x6e\x20\x63\x6f\x6c\x75" \ -"\x6d\x6e\x73\x0a\x09\x2d\x73\x09\x42\x72\x65\x61\x6b\x20\x61\x74" \ -"\x20\x73\x70\x61\x63\x65\x73\x0a\x09\x2d\x77\x09\x55\x73\x65\x20" \ -"\x57\x49\x44\x54\x48\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20\x69\x6e" \ -"\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x38\x30\x00\x0a\x0a\x44\x69" \ -"\x73\x70\x6c\x61\x79\x20\x74\x68\x65\x20\x61\x6d\x6f\x75\x6e\x74" \ -"\x20\x6f\x66\x20\x66\x72\x65\x65\x20\x61\x6e\x64\x20\x75\x73\x65" \ -"\x64\x20\x73\x79\x73\x74\x65\x6d\x20\x6d\x65\x6d\x6f\x72\x79\x00" \ -"\x44\x45\x56\x49\x43\x45\x0a\x0a\x46\x72\x65\x65\x20\x61\x6c\x6c" \ -"\x20\x6d\x65\x6d\x6f\x72\x79\x20\x75\x73\x65\x64\x20\x62\x79\x20" \ -"\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x72\x61" \ -"\x6d\x64\x69\x73\x6b\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20" \ -"\x4d\x4f\x55\x4e\x54\x50\x4f\x49\x4e\x54\x0a\x0a\x09\x2d\x6f\x2c" \ -"\x2d\x2d\x6f\x66\x66\x73\x65\x74\x3d\x4f\x46\x46\x53\x45\x54\x09" \ -"\x4f\x66\x66\x73\x65\x74\x20\x69\x6e\x20\x62\x79\x74\x65\x73\x20" \ -"\x74\x6f\x20\x64\x69\x73\x63\x61\x72\x64\x20\x66\x72\x6f\x6d\x0a" \ -"\x09\x2d\x6c\x2c\x2d\x2d\x6c\x65\x6e\x67\x74\x68\x3d\x4c\x45\x4e" \ -"\x09\x09\x42\x79\x74\x65\x73\x20\x74\x6f\x20\x64\x69\x73\x63\x61" \ -"\x72\x64\x0a\x09\x2d\x6d\x2c\x2d\x2d\x6d\x69\x6e\x69\x6d\x75\x6d" \ -"\x3d\x4d\x49\x4e\x09\x4d\x69\x6e\x69\x6d\x75\x6d\x20\x65\x78\x74" \ -"\x65\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\x0a\x09\x2d\x76\x2c\x2d" \ -"\x2d\x76\x65\x72\x62\x6f\x73\x65\x09\x09\x50\x72\x69\x6e\x74\x20" \ -"\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x64\x69\x73\x63\x61\x72" \ -"\x64\x65\x64\x20\x62\x79\x74\x65\x73\x00\x5b\x4f\x50\x54\x49\x4f" \ -"\x4e\x53\x5d\x20\x46\x49\x4c\x45\x20\x6f\x72\x20\x50\x4f\x52\x54" \ -"\x2f\x50\x52\x4f\x54\x4f\x0a\x0a\x46\x69\x6e\x64\x20\x70\x72\x6f" \ -"\x63\x65\x73\x73\x65\x73\x20\x77\x68\x69\x63\x68\x20\x75\x73\x65" \ -"\x20\x46\x49\x4c\x45\x73\x20\x6f\x72\x20\x50\x4f\x52\x54\x73\x0a" \ -"\x0a\x09\x2d\x6d\x09\x46\x69\x6e\x64\x20\x70\x72\x6f\x63\x65\x73" \ -"\x73\x65\x73\x20\x77\x68\x69\x63\x68\x20\x75\x73\x65\x20\x73\x61" \ -"\x6d\x65\x20\x66\x73\x20\x61\x73\x20\x46\x49\x4c\x45\x73\x0a\x09" \ -"\x2d\x34\x2c\x2d\x36\x09\x53\x65\x61\x72\x63\x68\x20\x6f\x6e\x6c" \ -"\x79\x20\x49\x50\x76\x34\x2f\x49\x50\x76\x36\x20\x73\x70\x61\x63" \ -"\x65\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x64\x69\x73\x70" \ -"\x6c\x61\x79\x20\x50\x49\x44\x73\x0a\x09\x2d\x6b\x09\x4b\x69\x6c" \ -"\x6c\x20\x66\x6f\x75\x6e\x64\x20\x70\x72\x6f\x63\x65\x73\x73\x65" \ -"\x73\x0a\x09\x2d\x53\x49\x47\x4e\x41\x4c\x09\x53\x69\x67\x6e\x61" \ -"\x6c\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x28\x64\x65\x66\x61\x75" \ -"\x6c\x74\x3a\x20\x4b\x49\x4c\x4c\x29\x00\x5b\x4f\x50\x54\x49\x4f" \ -"\x4e\x53\x5d\x20\x5b\x2d\x2d\x5d\x20\x4f\x50\x54\x53\x54\x52\x49" \ -"\x4e\x47\x20\x50\x41\x52\x41\x4d\x53\x0a\x0a\x09\x2d\x61\x2c\x2d" \ -"\x2d\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x09\x09\x41\x6c" \ -"\x6c\x6f\x77\x20\x6c\x6f\x6e\x67\x20\x6f\x70\x74\x69\x6f\x6e\x73" \ -"\x20\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x73" \ -"\x69\x6e\x67\x6c\x65\x20\x2d\x0a\x09\x2d\x6c\x2c\x2d\x2d\x6c\x6f" \ -"\x6e\x67\x6f\x70\x74\x69\x6f\x6e\x73\x3d\x4c\x4f\x50\x54\x5b\x2c" \ -"\x2e\x2e\x2e\x5d\x09\x4c\x6f\x6e\x67\x20\x6f\x70\x74\x69\x6f\x6e" \ -"\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x65\x63\x6f\x67\x6e\x69\x7a" \ -"\x65\x64\x0a\x09\x2d\x6e\x2c\x2d\x2d\x6e\x61\x6d\x65\x3d\x50\x52" \ -"\x4f\x47\x4e\x41\x4d\x45\x09\x09\x54\x68\x65\x20\x6e\x61\x6d\x65" \ -"\x20\x75\x6e\x64\x65\x72\x20\x77\x68\x69\x63\x68\x20\x65\x72\x72" \ -"\x6f\x72\x73\x20\x61\x72\x65\x20\x72\x65\x70\x6f\x72\x74\x65\x64" \ -"\x0a\x09\x2d\x6f\x2c\x2d\x2d\x6f\x70\x74\x69\x6f\x6e\x73\x3d\x4f" \ -"\x50\x54\x53\x54\x52\x49\x4e\x47\x09\x09\x53\x68\x6f\x72\x74\x20" \ -"\x6f\x70\x74\x69\x6f\x6e\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x65" \ -"\x63\x6f\x67\x6e\x69\x7a\x65\x64\x0a\x09\x2d\x71\x2c\x2d\x2d\x71" \ -"\x75\x69\x65\x74\x09\x09\x09\x44\x69\x73\x61\x62\x6c\x65\x20\x65" \ -"\x72\x72\x6f\x72\x20\x72\x65\x70\x6f\x72\x74\x69\x6e\x67\x20\x62" \ -"\x79\x20\x67\x65\x74\x6f\x70\x74\x28\x33\x29\x0a\x09\x2d\x51\x2c" \ -"\x2d\x2d\x71\x75\x69\x65\x74\x2d\x6f\x75\x74\x70\x75\x74\x09\x09" \ -"\x4e\x6f\x20\x6e\x6f\x72\x6d\x61\x6c\x20\x6f\x75\x74\x70\x75\x74" \ -"\x0a\x09\x2d\x73\x2c\x2d\x2d\x73\x68\x65\x6c\x6c\x3d\x53\x48\x45" \ -"\x4c\x4c\x09\x09\x53\x65\x74\x20\x73\x68\x65\x6c\x6c\x20\x71\x75" \ -"\x6f\x74\x69\x6e\x67\x20\x63\x6f\x6e\x76\x65\x6e\x74\x69\x6f\x6e" \ -"\x73\x0a\x09\x2d\x54\x2c\x2d\x2d\x74\x65\x73\x74\x09\x09\x09\x54" \ -"\x65\x73\x74\x20\x66\x6f\x72\x20\x67\x65\x74\x6f\x70\x74\x28\x31" \ -"\x29\x20\x76\x65\x72\x73\x69\x6f\x6e\x0a\x09\x2d\x75\x2c\x2d\x2d" \ -"\x75\x6e\x71\x75\x6f\x74\x65\x64\x09\x09\x09\x44\x6f\x6e\x27\x74" \ -"\x20\x71\x75\x6f\x74\x65\x20\x74\x68\x65\x20\x6f\x75\x74\x70\x75" \ -"\x74\x0a\x0a\x45\x78\x61\x6d\x70\x6c\x65\x3a\x0a\x0a\x4f\x3d\x60" \ -"\x67\x65\x74\x6f\x70\x74\x20\x2d\x6c\x20\x62\x62\x3a\x20\x2d\x2d" \ -"\x20\x61\x62\x3a\x63\x3a\x3a\x20\x22\x24\x40\x22\x60\x20\x7c\x7c" \ -"\x20\x65\x78\x69\x74\x20\x31\x0a\x65\x76\x61\x6c\x20\x73\x65\x74" \ -"\x20\x2d\x2d\x20\x22\x24\x4f\x22\x0a\x77\x68\x69\x6c\x65\x20\x74" \ -"\x72\x75\x65\x3b\x20\x64\x6f\x0a\x09\x63\x61\x73\x65\x20\x22\x24" \ -"\x31\x22\x20\x69\x6e\x0a\x09\x2d\x61\x29\x09\x65\x63\x68\x6f\x20" \ -"\x41\x3b\x20\x73\x68\x69\x66\x74\x3b\x3b\x0a\x09\x2d\x62\x7c\x2d" \ -"\x2d\x62\x62\x29\x20\x65\x63\x68\x6f\x20\x22\x42\x3a\x27\x24\x32" \ -"\x27\x22\x3b\x20\x73\x68\x69\x66\x74\x20\x32\x3b\x3b\x0a\x09\x2d" \ -"\x63\x29\x09\x63\x61\x73\x65\x20\x22\x24\x32\x22\x20\x69\x6e\x0a" \ -"\x09\x09\x22\x22\x29\x09\x65\x63\x68\x6f\x20\x43\x3b\x20\x73\x68" \ -"\x69\x66\x74\x20\x32\x3b\x3b\x0a\x09\x09\x2a\x29\x09\x65\x63\x68" \ -"\x6f\x20\x22\x43\x3a\x27\x24\x32\x27\x22\x3b\x20\x73\x68\x69\x66" \ -"\x74\x20\x32\x3b\x3b\x0a\x09\x09\x65\x73\x61\x63\x3b\x3b\x0a\x09" \ -"\x2d\x2d\x29\x09\x73\x68\x69\x66\x74\x3b\x20\x62\x72\x65\x61\x6b" \ -"\x3b\x3b\x0a\x09\x2a\x29\x09\x65\x63\x68\x6f\x20\x45\x72\x72\x6f" \ -"\x72\x3b\x20\x65\x78\x69\x74\x20\x31\x3b\x3b\x0a\x09\x65\x73\x61" \ -"\x63\x0a\x64\x6f\x6e\x65\x00\x5b\x2d\x48\x68\x6e\x6c\x4c\x6f\x71" \ -"\x76\x73\x72\x69\x77\x46\x45\x5d\x20\x5b\x2d\x6d\x20\x4e\x5d\x20" \ -"\x5b\x2d\x41\x2f\x42\x2f\x43\x20\x4e\x5d\x20\x50\x41\x54\x54\x45" \ -"\x52\x4e\x2f\x2d\x65\x20\x50\x41\x54\x54\x45\x52\x4e\x2e\x2e\x2e" \ -"\x2f\x2d\x66\x20\x46\x49\x4c\x45\x20\x5b\x46\x49\x4c\x45\x5d\x2e" \ -"\x2e\x2e\x0a\x0a\x53\x65\x61\x72\x63\x68\x20\x66\x6f\x72\x20\x50" \ -"\x41\x54\x54\x45\x52\x4e\x20\x69\x6e\x20\x46\x49\x4c\x45\x73\x20" \ -"\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x48\x09" \ -"\x41\x64\x64\x20\x27\x66\x69\x6c\x65\x6e\x61\x6d\x65\x3a\x27\x20" \ -"\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x68\x09\x44\x6f\x20\x6e\x6f" \ -"\x74\x20\x61\x64\x64\x20\x27\x66\x69\x6c\x65\x6e\x61\x6d\x65\x3a" \ -"\x27\x20\x70\x72\x65\x66\x69\x78\x0a\x09\x2d\x6e\x09\x41\x64\x64" \ -"\x20\x27\x6c\x69\x6e\x65\x5f\x6e\x6f\x3a\x27\x20\x70\x72\x65\x66" \ -"\x69\x78\x0a\x09\x2d\x6c\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79" \ -"\x20\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x66\x69\x6c\x65\x73\x20" \ -"\x74\x68\x61\x74\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x4c\x09\x53" \ -"\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x6e\x61\x6d\x65\x73\x20\x6f" \ -"\x66\x20\x66\x69\x6c\x65\x73\x20\x74\x68\x61\x74\x20\x64\x6f\x6e" \ -"\x27\x74\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x63\x09\x53\x68\x6f" \ -"\x77\x20\x6f\x6e\x6c\x79\x20\x63\x6f\x75\x6e\x74\x20\x6f\x66\x20" \ -"\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x6c\x69\x6e\x65\x73\x0a\x09" \ -"\x2d\x6f\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x74\x68\x65" \ -"\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x70\x61\x72\x74\x20\x6f" \ -"\x66\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74" \ -"\x2e\x20\x52\x65\x74\x75\x72\x6e\x20\x30\x20\x69\x66\x20\x50\x41" \ -"\x54\x54\x45\x52\x4e\x20\x69\x73\x20\x66\x6f\x75\x6e\x64\x2c\x20" \ -"\x31\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x0a\x09\x2d\x76\x09" \ -"\x53\x65\x6c\x65\x63\x74\x20\x6e\x6f\x6e\x2d\x6d\x61\x74\x63\x68" \ -"\x69\x6e\x67\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x73\x09\x53\x75" \ -"\x70\x70\x72\x65\x73\x73\x20\x6f\x70\x65\x6e\x20\x61\x6e\x64\x20" \ -"\x72\x65\x61\x64\x20\x65\x72\x72\x6f\x72\x73\x0a\x09\x2d\x72\x09" \ -"\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f" \ -"\x72\x65\x20\x63\x61\x73\x65\x0a\x09\x2d\x77\x09\x4d\x61\x74\x63" \ -"\x68\x20\x77\x68\x6f\x6c\x65\x20\x77\x6f\x72\x64\x73\x20\x6f\x6e" \ -"\x6c\x79\x0a\x09\x2d\x78\x09\x4d\x61\x74\x63\x68\x20\x77\x68\x6f" \ -"\x6c\x65\x20\x6c\x69\x6e\x65\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d" \ -"\x46\x09\x50\x41\x54\x54\x45\x52\x4e\x20\x69\x73\x20\x61\x20\x6c" \ -"\x69\x74\x65\x72\x61\x6c\x20\x28\x6e\x6f\x74\x20\x72\x65\x67\x65" \ -"\x78\x70\x29\x0a\x09\x2d\x45\x09\x50\x41\x54\x54\x45\x52\x4e\x20" \ -"\x69\x73\x20\x61\x6e\x20\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x72" \ -"\x65\x67\x65\x78\x70\x0a\x09\x2d\x6d\x20\x4e\x09\x4d\x61\x74\x63" \ -"\x68\x20\x75\x70\x20\x74\x6f\x20\x4e\x20\x74\x69\x6d\x65\x73\x20" \ -"\x70\x65\x72\x20\x66\x69\x6c\x65\x0a\x09\x2d\x41\x20\x4e\x09\x50" \ -"\x72\x69\x6e\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20" \ -"\x74\x72\x61\x69\x6c\x69\x6e\x67\x20\x63\x6f\x6e\x74\x65\x78\x74" \ -"\x0a\x09\x2d\x42\x20\x4e\x09\x50\x72\x69\x6e\x74\x20\x4e\x20\x6c" \ -"\x69\x6e\x65\x73\x20\x6f\x66\x20\x6c\x65\x61\x64\x69\x6e\x67\x20" \ -"\x63\x6f\x6e\x74\x65\x78\x74\x0a\x09\x2d\x43\x20\x4e\x09\x53\x61" \ -"\x6d\x65\x20\x61\x73\x20\x27\x2d\x41\x20\x4e\x20\x2d\x42\x20\x4e" \ -"\x27\x0a\x09\x2d\x65\x20\x50\x54\x52\x4e\x09\x50\x61\x74\x74\x65" \ -"\x72\x6e\x20\x74\x6f\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x66\x20" \ -"\x46\x49\x4c\x45\x09\x52\x65\x61\x64\x20\x70\x61\x74\x74\x65\x72" \ -"\x6e\x20\x66\x72\x6f\x6d\x20\x66\x69\x6c\x65\x00\x5b\x55\x53\x45" \ -"\x52\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20\x67\x72" \ -"\x6f\x75\x70\x20\x6d\x65\x6d\x62\x65\x72\x73\x68\x69\x70\x73\x20" \ -"\x6f\x66\x20\x55\x53\x45\x52\x20\x6f\x72\x20\x66\x6f\x72\x20\x74" \ -"\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65" \ -"\x73\x73\x00\x5b\x2d\x63\x66\x74\x5d\x20\x5b\x46\x49\x4c\x45\x5d" \ -"\x2e\x2e\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20" \ -"\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29" \ -"\x0a\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73" \ -"\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a" \ -"\x09\x2d\x74\x09\x54\x65\x73\x74\x20\x66\x69\x6c\x65\x20\x69\x6e" \ -"\x74\x65\x67\x72\x69\x74\x79\x00\x5b\x2d\x63\x66\x64\x5d\x20\x5b" \ -"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6d\x70\x72\x65" \ -"\x73\x73\x20\x46\x49\x4c\x45\x73\x20\x28\x6f\x72\x20\x73\x74\x64" \ -"\x69\x6e\x29\x0a\x0a\x09\x2d\x64\x09\x44\x65\x63\x6f\x6d\x70\x72" \ -"\x65\x73\x73\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20\x74\x6f" \ -"\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63" \ -"\x65\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46\x49\x4c" \ -"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x66\x69\x72" \ -"\x73\x74\x20\x31\x30\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x65" \ -"\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64" \ -"\x69\x6e\x29\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x2e\x0a\x57" \ -"\x69\x74\x68\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x6f\x6e" \ -"\x65\x20\x46\x49\x4c\x45\x2c\x20\x70\x72\x65\x63\x65\x64\x65\x20" \ -"\x65\x61\x63\x68\x20\x77\x69\x74\x68\x20\x61\x20\x66\x69\x6c\x65" \ -"\x6e\x61\x6d\x65\x20\x68\x65\x61\x64\x65\x72\x2e\x0a\x0a\x09\x2d" \ -"\x6e\x20\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e\x74\x20\x66" \ -"\x69\x72\x73\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x0a\x0a\x4e\x20" \ -"\x6d\x61\x79\x20\x62\x65\x20\x73\x75\x66\x66\x69\x78\x65\x64\x20" \ -"\x62\x79\x20\x6b\x20\x28\x78\x31\x30\x32\x34\x29\x2c\x20\x62\x20" \ -"\x28\x78\x35\x31\x32\x29\x2c\x20\x6f\x72\x20\x6d\x20\x28\x78\x31" \ -"\x30\x32\x34\x5e\x32\x29\x2e\x00\x5b\x2d\x62\x63\x43\x64\x65\x66" \ -"\x6e\x6f\x73\x76\x78\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e" \ -"\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x46\x49\x4c\x45\x73\x20" \ -"\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x20\x69\x6e\x20\x61\x20" \ -"\x75\x73\x65\x72\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x66" \ -"\x6f\x72\x6d\x61\x74\x0a\x0a\x09\x2d\x62\x09\x09\x4f\x6e\x65\x2d" \ -"\x62\x79\x74\x65\x20\x6f\x63\x74\x61\x6c\x20\x64\x69\x73\x70\x6c" \ -"\x61\x79\x0a\x09\x2d\x63\x09\x09\x4f\x6e\x65\x2d\x62\x79\x74\x65" \ -"\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x20\x64\x69\x73\x70\x6c" \ -"\x61\x79\x0a\x09\x2d\x43\x09\x09\x43\x61\x6e\x6f\x6e\x69\x63\x61" \ -"\x6c\x20\x68\x65\x78\x2b\x41\x53\x43\x49\x49\x2c\x20\x31\x36\x20" \ -"\x62\x79\x74\x65\x73\x20\x70\x65\x72\x20\x6c\x69\x6e\x65\x0a\x09" \ -"\x2d\x64\x09\x09\x54\x77\x6f\x2d\x62\x79\x74\x65\x20\x64\x65\x63" \ -"\x69\x6d\x61\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x65" \ -"\x20\x46\x4f\x52\x4d\x41\x54\x5f\x53\x54\x52\x49\x4e\x47\x0a\x09" \ -"\x2d\x66\x20\x46\x4f\x52\x4d\x41\x54\x5f\x46\x49\x4c\x45\x0a\x09" \ -"\x2d\x6e\x20\x4c\x45\x4e\x47\x54\x48\x09\x49\x6e\x74\x65\x72\x70" \ -"\x72\x65\x74\x20\x6f\x6e\x6c\x79\x20\x4c\x45\x4e\x47\x54\x48\x20" \ -"\x62\x79\x74\x65\x73\x20\x6f\x66\x20\x69\x6e\x70\x75\x74\x0a\x09" \ -"\x2d\x6f\x09\x09\x54\x77\x6f\x2d\x62\x79\x74\x65\x20\x6f\x63\x74" \ -"\x61\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x0a\x09\x2d\x73\x20\x4f" \ -"\x46\x46\x53\x45\x54\x09\x53\x6b\x69\x70\x20\x4f\x46\x46\x53\x45" \ -"\x54\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x76\x09\x09\x44\x69\x73" \ -"\x70\x6c\x61\x79\x20\x61\x6c\x6c\x20\x69\x6e\x70\x75\x74\x20\x64" \ -"\x61\x74\x61\x0a\x09\x2d\x78\x09\x09\x54\x77\x6f\x2d\x62\x79\x74" \ -"\x65\x20\x68\x65\x78\x61\x64\x65\x63\x69\x6d\x61\x6c\x20\x64\x69" \ -"\x73\x70\x6c\x61\x79\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20" \ -"\x5b\x55\x53\x45\x52\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x69\x6e" \ -"\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x61\x62\x6f\x75\x74\x20" \ -"\x55\x53\x45\x52\x20\x6f\x72\x20\x74\x68\x65\x20\x63\x75\x72\x72" \ -"\x65\x6e\x74\x20\x75\x73\x65\x72\x0a\x0a\x09\x2d\x75\x09\x55\x73" \ -"\x65\x72\x20\x49\x44\x0a\x09\x2d\x67\x09\x47\x72\x6f\x75\x70\x20" \ -"\x49\x44\x0a\x09\x2d\x47\x09\x53\x75\x70\x70\x6c\x65\x6d\x65\x6e" \ -"\x74\x61\x72\x79\x20\x67\x72\x6f\x75\x70\x20\x49\x44\x73\x0a\x09" \ -"\x2d\x6e\x09\x50\x72\x69\x6e\x74\x20\x6e\x61\x6d\x65\x73\x20\x69" \ -"\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x6e\x75\x6d\x62\x65\x72" \ -"\x73\x0a\x09\x2d\x72\x09\x50\x72\x69\x6e\x74\x20\x72\x65\x61\x6c" \ -"\x20\x49\x44\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x65" \ -"\x66\x66\x65\x63\x74\x69\x76\x65\x20\x49\x44\x00\x5b\x2d\x71\x66" \ -"\x77\x72\x73\x76\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x20\x5b\x73\x79" \ -"\x6d\x62\x6f\x6c\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x09\x2d\x72\x09\x52\x65\x6d\x6f\x76\x65\x20\x4d\x4f\x44\x55\x4c" \ -"\x45\x20\x28\x73\x74\x61\x63\x6b\x73\x29\x20\x6f\x72\x20\x64\x6f" \ -"\x20\x61\x75\x74\x6f\x63\x6c\x65\x61\x6e\x0a\x09\x2d\x71\x09\x51" \ -"\x75\x69\x65\x74\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65" \ -"\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x77\x09\x57" \ -"\x61\x69\x74\x20\x66\x6f\x72\x20\x75\x6e\x6c\x6f\x61\x64\x0a\x09" \ -"\x2d\x73\x09\x52\x65\x70\x6f\x72\x74\x20\x76\x69\x61\x20\x73\x79" \ -"\x73\x6c\x6f\x67\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20" \ -"\x73\x74\x64\x65\x72\x72\x00\x5b\x2d\x63\x64\x44\x73\x70\x5d\x20" \ -"\x5b\x2d\x6f\x20\x55\x53\x45\x52\x5d\x20\x5b\x2d\x67\x20\x47\x52" \ -"\x50\x5d\x20\x5b\x2d\x6d\x20\x4d\x4f\x44\x45\x5d\x20\x5b\x53\x4f" \ -"\x55\x52\x43\x45\x5d\x2e\x2e\x2e\x20\x44\x45\x53\x54\x0a\x0a\x43" \ -"\x6f\x70\x79\x20\x66\x69\x6c\x65\x73\x20\x61\x6e\x64\x20\x73\x65" \ -"\x74\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a\x0a\x09\x2d" \ -"\x63\x09\x4a\x75\x73\x74\x20\x63\x6f\x70\x79\x20\x28\x64\x65\x66" \ -"\x61\x75\x6c\x74\x29\x0a\x09\x2d\x64\x09\x43\x72\x65\x61\x74\x65" \ -"\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x2d\x44" \ -"\x09\x43\x72\x65\x61\x74\x65\x20\x6c\x65\x61\x64\x69\x6e\x67\x20" \ -"\x74\x61\x72\x67\x65\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69" \ -"\x65\x73\x0a\x09\x2d\x73\x09\x53\x74\x72\x69\x70\x20\x73\x79\x6d" \ -"\x62\x6f\x6c\x20\x74\x61\x62\x6c\x65\x0a\x09\x2d\x70\x09\x50\x72" \ -"\x65\x73\x65\x72\x76\x65\x20\x64\x61\x74\x65\x0a\x09\x2d\x6f\x20" \ -"\x55\x53\x45\x52\x09\x53\x65\x74\x20\x6f\x77\x6e\x65\x72\x73\x68" \ -"\x69\x70\x0a\x09\x2d\x67\x20\x47\x52\x50\x09\x53\x65\x74\x20\x67" \ -"\x72\x6f\x75\x70\x20\x6f\x77\x6e\x65\x72\x73\x68\x69\x70\x0a\x09" \ -"\x2d\x6d\x20\x4d\x4f\x44\x45\x09\x53\x65\x74\x20\x70\x65\x72\x6d" \ -"\x69\x73\x73\x69\x6f\x6e\x73\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x53" \ -"\x49\x47\x5d\x20\x50\x49\x44\x2e\x2e\x2e\x0a\x0a\x53\x65\x6e\x64" \ -"\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28\x64\x65\x66\x61\x75" \ -"\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74\x6f\x20\x67\x69\x76" \ -"\x65\x6e\x20\x50\x49\x44\x73\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73" \ -"\x74\x20\x61\x6c\x6c\x20\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d" \ -"\x65\x73\x20\x61\x6e\x64\x20\x6e\x75\x6d\x62\x65\x72\x73\x00\x5b" \ -"\x2d\x6c\x5d\x20\x5b\x2d\x71\x5d\x20\x5b\x2d\x53\x49\x47\x5d\x20" \ -"\x50\x52\x4f\x43\x45\x53\x53\x5f\x4e\x41\x4d\x45\x2e\x2e\x2e\x0a" \ -"\x0a\x53\x65\x6e\x64\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28" \ -"\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74" \ -"\x6f\x20\x67\x69\x76\x65\x6e\x20\x70\x72\x6f\x63\x65\x73\x73\x65" \ -"\x73\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73\x74\x20\x61\x6c\x6c\x20" \ -"\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d\x65\x73\x20\x61\x6e\x64" \ -"\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x71\x09\x44\x6f\x6e" \ -"\x27\x74\x20\x63\x6f\x6d\x70\x6c\x61\x69\x6e\x20\x69\x66\x20\x6e" \ -"\x6f\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x77\x65\x72\x65" \ -"\x20\x6b\x69\x6c\x6c\x65\x64\x00\x5b\x2d\x6c\x5d\x20\x5b\x2d\x53" \ -"\x49\x47\x5d\x20\x5b\x2d\x6f\x20\x50\x49\x44\x5d\x2e\x2e\x2e\x0a" \ -"\x0a\x53\x65\x6e\x64\x20\x61\x20\x73\x69\x67\x6e\x61\x6c\x20\x28" \ -"\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x54\x45\x52\x4d\x29\x20\x74" \ -"\x6f\x20\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20" \ -"\x6f\x75\x74\x73\x69\x64\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20" \ -"\x73\x65\x73\x73\x69\x6f\x6e\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73" \ -"\x74\x20\x61\x6c\x6c\x20\x73\x69\x67\x6e\x61\x6c\x20\x6e\x61\x6d" \ -"\x65\x73\x20\x61\x6e\x64\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09" \ -"\x2d\x6f\x20\x50\x49\x44\x09\x44\x6f\x6e\x27\x74\x20\x73\x69\x67" \ -"\x6e\x61\x6c\x20\x74\x68\x69\x73\x20\x50\x49\x44\x00\x5b\x2d\x45" \ -"\x4e\x68\x7e\x49\x3f\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e" \ -"\x0a\x0a\x56\x69\x65\x77\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20" \ -"\x73\x74\x64\x69\x6e\x29\x20\x6f\x6e\x65\x20\x73\x63\x72\x65\x65" \ -"\x6e\x66\x75\x6c\x20\x61\x74\x20\x61\x20\x74\x69\x6d\x65\x0a\x0a" \ -"\x09\x2d\x45\x09\x51\x75\x69\x74\x20\x6f\x6e\x63\x65\x20\x74\x68" \ -"\x65\x20\x65\x6e\x64\x20\x6f\x66\x20\x61\x20\x66\x69\x6c\x65\x20" \ -"\x69\x73\x20\x72\x65\x61\x63\x68\x65\x64\x0a\x09\x2d\x4e\x09\x50" \ -"\x72\x65\x66\x69\x78\x20\x6c\x69\x6e\x65\x20\x6e\x75\x6d\x62\x65" \ -"\x72\x20\x74\x6f\x20\x65\x61\x63\x68\x20\x6c\x69\x6e\x65\x0a\x09" \ -"\x2d\x49\x09\x49\x67\x6e\x6f\x72\x65\x20\x63\x61\x73\x65\x20\x69" \ -"\x6e\x20\x61\x6c\x6c\x20\x73\x65\x61\x72\x63\x68\x65\x73\x0a\x09" \ -"\x2d\x7e\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x7e\x73\x20\x64" \ -"\x69\x73\x70\x6c\x61\x79\x65\x64\x20\x70\x61\x73\x74\x20\x45\x4f" \ -"\x46\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x54\x41\x52\x47" \ -"\x45\x54\x2e\x2e\x2e\x20\x4c\x49\x4e\x4b\x7c\x44\x49\x52\x0a\x0a" \ -"\x43\x72\x65\x61\x74\x65\x20\x61\x20\x6c\x69\x6e\x6b\x20\x4c\x49" \ -"\x4e\x4b\x20\x6f\x72\x20\x44\x49\x52\x2f\x54\x41\x52\x47\x45\x54" \ -"\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65" \ -"\x64\x20\x54\x41\x52\x47\x45\x54\x28\x73\x29\x0a\x0a\x09\x2d\x73" \ -"\x09\x4d\x61\x6b\x65\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x20\x69" \ -"\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x68\x61\x72\x64\x6c\x69" \ -"\x6e\x6b\x73\x0a\x09\x2d\x66\x09\x52\x65\x6d\x6f\x76\x65\x20\x65" \ -"\x78\x69\x73\x74\x69\x6e\x67\x20\x64\x65\x73\x74\x69\x6e\x61\x74" \ -"\x69\x6f\x6e\x73\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x64" \ -"\x65\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x73\x79\x6d\x6c\x69" \ -"\x6e\x6b\x73\x20\x2d\x20\x74\x72\x65\x61\x74\x20\x6c\x69\x6b\x65" \ -"\x20\x6e\x6f\x72\x6d\x61\x6c\x20\x66\x69\x6c\x65\x0a\x09\x2d\x62" \ -"\x09\x4d\x61\x6b\x65\x20\x61\x20\x62\x61\x63\x6b\x75\x70\x20\x6f" \ -"\x66\x20\x74\x68\x65\x20\x74\x61\x72\x67\x65\x74\x20\x28\x69\x66" \ -"\x20\x65\x78\x69\x73\x74\x73\x29\x20\x62\x65\x66\x6f\x72\x65\x20" \ -"\x6c\x69\x6e\x6b\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a\x09" \ -"\x2d\x53\x20\x73\x75\x66\x09\x55\x73\x65\x20\x73\x75\x66\x66\x69" \ -"\x78\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x7e\x20\x77" \ -"\x68\x65\x6e\x20\x6d\x61\x6b\x69\x6e\x67\x20\x62\x61\x63\x6b\x75" \ -"\x70\x20\x66\x69\x6c\x65\x73\x0a\x09\x2d\x54\x09\x32\x6e\x64\x20" \ -"\x61\x72\x67\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x61\x20\x44\x49" \ -"\x52\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x00\x5b\x2d" \ -"\x72\x5d\x20\x5b\x2d\x6f\x20\x4f\x46\x53\x5d\x20\x4c\x4f\x4f\x50" \ -"\x44\x45\x56\x20\x46\x49\x4c\x45\x20\x2d\x20\x61\x73\x73\x6f\x63" \ -"\x69\x61\x74\x65\x20\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65" \ -"\x73\x0a\x09\x6c\x6f\x73\x65\x74\x75\x70\x20\x2d\x64\x20\x4c\x4f" \ -"\x4f\x50\x44\x45\x56\x20\x2d\x20\x64\x69\x73\x61\x73\x73\x6f\x63" \ -"\x69\x61\x74\x65\x0a\x09\x6c\x6f\x73\x65\x74\x75\x70\x20\x5b\x2d" \ -"\x66\x5d\x20\x2d\x20\x73\x68\x6f\x77\x0a\x0a\x09\x2d\x6f\x20\x4f" \ -"\x46\x53\x09\x53\x74\x61\x72\x74\x20\x4f\x46\x53\x20\x62\x79\x74" \ -"\x65\x73\x20\x69\x6e\x74\x6f\x20\x46\x49\x4c\x45\x0a\x09\x2d\x72" \ -"\x09\x52\x65\x61\x64\x2d\x6f\x6e\x6c\x79\x0a\x09\x2d\x66\x09\x53" \ -"\x68\x6f\x77\x20\x66\x69\x72\x73\x74\x20\x66\x72\x65\x65\x20\x6c" \ -"\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x00\x5b\x2d\x31\x41\x61" \ -"\x43\x78\x64\x4c\x48\x52\x46\x70\x6c\x69\x6e\x73\x65\x68\x72\x53" \ -"\x58\x76\x63\x74\x75\x5d\x20\x5b\x2d\x77\x20\x57\x49\x44\x54\x48" \ -"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73" \ -"\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x63\x6f\x6e\x74" \ -"\x65\x6e\x74\x73\x0a\x0a\x09\x2d\x31\x09\x4f\x6e\x65\x20\x63\x6f" \ -"\x6c\x75\x6d\x6e\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d\x61\x09" \ -"\x49\x6e\x63\x6c\x75\x64\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20" \ -"\x77\x68\x69\x63\x68\x20\x73\x74\x61\x72\x74\x20\x77\x69\x74\x68" \ -"\x20\x2e\x0a\x09\x2d\x41\x09\x4c\x69\x6b\x65\x20\x2d\x61\x2c\x20" \ -"\x62\x75\x74\x20\x65\x78\x63\x6c\x75\x64\x65\x20\x2e\x20\x61\x6e" \ -"\x64\x20\x2e\x2e\x0a\x09\x2d\x43\x09\x4c\x69\x73\x74\x20\x62\x79" \ -"\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x0a\x09\x2d\x78\x09\x4c\x69\x73" \ -"\x74\x20\x62\x79\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x64\x09\x4c" \ -"\x69\x73\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x65\x6e" \ -"\x74\x72\x69\x65\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66" \ -"\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x09\x2d\x4c\x09\x46\x6f" \ -"\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x2d" \ -"\x48\x09\x46\x6f\x6c\x6c\x6f\x77\x20\x73\x79\x6d\x6c\x69\x6e\x6b" \ -"\x73\x20\x6f\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e" \ -"\x65\x0a\x09\x2d\x52\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d" \ -"\x70\x09\x41\x70\x70\x65\x6e\x64\x20\x2f\x20\x74\x6f\x20\x64\x69" \ -"\x72\x20\x65\x6e\x74\x72\x69\x65\x73\x0a\x09\x2d\x46\x09\x41\x70" \ -"\x70\x65\x6e\x64\x20\x69\x6e\x64\x69\x63\x61\x74\x6f\x72\x20\x28" \ -"\x6f\x6e\x65\x20\x6f\x66\x20\x2a\x2f\x3d\x40\x7c\x29\x20\x74\x6f" \ -"\x20\x65\x6e\x74\x72\x69\x65\x73\x0a\x09\x2d\x6c\x09\x4c\x6f\x6e" \ -"\x67\x20\x6c\x69\x73\x74\x69\x6e\x67\x20\x66\x6f\x72\x6d\x61\x74" \ -"\x0a\x09\x2d\x69\x09\x4c\x69\x73\x74\x20\x69\x6e\x6f\x64\x65\x20" \ -"\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x6e\x09\x4c\x69\x73\x74" \ -"\x20\x6e\x75\x6d\x65\x72\x69\x63\x20\x55\x49\x44\x73\x20\x61\x6e" \ -"\x64\x20\x47\x49\x44\x73\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f" \ -"\x66\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x73\x09\x4c\x69\x73\x74" \ -"\x20\x61\x6c\x6c\x6f\x63\x61\x74\x65\x64\x20\x62\x6c\x6f\x63\x6b" \ -"\x73\x0a\x09\x2d\x65\x09\x4c\x69\x73\x74\x20\x66\x75\x6c\x6c\x20" \ -"\x64\x61\x74\x65\x20\x61\x6e\x64\x20\x74\x69\x6d\x65\x0a\x09\x2d" \ -"\x68\x09\x4c\x69\x73\x74\x20\x73\x69\x7a\x65\x73\x20\x69\x6e\x20" \ -"\x68\x75\x6d\x61\x6e\x20\x72\x65\x61\x64\x61\x62\x6c\x65\x20\x66" \ -"\x6f\x72\x6d\x61\x74\x20\x28\x31\x4b\x20\x32\x34\x33\x4d\x20\x32" \ -"\x47\x29\x0a\x09\x2d\x72\x09\x53\x6f\x72\x74\x20\x69\x6e\x20\x72" \ -"\x65\x76\x65\x72\x73\x65\x20\x6f\x72\x64\x65\x72\x0a\x09\x2d\x53" \ -"\x09\x53\x6f\x72\x74\x20\x62\x79\x20\x73\x69\x7a\x65\x0a\x09\x2d" \ -"\x58\x09\x53\x6f\x72\x74\x20\x62\x79\x20\x65\x78\x74\x65\x6e\x73" \ -"\x69\x6f\x6e\x0a\x09\x2d\x76\x09\x53\x6f\x72\x74\x20\x62\x79\x20" \ -"\x76\x65\x72\x73\x69\x6f\x6e\x0a\x09\x2d\x63\x09\x57\x69\x74\x68" \ -"\x20\x2d\x6c\x3a\x20\x73\x6f\x72\x74\x20\x62\x79\x20\x63\x74\x69" \ -"\x6d\x65\x0a\x09\x2d\x74\x09\x57\x69\x74\x68\x20\x2d\x6c\x3a\x20" \ -"\x73\x6f\x72\x74\x20\x62\x79\x20\x6d\x74\x69\x6d\x65\x0a\x09\x2d" \ -"\x75\x09\x57\x69\x74\x68\x20\x2d\x6c\x3a\x20\x73\x6f\x72\x74\x20" \ -"\x62\x79\x20\x61\x74\x69\x6d\x65\x0a\x09\x2d\x77\x20\x4e\x09\x41" \ -"\x73\x73\x75\x6d\x65\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x69\x6e" \ -"\x61\x6c\x20\x69\x73\x20\x4e\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20" \ -"\x77\x69\x64\x65\x0a\x09\x2d\x2d\x63\x6f\x6c\x6f\x72\x5b\x3d\x7b" \ -"\x61\x6c\x77\x61\x79\x73\x2c\x6e\x65\x76\x65\x72\x2c\x61\x75\x74" \ -"\x6f\x7d\x5d\x09\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x63\x6f\x6c\x6f" \ -"\x72\x69\x6e\x67\x00\x5b\x2d\x52\x61\x64\x6c\x76\x5d\x20\x5b\x46" \ -"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20\x66\x69" \ -"\x6c\x65\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x6f\x6e" \ -"\x20\x61\x6e\x20\x65\x78\x74\x32\x20\x66\x73\x0a\x0a\x09\x2d\x52" \ -"\x09\x52\x65\x63\x75\x72\x73\x65\x0a\x09\x2d\x61\x09\x44\x6f\x6e" \ -"\x27\x74\x20\x68\x69\x64\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20" \ -"\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x77\x69\x74\x68\x20\x2e\x0a" \ -"\x09\x2d\x64\x09\x4c\x69\x73\x74\x20\x64\x69\x72\x65\x63\x74\x6f" \ -"\x72\x79\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x69\x6e\x73\x74\x65" \ -"\x61\x64\x20\x6f\x66\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x09" \ -"\x2d\x6c\x09\x4c\x69\x73\x74\x20\x6c\x6f\x6e\x67\x20\x66\x6c\x61" \ -"\x67\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x76\x09\x4c\x69\x73\x74" \ -"\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x27\x73\x20\x76\x65\x72\x73" \ -"\x69\x6f\x6e\x2f\x67\x65\x6e\x65\x72\x61\x74\x69\x6f\x6e\x20\x6e" \ -"\x75\x6d\x62\x65\x72\x00\x5b\x2d\x71\x66\x77\x72\x73\x76\x5d\x20" \ -"\x4d\x4f\x44\x55\x4c\x45\x20\x5b\x73\x79\x6d\x62\x6f\x6c\x3d\x76" \ -"\x61\x6c\x75\x65\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x72\x09\x52\x65" \ -"\x6d\x6f\x76\x65\x20\x4d\x4f\x44\x55\x4c\x45\x20\x28\x73\x74\x61" \ -"\x63\x6b\x73\x29\x20\x6f\x72\x20\x64\x6f\x20\x61\x75\x74\x6f\x63" \ -"\x6c\x65\x61\x6e\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09" \ -"\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x66\x09\x46" \ -"\x6f\x72\x63\x65\x0a\x09\x2d\x77\x09\x57\x61\x69\x74\x20\x66\x6f" \ -"\x72\x20\x75\x6e\x6c\x6f\x61\x64\x0a\x09\x2d\x73\x09\x52\x65\x70" \ -"\x6f\x72\x74\x20\x76\x69\x61\x20\x73\x79\x73\x6c\x6f\x67\x20\x69" \ -"\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x65\x72\x72" \ -"\x00\x0a\x0a\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20\x6f\x70\x65\x6e" \ -"\x20\x66\x69\x6c\x65\x73\x00\x5b\x2d\x6d\x6b\x5d\x0a\x0a\x4c\x69" \ -"\x73\x74\x20\x61\x6c\x6c\x20\x50\x43\x49\x20\x64\x65\x76\x69\x63" \ -"\x65\x73\x0a\x0a\x09\x2d\x6d\x09\x50\x61\x72\x73\x61\x62\x6c\x65" \ -"\x20\x6f\x75\x74\x70\x75\x74\x0a\x09\x2d\x6b\x09\x53\x68\x6f\x77" \ -"\x20\x64\x72\x69\x76\x65\x72\x00\x08\x00\x46\x49\x4c\x45\x0a\x0a" \ -"\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74" \ -"\x64\x6f\x75\x74\x00\x5b\x2d\x63\x66\x76\x64\x31\x32\x33\x34\x35" \ -"\x36\x37\x38\x39\x43\x46\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x09\x2d\x31\x2e\x2e\x39\x09\x43\x6f\x6d\x70\x72\x65" \ -"\x73\x73\x69\x6f\x6e\x20\x6c\x65\x76\x65\x6c\x0a\x09\x2d\x64\x09" \ -"\x44\x65\x63\x6f\x6d\x70\x72\x65\x73\x73\x0a\x09\x2d\x63\x09\x57" \ -"\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09" \ -"\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x76\x09\x56\x65\x72" \ -"\x62\x6f\x73\x65\x0a\x09\x2d\x46\x09\x44\x6f\x6e\x27\x74\x20\x73" \ -"\x74\x6f\x72\x65\x20\x6f\x72\x20\x76\x65\x72\x69\x66\x79\x20\x63" \ -"\x68\x65\x63\x6b\x73\x75\x6d\x0a\x09\x2d\x43\x09\x41\x6c\x73\x6f" \ -"\x20\x77\x72\x69\x74\x65\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20" \ -"\x6f\x66\x20\x63\x6f\x6d\x70\x72\x65\x73\x73\x65\x64\x20\x62\x6c" \ -"\x6f\x63\x6b\x00\x5b\x2d\x76\x43\x46\x5d\x20\x5b\x46\x49\x4c\x45" \ -"\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73" \ -"\x65\x0a\x09\x2d\x46\x09\x44\x6f\x6e\x27\x74\x20\x73\x74\x6f\x72" \ -"\x65\x20\x6f\x72\x20\x76\x65\x72\x69\x66\x79\x20\x63\x68\x65\x63" \ -"\x6b\x73\x75\x6d\x00\x5b\x2d\x64\x20\x64\x65\x76\x69\x63\x65\x5f" \ -"\x74\x61\x62\x6c\x65\x5d\x20\x72\x6f\x6f\x74\x64\x69\x72\x0a\x0a" \ -"\x43\x72\x65\x61\x74\x65\x20\x61\x20\x72\x61\x6e\x67\x65\x20\x6f" \ -"\x66\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x66\x69\x6c\x65\x73\x20" \ -"\x61\x73\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x69\x6e\x20" \ -"\x61\x20\x64\x65\x76\x69\x63\x65\x20\x74\x61\x62\x6c\x65\x2e\x0a" \ -"\x44\x65\x76\x69\x63\x65\x20\x74\x61\x62\x6c\x65\x20\x65\x6e\x74" \ -"\x72\x69\x65\x73\x20\x74\x61\x6b\x65\x20\x74\x68\x65\x20\x66\x6f" \ -"\x72\x6d\x20\x6f\x66\x3a\x0a\x3c\x6e\x61\x6d\x65\x3e\x20\x3c\x74" \ -"\x79\x70\x65\x3e\x20\x3c\x6d\x6f\x64\x65\x3e\x20\x3c\x75\x69\x64" \ -"\x3e\x20\x3c\x67\x69\x64\x3e\x20\x3c\x6d\x61\x6a\x6f\x72\x3e\x20" \ -"\x3c\x6d\x69\x6e\x6f\x72\x3e\x20\x3c\x73\x74\x61\x72\x74\x3e\x20" \ -"\x3c\x69\x6e\x63\x3e\x20\x3c\x63\x6f\x75\x6e\x74\x3e\x0a\x57\x68" \ -"\x65\x72\x65\x20\x6e\x61\x6d\x65\x20\x69\x73\x20\x74\x68\x65\x20" \ -"\x66\x69\x6c\x65\x20\x6e\x61\x6d\x65\x2c\x20\x74\x79\x70\x65\x20" \ -"\x63\x61\x6e\x20\x62\x65\x20\x6f\x6e\x65\x20\x6f\x66\x3a\x0a\x09" \ -"\x66\x09\x52\x65\x67\x75\x6c\x61\x72\x20\x66\x69\x6c\x65\x0a\x09" \ -"\x64\x09\x44\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x09\x63\x09\x43" \ -"\x68\x61\x72\x61\x63\x74\x65\x72\x20\x64\x65\x76\x69\x63\x65\x0a" \ -"\x09\x62\x09\x42\x6c\x6f\x63\x6b\x20\x64\x65\x76\x69\x63\x65\x0a" \ -"\x09\x70\x09\x46\x69\x66\x6f\x20\x28\x6e\x61\x6d\x65\x64\x20\x70" \ -"\x69\x70\x65\x29\x0a\x75\x69\x64\x20\x69\x73\x20\x74\x68\x65\x20" \ -"\x75\x73\x65\x72\x20\x69\x64\x20\x66\x6f\x72\x20\x74\x68\x65\x20" \ -"\x74\x61\x72\x67\x65\x74\x20\x66\x69\x6c\x65\x2c\x20\x67\x69\x64" \ -"\x20\x69\x73\x20\x74\x68\x65\x20\x67\x72\x6f\x75\x70\x20\x69\x64" \ -"\x20\x66\x6f\x72\x20\x74\x68\x65\x0a\x74\x61\x72\x67\x65\x74\x20" \ -"\x66\x69\x6c\x65\x2e\x20\x54\x68\x65\x20\x72\x65\x73\x74\x20\x6f" \ -"\x66\x20\x74\x68\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\x28\x6d" \ -"\x61\x6a\x6f\x72\x2c\x20\x6d\x69\x6e\x6f\x72\x2c\x20\x65\x74\x63" \ -"\x29\x20\x61\x70\x70\x6c\x79\x20\x74\x6f\x0a\x74\x6f\x20\x64\x65" \ -"\x76\x69\x63\x65\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x66\x69\x6c" \ -"\x65\x73\x2e\x20\x41\x20\x27\x2d\x27\x20\x6d\x61\x79\x20\x62\x65" \ -"\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x62\x6c\x61\x6e\x6b\x20" \ -"\x65\x6e\x74\x72\x69\x65\x73\x2e\x00\x5b\x2d\x63\x5b\x73\x77\x5d" \ -"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69" \ -"\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63\x6b\x20\x4d\x44\x35\x20" \ -"\x63\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09\x2d\x63\x09\x43" \ -"\x68\x65\x63\x6b\x20\x73\x75\x6d\x73\x20\x61\x67\x61\x69\x6e\x73" \ -"\x74\x20\x6c\x69\x73\x74\x20\x69\x6e\x20\x46\x49\x4c\x45\x73\x0a" \ -"\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75\x74\x70\x75\x74" \ -"\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c\x20\x73\x74\x61\x74\x75" \ -"\x73\x20\x63\x6f\x64\x65\x20\x73\x68\x6f\x77\x73\x20\x73\x75\x63" \ -"\x63\x65\x73\x73\x0a\x09\x2d\x77\x09\x57\x61\x72\x6e\x20\x61\x62" \ -"\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f\x70\x65\x72\x6c\x79\x20\x66" \ -"\x6f\x72\x6d\x61\x74\x74\x65\x64\x20\x63\x68\x65\x63\x6b\x73\x75" \ -"\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53" \ -"\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x2e\x2e\x2e\x0a\x0a" \ -"\x43\x72\x65\x61\x74\x65\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59" \ -"\x0a\x0a\x09\x2d\x6d\x20\x4d\x4f\x44\x45\x09\x4d\x6f\x64\x65\x0a" \ -"\x09\x2d\x70\x09\x4e\x6f\x20\x65\x72\x72\x6f\x72\x20\x69\x66\x20" \ -"\x65\x78\x69\x73\x74\x73\x3b\x20\x6d\x61\x6b\x65\x20\x70\x61\x72" \ -"\x65\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x69\x65\x73\x20" \ -"\x61\x73\x20\x6e\x65\x65\x64\x65\x64\x00\x5b\x2d\x76\x5d\x20\x5b" \ -"\x2d\x6e\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44" \ -"\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a\x0a\x4d\x61\x6b" \ -"\x65\x20\x61\x20\x46\x41\x54\x33\x32\x20\x66\x69\x6c\x65\x73\x79" \ -"\x73\x74\x65\x6d\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73" \ -"\x65\x0a\x09\x2d\x6e\x20\x4c\x42\x4c\x09\x56\x6f\x6c\x75\x6d\x65" \ -"\x20\x6c\x61\x62\x65\x6c\x00\x5b\x2d\x46\x6e\x5d\x20\x5b\x2d\x62" \ -"\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x69\x20\x49" \ -"\x4e\x4f\x44\x45\x5f\x52\x41\x54\x49\x4f\x5d\x20\x5b\x2d\x49\x20" \ -"\x49\x4e\x4f\x44\x45\x5f\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x6d\x20" \ -"\x52\x45\x53\x45\x52\x56\x45\x44\x5f\x50\x45\x52\x43\x45\x4e\x54" \ -"\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42\x4c\x4f" \ -"\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a\x0a" \ -"\x09\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x09\x42\x6c\x6f" \ -"\x63\x6b\x20\x73\x69\x7a\x65\x2c\x20\x62\x79\x74\x65\x73\x0a\x09" \ -"\x2d\x46\x09\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x69\x20\x52\x41" \ -"\x54\x49\x4f\x09\x4d\x61\x78\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f" \ -"\x66\x20\x66\x69\x6c\x65\x73\x20\x69\x73\x20\x66\x69\x6c\x65\x73" \ -"\x79\x73\x74\x65\x6d\x5f\x73\x69\x7a\x65\x20\x2f\x20\x52\x41\x54" \ -"\x49\x4f\x0a\x09\x2d\x49\x20\x42\x59\x54\x45\x53\x09\x49\x6e\x6f" \ -"\x64\x65\x20\x73\x69\x7a\x65\x20\x28\x6d\x69\x6e\x20\x31\x32\x38" \ -"\x29\x0a\x09\x2d\x4c\x20\x4c\x42\x4c\x09\x09\x56\x6f\x6c\x75\x6d" \ -"\x65\x20\x6c\x61\x62\x65\x6c\x0a\x09\x2d\x6d\x20\x50\x45\x52\x43" \ -"\x45\x4e\x54\x09\x50\x65\x72\x63\x65\x6e\x74\x20\x6f\x66\x20\x62" \ -"\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x72\x65\x73\x65\x72\x76\x65" \ -"\x20\x66\x6f\x72\x20\x61\x64\x6d\x69\x6e\x0a\x09\x2d\x6e\x09\x09" \ -"\x44\x72\x79\x20\x72\x75\x6e\x00\x5b\x2d\x6d\x20\x4d\x4f\x44\x45" \ -"\x5d\x20\x4e\x41\x4d\x45\x0a\x0a\x43\x72\x65\x61\x74\x65\x20\x6e" \ -"\x61\x6d\x65\x64\x20\x70\x69\x70\x65\x0a\x0a\x09\x2d\x6d\x20\x4d" \ -"\x4f\x44\x45\x09\x4d\x6f\x64\x65\x20\x28\x64\x65\x66\x61\x75\x6c" \ -"\x74\x20\x61\x3d\x72\x77\x29\x00\x5b\x2d\x46\x6e\x5d\x20\x5b\x2d" \ -"\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x69\x20" \ -"\x49\x4e\x4f\x44\x45\x5f\x52\x41\x54\x49\x4f\x5d\x20\x5b\x2d\x49" \ -"\x20\x49\x4e\x4f\x44\x45\x5f\x53\x49\x5a\x45\x5d\x20\x5b\x2d\x6d" \ -"\x20\x52\x45\x53\x45\x52\x56\x45\x44\x5f\x50\x45\x52\x43\x45\x4e" \ -"\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42\x4c" \ -"\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a" \ -"\x0a\x09\x2d\x62\x20\x42\x4c\x4b\x5f\x53\x49\x5a\x45\x09\x42\x6c" \ -"\x6f\x63\x6b\x20\x73\x69\x7a\x65\x2c\x20\x62\x79\x74\x65\x73\x0a" \ -"\x09\x2d\x46\x09\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x69\x20\x52" \ -"\x41\x54\x49\x4f\x09\x4d\x61\x78\x20\x6e\x75\x6d\x62\x65\x72\x20" \ -"\x6f\x66\x20\x66\x69\x6c\x65\x73\x20\x69\x73\x20\x66\x69\x6c\x65" \ -"\x73\x79\x73\x74\x65\x6d\x5f\x73\x69\x7a\x65\x20\x2f\x20\x52\x41" \ -"\x54\x49\x4f\x0a\x09\x2d\x49\x20\x42\x59\x54\x45\x53\x09\x49\x6e" \ -"\x6f\x64\x65\x20\x73\x69\x7a\x65\x20\x28\x6d\x69\x6e\x20\x31\x32" \ -"\x38\x29\x0a\x09\x2d\x4c\x20\x4c\x42\x4c\x09\x09\x56\x6f\x6c\x75" \ -"\x6d\x65\x20\x6c\x61\x62\x65\x6c\x0a\x09\x2d\x6d\x20\x50\x45\x52" \ -"\x43\x45\x4e\x54\x09\x50\x65\x72\x63\x65\x6e\x74\x20\x6f\x66\x20" \ -"\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x72\x65\x73\x65\x72\x76" \ -"\x65\x20\x66\x6f\x72\x20\x61\x64\x6d\x69\x6e\x0a\x09\x2d\x6e\x09" \ -"\x09\x44\x72\x79\x20\x72\x75\x6e\x00\x5b\x2d\x76\x5d\x20\x5b\x2d" \ -"\x6e\x20\x4c\x41\x42\x45\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45" \ -"\x56\x20\x5b\x4b\x42\x59\x54\x45\x53\x5d\x0a\x0a\x4d\x61\x6b\x65" \ -"\x20\x61\x20\x46\x41\x54\x33\x32\x20\x66\x69\x6c\x65\x73\x79\x73" \ -"\x74\x65\x6d\x0a\x0a\x09\x2d\x76\x09\x56\x65\x72\x62\x6f\x73\x65" \ -"\x0a\x09\x2d\x6e\x20\x4c\x42\x4c\x09\x56\x6f\x6c\x75\x6d\x65\x20" \ -"\x6c\x61\x62\x65\x6c\x00\x5b\x2d\x6d\x20\x4d\x4f\x44\x45\x5d\x20" \ -"\x4e\x41\x4d\x45\x20\x54\x59\x50\x45\x20\x4d\x41\x4a\x4f\x52\x20" \ -"\x4d\x49\x4e\x4f\x52\x0a\x0a\x43\x72\x65\x61\x74\x65\x20\x61\x20" \ -"\x73\x70\x65\x63\x69\x61\x6c\x20\x66\x69\x6c\x65\x20\x28\x62\x6c" \ -"\x6f\x63\x6b\x2c\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x2c\x20" \ -"\x6f\x72\x20\x70\x69\x70\x65\x29\x0a\x0a\x09\x2d\x6d\x20\x4d\x4f" \ -"\x44\x45\x09\x43\x72\x65\x61\x74\x69\x6f\x6e\x20\x6d\x6f\x64\x65" \ -"\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x61\x3d\x72\x77\x29\x0a" \ -"\x54\x59\x50\x45\x3a\x0a\x09\x62\x09\x42\x6c\x6f\x63\x6b\x20\x64" \ -"\x65\x76\x69\x63\x65\x0a\x09\x63\x20\x6f\x72\x20\x75\x09\x43\x68" \ -"\x61\x72\x61\x63\x74\x65\x72\x20\x64\x65\x76\x69\x63\x65\x0a\x09" \ -"\x70\x09\x4e\x61\x6d\x65\x64\x20\x70\x69\x70\x65\x20\x28\x4d\x41" \ -"\x4a\x4f\x52\x20\x61\x6e\x64\x20\x4d\x49\x4e\x4f\x52\x20\x61\x72" \ -"\x65\x20\x69\x67\x6e\x6f\x72\x65\x64\x29\x00\x5b\x2d\x4c\x20\x4c" \ -"\x42\x4c\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x20\x5b\x4b\x42" \ -"\x59\x54\x45\x53\x5d\x0a\x0a\x50\x72\x65\x70\x61\x72\x65\x20\x42" \ -"\x4c\x4f\x43\x4b\x44\x45\x56\x20\x74\x6f\x20\x62\x65\x20\x75\x73" \ -"\x65\x64\x20\x61\x73\x20\x73\x77\x61\x70\x20\x70\x61\x72\x74\x69" \ -"\x74\x69\x6f\x6e\x0a\x0a\x09\x2d\x4c\x20\x4c\x42\x4c\x09\x4c\x61" \ -"\x62\x65\x6c\x00\x5b\x2d\x64\x74\x5d\x20\x5b\x2d\x70\x20\x44\x49" \ -"\x52\x5d\x20\x5b\x54\x45\x4d\x50\x4c\x41\x54\x45\x5d\x0a\x0a\x43" \ -"\x72\x65\x61\x74\x65\x20\x61\x20\x74\x65\x6d\x70\x6f\x72\x61\x72" \ -"\x79\x20\x66\x69\x6c\x65\x20\x77\x69\x74\x68\x20\x6e\x61\x6d\x65" \ -"\x20\x62\x61\x73\x65\x64\x20\x6f\x6e\x20\x54\x45\x4d\x50\x4c\x41" \ -"\x54\x45\x20\x61\x6e\x64\x20\x70\x72\x69\x6e\x74\x20\x69\x74\x73" \ -"\x20\x6e\x61\x6d\x65\x2e\x0a\x54\x45\x4d\x50\x4c\x41\x54\x45\x20" \ -"\x6d\x75\x73\x74\x20\x65\x6e\x64\x20\x77\x69\x74\x68\x20\x58\x58" \ -"\x58\x58\x58\x58\x20\x28\x65\x2e\x67\x2e\x20\x5b\x2f\x64\x69\x72" \ -"\x2f\x5d\x6e\x61\x6d\x65\x58\x58\x58\x58\x58\x58\x29\x2e\x0a\x57" \ -"\x69\x74\x68\x6f\x75\x74\x20\x54\x45\x4d\x50\x4c\x41\x54\x45\x2c" \ -"\x20\x2d\x74\x20\x74\x6d\x70\x2e\x58\x58\x58\x58\x58\x58\x20\x69" \ -"\x73\x20\x61\x73\x73\x75\x6d\x65\x64\x2e\x0a\x0a\x09\x2d\x64\x09" \ -"\x4d\x61\x6b\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x2c\x20" \ -"\x6e\x6f\x74\x20\x66\x69\x6c\x65\x0a\x09\x2d\x71\x09\x46\x61\x69" \ -"\x6c\x20\x73\x69\x6c\x65\x6e\x74\x6c\x79\x20\x6f\x6e\x20\x65\x72" \ -"\x72\x6f\x72\x73\x0a\x09\x2d\x74\x09\x50\x72\x65\x70\x65\x6e\x64" \ -"\x20\x62\x61\x73\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20" \ -"\x6e\x61\x6d\x65\x20\x74\x6f\x20\x54\x45\x4d\x50\x4c\x41\x54\x45" \ -"\x0a\x09\x2d\x70\x20\x44\x49\x52\x09\x55\x73\x65\x20\x44\x49\x52" \ -"\x20\x61\x73\x20\x61\x20\x62\x61\x73\x65\x20\x64\x69\x72\x65\x63" \ -"\x74\x6f\x72\x79\x20\x28\x69\x6d\x70\x6c\x69\x65\x73\x20\x2d\x74" \ -"\x29\x0a\x09\x2d\x75\x09\x44\x6f\x20\x6e\x6f\x74\x20\x63\x72\x65" \ -"\x61\x74\x65\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x3b\x20\x70\x72" \ -"\x69\x6e\x74\x20\x61\x20\x6e\x61\x6d\x65\x0a\x0a\x42\x61\x73\x65" \ -"\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x69\x73\x3a\x20\x2d" \ -"\x70\x20\x44\x49\x52\x2c\x20\x65\x6c\x73\x65\x20\x24\x54\x4d\x50" \ -"\x44\x49\x52\x2c\x20\x65\x6c\x73\x65\x20\x2f\x64\x61\x74\x61\x2f" \ -"\x6c\x6f\x63\x61\x6c\x2f\x74\x6d\x70\x00\x5b\x2d\x61\x64\x6c\x70" \ -"\x30\x5d\x20\x5b\x2d\x46\x20\x6b\x65\x79\x77\x6f\x72\x64\x5d\x20" \ -"\x4d\x4f\x44\x55\x4c\x45\x0a\x0a\x09\x2d\x61\x09\x09\x53\x68\x6f" \ -"\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d\x46\x20\x61\x75" \ -"\x74\x68\x6f\x72\x27\x0a\x09\x2d\x64\x09\x09\x53\x68\x6f\x72\x74" \ -"\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d\x46\x20\x64\x65\x73\x63" \ -"\x72\x69\x70\x74\x69\x6f\x6e\x27\x0a\x09\x2d\x6c\x09\x09\x53\x68" \ -"\x6f\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d\x46\x20\x6c" \ -"\x69\x63\x65\x6e\x73\x65\x27\x0a\x09\x2d\x70\x09\x09\x53\x68\x6f" \ -"\x72\x74\x63\x75\x74\x20\x66\x6f\x72\x20\x27\x2d\x46\x20\x70\x61" \ -"\x72\x6d\x27\x0a\x09\x2d\x46\x20\x6b\x65\x79\x77\x6f\x72\x64\x09" \ -"\x4b\x65\x79\x77\x6f\x72\x64\x20\x74\x6f\x20\x6c\x6f\x6f\x6b\x20" \ -"\x66\x6f\x72\x0a\x09\x2d\x30\x09\x09\x53\x65\x70\x61\x72\x61\x74" \ -"\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x77\x69\x74\x68\x20\x4e\x55" \ -"\x4c\x73\x00\x5b\x2d\x71\x66\x77\x72\x73\x76\x5d\x20\x4d\x4f\x44" \ -"\x55\x4c\x45\x20\x5b\x73\x79\x6d\x62\x6f\x6c\x3d\x76\x61\x6c\x75" \ -"\x65\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x72\x09\x52\x65\x6d\x6f\x76" \ -"\x65\x20\x4d\x4f\x44\x55\x4c\x45\x20\x28\x73\x74\x61\x63\x6b\x73" \ -"\x29\x20\x6f\x72\x20\x64\x6f\x20\x61\x75\x74\x6f\x63\x6c\x65\x61" \ -"\x6e\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x76\x09" \ -"\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63" \ -"\x65\x0a\x09\x2d\x77\x09\x57\x61\x69\x74\x20\x66\x6f\x72\x20\x75" \ -"\x6e\x6c\x6f\x61\x64\x0a\x09\x2d\x73\x09\x52\x65\x70\x6f\x72\x74" \ -"\x20\x76\x69\x61\x20\x73\x79\x73\x6c\x6f\x67\x20\x69\x6e\x73\x74" \ -"\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x65\x72\x72\x00\x5b\x46" \ -"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x56\x69\x65\x77\x20\x46\x49" \ -"\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x20\x6f\x6e" \ -"\x65\x20\x73\x63\x72\x65\x65\x6e\x66\x75\x6c\x20\x61\x74\x20\x61" \ -"\x20\x74\x69\x6d\x65\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20" \ -"\x5b\x2d\x6f\x20\x4f\x50\x54\x53\x5d\x20\x44\x45\x56\x49\x43\x45" \ -"\x20\x4e\x4f\x44\x45\x0a\x0a\x4d\x6f\x75\x6e\x74\x20\x61\x20\x66" \ -"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2e\x20\x46\x69\x6c\x65\x73" \ -"\x79\x73\x74\x65\x6d\x20\x61\x75\x74\x6f\x64\x65\x74\x65\x63\x74" \ -"\x69\x6f\x6e\x20\x72\x65\x71\x75\x69\x72\x65\x73\x20\x2f\x70\x72" \ -"\x6f\x63\x2e\x0a\x0a\x09\x2d\x61\x09\x09\x4d\x6f\x75\x6e\x74\x20" \ -"\x61\x6c\x6c\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x20" \ -"\x69\x6e\x20\x66\x73\x74\x61\x62\x0a\x09\x2d\x72\x09\x09\x52\x65" \ -"\x61\x64\x2d\x6f\x6e\x6c\x79\x20\x6d\x6f\x75\x6e\x74\x0a\x09\x2d" \ -"\x77\x09\x09\x52\x65\x61\x64\x2d\x77\x72\x69\x74\x65\x20\x6d\x6f" \ -"\x75\x6e\x74\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d" \ -"\x74\x20\x46\x53\x54\x59\x50\x45\x5b\x2c\x2e\x2e\x2e\x5d\x09\x46" \ -"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x74\x79\x70\x65\x28\x73" \ -"\x29\x0a\x09\x2d\x4f\x20\x4f\x50\x54\x09\x09\x4d\x6f\x75\x6e\x74" \ -"\x20\x6f\x6e\x6c\x79\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d" \ -"\x73\x20\x77\x69\x74\x68\x20\x6f\x70\x74\x69\x6f\x6e\x20\x4f\x50" \ -"\x54\x20\x28\x2d\x61\x20\x6f\x6e\x6c\x79\x29\x0a\x2d\x6f\x20\x4f" \ -"\x50\x54\x3a\x0a\x09\x6c\x6f\x6f\x70\x09\x09\x49\x67\x6e\x6f\x72" \ -"\x65\x64\x20\x28\x6c\x6f\x6f\x70\x20\x64\x65\x76\x69\x63\x65\x73" \ -"\x20\x61\x72\x65\x20\x61\x75\x74\x6f\x64\x65\x74\x65\x63\x74\x65" \ -"\x64\x29\x0a\x09\x5b\x61\x5d\x73\x79\x6e\x63\x09\x09\x57\x72\x69" \ -"\x74\x65\x73\x20\x61\x72\x65\x20\x5b\x61\x5d\x73\x79\x6e\x63\x68" \ -"\x72\x6f\x6e\x6f\x75\x73\x0a\x09\x5b\x6e\x6f\x5d\x61\x74\x69\x6d" \ -"\x65\x09\x44\x69\x73\x61\x62\x6c\x65\x2f\x65\x6e\x61\x62\x6c\x65" \ -"\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\x6f\x20\x69\x6e\x6f\x64" \ -"\x65\x20\x61\x63\x63\x65\x73\x73\x20\x74\x69\x6d\x65\x73\x0a\x09" \ -"\x5b\x6e\x6f\x5d\x64\x69\x72\x61\x74\x69\x6d\x65\x09\x44\x69\x73" \ -"\x61\x62\x6c\x65\x2f\x65\x6e\x61\x62\x6c\x65\x20\x61\x74\x69\x6d" \ -"\x65\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\x6f\x20\x64\x69\x72" \ -"\x65\x63\x74\x6f\x72\x69\x65\x73\x0a\x09\x5b\x6e\x6f\x5d\x72\x65" \ -"\x6c\x61\x74\x69\x6d\x65\x09\x44\x69\x73\x61\x62\x6c\x65\x2f\x65" \ -"\x6e\x61\x62\x6c\x65\x20\x61\x74\x69\x6d\x65\x20\x75\x70\x64\x61" \ -"\x74\x65\x73\x20\x72\x65\x6c\x61\x74\x69\x76\x65\x20\x74\x6f\x20" \ -"\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x74\x69\x6d" \ -"\x65\x0a\x09\x5b\x6e\x6f\x5d\x64\x65\x76\x09\x09\x28\x44\x69\x73" \ -"\x29\x61\x6c\x6c\x6f\x77\x20\x75\x73\x65\x20\x6f\x66\x20\x73\x70" \ -"\x65\x63\x69\x61\x6c\x20\x64\x65\x76\x69\x63\x65\x20\x66\x69\x6c" \ -"\x65\x73\x0a\x09\x5b\x6e\x6f\x5d\x65\x78\x65\x63\x09\x28\x44\x69" \ -"\x73\x29\x61\x6c\x6c\x6f\x77\x20\x75\x73\x65\x20\x6f\x66\x20\x65" \ -"\x78\x65\x63\x75\x74\x61\x62\x6c\x65\x20\x66\x69\x6c\x65\x73\x0a" \ -"\x09\x5b\x6e\x6f\x5d\x73\x75\x69\x64\x09\x28\x44\x69\x73\x29\x61" \ -"\x6c\x6c\x6f\x77\x20\x73\x65\x74\x2d\x75\x73\x65\x72\x2d\x69\x64" \ -"\x2d\x72\x6f\x6f\x74\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x0a\x09" \ -"\x5b\x72\x5d\x73\x68\x61\x72\x65\x64\x09\x43\x6f\x6e\x76\x65\x72" \ -"\x74\x20\x5b\x72\x65\x63\x75\x72\x73\x69\x76\x65\x6c\x79\x5d\x20" \ -"\x74\x6f\x20\x61\x20\x73\x68\x61\x72\x65\x64\x20\x73\x75\x62\x74" \ -"\x72\x65\x65\x0a\x09\x5b\x72\x5d\x73\x6c\x61\x76\x65\x09\x43\x6f" \ -"\x6e\x76\x65\x72\x74\x20\x5b\x72\x65\x63\x75\x72\x73\x69\x76\x65" \ -"\x6c\x79\x5d\x20\x74\x6f\x20\x61\x20\x73\x6c\x61\x76\x65\x20\x73" \ -"\x75\x62\x74\x72\x65\x65\x0a\x09\x5b\x72\x5d\x70\x72\x69\x76\x61" \ -"\x74\x65\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x5b\x72\x65\x63\x75" \ -"\x72\x73\x69\x76\x65\x6c\x79\x5d\x20\x74\x6f\x20\x61\x20\x70\x72" \ -"\x69\x76\x61\x74\x65\x20\x73\x75\x62\x74\x72\x65\x65\x0a\x09\x5b" \ -"\x75\x6e\x5d\x62\x69\x6e\x64\x61\x62\x6c\x65\x09\x4d\x61\x6b\x65" \ -"\x20\x6d\x6f\x75\x6e\x74\x20\x70\x6f\x69\x6e\x74\x20\x5b\x75\x6e" \ -"\x5d\x61\x62\x6c\x65\x20\x74\x6f\x20\x62\x65\x20\x62\x69\x6e\x64" \ -"\x20\x6d\x6f\x75\x6e\x74\x65\x64\x0a\x09\x5b\x72\x5d\x62\x69\x6e" \ -"\x64\x09\x09\x42\x69\x6e\x64\x20\x61\x20\x66\x69\x6c\x65\x20\x6f" \ -"\x72\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x5b\x72\x65\x63" \ -"\x75\x72\x73\x69\x76\x65\x6c\x79\x5d\x20\x74\x6f\x20\x61\x6e\x6f" \ -"\x74\x68\x65\x72\x20\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x0a\x09\x6d" \ -"\x6f\x76\x65\x09\x09\x52\x65\x6c\x6f\x63\x61\x74\x65\x20\x61\x6e" \ -"\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x6d\x6f\x75\x6e\x74\x20" \ -"\x70\x6f\x69\x6e\x74\x0a\x09\x72\x65\x6d\x6f\x75\x6e\x74\x09\x09" \ -"\x52\x65\x6d\x6f\x75\x6e\x74\x20\x61\x20\x6d\x6f\x75\x6e\x74\x65" \ -"\x64\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x2c\x20\x63\x68" \ -"\x61\x6e\x67\x69\x6e\x67\x20\x66\x6c\x61\x67\x73\x0a\x09\x72\x6f" \ -"\x2f\x72\x77\x09\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x2d\x72\x2f" \ -"\x2d\x77\x0a\x0a\x54\x68\x65\x72\x65\x20\x61\x72\x65\x20\x66\x69" \ -"\x6c\x65\x73\x79\x73\x74\x65\x6d\x2d\x73\x70\x65\x63\x69\x66\x69" \ -"\x63\x20\x2d\x6f\x20\x66\x6c\x61\x67\x73\x2e\x00\x5b\x2d\x71\x5d" \ -"\x20\x3c\x5b\x2d\x64\x6e\x5d\x20\x44\x49\x52\x20\x7c\x20\x2d\x78" \ -"\x20\x44\x45\x56\x49\x43\x45\x3e\x0a\x0a\x43\x68\x65\x63\x6b\x20" \ -"\x69\x66\x20\x74\x68\x65\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79" \ -"\x20\x69\x73\x20\x61\x20\x6d\x6f\x75\x6e\x74\x70\x6f\x69\x6e\x74" \ -"\x0a\x0a\x09\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x64\x09" \ -"\x50\x72\x69\x6e\x74\x20\x6d\x61\x6a\x6f\x72\x2f\x6d\x69\x6e\x6f" \ -"\x72\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20" \ -"\x6f\x66\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65" \ -"\x6d\x0a\x09\x2d\x6e\x09\x50\x72\x69\x6e\x74\x20\x64\x65\x76\x69" \ -"\x63\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x66" \ -"\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x0a\x09\x2d\x78\x09\x50\x72" \ -"\x69\x6e\x74\x20\x6d\x61\x6a\x6f\x72\x2f\x6d\x69\x6e\x6f\x72\x20" \ -"\x64\x65\x76\x69\x63\x65\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66" \ -"\x20\x74\x68\x65\x20\x62\x6c\x6f\x63\x6b\x64\x65\x76\x69\x63\x65" \ -"\x00\x5b\x2d\x66\x69\x6e\x5d\x20\x53\x4f\x55\x52\x43\x45\x20\x44" \ -"\x45\x53\x54\x0a\x6f\x72\x3a\x20\x6d\x76\x20\x5b\x2d\x66\x69\x6e" \ -"\x5d\x20\x53\x4f\x55\x52\x43\x45\x2e\x2e\x2e\x20\x44\x49\x52\x45" \ -"\x43\x54\x4f\x52\x59\x0a\x0a\x52\x65\x6e\x61\x6d\x65\x20\x53\x4f" \ -"\x55\x52\x43\x45\x20\x74\x6f\x20\x44\x45\x53\x54\x2c\x20\x6f\x72" \ -"\x20\x6d\x6f\x76\x65\x20\x53\x4f\x55\x52\x43\x45\x28\x73\x29\x20" \ -"\x74\x6f\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a\x0a\x09\x2d" \ -"\x66\x09\x44\x6f\x6e\x27\x74\x20\x70\x72\x6f\x6d\x70\x74\x20\x62" \ -"\x65\x66\x6f\x72\x65\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x69\x6e" \ -"\x67\x0a\x09\x2d\x69\x09\x49\x6e\x74\x65\x72\x61\x63\x74\x69\x76" \ -"\x65\x2c\x20\x70\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f\x72\x65" \ -"\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x6e\x09\x44" \ -"\x6f\x6e\x27\x74\x20\x6f\x76\x65\x72\x77\x72\x69\x74\x65\x20\x61" \ -"\x6e\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x66\x69\x6c\x65\x00" \ -"\x5b\x2d\x6f\x5d\x20\x5b\x2d\x62\x5d\x20\x5b\x2d\x73\x20\x41\x44" \ -"\x44\x52\x5d\x20\x5b\x2d\x66\x20\x46\x49\x4c\x45\x5d\x20\x4d\x54" \ -"\x44\x5f\x44\x45\x56\x49\x43\x45\x0a\x0a\x44\x75\x6d\x70\x20\x74" \ -"\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x20\x4d\x54\x44" \ -"\x20\x64\x65\x76\x69\x63\x65\x0a\x0a\x09\x2d\x6f\x09\x44\x75\x6d" \ -"\x70\x20\x6f\x6f\x62\x20\x64\x61\x74\x61\x0a\x09\x2d\x62\x09\x4f" \ -"\x6d\x69\x74\x20\x62\x61\x64\x20\x62\x6c\x6f\x63\x6b\x20\x66\x72" \ -"\x6f\x6d\x20\x74\x68\x65\x20\x64\x75\x6d\x70\x0a\x09\x2d\x73\x20" \ -"\x41\x44\x44\x52\x09\x53\x74\x61\x72\x74\x20\x61\x64\x64\x72\x65" \ -"\x73\x73\x0a\x09\x2d\x6c\x20\x4c\x45\x4e\x09\x4c\x65\x6e\x67\x74" \ -"\x68\x0a\x09\x2d\x66\x20\x46\x49\x4c\x45\x09\x44\x75\x6d\x70\x20" \ -"\x74\x6f\x20\x66\x69\x6c\x65\x20\x28\x27\x2d\x27\x20\x66\x6f\x72" \ -"\x20\x73\x74\x64\x6f\x75\x74\x29\x00\x5b\x2d\x70\x5d\x20\x5b\x2d" \ -"\x73\x20\x41\x44\x44\x52\x5d\x20\x4d\x54\x44\x5f\x44\x45\x56\x49" \ -"\x43\x45\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x57\x72\x69\x74\x65" \ -"\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x66\x69\x65" \ -"\x64\x20\x4d\x54\x44\x20\x64\x65\x76\x69\x63\x65\x0a\x0a\x09\x2d" \ -"\x70\x09\x50\x61\x64\x20\x74\x6f\x20\x70\x61\x67\x65\x20\x73\x69" \ -"\x7a\x65\x0a\x09\x2d\x73\x20\x41\x44\x44\x52\x09\x53\x74\x61\x72" \ -"\x74\x20\x61\x64\x64\x72\x65\x73\x73\x00\x5b\x2d\x6e\x20\x41\x44" \ -"\x4a\x55\x53\x54\x5d\x20\x5b\x50\x52\x4f\x47\x20\x41\x52\x47\x53" \ -"\x5d\x0a\x0a\x43\x68\x61\x6e\x67\x65\x20\x73\x63\x68\x65\x64\x75" \ -"\x6c\x69\x6e\x67\x20\x70\x72\x69\x6f\x72\x69\x74\x79\x2c\x20\x72" \ -"\x75\x6e\x20\x50\x52\x4f\x47\x0a\x0a\x09\x2d\x6e\x20\x41\x44\x4a" \ -"\x55\x53\x54\x09\x41\x64\x6a\x75\x73\x74\x20\x70\x72\x69\x6f\x72" \ -"\x69\x74\x79\x20\x62\x79\x20\x41\x44\x4a\x55\x53\x54\x00\x50\x52" \ -"\x4f\x47\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f" \ -"\x47\x20\x69\x6d\x6d\x75\x6e\x65\x20\x74\x6f\x20\x68\x61\x6e\x67" \ -"\x75\x70\x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x75\x74\x70\x75\x74" \ -"\x20\x74\x6f\x20\x61\x20\x6e\x6f\x6e\x2d\x74\x74\x79\x00\x5b\x2d" \ -"\x61\x42\x62\x63\x44\x64\x65\x46\x66\x48\x68\x49\x69\x4c\x6c\x4f" \ -"\x6f\x76\x58\x78\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x50\x72" \ -"\x69\x6e\x74\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64" \ -"\x69\x6e\x29\x20\x75\x6e\x61\x6d\x62\x69\x67\x75\x6f\x75\x73\x6c" \ -"\x79\x2c\x20\x61\x73\x20\x6f\x63\x74\x61\x6c\x20\x62\x79\x74\x65" \ -"\x73\x20\x62\x79\x20\x64\x65\x66\x61\x75\x6c\x74\x00\x5b\x4f\x50" \ -"\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x4f\x52\x49\x47\x46\x49\x4c\x45" \ -"\x20\x5b\x50\x41\x54\x43\x48\x46\x49\x4c\x45\x5d\x5d\x0a\x0a\x09" \ -"\x2d\x70\x2c\x2d\x2d\x73\x74\x72\x69\x70\x20\x4e\x09\x09\x53\x74" \ -"\x72\x69\x70\x20\x4e\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x63\x6f" \ -"\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20\x66\x69" \ -"\x6c\x65\x20\x6e\x61\x6d\x65\x73\x0a\x09\x2d\x69\x2c\x2d\x2d\x69" \ -"\x6e\x70\x75\x74\x20\x44\x49\x46\x46\x09\x09\x52\x65\x61\x64\x20" \ -"\x44\x49\x46\x46\x20\x69\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20" \ -"\x73\x74\x64\x69\x6e\x0a\x09\x2d\x52\x2c\x2d\x2d\x72\x65\x76\x65" \ -"\x72\x73\x65\x09\x09\x52\x65\x76\x65\x72\x73\x65\x20\x70\x61\x74" \ -"\x63\x68\x0a\x09\x2d\x4e\x2c\x2d\x2d\x66\x6f\x72\x77\x61\x72\x64" \ -"\x09\x09\x49\x67\x6e\x6f\x72\x65\x20\x61\x6c\x72\x65\x61\x64\x79" \ -"\x20\x61\x70\x70\x6c\x69\x65\x64\x20\x70\x61\x74\x63\x68\x65\x73" \ -"\x0a\x09\x2d\x45\x2c\x2d\x2d\x72\x65\x6d\x6f\x76\x65\x2d\x65\x6d" \ -"\x70\x74\x79\x2d\x66\x69\x6c\x65\x73\x09\x52\x65\x6d\x6f\x76\x65" \ -"\x20\x6f\x75\x74\x70\x75\x74\x20\x66\x69\x6c\x65\x73\x20\x69\x66" \ -"\x20\x74\x68\x65\x79\x20\x62\x65\x63\x6f\x6d\x65\x20\x65\x6d\x70" \ -"\x74\x79\x00\x5b\x2d\x66\x6c\x6e\x6f\x76\x78\x5d\x20\x5b\x2d\x73" \ -"\x20\x53\x49\x44\x7c\x2d\x50\x20\x50\x50\x49\x44\x7c\x50\x41\x54" \ -"\x54\x45\x52\x4e\x5d\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x70" \ -"\x72\x6f\x63\x65\x73\x73\x28\x65\x73\x29\x20\x73\x65\x6c\x65\x63" \ -"\x74\x65\x64\x20\x62\x79\x20\x72\x65\x67\x65\x78\x20\x50\x41\x54" \ -"\x54\x45\x52\x4e\x0a\x0a\x09\x2d\x6c\x09\x53\x68\x6f\x77\x20\x63" \ -"\x6f\x6d\x6d\x61\x6e\x64\x20\x6e\x61\x6d\x65\x20\x74\x6f\x6f\x0a" \ -"\x09\x2d\x66\x09\x4d\x61\x74\x63\x68\x20\x61\x67\x61\x69\x6e\x73" \ -"\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x63\x6f\x6d\x6d\x61\x6e\x64" \ -"\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x6e\x09\x53\x68\x6f\x77\x20\x74" \ -"\x68\x65\x20\x6e\x65\x77\x65\x73\x74\x20\x70\x72\x6f\x63\x65\x73" \ -"\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6f\x09\x53\x68\x6f\x77\x20" \ -"\x74\x68\x65\x20\x6f\x6c\x64\x65\x73\x74\x20\x70\x72\x6f\x63\x65" \ -"\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x76\x09\x4e\x65\x67\x61" \ -"\x74\x65\x20\x74\x68\x65\x20\x6d\x61\x74\x63\x68\x0a\x09\x2d\x78" \ -"\x09\x4d\x61\x74\x63\x68\x20\x77\x68\x6f\x6c\x65\x20\x6e\x61\x6d" \ -"\x65\x20\x28\x6e\x6f\x74\x20\x73\x75\x62\x73\x74\x72\x69\x6e\x67" \ -"\x29\x0a\x09\x2d\x73\x09\x4d\x61\x74\x63\x68\x20\x73\x65\x73\x73" \ -"\x69\x6f\x6e\x20\x49\x44\x20\x28\x30\x20\x66\x6f\x72\x20\x63\x75" \ -"\x72\x72\x65\x6e\x74\x29\x0a\x09\x2d\x50\x09\x4d\x61\x74\x63\x68" \ -"\x20\x70\x61\x72\x65\x6e\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x20" \ -"\x49\x44\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x4e\x41" \ -"\x4d\x45\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x69\x73\x74\x20\x50\x49\x44" \ -"\x73\x20\x6f\x66\x20\x61\x6c\x6c\x20\x70\x72\x6f\x63\x65\x73\x73" \ -"\x65\x73\x20\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x68" \ -"\x61\x74\x20\x6d\x61\x74\x63\x68\x20\x4e\x41\x4d\x45\x73\x0a\x0a" \ -"\x09\x2d\x73\x09\x53\x68\x6f\x77\x20\x6f\x6e\x6c\x79\x20\x6f\x6e" \ -"\x65\x20\x50\x49\x44\x0a\x09\x2d\x6f\x20\x50\x49\x44\x09\x4f\x6d" \ -"\x69\x74\x20\x67\x69\x76\x65\x6e\x20\x70\x69\x64\x0a\x09\x09\x55" \ -"\x73\x65\x20\x25\x50\x50\x49\x44\x20\x74\x6f\x20\x6f\x6d\x69\x74" \ -"\x20\x70\x69\x64\x20\x6f\x66\x20\x70\x69\x64\x6f\x66\x27\x73\x20" \ -"\x70\x61\x72\x65\x6e\x74\x00\x5b\x2d\x6c\x7c\x2d\x53\x49\x47\x4e" \ -"\x41\x4c\x5d\x20\x5b\x2d\x66\x6e\x6f\x76\x78\x5d\x20\x5b\x2d\x73" \ -"\x20\x53\x49\x44\x7c\x2d\x50\x20\x50\x50\x49\x44\x7c\x50\x41\x54" \ -"\x54\x45\x52\x4e\x5d\x0a\x0a\x53\x65\x6e\x64\x20\x61\x20\x73\x69" \ -"\x67\x6e\x61\x6c\x20\x74\x6f\x20\x70\x72\x6f\x63\x65\x73\x73\x28" \ -"\x65\x73\x29\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x62\x79\x20" \ -"\x72\x65\x67\x65\x78\x20\x50\x41\x54\x54\x45\x52\x4e\x0a\x0a\x09" \ -"\x2d\x6c\x09\x4c\x69\x73\x74\x20\x61\x6c\x6c\x20\x73\x69\x67\x6e" \ -"\x61\x6c\x73\x0a\x09\x2d\x66\x09\x4d\x61\x74\x63\x68\x20\x61\x67" \ -"\x61\x69\x6e\x73\x74\x20\x65\x6e\x74\x69\x72\x65\x20\x63\x6f\x6d" \ -"\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x0a\x09\x2d\x6e\x09\x53\x69" \ -"\x67\x6e\x61\x6c\x20\x74\x68\x65\x20\x6e\x65\x77\x65\x73\x74\x20" \ -"\x70\x72\x6f\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a\x09\x2d\x6f" \ -"\x09\x53\x69\x67\x6e\x61\x6c\x20\x74\x68\x65\x20\x6f\x6c\x64\x65" \ -"\x73\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x6f\x6e\x6c\x79\x0a" \ -"\x09\x2d\x76\x09\x4e\x65\x67\x61\x74\x65\x20\x74\x68\x65\x20\x6d" \ -"\x61\x74\x63\x68\x0a\x09\x2d\x78\x09\x4d\x61\x74\x63\x68\x20\x77" \ -"\x68\x6f\x6c\x65\x20\x6e\x61\x6d\x65\x20\x28\x6e\x6f\x74\x20\x73" \ -"\x75\x62\x73\x74\x72\x69\x6e\x67\x29\x0a\x09\x2d\x73\x09\x4d\x61" \ -"\x74\x63\x68\x20\x73\x65\x73\x73\x69\x6f\x6e\x20\x49\x44\x20\x28" \ -"\x30\x20\x66\x6f\x72\x20\x63\x75\x72\x72\x65\x6e\x74\x29\x0a\x09" \ -"\x2d\x50\x09\x4d\x61\x74\x63\x68\x20\x70\x61\x72\x65\x6e\x74\x20" \ -"\x70\x72\x6f\x63\x65\x73\x73\x20\x49\x44\x00\x5b\x56\x41\x52\x49" \ -"\x41\x42\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20" \ -"\x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x20\x56\x41\x52\x49" \ -"\x41\x42\x4c\x45\x73\x2e\x0a\x49\x66\x20\x6e\x6f\x20\x56\x41\x52" \ -"\x49\x41\x42\x4c\x45\x20\x73\x70\x65\x63\x69\x66\x69\x65\x64\x2c" \ -"\x20\x70\x72\x69\x6e\x74\x20\x61\x6c\x6c\x2e\x00\x46\x4f\x52\x4d" \ -"\x41\x54\x20\x5b\x41\x52\x47\x5d\x2e\x2e\x2e\x0a\x0a\x46\x6f\x72" \ -"\x6d\x61\x74\x20\x61\x6e\x64\x20\x70\x72\x69\x6e\x74\x20\x41\x52" \ -"\x47\x28\x73\x29\x20\x61\x63\x63\x6f\x72\x64\x69\x6e\x67\x20\x74" \ -"\x6f\x20\x46\x4f\x52\x4d\x41\x54\x20\x28\x61\x2d\x6c\x61\x20\x43" \ -"\x20\x70\x72\x69\x6e\x74\x66\x29\x00\x0a\x0a\x53\x68\x6f\x77\x20" \ -"\x6c\x69\x73\x74\x20\x6f\x66\x20\x70\x72\x6f\x63\x65\x73\x73\x65" \ -"\x73\x0a\x0a\x09\x77\x09\x57\x69\x64\x65\x20\x6f\x75\x74\x70\x75" \ -"\x74\x0a\x09\x6c\x09\x4c\x6f\x6e\x67\x20\x6f\x75\x74\x70\x75\x74" \ -"\x0a\x09\x54\x09\x53\x68\x6f\x77\x20\x74\x68\x72\x65\x61\x64\x73" \ -"\x00\x5b\x2d\x70\x5d\x20\x5b\x50\x49\x44\x7c\x55\x53\x45\x52\x5d" \ -"\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x70\x72\x6f\x63\x65\x73" \ -"\x73\x20\x74\x72\x65\x65\x2c\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c" \ -"\x6c\x79\x20\x73\x74\x61\x72\x74\x20\x66\x72\x6f\x6d\x20\x55\x53" \ -"\x45\x52\x20\x6f\x72\x20\x50\x49\x44\x0a\x0a\x09\x2d\x70\x09\x53" \ -"\x68\x6f\x77\x20\x70\x69\x64\x73\x00\x0a\x0a\x50\x72\x69\x6e\x74" \ -"\x20\x74\x68\x65\x20\x66\x75\x6c\x6c\x20\x66\x69\x6c\x65\x6e\x61" \ -"\x6d\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e" \ -"\x74\x20\x77\x6f\x72\x6b\x69\x6e\x67\x20\x64\x69\x72\x65\x63\x74" \ -"\x6f\x72\x79\x00\x0a\x0a\x50\x72\x69\x6e\x74\x20\x74\x68\x65\x20" \ -"\x64\x65\x76\x69\x63\x65\x20\x6e\x6f\x64\x65\x20\x61\x73\x73\x6f" \ -"\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20" \ -"\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6d\x6f\x75\x6e\x74" \ -"\x65\x64\x20\x61\x74\x20\x27\x2f\x27\x00\x5b\x2d\x66\x6e\x76\x5d" \ -"\x20\x46\x49\x4c\x45\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x74" \ -"\x68\x65\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\x20\x61\x20\x73\x79" \ -"\x6d\x6c\x69\x6e\x6b\x0a\x0a\x09\x2d\x66\x09\x43\x61\x6e\x6f\x6e" \ -"\x69\x63\x61\x6c\x69\x7a\x65\x20\x62\x79\x20\x66\x6f\x6c\x6c\x6f" \ -"\x77\x69\x6e\x67\x20\x61\x6c\x6c\x20\x73\x79\x6d\x6c\x69\x6e\x6b" \ -"\x73\x0a\x09\x2d\x6e\x09\x44\x6f\x6e\x27\x74\x20\x61\x64\x64\x20" \ -"\x6e\x65\x77\x6c\x69\x6e\x65\x0a\x09\x2d\x76\x09\x56\x65\x72\x62" \ -"\x6f\x73\x65\x00\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x52\x65\x74" \ -"\x75\x72\x6e\x20\x74\x68\x65\x20\x61\x62\x73\x6f\x6c\x75\x74\x65" \ -"\x20\x70\x61\x74\x68\x6e\x61\x6d\x65\x73\x20\x6f\x66\x20\x67\x69" \ -"\x76\x65\x6e\x20\x46\x49\x4c\x45\x00\x7b\x7b\x2d\x6e\x20\x49\x4e" \ -"\x43\x52\x45\x4d\x45\x4e\x54\x7d\x20\x7c\x20\x50\x52\x49\x4f\x52" \ -"\x49\x54\x59\x7d\x20\x5b\x5b\x2d\x70\x20\x7c\x20\x2d\x67\x20\x7c" \ -"\x20\x2d\x75\x5d\x20\x49\x44\x2e\x2e\x2e\x5d\x0a\x0a\x43\x68\x61" \ -"\x6e\x67\x65\x20\x73\x63\x68\x65\x64\x75\x6c\x69\x6e\x67\x20\x70" \ -"\x72\x69\x6f\x72\x69\x74\x79\x20\x66\x6f\x72\x20\x61\x20\x72\x75" \ -"\x6e\x6e\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x73\x73\x0a\x0a\x09" \ -"\x2d\x6e\x09\x41\x64\x6a\x75\x73\x74\x20\x63\x75\x72\x72\x65\x6e" \ -"\x74\x20\x6e\x69\x63\x65\x20\x76\x61\x6c\x75\x65\x20\x28\x73\x6d" \ -"\x61\x6c\x6c\x65\x72\x20\x69\x73\x20\x66\x61\x73\x74\x65\x72\x29" \ -"\x0a\x09\x2d\x70\x09\x50\x72\x6f\x63\x65\x73\x73\x20\x69\x64\x28" \ -"\x73\x29\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x67" \ -"\x09\x50\x72\x6f\x63\x65\x73\x73\x20\x67\x72\x6f\x75\x70\x20\x69" \ -"\x64\x28\x73\x29\x0a\x09\x2d\x75\x09\x50\x72\x6f\x63\x65\x73\x73" \ -"\x20\x75\x73\x65\x72\x20\x6e\x61\x6d\x65\x28\x73\x29\x20\x61\x6e" \ -"\x64\x2f\x6f\x72\x20\x69\x64\x28\x73\x29\x00\x0a\x0a\x52\x65\x73" \ -"\x65\x74\x20\x74\x68\x65\x20\x73\x63\x72\x65\x65\x6e\x00\x0a\x0a" \ -"\x52\x65\x73\x69\x7a\x65\x20\x74\x68\x65\x20\x73\x63\x72\x65\x65" \ -"\x6e\x00\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x52\x65\x76" \ -"\x65\x72\x73\x65\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20\x46\x49" \ -"\x4c\x45\x00\x5b\x2d\x69\x72\x66\x5d\x20\x46\x49\x4c\x45\x2e\x2e" \ -"\x2e\x0a\x0a\x52\x65\x6d\x6f\x76\x65\x20\x28\x75\x6e\x6c\x69\x6e" \ -"\x6b\x29\x20\x46\x49\x4c\x45\x73\x0a\x0a\x09\x2d\x69\x09\x41\x6c" \ -"\x77\x61\x79\x73\x20\x70\x72\x6f\x6d\x70\x74\x20\x62\x65\x66\x6f" \ -"\x72\x65\x20\x72\x65\x6d\x6f\x76\x69\x6e\x67\x0a\x09\x2d\x66\x09" \ -"\x4e\x65\x76\x65\x72\x20\x70\x72\x6f\x6d\x70\x74\x0a\x09\x2d\x52" \ -"\x2c\x2d\x72\x09\x52\x65\x63\x75\x72\x73\x65\x00\x5b\x4f\x50\x54" \ -"\x49\x4f\x4e\x53\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x2e" \ -"\x2e\x2e\x0a\x0a\x52\x65\x6d\x6f\x76\x65\x20\x44\x49\x52\x45\x43" \ -"\x54\x4f\x52\x59\x20\x69\x66\x20\x69\x74\x20\x69\x73\x20\x65\x6d" \ -"\x70\x74\x79\x0a\x0a\x09\x2d\x70\x7c\x2d\x2d\x70\x61\x72\x65\x6e" \ -"\x74\x73\x09\x49\x6e\x63\x6c\x75\x64\x65\x20\x70\x61\x72\x65\x6e" \ -"\x74\x73\x0a\x09\x2d\x2d\x69\x67\x6e\x6f\x72\x65\x2d\x66\x61\x69" \ -"\x6c\x2d\x6f\x6e\x2d\x6e\x6f\x6e\x2d\x65\x6d\x70\x74\x79\x00\x5b" \ -"\x2d\x71\x66\x77\x72\x73\x76\x5d\x20\x4d\x4f\x44\x55\x4c\x45\x20" \ -"\x5b\x73\x79\x6d\x62\x6f\x6c\x3d\x76\x61\x6c\x75\x65\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x09\x2d\x72\x09\x52\x65\x6d\x6f\x76\x65\x20\x4d\x4f" \ -"\x44\x55\x4c\x45\x20\x28\x73\x74\x61\x63\x6b\x73\x29\x20\x6f\x72" \ -"\x20\x64\x6f\x20\x61\x75\x74\x6f\x63\x6c\x65\x61\x6e\x0a\x09\x2d" \ -"\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x76\x09\x56\x65\x72\x62" \ -"\x6f\x73\x65\x0a\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d" \ -"\x77\x09\x57\x61\x69\x74\x20\x66\x6f\x72\x20\x75\x6e\x6c\x6f\x61" \ -"\x64\x0a\x09\x2d\x73\x09\x52\x65\x70\x6f\x72\x74\x20\x76\x69\x61" \ -"\x20\x73\x79\x73\x6c\x6f\x67\x20\x69\x6e\x73\x74\x65\x61\x64\x20" \ -"\x6f\x66\x20\x73\x74\x64\x65\x72\x72\x00\x5b\x2d\x74\x6c\x5d\x20" \ -"\x5b\x2d\x61\x20\x41\x52\x47\x5d\x2e\x2e\x2e\x20\x5b\x2d\x75\x20" \ -"\x4d\x41\x53\x4b\x5d\x20\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a" \ -"\x0a\x52\x75\x6e\x20\x61\x20\x62\x75\x6e\x63\x68\x20\x6f\x66\x20" \ -"\x73\x63\x72\x69\x70\x74\x73\x20\x69\x6e\x20\x44\x49\x52\x45\x43" \ -"\x54\x4f\x52\x59\x0a\x0a\x09\x2d\x74\x09\x44\x72\x79\x20\x72\x75" \ -"\x6e\x0a\x09\x2d\x6c\x09\x50\x72\x69\x6e\x74\x20\x6e\x61\x6d\x65" \ -"\x73\x20\x6f\x66\x20\x6d\x61\x74\x63\x68\x69\x6e\x67\x20\x66\x69" \ -"\x6c\x65\x73\x20\x65\x76\x65\x6e\x20\x69\x66\x20\x74\x68\x65\x79" \ -"\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x65\x78\x65\x63\x75\x74\x61" \ -"\x62\x6c\x65\x0a\x09\x2d\x61\x20\x41\x52\x47\x09\x50\x61\x73\x73" \ -"\x20\x41\x52\x47\x20\x61\x73\x20\x61\x72\x67\x75\x6d\x65\x6e\x74" \ -"\x20\x74\x6f\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x0a\x09\x2d\x75" \ -"\x20\x4d\x41\x53\x4b\x09\x53\x65\x74\x20\x75\x6d\x61\x73\x6b\x20" \ -"\x74\x6f\x20\x4d\x41\x53\x4b\x20\x62\x65\x66\x6f\x72\x65\x20\x72" \ -"\x75\x6e\x6e\x69\x6e\x67\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x00" \ -"\x5b\x2d\x69\x6e\x72\x5d\x20\x5b\x2d\x66\x20\x46\x49\x4c\x45\x5d" \ -"\x2e\x2e\x2e\x20\x5b\x2d\x65\x20\x43\x4d\x44\x5d\x2e\x2e\x2e\x20" \ -"\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x6f\x72\x3a\x20\x73\x65" \ -"\x64\x20\x5b\x2d\x69\x6e\x72\x5d\x20\x43\x4d\x44\x20\x5b\x46\x49" \ -"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x65\x20\x43\x4d\x44\x09" \ -"\x41\x64\x64\x20\x43\x4d\x44\x20\x74\x6f\x20\x73\x65\x64\x20\x63" \ -"\x6f\x6d\x6d\x61\x6e\x64\x73\x20\x74\x6f\x20\x62\x65\x20\x65\x78" \ -"\x65\x63\x75\x74\x65\x64\x0a\x09\x2d\x66\x20\x46\x49\x4c\x45\x09" \ -"\x41\x64\x64\x20\x46\x49\x4c\x45\x20\x63\x6f\x6e\x74\x65\x6e\x74" \ -"\x73\x20\x74\x6f\x20\x73\x65\x64\x20\x63\x6f\x6d\x6d\x61\x6e\x64" \ -"\x73\x20\x74\x6f\x20\x62\x65\x20\x65\x78\x65\x63\x75\x74\x65\x64" \ -"\x0a\x09\x2d\x69\x5b\x53\x46\x58\x5d\x09\x45\x64\x69\x74\x20\x66" \ -"\x69\x6c\x65\x73\x20\x69\x6e\x2d\x70\x6c\x61\x63\x65\x20\x28\x6f" \ -"\x74\x68\x65\x72\x77\x69\x73\x65\x20\x73\x65\x6e\x64\x73\x20\x74" \ -"\x6f\x20\x73\x74\x64\x6f\x75\x74\x29\x0a\x09\x09\x4f\x70\x74\x69" \ -"\x6f\x6e\x61\x6c\x6c\x79\x20\x62\x61\x63\x6b\x20\x66\x69\x6c\x65" \ -"\x73\x20\x75\x70\x2c\x20\x61\x70\x70\x65\x6e\x64\x69\x6e\x67\x20" \ -"\x53\x46\x58\x0a\x09\x2d\x6e\x09\x53\x75\x70\x70\x72\x65\x73\x73" \ -"\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x70\x72\x69\x6e\x74" \ -"\x69\x6e\x67\x20\x6f\x66\x20\x70\x61\x74\x74\x65\x72\x6e\x20\x73" \ -"\x70\x61\x63\x65\x0a\x09\x2d\x72\x09\x55\x73\x65\x20\x65\x78\x74" \ -"\x65\x6e\x64\x65\x64\x20\x72\x65\x67\x65\x78\x20\x73\x79\x6e\x74" \ -"\x61\x78\x0a\x0a\x49\x66\x20\x6e\x6f\x20\x2d\x65\x20\x6f\x72\x20" \ -"\x2d\x66\x2c\x20\x74\x68\x65\x20\x66\x69\x72\x73\x74\x20\x6e\x6f" \ -"\x6e\x2d\x6f\x70\x74\x69\x6f\x6e\x20\x61\x72\x67\x75\x6d\x65\x6e" \ -"\x74\x20\x69\x73\x20\x74\x68\x65\x20\x73\x65\x64\x20\x63\x6f\x6d" \ -"\x6d\x61\x6e\x64\x20\x73\x74\x72\x69\x6e\x67\x2e\x0a\x52\x65\x6d" \ -"\x61\x69\x6e\x69\x6e\x67\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73" \ -"\x20\x61\x72\x65\x20\x69\x6e\x70\x75\x74\x20\x66\x69\x6c\x65\x73" \ -"\x20\x28\x73\x74\x64\x69\x6e\x20\x69\x66\x20\x6e\x6f\x6e\x65\x29" \ -"\x2e\x00\x5b\x2d\x77\x5d\x20\x5b\x2d\x73\x20\x53\x45\x50\x5d\x20" \ -"\x5b\x46\x49\x52\x53\x54\x20\x5b\x49\x4e\x43\x5d\x5d\x20\x4c\x41" \ -"\x53\x54\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6e\x75\x6d\x62\x65\x72" \ -"\x73\x20\x66\x72\x6f\x6d\x20\x46\x49\x52\x53\x54\x20\x74\x6f\x20" \ -"\x4c\x41\x53\x54\x2c\x20\x69\x6e\x20\x73\x74\x65\x70\x73\x20\x6f" \ -"\x66\x20\x49\x4e\x43\x2e\x0a\x46\x49\x52\x53\x54\x2c\x20\x49\x4e" \ -"\x43\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x74\x6f\x20\x31\x2e\x0a" \ -"\x0a\x09\x2d\x77\x09\x50\x61\x64\x20\x74\x6f\x20\x6c\x61\x73\x74" \ -"\x20\x77\x69\x74\x68\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x7a\x65" \ -"\x72\x6f\x73\x0a\x09\x2d\x73\x20\x53\x45\x50\x09\x53\x74\x72\x69" \ -"\x6e\x67\x20\x73\x65\x70\x61\x72\x61\x74\x6f\x72\x00\x5b\x2d\x72" \ -"\x5d\x20\x5b\x44\x45\x56\x49\x43\x45\x5d\x0a\x0a\x52\x65\x64\x69" \ -"\x72\x65\x63\x74\x20\x73\x79\x73\x74\x65\x6d\x20\x63\x6f\x6e\x73" \ -"\x6f\x6c\x65\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x44\x45" \ -"\x56\x49\x43\x45\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x3a\x20\x2f" \ -"\x64\x65\x76\x2f\x74\x74\x79\x29\x0a\x0a\x09\x2d\x72\x09\x52\x65" \ -"\x73\x65\x74\x20\x6f\x75\x74\x70\x75\x74\x20\x74\x6f\x20\x2f\x64" \ -"\x65\x76\x2f\x63\x6f\x6e\x73\x6f\x6c\x65\x00\x5b\x2d\x67\x61\x62" \ -"\x47\x76\x7a\x56\x5d\x20\x44\x45\x56\x49\x43\x45\x20\x5b\x50\x41" \ -"\x52\x41\x4d\x45\x54\x45\x52\x20\x5b\x41\x52\x47\x5d\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x52\x65\x71\x75\x65\x73\x74\x20\x6f\x72\x20\x73\x65" \ -"\x74\x20\x4c\x69\x6e\x75\x78\x20\x73\x65\x72\x69\x61\x6c\x20\x70" \ -"\x6f\x72\x74\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a" \ -"\x0a\x09\x2d\x67\x09\x49\x6e\x74\x65\x72\x70\x72\x65\x74\x20\x70" \ -"\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x20\x61\x73\x20\x6c\x69\x73" \ -"\x74\x20\x6f\x66\x20\x64\x65\x76\x69\x63\x65\x73\x20\x66\x6f\x72" \ -"\x20\x72\x65\x70\x6f\x72\x74\x69\x6e\x67\x0a\x09\x2d\x61\x09\x50" \ -"\x72\x69\x6e\x74\x20\x61\x6c\x6c\x20\x61\x76\x61\x69\x6c\x61\x62" \ -"\x6c\x65\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x09" \ -"\x2d\x62\x09\x50\x72\x69\x6e\x74\x20\x73\x75\x6d\x6d\x61\x72\x79" \ -"\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x09\x2d\x47" \ -"\x09\x50\x72\x69\x6e\x74\x20\x69\x6e\x20\x66\x6f\x72\x6d\x20\x77" \ -"\x68\x69\x63\x68\x20\x63\x61\x6e\x20\x62\x65\x20\x66\x65\x64\x20" \ -"\x62\x61\x63\x6b\x0a\x09\x09\x74\x6f\x20\x73\x65\x74\x73\x65\x72" \ -"\x69\x61\x6c\x20\x61\x73\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c" \ -"\x69\x6e\x65\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x0a\x09" \ -"\x2d\x7a\x09\x5a\x65\x72\x6f\x20\x6f\x75\x74\x20\x73\x65\x72\x69" \ -"\x61\x6c\x20\x66\x6c\x61\x67\x73\x20\x62\x65\x66\x6f\x72\x65\x20" \ -"\x73\x65\x74\x74\x69\x6e\x67\x0a\x09\x2d\x76\x09\x56\x65\x72\x62" \ -"\x6f\x73\x65\x0a\x0a\x50\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x3a" \ -"\x20\x28\x2a\x20\x3d\x20\x74\x61\x6b\x65\x73\x20\x61\x6e\x20\x61" \ -"\x72\x67\x75\x6d\x65\x6e\x74\x2c\x20\x5e\x20\x3d\x20\x63\x61\x6e" \ -"\x20\x62\x65\x20\x74\x75\x72\x6e\x65\x64\x20\x6f\x66\x66\x20\x62" \ -"\x79\x20\x70\x72\x65\x63\x65\x64\x69\x6e\x67\x20\x5e\x29\x0a\x09" \ -"\x2a\x70\x6f\x72\x74\x2c\x20\x2a\x69\x72\x71\x2c\x20\x2a\x64\x69" \ -"\x76\x69\x73\x6f\x72\x2c\x20\x2a\x75\x61\x72\x74\x2c\x20\x2a\x62" \ -"\x61\x75\x6e\x64\x5f\x62\x61\x73\x65\x2c\x20\x2a\x63\x6c\x6f\x73" \ -"\x65\x5f\x64\x65\x6c\x61\x79\x2c\x20\x2a\x63\x6c\x6f\x73\x69\x6e" \ -"\x67\x5f\x77\x61\x69\x74\x2c\x0a\x09\x5e\x66\x6f\x75\x72\x70\x6f" \ -"\x72\x74\x2c\x20\x5e\x61\x75\x74\x6f\x5f\x69\x72\x71\x2c\x20\x5e" \ -"\x73\x6b\x69\x70\x5f\x74\x65\x73\x74\x2c\x20\x5e\x73\x61\x6b\x2c" \ -"\x20\x5e\x73\x65\x73\x73\x69\x6f\x6e\x5f\x6c\x6f\x63\x6b\x6f\x75" \ -"\x74\x2c\x20\x5e\x70\x67\x72\x70\x5f\x6c\x6f\x63\x6b\x6f\x75\x74" \ -"\x2c\x0a\x09\x5e\x63\x61\x6c\x6c\x6f\x75\x74\x5f\x6e\x6f\x68\x75" \ -"\x70\x2c\x20\x5e\x73\x70\x6c\x69\x74\x5f\x74\x65\x72\x6d\x69\x6f" \ -"\x73\x2c\x20\x5e\x68\x75\x70\x5f\x6e\x6f\x74\x69\x66\x79\x2c\x20" \ -"\x5e\x6c\x6f\x77\x5f\x6c\x61\x74\x65\x6e\x63\x79\x2c\x20\x61\x75" \ -"\x74\x6f\x63\x6f\x6e\x66\x69\x67\x2c\x0a\x09\x73\x70\x64\x5f\x6e" \ -"\x6f\x72\x6d\x61\x6c\x2c\x20\x73\x70\x64\x5f\x68\x69\x2c\x20\x73" \ -"\x70\x64\x5f\x76\x68\x69\x2c\x20\x73\x70\x64\x5f\x73\x68\x69\x2c" \ -"\x20\x73\x70\x64\x5f\x77\x61\x72\x70\x2c\x20\x73\x70\x64\x5f\x63" \ -"\x75\x73\x74\x0a\x0a\x55\x41\x52\x54\x20\x74\x79\x70\x65\x73\x3a" \ -"\x0a\x09\x75\x6e\x6b\x6e\x6f\x77\x6e\x2c\x20\x38\x32\x35\x30\x2c" \ -"\x20\x31\x36\x34\x35\x30\x2c\x20\x31\x36\x35\x35\x30\x2c\x20\x31" \ -"\x36\x35\x35\x30\x41\x2c\x20\x43\x69\x72\x72\x75\x73\x2c\x20\x31" \ -"\x36\x36\x35\x30\x2c\x20\x31\x36\x36\x35\x30\x56\x32\x2c\x20\x31" \ -"\x36\x37\x35\x30\x2c\x0a\x09\x31\x36\x39\x35\x30\x2c\x20\x31\x36" \ -"\x39\x35\x34\x2c\x20\x31\x36\x36\x35\x34\x2c\x20\x31\x36\x38\x35" \ -"\x30\x2c\x20\x52\x53\x41\x2c\x20\x4e\x53\x31\x36\x35\x35\x30\x41" \ -"\x2c\x20\x58\x53\x43\x41\x4c\x45\x2c\x20\x52\x4d\x39\x30\x30\x30" \ -"\x2c\x20\x4f\x43\x54\x45\x4f\x4e\x2c\x20\x41\x52\x37\x2c\x0a\x09" \ -"\x55\x36\x5f\x31\x36\x35\x35\x30\x41\x00\x50\x52\x4f\x47\x20\x41" \ -"\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20\x69\x6e" \ -"\x20\x61\x20\x6e\x65\x77\x20\x73\x65\x73\x73\x69\x6f\x6e\x2e\x20" \ -"\x50\x52\x4f\x47\x20\x77\x69\x6c\x6c\x20\x68\x61\x76\x65\x20\x6e" \ -"\x6f\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x69\x6e\x67\x20\x74\x65" \ -"\x72\x6d\x69\x6e\x61\x6c\x0a\x61\x6e\x64\x20\x77\x69\x6c\x6c\x20" \ -"\x6e\x6f\x74\x20\x62\x65\x20\x61\x66\x66\x65\x63\x74\x65\x64\x20" \ -"\x62\x79\x20\x6b\x65\x79\x62\x6f\x61\x72\x64\x20\x73\x69\x67\x6e" \ -"\x61\x6c\x73\x20\x28\x43\x74\x72\x6c\x2d\x43\x20\x65\x74\x63\x29" \ -"\x2e\x0a\x53\x65\x65\x20\x73\x65\x74\x73\x69\x64\x28\x32\x29\x20" \ -"\x66\x6f\x72\x20\x64\x65\x74\x61\x69\x6c\x73\x2e\x00\x5b\x2d\x2f" \ -"\x2b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x2d\x2f\x2b\x6f\x20" \ -"\x4f\x50\x54\x5d\x2e\x2e\x2e\x20\x5b\x2d\x63\x20\x27\x53\x43\x52" \ -"\x49\x50\x54\x27\x20\x5b\x41\x52\x47\x30\x20\x5b\x41\x52\x47\x53" \ -"\x5d\x5d\x20\x2f\x20\x46\x49\x4c\x45\x20\x5b\x41\x52\x47\x53\x5d" \ -"\x5d\x0a\x0a\x55\x6e\x69\x78\x20\x73\x68\x65\x6c\x6c\x20\x69\x6e" \ -"\x74\x65\x72\x70\x72\x65\x74\x65\x72\x00\x5b\x2d\x63\x5b\x73\x77" \ -"\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72" \ -"\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63\x6b\x20\x53\x48\x41" \ -"\x31\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09\x2d\x63" \ -"\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d\x73\x20\x61\x67\x61\x69" \ -"\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69\x6e\x20\x46\x49\x4c\x45" \ -"\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75\x74\x70" \ -"\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c\x20\x73\x74\x61" \ -"\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73\x68\x6f\x77\x73\x20\x73" \ -"\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77\x09\x57\x61\x72\x6e\x20" \ -"\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f\x70\x65\x72\x6c\x79" \ -"\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64\x20\x63\x68\x65\x63\x6b" \ -"\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b\x2d\x63\x5b\x73\x77" \ -"\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72" \ -"\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63\x6b\x20\x53\x48\x41" \ -"\x32\x35\x36\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a\x0a\x09" \ -"\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d\x73\x20\x61\x67" \ -"\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69\x6e\x20\x46\x49" \ -"\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20\x6f\x75" \ -"\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c\x20\x73" \ -"\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73\x68\x6f\x77\x73" \ -"\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77\x09\x57\x61\x72" \ -"\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f\x70\x65\x72" \ -"\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64\x20\x63\x68\x65" \ -"\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b\x2d\x63\x5b" \ -"\x73\x77\x5d\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a" \ -"\x50\x72\x69\x6e\x74\x20\x6f\x72\x20\x63\x68\x65\x63\x6b\x20\x53" \ -"\x48\x41\x35\x31\x32\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x73\x0a" \ -"\x0a\x09\x2d\x63\x09\x43\x68\x65\x63\x6b\x20\x73\x75\x6d\x73\x20" \ -"\x61\x67\x61\x69\x6e\x73\x74\x20\x6c\x69\x73\x74\x20\x69\x6e\x20" \ -"\x46\x49\x4c\x45\x73\x0a\x09\x2d\x73\x09\x44\x6f\x6e\x27\x74\x20" \ -"\x6f\x75\x74\x70\x75\x74\x20\x61\x6e\x79\x74\x68\x69\x6e\x67\x2c" \ -"\x20\x73\x74\x61\x74\x75\x73\x20\x63\x6f\x64\x65\x20\x73\x68\x6f" \ -"\x77\x73\x20\x73\x75\x63\x63\x65\x73\x73\x0a\x09\x2d\x77\x09\x57" \ -"\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x69\x6d\x70\x72\x6f\x70" \ -"\x65\x72\x6c\x79\x20\x66\x6f\x72\x6d\x61\x74\x74\x65\x64\x20\x63" \ -"\x68\x65\x63\x6b\x73\x75\x6d\x20\x6c\x69\x6e\x65\x73\x00\x5b\x4e" \ -"\x5d\x2e\x2e\x2e\x0a\x0a\x50\x61\x75\x73\x65\x20\x66\x6f\x72\x20" \ -"\x61\x20\x74\x69\x6d\x65\x20\x65\x71\x75\x61\x6c\x20\x74\x6f\x20" \ -"\x74\x68\x65\x20\x74\x6f\x74\x61\x6c\x20\x6f\x66\x20\x74\x68\x65" \ -"\x20\x61\x72\x67\x73\x20\x67\x69\x76\x65\x6e\x2c\x20\x77\x68\x65" \ -"\x72\x65\x20\x65\x61\x63\x68\x20\x61\x72\x67\x20\x63\x61\x6e\x0a" \ -"\x68\x61\x76\x65\x20\x61\x6e\x20\x6f\x70\x74\x69\x6f\x6e\x61\x6c" \ -"\x20\x73\x75\x66\x66\x69\x78\x20\x6f\x66\x20\x28\x73\x29\x65\x63" \ -"\x6f\x6e\x64\x73\x2c\x20\x28\x6d\x29\x69\x6e\x75\x74\x65\x73\x2c" \ -"\x20\x28\x68\x29\x6f\x75\x72\x73\x2c\x20\x6f\x72\x20\x28\x64\x29" \ -"\x61\x79\x73\x00\x5b\x2d\x6e\x72\x75\x5d\x20\x5b\x46\x49\x4c\x45" \ -"\x5d\x2e\x2e\x2e\x0a\x0a\x53\x6f\x72\x74\x20\x6c\x69\x6e\x65\x73" \ -"\x20\x6f\x66\x20\x74\x65\x78\x74\x0a\x0a\x09\x2d\x6e\x09\x53\x6f" \ -"\x72\x74\x20\x6e\x75\x6d\x62\x65\x72\x73\x0a\x09\x2d\x72\x09\x52" \ -"\x65\x76\x65\x72\x73\x65\x20\x73\x6f\x72\x74\x20\x6f\x72\x64\x65" \ -"\x72\x0a\x09\x2d\x75\x09\x53\x75\x70\x70\x72\x65\x73\x73\x20\x64" \ -"\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c\x69\x6e\x65\x73\x00\x5b" \ -"\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x49\x4e\x50\x55\x54\x20" \ -"\x5b\x50\x52\x45\x46\x49\x58\x5d\x5d\x0a\x0a\x09\x2d\x62\x20\x4e" \ -"\x5b\x6b\x7c\x6d\x5d\x09\x53\x70\x6c\x69\x74\x20\x62\x79\x20\x4e" \ -"\x20\x28\x6b\x69\x6c\x6f\x7c\x6d\x65\x67\x61\x29\x62\x79\x74\x65" \ -"\x73\x0a\x09\x2d\x6c\x20\x4e\x09\x09\x53\x70\x6c\x69\x74\x20\x62" \ -"\x79\x20\x4e\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x61\x20\x4e\x09" \ -"\x09\x55\x73\x65\x20\x4e\x20\x6c\x65\x74\x74\x65\x72\x73\x20\x61" \ -"\x73\x20\x73\x75\x66\x66\x69\x78\x00\x5b\x4f\x50\x54\x49\x4f\x4e" \ -"\x53\x5d\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x0a\x0a\x44\x69\x73\x70" \ -"\x6c\x61\x79\x20\x66\x69\x6c\x65\x20\x28\x64\x65\x66\x61\x75\x6c" \ -"\x74\x29\x20\x6f\x72\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d" \ -"\x20\x73\x74\x61\x74\x75\x73\x0a\x0a\x09\x2d\x66\x09\x44\x69\x73" \ -"\x70\x6c\x61\x79\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20" \ -"\x73\x74\x61\x74\x75\x73\x0a\x09\x2d\x4c\x09\x46\x6f\x6c\x6c\x6f" \ -"\x77\x20\x6c\x69\x6e\x6b\x73\x0a\x09\x2d\x74\x09\x44\x69\x73\x70" \ -"\x6c\x61\x79\x20\x69\x6e\x66\x6f\x20\x69\x6e\x20\x74\x65\x72\x73" \ -"\x65\x20\x66\x6f\x72\x6d\x00\x5b\x2d\x61\x66\x6f\x5d\x20\x5b\x2d" \ -"\x6e\x20\x4c\x45\x4e\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e" \ -"\x0a\x0a\x44\x69\x73\x70\x6c\x61\x79\x20\x70\x72\x69\x6e\x74\x61" \ -"\x62\x6c\x65\x20\x73\x74\x72\x69\x6e\x67\x73\x20\x69\x6e\x20\x61" \ -"\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x69\x6c\x65\x0a\x0a\x09\x2d" \ -"\x61\x09\x53\x63\x61\x6e\x20\x77\x68\x6f\x6c\x65\x20\x66\x69\x6c" \ -"\x65\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x09\x2d\x66\x09" \ -"\x50\x72\x65\x63\x65\x64\x65\x20\x73\x74\x72\x69\x6e\x67\x73\x20" \ -"\x77\x69\x74\x68\x20\x66\x69\x6c\x65\x6e\x61\x6d\x65\x73\x0a\x09" \ -"\x2d\x6e\x20\x4c\x45\x4e\x09\x41\x74\x20\x6c\x65\x61\x73\x74\x20" \ -"\x4c\x45\x4e\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x66" \ -"\x6f\x72\x6d\x20\x61\x20\x73\x74\x72\x69\x6e\x67\x20\x28\x64\x65" \ -"\x66\x61\x75\x6c\x74\x20\x34\x29\x0a\x09\x2d\x6f\x09\x50\x72\x65" \ -"\x63\x65\x64\x65\x20\x73\x74\x72\x69\x6e\x67\x73\x20\x77\x69\x74" \ -"\x68\x20\x64\x65\x63\x69\x6d\x61\x6c\x20\x6f\x66\x66\x73\x65\x74" \ -"\x73\x00\x5b\x2d\x61\x7c\x67\x5d\x20\x5b\x2d\x46\x20\x44\x45\x56" \ -"\x49\x43\x45\x5d\x20\x5b\x53\x45\x54\x54\x49\x4e\x47\x5d\x2e\x2e" \ -"\x2e\x0a\x0a\x57\x69\x74\x68\x6f\x75\x74\x20\x61\x72\x67\x75\x6d" \ -"\x65\x6e\x74\x73\x2c\x20\x70\x72\x69\x6e\x74\x73\x20\x62\x61\x75" \ -"\x64\x20\x72\x61\x74\x65\x2c\x20\x6c\x69\x6e\x65\x20\x64\x69\x73" \ -"\x63\x69\x70\x6c\x69\x6e\x65\x2c\x0a\x61\x6e\x64\x20\x64\x65\x76" \ -"\x69\x61\x74\x69\x6f\x6e\x73\x20\x66\x72\x6f\x6d\x20\x73\x74\x74" \ -"\x79\x20\x73\x61\x6e\x65\x0a\x0a\x09\x2d\x46\x20\x44\x45\x56\x49" \ -"\x43\x45\x09\x4f\x70\x65\x6e\x20\x64\x65\x76\x69\x63\x65\x20\x69" \ -"\x6e\x73\x74\x65\x61\x64\x20\x6f\x66\x20\x73\x74\x64\x69\x6e\x0a" \ -"\x09\x2d\x61\x09\x09\x50\x72\x69\x6e\x74\x20\x61\x6c\x6c\x20\x63" \ -"\x75\x72\x72\x65\x6e\x74\x20\x73\x65\x74\x74\x69\x6e\x67\x73\x20" \ -"\x69\x6e\x20\x68\x75\x6d\x61\x6e\x2d\x72\x65\x61\x64\x61\x62\x6c" \ -"\x65\x20\x66\x6f\x72\x6d\x0a\x09\x2d\x67\x09\x09\x50\x72\x69\x6e" \ -"\x74\x20\x69\x6e\x20\x73\x74\x74\x79\x2d\x72\x65\x61\x64\x61\x62" \ -"\x6c\x65\x20\x66\x6f\x72\x6d\x0a\x09\x5b\x53\x45\x54\x54\x49\x4e" \ -"\x47\x5d\x09\x53\x65\x65\x20\x6d\x61\x6e\x70\x61\x67\x65\x00\x5b" \ -"\x2d\x61\x5d\x20\x5b\x44\x45\x56\x49\x43\x45\x5d\x0a\x0a\x53\x74" \ -"\x6f\x70\x20\x73\x77\x61\x70\x70\x69\x6e\x67\x20\x6f\x6e\x20\x44" \ -"\x45\x56\x49\x43\x45\x0a\x0a\x09\x2d\x61\x09\x53\x74\x6f\x70\x20" \ -"\x73\x77\x61\x70\x70\x69\x6e\x67\x20\x6f\x6e\x20\x61\x6c\x6c\x20" \ -"\x73\x77\x61\x70\x20\x64\x65\x76\x69\x63\x65\x73\x00\x5b\x2d\x61" \ -"\x5d\x20\x5b\x44\x45\x56\x49\x43\x45\x5d\x0a\x0a\x53\x74\x61\x72" \ -"\x74\x20\x73\x77\x61\x70\x70\x69\x6e\x67\x20\x6f\x6e\x20\x44\x45" \ -"\x56\x49\x43\x45\x0a\x0a\x09\x2d\x61\x09\x53\x74\x61\x72\x74\x20" \ -"\x73\x77\x61\x70\x70\x69\x6e\x67\x20\x6f\x6e\x20\x61\x6c\x6c\x20" \ -"\x73\x77\x61\x70\x20\x64\x65\x76\x69\x63\x65\x73\x00\x0a\x0a\x57" \ -"\x72\x69\x74\x65\x20\x61\x6c\x6c\x20\x62\x75\x66\x66\x65\x72\x65" \ -"\x64\x20\x62\x6c\x6f\x63\x6b\x73\x20\x74\x6f\x20\x64\x69\x73\x6b" \ -"\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x4b\x45\x59\x5b" \ -"\x3d\x56\x41\x4c\x55\x45\x5d\x5d\x2e\x2e\x2e\x0a\x0a\x53\x68\x6f" \ -"\x77\x2f\x73\x65\x74\x20\x6b\x65\x72\x6e\x65\x6c\x20\x70\x61\x72" \ -"\x61\x6d\x65\x74\x65\x72\x73\x0a\x0a\x09\x2d\x65\x09\x44\x6f\x6e" \ -"\x27\x74\x20\x77\x61\x72\x6e\x20\x61\x62\x6f\x75\x74\x20\x75\x6e" \ -"\x6b\x6e\x6f\x77\x6e\x20\x6b\x65\x79\x73\x0a\x09\x2d\x6e\x09\x44" \ -"\x6f\x6e\x27\x74\x20\x73\x68\x6f\x77\x20\x6b\x65\x79\x20\x6e\x61" \ -"\x6d\x65\x73\x0a\x09\x2d\x61\x09\x53\x68\x6f\x77\x20\x61\x6c\x6c" \ -"\x20\x76\x61\x6c\x75\x65\x73\x0a\x09\x2d\x77\x09\x53\x65\x74\x20" \ -"\x76\x61\x6c\x75\x65\x73\x0a\x09\x2d\x70\x20\x46\x49\x4c\x45\x09" \ -"\x53\x65\x74\x20\x76\x61\x6c\x75\x65\x73\x20\x66\x72\x6f\x6d\x20" \ -"\x46\x49\x4c\x45\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x2f\x65" \ -"\x74\x63\x2f\x73\x79\x73\x63\x74\x6c\x2e\x63\x6f\x6e\x66\x29\x0a" \ -"\x09\x2d\x71\x20\x20\x20\x20\x20\x20\x53\x65\x74\x20\x76\x61\x6c" \ -"\x75\x65\x73\x20\x73\x69\x6c\x65\x6e\x74\x6c\x79\x00\x5b\x46\x49" \ -"\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6e\x63\x61\x74\x65\x6e" \ -"\x61\x74\x65\x20\x46\x49\x4c\x45\x73\x20\x61\x6e\x64\x20\x70\x72" \ -"\x69\x6e\x74\x20\x74\x68\x65\x6d\x20\x69\x6e\x20\x72\x65\x76\x65" \ -"\x72\x73\x65\x00\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x46" \ -"\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x50\x72\x69\x6e\x74\x20\x6c" \ -"\x61\x73\x74\x20\x31\x30\x20\x6c\x69\x6e\x65\x73\x20\x6f\x66\x20" \ -"\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74" \ -"\x64\x69\x6e\x29\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x2e\x0a" \ -"\x57\x69\x74\x68\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x6f" \ -"\x6e\x65\x20\x46\x49\x4c\x45\x2c\x20\x70\x72\x65\x63\x65\x64\x65" \ -"\x20\x65\x61\x63\x68\x20\x77\x69\x74\x68\x20\x61\x20\x66\x69\x6c" \ -"\x65\x6e\x61\x6d\x65\x20\x68\x65\x61\x64\x65\x72\x2e\x0a\x0a\x09" \ -"\x2d\x66\x09\x09\x50\x72\x69\x6e\x74\x20\x64\x61\x74\x61\x20\x61" \ -"\x73\x20\x66\x69\x6c\x65\x20\x67\x72\x6f\x77\x73\x0a\x09\x2d\x73" \ -"\x20\x53\x45\x43\x4f\x4e\x44\x53\x09\x57\x61\x69\x74\x20\x53\x45" \ -"\x43\x4f\x4e\x44\x53\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x72\x65" \ -"\x61\x64\x73\x20\x77\x69\x74\x68\x20\x2d\x66\x0a\x09\x2d\x6e\x20" \ -"\x4e\x5b\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e\x74\x20\x6c\x61\x73" \ -"\x74\x20\x4e\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x63\x20\x4e\x5b" \ -"\x6b\x62\x6d\x5d\x09\x50\x72\x69\x6e\x74\x20\x6c\x61\x73\x74\x20" \ -"\x4e\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x71\x09\x09\x4e\x65\x76" \ -"\x65\x72\x20\x70\x72\x69\x6e\x74\x20\x68\x65\x61\x64\x65\x72\x73" \ -"\x0a\x09\x2d\x76\x09\x09\x41\x6c\x77\x61\x79\x73\x20\x70\x72\x69" \ -"\x6e\x74\x20\x68\x65\x61\x64\x65\x72\x73\x0a\x0a\x4e\x20\x6d\x61" \ -"\x79\x20\x62\x65\x20\x73\x75\x66\x66\x69\x78\x65\x64\x20\x62\x79" \ -"\x20\x6b\x20\x28\x78\x31\x30\x32\x34\x29\x2c\x20\x62\x20\x28\x78" \ -"\x35\x31\x32\x29\x2c\x20\x6f\x72\x20\x6d\x20\x28\x78\x31\x30\x32" \ -"\x34\x5e\x32\x29\x2e\x0a\x49\x66\x20\x4e\x20\x73\x74\x61\x72\x74" \ -"\x73\x20\x77\x69\x74\x68\x20\x61\x20\x27\x2b\x27\x2c\x20\x6f\x75" \ -"\x74\x70\x75\x74\x20\x62\x65\x67\x69\x6e\x73\x20\x77\x69\x74\x68" \ -"\x20\x74\x68\x65\x20\x4e\x74\x68\x20\x69\x74\x65\x6d\x20\x66\x72" \ -"\x6f\x6d\x20\x74\x68\x65\x20\x73\x74\x61\x72\x74\x0a\x6f\x66\x20" \ -"\x65\x61\x63\x68\x20\x66\x69\x6c\x65\x2c\x20\x6e\x6f\x74\x20\x66" \ -"\x72\x6f\x6d\x20\x74\x68\x65\x20\x65\x6e\x64\x2e\x00\x2d\x5b\x63" \ -"\x78\x74\x7a\x6a\x68\x6d\x76\x4f\x5d\x20\x5b\x2d\x58\x20\x46\x49" \ -"\x4c\x45\x5d\x20\x5b\x2d\x54\x20\x46\x49\x4c\x45\x5d\x20\x5b\x2d" \ -"\x66\x20\x54\x41\x52\x46\x49\x4c\x45\x5d\x20\x5b\x2d\x43\x20\x44" \ -"\x49\x52\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43" \ -"\x72\x65\x61\x74\x65\x2c\x20\x65\x78\x74\x72\x61\x63\x74\x2c\x20" \ -"\x6f\x72\x20\x6c\x69\x73\x74\x20\x66\x69\x6c\x65\x73\x20\x66\x72" \ -"\x6f\x6d\x20\x61\x20\x74\x61\x72\x20\x66\x69\x6c\x65\x0a\x0a\x4f" \ -"\x70\x65\x72\x61\x74\x69\x6f\x6e\x3a\x0a\x09\x63\x09\x43\x72\x65" \ -"\x61\x74\x65\x0a\x09\x78\x09\x45\x78\x74\x72\x61\x63\x74\x0a\x09" \ -"\x74\x09\x4c\x69\x73\x74\x0a\x09\x66\x09\x4e\x61\x6d\x65\x20\x6f" \ -"\x66\x20\x54\x41\x52\x46\x49\x4c\x45\x20\x28\x27\x2d\x27\x20\x66" \ -"\x6f\x72\x20\x73\x74\x64\x69\x6e\x2f\x6f\x75\x74\x29\x0a\x09\x43" \ -"\x09\x43\x68\x61\x6e\x67\x65\x20\x74\x6f\x20\x44\x49\x52\x20\x62" \ -"\x65\x66\x6f\x72\x65\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a" \ -"\x09\x76\x09\x56\x65\x72\x62\x6f\x73\x65\x0a\x09\x7a\x09\x28\x44" \ -"\x65\x29\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67" \ -"\x20\x67\x7a\x69\x70\x0a\x09\x6a\x09\x28\x44\x65\x29\x63\x6f\x6d" \ -"\x70\x72\x65\x73\x73\x20\x75\x73\x69\x6e\x67\x20\x62\x7a\x69\x70" \ -"\x32\x0a\x09\x4f\x09\x45\x78\x74\x72\x61\x63\x74\x20\x74\x6f\x20" \ -"\x73\x74\x64\x6f\x75\x74\x0a\x09\x68\x09\x46\x6f\x6c\x6c\x6f\x77" \ -"\x20\x73\x79\x6d\x6c\x69\x6e\x6b\x73\x0a\x09\x6d\x09\x44\x6f\x6e" \ -"\x27\x74\x20\x72\x65\x73\x74\x6f\x72\x65\x20\x6d\x74\x69\x6d\x65" \ -"\x0a\x09\x65\x78\x63\x6c\x75\x64\x65\x09\x46\x69\x6c\x65\x20\x74" \ -"\x6f\x20\x65\x78\x63\x6c\x75\x64\x65\x0a\x09\x58\x09\x46\x69\x6c" \ -"\x65\x20\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x6f\x20" \ -"\x65\x78\x63\x6c\x75\x64\x65\x0a\x09\x54\x09\x46\x69\x6c\x65\x20" \ -"\x77\x69\x74\x68\x20\x6e\x61\x6d\x65\x73\x20\x74\x6f\x20\x69\x6e" \ -"\x63\x6c\x75\x64\x65\x00\x5b\x2d\x61\x69\x5d\x20\x5b\x46\x49\x4c" \ -"\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x70\x79\x20\x73\x74\x64\x69" \ -"\x6e\x20\x74\x6f\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x2c\x20" \ -"\x61\x6e\x64\x20\x61\x6c\x73\x6f\x20\x74\x6f\x20\x73\x74\x64\x6f" \ -"\x75\x74\x0a\x0a\x09\x2d\x61\x09\x41\x70\x70\x65\x6e\x64\x20\x74" \ -"\x6f\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x46\x49\x4c\x45" \ -"\x73\x2c\x20\x64\x6f\x6e\x27\x74\x20\x6f\x76\x65\x72\x77\x72\x69" \ -"\x74\x65\x0a\x09\x2d\x69\x09\x49\x67\x6e\x6f\x72\x65\x20\x69\x6e" \ -"\x74\x65\x72\x72\x75\x70\x74\x20\x73\x69\x67\x6e\x61\x6c\x73\x20" \ -"\x28\x53\x49\x47\x49\x4e\x54\x29\x00\x45\x58\x50\x52\x45\x53\x53" \ -"\x49\x4f\x4e\x20\x5d\x0a\x0a\x43\x68\x65\x63\x6b\x20\x66\x69\x6c" \ -"\x65\x20\x74\x79\x70\x65\x73\x2c\x20\x63\x6f\x6d\x70\x61\x72\x65" \ -"\x20\x76\x61\x6c\x75\x65\x73\x20\x65\x74\x63\x2e\x20\x52\x65\x74" \ -"\x75\x72\x6e\x20\x61\x20\x30\x2f\x31\x20\x65\x78\x69\x74\x20\x63" \ -"\x6f\x64\x65\x0a\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x6f\x6e" \ -"\x20\x6c\x6f\x67\x69\x63\x61\x6c\x20\x76\x61\x6c\x75\x65\x20\x6f" \ -"\x66\x20\x45\x58\x50\x52\x45\x53\x53\x49\x4f\x4e\x00\x5b\x2d\x76" \ -"\x5d\x20\x50\x52\x4f\x47\x20\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e" \ -"\x20\x50\x52\x4f\x47\x2c\x20\x64\x69\x73\x70\x6c\x61\x79\x20\x72" \ -"\x65\x73\x6f\x75\x72\x63\x65\x20\x75\x73\x61\x67\x65\x20\x77\x68" \ -"\x65\x6e\x20\x69\x74\x20\x65\x78\x69\x74\x73\x0a\x0a\x09\x2d\x76" \ -"\x09\x56\x65\x72\x62\x6f\x73\x65\x00\x5b\x2d\x62\x5d\x20\x5b\x2d" \ -"\x6e\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x64\x53\x45\x43\x4f\x4e" \ -"\x44\x53\x5d\x20\x5b\x2d\x6d\x5d\x0a\x0a\x50\x72\x6f\x76\x69\x64" \ -"\x65\x20\x61\x20\x76\x69\x65\x77\x20\x6f\x66\x20\x70\x72\x6f\x63" \ -"\x65\x73\x73\x20\x61\x63\x74\x69\x76\x69\x74\x79\x20\x69\x6e\x20" \ -"\x72\x65\x61\x6c\x20\x74\x69\x6d\x65\x2e\x0a\x52\x65\x61\x64\x20" \ -"\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x6f\x66\x20\x61\x6c" \ -"\x6c\x20\x70\x72\x6f\x63\x65\x73\x73\x65\x73\x20\x66\x72\x6f\x6d" \ -"\x20\x2f\x70\x72\x6f\x63\x20\x65\x61\x63\x68\x20\x53\x45\x43\x4f" \ -"\x4e\x44\x53\x0a\x61\x6e\x64\x20\x64\x69\x73\x70\x6c\x61\x79\x20" \ -"\x61\x20\x73\x63\x72\x65\x65\x6e\x66\x75\x6c\x20\x6f\x66\x20\x74" \ -"\x68\x65\x6d\x2e\x0a\x4b\x65\x79\x73\x3a\x0a\x09\x4e\x2f\x4d\x2f" \ -"\x50\x2f\x54\x3a\x20\x73\x68\x6f\x77\x20\x43\x50\x55\x20\x75\x73" \ -"\x61\x67\x65\x2c\x20\x73\x6f\x72\x74\x20\x62\x79\x20\x70\x69\x64" \ -"\x2f\x6d\x65\x6d\x2f\x63\x70\x75\x2f\x74\x69\x6d\x65\x0a\x09\x53" \ -"\x3a\x20\x73\x68\x6f\x77\x20\x6d\x65\x6d\x6f\x72\x79\x0a\x09\x52" \ -"\x3a\x20\x72\x65\x76\x65\x72\x73\x65\x20\x73\x6f\x72\x74\x0a\x09" \ -"\x48\x3a\x20\x74\x6f\x67\x67\x6c\x65\x20\x74\x68\x72\x65\x61\x64" \ -"\x73\x0a\x09\x51\x2c\x5e\x43\x3a\x20\x65\x78\x69\x74\x0a\x0a\x4f" \ -"\x70\x74\x69\x6f\x6e\x73\x3a\x0a\x09\x2d\x62\x09\x42\x61\x74\x63" \ -"\x68\x20\x6d\x6f\x64\x65\x0a\x09\x2d\x6e\x20\x4e\x09\x45\x78\x69" \ -"\x74\x20\x61\x66\x74\x65\x72\x20\x4e\x20\x69\x74\x65\x72\x61\x74" \ -"\x69\x6f\x6e\x73\x0a\x09\x2d\x64\x20\x4e\x09\x44\x65\x6c\x61\x79" \ -"\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x75\x70\x64\x61\x74\x65\x73" \ -"\x0a\x09\x2d\x6d\x09\x53\x61\x6d\x65\x20\x61\x73\x20\x27\x73\x27" \ -"\x20\x6b\x65\x79\x00\x5b\x2d\x63\x5d\x20\x46\x49\x4c\x45\x2e\x2e" \ -"\x2e\x0a\x0a\x55\x70\x64\x61\x74\x65\x20\x74\x68\x65\x20\x6c\x61" \ -"\x73\x74\x2d\x6d\x6f\x64\x69\x66\x69\x65\x64\x20\x64\x61\x74\x65" \ -"\x20\x6f\x6e\x20\x74\x68\x65\x20\x67\x69\x76\x65\x6e\x20\x46\x49" \ -"\x4c\x45\x5b\x73\x5d\x0a\x0a\x09\x2d\x63\x09\x44\x6f\x6e\x27\x74" \ -"\x20\x63\x72\x65\x61\x74\x65\x20\x66\x69\x6c\x65\x73\x00\x5b\x2d" \ -"\x63\x64\x73\x5d\x20\x53\x54\x52\x49\x4e\x47\x31\x20\x5b\x53\x54" \ -"\x52\x49\x4e\x47\x32\x5d\x0a\x0a\x54\x72\x61\x6e\x73\x6c\x61\x74" \ -"\x65\x2c\x20\x73\x71\x75\x65\x65\x7a\x65\x2c\x20\x6f\x72\x20\x64" \ -"\x65\x6c\x65\x74\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73" \ -"\x20\x66\x72\x6f\x6d\x20\x73\x74\x64\x69\x6e\x2c\x20\x77\x72\x69" \ -"\x74\x69\x6e\x67\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a" \ -"\x09\x2d\x63\x09\x54\x61\x6b\x65\x20\x63\x6f\x6d\x70\x6c\x65\x6d" \ -"\x65\x6e\x74\x20\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x31\x0a\x09" \ -"\x2d\x64\x09\x44\x65\x6c\x65\x74\x65\x20\x69\x6e\x70\x75\x74\x20" \ -"\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20\x63\x6f\x64\x65\x64" \ -"\x20\x53\x54\x52\x49\x4e\x47\x31\x0a\x09\x2d\x73\x09\x53\x71\x75" \ -"\x65\x65\x7a\x65\x20\x6d\x75\x6c\x74\x69\x70\x6c\x65\x20\x6f\x75" \ -"\x74\x70\x75\x74\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x20" \ -"\x6f\x66\x20\x53\x54\x52\x49\x4e\x47\x32\x20\x69\x6e\x74\x6f\x20" \ -"\x6f\x6e\x65\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x00\x0a\x0a" \ -"\x52\x65\x74\x75\x72\x6e\x20\x61\x6e\x20\x65\x78\x69\x74\x20\x63" \ -"\x6f\x64\x65\x20\x6f\x66\x20\x54\x52\x55\x45\x20\x28\x30\x29\x00" \ -"\x5b\x77\x5d\x20\x5b\x68\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20\x64" \ -"\x69\x6d\x65\x6e\x73\x69\x6f\x6e\x28\x73\x29\x20\x6f\x66\x20\x73" \ -"\x74\x64\x69\x6e\x27\x73\x20\x74\x65\x72\x6d\x69\x6e\x61\x6c\x2c" \ -"\x20\x6f\x6e\x20\x65\x72\x72\x6f\x72\x20\x72\x65\x74\x75\x72\x6e" \ -"\x20\x38\x30\x78\x32\x35\x00\x5b\x2d\x63\x20\x4d\x41\x58\x5f\x4d" \ -"\x4f\x55\x4e\x54\x5f\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x69\x20" \ -"\x44\x41\x59\x53\x5d\x20\x5b\x2d\x43\x20\x4d\x4f\x55\x4e\x54\x5f" \ -"\x43\x4f\x55\x4e\x54\x5d\x20\x5b\x2d\x4c\x20\x4c\x41\x42\x45\x4c" \ -"\x5d\x20\x42\x4c\x4f\x43\x4b\x44\x45\x56\x0a\x0a\x41\x64\x6a\x75" \ -"\x73\x74\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x20\x6f\x70" \ -"\x74\x69\x6f\x6e\x73\x20\x6f\x6e\x20\x65\x78\x74\x5b\x32\x33\x5d" \ -"\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x73\x00\x5b\x4f\x50" \ -"\x54\x49\x4f\x4e\x53\x5d\x20\x46\x49\x4c\x45\x53\x59\x53\x54\x45" \ -"\x4d\x7c\x44\x49\x52\x45\x43\x54\x4f\x52\x59\x0a\x0a\x55\x6e\x6d" \ -"\x6f\x75\x6e\x74\x20\x66\x69\x6c\x65\x20\x73\x79\x73\x74\x65\x6d" \ -"\x73\x0a\x0a\x09\x2d\x72\x09\x54\x72\x79\x20\x74\x6f\x20\x72\x65" \ -"\x6d\x6f\x75\x6e\x74\x20\x64\x65\x76\x69\x63\x65\x73\x20\x61\x73" \ -"\x20\x72\x65\x61\x64\x2d\x6f\x6e\x6c\x79\x20\x69\x66\x20\x6d\x6f" \ -"\x75\x6e\x74\x20\x69\x73\x20\x62\x75\x73\x79\x0a\x09\x2d\x6c\x09" \ -"\x4c\x61\x7a\x79\x20\x75\x6d\x6f\x75\x6e\x74\x20\x28\x64\x65\x74" \ -"\x61\x63\x68\x20\x66\x69\x6c\x65\x73\x79\x73\x74\x65\x6d\x29\x0a" \ -"\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x20\x75\x6d\x6f\x75\x6e\x74" \ -"\x20\x28\x69\x2e\x65\x2e\x2c\x20\x75\x6e\x72\x65\x61\x63\x68\x61" \ -"\x62\x6c\x65\x20\x4e\x46\x53\x20\x73\x65\x72\x76\x65\x72\x29\x0a" \ -"\x09\x2d\x64\x09\x46\x72\x65\x65\x20\x6c\x6f\x6f\x70\x20\x64\x65" \ -"\x76\x69\x63\x65\x20\x65\x76\x65\x6e\x20\x69\x66\x20\x69\x74\x20" \ -"\x68\x61\x73\x20\x62\x65\x65\x6e\x20\x75\x73\x65\x64\x00\x5b\x2d" \ -"\x61\x6d\x6e\x72\x73\x70\x76\x5d\x0a\x0a\x50\x72\x69\x6e\x74\x20" \ -"\x73\x79\x73\x74\x65\x6d\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69" \ -"\x6f\x6e\x0a\x0a\x09\x2d\x61\x09\x50\x72\x69\x6e\x74\x20\x61\x6c" \ -"\x6c\x0a\x09\x2d\x6d\x09\x54\x68\x65\x20\x6d\x61\x63\x68\x69\x6e" \ -"\x65\x20\x28\x68\x61\x72\x64\x77\x61\x72\x65\x29\x20\x74\x79\x70" \ -"\x65\x0a\x09\x2d\x6e\x09\x48\x6f\x73\x74\x6e\x61\x6d\x65\x0a\x09" \ -"\x2d\x72\x09\x4f\x53\x20\x72\x65\x6c\x65\x61\x73\x65\x0a\x09\x2d" \ -"\x73\x09\x4f\x53\x20\x6e\x61\x6d\x65\x20\x28\x64\x65\x66\x61\x75" \ -"\x6c\x74\x29\x0a\x09\x2d\x70\x09\x50\x72\x6f\x63\x65\x73\x73\x6f" \ -"\x72\x20\x74\x79\x70\x65\x0a\x09\x2d\x76\x09\x4f\x53\x20\x76\x65" \ -"\x72\x73\x69\x6f\x6e\x00\x5b\x2d\x66\x61\x5d\x5b\x2d\x74\x20\x4e" \ -"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43\x6f\x6e" \ -"\x76\x65\x72\x74\x20\x73\x70\x61\x63\x65\x73\x20\x74\x6f\x20\x74" \ -"\x61\x62\x73\x2c\x20\x77\x72\x69\x74\x69\x6e\x67\x20\x74\x6f\x20" \ -"\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x61\x2c\x2d\x2d\x61\x6c" \ -"\x6c\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x61\x6c\x6c\x20\x62\x6c" \ -"\x61\x6e\x6b\x73\x0a\x09\x2d\x66\x2c\x2d\x2d\x66\x69\x72\x73\x74" \ -"\x2d\x6f\x6e\x6c\x79\x09\x43\x6f\x6e\x76\x65\x72\x74\x20\x6f\x6e" \ -"\x6c\x79\x20\x6c\x65\x61\x64\x69\x6e\x67\x20\x62\x6c\x61\x6e\x6b" \ -"\x73\x0a\x09\x2d\x74\x2c\x2d\x2d\x74\x61\x62\x73\x3d\x4e\x09\x54" \ -"\x61\x62\x73\x74\x6f\x70\x73\x20\x65\x76\x65\x72\x79\x20\x4e\x20" \ -"\x63\x68\x61\x72\x73\x00\x5b\x2d\x63\x64\x75\x5d\x5b\x2d\x66\x2c" \ -"\x73\x2c\x77\x20\x4e\x5d\x20\x5b\x49\x4e\x50\x55\x54\x20\x5b\x4f" \ -"\x55\x54\x50\x55\x54\x5d\x5d\x0a\x0a\x44\x69\x73\x63\x61\x72\x64" \ -"\x20\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c\x69\x6e\x65\x73" \ -"\x0a\x0a\x09\x2d\x63\x09\x50\x72\x65\x66\x69\x78\x20\x6c\x69\x6e" \ -"\x65\x73\x20\x62\x79\x20\x74\x68\x65\x20\x6e\x75\x6d\x62\x65\x72" \ -"\x20\x6f\x66\x20\x6f\x63\x63\x75\x72\x72\x65\x6e\x63\x65\x73\x0a" \ -"\x09\x2d\x64\x09\x4f\x6e\x6c\x79\x20\x70\x72\x69\x6e\x74\x20\x64" \ -"\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6c\x69\x6e\x65\x73\x0a\x09" \ -"\x2d\x75\x09\x4f\x6e\x6c\x79\x20\x70\x72\x69\x6e\x74\x20\x75\x6e" \ -"\x69\x71\x75\x65\x20\x6c\x69\x6e\x65\x73\x0a\x09\x2d\x66\x20\x4e" \ -"\x09\x53\x6b\x69\x70\x20\x66\x69\x72\x73\x74\x20\x4e\x20\x66\x69" \ -"\x65\x6c\x64\x73\x0a\x09\x2d\x73\x20\x4e\x09\x53\x6b\x69\x70\x20" \ -"\x66\x69\x72\x73\x74\x20\x4e\x20\x63\x68\x61\x72\x73\x20\x28\x61" \ -"\x66\x74\x65\x72\x20\x61\x6e\x79\x20\x73\x6b\x69\x70\x70\x65\x64" \ -"\x20\x66\x69\x65\x6c\x64\x73\x29\x0a\x09\x2d\x77\x20\x4e\x09\x43" \ -"\x6f\x6d\x70\x61\x72\x65\x20\x4e\x20\x63\x68\x61\x72\x61\x63\x74" \ -"\x65\x72\x73\x20\x69\x6e\x20\x6c\x69\x6e\x65\x00\x5b\x2d\x75\x64" \ -"\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x0a\x0a\x43\x6f\x6e\x76\x65\x72" \ -"\x74\x20\x46\x49\x4c\x45\x20\x69\x6e\x2d\x70\x6c\x61\x63\x65\x20" \ -"\x66\x72\x6f\x6d\x20\x55\x6e\x69\x78\x20\x74\x6f\x20\x44\x4f\x53" \ -"\x20\x66\x6f\x72\x6d\x61\x74\x2e\x0a\x57\x68\x65\x6e\x20\x6e\x6f" \ -"\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x67\x69\x76\x65\x6e\x2c\x20" \ -"\x75\x73\x65\x20\x73\x74\x64\x69\x6e\x2f\x73\x74\x64\x6f\x75\x74" \ -"\x2e\x0a\x0a\x09\x2d\x75\x09\x64\x6f\x73\x32\x75\x6e\x69\x78\x0a" \ -"\x09\x2d\x64\x09\x75\x6e\x69\x78\x32\x64\x6f\x73\x00\x5b\x2d\x63" \ -"\x66\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65" \ -"\x63\x6f\x6d\x70\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x20\x28\x6f" \ -"\x72\x20\x73\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72" \ -"\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d" \ -"\x66\x09\x46\x6f\x72\x63\x65\x00\x5b\x2d\x63\x66\x76\x43\x46\x5d" \ -"\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x09\x2d\x63\x09" \ -"\x57\x72\x69\x74\x65\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a" \ -"\x09\x2d\x66\x09\x46\x6f\x72\x63\x65\x0a\x09\x2d\x76\x09\x56\x65" \ -"\x72\x62\x6f\x73\x65\x0a\x09\x2d\x46\x09\x44\x6f\x6e\x27\x74\x20" \ -"\x73\x74\x6f\x72\x65\x20\x6f\x72\x20\x76\x65\x72\x69\x66\x79\x20" \ -"\x63\x68\x65\x63\x6b\x73\x75\x6d\x00\x5b\x2d\x63\x66\x5d\x20\x5b" \ -"\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x44\x65\x63\x6f\x6d\x70" \ -"\x72\x65\x73\x73\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73\x74" \ -"\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x57\x72\x69\x74\x65\x20" \ -"\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09\x2d\x66\x09\x46\x6f" \ -"\x72\x63\x65\x00\x5b\x2d\x6c\x6e\x6f\x70\x71\x5d\x20\x46\x49\x4c" \ -"\x45\x5b\x2e\x7a\x69\x70\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e" \ -"\x2e\x20\x5b\x2d\x78\x20\x46\x49\x4c\x45\x2e\x2e\x2e\x5d\x20\x5b" \ -"\x2d\x64\x20\x44\x49\x52\x5d\x0a\x0a\x45\x78\x74\x72\x61\x63\x74" \ -"\x20\x46\x49\x4c\x45\x73\x20\x66\x72\x6f\x6d\x20\x5a\x49\x50\x20" \ -"\x61\x72\x63\x68\x69\x76\x65\x0a\x0a\x09\x2d\x6c\x09\x4c\x69\x73" \ -"\x74\x20\x63\x6f\x6e\x74\x65\x6e\x74\x73\x20\x28\x77\x69\x74\x68" \ -"\x20\x2d\x71\x20\x66\x6f\x72\x20\x73\x68\x6f\x72\x74\x20\x66\x6f" \ -"\x72\x6d\x29\x0a\x09\x2d\x6e\x09\x4e\x65\x76\x65\x72\x20\x6f\x76" \ -"\x65\x72\x77\x72\x69\x74\x65\x20\x66\x69\x6c\x65\x73\x20\x28\x64" \ -"\x65\x66\x61\x75\x6c\x74\x3a\x20\x61\x73\x6b\x29\x0a\x09\x2d\x6f" \ -"\x09\x4f\x76\x65\x72\x77\x72\x69\x74\x65\x0a\x09\x2d\x70\x09\x50" \ -"\x72\x69\x6e\x74\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x0a\x09" \ -"\x2d\x71\x09\x51\x75\x69\x65\x74\x0a\x09\x2d\x78\x20\x46\x49\x4c" \ -"\x45\x09\x45\x78\x63\x6c\x75\x64\x65\x20\x46\x49\x4c\x45\x73\x0a" \ -"\x09\x2d\x64\x20\x44\x49\x52\x09\x45\x78\x74\x72\x61\x63\x74\x20" \ -"\x69\x6e\x74\x6f\x20\x44\x49\x52\x00\x0a\x0a\x44\x69\x73\x70\x6c" \ -"\x61\x79\x20\x74\x68\x65\x20\x74\x69\x6d\x65\x20\x73\x69\x6e\x63" \ -"\x65\x20\x74\x68\x65\x20\x6c\x61\x73\x74\x20\x62\x6f\x6f\x74\x00" \ -"\x4e\x0a\x0a\x50\x61\x75\x73\x65\x20\x66\x6f\x72\x20\x4e\x20\x6d" \ -"\x69\x63\x72\x6f\x73\x65\x63\x6f\x6e\x64\x73\x00\x5b\x2d\x6f\x20" \ -"\x4f\x55\x54\x46\x49\x4c\x45\x5d\x20\x5b\x49\x4e\x46\x49\x4c\x45" \ -"\x5d\x0a\x0a\x55\x75\x64\x65\x63\x6f\x64\x65\x20\x61\x20\x66\x69" \ -"\x6c\x65\x0a\x46\x69\x6e\x64\x73\x20\x4f\x55\x54\x46\x49\x4c\x45" \ -"\x20\x69\x6e\x20\x75\x75\x65\x6e\x63\x6f\x64\x65\x64\x20\x73\x6f" \ -"\x75\x72\x63\x65\x20\x75\x6e\x6c\x65\x73\x73\x20\x2d\x6f\x20\x69" \ -"\x73\x20\x67\x69\x76\x65\x6e\x00\x5b\x2d\x6d\x5d\x20\x5b\x46\x49" \ -"\x4c\x45\x5d\x20\x53\x54\x4f\x52\x45\x44\x5f\x46\x49\x4c\x45\x4e" \ -"\x41\x4d\x45\x0a\x0a\x55\x75\x65\x6e\x63\x6f\x64\x65\x20\x46\x49" \ -"\x4c\x45\x20\x28\x6f\x72\x20\x73\x74\x64\x69\x6e\x29\x20\x74\x6f" \ -"\x20\x73\x74\x64\x6f\x75\x74\x0a\x0a\x09\x2d\x6d\x09\x55\x73\x65" \ -"\x20\x62\x61\x73\x65\x36\x34\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67" \ -"\x20\x70\x65\x72\x20\x52\x46\x43\x31\x35\x32\x31\x00\x5b\x2d\x6e" \ -"\x20\x53\x45\x43\x5d\x20\x5b\x2d\x74\x5d\x20\x50\x52\x4f\x47\x20" \ -"\x41\x52\x47\x53\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20\x70" \ -"\x65\x72\x69\x6f\x64\x69\x63\x61\x6c\x6c\x79\x0a\x0a\x09\x2d\x6e" \ -"\x09\x4c\x6f\x6f\x70\x20\x70\x65\x72\x69\x6f\x64\x20\x69\x6e\x20" \ -"\x73\x65\x63\x6f\x6e\x64\x73\x20\x28\x64\x65\x66\x61\x75\x6c\x74" \ -"\x20\x32\x29\x0a\x09\x2d\x74\x09\x44\x6f\x6e\x27\x74\x20\x70\x72" \ -"\x69\x6e\x74\x20\x68\x65\x61\x64\x65\x72\x00\x5b\x2d\x63\x6d\x6c" \ -"\x77\x4c\x5d\x20\x5b\x46\x49\x4c\x45\x5d\x2e\x2e\x2e\x0a\x0a\x43" \ -"\x6f\x75\x6e\x74\x20\x6c\x69\x6e\x65\x73\x2c\x20\x77\x6f\x72\x64" \ -"\x73\x2c\x20\x61\x6e\x64\x20\x62\x79\x74\x65\x73\x20\x66\x6f\x72" \ -"\x20\x65\x61\x63\x68\x20\x46\x49\x4c\x45\x20\x28\x6f\x72\x20\x73" \ -"\x74\x64\x69\x6e\x29\x0a\x0a\x09\x2d\x63\x09\x43\x6f\x75\x6e\x74" \ -"\x20\x62\x79\x74\x65\x73\x0a\x09\x2d\x6d\x09\x43\x6f\x75\x6e\x74" \ -"\x20\x63\x68\x61\x72\x61\x63\x74\x65\x72\x73\x0a\x09\x2d\x6c\x09" \ -"\x43\x6f\x75\x6e\x74\x20\x6e\x65\x77\x6c\x69\x6e\x65\x73\x0a\x09" \ -"\x2d\x77\x09\x43\x6f\x75\x6e\x74\x20\x77\x6f\x72\x64\x73\x0a\x09" \ -"\x2d\x4c\x09\x50\x72\x69\x6e\x74\x20\x6c\x6f\x6e\x67\x65\x73\x74" \ -"\x20\x6c\x69\x6e\x65\x20\x6c\x65\x6e\x67\x74\x68\x00\x5b\x43\x4f" \ -"\x4d\x4d\x41\x4e\x44\x5d\x2e\x2e\x2e\x0a\x0a\x4c\x6f\x63\x61\x74" \ -"\x65\x20\x61\x20\x43\x4f\x4d\x4d\x41\x4e\x44\x00\x0a\x0a\x50\x72" \ -"\x69\x6e\x74\x20\x74\x68\x65\x20\x75\x73\x65\x72\x20\x6e\x61\x6d" \ -"\x65\x20\x61\x73\x73\x6f\x63\x69\x61\x74\x65\x64\x20\x77\x69\x74" \ -"\x68\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x65\x66" \ -"\x66\x65\x63\x74\x69\x76\x65\x20\x75\x73\x65\x72\x20\x69\x64\x00" \ -"\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x20\x5b\x50\x52\x4f\x47\x20" \ -"\x41\x52\x47\x53\x5d\x0a\x0a\x52\x75\x6e\x20\x50\x52\x4f\x47\x20" \ -"\x6f\x6e\x20\x65\x76\x65\x72\x79\x20\x69\x74\x65\x6d\x20\x67\x69" \ -"\x76\x65\x6e\x20\x62\x79\x20\x73\x74\x64\x69\x6e\x0a\x0a\x09\x2d" \ -"\x70\x09\x41\x73\x6b\x20\x75\x73\x65\x72\x20\x77\x68\x65\x74\x68" \ -"\x65\x72\x20\x74\x6f\x20\x72\x75\x6e\x20\x65\x61\x63\x68\x20\x63" \ -"\x6f\x6d\x6d\x61\x6e\x64\x0a\x09\x2d\x72\x09\x44\x6f\x6e\x27\x74" \ -"\x20\x72\x75\x6e\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x69\x66\x20" \ -"\x69\x6e\x70\x75\x74\x20\x69\x73\x20\x65\x6d\x70\x74\x79\x0a\x09" \ -"\x2d\x30\x09\x49\x6e\x70\x75\x74\x20\x69\x73\x20\x73\x65\x70\x61" \ -"\x72\x61\x74\x65\x64\x20\x62\x79\x20\x4e\x55\x4c\x20\x63\x68\x61" \ -"\x72\x61\x63\x74\x65\x72\x73\x0a\x09\x2d\x74\x09\x50\x72\x69\x6e" \ -"\x74\x20\x74\x68\x65\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6f\x6e" \ -"\x20\x73\x74\x64\x65\x72\x72\x20\x62\x65\x66\x6f\x72\x65\x20\x65" \ -"\x78\x65\x63\x75\x74\x69\x6f\x6e\x0a\x09\x2d\x65\x5b\x53\x54\x52" \ -"\x5d\x09\x53\x54\x52\x20\x73\x74\x6f\x70\x73\x20\x69\x6e\x70\x75" \ -"\x74\x20\x70\x72\x6f\x63\x65\x73\x73\x69\x6e\x67\x0a\x09\x2d\x6e" \ -"\x20\x4e\x09\x50\x61\x73\x73\x20\x6e\x6f\x20\x6d\x6f\x72\x65\x20" \ -"\x74\x68\x61\x6e\x20\x4e\x20\x61\x72\x67\x73\x20\x74\x6f\x20\x50" \ -"\x52\x4f\x47\x0a\x09\x2d\x73\x20\x4e\x09\x50\x61\x73\x73\x20\x63" \ -"\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x6f\x66\x20\x6e" \ -"\x6f\x20\x6d\x6f\x72\x65\x20\x74\x68\x61\x6e\x20\x4e\x20\x62\x79" \ -"\x74\x65\x73\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65\x63\x6f\x6d\x70" \ -"\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74\x00\x5b" \ -"\x53\x54\x52\x49\x4e\x47\x5d\x0a\x0a\x52\x65\x70\x65\x61\x74\x65" \ -"\x64\x6c\x79\x20\x6f\x75\x74\x70\x75\x74\x20\x61\x20\x6c\x69\x6e" \ -"\x65\x20\x77\x69\x74\x68\x20\x53\x54\x52\x49\x4e\x47\x2c\x20\x6f" \ -"\x72\x20\x27\x79\x27\x00\x46\x49\x4c\x45\x0a\x0a\x44\x65\x63\x6f" \ -"\x6d\x70\x72\x65\x73\x73\x20\x74\x6f\x20\x73\x74\x64\x6f\x75\x74" \ -"\x00" \ +"\105\130\120\122\105\123\123\111\117\116\040\135\012\012\103\150" \ +"\145\143\153\040\146\151\154\145\040\164\171\160\145\163\054\040" \ +"\143\157\155\160\141\162\145\040\166\141\154\165\145\163\040\145" \ +"\164\143\056\040\122\145\164\165\162\156\040\141\040\060\057\061" \ +"\040\145\170\151\164\040\143\157\144\145\012\144\145\160\145\156" \ +"\144\151\156\147\040\157\156\040\154\157\147\151\143\141\154\040" \ +"\166\141\154\165\145\040\157\146\040\105\130\120\122\105\123\123" \ +"\111\117\116\000\105\130\120\122\105\123\123\111\117\116\040\135" \ +"\012\012\103\150\145\143\153\040\146\151\154\145\040\164\171\160" \ +"\145\163\054\040\143\157\155\160\141\162\145\040\166\141\154\165" \ +"\145\163\040\145\164\143\056\040\122\145\164\165\162\156\040\141" \ +"\040\060\057\061\040\145\170\151\164\040\143\157\144\145\012\144" \ +"\145\160\145\156\144\151\156\147\040\157\156\040\154\157\147\151" \ +"\143\141\154\040\166\141\154\165\145\040\157\146\040\105\130\120" \ +"\122\105\123\123\111\117\116\000\133\055\057\053\117\120\124\111" \ +"\117\116\123\135\040\133\055\057\053\157\040\117\120\124\135\056" \ +"\056\056\040\133\055\143\040\047\123\103\122\111\120\124\047\040" \ +"\133\101\122\107\060\040\133\101\122\107\123\135\135\040\057\040" \ +"\106\111\114\105\040\133\101\122\107\123\135\135\012\012\125\156" \ +"\151\170\040\163\150\145\154\154\040\151\156\164\145\162\160\162" \ +"\145\164\145\162\000\133\117\120\124\111\117\116\123\135\040\133" \ +"\101\127\113\137\120\122\117\107\122\101\115\135\040\133\106\111" \ +"\114\105\135\056\056\056\012\012\011\055\166\040\126\101\122\075" \ +"\126\101\114\011\123\145\164\040\166\141\162\151\141\142\154\145" \ +"\012\011\055\106\040\123\105\120\011\011\125\163\145\040\123\105" \ +"\120\040\141\163\040\146\151\145\154\144\040\163\145\160\141\162" \ +"\141\164\157\162\012\011\055\146\040\106\111\114\105\011\011\122" \ +"\145\141\144\040\160\162\157\147\162\141\155\040\146\162\157\155" \ +"\040\106\111\114\105\012\011\055\145\040\101\127\113\137\120\122" \ +"\117\107\122\101\115\000\133\055\144\135\040\133\106\111\114\105" \ +"\135\012\012\102\141\163\145\066\064\040\145\156\143\157\144\145" \ +"\040\157\162\040\144\145\143\157\144\145\040\106\111\114\105\040" \ +"\164\157\040\163\164\141\156\144\141\162\144\040\157\165\164\160" \ +"\165\164\012\011\055\144\011\104\145\143\157\144\145\040\144\141" \ +"\164\141\000\106\111\114\105\040\133\123\125\106\106\111\130\135" \ +"\012\012\123\164\162\151\160\040\144\151\162\145\143\164\157\162" \ +"\171\040\160\141\164\150\040\141\156\144\040\056\123\125\106\106" \ +"\111\130\040\146\162\157\155\040\106\111\114\105\012\000\012\012" \ +"\120\162\151\156\164\040\164\150\145\040\143\157\156\146\151\147" \ +"\040\146\151\154\145\040\165\163\145\144\040\142\171\040\142\165" \ +"\163\171\142\157\170\040\142\165\151\154\144\000\133\102\114\117" \ +"\103\113\104\105\126\135\056\056\056\012\012\120\162\151\156\164" \ +"\040\125\125\111\104\163\040\157\146\040\141\154\154\040\146\151" \ +"\154\145\163\171\163\164\145\155\163\000\117\120\124\111\117\116" \ +"\040\102\114\117\103\113\104\105\126\012\012\011\055\055\163\145" \ +"\164\162\157\011\011\123\145\164\040\162\157\012\011\055\055\163" \ +"\145\164\162\167\011\011\123\145\164\040\162\167\012\011\055\055" \ +"\147\145\164\162\157\011\011\107\145\164\040\162\157\012\011\055" \ +"\055\147\145\164\163\163\011\011\107\145\164\040\163\145\143\164" \ +"\157\162\040\163\151\172\145\012\011\055\055\147\145\164\142\163" \ +"\172\011\107\145\164\040\142\154\157\143\153\040\163\151\172\145" \ +"\012\011\055\055\163\145\164\142\163\172\040\102\131\124\105\123" \ +"\011\123\145\164\040\142\154\157\143\153\040\163\151\172\145\012" \ +"\011\055\055\147\145\164\163\172\011\011\107\145\164\040\144\145" \ +"\166\151\143\145\040\163\151\172\145\040\151\156\040\065\061\062" \ +"\055\142\171\164\145\040\163\145\143\164\157\162\163\012\011\055" \ +"\055\147\145\164\163\151\172\145\066\064\011\107\145\164\040\144" \ +"\145\166\151\143\145\040\163\151\172\145\040\151\156\040\142\171" \ +"\164\145\163\012\011\055\055\146\154\165\163\150\142\165\146\163" \ +"\011\106\154\165\163\150\040\142\165\146\146\145\162\163\012\011" \ +"\055\055\162\145\162\145\141\144\160\164\011\122\145\162\145\141" \ +"\144\040\160\141\162\164\151\164\151\157\156\040\164\141\142\154" \ +"\145\000\133\055\143\146\135\040\133\106\111\114\105\135\056\056" \ +"\056\012\012\104\145\143\157\155\160\162\145\163\163\040\106\111" \ +"\114\105\163\040\050\157\162\040\163\164\144\151\156\051\012\012" \ +"\011\055\143\011\127\162\151\164\145\040\164\157\040\163\164\144" \ +"\157\165\164\012\011\055\146\011\106\157\162\143\145\000\133\106" \ +"\111\114\105\135\056\056\056\012\012\104\145\143\157\155\160\162" \ +"\145\163\163\040\164\157\040\163\164\144\157\165\164\000\133\117" \ +"\120\124\111\117\116\123\135\040\133\106\111\114\105\135\056\056" \ +"\056\012\012\103\157\155\160\162\145\163\163\040\106\111\114\105" \ +"\163\040\050\157\162\040\163\164\144\151\156\051\040\167\151\164" \ +"\150\040\142\172\151\160\062\040\141\154\147\157\162\151\164\150" \ +"\155\012\012\011\055\061\056\056\071\011\103\157\155\160\162\145" \ +"\163\163\151\157\156\040\154\145\166\145\154\012\011\055\144\011" \ +"\104\145\143\157\155\160\162\145\163\163\012\011\055\143\011\127" \ +"\162\151\164\145\040\164\157\040\163\164\144\157\165\164\012\011" \ +"\055\146\011\106\157\162\143\145\000\133\055\152\171\135\040\133" \ +"\133\115\117\116\124\110\135\040\131\105\101\122\135\012\012\104" \ +"\151\163\160\154\141\171\040\141\040\143\141\154\145\156\144\141" \ +"\162\012\012\011\055\152\011\125\163\145\040\152\165\154\151\141" \ +"\156\040\144\141\164\145\163\012\011\055\171\011\104\151\163\160" \ +"\154\141\171\040\164\150\145\040\145\156\164\151\162\145\040\171" \ +"\145\141\162\000\133\106\111\114\105\135\056\056\056\012\012\103" \ +"\157\156\143\141\164\145\156\141\164\145\040\106\111\114\105\163" \ +"\040\141\156\144\040\160\162\151\156\164\040\164\150\145\155\040" \ +"\164\157\040\163\164\144\157\165\164\000\133\055\145\164\166\135" \ +"\040\133\106\111\114\105\135\056\056\056\012\012\104\151\163\160" \ +"\154\141\171\040\156\157\156\160\162\151\156\164\151\156\147\040" \ +"\143\150\141\162\141\143\164\145\162\163\040\141\163\040\136\170" \ +"\040\157\162\040\115\055\170\012\012\011\055\145\011\105\156\144" \ +"\040\145\141\143\150\040\154\151\156\145\040\167\151\164\150\040" \ +"\044\012\011\055\164\011\123\150\157\167\040\164\141\142\163\040" \ +"\141\163\040\136\111\012\011\055\166\011\104\157\156\047\164\040" \ +"\165\163\145\040\136\170\040\157\162\040\115\055\170\040\145\163" \ +"\143\141\160\145\163\000\133\055\122\135\040\133\055\053\075\101" \ +"\141\143\104\144\151\152\163\123\164\124\165\135\040\133\055\166" \ +"\040\126\105\122\123\111\117\116\135\040\133\106\111\114\105\135" \ +"\056\056\056\012\012\103\150\141\156\147\145\040\146\151\154\145" \ +"\040\141\164\164\162\151\142\165\164\145\163\040\157\156\040\141" \ +"\156\040\145\170\164\062\040\146\163\012\012\115\157\144\151\146" \ +"\151\145\162\163\072\012\011\055\011\122\145\155\157\166\145\040" \ +"\141\164\164\162\151\142\165\164\145\163\012\011\053\011\101\144" \ +"\144\040\141\164\164\162\151\142\165\164\145\163\012\011\075\011" \ +"\123\145\164\040\141\164\164\162\151\142\165\164\145\163\012\101" \ +"\164\164\162\151\142\165\164\145\163\072\012\011\101\011\104\157" \ +"\156\047\164\040\164\162\141\143\153\040\141\164\151\155\145\012" \ +"\011\141\011\101\160\160\145\156\144\040\155\157\144\145\040\157" \ +"\156\154\171\012\011\143\011\105\156\141\142\154\145\040\143\157" \ +"\155\160\162\145\163\163\012\011\104\011\127\162\151\164\145\040" \ +"\144\151\162\040\143\157\156\164\145\156\164\163\040\163\171\156" \ +"\143\150\162\157\156\157\165\163\154\171\012\011\144\011\104\157" \ +"\156\047\164\040\142\141\143\153\165\160\040\167\151\164\150\040" \ +"\144\165\155\160\012\011\151\011\103\141\156\156\157\164\040\142" \ +"\145\040\155\157\144\151\146\151\145\144\040\050\151\155\155\165" \ +"\164\141\142\154\145\051\012\011\152\011\127\162\151\164\145\040" \ +"\141\154\154\040\144\141\164\141\040\164\157\040\152\157\165\162" \ +"\156\141\154\040\146\151\162\163\164\012\011\163\011\132\145\162" \ +"\157\040\144\151\163\153\040\163\164\157\162\141\147\145\040\167" \ +"\150\145\156\040\144\145\154\145\164\145\144\012\011\123\011\127" \ +"\162\151\164\145\040\146\151\154\145\040\143\157\156\164\145\156" \ +"\164\163\040\163\171\156\143\150\162\157\156\157\165\163\154\171" \ +"\012\011\164\011\104\151\163\141\142\154\145\040\164\141\151\154" \ +"\055\155\145\162\147\151\156\147\040\157\146\040\160\141\162\164" \ +"\151\141\154\040\142\154\157\143\153\163\040\167\151\164\150\040" \ +"\157\164\150\145\162\040\146\151\154\145\163\012\011\165\011\101" \ +"\154\154\157\167\040\146\151\154\145\040\164\157\040\142\145\040" \ +"\165\156\144\145\154\145\164\145\144\012\011\055\122\011\122\145" \ +"\143\165\162\163\145\012\011\055\166\011\123\145\164\040\164\150" \ +"\145\040\146\151\154\145\047\163\040\166\145\162\163\151\157\156" \ +"\057\147\145\156\145\162\141\164\151\157\156\040\156\165\155\142" \ +"\145\162\000\133\055\122\150\114\110\120\135\056\056\056\040\107" \ +"\122\117\125\120\040\106\111\114\105\056\056\056\012\012\103\150" \ +"\141\156\147\145\040\164\150\145\040\147\162\157\165\160\040\155" \ +"\145\155\142\145\162\163\150\151\160\040\157\146\040\145\141\143" \ +"\150\040\106\111\114\105\040\164\157\040\107\122\117\125\120\012" \ +"\012\011\055\122\011\122\145\143\165\162\163\145\012\011\055\150" \ +"\011\101\146\146\145\143\164\040\163\171\155\154\151\156\153\163" \ +"\040\151\156\163\164\145\141\144\040\157\146\040\163\171\155\154" \ +"\151\156\153\040\164\141\162\147\145\164\163\012\011\055\114\011" \ +"\124\162\141\166\145\162\163\145\040\141\154\154\040\163\171\155" \ +"\154\151\156\153\163\040\164\157\040\144\151\162\145\143\164\157" \ +"\162\151\145\163\012\011\055\110\011\124\162\141\166\145\162\163" \ +"\145\040\163\171\155\154\151\156\153\163\040\157\156\040\143\157" \ +"\155\155\141\156\144\040\154\151\156\145\040\157\156\154\171\012" \ +"\011\055\120\011\104\157\156\047\164\040\164\162\141\166\145\162" \ +"\163\145\040\163\171\155\154\151\156\153\163\040\050\144\145\146" \ +"\141\165\154\164\051\000\133\055\122\135\040\115\117\104\105\133" \ +"\054\115\117\104\105\135\056\056\056\040\106\111\114\105\056\056" \ +"\056\012\012\105\141\143\150\040\115\117\104\105\040\151\163\040" \ +"\157\156\145\040\157\162\040\155\157\162\145\040\157\146\040\164" \ +"\150\145\040\154\145\164\164\145\162\163\040\165\147\157\141\054" \ +"\040\157\156\145\040\157\146\040\164\150\145\012\163\171\155\142" \ +"\157\154\163\040\053\055\075\040\141\156\144\040\157\156\145\040" \ +"\157\162\040\155\157\162\145\040\157\146\040\164\150\145\040\154" \ +"\145\164\164\145\162\163\040\162\167\170\163\164\012\012\011\055" \ +"\122\011\122\145\143\165\162\163\145\000\133\055\122\150\114\110" \ +"\120\135\056\056\056\040\117\127\116\105\122\133\074\056\174\072" \ +"\076\133\107\122\117\125\120\135\135\040\106\111\114\105\056\056" \ +"\056\012\012\103\150\141\156\147\145\040\164\150\145\040\157\167" \ +"\156\145\162\040\141\156\144\057\157\162\040\147\162\157\165\160" \ +"\040\157\146\040\145\141\143\150\040\106\111\114\105\040\164\157" \ +"\040\117\127\116\105\122\040\141\156\144\057\157\162\040\107\122" \ +"\117\125\120\012\012\011\055\122\011\122\145\143\165\162\163\145" \ +"\012\011\055\150\011\101\146\146\145\143\164\040\163\171\155\154" \ +"\151\156\153\163\040\151\156\163\164\145\141\144\040\157\146\040" \ +"\163\171\155\154\151\156\153\040\164\141\162\147\145\164\163\012" \ +"\011\055\114\011\124\162\141\166\145\162\163\145\040\141\154\154" \ +"\040\163\171\155\154\151\156\153\163\040\164\157\040\144\151\162" \ +"\145\143\164\157\162\151\145\163\012\011\055\110\011\124\162\141" \ +"\166\145\162\163\145\040\163\171\155\154\151\156\153\163\040\157" \ +"\156\040\143\157\155\155\141\156\144\040\154\151\156\145\040\157" \ +"\156\154\171\012\011\055\120\011\104\157\156\047\164\040\164\162" \ +"\141\166\145\162\163\145\040\163\171\155\154\151\156\153\163\040" \ +"\050\144\145\146\141\165\154\164\051\000\116\105\127\122\117\117" \ +"\124\040\133\120\122\117\107\040\101\122\107\123\135\012\012\122" \ +"\165\156\040\120\122\117\107\040\167\151\164\150\040\162\157\157" \ +"\164\040\144\151\162\145\143\164\157\162\171\040\163\145\164\040" \ +"\164\157\040\116\105\127\122\117\117\124\000\012\012\103\154\145" \ +"\141\162\040\163\143\162\145\145\156\000\133\055\154\135\040\133" \ +"\055\163\135\040\106\111\114\105\061\040\133\106\111\114\105\062" \ +"\135\012\012\103\157\155\160\141\162\145\040\106\111\114\105\061" \ +"\040\167\151\164\150\040\106\111\114\105\062\040\050\157\162\040" \ +"\163\164\144\151\156\051\012\012\011\055\154\011\127\162\151\164" \ +"\145\040\164\150\145\040\142\171\164\145\040\156\165\155\142\145" \ +"\162\163\040\050\144\145\143\151\155\141\154\051\040\141\156\144" \ +"\040\166\141\154\165\145\163\040\050\157\143\164\141\154\051\012" \ +"\011\011\146\157\162\040\141\154\154\040\144\151\146\146\145\162" \ +"\151\156\147\040\142\171\164\145\163\012\011\055\163\011\121\165" \ +"\151\145\164\000\133\117\120\124\111\117\116\123\135\040\123\117" \ +"\125\122\103\105\056\056\056\040\104\105\123\124\012\012\103\157" \ +"\160\171\040\123\117\125\122\103\105\050\163\051\040\164\157\040" \ +"\104\105\123\124\012\012\011\055\141\011\123\141\155\145\040\141" \ +"\163\040\055\144\160\122\012\011\055\122\054\055\162\011\122\145" \ +"\143\165\162\163\145\012\011\055\144\054\055\120\011\120\162\145" \ +"\163\145\162\166\145\040\163\171\155\154\151\156\153\163\040\050" \ +"\144\145\146\141\165\154\164\040\151\146\040\055\122\051\012\011" \ +"\055\114\011\106\157\154\154\157\167\040\141\154\154\040\163\171" \ +"\155\154\151\156\153\163\012\011\055\110\011\106\157\154\154\157" \ +"\167\040\163\171\155\154\151\156\153\163\040\157\156\040\143\157" \ +"\155\155\141\156\144\040\154\151\156\145\012\011\055\160\011\120" \ +"\162\145\163\145\162\166\145\040\146\151\154\145\040\141\164\164" \ +"\162\151\142\165\164\145\163\040\151\146\040\160\157\163\163\151" \ +"\142\154\145\012\011\055\146\011\117\166\145\162\167\162\151\164" \ +"\145\012\011\055\151\011\120\162\157\155\160\164\040\142\145\146" \ +"\157\162\145\040\157\166\145\162\167\162\151\164\145\012\011\055" \ +"\154\054\055\163\011\103\162\145\141\164\145\040\050\163\171\155" \ +"\051\154\151\156\153\163\000\133\055\144\155\166\165\135\040\133" \ +"\055\106\040\106\111\114\105\135\040\133\055\110\040\156\145\167" \ +"\143\135\040\133\055\164\151\157\135\040\133\105\130\124\122\137" \ +"\106\111\114\105\135\056\056\056\012\012\105\170\164\162\141\143" \ +"\164\040\157\162\040\154\151\163\164\040\146\151\154\145\163\040" \ +"\146\162\157\155\040\141\040\143\160\151\157\040\141\162\143\150" \ +"\151\166\145\054\040\157\162\012\143\162\145\141\164\145\040\141" \ +"\156\040\141\162\143\150\151\166\145\040\165\163\151\156\147\040" \ +"\146\151\154\145\040\154\151\163\164\040\157\156\040\163\164\144" \ +"\151\156\012\012\115\141\151\156\040\157\160\145\162\141\164\151" \ +"\157\156\040\155\157\144\145\072\012\011\055\164\011\114\151\163" \ +"\164\012\011\055\151\011\105\170\164\162\141\143\164\040\105\130" \ +"\124\122\137\106\111\114\105\163\040\050\157\162\040\141\154\154" \ +"\051\012\011\055\157\011\103\162\145\141\164\145\040\050\162\145" \ +"\161\165\151\162\145\163\040\055\110\040\156\145\167\143\051\012" \ +"\011\055\144\011\115\141\153\145\040\154\145\141\144\151\156\147" \ +"\040\144\151\162\145\143\164\157\162\151\145\163\012\011\055\155" \ +"\011\120\162\145\163\145\162\166\145\040\155\164\151\155\145\012" \ +"\011\055\166\011\126\145\162\142\157\163\145\012\011\055\165\011" \ +"\117\166\145\162\167\162\151\164\145\012\011\055\106\040\106\111" \ +"\114\105\011\111\156\160\165\164\040\050\055\164\054\055\151\054" \ +"\055\160\051\040\157\162\040\157\165\164\160\165\164\040\050\055" \ +"\157\051\040\146\151\154\145\012\011\055\110\040\156\145\167\143" \ +"\011\101\162\143\150\151\166\145\040\146\157\162\155\141\164\000" \ +"\133\117\120\124\111\117\116\123\135\040\133\106\111\114\105\135" \ +"\056\056\056\012\012\120\162\151\156\164\040\163\145\154\145\143" \ +"\164\145\144\040\146\151\145\154\144\163\040\146\162\157\155\040" \ +"\145\141\143\150\040\151\156\160\165\164\040\106\111\114\105\040" \ +"\164\157\040\163\164\144\157\165\164\012\012\011\055\142\040\114" \ +"\111\123\124\011\117\165\164\160\165\164\040\157\156\154\171\040" \ +"\142\171\164\145\163\040\146\162\157\155\040\114\111\123\124\012" \ +"\011\055\143\040\114\111\123\124\011\117\165\164\160\165\164\040" \ +"\157\156\154\171\040\143\150\141\162\141\143\164\145\162\163\040" \ +"\146\162\157\155\040\114\111\123\124\012\011\055\144\040\103\110" \ +"\101\122\011\125\163\145\040\103\110\101\122\040\151\156\163\164" \ +"\145\141\144\040\157\146\040\164\141\142\040\141\163\040\164\150" \ +"\145\040\146\151\145\154\144\040\144\145\154\151\155\151\164\145" \ +"\162\012\011\055\163\011\117\165\164\160\165\164\040\157\156\154" \ +"\171\040\164\150\145\040\154\151\156\145\163\040\143\157\156\164" \ +"\141\151\156\151\156\147\040\144\145\154\151\155\151\164\145\162" \ +"\012\011\055\146\040\116\011\120\162\151\156\164\040\157\156\154" \ +"\171\040\164\150\145\163\145\040\146\151\145\154\144\163\012\011" \ +"\055\156\011\111\147\156\157\162\145\144\000\133\117\120\124\111" \ +"\117\116\123\135\040\133\053\106\115\124\135\040\133\124\111\115" \ +"\105\135\012\012\104\151\163\160\154\141\171\040\164\151\155\145" \ +"\040\050\165\163\151\156\147\040\053\106\115\124\051\054\040\157" \ +"\162\040\163\145\164\040\164\151\155\145\012\012\011\133\055\163" \ +"\054\055\055\163\145\164\135\040\124\111\115\105\011\123\145\164" \ +"\040\164\151\155\145\040\164\157\040\124\111\115\105\012\011\055" \ +"\165\054\055\055\165\164\143\011\127\157\162\153\040\151\156\040" \ +"\125\124\103\040\050\144\157\156\047\164\040\143\157\156\166\145" \ +"\162\164\040\164\157\040\154\157\143\141\154\040\164\151\155\145" \ +"\051\012\011\055\122\054\055\055\162\146\143\055\062\070\062\062" \ +"\011\117\165\164\160\165\164\040\122\106\103\055\062\070\062\062" \ +"\040\143\157\155\160\154\151\141\156\164\040\144\141\164\145\040" \ +"\163\164\162\151\156\147\012\011\055\111\133\123\120\105\103\135" \ +"\011\117\165\164\160\165\164\040\111\123\117\055\070\066\060\061" \ +"\040\143\157\155\160\154\151\141\156\164\040\144\141\164\145\040" \ +"\163\164\162\151\156\147\012\011\011\011\123\120\105\103\075\047" \ +"\144\141\164\145\047\040\050\144\145\146\141\165\154\164\051\040" \ +"\146\157\162\040\144\141\164\145\040\157\156\154\171\054\012\011" \ +"\011\011\047\150\157\165\162\163\047\054\040\047\155\151\156\165" \ +"\164\145\163\047\054\040\157\162\040\047\163\145\143\157\156\144" \ +"\163\047\040\146\157\162\040\144\141\164\145\040\141\156\144\012" \ +"\011\011\011\164\151\155\145\040\164\157\040\164\150\145\040\151" \ +"\156\144\151\143\141\164\145\144\040\160\162\145\143\151\163\151" \ +"\157\156\012\011\055\162\054\055\055\162\145\146\145\162\145\156" \ +"\143\145\040\106\111\114\105\011\104\151\163\160\154\141\171\040" \ +"\154\141\163\164\040\155\157\144\151\146\151\143\141\164\151\157" \ +"\156\040\164\151\155\145\040\157\146\040\106\111\114\105\012\011" \ +"\055\144\054\055\055\144\141\164\145\040\124\111\115\105\011\104" \ +"\151\163\160\154\141\171\040\124\111\115\105\054\040\156\157\164" \ +"\040\047\156\157\167\047\012\011\055\104\040\106\115\124\011\011" \ +"\125\163\145\040\106\115\124\040\146\157\162\040\055\144\040\124" \ +"\111\115\105\040\143\157\156\166\145\162\163\151\157\156\012\012" \ +"\122\145\143\157\147\156\151\172\145\144\040\124\111\115\105\040" \ +"\146\157\162\155\141\164\163\072\012\011\150\150\072\155\155\133" \ +"\072\163\163\135\012\011\133\131\131\131\131\056\135\115\115\056" \ +"\104\104\055\150\150\072\155\155\133\072\163\163\135\012\011\131" \ +"\131\131\131\055\115\115\055\104\104\040\150\150\072\155\155\133" \ +"\072\163\163\135\012\011\133\133\133\133\133\131\131\135\131\131" \ +"\135\115\115\135\104\104\135\150\150\135\155\155\133\056\163\163" \ +"\135\012\011\047\144\141\164\145\040\124\111\115\105\047\040\146" \ +"\157\162\155\040\141\143\143\145\160\164\163\040\115\115\104\104" \ +"\150\150\155\155\133\133\131\131\135\131\131\135\133\056\163\163" \ +"\135\040\151\156\163\164\145\141\144\000\105\130\120\122\105\123" \ +"\123\111\117\116\056\056\056\012\012\124\151\156\171\040\122\120" \ +"\116\040\143\141\154\143\165\154\141\164\157\162\056\040\117\160" \ +"\145\162\141\164\151\157\156\163\072\012\053\054\040\141\144\144" \ +"\054\040\055\054\040\163\165\142\054\040\052\054\040\155\165\154" \ +"\054\040\057\054\040\144\151\166\054\040\045\054\040\155\157\144" \ +"\054\040\141\156\144\054\040\157\162\054\040\156\157\164\054\040" \ +"\170\157\162\054\012\160\040\055\040\160\162\151\156\164\040\164" \ +"\157\160\040\157\146\040\164\150\145\040\163\164\141\143\153\040" \ +"\050\167\151\164\150\157\165\164\040\160\157\160\160\151\156\147" \ +"\051\054\012\146\040\055\040\160\162\151\156\164\040\145\156\164" \ +"\151\162\145\040\163\164\141\143\153\054\012\157\040\055\040\160" \ +"\157\160\040\164\150\145\040\166\141\154\165\145\040\141\156\144" \ +"\040\163\145\164\040\157\165\164\160\165\164\040\162\141\144\151" \ +"\170\040\050\155\165\163\164\040\142\145\040\061\060\054\040\061" \ +"\066\054\040\070\040\157\162\040\062\051\056\012\105\170\141\155" \ +"\160\154\145\163\072\040\047\144\143\040\062\040\062\040\141\144" \ +"\144\040\160\047\040\055\076\040\064\054\040\047\144\143\040\070" \ +"\040\070\040\155\165\154\040\062\040\062\040\053\040\057\040\160" \ +"\047\040\055\076\040\061\066\000\133\151\146\075\106\111\114\105" \ +"\135\040\133\157\146\075\106\111\114\105\135\040\133\151\142\163" \ +"\075\116\135\040\133\157\142\163\075\116\135\040\133\142\163\075" \ +"\116\135\040\133\143\157\165\156\164\075\116\135\040\133\163\153" \ +"\151\160\075\116\135\012\011\133\163\145\145\153\075\116\135\040" \ +"\133\143\157\156\166\075\156\157\164\162\165\156\143\174\156\157" \ +"\145\162\162\157\162\174\163\171\156\143\174\146\163\171\156\143" \ +"\135\012\012\103\157\160\171\040\141\040\146\151\154\145\040\167" \ +"\151\164\150\040\143\157\156\166\145\162\164\151\156\147\040\141" \ +"\156\144\040\146\157\162\155\141\164\164\151\156\147\012\012\011" \ +"\151\146\075\106\111\114\105\011\011\122\145\141\144\040\146\162" \ +"\157\155\040\106\111\114\105\040\151\156\163\164\145\141\144\040" \ +"\157\146\040\163\164\144\151\156\012\011\157\146\075\106\111\114" \ +"\105\011\011\127\162\151\164\145\040\164\157\040\106\111\114\105" \ +"\040\151\156\163\164\145\141\144\040\157\146\040\163\164\144\157" \ +"\165\164\012\011\142\163\075\116\011\011\122\145\141\144\040\141" \ +"\156\144\040\167\162\151\164\145\040\116\040\142\171\164\145\163" \ +"\040\141\164\040\141\040\164\151\155\145\012\011\151\142\163\075" \ +"\116\011\011\122\145\141\144\040\116\040\142\171\164\145\163\040" \ +"\141\164\040\141\040\164\151\155\145\012\011\157\142\163\075\116" \ +"\011\011\127\162\151\164\145\040\116\040\142\171\164\145\163\040" \ +"\141\164\040\141\040\164\151\155\145\012\011\143\157\165\156\164" \ +"\075\116\011\011\103\157\160\171\040\157\156\154\171\040\116\040" \ +"\151\156\160\165\164\040\142\154\157\143\153\163\012\011\163\153" \ +"\151\160\075\116\011\011\123\153\151\160\040\116\040\151\156\160" \ +"\165\164\040\142\154\157\143\153\163\012\011\163\145\145\153\075" \ +"\116\011\011\123\153\151\160\040\116\040\157\165\164\160\165\164" \ +"\040\142\154\157\143\153\163\012\011\143\157\156\166\075\156\157" \ +"\164\162\165\156\143\011\104\157\156\047\164\040\164\162\165\156" \ +"\143\141\164\145\040\157\165\164\160\165\164\040\146\151\154\145" \ +"\012\011\143\157\156\166\075\156\157\145\162\162\157\162\011\103" \ +"\157\156\164\151\156\165\145\040\141\146\164\145\162\040\162\145" \ +"\141\144\040\145\162\162\157\162\163\012\011\143\157\156\166\075" \ +"\163\171\156\143\011\120\141\144\040\142\154\157\143\153\163\040" \ +"\167\151\164\150\040\172\145\162\157\163\012\011\143\157\156\166" \ +"\075\146\163\171\156\143\011\120\150\171\163\151\143\141\154\154" \ +"\171\040\167\162\151\164\145\040\144\141\164\141\040\157\165\164" \ +"\040\142\145\146\157\162\145\040\146\151\156\151\163\150\151\156" \ +"\147\012\011\143\157\156\166\075\163\167\141\142\011\123\167\141" \ +"\160\040\145\166\145\162\171\040\160\141\151\162\040\157\146\040" \ +"\142\171\164\145\163\012\012\116\040\155\141\171\040\142\145\040" \ +"\163\165\146\146\151\170\145\144\040\142\171\040\143\040\050\061" \ +"\051\054\040\167\040\050\062\051\054\040\142\040\050\065\061\062" \ +"\051\054\040\153\104\040\050\061\060\060\060\051\054\040\153\040" \ +"\050\061\060\062\064\051\054\040\115\104\054\040\115\054\040\107" \ +"\104\054\040\107\000\133\055\161\146\167\162\163\166\135\040\115" \ +"\117\104\125\114\105\040\133\163\171\155\142\157\154\075\166\141" \ +"\154\165\145\135\056\056\056\012\012\011\055\162\011\122\145\155" \ +"\157\166\145\040\115\117\104\125\114\105\040\050\163\164\141\143" \ +"\153\163\051\040\157\162\040\144\157\040\141\165\164\157\143\154" \ +"\145\141\156\012\011\055\161\011\121\165\151\145\164\012\011\055" \ +"\166\011\126\145\162\142\157\163\145\012\011\055\146\011\106\157" \ +"\162\143\145\012\011\055\167\011\127\141\151\164\040\146\157\162" \ +"\040\165\156\154\157\141\144\012\011\055\163\011\122\145\160\157" \ +"\162\164\040\166\151\141\040\163\171\163\154\157\147\040\151\156" \ +"\163\164\145\141\144\040\157\146\040\163\164\144\145\162\162\000" \ +"\101\104\104\122\105\123\123\040\133\127\111\104\124\110\040\133" \ +"\126\101\114\125\105\135\135\012\012\122\145\141\144\057\167\162" \ +"\151\164\145\040\146\162\157\155\040\160\150\171\163\151\143\141" \ +"\154\040\141\144\144\162\145\163\163\012\012\011\101\104\104\122" \ +"\105\123\123\011\101\144\144\162\145\163\163\040\164\157\040\141" \ +"\143\164\040\165\160\157\156\012\011\127\111\104\124\110\011\127" \ +"\151\144\164\150\040\050\070\057\061\066\057\056\056\056\051\012" \ +"\011\126\101\114\125\105\011\104\141\164\141\040\164\157\040\142" \ +"\145\040\167\162\151\164\164\145\156\000\133\055\120\153\155\150" \ +"\141\151\135\040\133\055\102\040\123\111\132\105\135\040\133\106" \ +"\111\114\105\123\131\123\124\105\115\135\056\056\056\012\012\120" \ +"\162\151\156\164\040\146\151\154\145\163\171\163\164\145\155\040" \ +"\165\163\141\147\145\040\163\164\141\164\151\163\164\151\143\163" \ +"\012\012\011\055\120\011\120\117\123\111\130\040\157\165\164\160" \ +"\165\164\040\146\157\162\155\141\164\012\011\055\153\011\061\060" \ +"\062\064\055\142\171\164\145\040\142\154\157\143\153\163\040\050" \ +"\144\145\146\141\165\154\164\051\012\011\055\155\011\061\115\055" \ +"\142\171\164\145\040\142\154\157\143\153\163\012\011\055\150\011" \ +"\110\165\155\141\156\040\162\145\141\144\141\142\154\145\040\050" \ +"\145\056\147\056\040\061\113\040\062\064\063\115\040\062\107\051" \ +"\012\011\055\141\011\123\150\157\167\040\141\154\154\040\146\151" \ +"\154\145\163\171\163\164\145\155\163\012\011\055\151\011\111\156" \ +"\157\144\145\163\012\011\055\102\040\123\111\132\105\011\102\154" \ +"\157\143\153\163\151\172\145\000\133\055\141\142\102\144\151\116" \ +"\161\162\124\163\164\167\135\040\133\055\114\040\114\101\102\105" \ +"\114\135\040\133\055\123\040\106\111\114\105\135\040\133\055\125" \ +"\040\114\111\116\105\123\135\040\106\111\114\105\061\040\106\111" \ +"\114\105\062\012\012\103\157\155\160\141\162\145\040\146\151\154" \ +"\145\163\040\154\151\156\145\040\142\171\040\154\151\156\145\040" \ +"\141\156\144\040\157\165\164\160\165\164\040\164\150\145\040\144" \ +"\151\146\146\145\162\145\156\143\145\163\040\142\145\164\167\145" \ +"\145\156\040\164\150\145\155\056\012\124\150\151\163\040\151\155" \ +"\160\154\145\155\145\156\164\141\164\151\157\156\040\163\165\160" \ +"\160\157\162\164\163\040\165\156\151\146\151\145\144\040\144\151" \ +"\146\146\163\040\157\156\154\171\056\012\012\011\055\141\011\124" \ +"\162\145\141\164\040\141\154\154\040\146\151\154\145\163\040\141" \ +"\163\040\164\145\170\164\012\011\055\142\011\111\147\156\157\162" \ +"\145\040\143\150\141\156\147\145\163\040\151\156\040\164\150\145" \ +"\040\141\155\157\165\156\164\040\157\146\040\167\150\151\164\145" \ +"\163\160\141\143\145\012\011\055\102\011\111\147\156\157\162\145" \ +"\040\143\150\141\156\147\145\163\040\167\150\157\163\145\040\154" \ +"\151\156\145\163\040\141\162\145\040\141\154\154\040\142\154\141" \ +"\156\153\012\011\055\144\011\124\162\171\040\150\141\162\144\040" \ +"\164\157\040\146\151\156\144\040\141\040\163\155\141\154\154\145" \ +"\162\040\163\145\164\040\157\146\040\143\150\141\156\147\145\163" \ +"\012\011\055\151\011\111\147\156\157\162\145\040\143\141\163\145" \ +"\040\144\151\146\146\145\162\145\156\143\145\163\012\011\055\114" \ +"\011\125\163\145\040\114\101\102\105\114\040\151\156\163\164\145" \ +"\141\144\040\157\146\040\164\150\145\040\146\151\154\145\156\141" \ +"\155\145\040\151\156\040\164\150\145\040\165\156\151\146\151\145" \ +"\144\040\150\145\141\144\145\162\012\011\055\116\011\124\162\145" \ +"\141\164\040\141\142\163\145\156\164\040\146\151\154\145\163\040" \ +"\141\163\040\145\155\160\164\171\012\011\055\161\011\117\165\164" \ +"\160\165\164\040\157\156\154\171\040\167\150\145\164\150\145\162" \ +"\040\146\151\154\145\163\040\144\151\146\146\145\162\012\011\055" \ +"\162\011\122\145\143\165\162\163\145\012\011\055\123\011\123\164" \ +"\141\162\164\040\167\151\164\150\040\106\111\114\105\040\167\150" \ +"\145\156\040\143\157\155\160\141\162\151\156\147\040\144\151\162" \ +"\145\143\164\157\162\151\145\163\012\011\055\124\011\115\141\153" \ +"\145\040\164\141\142\163\040\154\151\156\145\040\165\160\040\142" \ +"\171\040\160\162\145\146\151\170\151\156\147\040\141\040\164\141" \ +"\142\040\167\150\145\156\040\156\145\143\145\163\163\141\162\171" \ +"\012\011\055\163\011\122\145\160\157\162\164\040\167\150\145\156" \ +"\040\164\167\157\040\146\151\154\145\163\040\141\162\145\040\164" \ +"\150\145\040\163\141\155\145\012\011\055\164\011\105\170\160\141" \ +"\156\144\040\164\141\142\163\040\164\157\040\163\160\141\143\145" \ +"\163\040\151\156\040\157\165\164\160\165\164\012\011\055\125\011" \ +"\117\165\164\160\165\164\040\114\111\116\105\123\040\154\151\156" \ +"\145\163\040\157\146\040\143\157\156\164\145\170\164\012\011\055" \ +"\167\011\111\147\156\157\162\145\040\141\154\154\040\167\150\151" \ +"\164\145\163\160\141\143\145\000\106\111\114\105\116\101\115\105" \ +"\012\012\123\164\162\151\160\040\156\157\156\055\144\151\162\145" \ +"\143\164\157\162\171\040\163\165\146\146\151\170\040\146\162\157" \ +"\155\040\106\111\114\105\116\101\115\105\000\133\055\143\135\040" \ +"\133\055\156\040\114\105\126\105\114\135\040\133\055\162\135\040" \ +"\133\055\163\040\123\111\132\105\135\040\133\055\103\135\012\012" \ +"\120\162\151\156\164\040\157\162\040\143\157\156\164\162\157\154" \ +"\040\164\150\145\040\153\145\162\156\145\154\040\162\151\156\147" \ +"\040\142\165\146\146\145\162\012\012\011\055\143\011\011\103\154" \ +"\145\141\162\040\162\151\156\147\040\142\165\146\146\145\162\040" \ +"\141\146\164\145\162\040\160\162\151\156\164\151\156\147\012\011" \ +"\055\156\040\114\105\126\105\114\011\123\145\164\040\143\157\156" \ +"\163\157\154\145\040\154\157\147\147\151\156\147\040\154\145\166" \ +"\145\154\012\011\055\162\011\011\123\150\157\167\040\154\145\166" \ +"\145\154\040\160\162\145\146\151\170\012\011\055\163\040\123\111" \ +"\132\105\011\011\102\165\146\146\145\162\040\163\151\172\145\012" \ +"\011\055\103\011\011\103\157\154\157\162\145\144\040\157\165\164" \ +"\160\165\164\000\133\055\165\144\135\040\133\106\111\114\105\135" \ +"\012\012\103\157\156\166\145\162\164\040\106\111\114\105\040\151" \ +"\156\055\160\154\141\143\145\040\146\162\157\155\040\104\117\123" \ +"\040\164\157\040\125\156\151\170\040\146\157\162\155\141\164\056" \ +"\012\127\150\145\156\040\156\157\040\146\151\154\145\040\151\163" \ +"\040\147\151\166\145\156\054\040\165\163\145\040\163\164\144\151" \ +"\156\057\163\164\144\157\165\164\056\012\012\011\055\165\011\144" \ +"\157\163\062\165\156\151\170\012\011\055\144\011\165\156\151\170" \ +"\062\144\157\163\000\133\055\141\110\114\144\143\154\163\170\150" \ +"\155\153\135\040\133\106\111\114\105\135\056\056\056\012\012\123" \ +"\165\155\155\141\162\151\172\145\040\144\151\163\153\040\163\160" \ +"\141\143\145\040\165\163\145\144\040\146\157\162\040\145\141\143" \ +"\150\040\106\111\114\105\040\141\156\144\057\157\162\040\144\151" \ +"\162\145\143\164\157\162\171\012\012\011\055\141\011\123\150\157" \ +"\167\040\146\151\154\145\040\163\151\172\145\163\040\164\157\157" \ +"\012\011\055\114\011\106\157\154\154\157\167\040\141\154\154\040" \ +"\163\171\155\154\151\156\153\163\012\011\055\110\011\106\157\154" \ +"\154\157\167\040\163\171\155\154\151\156\153\163\040\157\156\040" \ +"\143\157\155\155\141\156\144\040\154\151\156\145\012\011\055\144" \ +"\040\116\011\114\151\155\151\164\040\157\165\164\160\165\164\040" \ +"\164\157\040\144\151\162\145\143\164\157\162\151\145\163\040\050" \ +"\141\156\144\040\146\151\154\145\163\040\167\151\164\150\040\055" \ +"\141\051\040\157\146\040\144\145\160\164\150\040\074\040\116\012" \ +"\011\055\143\011\123\150\157\167\040\147\162\141\156\144\040\164" \ +"\157\164\141\154\012\011\055\154\011\103\157\165\156\164\040\163" \ +"\151\172\145\163\040\155\141\156\171\040\164\151\155\145\163\040" \ +"\151\146\040\150\141\162\144\040\154\151\156\153\145\144\012\011" \ +"\055\163\011\104\151\163\160\154\141\171\040\157\156\154\171\040" \ +"\141\040\164\157\164\141\154\040\146\157\162\040\145\141\143\150" \ +"\040\141\162\147\165\155\145\156\164\012\011\055\170\011\123\153" \ +"\151\160\040\144\151\162\145\143\164\157\162\151\145\163\040\157" \ +"\156\040\144\151\146\146\145\162\145\156\164\040\146\151\154\145" \ +"\163\171\163\164\145\155\163\012\011\055\150\011\123\151\172\145" \ +"\163\040\151\156\040\150\165\155\141\156\040\162\145\141\144\141" \ +"\142\154\145\040\146\157\162\155\141\164\040\050\145\056\147\056" \ +"\054\040\061\113\040\062\064\063\115\040\062\107\051\012\011\055" \ +"\155\011\123\151\172\145\163\040\151\156\040\155\145\147\141\142" \ +"\171\164\145\163\012\011\055\153\011\123\151\172\145\163\040\151" \ +"\156\040\153\151\154\157\142\171\164\145\163\040\050\144\145\146" \ +"\141\165\154\164\051\000\133\055\156\145\105\135\040\133\101\122" \ +"\107\135\056\056\056\012\012\120\162\151\156\164\040\164\150\145" \ +"\040\163\160\145\143\151\146\151\145\144\040\101\122\107\163\040" \ +"\164\157\040\163\164\144\157\165\164\012\012\011\055\156\011\123" \ +"\165\160\160\162\145\163\163\040\164\162\141\151\154\151\156\147" \ +"\040\156\145\167\154\151\156\145\012\011\055\145\011\111\156\164" \ +"\145\162\160\162\145\164\040\142\141\143\153\163\154\141\163\150" \ +"\040\145\163\143\141\160\145\163\040\050\151\056\145\056\054\040" \ +"\134\164\075\164\141\142\051\012\011\055\105\011\104\157\156\047" \ +"\164\040\151\156\164\145\162\160\162\145\164\040\142\141\143\153" \ +"\163\154\141\163\150\040\145\163\143\141\160\145\163\040\050\144" \ +"\145\146\141\165\154\164\051\000\010\000\133\055\151\165\135\040" \ +"\133\055\135\040\133\156\141\155\145\075\166\141\154\165\145\135" \ +"\056\056\056\040\133\120\122\117\107\040\101\122\107\123\135\012" \ +"\012\120\162\151\156\164\040\164\150\145\040\143\165\162\162\145" \ +"\156\164\040\145\156\166\151\162\157\156\155\145\156\164\040\157" \ +"\162\040\162\165\156\040\120\122\117\107\040\141\146\164\145\162" \ +"\040\163\145\164\164\151\156\147\040\165\160\012\164\150\145\040" \ +"\163\160\145\143\151\146\151\145\144\040\145\156\166\151\162\157" \ +"\156\155\145\156\164\012\012\011\055\054\040\055\151\011\123\164" \ +"\141\162\164\040\167\151\164\150\040\141\156\040\145\155\160\164" \ +"\171\040\145\156\166\151\162\157\156\155\145\156\164\012\011\055" \ +"\165\011\122\145\155\157\166\145\040\166\141\162\151\141\142\154" \ +"\145\040\146\162\157\155\040\164\150\145\040\145\156\166\151\162" \ +"\157\156\155\145\156\164\000\133\055\151\135\040\133\055\164\040" \ +"\116\135\040\133\106\111\114\105\135\056\056\056\012\012\103\157" \ +"\156\166\145\162\164\040\164\141\142\163\040\164\157\040\163\160" \ +"\141\143\145\163\054\040\167\162\151\164\151\156\147\040\164\157" \ +"\040\163\164\144\157\165\164\012\012\011\055\151\011\104\157\156" \ +"\047\164\040\143\157\156\166\145\162\164\040\164\141\142\163\040" \ +"\141\146\164\145\162\040\156\157\156\040\142\154\141\156\153\163" \ +"\012\011\055\164\011\124\141\142\163\164\157\160\163\040\145\166" \ +"\145\162\171\040\116\040\143\150\141\162\163\000\105\130\120\122" \ +"\105\123\123\111\117\116\012\012\120\162\151\156\164\040\164\150" \ +"\145\040\166\141\154\165\145\040\157\146\040\105\130\120\122\105" \ +"\123\123\111\117\116\040\164\157\040\163\164\144\157\165\164\012" \ +"\012\105\130\120\122\105\123\123\111\117\116\040\155\141\171\040" \ +"\142\145\072\012\011\101\122\107\061\040\174\040\101\122\107\062" \ +"\011\101\122\107\061\040\151\146\040\151\164\040\151\163\040\156" \ +"\145\151\164\150\145\162\040\156\165\154\154\040\156\157\162\040" \ +"\060\054\040\157\164\150\145\162\167\151\163\145\040\101\122\107" \ +"\062\012\011\101\122\107\061\040\046\040\101\122\107\062\011\101" \ +"\122\107\061\040\151\146\040\156\145\151\164\150\145\162\040\141" \ +"\162\147\165\155\145\156\164\040\151\163\040\156\165\154\154\040" \ +"\157\162\040\060\054\040\157\164\150\145\162\167\151\163\145\040" \ +"\060\012\011\101\122\107\061\040\074\040\101\122\107\062\011\061" \ +"\040\151\146\040\101\122\107\061\040\151\163\040\154\145\163\163" \ +"\040\164\150\141\156\040\101\122\107\062\054\040\145\154\163\145" \ +"\040\060\056\040\123\151\155\151\154\141\162\154\171\072\012\011" \ +"\101\122\107\061\040\074\075\040\101\122\107\062\012\011\101\122" \ +"\107\061\040\075\040\101\122\107\062\012\011\101\122\107\061\040" \ +"\041\075\040\101\122\107\062\012\011\101\122\107\061\040\076\075" \ +"\040\101\122\107\062\012\011\101\122\107\061\040\076\040\101\122" \ +"\107\062\012\011\101\122\107\061\040\053\040\101\122\107\062\011" \ +"\123\165\155\040\157\146\040\101\122\107\061\040\141\156\144\040" \ +"\101\122\107\062\056\040\123\151\155\151\154\141\162\154\171\072" \ +"\012\011\101\122\107\061\040\055\040\101\122\107\062\012\011\101" \ +"\122\107\061\040\052\040\101\122\107\062\012\011\101\122\107\061" \ +"\040\057\040\101\122\107\062\012\011\101\122\107\061\040\045\040" \ +"\101\122\107\062\012\011\123\124\122\111\116\107\040\072\040\122" \ +"\105\107\105\130\120\011\011\101\156\143\150\157\162\145\144\040" \ +"\160\141\164\164\145\162\156\040\155\141\164\143\150\040\157\146" \ +"\040\122\105\107\105\130\120\040\151\156\040\123\124\122\111\116" \ +"\107\012\011\155\141\164\143\150\040\123\124\122\111\116\107\040" \ +"\122\105\107\105\130\120\011\123\141\155\145\040\141\163\040\123" \ +"\124\122\111\116\107\040\072\040\122\105\107\105\130\120\012\011" \ +"\163\165\142\163\164\162\040\123\124\122\111\116\107\040\120\117" \ +"\123\040\114\105\116\107\124\110\040\123\165\142\163\164\162\151" \ +"\156\147\040\157\146\040\123\124\122\111\116\107\054\040\120\117" \ +"\123\040\143\157\165\156\164\145\144\040\146\162\157\155\040\061" \ +"\012\011\151\156\144\145\170\040\123\124\122\111\116\107\040\103" \ +"\110\101\122\123\011\111\156\144\145\170\040\151\156\040\123\124" \ +"\122\111\116\107\040\167\150\145\162\145\040\141\156\171\040\103" \ +"\110\101\122\123\040\151\163\040\146\157\165\156\144\054\040\157" \ +"\162\040\060\012\011\154\145\156\147\164\150\040\123\124\122\111" \ +"\116\107\011\011\114\145\156\147\164\150\040\157\146\040\123\124" \ +"\122\111\116\107\012\011\161\165\157\164\145\040\124\117\113\105" \ +"\116\011\011\111\156\164\145\162\160\162\145\164\040\124\117\113" \ +"\105\116\040\141\163\040\141\040\163\164\162\151\156\147\054\040" \ +"\145\166\145\156\040\151\146\012\011\011\011\011\151\164\040\151" \ +"\163\040\141\040\153\145\171\167\157\162\144\040\154\151\153\145" \ +"\040\047\155\141\164\143\150\047\040\157\162\040\141\156\012\011" \ +"\011\011\011\157\160\145\162\141\164\157\162\040\154\151\153\145" \ +"\040\047\057\047\012\011\050\105\130\120\122\105\123\123\111\117" \ +"\116\051\011\011\126\141\154\165\145\040\157\146\040\105\130\120" \ +"\122\105\123\123\111\117\116\012\012\102\145\167\141\162\145\040" \ +"\164\150\141\164\040\155\141\156\171\040\157\160\145\162\141\164" \ +"\157\162\163\040\156\145\145\144\040\164\157\040\142\145\040\145" \ +"\163\143\141\160\145\144\040\157\162\040\161\165\157\164\145\144" \ +"\040\146\157\162\040\163\150\145\154\154\163\056\012\103\157\155" \ +"\160\141\162\151\163\157\156\163\040\141\162\145\040\141\162\151" \ +"\164\150\155\145\164\151\143\040\151\146\040\142\157\164\150\040" \ +"\101\122\107\163\040\141\162\145\040\156\165\155\142\145\162\163" \ +"\054\040\145\154\163\145\012\154\145\170\151\143\157\147\162\141" \ +"\160\150\151\143\141\154\056\040\120\141\164\164\145\162\156\040" \ +"\155\141\164\143\150\145\163\040\162\145\164\165\162\156\040\164" \ +"\150\145\040\163\164\162\151\156\147\040\155\141\164\143\150\145" \ +"\144\040\142\145\164\167\145\145\156\012\134\050\040\141\156\144" \ +"\040\134\051\040\157\162\040\156\165\154\154\073\040\151\146\040" \ +"\134\050\040\141\156\144\040\134\051\040\141\162\145\040\156\157" \ +"\164\040\165\163\145\144\054\040\164\150\145\171\040\162\145\164" \ +"\165\162\156\040\164\150\145\040\156\165\155\142\145\162\012\157" \ +"\146\040\143\150\141\162\141\143\164\145\162\163\040\155\141\164" \ +"\143\150\145\144\040\157\162\040\060\056\000\012\012\122\145\164" \ +"\165\162\156\040\141\156\040\145\170\151\164\040\143\157\144\145" \ +"\040\157\146\040\106\101\114\123\105\040\050\061\051\000\133\055" \ +"\165\154\135\040\133\055\103\040\103\131\114\111\116\104\105\122" \ +"\123\135\040\133\055\110\040\110\105\101\104\123\135\040\133\055" \ +"\123\040\123\105\103\124\117\122\123\135\040\133\055\142\040\123" \ +"\123\132\135\040\104\111\123\113\012\012\103\150\141\156\147\145" \ +"\040\160\141\162\164\151\164\151\157\156\040\164\141\142\154\145" \ +"\012\012\011\055\165\011\011\123\164\141\162\164\040\141\156\144" \ +"\040\105\156\144\040\141\162\145\040\151\156\040\163\145\143\164" \ +"\157\162\163\040\050\151\156\163\164\145\141\144\040\157\146\040" \ +"\143\171\154\151\156\144\145\162\163\051\012\011\055\154\011\011" \ +"\123\150\157\167\040\160\141\162\164\151\164\151\157\156\040\164" \ +"\141\142\154\145\040\146\157\162\040\145\141\143\150\040\104\111" \ +"\123\113\054\040\164\150\145\156\040\145\170\151\164\012\011\055" \ +"\142\040\062\060\064\070\011\011\050\146\157\162\040\143\145\162" \ +"\164\141\151\156\040\115\117\040\144\151\163\153\163\051\040\165" \ +"\163\145\040\062\060\064\070\055\142\171\164\145\040\163\145\143" \ +"\164\157\162\163\012\011\055\103\040\103\131\114\111\116\104\105" \ +"\122\123\011\123\145\164\040\156\165\155\142\145\162\040\157\146" \ +"\040\143\171\154\151\156\144\145\162\163\057\150\145\141\144\163" \ +"\057\163\145\143\164\157\162\163\012\011\055\110\040\110\105\101" \ +"\104\123\012\011\055\123\040\123\105\103\124\117\122\123\000\010" \ +"\000\133\055\110\114\135\040\133\120\101\124\110\135\056\056\056" \ +"\040\133\117\120\124\111\117\116\123\135\040\133\101\103\124\111" \ +"\117\116\123\135\012\012\123\145\141\162\143\150\040\146\157\162" \ +"\040\146\151\154\145\163\040\141\156\144\040\160\145\162\146\157" \ +"\162\155\040\141\143\164\151\157\156\163\040\157\156\040\164\150" \ +"\145\155\056\012\106\151\162\163\164\040\146\141\151\154\145\144" \ +"\040\141\143\164\151\157\156\040\163\164\157\160\163\040\160\162" \ +"\157\143\145\163\163\151\156\147\040\157\146\040\143\165\162\162" \ +"\145\156\164\040\146\151\154\145\056\012\104\145\146\141\165\154" \ +"\164\163\072\040\120\101\124\110\040\151\163\040\143\165\162\162" \ +"\145\156\164\040\144\151\162\145\143\164\157\162\171\054\040\141" \ +"\143\164\151\157\156\040\151\163\040\047\055\160\162\151\156\164" \ +"\047\012\012\011\055\114\054\055\146\157\154\154\157\167\011\106" \ +"\157\154\154\157\167\040\163\171\155\154\151\156\153\163\012\011" \ +"\055\110\011\011\056\056\056\157\156\040\143\157\155\155\141\156" \ +"\144\040\154\151\156\145\040\157\156\154\171\012\011\055\170\144" \ +"\145\166\011\011\104\157\156\047\164\040\144\145\163\143\145\156" \ +"\144\040\144\151\162\145\143\164\157\162\151\145\163\040\157\156" \ +"\040\157\164\150\145\162\040\146\151\154\145\163\171\163\164\145" \ +"\155\163\012\011\055\155\141\170\144\145\160\164\150\040\116\011" \ +"\104\145\163\143\145\156\144\040\141\164\040\155\157\163\164\040" \ +"\116\040\154\145\166\145\154\163\056\040\055\155\141\170\144\145" \ +"\160\164\150\040\060\040\141\160\160\154\151\145\163\012\011\011" \ +"\011\141\143\164\151\157\156\163\040\164\157\040\143\157\155\155" \ +"\141\156\144\040\154\151\156\145\040\141\162\147\165\155\145\156" \ +"\164\163\040\157\156\154\171\012\011\055\155\151\156\144\145\160" \ +"\164\150\040\116\011\104\157\156\047\164\040\141\143\164\040\157" \ +"\156\040\146\151\162\163\164\040\116\040\154\145\166\145\154\163" \ +"\012\011\055\144\145\160\164\150\011\011\101\143\164\040\157\156" \ +"\040\144\151\162\145\143\164\157\162\171\040\052\141\146\164\145" \ +"\162\052\040\164\162\141\166\145\162\163\151\156\147\040\151\164" \ +"\012\012\101\143\164\151\157\156\163\072\012\011\050\040\101\103" \ +"\124\111\117\116\123\040\051\011\107\162\157\165\160\040\141\143" \ +"\164\151\157\156\163\040\146\157\162\040\055\157\040\057\040\055" \ +"\141\012\011\041\040\101\103\124\011\011\111\156\166\145\162\164" \ +"\040\101\103\124\047\163\040\163\165\143\143\145\163\163\057\146" \ +"\141\151\154\165\162\145\012\011\101\103\124\061\040\133\055\141" \ +"\135\040\101\103\124\062\011\111\146\040\101\103\124\061\040\146" \ +"\141\151\154\163\054\040\163\164\157\160\054\040\145\154\163\145" \ +"\040\144\157\040\101\103\124\062\012\011\101\103\124\061\040\055" \ +"\157\040\101\103\124\062\011\111\146\040\101\103\124\061\040\163" \ +"\165\143\143\145\145\144\163\054\040\163\164\157\160\054\040\145" \ +"\154\163\145\040\144\157\040\101\103\124\062\012\011\011\011\116" \ +"\157\164\145\072\040\055\141\040\150\141\163\040\150\151\147\150" \ +"\145\162\040\160\162\151\157\162\151\164\171\040\164\150\141\156" \ +"\040\055\157\012\011\055\156\141\155\145\040\120\101\124\124\105" \ +"\122\116\011\115\141\164\143\150\040\146\151\154\145\040\156\141" \ +"\155\145\040\050\167\057\157\040\144\151\162\145\143\164\157\162" \ +"\171\040\156\141\155\145\051\040\164\157\040\120\101\124\124\105" \ +"\122\116\012\011\055\151\156\141\155\145\040\120\101\124\124\105" \ +"\122\116\011\103\141\163\145\040\151\156\163\145\156\163\151\164" \ +"\151\166\145\040\055\156\141\155\145\012\011\055\160\141\164\150" \ +"\040\120\101\124\124\105\122\116\011\115\141\164\143\150\040\160" \ +"\141\164\150\040\164\157\040\120\101\124\124\105\122\116\012\011" \ +"\055\151\160\141\164\150\040\120\101\124\124\105\122\116\011\103" \ +"\141\163\145\040\151\156\163\145\156\163\151\164\151\166\145\040" \ +"\055\160\141\164\150\012\011\055\162\145\147\145\170\040\120\101" \ +"\124\124\105\122\116\011\115\141\164\143\150\040\160\141\164\150" \ +"\040\164\157\040\162\145\147\145\170\040\120\101\124\124\105\122" \ +"\116\012\011\055\164\171\160\145\040\130\011\011\106\151\154\145" \ +"\040\164\171\160\145\040\151\163\040\130\040\050\157\156\145\040" \ +"\157\146\072\040\146\054\144\054\154\054\142\054\143\054\056\056" \ +"\056\051\012\011\055\160\145\162\155\040\115\101\123\113\011\101" \ +"\164\040\154\145\141\163\164\040\157\156\145\040\155\141\163\153" \ +"\040\142\151\164\040\050\053\115\101\123\113\051\054\040\141\154" \ +"\154\040\142\151\164\163\040\050\055\115\101\123\113\051\054\012" \ +"\011\011\011\157\162\040\145\170\141\143\164\154\171\040\115\101" \ +"\123\113\040\142\151\164\163\040\141\162\145\040\163\145\164\040" \ +"\151\156\040\146\151\154\145\047\163\040\155\157\144\145\012\011" \ +"\055\155\164\151\155\145\040\104\101\131\123\011\155\164\151\155" \ +"\145\040\151\163\040\147\162\145\141\164\145\162\040\164\150\141" \ +"\156\040\050\053\116\051\054\040\154\145\163\163\040\164\150\141" \ +"\156\040\050\055\116\051\054\012\011\011\011\157\162\040\145\170" \ +"\141\143\164\154\171\040\116\040\144\141\171\163\040\151\156\040" \ +"\164\150\145\040\160\141\163\164\012\011\055\155\155\151\156\040" \ +"\115\111\116\123\011\155\164\151\155\145\040\151\163\040\147\162" \ +"\145\141\164\145\162\040\164\150\141\156\040\050\053\116\051\054" \ +"\040\154\145\163\163\040\164\150\141\156\040\050\055\116\051\054" \ +"\012\011\011\011\157\162\040\145\170\141\143\164\154\171\040\116" \ +"\040\155\151\156\165\164\145\163\040\151\156\040\164\150\145\040" \ +"\160\141\163\164\012\011\055\156\145\167\145\162\040\106\111\114" \ +"\105\011\155\164\151\155\145\040\151\163\040\155\157\162\145\040" \ +"\162\145\143\145\156\164\040\164\150\141\156\040\106\111\114\105" \ +"\047\163\012\011\055\165\163\145\162\040\116\101\115\105\057\111" \ +"\104\011\106\151\154\145\040\151\163\040\157\167\156\145\144\040" \ +"\142\171\040\147\151\166\145\156\040\165\163\145\162\012\011\055" \ +"\147\162\157\165\160\040\116\101\115\105\057\111\104\011\106\151" \ +"\154\145\040\151\163\040\157\167\156\145\144\040\142\171\040\147" \ +"\151\166\145\156\040\147\162\157\165\160\012\011\055\163\151\172" \ +"\145\040\116\133\142\143\153\135\011\106\151\154\145\040\163\151" \ +"\172\145\040\151\163\040\116\040\050\143\072\142\171\164\145\163" \ +"\054\153\072\153\142\171\164\145\163\054\142\072\065\061\062\040" \ +"\142\171\164\145\163\050\144\145\146\056\051\051\012\011\011\011" \ +"\053\057\055\116\072\040\146\151\154\145\040\163\151\172\145\040" \ +"\151\163\040\142\151\147\147\145\162\057\163\155\141\154\154\145" \ +"\162\040\164\150\141\156\040\116\012\011\055\160\162\165\156\145" \ +"\011\011\111\146\040\143\165\162\162\145\156\164\040\146\151\154" \ +"\145\040\151\163\040\144\151\162\145\143\164\157\162\171\054\040" \ +"\144\157\156\047\164\040\144\145\163\143\145\156\144\040\151\156" \ +"\164\157\040\151\164\012\111\146\040\156\157\156\145\040\157\146" \ +"\040\164\150\145\040\146\157\154\154\157\167\151\156\147\040\141" \ +"\143\164\151\157\156\163\040\151\163\040\163\160\145\143\151\146" \ +"\151\145\144\054\040\055\160\162\151\156\164\040\151\163\040\141" \ +"\163\163\165\155\145\144\012\011\055\160\162\151\156\164\011\011" \ +"\120\162\151\156\164\040\146\151\154\145\040\156\141\155\145\012" \ +"\011\055\160\162\151\156\164\060\011\011\120\162\151\156\164\040" \ +"\146\151\154\145\040\156\141\155\145\054\040\116\125\114\040\164" \ +"\145\162\155\151\156\141\164\145\144\012\011\055\145\170\145\143" \ +"\040\103\115\104\040\101\122\107\040\073\011\122\165\156\040\103" \ +"\115\104\040\167\151\164\150\040\141\154\154\040\151\156\163\164" \ +"\141\156\143\145\163\040\157\146\040\173\175\040\162\145\160\154" \ +"\141\143\145\144\040\142\171\012\011\011\011\146\151\154\145\040" \ +"\156\141\155\145\056\040\106\141\151\154\163\040\151\146\040\103" \ +"\115\104\040\145\170\151\164\163\040\167\151\164\150\040\156\157" \ +"\156\172\145\162\157\000\133\055\142\163\135\040\133\055\167\040" \ +"\127\111\104\124\110\135\040\133\106\111\114\105\135\056\056\056" \ +"\012\012\127\162\141\160\040\151\156\160\165\164\040\154\151\156" \ +"\145\163\040\151\156\040\145\141\143\150\040\106\111\114\105\040" \ +"\050\157\162\040\163\164\144\151\156\051\054\040\167\162\151\164" \ +"\151\156\147\040\164\157\040\163\164\144\157\165\164\012\012\011" \ +"\055\142\011\103\157\165\156\164\040\142\171\164\145\163\040\162" \ +"\141\164\150\145\162\040\164\150\141\156\040\143\157\154\165\155" \ +"\156\163\012\011\055\163\011\102\162\145\141\153\040\141\164\040" \ +"\163\160\141\143\145\163\012\011\055\167\011\125\163\145\040\127" \ +"\111\104\124\110\040\143\157\154\165\155\156\163\040\151\156\163" \ +"\164\145\141\144\040\157\146\040\070\060\000\012\012\104\151\163" \ +"\160\154\141\171\040\164\150\145\040\141\155\157\165\156\164\040" \ +"\157\146\040\146\162\145\145\040\141\156\144\040\165\163\145\144" \ +"\040\163\171\163\164\145\155\040\155\145\155\157\162\171\000\104" \ +"\105\126\111\103\105\012\012\106\162\145\145\040\141\154\154\040" \ +"\155\145\155\157\162\171\040\165\163\145\144\040\142\171\040\164" \ +"\150\145\040\163\160\145\143\151\146\151\145\144\040\162\141\155" \ +"\144\151\163\153\000\133\117\120\124\111\117\116\123\135\040\115" \ +"\117\125\116\124\120\117\111\116\124\012\012\011\055\157\054\055" \ +"\055\157\146\146\163\145\164\075\117\106\106\123\105\124\011\117" \ +"\146\146\163\145\164\040\151\156\040\142\171\164\145\163\040\164" \ +"\157\040\144\151\163\143\141\162\144\040\146\162\157\155\012\011" \ +"\055\154\054\055\055\154\145\156\147\164\150\075\114\105\116\011" \ +"\011\102\171\164\145\163\040\164\157\040\144\151\163\143\141\162" \ +"\144\012\011\055\155\054\055\055\155\151\156\151\155\165\155\075" \ +"\115\111\116\011\115\151\156\151\155\165\155\040\145\170\164\145" \ +"\156\164\040\154\145\156\147\164\150\012\011\055\166\054\055\055" \ +"\166\145\162\142\157\163\145\011\011\120\162\151\156\164\040\156" \ +"\165\155\142\145\162\040\157\146\040\144\151\163\143\141\162\144" \ +"\145\144\040\142\171\164\145\163\000\133\117\120\124\111\117\116" \ +"\123\135\040\106\111\114\105\040\157\162\040\120\117\122\124\057" \ +"\120\122\117\124\117\012\012\106\151\156\144\040\160\162\157\143" \ +"\145\163\163\145\163\040\167\150\151\143\150\040\165\163\145\040" \ +"\106\111\114\105\163\040\157\162\040\120\117\122\124\163\012\012" \ +"\011\055\155\011\106\151\156\144\040\160\162\157\143\145\163\163" \ +"\145\163\040\167\150\151\143\150\040\165\163\145\040\163\141\155" \ +"\145\040\146\163\040\141\163\040\106\111\114\105\163\012\011\055" \ +"\064\054\055\066\011\123\145\141\162\143\150\040\157\156\154\171" \ +"\040\111\120\166\064\057\111\120\166\066\040\163\160\141\143\145" \ +"\012\011\055\163\011\104\157\156\047\164\040\144\151\163\160\154" \ +"\141\171\040\120\111\104\163\012\011\055\153\011\113\151\154\154" \ +"\040\146\157\165\156\144\040\160\162\157\143\145\163\163\145\163" \ +"\012\011\055\123\111\107\116\101\114\011\123\151\147\156\141\154" \ +"\040\164\157\040\163\145\156\144\040\050\144\145\146\141\165\154" \ +"\164\072\040\113\111\114\114\051\000\133\117\120\124\111\117\116" \ +"\123\135\040\133\055\055\135\040\117\120\124\123\124\122\111\116" \ +"\107\040\120\101\122\101\115\123\012\012\011\055\156\054\055\055" \ +"\156\141\155\145\075\120\122\117\107\116\101\115\105\011\011\124" \ +"\150\145\040\156\141\155\145\040\165\156\144\145\162\040\167\150" \ +"\151\143\150\040\145\162\162\157\162\163\040\141\162\145\040\162" \ +"\145\160\157\162\164\145\144\012\011\055\157\054\055\055\157\160" \ +"\164\151\157\156\163\075\117\120\124\123\124\122\111\116\107\011" \ +"\011\123\150\157\162\164\040\157\160\164\151\157\156\163\040\164" \ +"\157\040\162\145\143\157\147\156\151\172\145\012\011\055\161\054" \ +"\055\055\161\165\151\145\164\011\011\011\116\157\040\145\162\162" \ +"\157\162\040\155\145\163\163\141\147\145\163\040\157\156\040\165" \ +"\156\162\145\143\157\147\156\151\172\145\144\040\157\160\164\151" \ +"\157\156\163\012\011\055\121\054\055\055\161\165\151\145\164\055" \ +"\157\165\164\160\165\164\011\011\116\157\040\156\157\162\155\141" \ +"\154\040\157\165\164\160\165\164\012\011\055\163\054\055\055\163" \ +"\150\145\154\154\075\123\110\105\114\114\011\011\123\145\164\040" \ +"\163\150\145\154\154\040\161\165\157\164\151\156\147\040\143\157" \ +"\156\166\145\156\164\151\157\156\163\012\011\055\124\054\055\055" \ +"\164\145\163\164\011\011\011\126\145\162\163\151\157\156\040\164" \ +"\145\163\164\040\050\145\170\151\164\163\040\167\151\164\150\040" \ +"\064\051\012\011\055\165\054\055\055\165\156\161\165\157\164\145" \ +"\144\011\011\011\104\157\156\047\164\040\161\165\157\164\145\040" \ +"\157\165\164\160\165\164\000\133\055\110\150\156\154\114\157\161" \ +"\166\163\162\151\167\106\105\135\040\133\055\155\040\116\135\040" \ +"\133\055\101\057\102\057\103\040\116\135\040\120\101\124\124\105" \ +"\122\116\057\055\145\040\120\101\124\124\105\122\116\056\056\056" \ +"\057\055\146\040\106\111\114\105\040\133\106\111\114\105\135\056" \ +"\056\056\012\012\123\145\141\162\143\150\040\146\157\162\040\120" \ +"\101\124\124\105\122\116\040\151\156\040\106\111\114\105\163\040" \ +"\050\157\162\040\163\164\144\151\156\051\012\012\011\055\110\011" \ +"\101\144\144\040\047\146\151\154\145\156\141\155\145\072\047\040" \ +"\160\162\145\146\151\170\012\011\055\150\011\104\157\040\156\157" \ +"\164\040\141\144\144\040\047\146\151\154\145\156\141\155\145\072" \ +"\047\040\160\162\145\146\151\170\012\011\055\156\011\101\144\144" \ +"\040\047\154\151\156\145\137\156\157\072\047\040\160\162\145\146" \ +"\151\170\012\011\055\154\011\123\150\157\167\040\157\156\154\171" \ +"\040\156\141\155\145\163\040\157\146\040\146\151\154\145\163\040" \ +"\164\150\141\164\040\155\141\164\143\150\012\011\055\114\011\123" \ +"\150\157\167\040\157\156\154\171\040\156\141\155\145\163\040\157" \ +"\146\040\146\151\154\145\163\040\164\150\141\164\040\144\157\156" \ +"\047\164\040\155\141\164\143\150\012\011\055\143\011\123\150\157" \ +"\167\040\157\156\154\171\040\143\157\165\156\164\040\157\146\040" \ +"\155\141\164\143\150\151\156\147\040\154\151\156\145\163\012\011" \ +"\055\157\011\123\150\157\167\040\157\156\154\171\040\164\150\145" \ +"\040\155\141\164\143\150\151\156\147\040\160\141\162\164\040\157" \ +"\146\040\154\151\156\145\012\011\055\161\011\121\165\151\145\164" \ +"\056\040\122\145\164\165\162\156\040\060\040\151\146\040\120\101" \ +"\124\124\105\122\116\040\151\163\040\146\157\165\156\144\054\040" \ +"\061\040\157\164\150\145\162\167\151\163\145\012\011\055\166\011" \ +"\123\145\154\145\143\164\040\156\157\156\055\155\141\164\143\150" \ +"\151\156\147\040\154\151\156\145\163\012\011\055\163\011\123\165" \ +"\160\160\162\145\163\163\040\157\160\145\156\040\141\156\144\040" \ +"\162\145\141\144\040\145\162\162\157\162\163\012\011\055\162\011" \ +"\122\145\143\165\162\163\145\012\011\055\151\011\111\147\156\157" \ +"\162\145\040\143\141\163\145\012\011\055\167\011\115\141\164\143" \ +"\150\040\167\150\157\154\145\040\167\157\162\144\163\040\157\156" \ +"\154\171\012\011\055\170\011\115\141\164\143\150\040\167\150\157" \ +"\154\145\040\154\151\156\145\163\040\157\156\154\171\012\011\055" \ +"\106\011\120\101\124\124\105\122\116\040\151\163\040\141\040\154" \ +"\151\164\145\162\141\154\040\050\156\157\164\040\162\145\147\145" \ +"\170\160\051\012\011\055\105\011\120\101\124\124\105\122\116\040" \ +"\151\163\040\141\156\040\145\170\164\145\156\144\145\144\040\162" \ +"\145\147\145\170\160\012\011\055\155\040\116\011\115\141\164\143" \ +"\150\040\165\160\040\164\157\040\116\040\164\151\155\145\163\040" \ +"\160\145\162\040\146\151\154\145\012\011\055\101\040\116\011\120" \ +"\162\151\156\164\040\116\040\154\151\156\145\163\040\157\146\040" \ +"\164\162\141\151\154\151\156\147\040\143\157\156\164\145\170\164" \ +"\012\011\055\102\040\116\011\120\162\151\156\164\040\116\040\154" \ +"\151\156\145\163\040\157\146\040\154\145\141\144\151\156\147\040" \ +"\143\157\156\164\145\170\164\012\011\055\103\040\116\011\123\141" \ +"\155\145\040\141\163\040\047\055\101\040\116\040\055\102\040\116" \ +"\047\012\011\055\145\040\120\124\122\116\011\120\141\164\164\145" \ +"\162\156\040\164\157\040\155\141\164\143\150\012\011\055\146\040" \ +"\106\111\114\105\011\122\145\141\144\040\160\141\164\164\145\162" \ +"\156\040\146\162\157\155\040\146\151\154\145\000\133\125\123\105" \ +"\122\135\012\012\120\162\151\156\164\040\164\150\145\040\147\162" \ +"\157\165\160\040\155\145\155\142\145\162\163\150\151\160\163\040" \ +"\157\146\040\125\123\105\122\040\157\162\040\146\157\162\040\164" \ +"\150\145\040\143\165\162\162\145\156\164\040\160\162\157\143\145" \ +"\163\163\000\133\055\143\146\164\135\040\133\106\111\114\105\135" \ +"\056\056\056\012\012\104\145\143\157\155\160\162\145\163\163\040" \ +"\106\111\114\105\163\040\050\157\162\040\163\164\144\151\156\051" \ +"\012\012\011\055\143\011\127\162\151\164\145\040\164\157\040\163" \ +"\164\144\157\165\164\012\011\055\146\011\106\157\162\143\145\012" \ +"\011\055\164\011\124\145\163\164\040\146\151\154\145\040\151\156" \ +"\164\145\147\162\151\164\171\000\133\055\143\146\144\135\040\133" \ +"\106\111\114\105\135\056\056\056\012\012\103\157\155\160\162\145" \ +"\163\163\040\106\111\114\105\163\040\050\157\162\040\163\164\144" \ +"\151\156\051\012\012\011\055\144\011\104\145\143\157\155\160\162" \ +"\145\163\163\012\011\055\143\011\127\162\151\164\145\040\164\157" \ +"\040\163\164\144\157\165\164\012\011\055\146\011\106\157\162\143" \ +"\145\000\133\117\120\124\111\117\116\123\135\040\133\106\111\114" \ +"\105\135\056\056\056\012\012\120\162\151\156\164\040\146\151\162" \ +"\163\164\040\061\060\040\154\151\156\145\163\040\157\146\040\145" \ +"\141\143\150\040\106\111\114\105\040\050\157\162\040\163\164\144" \ +"\151\156\051\040\164\157\040\163\164\144\157\165\164\056\012\127" \ +"\151\164\150\040\155\157\162\145\040\164\150\141\156\040\157\156" \ +"\145\040\106\111\114\105\054\040\160\162\145\143\145\144\145\040" \ +"\145\141\143\150\040\167\151\164\150\040\141\040\146\151\154\145" \ +"\156\141\155\145\040\150\145\141\144\145\162\056\012\012\011\055" \ +"\156\040\116\133\153\142\155\135\011\120\162\151\156\164\040\146" \ +"\151\162\163\164\040\116\040\154\151\156\145\163\012\012\116\040" \ +"\155\141\171\040\142\145\040\163\165\146\146\151\170\145\144\040" \ +"\142\171\040\153\040\050\170\061\060\062\064\051\054\040\142\040" \ +"\050\170\065\061\062\051\054\040\157\162\040\155\040\050\170\061" \ +"\060\062\064\136\062\051\056\000\133\055\142\143\103\144\145\146" \ +"\156\157\163\166\170\135\040\133\106\111\114\105\135\056\056\056" \ +"\012\012\104\151\163\160\154\141\171\040\106\111\114\105\163\040" \ +"\050\157\162\040\163\164\144\151\156\051\040\151\156\040\141\040" \ +"\165\163\145\162\040\163\160\145\143\151\146\151\145\144\040\146" \ +"\157\162\155\141\164\012\012\011\055\142\011\011\117\156\145\055" \ +"\142\171\164\145\040\157\143\164\141\154\040\144\151\163\160\154" \ +"\141\171\012\011\055\143\011\011\117\156\145\055\142\171\164\145" \ +"\040\143\150\141\162\141\143\164\145\162\040\144\151\163\160\154" \ +"\141\171\012\011\055\103\011\011\103\141\156\157\156\151\143\141" \ +"\154\040\150\145\170\053\101\123\103\111\111\054\040\061\066\040" \ +"\142\171\164\145\163\040\160\145\162\040\154\151\156\145\012\011" \ +"\055\144\011\011\124\167\157\055\142\171\164\145\040\144\145\143" \ +"\151\155\141\154\040\144\151\163\160\154\141\171\012\011\055\145" \ +"\040\106\117\122\115\101\124\137\123\124\122\111\116\107\012\011" \ +"\055\146\040\106\117\122\115\101\124\137\106\111\114\105\012\011" \ +"\055\156\040\114\105\116\107\124\110\011\111\156\164\145\162\160" \ +"\162\145\164\040\157\156\154\171\040\114\105\116\107\124\110\040" \ +"\142\171\164\145\163\040\157\146\040\151\156\160\165\164\012\011" \ +"\055\157\011\011\124\167\157\055\142\171\164\145\040\157\143\164" \ +"\141\154\040\144\151\163\160\154\141\171\012\011\055\163\040\117" \ +"\106\106\123\105\124\011\123\153\151\160\040\117\106\106\123\105" \ +"\124\040\142\171\164\145\163\012\011\055\166\011\011\104\151\163" \ +"\160\154\141\171\040\141\154\154\040\151\156\160\165\164\040\144" \ +"\141\164\141\012\011\055\170\011\011\124\167\157\055\142\171\164" \ +"\145\040\150\145\170\141\144\145\143\151\155\141\154\040\144\151" \ +"\163\160\154\141\171\000\133\117\120\124\111\117\116\123\135\040" \ +"\133\125\123\105\122\135\012\012\120\162\151\156\164\040\151\156" \ +"\146\157\162\155\141\164\151\157\156\040\141\142\157\165\164\040" \ +"\125\123\105\122\040\157\162\040\164\150\145\040\143\165\162\162" \ +"\145\156\164\040\165\163\145\162\012\012\011\055\165\011\125\163" \ +"\145\162\040\111\104\012\011\055\147\011\107\162\157\165\160\040" \ +"\111\104\012\011\055\107\011\123\165\160\160\154\145\155\145\156" \ +"\164\141\162\171\040\147\162\157\165\160\040\111\104\163\012\011" \ +"\055\156\011\120\162\151\156\164\040\156\141\155\145\163\040\151" \ +"\156\163\164\145\141\144\040\157\146\040\156\165\155\142\145\162" \ +"\163\012\011\055\162\011\120\162\151\156\164\040\162\145\141\154" \ +"\040\111\104\040\151\156\163\164\145\141\144\040\157\146\040\145" \ +"\146\146\145\143\164\151\166\145\040\111\104\000\133\055\161\146" \ +"\167\162\163\166\135\040\115\117\104\125\114\105\040\133\163\171" \ +"\155\142\157\154\075\166\141\154\165\145\135\056\056\056\012\012" \ +"\011\055\162\011\122\145\155\157\166\145\040\115\117\104\125\114" \ +"\105\040\050\163\164\141\143\153\163\051\040\157\162\040\144\157" \ +"\040\141\165\164\157\143\154\145\141\156\012\011\055\161\011\121" \ +"\165\151\145\164\012\011\055\166\011\126\145\162\142\157\163\145" \ +"\012\011\055\146\011\106\157\162\143\145\012\011\055\167\011\127" \ +"\141\151\164\040\146\157\162\040\165\156\154\157\141\144\012\011" \ +"\055\163\011\122\145\160\157\162\164\040\166\151\141\040\163\171" \ +"\163\154\157\147\040\151\156\163\164\145\141\144\040\157\146\040" \ +"\163\164\144\145\162\162\000\133\055\143\144\104\163\160\135\040" \ +"\133\055\157\040\125\123\105\122\135\040\133\055\147\040\107\122" \ +"\120\135\040\133\055\155\040\115\117\104\105\135\040\133\123\117" \ +"\125\122\103\105\135\056\056\056\040\104\105\123\124\012\012\103" \ +"\157\160\171\040\146\151\154\145\163\040\141\156\144\040\163\145" \ +"\164\040\141\164\164\162\151\142\165\164\145\163\012\012\011\055" \ +"\143\011\112\165\163\164\040\143\157\160\171\040\050\144\145\146" \ +"\141\165\154\164\051\012\011\055\144\011\103\162\145\141\164\145" \ +"\040\144\151\162\145\143\164\157\162\151\145\163\012\011\055\104" \ +"\011\103\162\145\141\164\145\040\154\145\141\144\151\156\147\040" \ +"\164\141\162\147\145\164\040\144\151\162\145\143\164\157\162\151" \ +"\145\163\012\011\055\163\011\123\164\162\151\160\040\163\171\155" \ +"\142\157\154\040\164\141\142\154\145\012\011\055\160\011\120\162" \ +"\145\163\145\162\166\145\040\144\141\164\145\012\011\055\157\040" \ +"\125\123\105\122\011\123\145\164\040\157\167\156\145\162\163\150" \ +"\151\160\012\011\055\147\040\107\122\120\011\123\145\164\040\147" \ +"\162\157\165\160\040\157\167\156\145\162\163\150\151\160\012\011" \ +"\055\155\040\115\117\104\105\011\123\145\164\040\160\145\162\155" \ +"\151\163\163\151\157\156\163\000\133\055\154\135\040\133\055\123" \ +"\111\107\135\040\120\111\104\056\056\056\012\012\123\145\156\144" \ +"\040\141\040\163\151\147\156\141\154\040\050\144\145\146\141\165" \ +"\154\164\072\040\124\105\122\115\051\040\164\157\040\147\151\166" \ +"\145\156\040\120\111\104\163\012\012\011\055\154\011\114\151\163" \ +"\164\040\141\154\154\040\163\151\147\156\141\154\040\156\141\155" \ +"\145\163\040\141\156\144\040\156\165\155\142\145\162\163\000\133" \ +"\055\154\135\040\133\055\161\135\040\133\055\123\111\107\135\040" \ +"\120\122\117\103\105\123\123\137\116\101\115\105\056\056\056\012" \ +"\012\123\145\156\144\040\141\040\163\151\147\156\141\154\040\050" \ +"\144\145\146\141\165\154\164\072\040\124\105\122\115\051\040\164" \ +"\157\040\147\151\166\145\156\040\160\162\157\143\145\163\163\145" \ +"\163\012\012\011\055\154\011\114\151\163\164\040\141\154\154\040" \ +"\163\151\147\156\141\154\040\156\141\155\145\163\040\141\156\144" \ +"\040\156\165\155\142\145\162\163\012\011\055\161\011\104\157\156" \ +"\047\164\040\143\157\155\160\154\141\151\156\040\151\146\040\156" \ +"\157\040\160\162\157\143\145\163\163\145\163\040\167\145\162\145" \ +"\040\153\151\154\154\145\144\000\133\055\154\135\040\133\055\123" \ +"\111\107\135\040\133\055\157\040\120\111\104\135\056\056\056\012" \ +"\012\123\145\156\144\040\141\040\163\151\147\156\141\154\040\050" \ +"\144\145\146\141\165\154\164\072\040\124\105\122\115\051\040\164" \ +"\157\040\141\154\154\040\160\162\157\143\145\163\163\145\163\040" \ +"\157\165\164\163\151\144\145\040\143\165\162\162\145\156\164\040" \ +"\163\145\163\163\151\157\156\012\012\011\055\154\011\114\151\163" \ +"\164\040\141\154\154\040\163\151\147\156\141\154\040\156\141\155" \ +"\145\163\040\141\156\144\040\156\165\155\142\145\162\163\012\011" \ +"\055\157\040\120\111\104\011\104\157\156\047\164\040\163\151\147" \ +"\156\141\154\040\164\150\151\163\040\120\111\104\000\133\055\105" \ +"\116\150\176\111\077\135\040\133\106\111\114\105\135\056\056\056" \ +"\012\012\126\151\145\167\040\106\111\114\105\040\050\157\162\040" \ +"\163\164\144\151\156\051\040\157\156\145\040\163\143\162\145\145" \ +"\156\146\165\154\040\141\164\040\141\040\164\151\155\145\012\012" \ +"\011\055\105\011\121\165\151\164\040\157\156\143\145\040\164\150" \ +"\145\040\145\156\144\040\157\146\040\141\040\146\151\154\145\040" \ +"\151\163\040\162\145\141\143\150\145\144\012\011\055\116\011\120" \ +"\162\145\146\151\170\040\154\151\156\145\040\156\165\155\142\145" \ +"\162\040\164\157\040\145\141\143\150\040\154\151\156\145\012\011" \ +"\055\111\011\111\147\156\157\162\145\040\143\141\163\145\040\151" \ +"\156\040\141\154\154\040\163\145\141\162\143\150\145\163\012\011" \ +"\055\176\011\123\165\160\160\162\145\163\163\040\176\163\040\144" \ +"\151\163\160\154\141\171\145\144\040\160\141\163\164\040\105\117" \ +"\106\000\133\117\120\124\111\117\116\123\135\040\124\101\122\107" \ +"\105\124\056\056\056\040\114\111\116\113\174\104\111\122\012\012" \ +"\103\162\145\141\164\145\040\141\040\154\151\156\153\040\114\111" \ +"\116\113\040\157\162\040\104\111\122\057\124\101\122\107\105\124" \ +"\040\164\157\040\164\150\145\040\163\160\145\143\151\146\151\145" \ +"\144\040\124\101\122\107\105\124\050\163\051\012\012\011\055\163" \ +"\011\115\141\153\145\040\163\171\155\154\151\156\153\163\040\151" \ +"\156\163\164\145\141\144\040\157\146\040\150\141\162\144\154\151" \ +"\156\153\163\012\011\055\146\011\122\145\155\157\166\145\040\145" \ +"\170\151\163\164\151\156\147\040\144\145\163\164\151\156\141\164" \ +"\151\157\156\163\012\011\055\156\011\104\157\156\047\164\040\144" \ +"\145\162\145\146\145\162\145\156\143\145\040\163\171\155\154\151" \ +"\156\153\163\040\055\040\164\162\145\141\164\040\154\151\153\145" \ +"\040\156\157\162\155\141\154\040\146\151\154\145\012\011\055\142" \ +"\011\115\141\153\145\040\141\040\142\141\143\153\165\160\040\157" \ +"\146\040\164\150\145\040\164\141\162\147\145\164\040\050\151\146" \ +"\040\145\170\151\163\164\163\051\040\142\145\146\157\162\145\040" \ +"\154\151\156\153\040\157\160\145\162\141\164\151\157\156\012\011" \ +"\055\123\040\163\165\146\011\125\163\145\040\163\165\146\146\151" \ +"\170\040\151\156\163\164\145\141\144\040\157\146\040\176\040\167" \ +"\150\145\156\040\155\141\153\151\156\147\040\142\141\143\153\165" \ +"\160\040\146\151\154\145\163\012\011\055\124\011\062\156\144\040" \ +"\141\162\147\040\155\165\163\164\040\142\145\040\141\040\104\111" \ +"\122\012\011\055\166\011\126\145\162\142\157\163\145\000\133\055" \ +"\162\135\040\133\055\157\040\117\106\123\135\040\173\055\146\174" \ +"\114\117\117\120\104\105\126\175\040\106\111\114\105\040\055\040" \ +"\141\163\163\157\143\151\141\164\145\040\154\157\157\160\040\144" \ +"\145\166\151\143\145\163\012\011\154\157\163\145\164\165\160\040" \ +"\055\144\040\114\117\117\120\104\105\126\040\055\040\144\151\163" \ +"\141\163\163\157\143\151\141\164\145\012\011\154\157\163\145\164" \ +"\165\160\040\055\141\040\055\040\163\150\157\167\040\163\164\141" \ +"\164\165\163\012\011\154\157\163\145\164\165\160\040\055\146\040" \ +"\055\040\163\150\157\167\040\156\145\170\164\040\146\162\145\145" \ +"\040\154\157\157\160\040\144\145\166\151\143\145\012\012\011\055" \ +"\157\040\117\106\123\011\123\164\141\162\164\040\117\106\123\040" \ +"\142\171\164\145\163\040\151\156\164\157\040\106\111\114\105\012" \ +"\011\055\162\011\122\145\141\144\055\157\156\154\171\012\011\055" \ +"\146\011\123\150\157\167\057\165\163\145\040\156\145\170\164\040" \ +"\146\162\145\145\040\154\157\157\160\040\144\145\166\151\143\145" \ +"\000\133\055\061\101\141\103\170\144\114\110\122\106\160\154\151" \ +"\156\163\145\150\162\123\130\166\143\164\165\135\040\133\055\167" \ +"\040\127\111\104\124\110\135\040\133\106\111\114\105\135\056\056" \ +"\056\012\012\114\151\163\164\040\144\151\162\145\143\164\157\162" \ +"\171\040\143\157\156\164\145\156\164\163\012\012\011\055\061\011" \ +"\117\156\145\040\143\157\154\165\155\156\040\157\165\164\160\165" \ +"\164\012\011\055\141\011\111\156\143\154\165\144\145\040\145\156" \ +"\164\162\151\145\163\040\167\150\151\143\150\040\163\164\141\162" \ +"\164\040\167\151\164\150\040\056\012\011\055\101\011\114\151\153" \ +"\145\040\055\141\054\040\142\165\164\040\145\170\143\154\165\144" \ +"\145\040\056\040\141\156\144\040\056\056\012\011\055\103\011\114" \ +"\151\163\164\040\142\171\040\143\157\154\165\155\156\163\012\011" \ +"\055\170\011\114\151\163\164\040\142\171\040\154\151\156\145\163" \ +"\012\011\055\144\011\114\151\163\164\040\144\151\162\145\143\164" \ +"\157\162\171\040\145\156\164\162\151\145\163\040\151\156\163\164" \ +"\145\141\144\040\157\146\040\143\157\156\164\145\156\164\163\012" \ +"\011\055\114\011\106\157\154\154\157\167\040\163\171\155\154\151" \ +"\156\153\163\012\011\055\110\011\106\157\154\154\157\167\040\163" \ +"\171\155\154\151\156\153\163\040\157\156\040\143\157\155\155\141" \ +"\156\144\040\154\151\156\145\012\011\055\122\011\122\145\143\165" \ +"\162\163\145\012\011\055\160\011\101\160\160\145\156\144\040\057" \ +"\040\164\157\040\144\151\162\040\145\156\164\162\151\145\163\012" \ +"\011\055\106\011\101\160\160\145\156\144\040\151\156\144\151\143" \ +"\141\164\157\162\040\050\157\156\145\040\157\146\040\052\057\075" \ +"\100\174\051\040\164\157\040\145\156\164\162\151\145\163\012\011" \ +"\055\154\011\114\157\156\147\040\154\151\163\164\151\156\147\040" \ +"\146\157\162\155\141\164\012\011\055\151\011\114\151\163\164\040" \ +"\151\156\157\144\145\040\156\165\155\142\145\162\163\012\011\055" \ +"\156\011\114\151\163\164\040\156\165\155\145\162\151\143\040\125" \ +"\111\104\163\040\141\156\144\040\107\111\104\163\040\151\156\163" \ +"\164\145\141\144\040\157\146\040\156\141\155\145\163\012\011\055" \ +"\163\011\114\151\163\164\040\141\154\154\157\143\141\164\145\144" \ +"\040\142\154\157\143\153\163\012\011\055\145\011\114\151\163\164" \ +"\040\146\165\154\154\040\144\141\164\145\040\141\156\144\040\164" \ +"\151\155\145\012\011\055\150\011\114\151\163\164\040\163\151\172" \ +"\145\163\040\151\156\040\150\165\155\141\156\040\162\145\141\144" \ +"\141\142\154\145\040\146\157\162\155\141\164\040\050\061\113\040" \ +"\062\064\063\115\040\062\107\051\012\011\055\162\011\123\157\162" \ +"\164\040\151\156\040\162\145\166\145\162\163\145\040\157\162\144" \ +"\145\162\012\011\055\123\011\123\157\162\164\040\142\171\040\163" \ +"\151\172\145\012\011\055\130\011\123\157\162\164\040\142\171\040" \ +"\145\170\164\145\156\163\151\157\156\012\011\055\166\011\123\157" \ +"\162\164\040\142\171\040\166\145\162\163\151\157\156\012\011\055" \ +"\143\011\127\151\164\150\040\055\154\072\040\163\157\162\164\040" \ +"\142\171\040\143\164\151\155\145\012\011\055\164\011\127\151\164" \ +"\150\040\055\154\072\040\163\157\162\164\040\142\171\040\155\164" \ +"\151\155\145\012\011\055\165\011\127\151\164\150\040\055\154\072" \ +"\040\163\157\162\164\040\142\171\040\141\164\151\155\145\012\011" \ +"\055\167\040\116\011\101\163\163\165\155\145\040\164\150\145\040" \ +"\164\145\162\155\151\156\141\154\040\151\163\040\116\040\143\157" \ +"\154\165\155\156\163\040\167\151\144\145\012\011\055\055\143\157" \ +"\154\157\162\133\075\173\141\154\167\141\171\163\054\156\145\166" \ +"\145\162\054\141\165\164\157\175\135\011\103\157\156\164\162\157" \ +"\154\040\143\157\154\157\162\151\156\147\000\133\055\122\141\144" \ +"\154\166\135\040\133\106\111\114\105\135\056\056\056\012\012\114" \ +"\151\163\164\040\146\151\154\145\040\141\164\164\162\151\142\165" \ +"\164\145\163\040\157\156\040\141\156\040\145\170\164\062\040\146" \ +"\163\012\012\011\055\122\011\122\145\143\165\162\163\145\012\011" \ +"\055\141\011\104\157\156\047\164\040\150\151\144\145\040\145\156" \ +"\164\162\151\145\163\040\163\164\141\162\164\151\156\147\040\167" \ +"\151\164\150\040\056\012\011\055\144\011\114\151\163\164\040\144" \ +"\151\162\145\143\164\157\162\171\040\145\156\164\162\151\145\163" \ +"\040\151\156\163\164\145\141\144\040\157\146\040\143\157\156\164" \ +"\145\156\164\163\012\011\055\154\011\114\151\163\164\040\154\157" \ +"\156\147\040\146\154\141\147\040\156\141\155\145\163\012\011\055" \ +"\166\011\114\151\163\164\040\164\150\145\040\146\151\154\145\047" \ +"\163\040\166\145\162\163\151\157\156\057\147\145\156\145\162\141" \ +"\164\151\157\156\040\156\165\155\142\145\162\000\133\055\161\146" \ +"\167\162\163\166\135\040\115\117\104\125\114\105\040\133\163\171" \ +"\155\142\157\154\075\166\141\154\165\145\135\056\056\056\012\012" \ +"\011\055\162\011\122\145\155\157\166\145\040\115\117\104\125\114" \ +"\105\040\050\163\164\141\143\153\163\051\040\157\162\040\144\157" \ +"\040\141\165\164\157\143\154\145\141\156\012\011\055\161\011\121" \ +"\165\151\145\164\012\011\055\166\011\126\145\162\142\157\163\145" \ +"\012\011\055\146\011\106\157\162\143\145\012\011\055\167\011\127" \ +"\141\151\164\040\146\157\162\040\165\156\154\157\141\144\012\011" \ +"\055\163\011\122\145\160\157\162\164\040\166\151\141\040\163\171" \ +"\163\154\157\147\040\151\156\163\164\145\141\144\040\157\146\040" \ +"\163\164\144\145\162\162\000\012\012\123\150\157\167\040\141\154" \ +"\154\040\157\160\145\156\040\146\151\154\145\163\000\133\055\155" \ +"\153\135\012\012\114\151\163\164\040\141\154\154\040\120\103\111" \ +"\040\144\145\166\151\143\145\163\012\012\011\055\155\011\120\141" \ +"\162\163\141\142\154\145\040\157\165\164\160\165\164\012\011\055" \ +"\153\011\123\150\157\167\040\144\162\151\166\145\162\000\010\000" \ +"\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157\155" \ +"\160\162\145\163\163\040\164\157\040\163\164\144\157\165\164\000" \ +"\133\055\143\146\166\144\061\062\063\064\065\066\067\070\071\103" \ +"\106\135\040\133\106\111\114\105\135\056\056\056\012\012\011\055" \ +"\061\056\056\071\011\103\157\155\160\162\145\163\163\151\157\156" \ +"\040\154\145\166\145\154\012\011\055\144\011\104\145\143\157\155" \ +"\160\162\145\163\163\012\011\055\143\011\127\162\151\164\145\040" \ +"\164\157\040\163\164\144\157\165\164\012\011\055\146\011\106\157" \ +"\162\143\145\012\011\055\166\011\126\145\162\142\157\163\145\012" \ +"\011\055\106\011\104\157\156\047\164\040\163\164\157\162\145\040" \ +"\157\162\040\166\145\162\151\146\171\040\143\150\145\143\153\163" \ +"\165\155\012\011\055\103\011\101\154\163\157\040\167\162\151\164" \ +"\145\040\143\150\145\143\153\163\165\155\040\157\146\040\143\157" \ +"\155\160\162\145\163\163\145\144\040\142\154\157\143\153\000\133" \ +"\055\166\103\106\135\040\133\106\111\114\105\135\056\056\056\012" \ +"\012\011\055\166\011\126\145\162\142\157\163\145\012\011\055\106" \ +"\011\104\157\156\047\164\040\163\164\157\162\145\040\157\162\040" \ +"\166\145\162\151\146\171\040\143\150\145\143\153\163\165\155\000" \ +"\133\055\144\040\144\145\166\151\143\145\137\164\141\142\154\145" \ +"\135\040\162\157\157\164\144\151\162\012\012\103\162\145\141\164" \ +"\145\040\141\040\162\141\156\147\145\040\157\146\040\163\160\145" \ +"\143\151\141\154\040\146\151\154\145\163\040\141\163\040\163\160" \ +"\145\143\151\146\151\145\144\040\151\156\040\141\040\144\145\166" \ +"\151\143\145\040\164\141\142\154\145\056\012\104\145\166\151\143" \ +"\145\040\164\141\142\154\145\040\145\156\164\162\151\145\163\040" \ +"\164\141\153\145\040\164\150\145\040\146\157\162\155\040\157\146" \ +"\072\012\074\156\141\155\145\076\040\074\164\171\160\145\076\040" \ +"\074\155\157\144\145\076\040\074\165\151\144\076\040\074\147\151" \ +"\144\076\040\074\155\141\152\157\162\076\040\074\155\151\156\157" \ +"\162\076\040\074\163\164\141\162\164\076\040\074\151\156\143\076" \ +"\040\074\143\157\165\156\164\076\012\127\150\145\162\145\040\156" \ +"\141\155\145\040\151\163\040\164\150\145\040\146\151\154\145\040" \ +"\156\141\155\145\054\040\164\171\160\145\040\143\141\156\040\142" \ +"\145\040\157\156\145\040\157\146\072\012\011\146\011\122\145\147" \ +"\165\154\141\162\040\146\151\154\145\012\011\144\011\104\151\162" \ +"\145\143\164\157\162\171\012\011\143\011\103\150\141\162\141\143" \ +"\164\145\162\040\144\145\166\151\143\145\012\011\142\011\102\154" \ +"\157\143\153\040\144\145\166\151\143\145\012\011\160\011\106\151" \ +"\146\157\040\050\156\141\155\145\144\040\160\151\160\145\051\012" \ +"\165\151\144\040\151\163\040\164\150\145\040\165\163\145\162\040" \ +"\151\144\040\146\157\162\040\164\150\145\040\164\141\162\147\145" \ +"\164\040\146\151\154\145\054\040\147\151\144\040\151\163\040\164" \ +"\150\145\040\147\162\157\165\160\040\151\144\040\146\157\162\040" \ +"\164\150\145\012\164\141\162\147\145\164\040\146\151\154\145\056" \ +"\040\124\150\145\040\162\145\163\164\040\157\146\040\164\150\145" \ +"\040\145\156\164\162\151\145\163\040\050\155\141\152\157\162\054" \ +"\040\155\151\156\157\162\054\040\145\164\143\051\040\141\160\160" \ +"\154\171\040\164\157\012\164\157\040\144\145\166\151\143\145\040" \ +"\163\160\145\143\151\141\154\040\146\151\154\145\163\056\040\101" \ +"\040\047\055\047\040\155\141\171\040\142\145\040\165\163\145\144" \ +"\040\146\157\162\040\142\154\141\156\153\040\145\156\164\162\151" \ +"\145\163\056\000\133\055\143\133\163\167\135\135\040\133\106\111" \ +"\114\105\135\056\056\056\012\012\120\162\151\156\164\040\157\162" \ +"\040\143\150\145\143\153\040\115\104\065\040\143\150\145\143\153" \ +"\163\165\155\163\012\012\011\055\143\011\103\150\145\143\153\040" \ +"\163\165\155\163\040\141\147\141\151\156\163\164\040\154\151\163" \ +"\164\040\151\156\040\106\111\114\105\163\012\011\055\163\011\104" \ +"\157\156\047\164\040\157\165\164\160\165\164\040\141\156\171\164" \ +"\150\151\156\147\054\040\163\164\141\164\165\163\040\143\157\144" \ +"\145\040\163\150\157\167\163\040\163\165\143\143\145\163\163\012" \ +"\011\055\167\011\127\141\162\156\040\141\142\157\165\164\040\151" \ +"\155\160\162\157\160\145\162\154\171\040\146\157\162\155\141\164" \ +"\164\145\144\040\143\150\145\143\153\163\165\155\040\154\151\156" \ +"\145\163\000\133\117\120\124\111\117\116\123\135\040\104\111\122" \ +"\105\103\124\117\122\131\056\056\056\012\012\103\162\145\141\164" \ +"\145\040\104\111\122\105\103\124\117\122\131\012\012\011\055\155" \ +"\040\115\117\104\105\011\115\157\144\145\012\011\055\160\011\116" \ +"\157\040\145\162\162\157\162\040\151\146\040\145\170\151\163\164" \ +"\163\073\040\155\141\153\145\040\160\141\162\145\156\164\040\144" \ +"\151\162\145\143\164\157\162\151\145\163\040\141\163\040\156\145" \ +"\145\144\145\144\000\133\055\166\135\040\133\055\156\040\114\101" \ +"\102\105\114\135\040\102\114\117\103\113\104\105\126\040\133\113" \ +"\102\131\124\105\123\135\012\012\115\141\153\145\040\141\040\106" \ +"\101\124\063\062\040\146\151\154\145\163\171\163\164\145\155\012" \ +"\012\011\055\166\011\126\145\162\142\157\163\145\012\011\055\156" \ +"\040\114\102\114\011\126\157\154\165\155\145\040\154\141\142\145" \ +"\154\000\133\055\106\156\135\040\133\055\142\040\102\114\113\137" \ +"\123\111\132\105\135\040\133\055\151\040\111\116\117\104\105\137" \ +"\122\101\124\111\117\135\040\133\055\111\040\111\116\117\104\105" \ +"\137\123\111\132\105\135\040\133\055\155\040\122\105\123\105\122" \ +"\126\105\104\137\120\105\122\103\105\116\124\135\040\133\055\114" \ +"\040\114\101\102\105\114\135\040\102\114\117\103\113\104\105\126" \ +"\040\133\113\102\131\124\105\123\135\012\012\011\055\142\040\102" \ +"\114\113\137\123\111\132\105\011\102\154\157\143\153\040\163\151" \ +"\172\145\054\040\142\171\164\145\163\012\011\055\106\011\011\106" \ +"\157\162\143\145\012\011\055\151\040\122\101\124\111\117\011\115" \ +"\141\170\040\156\165\155\142\145\162\040\157\146\040\146\151\154" \ +"\145\163\040\151\163\040\146\151\154\145\163\171\163\164\145\155" \ +"\137\163\151\172\145\040\057\040\122\101\124\111\117\012\011\055" \ +"\111\040\102\131\124\105\123\011\111\156\157\144\145\040\163\151" \ +"\172\145\040\050\155\151\156\040\061\062\070\051\012\011\055\114" \ +"\040\114\102\114\011\011\126\157\154\165\155\145\040\154\141\142" \ +"\145\154\012\011\055\155\040\120\105\122\103\105\116\124\011\120" \ +"\145\162\143\145\156\164\040\157\146\040\142\154\157\143\153\163" \ +"\040\164\157\040\162\145\163\145\162\166\145\040\146\157\162\040" \ +"\141\144\155\151\156\012\011\055\156\011\011\104\162\171\040\162" \ +"\165\156\000\133\055\155\040\115\117\104\105\135\040\116\101\115" \ +"\105\012\012\103\162\145\141\164\145\040\156\141\155\145\144\040" \ +"\160\151\160\145\012\012\011\055\155\040\115\117\104\105\011\115" \ +"\157\144\145\040\050\144\145\146\141\165\154\164\040\141\075\162" \ +"\167\051\000\133\055\106\156\135\040\133\055\142\040\102\114\113" \ +"\137\123\111\132\105\135\040\133\055\151\040\111\116\117\104\105" \ +"\137\122\101\124\111\117\135\040\133\055\111\040\111\116\117\104" \ +"\105\137\123\111\132\105\135\040\133\055\155\040\122\105\123\105" \ +"\122\126\105\104\137\120\105\122\103\105\116\124\135\040\133\055" \ +"\114\040\114\101\102\105\114\135\040\102\114\117\103\113\104\105" \ +"\126\040\133\113\102\131\124\105\123\135\012\012\011\055\142\040" \ +"\102\114\113\137\123\111\132\105\011\102\154\157\143\153\040\163" \ +"\151\172\145\054\040\142\171\164\145\163\012\011\055\106\011\011" \ +"\106\157\162\143\145\012\011\055\151\040\122\101\124\111\117\011" \ +"\115\141\170\040\156\165\155\142\145\162\040\157\146\040\146\151" \ +"\154\145\163\040\151\163\040\146\151\154\145\163\171\163\164\145" \ +"\155\137\163\151\172\145\040\057\040\122\101\124\111\117\012\011" \ +"\055\111\040\102\131\124\105\123\011\111\156\157\144\145\040\163" \ +"\151\172\145\040\050\155\151\156\040\061\062\070\051\012\011\055" \ +"\114\040\114\102\114\011\011\126\157\154\165\155\145\040\154\141" \ +"\142\145\154\012\011\055\155\040\120\105\122\103\105\116\124\011" \ +"\120\145\162\143\145\156\164\040\157\146\040\142\154\157\143\153" \ +"\163\040\164\157\040\162\145\163\145\162\166\145\040\146\157\162" \ +"\040\141\144\155\151\156\012\011\055\156\011\011\104\162\171\040" \ +"\162\165\156\000\133\055\166\135\040\133\055\156\040\114\101\102" \ +"\105\114\135\040\102\114\117\103\113\104\105\126\040\133\113\102" \ +"\131\124\105\123\135\012\012\115\141\153\145\040\141\040\106\101" \ +"\124\063\062\040\146\151\154\145\163\171\163\164\145\155\012\012" \ +"\011\055\166\011\126\145\162\142\157\163\145\012\011\055\156\040" \ +"\114\102\114\011\126\157\154\165\155\145\040\154\141\142\145\154" \ +"\000\133\055\155\040\115\117\104\105\135\040\116\101\115\105\040" \ +"\124\131\120\105\040\115\101\112\117\122\040\115\111\116\117\122" \ +"\012\012\103\162\145\141\164\145\040\141\040\163\160\145\143\151" \ +"\141\154\040\146\151\154\145\040\050\142\154\157\143\153\054\040" \ +"\143\150\141\162\141\143\164\145\162\054\040\157\162\040\160\151" \ +"\160\145\051\012\012\011\055\155\040\115\117\104\105\011\103\162" \ +"\145\141\164\151\157\156\040\155\157\144\145\040\050\144\145\146" \ +"\141\165\154\164\040\141\075\162\167\051\012\124\131\120\105\072" \ +"\012\011\142\011\102\154\157\143\153\040\144\145\166\151\143\145" \ +"\012\011\143\040\157\162\040\165\011\103\150\141\162\141\143\164" \ +"\145\162\040\144\145\166\151\143\145\012\011\160\011\116\141\155" \ +"\145\144\040\160\151\160\145\040\050\115\101\112\117\122\040\141" \ +"\156\144\040\115\111\116\117\122\040\141\162\145\040\151\147\156" \ +"\157\162\145\144\051\000\133\055\114\040\114\102\114\135\040\102" \ +"\114\117\103\113\104\105\126\040\133\113\102\131\124\105\123\135" \ +"\012\012\120\162\145\160\141\162\145\040\102\114\117\103\113\104" \ +"\105\126\040\164\157\040\142\145\040\165\163\145\144\040\141\163" \ +"\040\163\167\141\160\040\160\141\162\164\151\164\151\157\156\012" \ +"\012\011\055\114\040\114\102\114\011\114\141\142\145\154\000\133" \ +"\055\144\164\135\040\133\055\160\040\104\111\122\135\040\133\124" \ +"\105\115\120\114\101\124\105\135\012\012\103\162\145\141\164\145" \ +"\040\141\040\164\145\155\160\157\162\141\162\171\040\146\151\154" \ +"\145\040\167\151\164\150\040\156\141\155\145\040\142\141\163\145" \ +"\144\040\157\156\040\124\105\115\120\114\101\124\105\040\141\156" \ +"\144\040\160\162\151\156\164\040\151\164\163\040\156\141\155\145" \ +"\056\012\124\105\115\120\114\101\124\105\040\155\165\163\164\040" \ +"\145\156\144\040\167\151\164\150\040\130\130\130\130\130\130\040" \ +"\050\145\056\147\056\040\133\057\144\151\162\057\135\156\141\155" \ +"\145\130\130\130\130\130\130\051\056\012\127\151\164\150\157\165" \ +"\164\040\124\105\115\120\114\101\124\105\054\040\055\164\040\164" \ +"\155\160\056\130\130\130\130\130\130\040\151\163\040\141\163\163" \ +"\165\155\145\144\056\012\012\011\055\144\011\115\141\153\145\040" \ +"\144\151\162\145\143\164\157\162\171\054\040\156\157\164\040\146" \ +"\151\154\145\012\011\055\161\011\106\141\151\154\040\163\151\154" \ +"\145\156\164\154\171\040\157\156\040\145\162\162\157\162\163\012" \ +"\011\055\164\011\120\162\145\160\145\156\144\040\142\141\163\145" \ +"\040\144\151\162\145\143\164\157\162\171\040\156\141\155\145\040" \ +"\164\157\040\124\105\115\120\114\101\124\105\012\011\055\160\040" \ +"\104\111\122\011\125\163\145\040\104\111\122\040\141\163\040\141" \ +"\040\142\141\163\145\040\144\151\162\145\143\164\157\162\171\040" \ +"\050\151\155\160\154\151\145\163\040\055\164\051\012\011\055\165" \ +"\011\104\157\040\156\157\164\040\143\162\145\141\164\145\040\141" \ +"\156\171\164\150\151\156\147\073\040\160\162\151\156\164\040\141" \ +"\040\156\141\155\145\012\012\102\141\163\145\040\144\151\162\145" \ +"\143\164\157\162\171\040\151\163\072\040\055\160\040\104\111\122" \ +"\054\040\145\154\163\145\040\044\124\115\120\104\111\122\054\040" \ +"\145\154\163\145\040\057\144\141\164\141\057\154\157\143\141\154" \ +"\057\164\155\160\000\133\055\141\144\154\160\060\135\040\133\055" \ +"\106\040\153\145\171\167\157\162\144\135\040\115\117\104\125\114" \ +"\105\012\012\011\055\141\011\011\123\150\157\162\164\143\165\164" \ +"\040\146\157\162\040\047\055\106\040\141\165\164\150\157\162\047" \ +"\012\011\055\144\011\011\123\150\157\162\164\143\165\164\040\146" \ +"\157\162\040\047\055\106\040\144\145\163\143\162\151\160\164\151" \ +"\157\156\047\012\011\055\154\011\011\123\150\157\162\164\143\165" \ +"\164\040\146\157\162\040\047\055\106\040\154\151\143\145\156\163" \ +"\145\047\012\011\055\160\011\011\123\150\157\162\164\143\165\164" \ +"\040\146\157\162\040\047\055\106\040\160\141\162\155\047\012\011" \ +"\055\106\040\153\145\171\167\157\162\144\011\113\145\171\167\157" \ +"\162\144\040\164\157\040\154\157\157\153\040\146\157\162\012\011" \ +"\055\060\011\011\123\145\160\141\162\141\164\145\040\157\165\164" \ +"\160\165\164\040\167\151\164\150\040\116\125\114\163\000\133\055" \ +"\161\146\167\162\163\166\135\040\115\117\104\125\114\105\040\133" \ +"\163\171\155\142\157\154\075\166\141\154\165\145\135\056\056\056" \ +"\012\012\011\055\162\011\122\145\155\157\166\145\040\115\117\104" \ +"\125\114\105\040\050\163\164\141\143\153\163\051\040\157\162\040" \ +"\144\157\040\141\165\164\157\143\154\145\141\156\012\011\055\161" \ +"\011\121\165\151\145\164\012\011\055\166\011\126\145\162\142\157" \ +"\163\145\012\011\055\146\011\106\157\162\143\145\012\011\055\167" \ +"\011\127\141\151\164\040\146\157\162\040\165\156\154\157\141\144" \ +"\012\011\055\163\011\122\145\160\157\162\164\040\166\151\141\040" \ +"\163\171\163\154\157\147\040\151\156\163\164\145\141\144\040\157" \ +"\146\040\163\164\144\145\162\162\000\133\106\111\114\105\135\056" \ +"\056\056\012\012\126\151\145\167\040\106\111\114\105\040\050\157" \ +"\162\040\163\164\144\151\156\051\040\157\156\145\040\163\143\162" \ +"\145\145\156\146\165\154\040\141\164\040\141\040\164\151\155\145" \ +"\000\133\117\120\124\111\117\116\123\135\040\133\055\157\040\117" \ +"\120\124\123\135\040\104\105\126\111\103\105\040\116\117\104\105" \ +"\012\012\115\157\165\156\164\040\141\040\146\151\154\145\163\171" \ +"\163\164\145\155\056\040\106\151\154\145\163\171\163\164\145\155" \ +"\040\141\165\164\157\144\145\164\145\143\164\151\157\156\040\162" \ +"\145\161\165\151\162\145\163\040\057\160\162\157\143\056\012\012" \ +"\011\055\141\011\011\115\157\165\156\164\040\141\154\154\040\146" \ +"\151\154\145\163\171\163\164\145\155\163\040\151\156\040\146\163" \ +"\164\141\142\012\011\055\162\011\011\122\145\141\144\055\157\156" \ +"\154\171\040\155\157\165\156\164\012\011\055\167\011\011\122\145" \ +"\141\144\055\167\162\151\164\145\040\155\157\165\156\164\040\050" \ +"\144\145\146\141\165\154\164\051\012\011\055\164\040\106\123\124" \ +"\131\120\105\133\054\056\056\056\135\011\106\151\154\145\163\171" \ +"\163\164\145\155\040\164\171\160\145\050\163\051\012\011\055\117" \ +"\040\117\120\124\011\011\115\157\165\156\164\040\157\156\154\171" \ +"\040\146\151\154\145\163\171\163\164\145\155\163\040\167\151\164" \ +"\150\040\157\160\164\151\157\156\040\117\120\124\040\050\055\141" \ +"\040\157\156\154\171\051\012\055\157\040\117\120\124\072\012\011" \ +"\154\157\157\160\011\011\111\147\156\157\162\145\144\040\050\154" \ +"\157\157\160\040\144\145\166\151\143\145\163\040\141\162\145\040" \ +"\141\165\164\157\144\145\164\145\143\164\145\144\051\012\011\133" \ +"\141\135\163\171\156\143\011\011\127\162\151\164\145\163\040\141" \ +"\162\145\040\133\141\135\163\171\156\143\150\162\157\156\157\165" \ +"\163\012\011\133\156\157\135\141\164\151\155\145\011\104\151\163" \ +"\141\142\154\145\057\145\156\141\142\154\145\040\165\160\144\141" \ +"\164\145\163\040\164\157\040\151\156\157\144\145\040\141\143\143" \ +"\145\163\163\040\164\151\155\145\163\012\011\133\156\157\135\144" \ +"\151\162\141\164\151\155\145\011\104\151\163\141\142\154\145\057" \ +"\145\156\141\142\154\145\040\141\164\151\155\145\040\165\160\144" \ +"\141\164\145\163\040\164\157\040\144\151\162\145\143\164\157\162" \ +"\151\145\163\012\011\133\156\157\135\162\145\154\141\164\151\155" \ +"\145\011\104\151\163\141\142\154\145\057\145\156\141\142\154\145" \ +"\040\141\164\151\155\145\040\165\160\144\141\164\145\163\040\162" \ +"\145\154\141\164\151\166\145\040\164\157\040\155\157\144\151\146" \ +"\151\143\141\164\151\157\156\040\164\151\155\145\012\011\133\156" \ +"\157\135\144\145\166\011\011\050\104\151\163\051\141\154\154\157" \ +"\167\040\165\163\145\040\157\146\040\163\160\145\143\151\141\154" \ +"\040\144\145\166\151\143\145\040\146\151\154\145\163\012\011\133" \ +"\156\157\135\145\170\145\143\011\050\104\151\163\051\141\154\154" \ +"\157\167\040\165\163\145\040\157\146\040\145\170\145\143\165\164" \ +"\141\142\154\145\040\146\151\154\145\163\012\011\133\156\157\135" \ +"\163\165\151\144\011\050\104\151\163\051\141\154\154\157\167\040" \ +"\163\145\164\055\165\163\145\162\055\151\144\055\162\157\157\164" \ +"\040\160\162\157\147\162\141\155\163\012\011\133\162\135\163\150" \ +"\141\162\145\144\011\103\157\156\166\145\162\164\040\133\162\145" \ +"\143\165\162\163\151\166\145\154\171\135\040\164\157\040\141\040" \ +"\163\150\141\162\145\144\040\163\165\142\164\162\145\145\012\011" \ +"\133\162\135\163\154\141\166\145\011\103\157\156\166\145\162\164" \ +"\040\133\162\145\143\165\162\163\151\166\145\154\171\135\040\164" \ +"\157\040\141\040\163\154\141\166\145\040\163\165\142\164\162\145" \ +"\145\012\011\133\162\135\160\162\151\166\141\164\145\011\103\157" \ +"\156\166\145\162\164\040\133\162\145\143\165\162\163\151\166\145" \ +"\154\171\135\040\164\157\040\141\040\160\162\151\166\141\164\145" \ +"\040\163\165\142\164\162\145\145\012\011\133\165\156\135\142\151" \ +"\156\144\141\142\154\145\011\115\141\153\145\040\155\157\165\156" \ +"\164\040\160\157\151\156\164\040\133\165\156\135\141\142\154\145" \ +"\040\164\157\040\142\145\040\142\151\156\144\040\155\157\165\156" \ +"\164\145\144\012\011\133\162\135\142\151\156\144\011\011\102\151" \ +"\156\144\040\141\040\146\151\154\145\040\157\162\040\144\151\162" \ +"\145\143\164\157\162\171\040\133\162\145\143\165\162\163\151\166" \ +"\145\154\171\135\040\164\157\040\141\156\157\164\150\145\162\040" \ +"\154\157\143\141\164\151\157\156\012\011\155\157\166\145\011\011" \ +"\122\145\154\157\143\141\164\145\040\141\156\040\145\170\151\163" \ +"\164\151\156\147\040\155\157\165\156\164\040\160\157\151\156\164" \ +"\012\011\162\145\155\157\165\156\164\011\011\122\145\155\157\165" \ +"\156\164\040\141\040\155\157\165\156\164\145\144\040\146\151\154" \ +"\145\163\171\163\164\145\155\054\040\143\150\141\156\147\151\156" \ +"\147\040\146\154\141\147\163\012\011\162\157\057\162\167\011\011" \ +"\123\141\155\145\040\141\163\040\055\162\057\055\167\012\012\124" \ +"\150\145\162\145\040\141\162\145\040\146\151\154\145\163\171\163" \ +"\164\145\155\055\163\160\145\143\151\146\151\143\040\055\157\040" \ +"\146\154\141\147\163\056\000\133\055\161\135\040\074\133\055\144" \ +"\156\135\040\104\111\122\040\174\040\055\170\040\104\105\126\111" \ +"\103\105\076\012\012\103\150\145\143\153\040\151\146\040\164\150" \ +"\145\040\144\151\162\145\143\164\157\162\171\040\151\163\040\141" \ +"\040\155\157\165\156\164\160\157\151\156\164\012\012\011\055\161" \ +"\011\121\165\151\145\164\012\011\055\144\011\120\162\151\156\164" \ +"\040\155\141\152\157\162\057\155\151\156\157\162\040\144\145\166" \ +"\151\143\145\040\156\165\155\142\145\162\040\157\146\040\164\150" \ +"\145\040\146\151\154\145\163\171\163\164\145\155\012\011\055\156" \ +"\011\120\162\151\156\164\040\144\145\166\151\143\145\040\156\141" \ +"\155\145\040\157\146\040\164\150\145\040\146\151\154\145\163\171" \ +"\163\164\145\155\012\011\055\170\011\120\162\151\156\164\040\155" \ +"\141\152\157\162\057\155\151\156\157\162\040\144\145\166\151\143" \ +"\145\040\156\165\155\142\145\162\040\157\146\040\164\150\145\040" \ +"\142\154\157\143\153\144\145\166\151\143\145\000\133\055\146\151" \ +"\156\135\040\123\117\125\122\103\105\040\104\105\123\124\012\157" \ +"\162\072\040\155\166\040\133\055\146\151\156\135\040\123\117\125" \ +"\122\103\105\056\056\056\040\104\111\122\105\103\124\117\122\131" \ +"\012\012\122\145\156\141\155\145\040\123\117\125\122\103\105\040" \ +"\164\157\040\104\105\123\124\054\040\157\162\040\155\157\166\145" \ +"\040\123\117\125\122\103\105\050\163\051\040\164\157\040\104\111" \ +"\122\105\103\124\117\122\131\012\012\011\055\146\011\104\157\156" \ +"\047\164\040\160\162\157\155\160\164\040\142\145\146\157\162\145" \ +"\040\157\166\145\162\167\162\151\164\151\156\147\012\011\055\151" \ +"\011\111\156\164\145\162\141\143\164\151\166\145\054\040\160\162" \ +"\157\155\160\164\040\142\145\146\157\162\145\040\157\166\145\162" \ +"\167\162\151\164\145\012\011\055\156\011\104\157\156\047\164\040" \ +"\157\166\145\162\167\162\151\164\145\040\141\156\040\145\170\151" \ +"\163\164\151\156\147\040\146\151\154\145\000\133\055\157\135\040" \ +"\133\055\142\135\040\133\055\163\040\101\104\104\122\135\040\133" \ +"\055\154\040\114\105\116\135\040\133\055\146\040\106\111\114\105" \ +"\135\040\115\124\104\137\104\105\126\111\103\105\012\012\104\165" \ +"\155\160\040\115\124\104\137\104\105\126\111\103\105\012\012\011" \ +"\055\157\011\104\165\155\160\040\157\157\142\040\144\141\164\141" \ +"\012\011\055\142\011\117\155\151\164\040\142\141\144\040\142\154" \ +"\157\143\153\040\146\162\157\155\040\164\150\145\040\144\165\155" \ +"\160\012\011\055\163\040\101\104\104\122\011\123\164\141\162\164" \ +"\040\141\144\144\162\145\163\163\012\011\055\154\040\114\105\116" \ +"\011\114\145\156\147\164\150\012\011\055\146\040\106\111\114\105" \ +"\011\104\165\155\160\040\164\157\040\146\151\154\145\040\050\047" \ +"\055\047\040\146\157\162\040\163\164\144\157\165\164\051\000\133" \ +"\055\160\135\040\133\055\163\040\101\104\104\122\135\040\115\124" \ +"\104\137\104\105\126\111\103\105\040\133\106\111\114\105\135\012" \ +"\012\127\162\151\164\145\040\164\157\040\115\124\104\137\104\105" \ +"\126\111\103\105\012\012\011\055\160\011\120\141\144\040\164\157" \ +"\040\160\141\147\145\040\163\151\172\145\012\011\055\163\040\101" \ +"\104\104\122\011\123\164\141\162\164\040\141\144\144\162\145\163" \ +"\163\000\133\055\156\040\101\104\112\125\123\124\135\040\133\120" \ +"\122\117\107\040\101\122\107\123\135\012\012\103\150\141\156\147" \ +"\145\040\163\143\150\145\144\165\154\151\156\147\040\160\162\151" \ +"\157\162\151\164\171\054\040\162\165\156\040\120\122\117\107\012" \ +"\012\011\055\156\040\101\104\112\125\123\124\011\101\144\152\165" \ +"\163\164\040\160\162\151\157\162\151\164\171\040\142\171\040\101" \ +"\104\112\125\123\124\000\120\122\117\107\040\101\122\107\123\012" \ +"\012\122\165\156\040\120\122\117\107\040\151\155\155\165\156\145" \ +"\040\164\157\040\150\141\156\147\165\160\163\054\040\167\151\164" \ +"\150\040\157\165\164\160\165\164\040\164\157\040\141\040\156\157" \ +"\156\055\164\164\171\000\133\055\141\102\142\143\104\144\145\106" \ +"\146\110\150\111\151\114\154\117\157\166\130\170\135\040\133\106" \ +"\111\114\105\135\012\012\120\162\151\156\164\040\106\111\114\105" \ +"\040\050\157\162\040\163\164\144\151\156\051\040\165\156\141\155" \ +"\142\151\147\165\157\165\163\154\171\054\040\141\163\040\157\143" \ +"\164\141\154\040\142\171\164\145\163\040\142\171\040\144\145\146" \ +"\141\165\154\164\000\133\117\120\124\111\117\116\123\135\040\133" \ +"\117\122\111\107\106\111\114\105\040\133\120\101\124\103\110\106" \ +"\111\114\105\135\135\012\012\011\055\160\054\055\055\163\164\162" \ +"\151\160\040\116\011\011\123\164\162\151\160\040\116\040\154\145" \ +"\141\144\151\156\147\040\143\157\155\160\157\156\145\156\164\163" \ +"\040\146\162\157\155\040\146\151\154\145\040\156\141\155\145\163" \ +"\012\011\055\151\054\055\055\151\156\160\165\164\040\104\111\106" \ +"\106\011\011\122\145\141\144\040\104\111\106\106\040\151\156\163" \ +"\164\145\141\144\040\157\146\040\163\164\144\151\156\012\011\055" \ +"\122\054\055\055\162\145\166\145\162\163\145\011\011\122\145\166" \ +"\145\162\163\145\040\160\141\164\143\150\012\011\055\116\054\055" \ +"\055\146\157\162\167\141\162\144\011\011\111\147\156\157\162\145" \ +"\040\141\154\162\145\141\144\171\040\141\160\160\154\151\145\144" \ +"\040\160\141\164\143\150\145\163\012\011\055\105\054\055\055\162" \ +"\145\155\157\166\145\055\145\155\160\164\171\055\146\151\154\145" \ +"\163\011\122\145\155\157\166\145\040\157\165\164\160\165\164\040" \ +"\146\151\154\145\163\040\151\146\040\164\150\145\171\040\142\145" \ +"\143\157\155\145\040\145\155\160\164\171\000\133\055\146\154\156" \ +"\157\166\170\135\040\133\055\163\040\123\111\104\174\055\120\040" \ +"\120\120\111\104\174\120\101\124\124\105\122\116\135\012\012\104" \ +"\151\163\160\154\141\171\040\160\162\157\143\145\163\163\050\145" \ +"\163\051\040\163\145\154\145\143\164\145\144\040\142\171\040\162" \ +"\145\147\145\170\040\120\101\124\124\105\122\116\012\012\011\055" \ +"\154\011\123\150\157\167\040\143\157\155\155\141\156\144\040\156" \ +"\141\155\145\040\164\157\157\012\011\055\146\011\115\141\164\143" \ +"\150\040\141\147\141\151\156\163\164\040\145\156\164\151\162\145" \ +"\040\143\157\155\155\141\156\144\040\154\151\156\145\012\011\055" \ +"\156\011\123\150\157\167\040\164\150\145\040\156\145\167\145\163" \ +"\164\040\160\162\157\143\145\163\163\040\157\156\154\171\012\011" \ +"\055\157\011\123\150\157\167\040\164\150\145\040\157\154\144\145" \ +"\163\164\040\160\162\157\143\145\163\163\040\157\156\154\171\012" \ +"\011\055\166\011\116\145\147\141\164\145\040\164\150\145\040\155" \ +"\141\164\143\150\012\011\055\170\011\115\141\164\143\150\040\167" \ +"\150\157\154\145\040\156\141\155\145\040\050\156\157\164\040\163" \ +"\165\142\163\164\162\151\156\147\051\012\011\055\163\011\115\141" \ +"\164\143\150\040\163\145\163\163\151\157\156\040\111\104\040\050" \ +"\060\040\146\157\162\040\143\165\162\162\145\156\164\051\012\011" \ +"\055\120\011\115\141\164\143\150\040\160\141\162\145\156\164\040" \ +"\160\162\157\143\145\163\163\040\111\104\000\133\117\120\124\111" \ +"\117\116\123\135\040\133\116\101\115\105\135\056\056\056\012\012" \ +"\114\151\163\164\040\120\111\104\163\040\157\146\040\141\154\154" \ +"\040\160\162\157\143\145\163\163\145\163\040\167\151\164\150\040" \ +"\156\141\155\145\163\040\164\150\141\164\040\155\141\164\143\150" \ +"\040\116\101\115\105\163\012\012\011\055\163\011\123\150\157\167" \ +"\040\157\156\154\171\040\157\156\145\040\120\111\104\012\011\055" \ +"\157\040\120\111\104\011\117\155\151\164\040\147\151\166\145\156" \ +"\040\160\151\144\012\011\011\125\163\145\040\045\120\120\111\104" \ +"\040\164\157\040\157\155\151\164\040\160\151\144\040\157\146\040" \ +"\160\151\144\157\146\047\163\040\160\141\162\145\156\164\000\133" \ +"\055\154\174\055\123\111\107\116\101\114\135\040\133\055\146\156" \ +"\157\166\170\135\040\133\055\163\040\123\111\104\174\055\120\040" \ +"\120\120\111\104\174\120\101\124\124\105\122\116\135\012\012\123" \ +"\145\156\144\040\141\040\163\151\147\156\141\154\040\164\157\040" \ +"\160\162\157\143\145\163\163\050\145\163\051\040\163\145\154\145" \ +"\143\164\145\144\040\142\171\040\162\145\147\145\170\040\120\101" \ +"\124\124\105\122\116\012\012\011\055\154\011\114\151\163\164\040" \ +"\141\154\154\040\163\151\147\156\141\154\163\012\011\055\146\011" \ +"\115\141\164\143\150\040\141\147\141\151\156\163\164\040\145\156" \ +"\164\151\162\145\040\143\157\155\155\141\156\144\040\154\151\156" \ +"\145\012\011\055\156\011\123\151\147\156\141\154\040\164\150\145" \ +"\040\156\145\167\145\163\164\040\160\162\157\143\145\163\163\040" \ +"\157\156\154\171\012\011\055\157\011\123\151\147\156\141\154\040" \ +"\164\150\145\040\157\154\144\145\163\164\040\160\162\157\143\145" \ +"\163\163\040\157\156\154\171\012\011\055\166\011\116\145\147\141" \ +"\164\145\040\164\150\145\040\155\141\164\143\150\012\011\055\170" \ +"\011\115\141\164\143\150\040\167\150\157\154\145\040\156\141\155" \ +"\145\040\050\156\157\164\040\163\165\142\163\164\162\151\156\147" \ +"\051\012\011\055\163\011\115\141\164\143\150\040\163\145\163\163" \ +"\151\157\156\040\111\104\040\050\060\040\146\157\162\040\143\165" \ +"\162\162\145\156\164\051\012\011\055\120\011\115\141\164\143\150" \ +"\040\160\141\162\145\156\164\040\160\162\157\143\145\163\163\040" \ +"\111\104\000\133\126\101\122\111\101\102\114\105\135\056\056\056" \ +"\012\012\120\162\151\156\164\040\145\156\166\151\162\157\156\155" \ +"\145\156\164\040\126\101\122\111\101\102\114\105\163\056\012\111" \ +"\146\040\156\157\040\126\101\122\111\101\102\114\105\040\163\160" \ +"\145\143\151\146\151\145\144\054\040\160\162\151\156\164\040\141" \ +"\154\154\056\000\106\117\122\115\101\124\040\133\101\122\107\135" \ +"\056\056\056\012\012\106\157\162\155\141\164\040\141\156\144\040" \ +"\160\162\151\156\164\040\101\122\107\050\163\051\040\141\143\143" \ +"\157\162\144\151\156\147\040\164\157\040\106\117\122\115\101\124" \ +"\040\050\141\055\154\141\040\103\040\160\162\151\156\164\146\051" \ +"\000\012\012\123\150\157\167\040\154\151\163\164\040\157\146\040" \ +"\160\162\157\143\145\163\163\145\163\012\012\011\167\011\127\151" \ +"\144\145\040\157\165\164\160\165\164\012\011\154\011\114\157\156" \ +"\147\040\157\165\164\160\165\164\012\011\124\011\123\150\157\167" \ +"\040\164\150\162\145\141\144\163\000\133\055\160\135\040\133\120" \ +"\111\104\174\125\123\105\122\135\012\012\104\151\163\160\154\141" \ +"\171\040\160\162\157\143\145\163\163\040\164\162\145\145\054\040" \ +"\157\160\164\151\157\156\141\154\154\171\040\163\164\141\162\164" \ +"\040\146\162\157\155\040\125\123\105\122\040\157\162\040\120\111" \ +"\104\012\012\011\055\160\011\123\150\157\167\040\160\151\144\163" \ +"\000\012\012\120\162\151\156\164\040\164\150\145\040\146\165\154" \ +"\154\040\146\151\154\145\156\141\155\145\040\157\146\040\164\150" \ +"\145\040\143\165\162\162\145\156\164\040\167\157\162\153\151\156" \ +"\147\040\144\151\162\145\143\164\157\162\171\000\012\012\120\162" \ +"\151\156\164\040\164\150\145\040\144\145\166\151\143\145\040\156" \ +"\157\144\145\040\141\163\163\157\143\151\141\164\145\144\040\167" \ +"\151\164\150\040\164\150\145\040\146\151\154\145\163\171\163\164" \ +"\145\155\040\155\157\165\156\164\145\144\040\141\164\040\047\057" \ +"\047\000\133\055\146\156\166\135\040\106\111\114\105\012\012\104" \ +"\151\163\160\154\141\171\040\164\150\145\040\166\141\154\165\145" \ +"\040\157\146\040\141\040\163\171\155\154\151\156\153\012\012\011" \ +"\055\146\011\103\141\156\157\156\151\143\141\154\151\172\145\040" \ +"\142\171\040\146\157\154\154\157\167\151\156\147\040\141\154\154" \ +"\040\163\171\155\154\151\156\153\163\012\011\055\156\011\104\157" \ +"\156\047\164\040\141\144\144\040\156\145\167\154\151\156\145\012" \ +"\011\055\166\011\126\145\162\142\157\163\145\000\106\111\114\105" \ +"\056\056\056\012\012\122\145\164\165\162\156\040\164\150\145\040" \ +"\141\142\163\157\154\165\164\145\040\160\141\164\150\156\141\155" \ +"\145\163\040\157\146\040\147\151\166\145\156\040\106\111\114\105" \ +"\000\173\173\055\156\040\111\116\103\122\105\115\105\116\124\175" \ +"\040\174\040\120\122\111\117\122\111\124\131\175\040\133\133\055" \ +"\160\040\174\040\055\147\040\174\040\055\165\135\040\111\104\056" \ +"\056\056\135\012\012\103\150\141\156\147\145\040\163\143\150\145" \ +"\144\165\154\151\156\147\040\160\162\151\157\162\151\164\171\040" \ +"\146\157\162\040\141\040\162\165\156\156\151\156\147\040\160\162" \ +"\157\143\145\163\163\012\012\011\055\156\011\101\144\152\165\163" \ +"\164\040\143\165\162\162\145\156\164\040\156\151\143\145\040\166" \ +"\141\154\165\145\040\050\163\155\141\154\154\145\162\040\151\163" \ +"\040\146\141\163\164\145\162\051\012\011\055\160\011\120\162\157" \ +"\143\145\163\163\040\151\144\050\163\051\040\050\144\145\146\141" \ +"\165\154\164\051\012\011\055\147\011\120\162\157\143\145\163\163" \ +"\040\147\162\157\165\160\040\151\144\050\163\051\012\011\055\165" \ +"\011\120\162\157\143\145\163\163\040\165\163\145\162\040\156\141" \ +"\155\145\050\163\051\040\141\156\144\057\157\162\040\151\144\050" \ +"\163\051\000\012\012\122\145\163\145\164\040\164\150\145\040\163" \ +"\143\162\145\145\156\000\012\012\122\145\163\151\172\145\040\164" \ +"\150\145\040\163\143\162\145\145\156\000\133\106\111\114\105\135" \ +"\056\056\056\012\012\122\145\166\145\162\163\145\040\154\151\156" \ +"\145\163\040\157\146\040\106\111\114\105\000\133\055\151\162\146" \ +"\135\040\106\111\114\105\056\056\056\012\012\122\145\155\157\166" \ +"\145\040\050\165\156\154\151\156\153\051\040\106\111\114\105\163" \ +"\012\012\011\055\151\011\101\154\167\141\171\163\040\160\162\157" \ +"\155\160\164\040\142\145\146\157\162\145\040\162\145\155\157\166" \ +"\151\156\147\012\011\055\146\011\116\145\166\145\162\040\160\162" \ +"\157\155\160\164\012\011\055\122\054\055\162\011\122\145\143\165" \ +"\162\163\145\000\133\117\120\124\111\117\116\123\135\040\104\111" \ +"\122\105\103\124\117\122\131\056\056\056\012\012\122\145\155\157" \ +"\166\145\040\104\111\122\105\103\124\117\122\131\040\151\146\040" \ +"\151\164\040\151\163\040\145\155\160\164\171\012\012\011\055\160" \ +"\174\055\055\160\141\162\145\156\164\163\011\111\156\143\154\165" \ +"\144\145\040\160\141\162\145\156\164\163\012\011\055\055\151\147" \ +"\156\157\162\145\055\146\141\151\154\055\157\156\055\156\157\156" \ +"\055\145\155\160\164\171\000\133\055\161\146\167\162\163\166\135" \ +"\040\115\117\104\125\114\105\040\133\163\171\155\142\157\154\075" \ +"\166\141\154\165\145\135\056\056\056\012\012\011\055\162\011\122" \ +"\145\155\157\166\145\040\115\117\104\125\114\105\040\050\163\164" \ +"\141\143\153\163\051\040\157\162\040\144\157\040\141\165\164\157" \ +"\143\154\145\141\156\012\011\055\161\011\121\165\151\145\164\012" \ +"\011\055\166\011\126\145\162\142\157\163\145\012\011\055\146\011" \ +"\106\157\162\143\145\012\011\055\167\011\127\141\151\164\040\146" \ +"\157\162\040\165\156\154\157\141\144\012\011\055\163\011\122\145" \ +"\160\157\162\164\040\166\151\141\040\163\171\163\154\157\147\040" \ +"\151\156\163\164\145\141\144\040\157\146\040\163\164\144\145\162" \ +"\162\000\133\055\141\040\101\122\107\135\056\056\056\040\133\055" \ +"\165\040\125\115\101\123\113\135\040\104\111\122\105\103\124\117" \ +"\122\131\012\012\122\165\156\040\141\040\142\165\156\143\150\040" \ +"\157\146\040\163\143\162\151\160\164\163\040\151\156\040\104\111" \ +"\122\105\103\124\117\122\131\012\012\011\055\141\040\101\122\107" \ +"\011\011\120\141\163\163\040\101\122\107\040\141\163\040\141\162" \ +"\147\165\155\145\156\164\040\164\157\040\163\143\162\151\160\164" \ +"\163\012\011\055\165\040\125\115\101\123\113\011\123\145\164\040" \ +"\125\115\101\123\113\040\142\145\146\157\162\145\040\162\165\156" \ +"\156\151\156\147\040\163\143\162\151\160\164\163\000\133\055\151" \ +"\156\162\105\135\040\133\055\146\040\106\111\114\105\135\056\056" \ +"\056\040\133\055\145\040\103\115\104\135\056\056\056\040\133\106" \ +"\111\114\105\135\056\056\056\012\157\162\072\040\163\145\144\040" \ +"\133\055\151\156\162\105\135\040\103\115\104\040\133\106\111\114" \ +"\105\135\056\056\056\012\012\011\055\145\040\103\115\104\011\101" \ +"\144\144\040\103\115\104\040\164\157\040\163\145\144\040\143\157" \ +"\155\155\141\156\144\163\040\164\157\040\142\145\040\145\170\145" \ +"\143\165\164\145\144\012\011\055\146\040\106\111\114\105\011\101" \ +"\144\144\040\106\111\114\105\040\143\157\156\164\145\156\164\163" \ +"\040\164\157\040\163\145\144\040\143\157\155\155\141\156\144\163" \ +"\040\164\157\040\142\145\040\145\170\145\143\165\164\145\144\012" \ +"\011\055\151\133\123\106\130\135\011\105\144\151\164\040\146\151" \ +"\154\145\163\040\151\156\055\160\154\141\143\145\040\050\157\164" \ +"\150\145\162\167\151\163\145\040\163\145\156\144\163\040\164\157" \ +"\040\163\164\144\157\165\164\051\012\011\011\117\160\164\151\157" \ +"\156\141\154\154\171\040\142\141\143\153\040\146\151\154\145\163" \ +"\040\165\160\054\040\141\160\160\145\156\144\151\156\147\040\123" \ +"\106\130\012\011\055\156\011\123\165\160\160\162\145\163\163\040" \ +"\141\165\164\157\155\141\164\151\143\040\160\162\151\156\164\151" \ +"\156\147\040\157\146\040\160\141\164\164\145\162\156\040\163\160" \ +"\141\143\145\012\011\055\162\054\055\105\011\125\163\145\040\145" \ +"\170\164\145\156\144\145\144\040\162\145\147\145\170\040\163\171" \ +"\156\164\141\170\012\012\111\146\040\156\157\040\055\145\040\157" \ +"\162\040\055\146\054\040\164\150\145\040\146\151\162\163\164\040" \ +"\156\157\156\055\157\160\164\151\157\156\040\141\162\147\165\155" \ +"\145\156\164\040\151\163\040\164\150\145\040\163\145\144\040\143" \ +"\157\155\155\141\156\144\040\163\164\162\151\156\147\056\012\122" \ +"\145\155\141\151\156\151\156\147\040\141\162\147\165\155\145\156" \ +"\164\163\040\141\162\145\040\151\156\160\165\164\040\146\151\154" \ +"\145\163\040\050\163\164\144\151\156\040\151\146\040\156\157\156" \ +"\145\051\056\000\133\055\167\135\040\133\055\163\040\123\105\120" \ +"\135\040\133\106\111\122\123\124\040\133\111\116\103\135\135\040" \ +"\114\101\123\124\012\012\120\162\151\156\164\040\156\165\155\142" \ +"\145\162\163\040\146\162\157\155\040\106\111\122\123\124\040\164" \ +"\157\040\114\101\123\124\054\040\151\156\040\163\164\145\160\163" \ +"\040\157\146\040\111\116\103\056\012\106\111\122\123\124\054\040" \ +"\111\116\103\040\144\145\146\141\165\154\164\040\164\157\040\061" \ +"\056\012\012\011\055\167\011\120\141\144\040\164\157\040\154\141" \ +"\163\164\040\167\151\164\150\040\154\145\141\144\151\156\147\040" \ +"\172\145\162\157\163\012\011\055\163\040\123\105\120\011\123\164" \ +"\162\151\156\147\040\163\145\160\141\162\141\164\157\162\000\133" \ +"\055\162\135\040\133\104\105\126\111\103\105\135\012\012\122\145" \ +"\144\151\162\145\143\164\040\163\171\163\164\145\155\040\143\157" \ +"\156\163\157\154\145\040\157\165\164\160\165\164\040\164\157\040" \ +"\104\105\126\111\103\105\040\050\144\145\146\141\165\154\164\072" \ +"\040\057\144\145\166\057\164\164\171\051\012\012\011\055\162\011" \ +"\122\145\163\145\164\040\157\165\164\160\165\164\040\164\157\040" \ +"\057\144\145\166\057\143\157\156\163\157\154\145\000\133\055\147" \ +"\141\142\107\166\172\126\135\040\104\105\126\111\103\105\040\133" \ +"\120\101\122\101\115\105\124\105\122\040\133\101\122\107\135\135" \ +"\056\056\056\012\012\122\145\161\165\145\163\164\040\157\162\040" \ +"\163\145\164\040\114\151\156\165\170\040\163\145\162\151\141\154" \ +"\040\160\157\162\164\040\151\156\146\157\162\155\141\164\151\157" \ +"\156\012\012\011\055\147\011\111\156\164\145\162\160\162\145\164" \ +"\040\160\141\162\141\155\145\164\145\162\163\040\141\163\040\154" \ +"\151\163\164\040\157\146\040\144\145\166\151\143\145\163\040\146" \ +"\157\162\040\162\145\160\157\162\164\151\156\147\012\011\055\141" \ +"\011\120\162\151\156\164\040\141\154\154\040\141\166\141\151\154" \ +"\141\142\154\145\040\151\156\146\157\162\155\141\164\151\157\156" \ +"\012\011\055\142\011\120\162\151\156\164\040\163\165\155\155\141" \ +"\162\171\040\151\156\146\157\162\155\141\164\151\157\156\012\011" \ +"\055\107\011\120\162\151\156\164\040\151\156\040\146\157\162\155" \ +"\040\167\150\151\143\150\040\143\141\156\040\142\145\040\146\145" \ +"\144\040\142\141\143\153\012\011\011\164\157\040\163\145\164\163" \ +"\145\162\151\141\154\040\141\163\040\143\157\155\155\141\156\144" \ +"\040\154\151\156\145\040\160\141\162\141\155\145\164\145\162\163" \ +"\012\011\055\172\011\132\145\162\157\040\157\165\164\040\163\145" \ +"\162\151\141\154\040\146\154\141\147\163\040\142\145\146\157\162" \ +"\145\040\163\145\164\164\151\156\147\012\011\055\166\011\126\145" \ +"\162\142\157\163\145\012\012\120\141\162\141\155\145\164\145\162" \ +"\163\072\040\050\052\040\075\040\164\141\153\145\163\040\141\156" \ +"\040\141\162\147\165\155\145\156\164\054\040\136\040\075\040\143" \ +"\141\156\040\142\145\040\164\165\162\156\145\144\040\157\146\146" \ +"\040\142\171\040\160\162\145\143\145\144\151\156\147\040\136\051" \ +"\012\011\052\160\157\162\164\054\040\052\151\162\161\054\040\052" \ +"\144\151\166\151\163\157\162\054\040\052\165\141\162\164\054\040" \ +"\052\142\141\165\144\137\142\141\163\145\054\040\052\143\154\157" \ +"\163\145\137\144\145\154\141\171\054\040\052\143\154\157\163\151" \ +"\156\147\137\167\141\151\164\054\012\011\136\146\157\165\162\160" \ +"\157\162\164\054\040\136\141\165\164\157\137\151\162\161\054\040" \ +"\136\163\153\151\160\137\164\145\163\164\054\040\136\163\141\153" \ +"\054\040\136\163\145\163\163\151\157\156\137\154\157\143\153\157" \ +"\165\164\054\040\136\160\147\162\160\137\154\157\143\153\157\165" \ +"\164\054\012\011\136\143\141\154\154\157\165\164\137\156\157\150" \ +"\165\160\054\040\136\163\160\154\151\164\137\164\145\162\155\151" \ +"\157\163\054\040\136\150\165\160\137\156\157\164\151\146\171\054" \ +"\040\136\154\157\167\137\154\141\164\145\156\143\171\054\040\141" \ +"\165\164\157\143\157\156\146\151\147\054\012\011\163\160\144\137" \ +"\156\157\162\155\141\154\054\040\163\160\144\137\150\151\054\040" \ +"\163\160\144\137\166\150\151\054\040\163\160\144\137\163\150\151" \ +"\054\040\163\160\144\137\167\141\162\160\054\040\163\160\144\137" \ +"\143\165\163\164\012\012\125\101\122\124\040\164\171\160\145\163" \ +"\072\012\011\165\156\153\156\157\167\156\054\040\070\062\065\060" \ +"\054\040\061\066\064\065\060\054\040\061\066\065\065\060\054\040" \ +"\061\066\065\065\060\101\054\040\103\151\162\162\165\163\054\040" \ +"\061\066\066\065\060\054\040\061\066\066\065\060\126\062\054\040" \ +"\061\066\067\065\060\054\012\011\061\066\071\065\060\054\040\061" \ +"\066\071\065\064\054\040\061\066\066\065\064\054\040\061\066\070" \ +"\065\060\054\040\122\123\101\054\040\116\123\061\066\065\065\060" \ +"\101\054\040\130\123\103\101\114\105\054\040\122\115\071\060\060" \ +"\060\054\040\117\103\124\105\117\116\054\040\101\122\067\054\012" \ +"\011\125\066\137\061\066\065\065\060\101\000\120\122\117\107\040" \ +"\101\122\107\123\012\012\122\165\156\040\120\122\117\107\040\151" \ +"\156\040\141\040\156\145\167\040\163\145\163\163\151\157\156\056" \ +"\040\120\122\117\107\040\167\151\154\154\040\150\141\166\145\040" \ +"\156\157\040\143\157\156\164\162\157\154\154\151\156\147\040\164" \ +"\145\162\155\151\156\141\154\012\141\156\144\040\167\151\154\154" \ +"\040\156\157\164\040\142\145\040\141\146\146\145\143\164\145\144" \ +"\040\142\171\040\153\145\171\142\157\141\162\144\040\163\151\147" \ +"\156\141\154\163\040\050\103\164\162\154\055\103\040\145\164\143" \ +"\051\056\012\123\145\145\040\163\145\164\163\151\144\050\062\051" \ +"\040\146\157\162\040\144\145\164\141\151\154\163\056\000\133\055" \ +"\057\053\117\120\124\111\117\116\123\135\040\133\055\057\053\157" \ +"\040\117\120\124\135\056\056\056\040\133\055\143\040\047\123\103" \ +"\122\111\120\124\047\040\133\101\122\107\060\040\133\101\122\107" \ +"\123\135\135\040\057\040\106\111\114\105\040\133\101\122\107\123" \ +"\135\135\012\012\125\156\151\170\040\163\150\145\154\154\040\151" \ +"\156\164\145\162\160\162\145\164\145\162\000\133\055\143\133\163" \ +"\167\135\135\040\133\106\111\114\105\135\056\056\056\012\012\120" \ +"\162\151\156\164\040\157\162\040\143\150\145\143\153\040\123\110" \ +"\101\061\040\143\150\145\143\153\163\165\155\163\012\012\011\055" \ +"\143\011\103\150\145\143\153\040\163\165\155\163\040\141\147\141" \ +"\151\156\163\164\040\154\151\163\164\040\151\156\040\106\111\114" \ +"\105\163\012\011\055\163\011\104\157\156\047\164\040\157\165\164" \ +"\160\165\164\040\141\156\171\164\150\151\156\147\054\040\163\164" \ +"\141\164\165\163\040\143\157\144\145\040\163\150\157\167\163\040" \ +"\163\165\143\143\145\163\163\012\011\055\167\011\127\141\162\156" \ +"\040\141\142\157\165\164\040\151\155\160\162\157\160\145\162\154" \ +"\171\040\146\157\162\155\141\164\164\145\144\040\143\150\145\143" \ +"\153\163\165\155\040\154\151\156\145\163\000\133\055\143\133\163" \ +"\167\135\135\040\133\106\111\114\105\135\056\056\056\012\012\120" \ +"\162\151\156\164\040\157\162\040\143\150\145\143\153\040\123\110" \ +"\101\062\065\066\040\143\150\145\143\153\163\165\155\163\012\012" \ +"\011\055\143\011\103\150\145\143\153\040\163\165\155\163\040\141" \ +"\147\141\151\156\163\164\040\154\151\163\164\040\151\156\040\106" \ +"\111\114\105\163\012\011\055\163\011\104\157\156\047\164\040\157" \ +"\165\164\160\165\164\040\141\156\171\164\150\151\156\147\054\040" \ +"\163\164\141\164\165\163\040\143\157\144\145\040\163\150\157\167" \ +"\163\040\163\165\143\143\145\163\163\012\011\055\167\011\127\141" \ +"\162\156\040\141\142\157\165\164\040\151\155\160\162\157\160\145" \ +"\162\154\171\040\146\157\162\155\141\164\164\145\144\040\143\150" \ +"\145\143\153\163\165\155\040\154\151\156\145\163\000\133\055\143" \ +"\133\163\167\135\135\040\133\106\111\114\105\135\056\056\056\012" \ +"\012\120\162\151\156\164\040\157\162\040\143\150\145\143\153\040" \ +"\123\110\101\065\061\062\040\143\150\145\143\153\163\165\155\163" \ +"\012\012\011\055\143\011\103\150\145\143\153\040\163\165\155\163" \ +"\040\141\147\141\151\156\163\164\040\154\151\163\164\040\151\156" \ +"\040\106\111\114\105\163\012\011\055\163\011\104\157\156\047\164" \ +"\040\157\165\164\160\165\164\040\141\156\171\164\150\151\156\147" \ +"\054\040\163\164\141\164\165\163\040\143\157\144\145\040\163\150" \ +"\157\167\163\040\163\165\143\143\145\163\163\012\011\055\167\011" \ +"\127\141\162\156\040\141\142\157\165\164\040\151\155\160\162\157" \ +"\160\145\162\154\171\040\146\157\162\155\141\164\164\145\144\040" \ +"\143\150\145\143\153\163\165\155\040\154\151\156\145\163\000\133" \ +"\116\135\056\056\056\012\012\120\141\165\163\145\040\146\157\162" \ +"\040\141\040\164\151\155\145\040\145\161\165\141\154\040\164\157" \ +"\040\164\150\145\040\164\157\164\141\154\040\157\146\040\164\150" \ +"\145\040\141\162\147\163\040\147\151\166\145\156\054\040\167\150" \ +"\145\162\145\040\145\141\143\150\040\141\162\147\040\143\141\156" \ +"\012\150\141\166\145\040\141\156\040\157\160\164\151\157\156\141" \ +"\154\040\163\165\146\146\151\170\040\157\146\040\050\163\051\145" \ +"\143\157\156\144\163\054\040\050\155\051\151\156\165\164\145\163" \ +"\054\040\050\150\051\157\165\162\163\054\040\157\162\040\050\144" \ +"\051\141\171\163\000\133\055\156\162\165\135\040\133\106\111\114" \ +"\105\135\056\056\056\012\012\123\157\162\164\040\154\151\156\145" \ +"\163\040\157\146\040\164\145\170\164\012\012\011\055\156\011\123" \ +"\157\162\164\040\156\165\155\142\145\162\163\012\011\055\162\011" \ +"\122\145\166\145\162\163\145\040\163\157\162\164\040\157\162\144" \ +"\145\162\012\011\055\165\011\123\165\160\160\162\145\163\163\040" \ +"\144\165\160\154\151\143\141\164\145\040\154\151\156\145\163\000" \ +"\133\117\120\124\111\117\116\123\135\040\133\111\116\120\125\124" \ +"\040\133\120\122\105\106\111\130\135\135\012\012\011\055\142\040" \ +"\116\133\153\174\155\135\011\123\160\154\151\164\040\142\171\040" \ +"\116\040\050\153\151\154\157\174\155\145\147\141\051\142\171\164" \ +"\145\163\012\011\055\154\040\116\011\011\123\160\154\151\164\040" \ +"\142\171\040\116\040\154\151\156\145\163\012\011\055\141\040\116" \ +"\011\011\125\163\145\040\116\040\154\145\164\164\145\162\163\040" \ +"\141\163\040\163\165\146\146\151\170\000\133\117\120\124\111\117" \ +"\116\123\135\040\106\111\114\105\056\056\056\012\012\104\151\163" \ +"\160\154\141\171\040\146\151\154\145\040\050\144\145\146\141\165" \ +"\154\164\051\040\157\162\040\146\151\154\145\163\171\163\164\145" \ +"\155\040\163\164\141\164\165\163\012\012\011\055\146\011\104\151" \ +"\163\160\154\141\171\040\146\151\154\145\163\171\163\164\145\155" \ +"\040\163\164\141\164\165\163\012\011\055\114\011\106\157\154\154" \ +"\157\167\040\154\151\156\153\163\012\011\055\164\011\104\151\163" \ +"\160\154\141\171\040\151\156\146\157\040\151\156\040\164\145\162" \ +"\163\145\040\146\157\162\155\000\133\055\141\146\157\135\040\133" \ +"\055\156\040\114\105\116\135\040\133\106\111\114\105\135\056\056" \ +"\056\012\012\104\151\163\160\154\141\171\040\160\162\151\156\164" \ +"\141\142\154\145\040\163\164\162\151\156\147\163\040\151\156\040" \ +"\141\040\142\151\156\141\162\171\040\146\151\154\145\012\012\011" \ +"\055\141\011\123\143\141\156\040\167\150\157\154\145\040\146\151" \ +"\154\145\040\050\144\145\146\141\165\154\164\051\012\011\055\146" \ +"\011\120\162\145\143\145\144\145\040\163\164\162\151\156\147\163" \ +"\040\167\151\164\150\040\146\151\154\145\156\141\155\145\163\012" \ +"\011\055\156\040\114\105\116\011\101\164\040\154\145\141\163\164" \ +"\040\114\105\116\040\143\150\141\162\141\143\164\145\162\163\040" \ +"\146\157\162\155\040\141\040\163\164\162\151\156\147\040\050\144" \ +"\145\146\141\165\154\164\040\064\051\012\011\055\157\011\120\162" \ +"\145\143\145\144\145\040\163\164\162\151\156\147\163\040\167\151" \ +"\164\150\040\144\145\143\151\155\141\154\040\157\146\146\163\145" \ +"\164\163\000\133\055\141\174\147\135\040\133\055\106\040\104\105" \ +"\126\111\103\105\135\040\133\123\105\124\124\111\116\107\135\056" \ +"\056\056\012\012\127\151\164\150\157\165\164\040\141\162\147\165" \ +"\155\145\156\164\163\054\040\160\162\151\156\164\163\040\142\141" \ +"\165\144\040\162\141\164\145\054\040\154\151\156\145\040\144\151" \ +"\163\143\151\160\154\151\156\145\054\012\141\156\144\040\144\145" \ +"\166\151\141\164\151\157\156\163\040\146\162\157\155\040\163\164" \ +"\164\171\040\163\141\156\145\012\012\011\055\106\040\104\105\126" \ +"\111\103\105\011\117\160\145\156\040\144\145\166\151\143\145\040" \ +"\151\156\163\164\145\141\144\040\157\146\040\163\164\144\151\156" \ +"\012\011\055\141\011\011\120\162\151\156\164\040\141\154\154\040" \ +"\143\165\162\162\145\156\164\040\163\145\164\164\151\156\147\163" \ +"\040\151\156\040\150\165\155\141\156\055\162\145\141\144\141\142" \ +"\154\145\040\146\157\162\155\012\011\055\147\011\011\120\162\151" \ +"\156\164\040\151\156\040\163\164\164\171\055\162\145\141\144\141" \ +"\142\154\145\040\146\157\162\155\012\011\133\123\105\124\124\111" \ +"\116\107\135\011\123\145\145\040\155\141\156\160\141\147\145\000" \ +"\133\055\141\135\040\133\104\105\126\111\103\105\135\012\012\123" \ +"\164\157\160\040\163\167\141\160\160\151\156\147\040\157\156\040" \ +"\104\105\126\111\103\105\012\012\011\055\141\011\123\164\157\160" \ +"\040\163\167\141\160\160\151\156\147\040\157\156\040\141\154\154" \ +"\040\163\167\141\160\040\144\145\166\151\143\145\163\000\133\055" \ +"\141\135\040\133\104\105\126\111\103\105\135\012\012\123\164\141" \ +"\162\164\040\163\167\141\160\160\151\156\147\040\157\156\040\104" \ +"\105\126\111\103\105\012\012\011\055\141\011\123\164\141\162\164" \ +"\040\163\167\141\160\160\151\156\147\040\157\156\040\141\154\154" \ +"\040\163\167\141\160\040\144\145\166\151\143\145\163\000\012\012" \ +"\127\162\151\164\145\040\141\154\154\040\142\165\146\146\145\162" \ +"\145\144\040\142\154\157\143\153\163\040\164\157\040\144\151\163" \ +"\153\000\133\117\120\124\111\117\116\123\135\040\133\113\105\131" \ +"\133\075\126\101\114\125\105\135\135\056\056\056\012\012\123\150" \ +"\157\167\057\163\145\164\040\153\145\162\156\145\154\040\160\141" \ +"\162\141\155\145\164\145\162\163\012\012\011\055\145\011\104\157" \ +"\156\047\164\040\167\141\162\156\040\141\142\157\165\164\040\165" \ +"\156\153\156\157\167\156\040\153\145\171\163\012\011\055\156\011" \ +"\104\157\156\047\164\040\163\150\157\167\040\153\145\171\040\156" \ +"\141\155\145\163\012\011\055\141\011\123\150\157\167\040\141\154" \ +"\154\040\166\141\154\165\145\163\012\011\055\167\011\123\145\164" \ +"\040\166\141\154\165\145\163\012\011\055\160\040\106\111\114\105" \ +"\011\123\145\164\040\166\141\154\165\145\163\040\146\162\157\155" \ +"\040\106\111\114\105\040\050\144\145\146\141\165\154\164\040\057" \ +"\145\164\143\057\163\171\163\143\164\154\056\143\157\156\146\051" \ +"\012\011\055\161\040\040\040\040\040\040\123\145\164\040\166\141" \ +"\154\165\145\163\040\163\151\154\145\156\164\154\171\000\133\106" \ +"\111\114\105\135\056\056\056\012\012\103\157\156\143\141\164\145" \ +"\156\141\164\145\040\106\111\114\105\163\040\141\156\144\040\160" \ +"\162\151\156\164\040\164\150\145\155\040\151\156\040\162\145\166" \ +"\145\162\163\145\000\133\117\120\124\111\117\116\123\135\040\133" \ +"\106\111\114\105\135\056\056\056\012\012\120\162\151\156\164\040" \ +"\154\141\163\164\040\061\060\040\154\151\156\145\163\040\157\146" \ +"\040\145\141\143\150\040\106\111\114\105\040\050\157\162\040\163" \ +"\164\144\151\156\051\040\164\157\040\163\164\144\157\165\164\056" \ +"\012\127\151\164\150\040\155\157\162\145\040\164\150\141\156\040" \ +"\157\156\145\040\106\111\114\105\054\040\160\162\145\143\145\144" \ +"\145\040\145\141\143\150\040\167\151\164\150\040\141\040\146\151" \ +"\154\145\156\141\155\145\040\150\145\141\144\145\162\056\012\012" \ +"\011\055\146\011\011\120\162\151\156\164\040\144\141\164\141\040" \ +"\141\163\040\146\151\154\145\040\147\162\157\167\163\012\011\055" \ +"\163\040\123\105\103\117\116\104\123\011\127\141\151\164\040\123" \ +"\105\103\117\116\104\123\040\142\145\164\167\145\145\156\040\162" \ +"\145\141\144\163\040\167\151\164\150\040\055\146\012\011\055\156" \ +"\040\116\133\153\142\155\135\011\120\162\151\156\164\040\154\141" \ +"\163\164\040\116\040\154\151\156\145\163\012\011\055\156\040\053" \ +"\116\133\153\142\155\135\011\123\164\141\162\164\040\157\156\040" \ +"\116\164\150\040\154\151\156\145\040\141\156\144\040\160\162\151" \ +"\156\164\040\164\150\145\040\162\145\163\164\012\011\055\143\040" \ +"\133\053\135\116\133\153\142\155\135\011\120\162\151\156\164\040" \ +"\154\141\163\164\040\116\040\142\171\164\145\163\012\011\055\161" \ +"\011\011\116\145\166\145\162\040\160\162\151\156\164\040\150\145" \ +"\141\144\145\162\163\012\011\055\166\011\011\101\154\167\141\171" \ +"\163\040\160\162\151\156\164\040\150\145\141\144\145\162\163\012" \ +"\012\116\040\155\141\171\040\142\145\040\163\165\146\146\151\170" \ +"\145\144\040\142\171\040\153\040\050\170\061\060\062\064\051\054" \ +"\040\142\040\050\170\065\061\062\051\054\040\157\162\040\155\040" \ +"\050\170\061\060\062\064\136\062\051\056\000\055\133\143\170\164" \ +"\172\152\150\155\166\117\135\040\133\055\130\040\106\111\114\105" \ +"\135\040\133\055\124\040\106\111\114\105\135\040\133\055\146\040" \ +"\124\101\122\106\111\114\105\135\040\133\055\103\040\104\111\122" \ +"\135\040\133\106\111\114\105\135\056\056\056\012\012\103\162\145" \ +"\141\164\145\054\040\145\170\164\162\141\143\164\054\040\157\162" \ +"\040\154\151\163\164\040\146\151\154\145\163\040\146\162\157\155" \ +"\040\141\040\164\141\162\040\146\151\154\145\012\012\117\160\145" \ +"\162\141\164\151\157\156\072\012\011\143\011\103\162\145\141\164" \ +"\145\012\011\170\011\105\170\164\162\141\143\164\012\011\164\011" \ +"\114\151\163\164\012\011\146\011\116\141\155\145\040\157\146\040" \ +"\124\101\122\106\111\114\105\040\050\047\055\047\040\146\157\162" \ +"\040\163\164\144\151\156\057\157\165\164\051\012\011\103\011\103" \ +"\150\141\156\147\145\040\164\157\040\104\111\122\040\142\145\146" \ +"\157\162\145\040\157\160\145\162\141\164\151\157\156\012\011\166" \ +"\011\126\145\162\142\157\163\145\012\011\172\011\050\104\145\051" \ +"\143\157\155\160\162\145\163\163\040\165\163\151\156\147\040\147" \ +"\172\151\160\012\011\152\011\050\104\145\051\143\157\155\160\162" \ +"\145\163\163\040\165\163\151\156\147\040\142\172\151\160\062\012" \ +"\011\117\011\105\170\164\162\141\143\164\040\164\157\040\163\164" \ +"\144\157\165\164\012\011\150\011\106\157\154\154\157\167\040\163" \ +"\171\155\154\151\156\153\163\012\011\155\011\104\157\156\047\164" \ +"\040\162\145\163\164\157\162\145\040\155\164\151\155\145\012\011" \ +"\145\170\143\154\165\144\145\011\106\151\154\145\040\164\157\040" \ +"\145\170\143\154\165\144\145\012\011\130\011\106\151\154\145\040" \ +"\167\151\164\150\040\156\141\155\145\163\040\164\157\040\145\170" \ +"\143\154\165\144\145\012\011\124\011\106\151\154\145\040\167\151" \ +"\164\150\040\156\141\155\145\163\040\164\157\040\151\156\143\154" \ +"\165\144\145\000\133\055\141\151\135\040\133\106\111\114\105\135" \ +"\056\056\056\012\012\103\157\160\171\040\163\164\144\151\156\040" \ +"\164\157\040\145\141\143\150\040\106\111\114\105\054\040\141\156" \ +"\144\040\141\154\163\157\040\164\157\040\163\164\144\157\165\164" \ +"\012\012\011\055\141\011\101\160\160\145\156\144\040\164\157\040" \ +"\164\150\145\040\147\151\166\145\156\040\106\111\114\105\163\054" \ +"\040\144\157\156\047\164\040\157\166\145\162\167\162\151\164\145" \ +"\012\011\055\151\011\111\147\156\157\162\145\040\151\156\164\145" \ +"\162\162\165\160\164\040\163\151\147\156\141\154\163\040\050\123" \ +"\111\107\111\116\124\051\000\105\130\120\122\105\123\123\111\117" \ +"\116\040\135\012\012\103\150\145\143\153\040\146\151\154\145\040" \ +"\164\171\160\145\163\054\040\143\157\155\160\141\162\145\040\166" \ +"\141\154\165\145\163\040\145\164\143\056\040\122\145\164\165\162" \ +"\156\040\141\040\060\057\061\040\145\170\151\164\040\143\157\144" \ +"\145\012\144\145\160\145\156\144\151\156\147\040\157\156\040\154" \ +"\157\147\151\143\141\154\040\166\141\154\165\145\040\157\146\040" \ +"\105\130\120\122\105\123\123\111\117\116\000\133\055\166\135\040" \ +"\120\122\117\107\040\101\122\107\123\012\012\122\165\156\040\120" \ +"\122\117\107\054\040\144\151\163\160\154\141\171\040\162\145\163" \ +"\157\165\162\143\145\040\165\163\141\147\145\040\167\150\145\156" \ +"\040\151\164\040\145\170\151\164\163\012\012\011\055\166\011\126" \ +"\145\162\142\157\163\145\000\133\055\142\135\040\133\055\156\103" \ +"\117\125\116\124\135\040\133\055\144\123\105\103\117\116\104\123" \ +"\135\040\133\055\155\135\012\012\120\162\157\166\151\144\145\040" \ +"\141\040\166\151\145\167\040\157\146\040\160\162\157\143\145\163" \ +"\163\040\141\143\164\151\166\151\164\171\040\151\156\040\162\145" \ +"\141\154\040\164\151\155\145\056\012\122\145\141\144\040\164\150" \ +"\145\040\163\164\141\164\165\163\040\157\146\040\141\154\154\040" \ +"\160\162\157\143\145\163\163\145\163\040\146\162\157\155\040\057" \ +"\160\162\157\143\040\145\141\143\150\040\123\105\103\117\116\104" \ +"\123\012\141\156\144\040\144\151\163\160\154\141\171\040\141\040" \ +"\163\143\162\145\145\156\146\165\154\040\157\146\040\164\150\145" \ +"\155\056\012\113\145\171\163\072\012\011\116\057\115\057\120\057" \ +"\124\072\040\163\150\157\167\040\103\120\125\040\165\163\141\147" \ +"\145\054\040\163\157\162\164\040\142\171\040\160\151\144\057\155" \ +"\145\155\057\143\160\165\057\164\151\155\145\012\011\123\072\040" \ +"\163\150\157\167\040\155\145\155\157\162\171\012\011\122\072\040" \ +"\162\145\166\145\162\163\145\040\163\157\162\164\012\011\110\072" \ +"\040\164\157\147\147\154\145\040\164\150\162\145\141\144\163\012" \ +"\011\121\054\136\103\072\040\145\170\151\164\012\012\117\160\164" \ +"\151\157\156\163\072\012\011\055\142\011\102\141\164\143\150\040" \ +"\155\157\144\145\012\011\055\156\040\116\011\105\170\151\164\040" \ +"\141\146\164\145\162\040\116\040\151\164\145\162\141\164\151\157" \ +"\156\163\012\011\055\144\040\116\011\104\145\154\141\171\040\142" \ +"\145\164\167\145\145\156\040\165\160\144\141\164\145\163\012\011" \ +"\055\155\011\123\141\155\145\040\141\163\040\047\163\047\040\153" \ +"\145\171\000\133\055\143\135\040\106\111\114\105\056\056\056\012" \ +"\012\125\160\144\141\164\145\040\164\150\145\040\154\141\163\164" \ +"\055\155\157\144\151\146\151\145\144\040\144\141\164\145\040\157" \ +"\156\040\164\150\145\040\147\151\166\145\156\040\106\111\114\105" \ +"\133\163\135\012\012\011\055\143\011\104\157\156\047\164\040\143" \ +"\162\145\141\164\145\040\146\151\154\145\163\000\133\055\143\144" \ +"\163\135\040\123\124\122\111\116\107\061\040\133\123\124\122\111" \ +"\116\107\062\135\012\012\124\162\141\156\163\154\141\164\145\054" \ +"\040\163\161\165\145\145\172\145\054\040\157\162\040\144\145\154" \ +"\145\164\145\040\143\150\141\162\141\143\164\145\162\163\040\146" \ +"\162\157\155\040\163\164\144\151\156\054\040\167\162\151\164\151" \ +"\156\147\040\164\157\040\163\164\144\157\165\164\012\012\011\055" \ +"\143\011\124\141\153\145\040\143\157\155\160\154\145\155\145\156" \ +"\164\040\157\146\040\123\124\122\111\116\107\061\012\011\055\144" \ +"\011\104\145\154\145\164\145\040\151\156\160\165\164\040\143\150" \ +"\141\162\141\143\164\145\162\163\040\143\157\144\145\144\040\123" \ +"\124\122\111\116\107\061\012\011\055\163\011\123\161\165\145\145" \ +"\172\145\040\155\165\154\164\151\160\154\145\040\157\165\164\160" \ +"\165\164\040\143\150\141\162\141\143\164\145\162\163\040\157\146" \ +"\040\123\124\122\111\116\107\062\040\151\156\164\157\040\157\156" \ +"\145\040\143\150\141\162\141\143\164\145\162\000\012\012\122\145" \ +"\164\165\162\156\040\141\156\040\145\170\151\164\040\143\157\144" \ +"\145\040\157\146\040\124\122\125\105\040\050\060\051\000\133\167" \ +"\135\040\133\150\135\012\012\120\162\151\156\164\040\144\151\155" \ +"\145\156\163\151\157\156\050\163\051\040\157\146\040\163\164\144" \ +"\151\156\047\163\040\164\145\162\155\151\156\141\154\054\040\157" \ +"\156\040\145\162\162\157\162\040\162\145\164\165\162\156\040\070" \ +"\060\170\062\065\000\133\055\143\040\115\101\130\137\115\117\125" \ +"\116\124\137\103\117\125\116\124\135\040\133\055\151\040\104\101" \ +"\131\123\135\040\133\055\103\040\115\117\125\116\124\137\103\117" \ +"\125\116\124\135\040\133\055\114\040\114\101\102\105\114\135\040" \ +"\102\114\117\103\113\104\105\126\012\012\101\144\152\165\163\164" \ +"\040\146\151\154\145\163\171\163\164\145\155\040\157\160\164\151" \ +"\157\156\163\040\157\156\040\145\170\164\133\062\063\135\040\146" \ +"\151\154\145\163\171\163\164\145\155\163\000\133\117\120\124\111" \ +"\117\116\123\135\040\106\111\114\105\123\131\123\124\105\115\174" \ +"\104\111\122\105\103\124\117\122\131\012\012\125\156\155\157\165" \ +"\156\164\040\146\151\154\145\040\163\171\163\164\145\155\163\012" \ +"\012\011\055\162\011\124\162\171\040\164\157\040\162\145\155\157" \ +"\165\156\164\040\144\145\166\151\143\145\163\040\141\163\040\162" \ +"\145\141\144\055\157\156\154\171\040\151\146\040\155\157\165\156" \ +"\164\040\151\163\040\142\165\163\171\012\011\055\154\011\114\141" \ +"\172\171\040\165\155\157\165\156\164\040\050\144\145\164\141\143" \ +"\150\040\146\151\154\145\163\171\163\164\145\155\051\012\011\055" \ +"\146\011\106\157\162\143\145\040\165\155\157\165\156\164\040\050" \ +"\151\056\145\056\054\040\165\156\162\145\141\143\150\141\142\154" \ +"\145\040\116\106\123\040\163\145\162\166\145\162\051\012\011\055" \ +"\144\011\106\162\145\145\040\154\157\157\160\040\144\145\166\151" \ +"\143\145\040\145\166\145\156\040\151\146\040\151\164\040\150\141" \ +"\163\040\142\145\145\156\040\165\163\145\144\000\133\055\141\155" \ +"\156\162\163\160\166\135\012\012\120\162\151\156\164\040\163\171" \ +"\163\164\145\155\040\151\156\146\157\162\155\141\164\151\157\156" \ +"\012\012\011\055\141\011\120\162\151\156\164\040\141\154\154\012" \ +"\011\055\155\011\124\150\145\040\155\141\143\150\151\156\145\040" \ +"\050\150\141\162\144\167\141\162\145\051\040\164\171\160\145\012" \ +"\011\055\156\011\110\157\163\164\156\141\155\145\012\011\055\162" \ +"\011\117\123\040\162\145\154\145\141\163\145\012\011\055\163\011" \ +"\117\123\040\156\141\155\145\040\050\144\145\146\141\165\154\164" \ +"\051\012\011\055\160\011\120\162\157\143\145\163\163\157\162\040" \ +"\164\171\160\145\012\011\055\166\011\117\123\040\166\145\162\163" \ +"\151\157\156\000\133\055\146\141\135\133\055\164\040\116\135\040" \ +"\133\106\111\114\105\135\056\056\056\012\012\103\157\156\166\145" \ +"\162\164\040\163\160\141\143\145\163\040\164\157\040\164\141\142" \ +"\163\054\040\167\162\151\164\151\156\147\040\164\157\040\163\164" \ +"\144\157\165\164\012\012\011\055\141\054\055\055\141\154\154\011" \ +"\103\157\156\166\145\162\164\040\141\154\154\040\142\154\141\156" \ +"\153\163\012\011\055\146\054\055\055\146\151\162\163\164\055\157" \ +"\156\154\171\011\103\157\156\166\145\162\164\040\157\156\154\171" \ +"\040\154\145\141\144\151\156\147\040\142\154\141\156\153\163\012" \ +"\011\055\164\054\055\055\164\141\142\163\075\116\011\124\141\142" \ +"\163\164\157\160\163\040\145\166\145\162\171\040\116\040\143\150" \ +"\141\162\163\000\133\055\143\144\165\135\133\055\146\054\163\054" \ +"\167\040\116\135\040\133\111\116\120\125\124\040\133\117\125\124" \ +"\120\125\124\135\135\012\012\104\151\163\143\141\162\144\040\144" \ +"\165\160\154\151\143\141\164\145\040\154\151\156\145\163\012\012" \ +"\011\055\143\011\120\162\145\146\151\170\040\154\151\156\145\163" \ +"\040\142\171\040\164\150\145\040\156\165\155\142\145\162\040\157" \ +"\146\040\157\143\143\165\162\162\145\156\143\145\163\012\011\055" \ +"\144\011\117\156\154\171\040\160\162\151\156\164\040\144\165\160" \ +"\154\151\143\141\164\145\040\154\151\156\145\163\012\011\055\165" \ +"\011\117\156\154\171\040\160\162\151\156\164\040\165\156\151\161" \ +"\165\145\040\154\151\156\145\163\012\011\055\146\040\116\011\123" \ +"\153\151\160\040\146\151\162\163\164\040\116\040\146\151\145\154" \ +"\144\163\012\011\055\163\040\116\011\123\153\151\160\040\146\151" \ +"\162\163\164\040\116\040\143\150\141\162\163\040\050\141\146\164" \ +"\145\162\040\141\156\171\040\163\153\151\160\160\145\144\040\146" \ +"\151\145\154\144\163\051\012\011\055\167\040\116\011\103\157\155" \ +"\160\141\162\145\040\116\040\143\150\141\162\141\143\164\145\162" \ +"\163\040\151\156\040\154\151\156\145\000\133\055\165\144\135\040" \ +"\133\106\111\114\105\135\012\012\103\157\156\166\145\162\164\040" \ +"\106\111\114\105\040\151\156\055\160\154\141\143\145\040\146\162" \ +"\157\155\040\125\156\151\170\040\164\157\040\104\117\123\040\146" \ +"\157\162\155\141\164\056\012\127\150\145\156\040\156\157\040\146" \ +"\151\154\145\040\151\163\040\147\151\166\145\156\054\040\165\163" \ +"\145\040\163\164\144\151\156\057\163\164\144\157\165\164\056\012" \ +"\012\011\055\165\011\144\157\163\062\165\156\151\170\012\011\055" \ +"\144\011\165\156\151\170\062\144\157\163\000\133\055\143\146\135" \ +"\040\133\106\111\114\105\135\056\056\056\012\012\104\145\143\157" \ +"\155\160\162\145\163\163\040\106\111\114\105\040\050\157\162\040" \ +"\163\164\144\151\156\051\012\012\011\055\143\011\127\162\151\164" \ +"\145\040\164\157\040\163\164\144\157\165\164\012\011\055\146\011" \ +"\106\157\162\143\145\000\133\055\143\146\166\103\106\135\040\133" \ +"\106\111\114\105\135\056\056\056\012\012\011\055\143\011\127\162" \ +"\151\164\145\040\164\157\040\163\164\144\157\165\164\012\011\055" \ +"\146\011\106\157\162\143\145\012\011\055\166\011\126\145\162\142" \ +"\157\163\145\012\011\055\106\011\104\157\156\047\164\040\163\164" \ +"\157\162\145\040\157\162\040\166\145\162\151\146\171\040\143\150" \ +"\145\143\153\163\165\155\000\133\055\143\146\135\040\133\106\111" \ +"\114\105\135\056\056\056\012\012\104\145\143\157\155\160\162\145" \ +"\163\163\040\106\111\114\105\040\050\157\162\040\163\164\144\151" \ +"\156\051\012\012\011\055\143\011\127\162\151\164\145\040\164\157" \ +"\040\163\164\144\157\165\164\012\011\055\146\011\106\157\162\143" \ +"\145\000\133\055\154\156\157\160\161\135\040\106\111\114\105\133" \ +"\056\172\151\160\135\040\133\106\111\114\105\135\056\056\056\040" \ +"\133\055\170\040\106\111\114\105\056\056\056\135\040\133\055\144" \ +"\040\104\111\122\135\012\012\105\170\164\162\141\143\164\040\106" \ +"\111\114\105\163\040\146\162\157\155\040\132\111\120\040\141\162" \ +"\143\150\151\166\145\012\012\011\055\154\011\114\151\163\164\040" \ +"\143\157\156\164\145\156\164\163\040\050\167\151\164\150\040\055" \ +"\161\040\146\157\162\040\163\150\157\162\164\040\146\157\162\155" \ +"\051\012\011\055\156\011\116\145\166\145\162\040\157\166\145\162" \ +"\167\162\151\164\145\040\146\151\154\145\163\040\050\144\145\146" \ +"\141\165\154\164\072\040\141\163\153\051\012\011\055\157\011\117" \ +"\166\145\162\167\162\151\164\145\012\011\055\160\011\120\162\151" \ +"\156\164\040\164\157\040\163\164\144\157\165\164\012\011\055\161" \ +"\011\121\165\151\145\164\012\011\055\170\040\106\111\114\105\011" \ +"\105\170\143\154\165\144\145\040\106\111\114\105\163\012\011\055" \ +"\144\040\104\111\122\011\105\170\164\162\141\143\164\040\151\156" \ +"\164\157\040\104\111\122\000\012\012\104\151\163\160\154\141\171" \ +"\040\164\150\145\040\164\151\155\145\040\163\151\156\143\145\040" \ +"\164\150\145\040\154\141\163\164\040\142\157\157\164\000\116\012" \ +"\012\120\141\165\163\145\040\146\157\162\040\116\040\155\151\143" \ +"\162\157\163\145\143\157\156\144\163\000\133\055\157\040\117\125" \ +"\124\106\111\114\105\135\040\133\111\116\106\111\114\105\135\012" \ +"\012\125\165\144\145\143\157\144\145\040\141\040\146\151\154\145" \ +"\012\106\151\156\144\163\040\117\125\124\106\111\114\105\040\151" \ +"\156\040\165\165\145\156\143\157\144\145\144\040\163\157\165\162" \ +"\143\145\040\165\156\154\145\163\163\040\055\157\040\151\163\040" \ +"\147\151\166\145\156\000\133\055\155\135\040\133\106\111\114\105" \ +"\135\040\123\124\117\122\105\104\137\106\111\114\105\116\101\115" \ +"\105\012\012\125\165\145\156\143\157\144\145\040\106\111\114\105" \ +"\040\050\157\162\040\163\164\144\151\156\051\040\164\157\040\163" \ +"\164\144\157\165\164\012\012\011\055\155\011\125\163\145\040\142" \ +"\141\163\145\066\064\040\145\156\143\157\144\151\156\147\040\160" \ +"\145\162\040\122\106\103\061\065\062\061\000\133\055\156\040\123" \ +"\105\103\135\040\133\055\164\135\040\120\122\117\107\040\101\122" \ +"\107\123\012\012\122\165\156\040\120\122\117\107\040\160\145\162" \ +"\151\157\144\151\143\141\154\154\171\012\012\011\055\156\011\114" \ +"\157\157\160\040\160\145\162\151\157\144\040\151\156\040\163\145" \ +"\143\157\156\144\163\040\050\144\145\146\141\165\154\164\040\062" \ +"\051\012\011\055\164\011\104\157\156\047\164\040\160\162\151\156" \ +"\164\040\150\145\141\144\145\162\000\133\055\143\155\154\167\114" \ +"\135\040\133\106\111\114\105\135\056\056\056\012\012\103\157\165" \ +"\156\164\040\154\151\156\145\163\054\040\167\157\162\144\163\054" \ +"\040\141\156\144\040\142\171\164\145\163\040\146\157\162\040\145" \ +"\141\143\150\040\106\111\114\105\040\050\157\162\040\163\164\144" \ +"\151\156\051\012\012\011\055\143\011\103\157\165\156\164\040\142" \ +"\171\164\145\163\012\011\055\155\011\103\157\165\156\164\040\143" \ +"\150\141\162\141\143\164\145\162\163\012\011\055\154\011\103\157" \ +"\165\156\164\040\156\145\167\154\151\156\145\163\012\011\055\167" \ +"\011\103\157\165\156\164\040\167\157\162\144\163\012\011\055\114" \ +"\011\120\162\151\156\164\040\154\157\156\147\145\163\164\040\154" \ +"\151\156\145\040\154\145\156\147\164\150\000\133\103\117\115\115" \ +"\101\116\104\135\056\056\056\012\012\114\157\143\141\164\145\040" \ +"\141\040\103\117\115\115\101\116\104\000\012\012\120\162\151\156" \ +"\164\040\164\150\145\040\165\163\145\162\040\156\141\155\145\040" \ +"\141\163\163\157\143\151\141\164\145\144\040\167\151\164\150\040" \ +"\164\150\145\040\143\165\162\162\145\156\164\040\145\146\146\145" \ +"\143\164\151\166\145\040\165\163\145\162\040\151\144\000\133\117" \ +"\120\124\111\117\116\123\135\040\133\120\122\117\107\040\101\122" \ +"\107\123\135\012\012\122\165\156\040\120\122\117\107\040\157\156" \ +"\040\145\166\145\162\171\040\151\164\145\155\040\147\151\166\145" \ +"\156\040\142\171\040\163\164\144\151\156\012\012\011\055\160\011" \ +"\101\163\153\040\165\163\145\162\040\167\150\145\164\150\145\162" \ +"\040\164\157\040\162\165\156\040\145\141\143\150\040\143\157\155" \ +"\155\141\156\144\012\011\055\162\011\104\157\156\047\164\040\162" \ +"\165\156\040\143\157\155\155\141\156\144\040\151\146\040\151\156" \ +"\160\165\164\040\151\163\040\145\155\160\164\171\012\011\055\060" \ +"\011\111\156\160\165\164\040\151\163\040\163\145\160\141\162\141" \ +"\164\145\144\040\142\171\040\116\125\114\040\143\150\141\162\141" \ +"\143\164\145\162\163\012\011\055\164\011\120\162\151\156\164\040" \ +"\164\150\145\040\143\157\155\155\141\156\144\040\157\156\040\163" \ +"\164\144\145\162\162\040\142\145\146\157\162\145\040\145\170\145" \ +"\143\165\164\151\157\156\012\011\055\145\133\123\124\122\135\011" \ +"\123\124\122\040\163\164\157\160\163\040\151\156\160\165\164\040" \ +"\160\162\157\143\145\163\163\151\156\147\012\011\055\156\040\116" \ +"\011\120\141\163\163\040\156\157\040\155\157\162\145\040\164\150" \ +"\141\156\040\116\040\141\162\147\163\040\164\157\040\120\122\117" \ +"\107\012\011\055\163\040\116\011\120\141\163\163\040\143\157\155" \ +"\155\141\156\144\040\154\151\156\145\040\157\146\040\156\157\040" \ +"\155\157\162\145\040\164\150\141\156\040\116\040\142\171\164\145" \ +"\163\000\133\106\111\114\105\135\056\056\056\012\012\104\145\143" \ +"\157\155\160\162\145\163\163\040\164\157\040\163\164\144\157\165" \ +"\164\000\133\123\124\122\111\116\107\135\012\012\122\145\160\145" \ +"\141\164\145\144\154\171\040\157\165\164\160\165\164\040\141\040" \ +"\154\151\156\145\040\167\151\164\150\040\123\124\122\111\116\107" \ +"\054\040\157\162\040\047\171\047\000\133\106\111\114\105\135\056" \ +"\056\056\012\012\104\145\143\157\155\160\162\145\163\163\040\164" \ +"\157\040\163\164\144\157\165\164\000" \ #define PACKED_USAGE \ -0x68,0x31,0x31,0x41,0x59,0x26,0x53,0x59,0x37,0x29,0x0d,0x5d,0x00,0x14,0x54,0xdf, \ -0x80,0x72,0x70,0x77,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x60, \ -0x3b,0xed,0xb1,0xf4,0x00,0x9d,0xc0,0x50,0x78,0x3d,0xbb,0x68,0x91,0x4b,0xde,0xb0, \ -0x3a,0xa0,0x02,0xa4,0x0f,0x40,0x0e,0x9a,0x01,0xdd,0x00,0xf0,0x0f,0x76,0x97,0x19, \ -0x3d,0x1f,0x72,0xbc,0xa7,0xd3,0x12,0x9d,0x86,0x88,0x41,0x24,0x8a,0xfa,0x06,0x17, \ -0xc1,0x4d,0xab,0x7d,0x9d,0x13,0x7d,0xc1,0xc0,0xaa,0x2a,0x1f,0x79,0x05,0x03,0x12, \ -0x71,0x77,0x7b,0xdd,0xd5,0x8f,0x45,0x21,0x2a,0x7d,0x69,0x7d,0xf7,0x3a,0xa1,0x2a, \ -0x91,0x76,0xc9,0x49,0x73,0x62,0x54,0x85,0x4e,0xb1,0x2b,0x5a,0xae,0xd9,0x50,0x52, \ -0x8a,0xa2,0x7c,0x50,0x56,0xee,0x1e,0xdc,0xe5,0xed,0xcd,0x2d,0x71,0xa4,0x90,0x10, \ -0xa4,0x57,0x13,0xe1,0xa1,0x04,0xd0,0x01,0x31,0x1a,0x34,0x4c,0x00,0x46,0x99,0x09, \ -0x89,0x3d,0x26,0x9a,0x34,0xc9,0xea,0x36,0x40,0xa6,0xc0,0x4c,0xa6,0xd4,0x34,0x1a, \ -0x68,0x10,0x10,0x40,0x53,0x04,0xc9,0x30,0x09,0xa6,0xa9,0xe4,0x69,0xa9,0xe4,0x9e, \ -0x53,0x20,0xd0,0x34,0x68,0x1a,0x0d,0x00,0x1a,0x06,0x98,0x84,0x48,0x99,0x32,0xa7, \ -0xa9,0xb4,0xda,0xa6,0x47,0xa8,0x7a,0x4d,0x0d,0x00,0x0d,0x1a,0x1a,0x03,0x40,0x34, \ -0x06,0x80,0xd0,0x00,0x12,0x69,0x44,0x10,0x8c,0x84,0x60,0x81,0x27,0xa3,0x49,0x93, \ -0x11,0xe8,0x9a,0xa6,0xd1,0xa0,0xd3,0x53,0xf4,0x53,0x26,0x7a,0x88,0x32,0x3d,0x46, \ -0x83,0x40,0x61,0xb4,0x91,0x2a,0x7e,0x23,0x46,0xa9,0xa6,0xf4,0xd5,0x3d,0x4f,0x28, \ -0x68,0x00,0xf5,0x34,0x3d,0x40,0x03,0x26,0x8d,0x00,0x00,0x1a,0x00,0x00,0x12,0x22, \ -0x10,0x08,0x02,0x69,0xa2,0x62,0x64,0x11,0x83,0x48,0x4d,0xa6,0xaa,0x7f,0xa0,0xd0, \ -0x9a,0x6a,0x9e,0xa6,0x83,0x35,0x00,0x31,0x0f,0x51,0xb5,0x3e,0x53,0x76,0x78,0xac, \ -0xf1,0x45,0xfd,0xfd,0x38,0x3b,0xe3,0x86,0x10,0xa6,0x7e,0xab,0x35,0xbc,0xbf,0xeb, \ -0xc6,0xf7,0xae,0xda,0xbd,0x8f,0x7a,0x90,0x44,0xfb,0x99,0x47,0x4b,0x21,0x7a,0x6f, \ -0x8b,0x94,0x73,0x9e,0x9d,0xed,0xf5,0xbe,0x42,0x1d,0xff,0xd1,0x72,0x4a,0xd9,0xdf, \ -0xf4,0x16,0x94,0x34,0xed,0xb7,0x1a,0x66,0x9a,0xe4,0xaa,0xba,0xe3,0xae,0x3c,0x67, \ -0x95,0x4d,0xe3,0x96,0x5e,0xa6,0xad,0x2b,0x62,0xe3,0xe5,0xc5,0x44,0xaa,0xeb,0xab, \ -0x72,0xd6,0x26,0x05,0xd6,0x7f,0xd7,0xa6,0x99,0xc2,0xfe,0xcc,0x5e,0x0e,0x05,0xcf, \ -0xfd,0x1b,0xe7,0xf8,0x6f,0x1b,0xce,0x62,0x03,0x79,0xe9,0x14,0xf4,0x33,0xa9,0xe6, \ -0x74,0xc1,0xa4,0x53,0xed,0xf6,0x0c,0xc7,0xb1,0x34,0x93,0x41,0x67,0x02,0x29,0x50, \ -0x21,0x91,0x2b,0xfd,0xf6,0x29,0x57,0xa6,0x67,0xa5,0xd2,0x60,0xf3,0xfc,0xcd,0x1f, \ -0x78,0x1d,0xa2,0x7f,0xee,0xd1,0xf7,0xd1,0x86,0x59,0x34,0xc5,0xb3,0xf8,0xe3,0x4f, \ -0xee,0xf4,0xd7,0x3e,0xb7,0x9e,0xfb,0x36,0xdd,0xd2,0xdc,0x90,0x58,0x34,0xd6,0xc7, \ -0x1c,0x8a,0x7e,0xa4,0xf6,0xdc,0x92,0xae,0x3a,0xe2,0x49,0x0b,0xee,0x71,0x4a,0xf6, \ -0xd8,0xe9,0xbc,0xf7,0x16,0x89,0x82,0x9f,0xb2,0x17,0x19,0x98,0x06,0x0c,0xcc,0xfe, \ -0xfd,0x9a,0x56,0xb5,0x63,0x4d,0x80,0x20,0x0f,0xdb,0xdb,0x1f,0x56,0xa8,0x40,0x50, \ -0x75,0xfe,0x9e,0x6f,0x6e,0x9f,0xaf,0xc6,0x98,0x7a,0x8e,0x58,0x7a,0x9f,0xf5,0x76, \ -0xe6,0xc4,0x2e,0x2a,0xe8,0xf7,0x6a,0x78,0xc4,0xc5,0xb1,0x42,0x98,0x53,0x5b,0x84, \ -0x70,0xc8,0x60,0x30,0x2f,0xd0,0x33,0x7d,0xb5,0xe1,0x3d,0x1e,0x07,0x3f,0x3e,0x26, \ -0x0d,0x6b,0xd3,0x72,0x0c,0x55,0x54,0x6a,0x02,0x73,0x33,0x8b,0x6c,0xa4,0xc5,0x54, \ -0xb5,0x3f,0x36,0x0a,0xa0,0xc3,0x0f,0x25,0x93,0xae,0x38,0x2d,0x89,0x00,0x5c,0x72, \ -0x36,0xab,0xcc,0xb9,0x84,0xbf,0x0d,0x82,0x3d,0xf5,0xc0,0x22,0xbd,0x2d,0xaf,0x35, \ -0x55,0x37,0x8e,0x9f,0x17,0xc6,0xee,0x6a,0x04,0x50,0xc9,0xcd,0xa1,0x77,0x6c,0xdc, \ -0x03,0x71,0x6c,0x2b,0x48,0x28,0x19,0x01,0x8b,0x91,0x5d,0xc6,0x39,0xf8,0x68,0xc9, \ -0x07,0x28,0x6e,0xa3,0xb0,0x7b,0xf6,0xfb,0xd4,0xe6,0x6b,0xb9,0xbc,0x99,0x97,0xc0, \ -0x8d,0xc1,0x5d,0x0a,0xcf,0x5f,0x3d,0x9c,0xba,0x5b,0xb5,0x35,0x05,0x81,0x37,0x0d, \ -0x6a,0x80,0x49,0x2a,0xa9,0xbf,0xb5,0x59,0x4d,0x76,0x38,0x3a,0x1c,0xd9,0x44,0xbc, \ -0x60,0xc2,0xc1,0xc8,0x58,0xb6,0x05,0x60,0x15,0x0c,0x8f,0xeb,0xa0,0x4c,0xc5,0xad, \ -0x03,0x21,0xdc,0xf4,0x93,0xec,0xfc,0x5c,0x2e,0x6f,0x91,0x55,0xfc,0xf5,0x40,0x23, \ -0xdc,0xe9,0xf7,0xf0,0x86,0xcc,0xd6,0x57,0xcb,0xd5,0x7c,0xa4,0x0d,0x82,0x15,0xab, \ -0x2b,0x83,0xa0,0x60,0xda,0x29,0x16,0x98,0xaa,0x34,0x41,0xa3,0x8a,0xf3,0x72,0x35, \ -0xfc,0x58,0x65,0x97,0x51,0xde,0x3c,0xf9,0x2d,0xb4,0x01,0x81,0x51,0x00,0x87,0x09, \ -0x8e,0x64,0x06,0x66,0x0c,0xc5,0x8a,0x0a,0x21,0xde,0xa7,0x42,0x60,0xa3,0x63,0x4f, \ -0xdb,0x00,0x55,0x69,0x3d,0xfb,0x19,0x7d,0x3c,0x6f,0x68,0x67,0xf3,0xbf,0x0b,0x92, \ -0xe5,0x2d,0x27,0x93,0xc3,0x99,0x1c,0xc2,0x11,0x0b,0x79,0x52,0xee,0x56,0x1b,0x5b, \ -0x77,0x33,0x30,0xd9,0x8d,0x79,0xd1,0x1d,0xc9,0x1d,0xe7,0xc3,0xd9,0xef,0x8e,0xab, \ -0xb5,0xe2,0x8f,0x03,0xf3,0xb6,0xc0,0xaa,0xd5,0x95,0x30,0x2d,0xba,0xf5,0x41,0x95, \ -0x69,0xfe,0x65,0x16,0x51,0x6a,0x41,0x59,0xd8,0x39,0x83,0x65,0xd9,0x53,0x4a,0x03, \ -0xa4,0x1b,0x8c,0x64,0x81,0xbe,0x2c,0x94,0x3e,0xf5,0x80,0x18,0x10,0x4f,0x4e,0x22, \ -0x35,0xdd,0xb7,0x6b,0xbb,0x2f,0x1b,0xfc,0x29,0x50,0x1e,0x27,0x47,0xfa,0xa0,0x11, \ -0x2c,0x0f,0x8b,0x4b,0x22,0x02,0x25,0xa6,0x30,0x0b,0xcf,0x44,0x12,0x9a,0x54,0x68, \ -0x81,0xf1,0x1a,0x29,0xbb,0x9f,0xf8,0x5d,0xe4,0xf7,0x69,0xf7,0xd5,0x63,0x77,0xb7, \ -0x2d,0x2e,0xbf,0x87,0xd1,0xde,0xee,0x5d,0xeb,0x9d,0xd3,0xd9,0x93,0xd5,0x5e,0x63, \ -0x40,0xd3,0xf1,0x77,0x38,0xae,0xe5,0x8f,0x11,0xd3,0xf1,0xea,0x68,0xec,0xd8,0x32, \ -0xc0,0xa2,0x55,0x94,0x47,0x1f,0x17,0x90,0x90,0x3e,0xd1,0xd7,0x5b,0xc2,0x7c,0x8a, \ -0x28,0xa7,0x5d,0xe1,0xf4,0x04,0x41,0x20,0x5e,0x72,0xfa,0xfb,0x2d,0x3e,0x79,0xc0, \ -0x12,0xf6,0x72,0x15,0x97,0x42,0x2d,0x2a,0x04,0x2c,0xb2,0x74,0x34,0x8f,0x34,0x33, \ -0x81,0xd4,0xea,0x40,0x1e,0xdd,0xd6,0x48,0xb9,0x24,0x1f,0x91,0xa7,0x4c,0x69,0x8f, \ -0x55,0x4f,0xda,0xf5,0xec,0x86,0x69,0xf0,0xfd,0xc1,0x97,0x17,0xf9,0x8a,0xd4,0x2a, \ -0xaf,0x0d,0x36,0xec,0x70,0x30,0x00,0xa2,0x0c,0xf6,0xdb,0xab,0xbb,0x5f,0xb2,0xdc, \ -0xc7,0xc5,0xa0,0x63,0xcf,0xe7,0x5b,0x7d,0x33,0x81,0xca,0xaa,0x64,0x6c,0xcc,0x4e, \ -0xac,0xc8,0xda,0x76,0x89,0x87,0x27,0x8e,0x17,0xb3,0x84,0xa0,0x61,0xc9,0x72,0x58, \ -0x6f,0xf5,0xe9,0x67,0x80,0x42,0xd9,0x80,0xdc,0x28,0xd6,0x31,0xa5,0x72,0x33,0x69, \ -0x0e,0x49,0x0b,0x7c,0xb3,0x87,0xfa,0x88,0x50,0xdd,0x78,0x31,0x7f,0x66,0x9e,0x6d, \ -0x06,0x20,0x8b,0x6a,0x19,0x7a,0x5d,0xab,0xc9,0x98,0x92,0x94,0x0b,0x9a,0x2b,0xbc, \ -0xaf,0x37,0x80,0xd6,0x6e,0x08,0x30,0xf5,0xaf,0xd9,0xc9,0x5e,0xd8,0xea,0xb7,0x08, \ -0x6a,0xb1,0x7e,0xc8,0xab,0xaa,0x08,0x90,0xd4,0x78,0x41,0xc5,0x7d,0x59,0x17,0xd3, \ -0xe0,0xec,0x8e,0x6d,0xd4,0xf5,0xe9,0x9e,0x79,0x1d,0xd2,0xc5,0x2e,0x4b,0x6e,0x56, \ -0x76,0xd4,0x91,0x5b,0xb7,0xa8,0xed,0x9d,0xa2,0x52,0x0c,0xfa,0x95,0x4d,0x90,0x28, \ -0x5e,0xe5,0xe6,0xf5,0x30,0xec,0x15,0x01,0x00,0xe7,0xd2,0xd7,0xa0,0xf3,0xd4,0x38, \ -0x1e,0xe3,0xc7,0xdf,0x7c,0x2a,0x06,0x3f,0x82,0xaa,0x1c,0xcd,0x59,0xdb,0x1d,0xb6, \ -0x73,0x37,0xae,0xef,0xf0,0xce,0x8a,0x23,0x10,0x40,0xba,0xa9,0x73,0x50,0x72,0x6f, \ -0x96,0x2d,0xe5,0x45,0x20,0x86,0xf6,0xac,0xc9,0x3d,0xad,0xa7,0x83,0x69,0x3c,0x29, \ -0x7a,0x9f,0x0e,0x0c,0x48,0x59,0x72,0x46,0xbf,0x5e,0xae,0xf5,0xae,0x96,0x11,0xfe, \ -0xd3,0xcb,0xdf,0x03,0x5a,0xc5,0x0e,0x04,0xf7,0xbc,0x7b,0xab,0xa4,0x09,0x9f,0x81, \ -0x1d,0x41,0x3e,0x38,0x03,0x2c,0xa1,0xd8,0x09,0x25,0xbe,0x65,0x1f,0x06,0xfe,0x7f, \ -0x6e,0xcd,0x5b,0xab,0x1f,0x56,0xc7,0x0c,0x25,0x6b,0x0f,0xb4,0x0f,0x36,0x63,0xe8, \ -0xe3,0x86,0xf7,0xf0,0xb5,0xaa,0x83,0x38,0x27,0x35,0xd6,0x06,0x5e,0xf1,0x2e,0x7e, \ -0x6b,0xbf,0x8e,0x79,0x76,0xed,0xfc,0x78,0x28,0xcf,0xe1,0xfe,0xcb,0xf0,0xc8,0x51, \ -0x3d,0x15,0xb3,0xe8,0xe8,0xe7,0xd7,0x98,0x21,0x6a,0xc4,0xd8,0xc5,0x7a,0xf2,0xe2, \ -0xfc,0x5c,0xfa,0xee,0x59,0xe3,0x4e,0xdd,0x13,0xbb,0xe4,0xee,0xe2,0xf7,0x70,0xdc, \ -0x56,0x2f,0x44,0x2a,0xf5,0xa8,0xdb,0x9c,0x1c,0x9c,0x9d,0xf6,0xe8,0x09,0xed,0x30, \ -0xae,0x71,0x86,0x39,0x29,0x67,0x5d,0xf5,0x38,0xe4,0x9a,0xe2,0xe9,0x43,0x5c,0x75, \ -0x79,0x3f,0x21,0xd8,0x80,0x6a,0x84,0x88,0x80,0x28,0xbd,0x2d,0x15,0xe2,0xd8,0x7e, \ -0x44,0x08,0x56,0x28,0x41,0x61,0x1d,0xad,0x64,0x13,0xc5,0x94,0x3a,0x69,0xd3,0xeb, \ -0xf1,0xe3,0x3e,0xff,0x9f,0x5d,0x96,0x8c,0x8a,0xa8,0x56,0xc1,0xa3,0x54,0xbe,0xae, \ -0xd2,0xfc,0xa3,0x78,0x53,0xd0,0xe1,0xb9,0x6c,0x85,0x13,0x97,0xcb,0x7a,0x80,0x0e, \ -0x86,0xd2,0x22,0x7f,0x79,0x2d,0x18,0xd7,0x87,0x84,0x52,0x3a,0x89,0x23,0xab,0x0f, \ -0x80,0xa0,0x5d,0xa6,0xa6,0x48,0x5f,0x45,0xda,0x87,0xe6,0x80,0xa8,0x3e,0x0b,0xd8, \ -0xcb,0x7f,0x8a,0xd3,0x7f,0x04,0x99,0xf8,0x2f,0xba,0xf9,0x1d,0x31,0x8d,0x6f,0x6b, \ -0xb7,0x63,0xaf,0xc3,0x5b,0x13,0xbb,0xb2,0x86,0xd2,0x41,0x1d,0x82,0x84,0x13,0x43, \ -0xb2,0x54,0x06,0x80,0x3e,0x17,0xef,0x12,0x16,0xf1,0xf4,0xe6,0xdd,0xd6,0x5b,0x33, \ -0x53,0x25,0xd4,0x05,0x32,0xe4,0xc3,0x32,0xa7,0xe7,0xae,0x0d,0x9b,0x9f,0x86,0xdc, \ -0xf8,0xc6,0x26,0x3b,0xdc,0xcc,0xf2,0xc3,0xe7,0xa6,0x90,0xdf,0xb7,0x4d,0x1d,0x3e, \ -0x56,0xf7,0x53,0x97,0x96,0x34,0x9b,0xd9,0xd4,0xe0,0x30,0x7f,0x50,0xd2,0xdc,0x83, \ -0x8f,0xd3,0x16,0x69,0xbe,0xde,0x59,0x8d,0x73,0xb2,0x12,0xb6,0x93,0x5e,0x82,0x04, \ -0x0c,0x78,0x70,0x61,0x10,0x5d,0x09,0x83,0x45,0x28,0xc8,0xb8,0xa0,0xe9,0x25,0x96, \ -0x62,0x38,0x62,0x7f,0xba,0x2c,0x0b,0x4c,0xe5,0x65,0x27,0x63,0xe4,0x02,0x7d,0xfe, \ -0x08,0x29,0xab,0xf9,0x96,0x30,0xfa,0xcb,0xe1,0x7c,0x0d,0x33,0x09,0xb0,0x6d,0x64, \ -0x10,0x0f,0x9e,0x4f,0x8e,0x5e,0xed,0x18,0x7a,0x6f,0x5d,0x61,0x7c,0x67,0xd3,0x68, \ -0x02,0x8b,0x55,0x90,0x0d,0x77,0xc1,0x47,0xe5,0x1f,0xb3,0xad,0x73,0x20,0xc0,0x99, \ -0x5f,0xbc,0xd9,0x18,0xff,0x0e,0x91,0x89,0x7d,0xf1,0xe5,0x1c,0x13,0xd5,0x00,0x48, \ -0xc7,0x52,0xf2,0x6b,0x07,0xea,0xdb,0x2f,0x57,0xfa,0x19,0xef,0x99,0x62,0x2b,0xb5, \ -0x5b,0xb6,0xbf,0x4e,0x79,0x20,0x35,0x76,0xd0,0x42,0xe4,0x8c,0x1d,0xb6,0x5c,0xed, \ -0x46,0xb6,0x8d,0xa7,0xb0,0x73,0x18,0x61,0xb1,0xfc,0x7e,0x91,0x76,0xe1,0x02,0xd8, \ -0xc4,0x0b,0x42,0xee,0x58,0x7f,0x1c,0x0e,0x64,0x71,0x21,0xfe,0x33,0x77,0x15,0xcf, \ -0x2e,0xbe,0xae,0xc5,0xd3,0x0b,0xc0,0x76,0x1a,0x8b,0x11,0xac,0x4e,0x6b,0x8b,0x72, \ -0xae,0x3e,0x8d,0xa0,0x5e,0xc5,0x5a,0x3c,0xbf,0x08,0xf4,0x07,0x46,0x2d,0x7a,0x41, \ -0xd7,0x5a,0xe2,0x91,0x99,0x06,0x81,0x72,0x7f,0x0c,0x7d,0xc4,0xf0,0x38,0x68,0x42, \ -0x50,0x33,0x8d,0xe4,0xbc,0xfa,0x12,0xbd,0x7f,0x8d,0x5c,0x7a,0xef,0x8b,0x24,0x75, \ -0x35,0x8d,0x6d,0xee,0xa2,0x54,0x82,0x3e,0xd8,0xa6,0xbe,0x6f,0x81,0x96,0x54,0x23, \ -0xac,0x81,0x82,0xda,0xf0,0x41,0x5d,0xbb,0x76,0x86,0x3e,0x20,0x48,0x21,0x57,0xb3, \ -0xf4,0xc7,0x1b,0x13,0xc2,0xd5,0x52,0xd6,0x1d,0xbc,0x06,0x0c,0x06,0x95,0x5d,0x97, \ -0xb1,0x61,0xc3,0x90,0x1d,0x5e,0xfe,0x6d,0x39,0x07,0x9d,0xe2,0xdd,0x9d,0xb7,0x30, \ -0xfa,0xf6,0x1e,0xee,0x5c,0xf7,0x15,0x3c,0xfd,0x12,0xc8,0xd3,0xfd,0xe1,0x49,0xcc, \ -0x9a,0x62,0xd1,0xbf,0x24,0x33,0x99,0xf2,0x34,0x19,0x55,0x75,0x90,0x5b,0x40,0x89, \ -0xc1,0x8f,0x35,0x55,0xc9,0x33,0x04,0x94,0x6e,0x1f,0x83,0xef,0xb9,0x01,0x90,0xa0, \ -0xc4,0x29,0xa4,0x6f,0x14,0xc2,0x74,0x4e,0x25,0x96,0x59,0x8e,0x00,0x27,0xa5,0xba, \ -0x04,0xbc,0xac,0x98,0xf6,0xe8,0x24,0x4f,0x41,0x3c,0xe3,0x42,0xa3,0xc4,0xe6,0xfc, \ -0x2b,0xdd,0xc2,0x22,0x14,0xfc,0xd4,0x5e,0x03,0xe7,0x50,0xef,0xdb,0x4e,0x5d,0x53, \ -0x58,0x89,0x0d,0xb1,0x9a,0xfa,0x71,0xe1,0x7f,0x4d,0x6d,0x39,0xc4,0x53,0xfb,0xe2, \ -0x63,0x0f,0x01,0xef,0xea,0xdd,0xb3,0x06,0x00,0x7d,0x4c,0x35,0x0c,0x6d,0x79,0xb1, \ -0x84,0x6e,0x69,0x13,0x2c,0x47,0xf0,0x3b,0x8f,0xed,0x3e,0xec,0xfd,0x6c,0x38,0xb0, \ -0xd1,0x9f,0x6a,0x42,0x54,0x37,0x4d,0x59,0xf7,0xc1,0x30,0xe2,0x84,0x43,0x97,0x0c, \ -0xb5,0x21,0x75,0x78,0x7f,0x69,0xe0,0xc0,0xe8,0x5d,0x71,0x72,0x27,0xab,0x69,0xd1, \ -0xf7,0x27,0xe6,0xe7,0x00,0x3c,0x79,0xf9,0x14,0x20,0x65,0x19,0xee,0x57,0xbd,0xe2, \ -0x83,0x15,0x32,0xaa,0x4d,0x3c,0x03,0xf9,0x51,0xaa,0x01,0x2f,0x7a,0xdf,0x2c,0xf7, \ -0x41,0x6b,0x5d,0xdc,0x7d,0xec,0x11,0x5a,0x4f,0xd8,0xd9,0xd7,0x4f,0x1c,0xd7,0x5a, \ -0x0f,0xd1,0x45,0x1f,0x2d,0x86,0x5a,0x59,0xbe,0x1c,0x43,0x81,0x59,0x4a,0xca,0x92, \ -0x68,0xbc,0x7d,0x2b,0xca,0xd2,0xf1,0xb9,0xe3,0x40,0x08,0x71,0xb4,0x85,0x36,0x80, \ -0xbc,0x08,0x63,0xa5,0xd4,0x54,0x06,0x51,0xe0,0xfd,0xf5,0x8f,0x2f,0xce,0x37,0x1a, \ -0x3a,0x7d,0xf7,0x5a,0x77,0x28,0xc9,0x74,0xec,0xda,0xd8,0xa6,0xd1,0xc6,0x8d,0x70, \ -0x16,0x9c,0xbd,0x34,0xfa,0x74,0xb6,0x80,0x57,0x3a,0x35,0xaa,0xa0,0x71,0x79,0xf0, \ -0x6d,0x6f,0x27,0x84,0xec,0x50,0x39,0x23,0x15,0xec,0xed,0x7d,0xbf,0x22,0x8e,0x25, \ -0x35,0x3f,0x3f,0xc3,0xcb,0x21,0xc4,0x59,0x50,0xaf,0xd1,0xcc,0xc2,0x36,0xc1,0x53, \ -0xe5,0xd5,0x06,0x5b,0xd1,0x7b,0xba,0x56,0xf6,0x1c,0xb6,0x50,0x5e,0xc2,0xb5,0x84, \ -0xb8,0x1c,0xd4,0xa8,0xb2,0x2a,0x85,0x24,0x47,0x48,0xbb,0x5a,0x01,0xe6,0x62,0x43, \ -0xa1,0x4e,0x38,0xe3,0xa2,0x47,0xce,0x23,0x92,0x58,0x44,0x41,0xc8,0x68,0x46,0x99, \ -0x03,0x51,0x6a,0xef,0x68,0x66,0x0e,0x58,0xe4,0x96,0x9c,0x2e,0x02,0x92,0x08,0x73, \ -0x9b,0xba,0x05,0x64,0xcf,0xb1,0xc3,0x6b,0x46,0x69,0xf3,0xb4,0x5c,0x43,0xdb,0xe0, \ -0xa9,0xb5,0x33,0xcf,0xe1,0xfd,0xd6,0xc7,0xbe,0x1b,0x8e,0x86,0x85,0xae,0x5c,0xe6, \ -0x55,0xd2,0x82,0x83,0x07,0x17,0x63,0x92,0x08,0x5a,0x8f,0x2d,0x09,0xc0,0x30,0xa7, \ -0x01,0xba,0xa6,0x97,0xe0,0xf9,0x0a,0xc8,0x74,0xa7,0x2b,0xf3,0xd3,0x93,0xa4,0x03, \ -0xe3,0x55,0x07,0xe7,0x7d,0x93,0x9a,0x46,0x5f,0x7d,0xb9,0x37,0x23,0x1e,0x8c,0x38, \ -0xdd,0xf9,0xcf,0xbe,0xa2,0x5f,0x66,0x79,0x1b,0x9a,0xf6,0xf6,0xb0,0x6c,0x60,0x60, \ -0x3a,0x8e,0x84,0x64,0x38,0x5f,0x64,0x05,0x83,0x0b,0xc9,0x5c,0x71,0xe9,0x3a,0x46, \ -0x3e,0xd5,0x9d,0xed,0x9b,0xa7,0xad,0xe6,0x3c,0x57,0xd2,0x0f,0xd2,0x1b,0x6b,0xdb, \ -0x59,0x0a,0x3a,0x72,0xbd,0x53,0xf0,0x31,0xaf,0x3b,0x0b,0xe2,0xb2,0xf7,0x24,0x6a, \ -0x19,0x41,0xb4,0x3e,0x66,0xab,0x28,0xc9,0x4a,0x30,0xb3,0xfb,0xa0,0x61,0x94,0x9f, \ -0xbb,0x36,0x29,0x5c,0xf8,0x5c,0xfb,0x2c,0x28,0x81,0xa4,0xf8,0xbf,0x9a,0x91,0x5a, \ -0x0c,0x8d,0x95,0x46,0x9f,0x92,0xcf,0x11,0xe7,0x9a,0x48,0xf8,0x45,0xb4,0x08,0xf8, \ -0x4b,0x7e,0xb0,0xd0,0x4a,0x1c,0x5d,0x7b,0xc1,0x4e,0xd2,0xb9,0x90,0xd0,0x6a,0xe4, \ -0xec,0xde,0xf5,0x19,0xf0,0xd1,0x16,0x15,0x29,0x94,0xb0,0xb8,0xd6,0x40,0x80,0xa0, \ -0xfc,0x7f,0x2f,0x4f,0x5a,0x38,0xa7,0x8a,0xa5,0x4f,0x0e,0x9a,0xde,0x95,0xd6,0xa0, \ -0x9f,0x47,0x21,0xe7,0xb7,0x0f,0x37,0x75,0xc3,0x68,0x7c,0xb9,0xc6,0x20,0xc9,0x19, \ -0x51,0x02,0x6e,0xdd,0x4c,0xe2,0x36,0xef,0x83,0xda,0x95,0x8c,0x72,0xb0,0xa5,0xc8, \ -0x80,0xda,0x3a,0xc7,0x8a,0x8d,0x8d,0x16,0xba,0xb5,0x43,0xdd,0x80,0xec,0x14,0x23, \ -0x3c,0x68,0xe3,0xd6,0x0c,0xde,0xcb,0xa5,0x23,0x5e,0x22,0xdf,0x8e,0x8b,0x53,0x6d, \ -0x6a,0xd1,0xb0,0xdd,0x78,0x47,0x01,0x34,0x6a,0xef,0x40,0x3e,0x3a,0x46,0xf2,0xa9, \ -0xbf,0xd4,0x3e,0xcf,0x30,0x7a,0x46,0x6b,0x77,0x7f,0xd3,0x50,0xbc,0x4c,0x20,0xaa, \ -0x4c,0x2f,0x07,0x5d,0xd6,0x58,0x7a,0x3d,0xff,0x0d,0xc0,0x8d,0x70,0x3b,0x6c,0xec, \ -0x6d,0xdf,0xf9,0xdd,0xf0,0xa9,0x32,0xa0,0x68,0x54,0x8e,0x8e,0xd5,0xef,0x0b,0x2e, \ -0xbc,0x34,0xf2,0xb6,0x90,0x3b,0x2f,0x35,0x65,0x94,0xed,0x22,0xed,0x46,0x22,0xf4, \ -0x5e,0x55,0xbd,0x0d,0x96,0xd0,0x93,0xb8,0x20,0x52,0x63,0x54,0x31,0x14,0x56,0x98, \ -0x35,0x29,0x78,0xd5,0x6e,0x4d,0x0e,0x5c,0x4e,0xf5,0xba,0x63,0x50,0x65,0xd4,0x49, \ -0x3c,0x09,0x18,0x1f,0xa8,0x3b,0x30,0x1e,0xcf,0xb3,0xc2,0xd1,0xa5,0xbd,0x56,0x16, \ -0x82,0x08,0x03,0x4e,0xf6,0xa4,0x78,0x37,0x75,0x11,0xfc,0x94,0x86,0x69,0xa8,0x5a, \ -0xd0,0x41,0xe0,0xcd,0x30,0x6e,0x03,0x5d,0xf8,0x94,0x17,0xa1,0x45,0x69,0x96,0x22, \ -0x1b,0x9b,0x30,0x58,0xe9,0xe8,0xba,0xc9,0x61,0x08,0x8d,0xb9,0x9b,0x03,0x1a,0x6d, \ -0x9e,0xa3,0x4e,0xf5,0xa7,0x3a,0x20,0xc7,0x08,0x6e,0xab,0xcd,0x03,0x19,0xbc,0x28, \ -0x42,0x47,0x92,0x55,0x1c,0x54,0xba,0x5b,0xc5,0x63,0x23,0x73,0x5f,0xc0,0xc0,0x6b, \ -0x56,0xbd,0x4c,0xbf,0x6f,0xb8,0xcb,0x10,0x28,0x86,0x2c,0xab,0x7c,0xb0,0xcc,0x85, \ -0x39,0x1b,0x4b,0x8b,0x0d,0x74,0x71,0x9e,0x5b,0xde,0x98,0x67,0x20,0x67,0x45,0xce, \ -0x95,0xec,0x70,0x1e,0xbb,0xf8,0x81,0xbe,0xa2,0xeb,0xb8,0x21,0x8d,0x8d,0xcf,0x4f, \ -0x70,0x87,0x2e,0xb6,0x5c,0xf1,0xdc,0x40,0x1a,0xb4,0x62,0x9c,0xa8,0xfc,0x52,0xb4, \ -0x30,0xe9,0x00,0xb0,0xf7,0x4b,0x35,0x95,0x44,0xa8,0x57,0xb4,0x2f,0x21,0x0d,0x91, \ -0xd0,0xc7,0xa0,0x72,0xd3,0xbe,0x3a,0x93,0x5e,0xb5,0xe2,0x76,0xdb,0x4e,0x02,0x8e, \ -0x28,0x23,0xac,0xef,0xc1,0x6f,0xb7,0x21,0x8a,0x40,0xfe,0x9d,0x56,0xbd,0xbf,0x43, \ -0x57,0xb1,0x52,0xda,0xa8,0xbe,0x55,0xd9,0x46,0xe4,0x29,0xd7,0x1c,0x93,0x78,0x06, \ -0xc9,0xc6,0xa2,0x87,0x3e,0x09,0x71,0x7c,0xd8,0x50,0x3d,0x45,0x58,0x36,0x7a,0xc8, \ -0xbc,0x0c,0xe7,0x4a,0xf3,0xe2,0x58,0xb3,0x02,0x6f,0x83,0x90,0xf8,0x1d,0xc1,0x40, \ -0xd4,0x91,0x97,0x62,0x4a,0xd1,0x84,0x18,0xe8,0xa1,0x1c,0x9c,0x8d,0xd9,0x72,0x0d, \ -0xa5,0x0e,0x2e,0x43,0xa5,0xab,0xa2,0xd5,0x0d,0xe2,0xb3,0x22,0x45,0x19,0x21,0x12, \ -0xa4,0xce,0x02,0xe6,0xad,0x52,0x1c,0x01,0x62,0x05,0x5b,0x7b,0x2d,0x21,0x98,0x0b, \ -0x88,0x99,0x33,0x18,0x2b,0x0a,0x37,0xc8,0x72,0x24,0x01,0x4d,0xf8,0x7a,0xdd,0xe1, \ -0x16,0x5a,0xac,0xbc,0x45,0x2c,0xd6,0x9a,0x53,0x50,0x58,0x10,0x87,0x69,0xa8,0x23, \ -0x72,0x0a,0x12,0x47,0x28,0x9d,0xce,0xde,0xc7,0xd6,0xd7,0x5d,0x38,0x6e,0x32,0xc0, \ -0x50,0xdb,0x6e,0xdf,0xb7,0x87,0x41,0xeb,0xef,0xe1,0xe7,0xca,0x0c,0xe4,0xd4,0x25, \ -0x1d,0xd1,0xc1,0x70,0x70,0xe1,0x63,0xe7,0x94,0x62,0xfc,0x38,0x7a,0x60,0x75,0xec, \ -0xbc,0x03,0x5e,0x3c,0x94,0x77,0x75,0xc8,0x17,0xf2,0x84,0xf8,0xbd,0x8b,0x6a,0xab, \ -0xc9,0x54,0x1b,0x2b,0x02,0xdd,0xdf,0x9a,0x9b,0x46,0xb3,0x46,0xb0,0x3e,0xbd,0xbc, \ -0xb1,0x78,0xf1,0x21,0x49,0xe1,0x50,0xcc,0x26,0x96,0x0d,0x5f,0x2c,0x78,0xf3,0x5c, \ -0x5b,0x35,0x1c,0x0c,0x0f,0xac,0xef,0x3d,0x05,0x67,0xbd,0x21,0x9b,0xd7,0x0d,0x5a, \ -0xdb,0x6a,0x23,0xc0,0xfc,0x51,0xdf,0x5a,0xf1,0x73,0xdc,0xca,0x46,0xa4,0x0a,0xf9, \ -0x8e,0x38,0x46,0xc2,0x1c,0x2c,0xea,0xd5,0x87,0xbe,0x16,0x4b,0x51,0x69,0x83,0x00, \ -0xc2,0xdc,0x08,0x3d,0x12,0xd9,0x14,0x11,0x3e,0xb8,0x9f,0xbc,0xd8,0x59,0xc5,0x9e, \ -0xb0,0xd5,0x91,0xed,0xcc,0x48,0xed,0xfa,0x2a,0x9b,0x44,0x63,0x6c,0xb6,0x54,0x50, \ -0xa4,0x94,0x8e,0x18,0xd2,0xb0,0x17,0x45,0xb8,0xf9,0x84,0x2b,0x63,0x8f,0x18,0xf5, \ -0x72,0x5e,0x23,0xb7,0x4d,0xe9,0x75,0x53,0xc2,0x33,0x01,0xeb,0xc3,0x01,0x5b,0xb0, \ -0x03,0xd9,0xc1,0xcd,0x00,0xa2,0x65,0x1d,0x57,0x2d,0xbb,0x46,0xb6,0xf6,0x83,0xb3, \ -0xa2,0x30,0xa0,0x56,0xb0,0x5b,0xa7,0x45,0xc7,0x3f,0xba,0xd6,0xe0,0x4d,0x10,0x75, \ -0xb9,0xb0,0x4c,0xec,0xa7,0xd9,0x2c,0x28,0x75,0x6b,0xb1,0xe6,0xa7,0x69,0x70,0x46, \ -0x28,0xd6,0xd5,0xf0,0xe3,0x24,0x05,0x9d,0x4c,0x44,0xa8,0xc4,0x4b,0x56,0xb8,0xf4, \ -0x46,0xbd,0x69,0x51,0xb1,0x3c,0x15,0x31,0x35,0x90,0xf0,0x7d,0x9b,0x20,0xed,0x3b, \ -0x3f,0x42,0x94,0xc8,0x17,0x71,0x2f,0xe9,0x24,0x69,0xc0,0x77,0x4a,0x11,0x64,0x12, \ -0x15,0x14,0x30,0xa0,0xee,0xa2,0x09,0x1a,0xcd,0x5e,0xf5,0x2e,0x4c,0xd9,0x68,0xdc, \ -0x5a,0xff,0x96,0xcd,0xe0,0x75,0x0c,0xcd,0x1f,0x2c,0x2e,0xce,0x50,0x86,0xf3,0xc4, \ -0xf0,0x09,0x0c,0x91,0x4f,0x9b,0x18,0x32,0x2f,0x02,0x8d,0x89,0x40,0xf2,0xd1,0xc3, \ -0x59,0x14,0x1c,0x63,0xaa,0xd1,0xed,0xb5,0x1d,0xdb,0x8b,0x09,0x17,0x50,0x78,0xbd, \ -0x59,0x99,0xc3,0x83,0x43,0x55,0xe7,0x61,0x5b,0x67,0x95,0x9b,0x5b,0xcd,0x22,0xf7, \ -0xb9,0x82,0x1e,0xa7,0x47,0x60,0xb9,0xd2,0xfc,0x34,0xaa,0x81,0x6b,0x2b,0x43,0xd0, \ -0x62,0x7b,0x1d,0x48,0xf1,0xee,0x5a,0x37,0x99,0x7a,0x47,0xd7,0xe6,0xe3,0x57,0xaf, \ -0x5c,0xd8,0x76,0xcf,0xa1,0x1e,0x56,0x38,0xb8,0x0b,0xf8,0x72,0x6f,0x79,0x4a,0x94, \ -0xe7,0xdb,0x76,0xae,0xb7,0x70,0xce,0x2c,0xf5,0x35,0x8f,0xa9,0xba,0xc6,0xdd,0x2c, \ -0x33,0x45,0x92,0x38,0x11,0xde,0x45,0xc0,0x16,0x1d,0xfd,0x44,0x91,0xb4,0xf6,0x15, \ -0x07,0x5a,0x8f,0x36,0x3e,0x68,0x7c,0x4f,0x16,0x6f,0x08,0x51,0xfc,0xbe,0xa6,0x87, \ -0x3d,0x33,0xcb,0xc5,0xf9,0x14,0xd9,0xeb,0x5e,0x91,0x52,0x1c,0xb8,0x30,0x82,0xbc, \ -0x5b,0xac,0xe1,0x92,0x98,0x5f,0xd1,0x7a,0x47,0x90,0x5b,0x8a,0xd0,0x64,0x8e,0x34, \ -0x72,0xc9,0x8e,0x3e,0x2a,0xc6,0x14,0x74,0x42,0x25,0x68,0xc8,0xc8,0x77,0x4f,0x1b, \ -0xeb,0x61,0x28,0x31,0x95,0x6e,0xcb,0x0f,0xd7,0xf8,0x47,0xd1,0x4b,0xe7,0x99,0xba, \ -0x6d,0xdb,0xc3,0x90,0x0e,0x2d,0xc7,0x56,0x19,0xea,0x7d,0x85,0xe2,0x28,0x3c,0x63, \ -0x9c,0xc7,0x91,0x76,0x52,0x0a,0x70,0xc6,0x1a,0xe0,0xcc,0xca,0xbf,0x97,0x17,0x02, \ -0x09,0xa6,0x76,0xc3,0x7b,0x76,0xf8,0x7e,0xd9,0xd7,0xf5,0xff,0x6f,0xe6,0xfb,0xaa, \ -0xee,0x07,0xef,0x7e,0x30,0xa3,0xfe,0x0b,0x05,0x03,0x08,0x42,0x8d,0xa3,0x3e,0x2c, \ -0x5b,0x71,0x5d,0xc0,0x77,0x46,0xa1,0x73,0x58,0xce,0x89,0x83,0x69,0x56,0x0c,0x4e, \ -0xc1,0xe9,0xfd,0x42,0x88,0x85,0xde,0x64,0x02,0x18,0x63,0xa7,0x5e,0x9b,0x24,0xa9, \ -0x00,0x81,0xdb,0xff,0xc4,0x00,0x6d,0x7e,0x68,0x82,0x82,0x68,0x34,0x68,0x49,0x90, \ -0x80,0x81,0x05,0xbc,0x6e,0x3c,0xea,0x7e,0x10,0xd2,0x04,0x4f,0xbf,0x0b,0xea,0xbb, \ -0x02,0x17,0x97,0x17,0x47,0x8e,0xc8,0x7a,0xf9,0xf7,0xe4,0x4b,0x78,0xe2,0xdd,0xed, \ -0xdf,0x93,0x8f,0xc6,0x2e,0xbc,0x3e,0xb8,0x2d,0x56,0x89,0xf4,0xa8,0x3c,0x6c,0x54, \ -0x7e,0x0b,0x1c,0xde,0xdc,0x4e,0xe0,0x35,0xb0,0x42,0x0d,0xb8,0xa4,0xca,0x00,0x3e, \ -0x36,0x9e,0x45,0x2a,0x43,0x94,0xe7,0xd0,0x97,0x79,0xe3,0x92,0x2c,0x4d,0x41,0xf5, \ -0x42,0x0c,0x75,0xf5,0x01,0x1f,0xbb,0xb4,0xc3,0x89,0x46,0xbd,0x29,0x4f,0x97,0x40, \ -0xc1,0x7b,0xf2,0xf3,0x32,0x86,0x0d,0x68,0xf0,0x31,0xb6,0x18,0x55,0x19,0x8b,0xb0, \ -0x48,0x56,0xd6,0xd0,0xac,0x63,0x9b,0x7f,0x1e,0x6e,0x50,0x80,0x03,0x33,0x31,0xd1, \ -0xef,0x45,0x72,0x7e,0x6a,0xfa,0x38,0xba,0x80,0xd7,0xbc,0xac,0xfb,0x67,0x1c,0x4b, \ -0xb8,0x7b,0x27,0xf4,0xf1,0x5c,0xac,0x6c,0x81,0xf8,0xfb,0x94,0xfd,0xfa,0x8f,0xab, \ -0x91,0x3b,0xee,0x01,0x11,0xc9,0x8c,0xd3,0x56,0xac,0xda,0x7d,0x97,0x75,0x1a,0x52, \ -0xee,0x13,0x22,0xe0,0xb8,0x24,0xa9,0x05,0x95,0xf2,0x2f,0xb2,0x38,0x5d,0x53,0x5a, \ -0x18,0x5a,0xa5,0x1a,0xa1,0x71,0x4d,0x8d,0xca,0x1d,0x22,0xf4,0x22,0xdc,0x70,0x8a, \ -0xe4,0x01,0x17,0xee,0xf0,0xd1,0x13,0x19,0x8a,0x85,0x0c,0x93,0xcd,0x4a,0xee,0xc6, \ -0x24,0x81,0x19,0x7c,0x3f,0x18,0x53,0xef,0xc6,0x73,0xc9,0xed,0x25,0x50,0x03,0x46, \ -0x4e,0xae,0x10,0x37,0x0e,0x31,0x31,0xb8,0x91,0x12,0xe5,0x41,0xe7,0xf1,0xc7,0x20, \ -0xc2,0xff,0x48,0xc7,0xf7,0xbd,0x5e,0x21,0x28,0xae,0x6b,0xfe,0xe1,0xaf,0x4d,0xc6, \ -0x4e,0xf8,0x9f,0x9f,0x90,0xa5,0x95,0x7c,0xfe,0xaf,0x0b,0xc9,0xaf,0xc7,0xf4,0x7b, \ -0x95,0x93,0xdf,0x2f,0x2c,0xe6,0x37,0xf7,0x9f,0xab,0x14,0x54,0x8c,0x95,0x0a,0xc6, \ -0x32,0x60,0x2c,0x1e,0x7f,0xdd,0x8c,0xfe,0xef,0xcf,0xb9,0x93,0x8e,0xf4,0xc3,0x58, \ -0x31,0xe9,0x69,0xfc,0x88,0x54,0x05,0x5d,0x06,0xd1,0x2c,0x05,0xd2,0x96,0x22,0x41, \ -0x06,0x3f,0x7f,0xf9,0x60,0xa3,0xf1,0x49,0xcb,0x99,0xae,0x24,0xd9,0x0b,0x04,0x55, \ -0x31,0x65,0x14,0x57,0x6e,0x97,0x00,0x1a,0x35,0xbb,0xda,0x26,0x20,0x64,0x4a,0x41, \ -0x11,0x95,0x38,0xf9,0xfd,0x1e,0xf1,0x7e,0x3f,0xb3,0x79,0x21,0xb0,0xa8,0xc0,0x37, \ -0xa1,0x0b,0xc2,0x8d,0xa2,0x62,0xfc,0x30,0x65,0xc4,0x17,0xa3,0x87,0x3c,0x34,0xc1, \ -0x09,0x94,0x34,0xc1,0x63,0x8b,0x66,0x7e,0xca,0x6c,0xa9,0x9a,0xc2,0xe8,0xe2,0x18, \ -0x93,0xfa,0xd2,0x19,0xcc,0xb3,0xb5,0xbe,0xcd,0x70,0xe0,0xa8,0xa9,0x21,0xa3,0x19, \ -0x43,0xf3,0x66,0xae,0x61,0x18,0xa8,0x8a,0x72,0xd3,0x1d,0xee,0x9a,0x5f,0x7a,0x48, \ -0x5f,0xff,0xa5,0x05,0x50,0x53,0x6a,0x9a,0xc2,0x40,0x09,0x82,0xbb,0x44,0x20,0x49, \ -0x63,0xa4,0xc3,0xbd,0x34,0xe7,0x8d,0x25,0xd8,0x11,0x9c,0x23,0xb1,0x21,0x5a,0x49, \ -0x64,0xe3,0x9c,0x00,0x43,0xaa,0x55,0x20,0x56,0x6d,0x82,0xa5,0x15,0xb6,0x5a,0xac, \ -0x30,0x8b,0x9a,0x05,0x61,0x83,0x14,0x5c,0xc2,0xfd,0x56,0x84,0xc1,0xb9,0x7a,0xb1, \ -0x91,0x38,0x66,0x12,0xa6,0x96,0x67,0x1c,0xad,0x20,0xa5,0xb0,0x88,0x00,0xde,0xc9, \ -0x58,0xc2,0x5d,0x37,0x45,0x26,0x03,0xea,0xae,0xbf,0x2f,0xb9,0x8e,0xff,0x16,0xfc, \ -0x37,0x45,0xcf,0x90,0xd1,0xac,0x67,0xe2,0xc4,0x25,0x87,0x51,0x8f,0x9b,0x8c,0x52, \ -0x29,0xf5,0xd2,0x26,0xf0,0x9b,0xad,0x67,0x01,0x6b,0x42,0xc3,0x8e,0xbc,0x35,0x2e, \ -0xdd,0xbc,0x37,0x87,0x26,0x76,0xa7,0xcf,0x8c,0x99,0xc9,0x21,0x0f,0xef,0x90,0xf8, \ -0x88,0x1f,0xe2,0x92,0xa2,0x90,0x1b,0x6a,0x59,0x11,0x0b,0x9d,0x10,0x81,0x99,0x98, \ -0xe0,0x64,0x07,0x16,0x16,0x20,0x6b,0x5d,0x78,0x19,0x15,0xb0,0xf3,0x28,0x0d,0x75, \ -0x6f,0x13,0x16,0x32,0xf8,0x38,0x01,0x9c,0x66,0x01,0x39,0x27,0x87,0x0f,0x65,0xf2, \ -0xdb,0xd7,0xd9,0xf0,0xac,0x6f,0x82,0xbb,0x7d,0xfd,0x31,0xf5,0x6a,0xa0,0xab,0xba, \ -0x49,0xaf,0x58,0x3e,0x6e,0x47,0xc7,0x99,0x00,0x63,0x47,0x43,0xcc,0x6b,0x07,0x1f, \ -0x87,0x24,0x90,0x59,0x7c,0x6e,0xe2,0x12,0x0f,0x10,0x3e,0x80,0x7a,0x82,0x37,0xe0, \ -0xa3,0x20,0x86,0xb2,0x24,0x04,0xaf,0xb1,0x8c,0xa6,0x17,0xd6,0x32,0xc1,0xeb,0xce, \ -0x99,0x64,0x62,0x31,0x76,0x31,0x77,0xc3,0x83,0xcd,0xa7,0xb9,0x57,0xe1,0x55,0x74, \ -0xdd,0x3f,0xe7,0xb4,0xfd,0xad,0x90,0xd4,0x0a,0xf6,0x1a,0xc5,0xc2,0x87,0xdc,0xd6, \ -0x6c,0xfe,0xcf,0xfe,0x6d,0x17,0xbf,0x53,0xc5,0x99,0x53,0x45,0xac,0xdd,0x10,0x34, \ -0x1c,0x1e,0xd2,0xe0,0x15,0x50,0x6f,0xa0,0x58,0x1e,0xa4,0x9e,0x86,0x97,0x17,0x72, \ -0xcf,0xde,0xf2,0xcd,0x62,0xbb,0x02,0xf5,0x25,0x80,0x30,0x8c,0x3e,0xab,0xed,0x14, \ -0x86,0x82,0xa2,0x07,0x85,0x39,0xc4,0xb5,0x0a,0x7f,0x7b,0xa4,0x98,0x48,0xe1,0x32, \ -0x3a,0x04,0x6a,0xe2,0x79,0x09,0xb7,0xae,0x12,0x8b,0xa9,0x89,0x03,0xef,0x63,0xa9, \ -0x44,0xaf,0x65,0x77,0x13,0x6e,0xb5,0x94,0x17,0xbd,0xe3,0x73,0x8d,0xf4,0x61,0x1f, \ -0x3a,0x2d,0x90,0x80,0x24,0xa7,0xf8,0xfc,0xb8,0xf2,0x99,0x39,0xd9,0x35,0x0b,0xd1, \ -0x83,0x0b,0xa3,0x19,0x2c,0x9d,0x03,0x83,0x04,0xd7,0x8a,0x73,0xf2,0x04,0x4b,0x78, \ -0xff,0x25,0x5a,0x6c,0x35,0x60,0x41,0xe6,0x5a,0x67,0x07,0x38,0x40,0x36,0x3d,0xe0, \ -0xdf,0x80,0xe1,0xd9,0xb8,0xbe,0x71,0x73,0x9c,0x1d,0x52,0xf3,0xf9,0x8d,0x3d,0x1d, \ -0xe5,0xb8,0xae,0x7c,0x48,0xa9,0x86,0x79,0x6a,0xf3,0x4b,0xed,0x1b,0xb4,0x09,0x26, \ -0x85,0x5a,0x24,0x12,0x98,0x03,0xb4,0xcb,0x81,0xfe,0x9f,0xd7,0xdb,0x62,0xc4,0xbd, \ -0x9e,0x5c,0xa0,0x59,0x57,0xe7,0x3a,0x0f,0x15,0x28,0x10,0xd0,0xc2,0x81,0xdf,0xb3, \ -0x35,0x3d,0xdd,0x20,0x7e,0x80,0xdc,0xd2,0x0f,0x37,0x6a,0xf5,0x56,0x7d,0xa9,0x3e, \ -0x15,0x2d,0xab,0xd6,0x8f,0x5e,0xd6,0xe7,0x63,0x5a,0xca,0x5a,0x96,0xbb,0x8d,0x72, \ -0x7b,0x81,0x59,0x0a,0x94,0xc3,0x51,0xa8,0xf2,0x40,0xb7,0x1f,0x03,0xf5,0xfb,0x3c, \ -0xdf,0xe3,0x2a,0x44,0x79,0x18,0xca,0x9a,0x17,0xd7,0xf9,0x9f,0x69,0x21,0xa1,0xa0, \ -0x28,0x63,0x6c,0x02,0x53,0x02,0x44,0xdb,0x2a,0xac,0x7e,0x7a,0x7a,0x71,0x4b,0x68, \ -0xcd,0x46,0x72,0x86,0x68,0x26,0x20,0xa1,0x93,0xfe,0x27,0xbb,0x96,0xce,0x6b,0x06, \ -0xd0,0x93,0xbc,0x5a,0x34,0xe9,0x0c,0x42,0x65,0xc9,0x16,0x4a,0x0f,0x68,0xaa,0x55, \ -0xf2,0x3a,0x72,0x90,0x96,0x11,0xbc,0xad,0x19,0xf3,0x8c,0x38,0x4b,0xfd,0xf5,0xd3, \ -0x97,0x77,0x68,0xba,0x5a,0x68,0x6c,0x3d,0x50,0x11,0xfb,0x7a,0xcb,0x83,0x57,0x5d, \ -0xf7,0xa0,0xa0,0x1e,0x1c,0x43,0xfa,0xbf,0x99,0xcf,0x66,0xc7,0x99,0x0d,0xd3,0x69, \ -0x0d,0x07,0xb9,0xd7,0xd3,0x0f,0xaf,0xc0,0x96,0x20,0x86,0xad,0x55,0x04,0x44,0x46, \ -0x0c,0x15,0x8a,0x46,0x08,0x8f,0xe1,0xe7,0xaf,0xa4,0x3e,0x4e,0x34,0x35,0x49,0xf1, \ -0xcf,0xf5,0x3a,0xbe,0x03,0xef,0xb1,0x04,0x41,0x19,0x95,0xfd,0x76,0x0b,0xfe,0x15, \ -0xdc,0x2d,0x0b,0x91,0xe5,0x3a,0x46,0x28,0x5d,0x1e,0xa8,0x21,0x9c,0xd3,0x9d,0xa0, \ -0x52,0x7f,0x42,0x1b,0x24,0xa8,0x1c,0xa2,0x74,0x27,0x1c,0x22,0xf4,0x86,0xd2,0x16, \ -0xf5,0x69,0xd8,0x79,0x4f,0x4f,0x91,0xe2,0x50,0xf2,0x80,0xc7,0x5b,0x88,0xc3,0x02, \ -0xab,0x15,0x05,0x8c,0x20,0x6f,0x27,0xdb,0x70,0x5c,0x0d,0x3a,0xd1,0xff,0x10,0x88, \ -0x51,0x9f,0x2e,0x67,0x81,0x89,0x1e,0x6b,0x0d,0xca,0x81,0xb4,0xa3,0x41,0x28,0x08, \ -0x4b,0x0e,0xfd,0xd7,0x44,0x01,0xef,0x74,0xc1,0x55,0x93,0x64,0xc0,0xc3,0x6c,0x53, \ -0x2c,0x32,0xd3,0x14,0xc2,0x6e,0x92,0xb9,0x1a,0x24,0xd7,0x1f,0x59,0xfe,0xfc,0x70, \ -0x27,0xc2,0x05,0xb7,0xf3,0x8c,0x1f,0xdb,0xaa,0x4b,0x8e,0x52,0x70,0xf5,0xa2,0xc9, \ -0x88,0x65,0x19,0xf5,0x5b,0x24,0x3e,0x98,0x5a,0x04,0xa1,0x1a,0xf3,0x74,0x2a,0xc2, \ -0x8a,0x33,0x00,0xca,0xa8,0xc4,0xaa,0x2b,0x65,0xde,0xb3,0x82,0xc2,0x2c,0x34,0x95, \ -0x4a,0x86,0x41,0xdc,0x1d,0x11,0xd3,0x3d,0xb3,0xb7,0x66,0x18,0xa3,0x4d,0x23,0x52, \ -0x6a,0x83,0x3a,0x18,0x33,0xd4,0xcf,0xb1,0xcd,0x6b,0x08,0x15,0x98,0x82,0x66,0x17, \ -0x49,0x01,0xaf,0xa8,0xd1,0xba,0xa5,0x73,0x42,0xa1,0x98,0x2a,0xfb,0xbc,0x4e,0xa4, \ -0x22,0x86,0xd3,0xc0,0xfc,0x7d,0x87,0x51,0xb4,0xd2,0x7e,0x85,0x48,0x7c,0xcf,0x80, \ -0x3b,0xb2,0x4f,0x2c,0x53,0xd2,0xc8,0x15,0x93,0xc5,0xba,0xe3,0x11,0x0f,0x36,0xbb, \ -0x50,0xd7,0x73,0x24,0x86,0xac,0x03,0x2f,0xb6,0x12,0x96,0x91,0x2f,0x6e,0xc3,0xbe, \ -0x4f,0xa8,0x79,0xb3,0x51,0xa5,0x94,0xcf,0x61,0xd2,0xb8,0xd3,0xaa,0x00,0x87,0x93, \ -0x63,0xe8,0x1c,0x09,0x7b,0x9b,0xc4,0xc6,0x4b,0xc1,0x1d,0x69,0x9c,0x01,0x41,0xa8, \ -0x54,0xbf,0xd3,0x31,0x87,0x02,0x21,0x16,0x40,0x51,0xcd,0x9c,0xc3,0xc3,0x0c,0xd0, \ -0xb3,0xb1,0x34,0x09,0xac,0x34,0x94,0xa9,0xc2,0x44,0xfb,0x78,0x8b,0x23,0x4d,0xa6, \ -0x26,0x4e,0xd2,0xd4,0xab,0x51,0x1a,0x33,0x14,0xa5,0xb1,0x55,0x49,0xe9,0x69,0x53, \ -0x8b,0xeb,0x88,0xe3,0x20,0xe2,0x63,0x1f,0xd8,0x38,0x18,0xd3,0x1f,0xf6,0x44,0x10, \ -0xfc,0xbe,0x57,0x1b,0x86,0xbc,0xc6,0x12,0x2c,0xfc,0x88,0x49,0x07,0xa3,0x78,0x1e, \ -0x7c,0x97,0x3e,0x80,0x78,0x24,0x15,0x6e,0x4a,0x05,0x4a,0x8f,0xab,0x55,0x83,0x24, \ -0x36,0x93,0x48,0x4e,0xf8,0x3d,0x10,0x5f,0xb7,0x50,0x23,0x44,0xd1,0x39,0x85,0x69, \ -0x7b,0x18,0x8e,0x3c,0x8e,0xd6,0xd3,0x11,0xf3,0x62,0x5e,0xd3,0x15,0x16,0x5f,0x04, \ -0xce,0xe6,0xb7,0xa3,0x8a,0x0d,0xe4,0x6b,0xa7,0x4e,0xc0,0xd3,0x13,0x09,0xf5,0x9a, \ -0xc1,0xbe,0xfd,0x70,0xda,0x91,0x81,0xd5,0x47,0x5c,0x90,0x7a,0xa0,0x93,0xda,0x40, \ -0xcb,0x00,0x60,0x91,0x82,0x06,0xc9,0x37,0x60,0x1f,0x4e,0x92,0xc4,0x11,0x8d,0x21, \ -0x14,0x68,0x40,0xf8,0x1e,0xdf,0x69,0x50,0x28,0x19,0x5a,0x10,0x49,0x75,0xe1,0x54, \ -0x51,0xc3,0xf6,0x6b,0x3d,0x8c,0x2e,0x66,0xd1,0x80,0xd8,0xd8,0xbf,0xa4,0x40,0x7e, \ -0x3a,0xeb,0xfe,0xf5,0xd8,0xbc,0x3c,0x94,0x23,0xba,0x93,0xef,0xa1,0x01,0xd3,0xe3, \ -0x15,0x07,0xdd,0xa3,0x44,0x5a,0x37,0x1c,0x53,0x06,0x0d,0x6f,0x70,0xce,0x36,0x58, \ -0xfd,0x9e,0x52,0x61,0x88,0xff,0x8b,0x48,0xef,0x67,0xd7,0xf9,0x79,0x43,0x8f,0xcf, \ -0x34,0x06,0xe3,0x9f,0x49,0xe5,0x02,0x22,0x63,0xaa,0x3c,0xd4,0x37,0x8b,0x7b,0x4b, \ -0x0a,0xd8,0xf6,0x25,0xec,0xa4,0xd2,0xdc,0x0b,0x35,0xfb,0x9c,0x44,0x1d,0x98,0x7b, \ -0xed,0x93,0x44,0x62,0x43,0x89,0xa5,0x82,0xbb,0x1e,0x92,0xd7,0x43,0x96,0x3e,0x93, \ -0x77,0x6a,0x3d,0xa9,0xdc,0xf3,0x0e,0xc4,0xe2,0x17,0xe7,0x30,0x67,0xa5,0xac,0x81, \ -0xbc,0x61,0x58,0x1a,0xd4,0x84,0xc1,0x82,0xfa,0xcc,0x08,0x39,0x03,0xb7,0x99,0x4d, \ -0x13,0x2e,0x61,0xc7,0x9c,0x99,0x6b,0xb2,0xbb,0x67,0x10,0xe3,0xb7,0x87,0xe1,0xf4, \ -0x5d,0xab,0xd2,0x83,0x1b,0x07,0xd0,0xc4,0xc1,0xa4,0x69,0xae,0x88,0xb0,0x23,0xa7, \ -0x33,0xc8,0x6a,0x05,0x73,0x80,0x69,0x0a,0xf7,0x89,0x71,0xb8,0xc1,0x70,0xde,0x23, \ -0x98,0xd0,0xb4,0xa1,0x73,0x35,0x7f,0x61,0xea,0xb6,0x5d,0x61,0x26,0xc1,0xa0,0x67, \ -0xab,0xa0,0x6e,0x35,0x1a,0xf6,0x6d,0x4c,0x80,0xe0,0x96,0xa3,0x36,0x66,0x7c,0xb1, \ -0x03,0xce,0xfa,0x2b,0x10,0xc4,0x7f,0xef,0x97,0x31,0x46,0x53,0x1d,0x6a,0x86,0x34, \ -0xa7,0x9b,0x3c,0x5b,0x6d,0x23,0x01,0xaf,0x88,0xf6,0x9b,0x3d,0x66,0xd2,0x87,0x79, \ -0x30,0x8e,0x0d,0x0c,0xc2,0xc8,0xd9,0xd1,0x50,0xcb,0xff,0x10,0x5b,0x50,0x28,0x0e, \ -0xd1,0x92,0x0c,0x0e,0xcc,0xf6,0x6b,0x37,0x0d,0x22,0x68,0x93,0xcb,0xd6,0x75,0xf3, \ -0xf4,0xfe,0x63,0xc7,0xb6,0x79,0x21,0xc5,0xa3,0x3c,0x90,0xac,0x14,0x58,0x22,0x23, \ -0x11,0x01,0x58,0x2a,0xa8,0x09,0x1e,0xa3,0x18,0x90,0xa5,0x26,0xde,0xb3,0xe6,0xcf, \ -0xee,0x4e,0x86,0x8a,0xd2,0x92,0xb4,0x9b,0x98,0xc1,0xd2,0xf6,0xbd,0x19,0x06,0xe3, \ -0x41,0x60,0x0e,0xe4,0x18,0xf3,0xb0,0x6e,0x66,0xa2,0x41,0x41,0x89,0xb1,0xa4,0x92, \ -0xb6,0xa0,0x45,0x6e,0x27,0x15,0x74,0x04,0x22,0xad,0x0a,0xa8,0x47,0xa0,0x7a,0x22, \ -0xce,0xd7,0xd9,0xe6,0xf2,0x8e,0x72,0x9b,0xe0,0xb0,0x1b,0x8b,0x94,0xe9,0xd4,0xb7, \ -0x06,0x86,0x7a,0x13,0xb5,0x88,0x90,0x51,0x51,0x80,0x89,0x14,0x4e,0x00,0x85,0x30, \ -0x36,0x4e,0xef,0x63,0xbc,0x74,0xfc,0x8f,0x1d,0xbd,0xbe,0x18,0xf6,0xf6,0x05,0xc5, \ -0xb6,0x33,0x2a,0x61,0x43,0x1c,0xa0,0x9b,0x41,0x76,0x56,0xf2,0x6d,0xff,0xa1,0xe6, \ -0xda,0xbc,0x5a,0x5c,0xc3,0x41,0x86,0x8b,0xb4,0xa3,0x6b,0xb5,0x9e,0xbd,0x88,0xdc, \ -0x0b,0x56,0xda,0xf6,0x0c,0x60,0xf5,0x9c,0xd8,0x36,0xe0,0x58,0xee,0x7a,0x84,0xa5, \ -0xea,0x2a,0x10,0xac,0xf0,0x51,0x1c,0x8b,0x5e,0xf9,0xe3,0x04,0xb2,0x5a,0x0c,0x56, \ -0xcc,0xbf,0x09,0xfe,0x38,0x9a,0xd9,0xcd,0xa6,0xba,0x71,0x61,0x2f,0x06,0x96,0x9a, \ -0xfc,0xd7,0x10,0x9b,0x06,0xfc,0xc9,0xeb,0x11,0x50,0x40,0x3f,0xc9,0x92,0xb2,0x2c, \ -0x82,0xce,0xc1,0x84,0x86,0x1f,0xbb,0x08,0x69,0xb4,0xc7,0x2e,0x18,0xb8,0xdb,0xcb, \ -0xdd,0xdd,0xce,0x96,0x8d,0xb2,0x68,0x52,0x65,0x4b,0x0b,0x74,0xd9,0xcf,0x98,0x5e, \ -0x96,0x75,0xe1,0x51,0x86,0xbc,0xca,0x5d,0xe9,0x20,0x0b,0x8a,0xfa,0xb5,0x04,0x8c, \ -0xbd,0xc0,0x20,0x30,0xd4,0xf9,0xb2,0x2d,0x87,0x5d,0x02,0x0e,0x20,0x5f,0x89,0xc3, \ -0x8b,0x6d,0xce,0xd8,0x22,0xe4,0xb2,0xbc,0x90,0xd7,0x90,0xd0,0x28,0x3d,0x9b,0xee, \ -0x35,0x59,0x23,0x1c,0xe5,0x08,0xbe,0xb1,0xde,0x4a,0xc0,0x41,0xac,0xae,0xcb,0x79, \ -0x2d,0x82,0x27,0x74,0x98,0xd0,0xc0,0xe8,0x4b,0x0c,0x02,0x00,0xe3,0xd5,0xfb,0xca, \ -0xbb,0xa4,0xc6,0x6e,0xef,0xbd,0x9a,0x18,0xe7,0x81,0xd0,0x90,0xf7,0xa0,0x28,0x1f, \ -0x4f,0x22,0x3d,0x8b,0x42,0x2a,0xa2,0x0c,0xc6,0xcd,0x10,0x99,0xc0,0x47,0xf2,0xf3, \ -0x53,0x08,0xb1,0x0f,0x61,0x62,0x18,0x97,0xff,0x1d,0x90,0x17,0x8d,0x16,0xaa,0xe3, \ -0x91,0x62,0xa2,0x2c,0x9a,0x18,0x36,0xdb,0x42,0x6f,0xa5,0x5a,0x38,0x77,0xcc,0x73, \ -0x2e,0x00,0x96,0x58,0x51,0xe1,0xfa,0x5d,0x63,0x2e,0x5e,0x3d,0xe6,0xd4,0x18,0x76, \ -0x9e,0x55,0x75,0xc3,0xfb,0x80,0xb8,0x36,0x6f,0xfe,0x1f,0xe9,0x11,0xba,0xa1,0x86, \ -0xa1,0x19,0xe5,0x81,0x7c,0xdd,0x67,0x4f,0x88,0x8a,0x45,0x88,0x8a,0x46,0x44,0x82, \ -0x28,0x0c,0x54,0x44,0x80,0xaa,0x7e,0x2d,0x59,0xc5,0xa2,0xaa,0xb1,0x50,0x8c,0x18, \ -0x82,0xa2,0x28,0xba,0xd9,0x52,0x2a,0x4d,0x9c,0xb3,0x0b,0x14,0x11,0x7f,0xb3,0x1b, \ -0x63,0xe6,0xcc,0xed,0xeb,0xf8,0x69,0x21,0xb8,0x84,0x11,0x84,0x16,0x2c,0x3f,0x14, \ -0x87,0x27,0x01,0x16,0x41,0x05,0x27,0x27,0xf5,0x3d,0x8e,0x7c,0x68,0x55,0x74,0xd4, \ -0x83,0x28,0x92,0x7c,0xcd,0x75,0xb2,0xd2,0x11,0x41,0x31,0x83,0x0d,0x71,0x1f,0xb8, \ -0x31,0x45,0x63,0xb1,0xaf,0xeb,0xdb,0xfc,0xfb,0x8c,0x32,0x15,0x5c,0x89,0xca,0x04, \ -0xb6,0x8b,0xea,0x39,0xdf,0x5c,0x65,0xda,0xb1,0x41,0xb6,0x10,0xfa,0x92,0x37,0x12, \ -0xbc,0x8b,0x93,0x2b,0x15,0x23,0xef,0x4a,0xc2,0x81,0x42,0x68,0xda,0x14,0x3c,0xe8, \ -0x3e,0xbd,0xbc,0x01,0x71,0x41,0xe7,0xfe,0x3f,0x65,0x0f,0xda,0x84,0x80,0xe1,0xad, \ -0x2c,0x38,0xfe,0x4d,0x55,0x5f,0x8b,0xe4,0x15,0x3a,0xcc,0x63,0xaa,0xb1,0xa9,0xe9, \ -0xdc,0x6f,0x46,0xa6,0x79,0x12,0x03,0x27,0xf4,0xf9,0x5c,0xb3,0xf5,0xcd,0xe0,0x5a, \ -0xf9,0xc7,0x29,0x7e,0xf6,0xb1,0xfa,0xcd,0xe0,0xf3,0xea,0x9c,0x37,0xdb,0xa6,0x19, \ -0xb1,0x41,0x12,0x96,0xa1,0xd6,0x64,0xea,0xc3,0xf8,0x3b,0xe0,0x65,0x9e,0x7b,0x26, \ -0x91,0x4f,0x53,0xf2,0x0f,0xb6,0xf6,0xa8,0xaa,0x16,0xc9,0x39,0xbb,0x38,0x9d,0x7c, \ -0x45,0x16,0xaf,0x09,0x79,0x31,0xb2,0x04,0x12,0xd3,0x7f,0x39,0x5d,0x86,0xc7,0xb2, \ -0xa3,0xe3,0x38,0x07,0x4f,0x1f,0xf8,0xdb,0x71,0x53,0x03,0x80,0x5f,0x12,0x2c,0x4a, \ -0xa5,0x7b,0x9a,0x58,0x9b,0xa9,0x48,0x7e,0x9c,0x3d,0x37,0x05,0x54,0x21,0x82,0x3c, \ -0xcd,0x7e,0xb7,0x7b,0xa7,0xc8,0xd2,0xaf,0x18,0x2d,0x10,0x12,0xc3,0x69,0xac,0x89, \ -0x75,0xdd,0x8d,0xfe,0x9f,0x91,0x5d,0xca,0x9c,0x1f,0x84,0xea,0x02,0x3d,0x35,0x81, \ -0x2b,0x36,0x68,0xd2,0x88,0x54,0x73,0x79,0x98,0xb3,0x07,0x28,0xe8,0x1f,0x21,0xe9, \ -0x41,0xf8,0x03,0x20,0x3e,0x34,0x08,0x41,0x9e,0x41,0x4d,0x2a,0x1d,0x53,0x83,0x00, \ -0xc3,0x79,0x06,0x03,0x96,0xac,0xf5,0x33,0x63,0x56,0x7c,0xa1,0x6b,0x5a,0xfa,0x4f, \ -0xf9,0xf3,0x33,0x61,0x54,0x60,0x8a,0x9d,0xe1,0x4f,0xbe,0x85,0xc5,0x24,0xac,0x06, \ -0xd9,0x27,0xdd,0x06,0x05,0x19,0x83,0x83,0xd1,0x3f,0x1d,0x34,0x27,0xf9,0x30,0xfb, \ -0x3f,0x32,0xa1,0x5a,0x5f,0x8f,0xda,0xd5,0x75,0xe7,0x0a,0x3c,0x38,0x29,0xf7,0xb2, \ -0x81,0x5b,0x52,0x8f,0xdb,0x69,0x25,0x3c,0x84,0xe4,0x4f,0x23,0x96,0x4e,0x99,0x9d, \ -0xe1,0xc2,0x2a,0x1e,0x10,0x3c,0xd8,0x70,0x64,0xf2,0xfe,0x3c,0x7c,0x2d,0x23,0x0a, \ -0x1b,0xa3,0x60,0x0d,0x1d,0x31,0x1f,0x05,0x77,0x34,0x35,0x6f,0x54,0x21,0x26,0x31, \ -0x15,0x4a,0xb0,0x0a,0xdc,0xbc,0x2a,0x50,0x46,0xa3,0xc0,0x60,0x7d,0x26,0x40,0x53, \ -0x0a,0x1f,0x30,0xb2,0xb1,0xdd,0x73,0xe1,0xeb,0x37,0x05,0xa2,0xcc,0xde,0xe1,0x52, \ -0xaf,0x02,0xf5,0x02,0xcc,0xb0,0x28,0x90,0xe2,0x3a,0x86,0x24,0x8c,0x84,0x7a,0xa0, \ -0x6c,0xbe,0xd7,0x38,0xa3,0x68,0x92,0xa2,0xcb,0x96,0x02,0x91,0x3b,0xa4,0x0a,0xb4, \ -0x3d,0x29,0x57,0x5d,0x47,0x21,0xc5,0xef,0x84,0x20,0x94,0xe7,0xfc,0x93,0xa8,0xe6, \ -0x13,0xae,0x08,0xf8,0x30,0x0f,0xf3,0xd2,0xcd,0xad,0x8c,0x0f,0x62,0x19,0x0c,0x3e, \ -0x2c,0x40,0xda,0x02,0x81,0x7e,0x07,0x69,0x2a,0x36,0x23,0x3e,0xa1,0x12,0x42,0x8d, \ -0xd2,0x05,0x1e,0xc9,0x97,0xb7,0x15,0x21,0xf8,0x1e,0xeb,0x80,0x8c,0x52,0x0f,0xb6, \ -0xf1,0x4d,0x12,0x6b,0xa1,0xd3,0x86,0xac,0x47,0x5a,0x3e,0x0a,0xeb,0x57,0x32,0x65, \ -0xb6,0x8e,0xa2,0x8f,0x40,0x89,0x90,0x6b,0x57,0xd3,0x86,0x72,0x64,0x92,0xd4,0xbc, \ -0x18,0x48,0x5c,0xaf,0xc5,0x5b,0x0f,0x3c,0x4b,0x2e,0x56,0x06,0xd0,0x59,0xc2,0x89, \ -0x20,0x52,0x60,0x26,0x23,0xa4,0x92,0x34,0xcc,0x9e,0xd0,0xbc,0xbd,0x69,0x80,0xaa, \ -0xd1,0xe4,0x70,0xc6,0x0f,0x77,0x2d,0xb3,0x96,0x69,0x18,0x30,0x6d,0x06,0xdd,0x61, \ -0xe7,0xff,0x63,0x7b,0xcb,0x84,0xed,0x37,0x36,0xe9,0x3a,0xec,0x39,0x9a,0x3c,0x68, \ -0x29,0xf2,0xec,0x1a,0x23,0x0c,0x97,0xaa,0xb3,0x06,0x0e,0xf8,0x7c,0x52,0xee,0x93, \ -0xdf,0x3a,0xed,0x90,0x66,0x18,0x78,0x69,0xe5,0xc4,0x3d,0x26,0x0e,0xec,0x41,0xa5, \ -0x0b,0x33,0x58,0x7e,0x0a,0x16,0x7a,0x01,0xa9,0xdd,0x9c,0x33,0x91,0x48,0x52,0x17, \ -0x03,0x50,0x8b,0x3a,0xa9,0xf6,0x38,0xc0,0x96,0x72,0x94,0x65,0x17,0xcd,0x42,0xc3, \ -0x86,0x27,0x2a,0xe4,0xa8,0x70,0xe9,0x16,0x05,0x73,0x71,0x80,0x2a,0x0c,0x97,0x02, \ -0x1d,0x0a,0x7b,0x8c,0x4b,0xa4,0xf1,0xe8,0x1e,0x49,0x61,0xc0,0xc8,0xa2,0x43,0x43, \ -0x10,0x7a,0x37,0xf5,0xaf,0x77,0x82,0xf6,0x0d,0x1f,0x0d,0x14,0x01,0x1d,0xec,0xdd, \ -0xe5,0xdb,0x0e,0x55,0x4b,0x08,0xfe,0x8d,0x7b,0x66,0x1f,0x77,0xd5,0x22,0x02,0xc8, \ -0xda,0x92,0x21,0x0d,0xf6,0xb6,0xc0,0x90,0xec,0x60,0x94,0x07,0xa5,0x82,0xfc,0xd7, \ -0xe5,0x72,0x53,0xcd,0x00,0xec,0x2a,0x44,0x0a,0xed,0xdb,0xa5,0xe5,0x4d,0x28,0x1b, \ -0x83,0x98,0xd5,0xe1,0xd4,0xd1,0x60,0x18,0x01,0x64,0x36,0x0d,0x16,0xe9,0x80,0xc1, \ -0x82,0xd5,0xff,0x78,0x2c,0xbb,0xfc,0x3a,0xb5,0xd1,0x0d,0xd2,0x22,0x06,0x8d,0x4c, \ -0x0c,0x99,0x76,0x7d,0x66,0x14,0x53,0x9b,0xc1,0xce,0x38,0x1c,0xfc,0xb7,0x48,0x69, \ -0xd1,0xa6,0xae,0xb2,0x31,0x0c,0x27,0x1e,0x47,0x04,0x1e,0x85,0xf9,0x12,0x87,0xd9, \ -0xf4,0x01,0x7b,0x04,0xd4,0xd2,0x70,0xb6,0x96,0xcf,0x0e,0x48,0x2b,0x8e,0x53,0xcf, \ -0x1a,0x55,0x95,0x11,0x02,0x92,0xeb,0x4a,0x20,0x54,0x4c,0x4c,0x60,0x7d,0x10,0xf8, \ -0x72,0x99,0xd0,0xce,0x78,0xe4,0xd8,0xda,0x85,0x6d,0x4e,0x1a,0x02,0x41,0x41,0xd6, \ -0x84,0xe1,0x27,0x71,0x34,0x20,0xac,0x4d,0x96,0xd3,0x80,0xca,0x6f,0x8a,0x4c,0xa8, \ -0x86,0x45,0xe0,0x10,0x1a,0x71,0x1d,0x1c,0x21,0x43,0x84,0x36,0x04,0x38,0x03,0x24, \ -0xd5,0xba,0x94,0x1a,0x59,0x6d,0x41,0x0b,0x7b,0x12,0x4b,0x05,0x30,0x11,0x96,0x1e, \ -0xe3,0xc3,0x6f,0xae,0x09,0xd7,0xd5,0x2e,0xf2,0x95,0x82,0x59,0xd7,0x9c,0x93,0x09, \ -0x08,0xa6,0xc0,0xe6,0x44,0x07,0xe5,0x18,0xfe,0x10,0x92,0xde,0xbb,0x1c,0x0b,0x7b, \ -0x89,0xff,0x6c,0x95,0xf1,0x83,0x78,0x1a,0x1b,0x83,0x3f,0xba,0x0b,0x19,0xd4,0x16, \ -0x16,0x49,0xab,0x58,0x66,0x94,0xd5,0x96,0x40,0x3e,0xcf,0xa7,0x9e,0xd0,0x99,0x24, \ -0xfa,0x3c,0xc2,0x11,0xaf,0x85,0x46,0x61,0x45,0x7b,0xd1,0xd3,0x9f,0x12,0x94,0x81, \ -0x6f,0x1d,0x1a,0x0a,0xd6,0xa8,0xa3,0x09,0x77,0x21,0x9c,0xa6,0x28,0x83,0xae,0x33, \ -0x4c,0xe1,0xae,0x4a,0x66,0x95,0x30,0x02,0xe1,0x28,0xe6,0xd4,0xc2,0x2c,0x25,0x40, \ -0xde,0xe9,0x8a,0x6a,0xdd,0x04,0xa8,0x6c,0x37,0x37,0x2e,0x1e,0xda,0x68,0x69,0x48, \ -0x2c,0xdd,0x9a,0xac,0x99,0x49,0x35,0x30,0x33,0x4b,0xa6,0x72,0x2e,0x10,0x64,0xb7, \ -0xd5,0x8a,0x70,0xa6,0xb8,0xa8,0xe8,0xd9,0x96,0xe4,0x52,0x3b,0x82,0x0e,0xdb,0xe2, \ -0x98,0x32,0x0c,0x4e,0xfb,0xd5,0xee,0xb5,0x98,0x09,0xdd,0x26,0xee,0xab,0xf3,0x7a, \ -0x8e,0xfc,0x3e,0xb2,0x3c,0x60,0x9d,0xc4,0xf3,0x76,0xff,0x0a,0x4d,0x6b,0x58,0xd3, \ -0xea,0xf5,0x6e,0x82,0x47,0x89,0xcf,0xba,0x51,0x82,0x8d,0xc3,0x1b,0xda,0x44,0xca, \ -0x22,0x20,0x52,0x33,0xc6,0xd8,0x1c,0x5d,0xad,0x6d,0x9a,0xc8,0xb5,0x98,0x9b,0x10, \ -0x7b,0xfa,0xe6,0xad,0x76,0x2d,0xbc,0x25,0xd3,0x33,0x12,0x20,0xa7,0x90,0x50,0x49, \ -0x95,0x17,0x50,0xf3,0x72,0x7b,0x30,0xe8,0x28,0x7d,0x2d,0x02,0xbc,0xf6,0xdd,0x04, \ -0x8a,0x11,0xbe,0x33,0x42,0x54,0xdd,0xa0,0x42,0xb4,0x6a,0x75,0xb1,0x8e,0x77,0xca, \ -0x05,0xad,0x81,0xed,0x68,0x5f,0x17,0xe9,0xc3,0xa5,0x65,0x05,0xec,0xbc,0xb0,0x1d, \ -0x3b,0xe1,0x71,0xfe,0x67,0x81,0xb1,0x24,0xae,0xbf,0xc0,0x2e,0xc3,0x7d,0x33,0xe9, \ -0x22,0x48,0x98,0x4c,0x58,0xb6,0x8f,0xe8,0xb5,0x15,0xc5,0x50,0x4c,0xbf,0xac,0x8a, \ -0xaf,0xe2,0xfd,0x59,0x6c,0xc8,0x24,0x15,0x93,0xd1,0xd5,0xfd,0x70,0xca,0x76,0x59, \ -0x8e,0x31,0x92,0x30,0xb4,0x85,0xa2,0xcc,0x66,0x46,0x81,0xc9,0x61,0x84,0x4c,0x04, \ -0x46,0x4d,0x0b,0x07,0x07,0xa3,0x02,0x84,0xca,0x58,0x99,0xc0,0x6d,0x60,0x5e,0x5b, \ -0x2c,0xe5,0x0a,0x91,0x2d,0x40,0x5b,0x0e,0x80,0xf1,0xc1,0x91,0xa2,0x24,0x6a,0x2c, \ -0x2d,0x1a,0xb1,0x9b,0xd0,0x34,0x03,0x26,0xc8,0xbf,0x48,0x20,0x78,0x87,0xa1,0x80, \ -0x64,0x8b,0x68,0x18,0x5b,0x1e,0x93,0x97,0x14,0xbb,0x0b,0x54,0x61,0x3e,0x24,0x6c, \ -0x77,0x16,0x5b,0xd7,0x36,0x1a,0x0a,0xac,0x09,0x15,0xa2,0x94,0x0c,0x21,0xb3,0x8d, \ -0xb0,0x2b,0x73,0x2d,0x6b,0x23,0x6d,0x75,0x6d,0x35,0x4d,0x18,0x03,0x82,0xfb,0x52, \ -0x06,0xf5,0x0c,0x28,0x1d,0x2e,0x74,0xa2,0xd2,0x54,0xcc,0x2e,0x42,0x5f,0x61,0x62, \ -0x8f,0x78,0xc5,0x6c,0x36,0xbb,0x6b,0x54,0x0d,0x08,0x54,0x3e,0xb7,0x52,0x53,0x24, \ -0x19,0xc9,0x6c,0x95,0x0a,0xa4,0x4d,0x6e,0xc1,0xed,0x51,0x96,0x01,0x6e,0x55,0x9b, \ -0x3b,0x91,0x39,0xab,0x51,0x65,0xf8,0x69,0x00,0x1a,0xc2,0xd5,0xd0,0x82,0x28,0x28, \ -0x21,0x48,0x66,0x85,0x8b,0x5a,0x50,0x84,0x83,0xc6,0xbc,0x95,0x37,0x77,0x36,0x31, \ -0x2f,0x1b,0x4b,0x8c,0xc1,0x83,0x79,0xb6,0x02,0x1b,0x74,0xd5,0x82,0xee,0x45,0x18, \ -0xd6,0xa4,0x6e,0x22,0x16,0x8a,0x9b,0x3d,0xb5,0xae,0x6c,0x02,0xeb,0x56,0x4a,0x15, \ -0x12,0xf4,0x90,0xe1,0x85,0xb7,0xac,0x10,0xda,0x20,0x7d,0x41,0x5d,0x5c,0xee,0xb0, \ -0x0d,0x01,0x16,0x15,0xd5,0x85,0x9a,0x38,0x36,0xb0,0x1d,0x2e,0xcf,0x55,0xa6,0xaa, \ -0xb2,0x8f,0x4d,0x69,0x97,0x16,0xa5,0x30,0x08,0x72,0x5e,0x02,0x8a,0x89,0x0a,0xf1, \ -0xb9,0xa8,0x1a,0x55,0x46,0xc3,0x29,0x40,0xb5,0x44,0xa1,0x92,0xe2,0xc1,0x66,0x83, \ -0x47,0x8c,0xa3,0x28,0xb6,0x8a,0x28,0xc1,0x96,0xa9,0x74,0x15,0x88,0xba,0xb0,0x0a, \ -0xfb,0xe6,0xb5,0x89,0x70,0xe9,0xae,0x1c,0x00,0xe4,0xcc,0x64,0x81,0x75,0x77,0x6a, \ -0x30,0x86,0x85,0x2b,0x49,0x05,0x55,0x2e,0x8d,0x61,0x51,0x44,0x14,0x8c,0xdd,0xd3, \ -0x86,0x02,0xa8,0x58,0xa7,0x90,0x34,0x7d,0x05,0x6a,0x4e,0xf9,0x73,0x98,0x9a,0x87, \ -0xbd,0x43,0xa1,0xf9,0xc7,0x72,0x2a,0x5b,0x23,0x76,0xba,0x65,0x79,0xc1,0x9b,0x1d, \ -0xb4,0x71,0xc2,0xeb,0x0b,0x0b,0x6f,0xe8,0x48,0x35,0x99,0x7c,0x94,0x0e,0x04,0x88, \ -0x80,0x6d,0x34,0x71,0x16,0x02,0x80,0x86,0x88,0x47,0xd6,0xcf,0x15,0x8c,0x2a,0x08, \ -0x35,0xb5,0xe8,0x18,0xb3,0xcb,0xc8,0x15,0x49,0x6d,0x0a,0xe4,0x02,0x83,0x9c,0x9a, \ -0x6f,0x94,0x8c,0xd7,0x8e,0x9e,0xc2,0xe7,0x0b,0x69,0x05,0x68,0x90,0xc1,0xa4,0x17, \ -0x88,0x20,0x6c,0x81,0xa6,0xef,0x43,0x85,0x03,0xa9,0xea,0xbe,0x0c,0x3c,0x64,0xa5, \ -0x0c,0x5a,0xc6,0x73,0x76,0x6a,0xf5,0x56,0xcf,0x30,0x43,0x23,0x61,0x40,0x54,0xc2, \ -0x2f,0x12,0xc0,0xb1,0x22,0x5a,0xd1,0x6e,0xb2,0xbb,0x25,0x5a,0xc8,0xf5,0xf3,0xc0, \ -0x63,0x01,0xe7,0x20,0x49,0xe1,0x33,0x91,0x7a,0x5c,0x87,0xa1,0x76,0x04,0xaf,0xa8, \ -0x3a,0x21,0x73,0x35,0x24,0x2e,0x52,0x73,0x1a,0x53,0x51,0x1a,0xcf,0x81,0x44,0xa7, \ -0x5e,0xcc,0xb4,0x36,0x15,0x5d,0xa3,0x1c,0xb7,0x71,0x9e,0x5b,0x85,0x3b,0x70,0x54, \ -0xab,0x0d,0xc8,0xcb,0x03,0x58,0x98,0x68,0x05,0x12,0x2c,0x18,0xf4,0x4d,0x29,0xe3, \ -0x19,0xcb,0x0b,0x20,0x99,0xdb,0xd8,0x83,0x40,0xec,0x5e,0x08,0x87,0x83,0xc4,0xab, \ -0x42,0xc1,0x30,0x54,0xa1,0xf4,0x4e,0x1c,0xa4,0xd8,0xe3,0x0f,0x4f,0x25,0xc7,0x4e, \ -0x5d,0x81,0xe1,0x55,0x74,0x53,0x7d,0x4c,0x06,0xbf,0x90,0xeb,0x9a,0x7d,0x88,0xbb, \ -0xed,0xdb,0xb0,0xf5,0x20,0x92,0xb4,0xc5,0xb9,0x1b,0x0b,0x68,0x35,0xaf,0x20,0xb8, \ -0x68,0x28,0x58,0x2b,0xc5,0xc2,0x74,0x46,0x98,0x2b,0x6b,0x7b,0xd3,0x81,0x35,0x74, \ -0xa3,0x2b,0xab,0x53,0x5d,0xf2,0x9c,0x24,0x81,0xcf,0x51,0x34,0xe7,0x82,0xa3,0xe0, \ -0x56,0xd9,0xe9,0x18,0x95,0x14,0x37,0x36,0xc4,0xac,0xc4,0x6a,0x0d,0xa5,0x66,0xb2, \ -0xa1,0xa2,0x4b,0xde,0x92,0x85,0x98,0x72,0x71,0x64,0xb8,0x2a,0x53,0xed,0x4a,0x14, \ -0x09,0xf6,0x0b,0x26,0x87,0x6d,0xb6,0xc9,0x41,0x6d,0x5c,0x63,0xc2,0x4e,0x61,0x60, \ -0x9b,0x46,0xb2,0xd6,0xf1,0xa6,0xa4,0x15,0xa3,0x5f,0x20,0x39,0x5d,0x5c,0x40,0x9d, \ -0x0d,0x38,0x80,0x50,0x59,0x6b,0xee,0xc7,0x20,0x58,0x1e,0x93,0x42,0xc8,0x1e,0x2f, \ -0x49,0x3b,0x82,0x84,0xc6,0xbd,0x2e,0xc7,0x88,0x44,0x95,0xa3,0x1a,0x96,0x58,0x51, \ -0x7a,0x5b,0xdf,0x98,0xa3,0xd3,0x78,0xa2,0x09,0x53,0xd4,0x6c,0xcc,0x84,0xd4,0xdc, \ -0xe8,0x6a,0xb4,0x30,0x5e,0x96,0x72,0xad,0x18,0x59,0x56,0xb3,0x73,0x63,0xce,0xe8, \ -0xe2,0x95,0xbb,0x0a,0x2a,0x87,0x45,0x2e,0x1a,0xa8,0x59,0xef,0x2e,0x46,0x12,0xbe, \ -0x40,0x31,0xb2,0xab,0x41,0x86,0xe2,0xf0,0x04,0xc4,0xa4,0x46,0x18,0xb0,0xf4,0xa9, \ -0x8d,0x9a,0xac,0x68,0x2a,0x90,0x83,0x5b,0x3d,0x64,0x8b,0xb2,0xc8,0xf5,0x83,0xaa, \ -0x66,0xcc,0x2b,0x45,0x85,0xf5,0x8e,0x80,0x7a,0x38,0xa6,0xfc,0x42,0x76,0x21,0xb0, \ -0xc2,0xa0,0x82,0xbc,0x12,0x58,0x89,0x1b,0x2d,0x22,0x31,0x05,0x90,0xe7,0x28,0x97, \ -0x3f,0xac,0xec,0xd3,0xd1,0xea,0x39,0x1a,0xb9,0xe0,0x04,0xec,0x81,0xb7,0x13,0x2f, \ -0xb6,0x8f,0xfa,0xd4,0xcc,0xb9,0x8b,0x94,0xb5,0xca,0x29,0x81,0x58,0x69,0x54,0xd8, \ -0xd6,0xf6,0x43,0xdf,0xc0,0xd0,0x4e,0x07,0x88,0x76,0x8e,0xe1,0xbc,0x44,0x66,0x92, \ -0xc3,0xb7,0x56,0x26,0x78,0x75,0x86,0x01,0xeb,0xb8,0x59,0xaf,0x3a,0xe7,0x79,0x83, \ -0x6d,0xd1,0x5c,0x90,0x72,0x68,0x36,0x2b,0x7b,0xda,0x0d,0x41,0x91,0xec,0xda,0x3e, \ -0x76,0x7c,0x7b,0x2c,0x39,0xa0,0x1a,0x9e,0x10,0xa0,0x7b,0xb7,0x15,0x3f,0x62,0x2f, \ -0xd0,0x6e,0x10,0xe2,0xc5,0x3d,0x7d,0x2f,0xcc,0x77,0xe2,0xfe,0x23,0x46,0x4c,0x82, \ -0x82,0x98,0xc6,0x09,0x84,0xac,0x8f,0xc2,0x93,0x2c,0x26,0x04,0x8a,0x20,0x82,0xb4, \ -0xb6,0xb6,0x0b,0x24,0x14,0x82,0x30,0xeb,0xee,0xd4,0xd4,0xf2,0xaa,0xb3,0x1f,0xe5, \ -0x4e,0x5d,0xea,0x0b,0x8e,0xc7,0x7a,0x42,0xad,0x73,0x45,0x1a,0x28,0x34,0x61,0xf5, \ -0x1e,0xfa,0x19,0x6c,0x06,0x08,0x0f,0xf5,0xea,0x58,0x06,0xe4,0x79,0x94,0x92,0x77, \ -0x32,0x43,0xf5,0x0c,0xe8,0x80,0x44,0x48,0x3d,0x5c,0x41,0x11,0x07,0x01,0x82,0xa6, \ -0xdb,0x72,0xc6,0x92,0x4d,0xdf,0xa1,0x02,0x6c,0x41,0x87,0x46,0x43,0x68,0x31,0x59, \ -0xaf,0xbd,0xa1,0x2d,0x4d,0x64,0x0f,0xf3,0xff,0x0d,0x11,0xbb,0x52,0x58,0xab,0x12, \ -0x7f,0x72,0x2a,0x14,0xc8,0x18,0x26,0x31,0x2c,0xd8,0x29,0x68,0xda,0x86,0x94,0xdf, \ -0x08,0x02,0xad,0x55,0x8b,0xe0,0x9e,0x2f,0x5d,0x5d,0x84,0xc7,0x28,0x63,0x4d,0x71, \ -0x3b,0x24,0x30,0x0b,0x7f,0xf7,0x51,0x12,0x35,0x7a,0x59,0x66,0x36,0xab,0xf3,0xbf, \ -0x0b,0xee,0xaa,0x15,0x29,0x70,0x95,0xcb,0xac,0x08,0x63,0xdf,0x5f,0x2d,0x42,0xe6, \ -0xcb,0xd9,0x93,0x4b,0xc7,0x59,0x9d,0xe3,0x64,0x31,0x5a,0x40,0xc6,0x6d,0xd8,0x6f, \ -0x3c,0xd9,0xdf,0x30,0xa2,0x30,0x88,0x0a,0xa8,0xb1,0x56,0x08,0xc4,0xfc,0xd6,0x8c, \ -0x68,0x95,0x04,0x63,0x22,0xa3,0x10,0x51,0x58,0x30,0x17,0xd5,0xf2,0xcc,0x7f,0xb7, \ -0xe9,0x3f,0xa7,0x3a,0xfd,0x9a,0xa1,0x7c,0xd2,0x90,0xcd,0xc0,0xc1,0x42,0xc3,0x12, \ -0x54,0x95,0x0f,0x44,0x52,0x50,0x0b,0xeb,0x69,0xb1,0x0d,0xa0,0x98,0x27,0xb3,0x50, \ -0xdc,0x06,0x01,0xac,0x34,0x87,0xdc,0x2c,0xfc,0x06,0x93,0xd8,0x97,0x83,0x9c,0x06, \ -0xb1,0xc1,0x81,0x0b,0x6e,0xe9,0xf6,0x78,0xfd,0xbf,0x9e,0x9e,0x4c,0x51,0x74,0xa1, \ -0xc6,0x52,0xc3,0x24,0x40,0x3d,0x28,0x50,0x24,0xfc,0x38,0xff,0xa4,0xf3,0xaa,0x2c, \ -0x89,0x8b,0xfe,0x08,0xa7,0xb6,0xaa,0x85,0x00,0x6c,0x6c,0x13,0x0e,0xe9,0x2c,0xb3, \ -0x5d,0xfe,0xdd,0x7f,0x2f,0x87,0x2e,0x4d,0x25,0xb5,0x18,0xc2,0x35,0x78,0x15,0xa4, \ -0xce,0xc2,0x1a,0x4a,0x69,0x80,0x41,0xa8,0x90,0x05,0xdc,0x8b,0x3b,0x40,0x1b,0xcd, \ -0xc1,0x9a,0xb2,0x94,0xc9,0x22,0xe2,0x24,0x70,0xf2,0x04,0x55,0xd1,0xa5,0x64,0x76, \ -0x7a,0x71,0xe9,0xf5,0x72,0x83,0x49,0x9d,0x28,0xb7,0xcd,0x2b,0xd9,0x95,0xd9,0x79, \ -0xee,0x1e,0xc4,0x8d,0x4c,0x43,0xdb,0x20,0xb0,0x38,0xc8,0x7f,0x29,0xc3,0xae,0x4f, \ -0x24,0x93,0xbf,0xbf,0xbc,0x9e,0x0c,0x41,0xf0,0xa2,0x85,0xfb,0xfb,0x21,0x9a,0xe3, \ -0xac,0xf8,0xd3,0x78,0xbc,0xa3,0x1b,0x5c,0xb5,0x57,0x1d,0xe7,0xe0,0xfa,0xc3,0xa8, \ -0xe8,0xcc,0x05,0xac,0x68,0x1b,0x07,0xa3,0x81,0x31,0xa5,0x56,0x96,0x63,0x40,0x12, \ -0xc1,0xb1,0x29,0x3e,0x3d,0x47,0xc5,0x48,0x6f,0x0d,0xc0,0x06,0xa6,0xbb,0x8e,0x9d, \ -0x0e,0xdf,0x15,0x43,0xbc,0x76,0x1e,0xe2,0xc4,0xb2,0x3c,0x6c,0x01,0xc5,0x95,0x84, \ -0xab,0x20,0x31,0x98,0xd4,0xcb,0xae,0x8b,0x34,0xea,0xd5,0x47,0x5e,0xa8,0xb9,0x3a, \ -0xb1,0xad,0xf5,0x2a,0x89,0x02,0xbd,0x82,0x14,0x91,0x94,0xb3,0x33,0x56,0x11,0x72, \ -0xf8,0xc7,0x3f,0x30,0xbe,0x4e,0x6a,0xc0,0x93,0x84,0xf5,0x95,0x66,0x9d,0xbb,0xd3, \ -0x9d,0xb0,0x98,0xb9,0xca,0xaa,0x9e,0x70,0x32,0xae,0x77,0x18,0x17,0xcc,0xbb,0x24, \ -0xe4,0xb3,0xb0,0x37,0x79,0x15,0x67,0xed,0xb7,0x91,0xc3,0x11,0x25,0xb4,0xa0,0x3e, \ -0x4d,0x03,0x35,0x52,0x4b,0x09,0xa3,0xa5,0x88,0x30,0xf4,0x0d,0x0d,0xa1,0x25,0x08, \ -0x60,0xc1,0xe5,0x81,0xf3,0xeb,0xf6,0x6d,0xae,0xa7,0x65,0x8a,0xc6,0x08,0x20,0x8c, \ -0x22,0x0a,0xc5,0x80,0x50,0xdb,0xb4,0xfe,0x7c,0x77,0xac,0x58,0xe5,0xc9,0x23,0x7b, \ -0x6f,0x0b,0xbb,0xa9,0x75,0xc7,0x47,0x42,0x2c,0x0d,0x0b,0xc5,0xa0,0x3c,0x0c,0x7a, \ -0xd1,0xfa,0x7b,0xfe,0xbe,0xb1,0x7c,0x8c,0xf1,0x9c,0xd9,0x20,0xa4,0x9c,0xa2,0xc3, \ -0x90,0xb3,0xdc,0x1c,0xfb,0x71,0x0e,0xce,0xbb,0x0d,0x54,0x52,0x0b,0x43,0xe1,0xc8, \ -0x03,0xc8,0x36,0x0d,0x34,0xcd,0xfd,0xc4,0xb0,0xcd,0xbe,0xf8,0x3b,0x5d,0xd5,0x21, \ -0x15,0xbe,0xa8,0xac,0xff,0x7b,0x39,0x49,0x4b,0xb4,0x42,0x55,0x28,0x4c,0x4e,0xd3, \ -0x6a,0xf5,0x26,0x90,0x31,0x89,0x78,0x94,0x24,0x98,0x46,0xa0,0xec,0x35,0x6b,0x30, \ -0x8a,0x86,0xe6,0x75,0x6d,0x82,0xfc,0xda,0x6c,0x63,0xc0,0x3c,0x10,0xa9,0x5a,0x47, \ -0x2e,0x43,0x0a,0x44,0x21,0xa1,0x85,0x81,0x6c,0xac,0x01,0x44,0xfe,0x84,0xcf,0x46, \ -0x4f,0xcb,0xc4,0x36,0x7d,0xcf,0x35,0x6e,0xbb,0xc8,0x08,0xc4,0x75,0x51,0x01,0xb3, \ -0xa2,0x61,0x0f,0x82,0x75,0x62,0x86,0x44,0x29,0x63,0x74,0x7f,0x75,0xf2,0x37,0xcf, \ -0x99,0xf5,0xcf,0xdf,0x8e,0x73,0x69,0x14,0x38,0x6c,0x56,0x07,0xd3,0x7a,0xbb,0x89, \ -0xd6,0x1f,0x6e,0xc7,0x01,0x05,0x16,0x0a,0x8c,0x59,0x04,0x86,0x18,0x83,0x2d,0x16, \ -0xc3,0x83,0x11,0xc1,0x84,0x99,0x52,0x14,0x23,0xb5,0xd0,0xa4,0x12,0x44,0xb5,0x2d, \ -0xef,0x85,0x0d,0x91,0x55,0x8c,0x45,0x05,0x62,0x39,0x68,0xe8,0xb4,0x16,0xa1,0xd9, \ -0x6c,0x9a,0x16,0x42,0x06,0xdd,0x59,0x65,0xbf,0x5d,0xc5,0xab,0xc9,0xd9,0x49,0x7a, \ -0x35,0x79,0x71,0xa9,0x73,0x5b,0xc3,0x0f,0xa0,0x39,0x83,0xed,0x45,0xd4,0x3d,0x06, \ -0xb2,0x3f,0x3f,0x69,0xa6,0x0d,0xa4,0x30,0xc9,0x17,0xa6,0xd8,0x39,0x88,0x70,0xb8, \ -0x2a,0xaa,0x88,0x29,0x1f,0x63,0x2c,0x54,0xc3,0x25,0x59,0x2a,0xa8,0x92,0xeb,0x8c, \ -0x4c,0x2e,0x5b,0x22,0xc3,0x0c,0x86,0x9b,0x6a,0x8f,0x11,0x71,0x47,0xa0,0xbe,0x46, \ -0x1b,0xae,0xb9,0x34,0xb1,0xa9,0xc7,0x65,0x0b,0x26,0x84,0xad,0xbe,0xca,0x40,0x57, \ -0x84,0x20,0xf8,0xe1,0xb2,0xe4,0x51,0xa6,0xaa,0x7f,0x12,0x11,0xe6,0x60,0xda,0x15, \ -0x3e,0xd8,0x05,0x2d,0x25,0x81,0x71,0x97,0x75,0x06,0x67,0x1e,0xd9,0x5d,0xee,0x58, \ -0x06,0x30,0x21,0xa7,0xa2,0x45,0xed,0xb0,0xc0,0x66,0x83,0x99,0x88,0x66,0x10,0x0b, \ -0x71,0x89,0xe9,0x46,0x7e,0xd5,0xb4,0x88,0x99,0xa1,0xdb,0xe7,0xd7,0x0d,0xb8,0x7e, \ -0xbd,0xba,0x63,0xc7,0xed,0x18,0xa6,0xb3,0xa6,0x0a,0x33,0x8a,0x61,0x85,0xe5,0x67, \ -0x16,0xd3,0x3c,0xd3,0xc0,0x92,0x5d,0x56,0xb1,0xdf,0xbc,0xb5,0x95,0x4c,0xa2,0x61, \ -0x3d,0xf7,0xf0,0x10,0xa5,0x90,0x04,0x09,0x17,0x20,0xbb,0xdd,0xc6,0x71,0xe5,0x81, \ -0x77,0x77,0x20,0x5b,0xcd,0x50,0x48,0xdb,0x86,0x1e,0xf0,0x61,0x87,0x74,0xcb,0x3c, \ -0xda,0x9a,0xba,0x9d,0x81,0xdf,0x7b,0x4a,0x7a,0x19,0x2e,0x39,0xe8,0x5f,0xa6,0x9e, \ -0x06,0x64,0x33,0xac,0x25,0x0a,0xa6,0x4b,0xaa,0x73,0xc0,0x60,0x11,0x33,0x72,0x89, \ -0x19,0x45,0xf0,0xf7,0x63,0x64,0x56,0xdc,0x8e,0x6b,0xf1,0xa9,0x53,0x27,0x7c,0x1f, \ -0xc1,0x9d,0x26,0x4d,0xb7,0xb5,0x64,0x19,0x20,0x2a,0x98,0xe2,0x88,0x20,0x5b,0x1f, \ -0x95,0xa3,0x27,0xae,0xa9,0x12,0x4a,0x2c,0x84,0x66,0x6c,0xd8,0x93,0xcd,0x0c,0x1a, \ -0x13,0x06,0xdb,0x11,0xbd,0xa0,0xc7,0x40,0xb6,0x36,0xd1,0x11,0x58,0xa0,0x56,0x3d, \ -0x36,0xf7,0x30,0xd3,0xd0,0x68,0x89,0x84,0x41,0x03,0x58,0xbb,0xd1,0x56,0x9b,0x43, \ -0x69,0x6f,0xfa,0xef,0xa1,0xc8,0xe0,0x6e,0xd8,0x18,0x9a,0x17,0x70,0x7b,0xaa,0x7e, \ -0x86,0x3b,0x99,0x7e,0x9b,0xd2,0x47,0x67,0xe1,0xed,0x54,0xb9,0x01,0xbc,0xba,0xf2, \ -0x37,0xb0,0xd0,0x5a,0x9a,0xab,0x4b,0x82,0x6d,0x94,0x20,0xef,0xc6,0xa2,0x4f,0x1c, \ -0xc9,0x52,0x7b,0x35,0x83,0xc6,0x06,0xaf,0x1b,0x4a,0xe8,0xc8,0x14,0x18,0x50,0x30, \ -0x82,0x68,0x15,0x04,0xd6,0x70,0xde,0x59,0xb1,0xe9,0xef,0xc1,0x5e,0xbf,0x0d,0xce, \ -0x4f,0x15,0x78,0x84,0x39,0x71,0xd1,0x51,0xaa,0xc1,0x28,0x94,0x43,0x43,0x1d,0x64, \ -0x5c,0x28,0x9d,0x89,0xb5,0x8a,0xda,0x8e,0x10,0xe4,0xa8,0x89,0x18,0x98,0x21,0xcd, \ -0x00,0x1d,0x09,0x37,0x06,0x4c,0x37,0x01,0x20,0x81,0x15,0x68,0x80,0x54,0x87,0x53, \ -0x02,0x59,0x08,0x4c,0xcb,0x82,0x24,0x80,0x8c,0xb6,0xa8,0xb3,0x04,0x10,0x59,0xeb, \ -0x36,0x09,0x87,0x21,0xb0,0xe0,0x8d,0x0c,0x36,0xf2,0xc9,0x98,0xe3,0x28,0x69,0x4a, \ -0xa8,0x35,0xb6,0x8b,0x70,0x97,0x18,0x0b,0x9c,0xd6,0x08,0x1a,0x02,0xd4,0x51,0x7d, \ -0x11,0x0a,0xb0,0x10,0x9c,0xe1,0x27,0x94,0xc4,0xad,0xc7,0xf2,0x75,0xfa,0x56,0x51, \ -0x0a,0xad,0x11,0x04,0x2b,0x61,0xab,0x6b,0x45,0xa6,0xf9,0x1a,0x6d,0x88,0x64,0x7b, \ -0x38,0x74,0x57,0x7b,0x2c,0xc0,0xde,0xc2,0xf9,0x19,0xa7,0x4e,0x6c,0x97,0x1a,0x8a, \ -0x8e,0x90,0xb7,0x53,0xc2,0xca,0xbf,0x22,0xc8,0x9a,0xd2,0xc5,0x18,0xd8,0xa2,0x01, \ -0xc6,0xef,0xe5,0x42,0x45,0xc3,0x28,0x90,0x73,0x42,0xa0,0x69,0x82,0x93,0x08,0x2e, \ -0x06,0xa1,0x71,0x8c,0x26,0x30,0xb3,0x64,0xc0,0x70,0x2e,0x86,0x31,0x31,0xa2,0x43, \ -0x2e,0x23,0x1f,0x65,0x2a,0xa8,0x22,0x29,0x9b,0x2b,0x26,0xe8,0xd3,0x91,0xaa,0x01, \ -0x96,0x9c,0x06,0x54,0x12,0xf7,0x58,0x2e,0x68,0xb2,0xa0,0xac,0x98,0x08,0x86,0x93, \ -0x49,0x18,0xc2,0x4e,0x32,0x15,0xb5,0x0c,0x13,0x18,0x33,0xc4,0xd0,0x3d,0x65,0xa9, \ -0xfe,0x00,0x9e,0x53,0x6c,0x8d,0xa2,0x46,0x88,0x63,0x18,0x06,0xf9,0x4a,0xf1,0x0b, \ -0x50,0xc1,0x5d,0x25,0xb0,0x03,0xd7,0xd2,0x2c,0x25,0xed,0x5f,0xb7,0x9e,0xd5,0x36, \ -0x34,0x5e,0x33,0xe8,0x77,0x86,0xb0,0x50,0x5b,0xd5,0x0b,0x6b,0x0e,0xa4,0xcb,0xeb, \ -0x91,0xb1,0x63,0x7f,0x9f,0xd2,0x5d,0x5e,0xae,0x88,0x0a,0x76,0xa3,0xf2,0xf6,0x68, \ -0x14,0x62,0xc8,0xe6,0xc3,0xc2,0xc4,0x36,0xc4,0xc1,0x24,0xc0,0xeb,0x56,0xad,0x8c, \ -0x2b,0x44,0x15,0x8e,0x46,0xb8,0x15,0x11,0x2d,0x2a,0xc0,0xb4,0xa0,0xdb,0x06,0xd1, \ -0x94,0x29,0x2d,0x19,0x44,0xb4,0xac,0x82,0xc6,0xb5,0x8d,0x8e,0x70,0x7b,0x32,0x19, \ -0xcc,0x9b,0x95,0x8c,0xb1,0x07,0x49,0x28,0x66,0xc0,0xc4,0x64,0xc2,0x47,0xa0,0x11, \ -0x09,0x46,0x6c,0xb3,0x05,0x54,0x5f,0x56,0x04,0xf5,0x2c,0x80,0x64,0x11,0xe1,0xdf, \ -0xd4,0x63,0xee,0xe8,0xb5,0x4a,0xc5,0x88,0x99,0x14,0x0c,0x07,0xf0,0x1b,0x18,0xc4, \ -0x74,0x64,0xe5,0xac,0x29,0x0c,0x24,0xfa,0x59,0xc9,0x9f,0xb1,0x99,0x3f,0x24,0x5e, \ -0xd6,0x6c,0x86,0x95,0x0a,0xfc,0x89,0x2e,0x65,0x18,0x92,0x3d,0x85,0x95,0xea,0xb5, \ -0x9b,0xf2,0x91,0x5d,0xd9,0xd4,0x8f,0x6e,0xef,0x5f,0x7d,0x32,0x19,0xf6,0x35,0xce, \ -0x52,0x16,0xb0,0x90,0x16,0x22,0xa2,0xef,0xd3,0xb1,0x7e,0x3e,0x29,0xc4,0x2d,0x83, \ -0x6c,0x86,0x88,0x50,0xa1,0x45,0x2a,0x89,0xa5,0x45,0x14,0x2a,0x44,0x19,0x9a,0x06, \ -0xd0,0x83,0x2b,0x2d,0xb6,0x2e,0x78,0x91,0x63,0x2b,0x2d,0x07,0x8f,0xbd,0x6e,0xa6, \ -0xf6,0xd1,0x79,0xbb,0xac,0x6c,0x6e,0x9d,0x1e,0x28,0x19,0x8f,0xf0,0x77,0xfc,0xc2, \ -0x11,0x7d,0xc9,0x0b,0x54,0xe2,0xc0,0x36,0x88,0x2c,0x22,0x32,0x26,0x61,0xe1,0x03, \ -0xad,0x93,0x41,0x8a,0x83,0xce,0x84,0xb1,0x88,0x2a,0x30,0x46,0x7a,0xe1,0xe9,0x62, \ -0xc5,0x05,0x80,0x5c,0xce,0xe4,0xa0,0x6e,0x6b,0xc0,0x36,0xb0,0xf2,0x75,0x6a,0x17, \ -0x86,0x93,0xd1,0xe6,0xa2,0x64,0xe3,0xac,0x59,0x22,0xa9,0x0e,0xa0,0x31,0xc8,0x39, \ -0xb1,0x2b,0xc4,0xb3,0x1a,0x06,0x03,0x6c,0xa6,0xa2,0xec,0x05,0x8e,0xcc,0x57,0x04, \ -0x59,0xb3,0x46,0x5c,0x8f,0xc1,0xd4,0x29,0x85,0x52,0xa6,0xa6,0x2e,0xb8,0xcf,0x44, \ -0x67,0x6c,0x38,0x45,0xf0,0x0d,0x44,0x43,0x66,0x0c,0x3b,0x59,0x23,0x4d,0x1b,0xa2, \ -0x8c,0x10,0x47,0x26,0x70,0x4c,0x07,0x9c,0x68,0xe0,0xdb,0x6c,0xc8,0x67,0x05,0x94, \ -0xc6,0xd0,0x0a,0x12,0xf7,0xc4,0x21,0xae,0x9f,0xbe,0x98,0xfe,0x95,0xbe,0x0f,0x21, \ -0x8c,0x57,0xa2,0xbb,0xfa,0xc0,0x3b,0x83,0x03,0x7c,0x2b,0x92,0xd4,0x37,0x77,0x71, \ -0x10,0x32,0x18,0xd2,0x91,0x5d,0xb1,0x40,0x29,0x5f,0x99,0x2d,0x8a,0xeb,0x12,0xa4, \ -0x68,0xb1,0x88,0xa8,0xb4,0x6d,0xea,0x1d,0x96,0x33,0x37,0xb1,0x91,0x32,0x04,0x03, \ -0x0b,0x57,0x50,0xd2,0x4d,0xab,0xbb,0x06,0x69,0x07,0x62,0x02,0xfd,0x95,0x6b,0x86, \ -0xff,0xb7,0x9f,0xb9,0x82,0xc5,0x87,0x29,0x7e,0x93,0xe0,0x9c,0xbc,0x0d,0x59,0xea, \ -0xb9,0x4e,0xc9,0xc6,0x1f,0x05,0xf9,0x25,0x88,0xf9,0xb9,0x64,0x92,0xa1,0x37,0xb1, \ -0x23,0x81,0xd5,0x76,0xff,0xbf,0x15,0x97,0x14,0x0a,0x9a,0xde,0xb8,0x08,0x88,0x93, \ -0xb7,0xd8,0x40,0x72,0xaf,0xca,0x84,0x9f,0x77,0x61,0x25,0x27,0x65,0xea,0x35,0xe4, \ -0x08,0x82,0x82,0xa8,0x0c,0x88,0x25,0xb6,0x41,0x54,0x56,0x81,0x95,0x79,0x5d,0xcb, \ -0x15,0xe0,0x30,0x3a,0xcf,0x0a,0xed,0x73,0x1e,0x0e,0xa0,0xc9,0x06,0xda,0xb8,0xf5, \ -0x0c,0x61,0x90,0x43,0x21,0x02,0xcd,0x99,0x71,0x32,0xa5,0x1a,0xda,0x32,0x98,0xa1, \ -0xb5,0xdf,0x16,0x40,0xdf,0xd3,0xa6,0x6f,0x2f,0x30,0x3b,0x79,0x72,0x67,0xd5,0x0e, \ -0x44,0xa1,0xc1,0xa2,0x12,0xec,0xd9,0x36,0x27,0xdd,0xc0,0x3f,0x39,0xa8,0x82,0x3b, \ -0xd5,0x25,0xdf,0xb3,0x67,0x43,0x9a,0xb0,0x6b,0x15,0x2a,0x83,0x21,0x30,0xca,0x2c, \ -0xaf,0x0f,0x94,0x48,0xaf,0x47,0x64,0x05,0x96,0x1a,0xb2,0x48,0x59,0xc1,0x73,0x0d, \ -0x14,0x11,0x3e,0x7f,0x39,0x6a,0xe1,0xd2,0xef,0xbe,0x06,0xf0,0x17,0xcf,0x8c,0x2b, \ -0xa9,0x97,0xc4,0x35,0xa3,0xbb,0x8d,0x89,0x2e,0x90,0x38,0x90,0xda,0x20,0xa2,0xce, \ -0x12,0x74,0xc8,0x0b,0x04,0x67,0x82,0x4f,0xe4,0x7e,0x41,0xa4,0x95,0x82,0xb7,0xad, \ -0x34,0x8c,0xb9,0xda,0x58,0x4c,0x15,0x43,0x2a,0xf9,0x34,0x36,0x4c,0xd5,0x2e,0x3b, \ -0x85,0xa3,0x83,0x12,0x0c,0x55,0x46,0x20,0xb2,0x7a,0x36,0x27,0x29,0x27,0x41,0x3b, \ -0x12,0x7e,0x5e,0x5c,0xbb,0xf7,0xc6,0x82,0x7b,0x7b,0x7a,0x93,0x96,0x4e,0x42,0x29, \ -0x6f,0xa5,0xc6,0xc6,0x52,0x03,0x45,0x26,0x5e,0x38,0xac,0x01,0x45,0x15,0x41,0xeb, \ -0xa1,0x58,0xcd,0x69,0x32,0x81,0x81,0x05,0x81,0x59,0x74,0x1a,0xab,0x11,0x15,0x45, \ -0x82,0x0b,0x22,0xa8,0x2b,0x2a,0xb5,0x58,0x8c,0x80,0x82,0x08,0x90,0x45,0x8c,0x1d, \ -0x50,0xb7,0x34,0xc3,0x0f,0x93,0xf7,0xde,0x26,0xb3,0xed,0x0e,0x20,0x70,0x92,0x6f, \ -0xca,0xea,0x13,0xed,0xa5,0x42,0x02,0x3f,0x4f,0x74,0xdd,0x5a,0xb7,0xa5,0xc0,0x48, \ -0xcb,0x8b,0xc6,0x38,0x40,0x58,0x03,0x91,0x06,0x90,0xf5,0xb3,0x2c,0x50,0x45,0x8b, \ -0x1c,0xb0,0xa6,0x4a,0x58,0x6c,0x62,0xe0,0x58,0xd4,0x6c,0xb2,0x0a,0xb8,0x42,0xc2, \ -0xb7,0xaf,0x84,0xd1,0x3a,0xc4,0xbd,0x0b,0xf2,0xff,0x47,0xcf,0x83,0x99,0xcf,0xea, \ -0x03,0xd4,0x2b,0x5b,0x47,0xd4,0x7c,0xc7,0x73,0x66,0xd4,0x92,0xe2,0x1b,0x77,0x3d, \ -0x8c,0x87,0x92,0xf0,0xf5,0x8e,0x34,0x16,0xfb,0xb2,0x0c,0xc7,0x39,0x93,0xe5,0x4f, \ -0x5b,0x87,0x59,0xeb,0x7a,0xcb,0x0a,0x94,0x48,0x9b,0x99,0x0f,0xce,0xeb,0xd8,0x64, \ -0xc0,0x8f,0xcb,0xca,0x2a,0xc0,0x59,0x0a,0x32,0x21,0xa2,0x69,0x78,0x6e,0x02,0x84, \ -0x67,0x58,0x0f,0x65,0x62,0x82,0xa2,0x21,0x65,0xb3,0x53,0x19,0xc1,0x0d,0x8e,0x00, \ -0xb1,0x62,0x24,0x63,0x11,0x84,0x88,0xb1,0x14,0x18,0x4a,0x35,0x15,0xf7,0x8b,0xb1, \ -0xb1,0xa6,0x34,0xc1,0x61,0x32,0x2e,0x32,0x17,0x1a,0x77,0x5a,0x86,0x18,0x86,0x0c, \ -0x4a,0xc2,0xa0,0x4a,0x4f,0x6c,0x31,0x04,0xa0,0xc5,0x56,0x64,0xeb,0x29,0xdd,0xc2, \ -0x4e,0x63,0x43,0x68,0x4d,0x85,0x57,0x14,0x85,0x12,0xd6,0xd4,0x79,0x15,0xfb,0x9d, \ -0x03,0x80,0x8c,0x4d,0xfb,0x7f,0x76,0x36,0x2c,0x5e,0x8f,0x4d,0x64,0xea,0x12,0x52, \ -0x44,0x3f,0x9d,0x26,0x34,0x2f,0x6a,0x8c,0x15,0x62,0x95,0xa3,0x20,0xb3,0x44,0x59, \ -0x8a,0x51,0x01,0x92,0x08,0x7c,0x9a,0x10,0xef,0x86,0xba,0xeb,0x16,0x22,0xd0,0x14, \ -0x1b,0x46,0x8c,0xa4,0xa0,0x8d,0xb0,0xad,0x69,0x17,0x4e,0xee,0x92,0x33,0xa5,0x3a, \ -0x1b,0x49,0xf9,0x6b,0x4f,0x91,0x85,0x50,0xa6,0x0c,0x1a,0x24,0x61,0x0b,0xb5,0xc1, \ -0x2d,0x7c,0x13,0x28,0xd1,0xce,0x98,0xbf,0xa1,0xd1,0xe2,0xd5,0x27,0xab,0xdf,0x6d, \ -0x75,0xb5,0x7d,0xb8,0x1f,0x6d,0x15,0xce,0xbd,0x40,0x79,0x33,0x84,0xa8,0xc4,0x76, \ -0x42,0xc6,0x8f,0xa6,0x61,0xa3,0x44,0xc8,0xe9,0xae,0x48,0x70,0x35,0x23,0x08,0x52, \ -0xad,0xed,0xb1,0x2e,0x46,0x8a,0x4f,0x13,0x8b,0x2d,0x88,0x11,0x35,0xdf,0x15,0xb5, \ -0x02,0x90,0x40,0x8c,0x00,0xc0,0x47,0x67,0x1b,0x50,0x11,0x17,0xfc,0xae,0xc8,0x32, \ -0x05,0xe5,0x9c,0x87,0xb6,0xcc,0x05,0x6d,0x4a,0x3a,0xf7,0x90,0xbb,0x78,0xf3,0xa8, \ -0x0e,0x29,0x6d,0xb7,0x7e,0xa7,0x5a,0x45,0xd9,0xec,0x6c,0x7c,0xde,0x06,0x7a,0x08, \ -0x83,0xc3,0x66,0x20,0x92,0x18,0x8b,0xa2,0x19,0x98,0x9b,0xb1,0x70,0x72,0x09,0x52, \ -0xc5,0x69,0x31,0x1e,0x31,0x09,0x56,0x1a,0x69,0xd7,0xd3,0xa0,0x5f,0x5d,0x70,0x19, \ -0x8d,0x70,0x78,0xf2,0xd9,0x5b,0x1b,0xe2,0x1c,0x94,0x26,0xe0,0xa6,0x69,0x4e,0x6f, \ -0x00,0x8e,0x40,0x52,0x92,0xf0,0x4f,0xec,0x75,0x72,0xe0,0x79,0x05,0x60,0x46,0x8e, \ -0x28,0xc1,0x42,0x93,0xaa,0x8e,0x39,0x79,0x94,0xc9,0x17,0xb1,0xe7,0x64,0x7a,0xcb, \ -0x71,0x21,0x4d,0x8a,0x77,0x11,0xa6,0x14,0x74,0xe6,0xaa,0x0a,0x35,0xd7,0x8e,0xab, \ -0x61,0xdb,0x1a,0x34,0x36,0xc5,0x67,0x10,0x71,0xc8,0xb8,0x44,0xca,0x03,0x92,0x6a, \ -0xb7,0xb8,0x1c,0x39,0xaf,0x28,0x91,0xaa,0x8d,0xf4,0x2a,0xfb,0x28,0xd9,0x95,0x95, \ -0x73,0xdc,0x05,0x60,0x68,0x21,0x9b,0x08,0xc8,0xb4,0x01,0xb8,0x9d,0x45,0x93,0x61, \ -0x44,0x25,0x08,0xb7,0x11,0x20,0x75,0xa4,0x86,0x1a,0x4b,0x32,0x64,0x2a,0x0b,0x19, \ -0x8b,0x86,0x5e,0x78,0x93,0x5a,0x56,0xd5,0x0e,0x79,0x89,0x75,0x61,0x83,0xb9,0x16, \ -0x20,0x8d,0x14,0x4d,0x78,0xf5,0xc4,0xae,0x18,0x18,0x53,0x97,0x1b,0x6e,0x7c,0xc6, \ -0x74,0x7e,0x56,0x9e,0x11,0x91,0x6e,0x19,0xc6,0x83,0x93,0x18,0xbe,0xaa,0xc5,0xf8, \ -0x38,0x7d,0x51,0x0f,0xd9,0x70,0x3d,0xfb,0xe6,0x5e,0xb6,0x20,0x5c,0x71,0x4f,0xc5, \ -0xe9,0x49,0x88,0x02,0x0c,0xc1,0x52,0x57,0x9f,0x4d,0xd1,0x15,0x8c,0x60,0xc4,0x7d, \ -0x57,0x5c,0x63,0x07,0x6d,0x1f,0xd2,0xe8,0xeb,0x4c,0x23,0x00,0xd8,0x54,0x05,0x05, \ -0xa5,0x0a,0xa8,0x9c,0x39,0x04,0x1c,0x20,0x84,0xa0,0x37,0xdc,0x5e,0xa2,0x78,0x15, \ -0xe8,0x77,0xb7,0xa3,0x21,0x32,0xcc,0xf3,0x6f,0xc2,0xa8,0x66,0xd8,0x55,0x33,0x60, \ -0x71,0x93,0x58,0x9e,0x28,0x18,0x6e,0x6b,0xb9,0xe8,0xca,0x8d,0x4f,0x10,0x70,0x8d, \ -0x86,0x1a,0xcf,0x55,0x25,0xab,0x3f,0xc5,0xad,0xaf,0x87,0x00,0x84,0x1a,0xba,0x0d, \ -0x84,0x89,0x4e,0x01,0x58,0xce,0x92,0x5c,0xf7,0xd6,0x18,0x43,0x81,0x90,0x40,0x76, \ -0xd4,0x0c,0x8c,0xe0,0x36,0x33,0x26,0xb0,0x35,0xb1,0xf8,0xbd,0x7d,0x1c,0x2d,0x6c, \ -0x8d,0x37,0x53,0x72,0x37,0x2e,0xe9,0xe3,0xcc,0xe0,0x17,0xae,0x9c,0xa5,0xd9,0x2d, \ -0xde,0x66,0x42,0x0d,0x8d,0x2b,0x9a,0x15,0x00,0x8d,0xdd,0xf2,0xdb,0xa5,0x5e,0xd2, \ -0x32,0x34,0x26,0xc6,0xc0,0x5e,0x1d,0xb1,0xc0,0x2c,0xcc,0x4b,0x05,0x00,0x2e,0x08, \ -0x26,0x81,0xd5,0xeb,0xf2,0xcb,0x30,0x63,0x09,0x54,0x44,0x86,0xa1,0x03,0x07,0x90, \ -0x4b,0xc1,0x12,0x9b,0x10,0xb2,0x17,0x4c,0xd9,0x97,0x17,0x44,0x30,0x62,0xb9,0xf6, \ -0x73,0x3c,0x61,0xbd,0x0f,0xc1,0x24,0x30,0x90,0x27,0x90,0x99,0x92,0x1e,0x61,0x25, \ -0xdf,0x8f,0x14,0x3a,0xb2,0x79,0x0c,0xcb,0x2a,0x0c,0x61,0xdf,0xa1,0x4f,0xa9,0xf1, \ -0x64,0x0f,0x5f,0xb0,0x0e,0xb5,0x30,0x0d,0x1b,0x91,0x97,0x60,0x4a,0x5d,0x9c,0x4d, \ -0xf3,0x44,0x7c,0xa1,0x24,0x63,0xe3,0xc8,0x89,0x3f,0x57,0xc9,0xa3,0x82,0x1a,0x68, \ -0x06,0xce,0xce,0x26,0x7a,0x99,0xd2,0x3a,0xbe,0x5b,0x22,0x77,0xc5,0x4e,0x1c,0x90, \ -0xd9,0xea,0x61,0xd6,0x45,0x48,0xe7,0x77,0x40,0xdf,0x89,0x68,0xce,0x19,0x83,0xab, \ -0x7c,0x72,0x68,0x99,0xbf,0xa2,0xdc,0x1b,0x30,0xd9,0xce,0xf4,0x74,0x76,0xd7,0x46, \ -0x80,0xd2,0x09,0xb0,0xbe,0x93,0x60,0x57,0x9a,0x1b,0xd2,0xd3,0x96,0x70,0xed,0xa2, \ -0xc1,0xba,0xa2,0x48,0x71,0x2d,0x16,0x32,0x6c,0x55,0x32,0x19,0x92,0x30,0x1f,0xa3, \ -0x47,0x62,0xfb,0x60,0xe5,0xd9,0xc8,0x37,0x33,0x7a,0x30,0x0b,0xae,0xb1,0x79,0x5d, \ -0x00,0x6c,0x18,0x9a,0x19,0x44,0x12,0x06,0x91,0x22,0x60,0x66,0xed,0x03,0x94,0xaa, \ -0xe1,0xc1,0xa0,0x41,0x33,0x14,0xa7,0x44,0x26,0x0c,0x5d,0x62,0x53,0x42,0x40,0xc1, \ -0x2d,0x30,0xa9,0x30,0x18,0x09,0xc0,0xcb,0x6a,0xd4,0xd9,0xb8,0xcd,0xea,0x04,0x81, \ -0x22,0x2a,0x49,0x69,0xcd,0x5c,0x51,0x42,0xa9,0x14,0x29,0xe2,0x0e,0x2b,0x16,0x76, \ -0x40,0x51,0xc5,0x8b,0x16,0x03,0x47,0x97,0x65,0x98,0x69,0x32,0x81,0x90,0xb4,0x35, \ -0x91,0x56,0x91,0x4a,0x05,0x9a,0x79,0x02,0xc6,0x10,0x50,0xa8,0x62,0x6d,0xc1,0x01, \ -0xeb,0x90,0xa5,0xbb,0x04,0x87,0x24,0x26,0x38,0xae,0x75,0x69,0x51,0x91,0x2c,0x6a, \ -0x84,0x81,0x81,0x6b,0x55,0x82,0x94,0x04,0x68,0xfa,0x16,0x22,0x60,0x50,0xd8,0x08, \ -0x58,0x77,0xb3,0xc0,0x12,0x81,0xca,0x49,0xb4,0x26,0x06,0x01,0x52,0x48,0x16,0x33, \ -0x03,0xce,0xe2,0xae,0x6e,0xcb,0x2b,0xc9,0x32,0x2a,0x66,0x32,0x2f,0xd6,0x64,0x2d, \ -0x64,0x94,0xfe,0xb1,0x9f,0xba,0x98,0x9f,0x7d,0x6f,0xb6,0x40,0x1a,0x75,0x1d,0xc6, \ -0x0a,0x13,0xa2,0xaf,0xb8,0x84,0xc6,0x28,0x88,0xcb,0xad,0x18,0x70,0xe2,0x84,0x19, \ -0x0c,0x1e,0xc4,0xbd,0xa0,0xa2,0x88,0x6a,0x20,0x3b,0x9c,0x92,0x75,0xc0,0x0e,0x21, \ -0xa4,0x80,0x71,0x64,0x93,0x1c,0xe0,0xac,0x88,0x98,0x61,0x45,0x43,0xdf,0x35,0xc1, \ -0x5c,0x2a,0x5c,0x62,0x18,0x71,0x10,0xda,0x96,0x61,0x9a,0x52,0x14,0x2e,0xb2,0x43, \ -0x52,0xb8,0xd4,0xdb,0x1b,0x99,0x3a,0xa7,0xa8,0x1c,0x6c,0xe6,0x61,0xbb,0x8b,0x01, \ -0x89,0x66,0xc0,0xba,0xab,0x78,0x59,0x2a,0x5d,0x81,0x79,0xb8,0x94,0xc2,0xe2,0xb1, \ -0x36,0xa9,0x80,0x6d,0xc5,0x1d,0xfa,0x01,0xa9,0xc4,0x5c,0xd9,0x12,0xeb,0xd0,0xe8, \ -0x93,0xa9,0x8d,0x97,0x8a,0x4a,0x22,0x26,0x04,0x6d,0x51,0xc1,0xdd,0xcb,0x89,0xb2, \ -0xbf,0x5f,0x8b,0xc1,0xdb,0xc1,0x03,0x27,0x75,0x28,0xe8,0x69,0x64,0xac,0x3f,0x5a, \ -0x06,0x18,0x12,0x38,0xbd,0x24,0x23,0xa1,0x89,0x13,0x76,0xa6,0x45,0xa6,0x42,0x81, \ -0xa9,0x0e,0xa5,0x75,0x42,0x93,0x8d,0xd5,0xe1,0x7d,0x65,0x3d,0xde,0x24,0xf6,0xd2, \ -0x1c,0xb4,0x36,0xd3,0x5d,0x92,0x42,0x2e,0xc3,0x1d,0xdc,0x49,0x23,0x2a,0x84,0x54, \ -0x2b,0x51,0xc7,0x7e,0xf3,0x9a,0x6a,0x9e,0x85,0xe7,0x41,0x1c,0x44,0xc2,0xcd,0x69, \ -0x95,0xc2,0xc4,0x6a,0x78,0x64,0x31,0xc0,0x1d,0x4d,0x6a,0x1b,0xe9,0x63,0xd3,0xaf, \ -0xa9,0x26,0x18,0xb2,0x49,0xdc,0x84,0x2b,0x22,0xc8,0x74,0x41,0x06,0x88,0x1b,0x6b, \ -0x99,0x61,0x6e,0x59,0x06,0x2e,0x51,0x09,0x28,0x69,0x05,0x55,0xaf,0x60,0x82,0xb3, \ -0xcd,0x26,0x2e,0xd4,0xf7,0x01,0x64,0x15,0x46,0x2c,0x06,0x1f,0x1c,0x8a,0x2b,0x70, \ -0x6e,0x49,0x4c,0x66,0xd1,0xf0,0x70,0xc8,0x88,0x0d,0xe4,0x61,0x3a,0xf8,0x4d,0xc6, \ -0xb6,0xa8,0x16,0x68,0x80,0x6c,0x69,0x77,0x71,0xb7,0x17,0xbe,0xc0,0xb5,0x5c,0x94, \ -0x51,0x84,0xed,0xc3,0x52,0x1b,0x64,0x36,0xe2,0x24,0xc1,0xaf,0x4b,0x0e,0x13,0xc6, \ -0x60,0x4a,0xcf,0xd5,0x7f,0xd1,0x86,0xfe,0xcf,0x97,0xe1,0xac,0xe6,0xd2,0x36,0xe4, \ -0x74,0x01,0xe2,0xfa,0x5d,0xec,0x58,0xb1,0x41,0x4e,0x99,0x02,0x6f,0xeb,0x3e,0xf6, \ -0x42,0x4f,0x7c,0x76,0x72,0xfe,0xb7,0x34,0x9b,0xb4,0x11,0xdd,0xe7,0x4f,0x5f,0x87, \ -0x67,0xd7,0xd0,0x58,0xde,0xb8,0x08,0x57,0xbd,0x4a,0x18,0x71,0x71,0xf9,0xfd,0xeb, \ -0x75,0xc9,0x07,0xa5,0xf1,0x0b,0x96,0xa0,0x27,0x09,0xa2,0x2c,0x66,0x7f,0x05,0x40, \ -0x39,0xaf,0xe6,0xc6,0x93,0x3d,0xe5,0xa0,0xe8,0x7f,0x42,0xdb,0x42,0x76,0xc2,0xfd, \ -0xcf,0x81,0x57,0xee,0x61,0xa1,0xe5,0x77,0x00,0x3d,0x50,0xf4,0x5c,0x7b,0xec,0x5b, \ -0xfa,0x6c,0x16,0xdf,0x1a,0xa1,0xe8,0x8f,0x7f,0xa1,0x86,0xfc,0xb7,0x3b,0xf8,0x90, \ -0xab,0xeb,0x24,0x44,0x92,0xd4,0x99,0xdc,0x9d,0xc3,0x24,0xe6,0x91,0xd8,0xe9,0x89, \ -0xb4,0xdf,0xb8,0xfe,0x1e,0xca,0x9d,0xe6,0x93,0xe8,0x44,0x10,0x11,0x44,0x58,0x08, \ -0x08,0xc1,0x19,0x2b,0x35,0x07,0x00,0xc8,0xa2,0xc1,0x52,0x14,0xd3,0x8f,0x1c,0x1a, \ -0xc3,0xd4,0x88,0xf5,0x61,0x90,0xd9,0x23,0xf4,0x4d,0x21,0x83,0x03,0x3b,0x7a,0xf0, \ -0x1b,0x12,0x3a,0x5a,0xcb,0xe9,0x8a,0x1f,0x32,0xc8,0xef,0xa5,0xb0,0xd7,0x5e,0x48, \ -0xac,0xef,0xed,0xe9,0xcb,0x9c,0x9f,0x71,0x12,0x1c,0xcf,0xef,0xe7,0x7a,0xf6,0xb5, \ -0x15,0x25,0x7c,0x56,0x61,0xc6,0x1b,0x89,0x84,0x77,0x25,0x90,0x62,0x4e,0xb6,0xcc, \ -0xbd,0x5c,0x25,0x36,0x18,0x30,0xb3,0x54,0x61,0x3b,0xb7,0x51,0x66,0x93,0xf4,0xd5, \ -0x10,0x84,0xa6,0x1d,0x51,0x81,0xdb,0xba,0x86,0xdf,0xc6,0x33,0xd0,0x69,0x2e,0x31, \ -0x33,0x8c,0x64,0x49,0xf8,0xb2,0x50,0x12,0xd2,0x6c,0x4a,0xa7,0x5c,0x67,0xc3,0x8d, \ -0xde,0x1a,0x05,0xb6,0xc2,0x58,0x63,0xdd,0xa5,0x71,0x54,0x58,0x83,0xa3,0x1a,0x4b, \ -0xd4,0xd2,0x30,0x2f,0x08,0x5a,0x30,0x01,0xd5,0x51,0x2b,0x78,0xaf,0xb4,0x2c,0x17, \ -0x09,0xb6,0x3f,0xb3,0x5c,0x4a,0x39,0xa2,0xf4,0x4e,0xdd,0x3d,0x09,0x29,0x1f,0x3b, \ -0x67,0x54,0x35,0xb8,0x30,0xcc,0x8f,0xf3,0x1f,0x1a,0x65,0x7a,0x04,0xff,0x1c,0x16, \ -0x7d,0xe7,0xb9,0xd0,0x3f,0x21,0x83,0xf8,0xe2,0x65,0x44,0xaf,0x5c,0xe2,0x1a,0x0b, \ -0x34,0xb6,0xb2,0x3e,0x70,0x0a,0x04,0xfd,0x1b,0x8e,0x52,0xd7,0x3c,0x9e,0x5d,0x79, \ -0x99,0x82,0x0f,0x11,0x87,0x89,0x70,0x81,0x82,0x5f,0x90,0xc5,0xf4,0x5d,0xc3,0x90, \ -0x82,0x25,0xcd,0x2a,0x28,0xd1,0xf1,0x35,0x62,0x66,0x03,0x2f,0x32,0x8f,0x08,0x59, \ -0x68,0x21,0x29,0x51,0xca,0xa9,0xa4,0x02,0x8a,0x09,0xcb,0x02,0x61,0x4a,0x04,0xb1, \ -0x86,0x24,0x8b,0x5a,0x3a,0xb8,0x42,0x61,0x03,0x73,0x18,0x33,0x76,0xb1,0x35,0x81, \ -0x42,0x82,0x08,0xda,0xaf,0xee,0x75,0x93,0xf0,0xba,0x0b,0xb1,0xb4,0xea,0x82,0xaa, \ -0x57,0xa9,0x86,0x7a,0xb7,0x61,0x79,0x20,0x22,0xe4,0x89,0xab,0x07,0x3e,0xe1,0xa0, \ -0x0c,0xc0,0x0f,0xb9,0x86,0xb4,0x54,0x29,0xda,0xf7,0xbe,0x9e,0x42,0x0a,0xb4,0xd8, \ -0x5b,0x42,0x05,0xee,0xc0,0xf9,0xea,0x93,0xd3,0xbb,0xb5,0xf0,0x5e,0x4f,0xfa,0xfe, \ -0x0e,0xb1,0x76,0x2e,0xff,0xe1,0x65,0x64,0x9d,0x7b,0x15,0x86,0x4f,0xf5,0x46,0xe6, \ -0xe0,0x66,0x23,0xff,0xe2,0xee,0x48,0xa7,0x0a,0x12,0x06,0xe5,0x21,0xab,0xa0, \ +0150,0061,0061,0101,0131,0046,0123,0131,0030,0250,0262,0362,0000,0023,0352,0337, \ +0200,0160,0160,0147,0377,0377,0377,0377,0377,0377,0377,0277,0377,0377,0377,0140, \ +0073,0015,0260,0003,0350,0254,0000,0026,0361,0236,0275,0024,0050,0373,0333,0275, \ +0366,0351,0040,0245,0063,0142,0235,0165,0320,0064,0350,0067,0044,0007,0200,0172, \ +0167,0266,0362,0052,0076,0067,0045,0365,0334,0133,0115,0221,0054,0060,0111,0102, \ +0175,0214,0240,0370,0064,0337,0174,0357,0157,0060,0276,0334,0255,0300,0356,0303, \ +0123,0135,0364,0024,0015,0351,0246,0056,0357,0173,0270,0317,0172,0313,0033,0054, \ +0312,0112,0275,0163,0254,0255,0231,0062,0266,0133,0145,0102,0105,0155,0205,0114, \ +0313,0144,0333,0117,0143,0272,0214,0262,0065,0113,0333,0316,0251,0113,0043,0326, \ +0330,0363,0325,0047,0337,0074,0222,0371,0141,0265,0051,0232,0337,0033,0274,0064, \ +0040,0046,0200,0046,0043,0100,0046,0114,0010,0320,0232,0151,0220,0321,0015,0031, \ +0064,0300,0012,0173,0111,0244,0365,0075,0106,0101,0246,0201,0064,0020,0200,0204, \ +0310,0011,0204,0221,0350,0150,0106,0236,0243,0106,0100,0000,0003,0100,0000,0003, \ +0114,0102,0024,0114,0215,0050,0332,0117,0120,0323,0103,0117,0120,0323,0117,0110, \ +0064,0003,0100,0064,0000,0000,0064,0000,0004,0232,0111,0020,0040,0321,0062,0062, \ +0231,0124,0377,0051,0206,0243,0051,0352,0172,0123,0364,0325,0036,0106,0246,0236, \ +0102,0172,0040,0365,0000,0064,0000,0000,0211,0104,0004,0323,0115,0043,0115,0031, \ +0025,0074,0324,0364,0046,0051,0355,0046,0152,0062,0151,0062,0151,0351,0036,0221, \ +0265,0006,0215,0000,0000,0001,0042,0040,0201,0000,0004,0004,0321,0075,0106,0046, \ +0022,0172,0052,0173,0124,0366,0004,0236,0211,0062,0075,0036,0241,0250,0000,0321, \ +0352,0172,0166,0115,0335,0342,0277,0342,0217,0376,0177,0074,0317,0372,0142,0200, \ +0123,0074,0313,0065,0271,0177,0156,0327,0173,0175,0176,0341,0006,0261,0324,0167, \ +0331,0023,0246,0372,0076,0374,0022,0203,0217,0343,0106,0217,0044,0206,0073,0377, \ +0242,0345,0225,0307,0337,0351,0132,0241,0256,0353,0161,0254,0323,0133,0352,0273, \ +0325,0302,0271,0061,0236,0205,0067,0263,0226,0137,0031,0246,0225,0271,0161,0367, \ +0372,0250,0225,0136,0070,0375,0033,0367,0213,0106,0126,0277,0323,0307,0175,0264, \ +0277,0345,0254,0164,0347,0235,0257,0012,0030,0377,0311,0326,0377,0277,0044,0356, \ +0173,0020,0033,0235,0102,0235,0052,0065,0176,0010,0266,0013,0176,0036,0362,0337, \ +0264,0230,0013,0120,0022,0310,0200,0314,0022,0276,0376,0064,0364,0134,0277,0143, \ +0345,0307,0373,0375,0115,0032,0042,0304,0050,0302,0077,0032,0361,0135,0056,0310, \ +0367,0351,0344,0117,0274,0330,0016,0257,0265,0317,0177,0364,0356,0367,0064,0367, \ +0246,0030,0006,0257,0303,0036,0163,0252,0053,0023,0343,0064,0326,0160,0266,0104, \ +0230,0277,0007,0073,0167,0311,0136,0006,0346,0327,0125,0001,0160,0271,0141,0346, \ +0001,0221,0237,0343,0044,0254,0143,0014,0301,0231,0020,0040,0000,0007,0373,0162, \ +0253,0246,0144,0040,0002,0301,0263,0136,0236,0131,0177,0117,0012,0342,0334,0057, \ +0356,0207,0340,0361,0351,0312,0057,0052,0370,0377,0133,0034,0142,0202,0334,0241, \ +0134,0151,0265,0342,0130,0346,0060,0030,0027,0352,0032,0176,0373,0162,0036,0256, \ +0373,0342,0247,0053,0006,0325,0353,0275,0014,0266,0130,0152,0002,0223,0063,0337, \ +0071,0056,0153,0026,0250,0250,0305,0144,0062,0107,0313,0165,0053,0226,0030,0344, \ +0100,0027,0054,0315,0263,0003,0057,0144,0057,0036,0341,0057,0075,0260,0030,0047, \ +0306,0326,0052,0312,0071,0053,0362,0167,0137,0323,0120,0222,0071,0273,0332,0227, \ +0176,0356,0005,0304,0171,0267,0026,0102,0020,0006,0100,0146,0345,0127,0254,0307, \ +0117,0106,0275,0020,0346,0015,0224,0356,0037,0115,0377,0105,0075,0233,0157,0163, \ +0223,0064,0165,0043,0161,0133,0122,0270,0355,0351,0273,0233,0133,0167,0246,0300, \ +0260,0050,0350,0332,0250,0011,0247,0125,0170,0167,0250,0053,0003,0203,0241,0247, \ +0210,0115,0310,0014,0054,0034,0245,0223,0160,0126,0021,0130,0317,0026,0332,0105, \ +0014,0132,0320,0231,0037,0007,0115,0116,0357,0053,0305,0356,0171,0225,0277,0371, \ +0331,0001,0057,0007,0323,0317,0321,0035,0332,0156,0267,0232,0213,0212,0140,0330, \ +0106,0265,0161,0074,0076,0014,0033,0204,0006,0043,0025,0365,0304,0037,0077,0243, \ +0255,0253,0207,0207,0176,0275,0176,0267,0321,0371,0371,0167,0167,0001,0333,0072, \ +0004,0074,0331,0362,0201,0266,0066,0165,0222,0121,0354,0123,0343,0060,0122,0261, \ +0247,0361,0200,0125,0211,0115,0330,0031,0162,0171,0135,0306,0316,0317,0237,0106, \ +0110,0222,0273,0034,0117,0115,0006,0345,0220,0220,0157,0346,0115,0013,0066,0062, \ +0335,0054,0311,0203,0072,0370,0361,0251,0121,0162,0313,0202,0001,0374,0170,0107, \ +0135,0266,0145,0227,0024,0125,0067,0000,0122,0355,0136,0204,0302,0307,0155,0331, \ +0015,0013,0117,0363,0146,0221,0212,0366,0124,0277,0046,0021,0336,0015,0243,0165, \ +0255,0050,0035,0240,0336,0143,0104,0064,0166,0361,0127,0023,0261,0000,0001,0304, \ +0014,0053,0016,0102,0066,0337,0176,0367,0174,0376,0070,0171,0322,0240,0074,0216, \ +0277,0272,0001,0022,0322,0131,0015,0100,0320,0027,0066,0300,0242,0060,0010,0301, \ +0326,0014,0202,0251,0273,0337,0341,0311,0315,0057,0215,0205,0006,0231,0353,0307, \ +0247,0347,0373,0062,0045,0117,0326,0243,0304,0234,0212,0100,0153,0127,0303,0166, \ +0110,0376,0051,0036,0306,0206,0370,0103,0301,0326,0205,0060,0026,0112,0145,0021, \ +0333,0331,0060,0102,0100,0373,0207,0175,0361,0011,0370,0012,0050,0260,0357,0312, \ +0037,0140,0104,0111,0003,0026,0324,0157,0362,0304,0372,0346,0340,0113,0335,0310, \ +0126,0135,0210,0274,0252,0002,0107,0143,0023,0341,0114,0350,0066,0040,0017,0237, \ +0013,0006,0344,0022,0017,0340,0267,0154,0151,0276,0253,0037,0271,0353,0306,0031, \ +0247,0323,0360,0214,0270,0307,0274,0255,0005,0126,0156,0133,0157,0342,0340,0144, \ +0001,0110,0065,0345,0216,0356,0355,0217,0033,0365,0037,0143,0100,0365,0372,0366, \ +0277,0333,0071,0035,0151,0114,0216,0031,0211,0335,0231,0033,0157,0041,0060,0344, \ +0364,0312,0371,0163,0224,0014,0016,0112,0216,0063,0146,0160,0102,0331,0200,0334, \ +0050,0324,0137,0065,0324,0146,0362,0034,0222,0027,0031,0147,0017,0366,0226,0054, \ +0027,0277,0046,0057,0361,0076,0032,0030,0142,0053,0140,0313,0332,0355,0307,0106, \ +0142,0112,0130,0056,0254,0256,0362,0275,0136,0003,0135,0271,0240,0313,0321,0373, \ +0375,0160,0327,0317,0165,0300,0103,0113,0211,0361,0212,0145,0101,0022,0032,0317, \ +0010,0065,0076,0216,0047,0307,0311,0244,0217,0056,0120,0331,0267,0261,0207,0364, \ +0226,0016,0275,0164,0314,0353,0133,0303,0221,0021,0315,0123,0363,0235,0204,0247, \ +0103,0157,0202,0251,0302,0005,0013,0346,0275,0236,0214,0073,0005,0100,0100,0071, \ +0367,0266,0054,0075,0224,0031,0323,0346,0172,0175,0061,0225,0100,0307,0367,0025, \ +0120,0352,0156,0316,0327,0365,0135,0314,0342,0271,0077,0327,0255,0224,0106,0140, \ +0201,0205,0122,0346,0201,0321,0306,0230,0264,0223,0310,0250,0143,0020,0117,0213, \ +0153,0315,0265,0074,0255,0153,0247,0237,0046,0044,0054,0271,0043,0157,0307,0263, \ +0275,0126,0327,0021,0376,0323,0323,0351,0003,0172,0367,0315,0035,0013,0171,0274, \ +0374,0357,0274,0011,0376,0173,0047,0200,0047,0331,0220,0066,0145,0016,0300,0111, \ +0055,0357,0121,0365,0265,0154,0266,0272,0261,0367,0354,0160,0302,0126,0320,0373, \ +0100,0360,0317,0336,0342,0334,0264,0255,0124,0302,0021,0020,0226,0103,0070,0116, \ +0260,0243,0254,0030,0105,0343,0107,0132,0270,0124,0356,0265,0004,0006,0135,0336, \ +0204,0342,0130,0010,0014,0160,0207,0013,0317,0143,0247,0012,0040,0206,0332,0145, \ +0311,0207,0252,0222,0375,0356,0235,0261,0106,0271,0301,0272,0255,0155,0301,0355, \ +0276,0342,0261,0173,0120,0253,0321,0106,0335,0141,0311,0321,0353,0156,0300,0236, \ +0206,0053,0254,0306,0072,0051,0147,0113,0370,0071,0321,0067,0313,0265,0015,0363, \ +0345,0350,0374,0216,0364,0003,0164,0044,0106,0110,0242,0367,0333,0036,0155,0011, \ +0005,0212,0020,0130,0107,0173,0131,0004,0363,0145,0016,0357,0315,0337,0367,0173, \ +0171,0305,0261,0021,0127,0236,0245,0215,0074,0222,0176,0345,0345,0331,0271,0310, \ +0364,0117,0065,0351,0100,0073,0314,0352,0026,0077,0220,0226,0214,0153,0205,0314, \ +0163,0057,0006,0230,0274,0241,0254,0070,0106,0233,0127,0223,0236,0230,0110,0160, \ +0060,0231,0246,0124,0207,0255,0201,0010,0155,0113,0352,0111,0071,0021,0325,0343, \ +0046,0267,0314,0337,0251,0216,0253,0246,0061,0265,0357,0166,0354,0164,0165,0266, \ +0261,0074,0235,0304,0067,0301,0216,0311,0102,0011,0241,0334,0052,0003,0100,0034, \ +0005,0300,0140,0034,0171,0347,0212,0244,0005,0032,0342,0301,0225,0122,0360,0252, \ +0034,0147,0336,0212,0074,0103,0002,0231,0363,0166,0234,0366,0253,0003,0244,0142, \ +0327,0375,0310,0262,0373,0325,0322,0172,0174,0363,0251,0275,0335,0116,0003,0007, \ +0366,0215,0257,0366,0007,0037,0315,0027,0151,0307,0303,0331,0250,0337,0134,0052, \ +0067,0202,0116,0061,0160,0307,0016,0126,0021,0012,0217,0027,0025,0150,0371,0063, \ +0103,0274,0136,0322,0145,0022,0113,0017,0134,0270,0226,0235,0105,0163,0316,0350, \ +0210,0004,0377,0277,0104,0025,0374,0246,0220,0076,0322,0372,0141,0003,0135,0002, \ +0214,0135,0014,0204,0007,0363,0305,0335,0243,0370,0325,0223,0331,0202,0373,0013, \ +0272,0235,0170,0300,0025,0143,0124,0070,0200,0333,0204,0022,0277,0101,0347,0173, \ +0227,0026,0024,0320,0373,0355,0225,0217,0354,0360,0014,0213,0365,0347,0320,0072, \ +0023,0335,0000,0222,0216,0265,0361,0114,0303,0350,0236,0105,0275,0174,0260,0133, \ +0044,0225,0042,0270,0246,0365,0133,0355,0327,0124,0006,0227,0140,0164,0106,0117, \ +0034,0056,0270,0303,0034,0354,0273,0174,0307,0141,0226,0034,0037,0376,0372,0204, \ +0025,0113,0004,0121,0306,0301,0023,0022,0203,0120,0375,0230,0053,0061,0121,0205, \ +0362,0066,0013,0017,0222,0367,0207,0263,0265,0165,0306,0340,0073,0115,0105,0224, \ +0326,0051,0065,0311,0301,0127,0242,0106,0324,0062,0213,0056,0162,0374,0103,0324, \ +0037,0050,0306,0351,0207,0145,0253,0222,0146,0161,0015,0102,0365,0076,0031,0175, \ +0144,0340,0161,0324,0204,0240,0147,0053,0223,0004,0113,0121,0057,0341,0345,0263, \ +0223,0156,0021,0163,0253,0264,0155,0144,0256,0144,0077,0170,0245,0270,0336,0007, \ +0025,0150,0107,0141,0003,0005,0273,0025,0365,0013,0025,0273,0160,0222,0002,0064, \ +0216,0105,0174,0174,0331,0246,0142,0166,0065,0126,0065,0103,0005,0102,0063,0140, \ +0123,0121,0047,0114,0011,0016,0034,0200,0352,0375,0166,0352,0032,0071,0105,0171, \ +0170,0334,0303,0354,0075,0135,0072,0356,0073,0105,0162,0337,0151,0077,0313,0053, \ +0310,0244,0221,0350,0071,0263,0317,0101,0237,0043,0101,0225,0167,0062,0030,0252, \ +0022,0074,0061,0315,0125,0223,0120,0301,0065,0134,0243,0303,0024,0117,0100,0144, \ +0052,0061,0032,0152,0034,0302,0270,0316,0252,0104,0363,0317,0101,0300,0012,0153, \ +0157,0030,0237,0203,0050,0075,0334,0144,0205,0230,0316,0266,0112,0150,0062,0234, \ +0220,0245,0370,0151,0143,0030,0207,0235,0311,0110,0334,0201,0153,0271,0327,0255, \ +0051,0230,0306,0205,0116,0155,0177,0024,0172,0375,0214,0070,0256,0162,0325,0052, \ +0042,0375,0310,0244,0206,0222,0163,0165,0156,0344,0306,0147,0005,0173,0240,0150, \ +0102,0107,0124,0116,0130,0013,0130,0302,0173,0216,0123,0364,0237,0035,0236,0166, \ +0034,0230,0154,0317,0305,0041,0052,0034,0123,0166,0177,0144,0023,0034,0321,0112, \ +0343,0123,0175,0131,0364,0150,0352,0125,0146,0000,0264,0261,0043,0210,0053,0015, \ +0042,0336,0262,0075,0067,0040,0000,0341,0214,0214,0202,0040,0216,0344,0134,0121, \ +0063,0010,0215,0346,0125,0111,0267,0254,0077,0272,0315,0100,0022,0370,0254,0151, \ +0237,0010,0057,0174,0073,0205,0010,0126,0017,0353,0266,0166,0327,0340,0315,0155, \ +0201,0361,0141,0016,0235,0343,0211,0333,0175,0236,0002,0100,0315,0306,0155,0022, \ +0160,0270,0171,0053,0227,0127,0065,0310,0171,0160,0001,0022,0070,0354,0103,0306, \ +0244,0156,0144,0275,0131,0101,0200,0114,0035,0324,0355,0302,0276,0077,0274,0332, \ +0152,0242,0373,0362,0213,0366,0114,0232,0070,0135,0166,0137,0066,0342,0072,0131, \ +0260,0002,0333,0257,0302,0337,0156,0327,0330,0012,0326,0315,0142,0007,0106,0217, \ +0106,0336,0362,0171,0317,0005,0003,0222,0060,0374,0027,0056,0156,0244,0025,0031, \ +0114,0173,0367,0171,0144,0013,0014,0211,0010,0323,0205,0246,0302,0124,0341,0013, \ +0232,0322,0022,0053,0074,0040,0262,0174,0042,0035,0170,0120,0136,0342,0235,0060, \ +0007,0145,0064,0205,0202,0222,0037,0274,0170,0370,0050,0037,0305,0030,0371,0255, \ +0035,0153,0247,0052,0072,0073,0361,0221,0241,0112,0125,0012,0374,0004,0253,0264, \ +0007,0363,0374,0072,0333,0176,0270,0134,0005,0044,0020,0347,0054,0200,0252,0147, \ +0344,0341,0122,0265,0112,0156,0065,0062,0040,0305,0315,0266,0012,0051,0337,0045, \ +0355,0277,0010,0111,0262,0113,0317,0216,0245,0256,0215,0046,0126,0120,0202,0243, \ +0007,0047,0211,0351,0010,0332,0216,0132,0023,0300,0141,0122,0003,0165,0321,0077, \ +0164,0104,0055,0041,0143,0257,0102,0271,0157,0054,0230,0017,0043,0320,0217,0162, \ +0347,0052,0322,0064,0374,0270,0352,0335,0114,0173,0262,0343,0223,0366,0237,0256, \ +0204,0277,0014,0362,0071,0032,0365,0172,0230,0066,0162,0062,0035,0107,0162,0064, \ +0034,0057,0312,0002,0301,0205,0352,0256,0072,0167,0235,0243,0077,0162,0317,0053, \ +0353,0011,0361,0171,0217,0152,0374,0001,0121,0275,0353,0150,0012,0073,0164,0275, \ +0047,0355,0230,0333,0255,0306,0063,0122,0370,0044,0154,0031,0101,0274,0076,0246, \ +0226,0121,0222,0326,0141,0167,0371,0300,0313,0051,0077,0263,0253,0224,0255,0172, \ +0140,0320,0224,0013,0007,0326,0375,0346,0055,0141,0221,0272,0250,0327,0353,0135, \ +0343,0322,0055,0002,0325,0240,0215,0204,0257,0322,0032,0000,0070,0272,0371,0002, \ +0236,0005,0163,0041,0240,0123,0223,0273,0374,0324,0153,0325,0262,0054,0050,0267, \ +0175,0223,0003,0074,0130,0006,0204,0007,0273,0071,0040,0147,0112,0023,0116,0213, \ +0322,0275,0317,0225,0340,0317,0045,0103,0014,0123,0357,0272,0001,0122,0236,0112, \ +0231,0033,0015,0246,0064,0242,0004,0341,0273,0231,0314,0161,0347,0007,0311,0052, \ +0063,0326,0342,0310,0341,0166,0312,0307,0202,0216,0015,0226,0267,0152,0016,0240, \ +0170,0011,0043,0135,0045,0307,0324,0014,0336,0227,0126,0215,0272,0013,0376,0053, \ +0055,0033,0355,0115,0033,0216,0025,0371,0010,0226,0267,0022,0006,0351,0031,0073, \ +0120,0247,0346,0035,0373,0341,0156,0144,0217,0122,0275,0116,0011,0111,0310,0101, \ +0344,0326,0045,0013,0112,0021,0252,0031,0165,0354,0240,0006,0115,0221,0345,0160, \ +0354,0157,0372,0075,0156,0371,0124,0231,0120,0066,0052,0107,0165,0363,0005,0341, \ +0175,0323,0226,0036,0131,0336,0314,0262,0236,0262,0056,0326,0142,0073,0131,0172, \ +0326,0054,0143,0327,0321,0171,0320,0120,0313,0357,0154,0351,0065,0353,0040,0263, \ +0077,0275,0275,0177,0247,0345,0117,0252,0376,0312,0344,0344,0257,0107,0257,0354, \ +0215,0101,0061,0001,0347,0366,0167,0136,0272,0141,0352,0304,0306,0254,0140,0151, \ +0333,0067,0257,0164,0366,0135,0123,0306,0031,0063,0154,0010,0302,0345,0137,0157, \ +0253,0151,0156,0327,0116,0315,0044,0247,0234,0256,0346,0274,0021,0356,0266,0322, \ +0207,0331,0362,0351,0135,0231,0221,0026,0341,0243,0013,0032,0155,0246,0303,0117, \ +0142,0323,0241,0020,0146,0214,0067,0136,0006,0201,0230,0334,0052,0102,0107,0044, \ +0352,0071,0053,0174,0370,0011,0162,0071,0217,0364,0200,0135,0276,0277,0244,0137, \ +0313,0350,0145,0210,0026,0103,0027,0125,0306,0130,0173,0044,0051,0320,0342,0134, \ +0134,0157,0263,0215,0165,0345,0213,0145,0234,0201,0255,0235,0265,0265,0171,0072, \ +0007,0216,0136,0320,0071,0157,0205,0136,0101,0102,0233,0234,0036,0377,0101,0016, \ +0135,0156,0272,0351,0310,0100,0033,0264,0146,0335,0154,0375,0022,0203,0260,0016, \ +0013,0017,0244,0063,0135,0124,0112,0205,0172,0205,0353,0032,0116,0345,0363,0213, \ +0323,0142,0231,0266,0231,0307,0154,0125,0035,0024,0115,0020,0162,0303,0203,0055, \ +0155,0024,0244,0047,0274,0043,0163,0007,0256,0144,0175,0334,0212,0176,0004,0053, \ +0356,0243,0032,0127,0145,0034,0210,0123,0276,0172,0247,0050,0027,0116,0224,0054, \ +0165,0353,0114,0014,0153,0015,0335,0150,0065,0305,0330,0066,0336,0022,0063,0003, \ +0155,0267,0256,0375,0113,0025,0143,0214,0235,0007,0310,0363,0012,0007,0004,0215, \ +0073,0022,0126,0314,0040,0307,0202,0021,0044,0361,0016,0031,0162,0015,0245,0014, \ +0154,0070,0241,0066,0253,0261,0152,0207,0001,0131,0221,0042,0214,0220,0202,0162, \ +0366,0013,0322,0061,0041,0300,0027,0040,0123,0162,0272,0332,0031,0200,0300,0211, \ +0223,0061,0222,0260,0243,0226,0205,0241,0113,0201,0073,0167,0171,0322,0225,0121, \ +0151,0302,0110,0336,0137,0031,0306,0327,0276,0261,0310,0304,0315,0226,0300,0146, \ +0326,0064,0111,0035,0142,0171,0036,0076,0157,0275,0360,0273,0155,0317,0114,0005, \ +0215,0343,0325,0371,0173,0217,0227,0247,0036,0314,0240,0316,0117,0140,0226,0167, \ +0107,0006,0260,0161,0254,0043,0067,0064,0224,0153,0242,0215,0014,0026,0137,0164, \ +0032,0015,0052,0300,0230,0155,0220,0014,0313,0055,0352,0171,0252,0144,0113,0310, \ +0200,0322,0260,0055,0347,0371,0355,0276,0147,0153,0123,0140,0037,0226,0376,0355, \ +0146,0075,0244,0051,0071,0240,0314,0046,0327,0015,0136,0354,0373,0172,0256,0157, \ +0252,0034,0314,0017,0306,0171,0117,0200,0251,0364,0110,0146,0371,0103,0125,0137, \ +0213,0000,0360,0076,0330,0364,0252,0350,0347,0315,0224,0215,0310,0025,0342,0163, \ +0316,0070,0020,0341,0147,0166,0134,0145,0134,0264,0054,0144,0300,0060,0267,0002, \ +0017,0173,0214,0213,0010,0237,0224,0117,0355,0033,0335,0305,0334,0124,0065,0110, \ +0372,0152,0044,0172,0276,0375,0016,0042,0063,0306,0233,0112,0054,0122,0112,0107, \ +0073,0163,0326,0370,0260,0135,0326,0107,0300,0102,0266,0257,0322,0076,0075,0127, \ +0240,0365,0162,0233,0252,0236,0157,0230,0017,0156,0170,0012,0303,0165,0076,0042, \ +0100,0224,0346,0220,0253,0226,0341,0242,0276,0200,0354,0310,0214,0044,0053,0120, \ +0134,0047,0145,0307,0137,0330,0275,0370,0046,0310,0073,0340,0334,0015,0156,0257, \ +0347,0264,0227,0327,0302,0324,0360,0342,0356,0023,0222,0066,0065,0204,0070,0315, \ +0001,0147,0123,0041,0052,0061,0022,0325,0256,0076,0153,0307,0011,0103,0202,0171, \ +0252,0146,0152,0103,0301,0371,0360,0203,0304,0360,0375,0312,0133,0100,0141,0304, \ +0277,0300,0221,0267,0061,0320,0112,0033,0240,0220,0250,0241,0205,0207,0225,0220, \ +0110,0336,0151,0361,0105,0311,0233,0255,0233,0243,0143,0356,0273,0171,0235,0303, \ +0063,0256,0235,0241,0156,0346,0010,0160,0074,0117,0000,0220,0311,0024,0356,0313, \ +0025,0143,0252,0154,0112,0007,0232,0260,0336,0105,0006,0113,0170,0055,0236,0374, \ +0131,0335,0272,0060,0221,0205,0007,0243,0323,0063,0073,0213,0051,0064,0265,0152, \ +0351,0145,0332,0242,0142,0253,0261,0202,0036,0216,0235,0227,0072,0307,0075,0251, \ +0100,0275,0325,0241,0354,0063,0077,0133,0251,0036,0317,0065,0263,0170,0257,0170, \ +0374,0215,0316,0317,0156,0331,0221,0352,0237,0162,0074,0254,0163,0160,0277,0233, \ +0243,0175,0342,0224,0123,0257,0226,0032,0267,0303,0206,0161,0167,0243,0121,0370, \ +0233,0275,0270,0354,0243,0127,0263,0111,0034,0310,0363,0043,0000,0011,0036,0175, \ +0304,0221,0304,0370,0225,0007,0172,0360,0317,0302,0037,0063,0321,0233,0322,0024, \ +0177,0037,0305,0232,0073,0353,0257,0261,0372,0224,0341,0353,0273,0330,0206,0067, \ +0006,0020,0125,0372,0077,0205,0235,0222,0331,0137,0341,0305,0243,0332,0027,0006, \ +0027,0064,0146,0373,0321,0312,0317,0177,0224,0113,0254,0034,0223,0055,0027,0225, \ +0051,0355,0136,0071,0140,0125,0031,0147,0023,0327,0003,0347,0343,0147,0053,0242, \ +0216,0263,0201,0115,0165,0025,0000,0261,0025,0063,0050,0111,0152,0046,0243,0133, \ +0034,0062,0256,0373,0035,0230,0326,0244,0060,0145,0114,0161,0005,0061,0214,0105, \ +0346,0251,0140,0060,0316,0131,0064,0121,0042,0365,0321,0265,0223,0174,0275,0344, \ +0132,0246,0074,0327,0135,0252,0352,0255,0072,0106,0201,0056,0221,0232,0043,0237, \ +0316,0244,0374,0315,0311,0033,0376,0230,0010,0141,0206,0174,0163,0327,0045,0110, \ +0004,0016,0337,0320,0200,0107,0203,0011,0023,0101,0233,0102,0114,0160,0304,0042, \ +0154,0356,0374,0147,0014,0213,0002,0067,0143,0236,0063,0313,0050,0135,0236,0357, \ +0266,0330,0161,0067,0117,0277,0126,0034,0375,0142,0227,0012,0354,0114,0235,0031, \ +0224,0032,0154,0124,0234,0236,0127,0267,0315,0163,0365,0216,0326,0010,0336,0150, \ +0353,0246,0310,0000,0075,0155,0074,0152,0124,0307,0071,0323,0235,0067,0311,0064, \ +0174,0030,0200,0310,0055,0267,0324,0004,0177,0017,0111,0207,0022,0215,0147,0117, \ +0156,0141,0145,0212,0231,0006,0164,0140,0061,0247,0114,0112,0021,0235,0357,0054, \ +0245,0165,0155,0012,0310,0067,0356,0325,0234,0300,0033,0114,0314,0174,0115,0071, \ +0173,0025,0334,0342,0116,0160,0243,0034,0174,0205,0203,0372,0320,0062,0124,0315, \ +0124,0172,0162,0376,0126,0216,0020,0212,0137,0072,0242,0303,0141,0367,0267,0247, \ +0357,0170,0011,0016,0154,0346,0232,0377,0055,0072,0375,0236,0075,0373,0223,0012, \ +0355,0207,0105,0110,0271,0054,0024,0137,0101,0213,0007,0005,0374,0145,0215,0367, \ +0332,0320,0302,0335,0070,0335,0033,0312,0215,0017,0120,0352,0030,0143,0031,0164, \ +0106,0057,0314,0002,0057,0341,0372,0125,0042,0363,0324,0341,0246,0232,0053,0135, \ +0371,0104,0320,0106,0141,0022,0204,0173,0345,0072,0146,0367,0022,0252,0001,0243, \ +0117,0137,0114,0033,0223,0100,0234,0336,0110,0211,0125,0216,0213,0104,0263,0144, \ +0213,0300,0063,0376,0057,0333,0224,0116,0055,0242,0357,0160,0337,0266,0053,0335, \ +0256,0252,0061,0127,0203,0230,0353,0313,0135,0377,0207,0272,0366,0065,0374,0277, \ +0030,0037,0144,0347,0231,0177,0253,0021,0122,0044,0376,0164,0053,0030,0311,0201, \ +0140,0366,0377,0156,0153,0375,0137,0247,0211,0243,0227,0032,0143,0130,0061,0356, \ +0264,0375,0114,0342,0342,0002,0256,0343,0150,0224,0202,0357,0145,0210,0220,0101, \ +0213,0372,0377,0272,0224,0177,0024,0234,0073,0215,0362,0116,0010,0130,0042,0251, \ +0226,0121,0105,0170,0175,0327,0000,0066,0032,0336,0051,0162,0006,0222,0220,0104, \ +0141,0317,0350,0373,0176,0241,0177,0037,0337,0300,0220,0340,0052,0300,0070,0320, \ +0205,0345,0106,0321,0062,0374,0360,0323,0204,0136,0367,0035,0162,0333,0010,0115, \ +0010,0155,0205,0216,0132,0153,0360,0247,0005,0116,0267,0377,0333,0303,0134,0035, \ +0103,0044,0375,0151,0015,0152,0131,0273,0177,0275,0276,0070,0124,0124,0040,0263, \ +0151,0103,0357,0325,0065,0010,0305,0104,0123,0263,0154,0366,0273,0155,0176,0246, \ +0110,0136,0211,0101,0124,0025,0336,0355,0227,0011,0000,0046,0012,0366,0210,0100, \ +0222,0307,0121,0207,0172,0327,0136,0065,0056,0300,0214,0341,0035,0311,0012,0226, \ +0056,0033,0353,0100,0053,0264,0233,0024,0233,0252,0023,0132,0233,0365,0337,0144, \ +0071,0136,0014,0011,0270,0301,0212,0056,0241,0176,0373,0144,0060,0342,0136,0314, \ +0320,0362,0324,0045,0115,0254,0326,0164,0264,0204,0305,0010,0200,0016,0014,0225, \ +0224,0045,0326,0361,0111,0200,0371,0174,0166,0372,0141,0216,0377,0123,0176,0255, \ +0361,0233,0350,0064,0154,0031,0371,0020,0210,0211,0177,0061,0217,0217,0167,0057, \ +0371,0041,0132,0200,0153,0114,0225,0002,0145,0122,0375,0370,0276,0351,0355,0347, \ +0172,0101,0222,0234,0323,0347,0232,0065,0242,0022,0037,0331,0041,0370,0210,0037, \ +0354,0110,0124,0122,0003,0155,0147,0323,0154,0377,0005,0204,0066,0331,0362,0150, \ +0075,0036,0025,0213,0133,0273,0036,0301,0245,0337,0247,0327,0053,0331,0317,0352, \ +0067,0052,0171,0057,0347,0200,0036,0147,0314,0011,0313,0123,0262,0366,0342,0055, \ +0376,0036,0337,0225,0361,0317,0013,0162,0174,0174,0022,0366,0155,0250,0255,0276, \ +0111,0273,0160,0076,0367,0010,0207,0235,0000,0143,0107,0175,0314,0153,0007,0057, \ +0213,0212,0146,0302,0356,0154,0302,0121,0344,0007,0337,0007,0260,0046,0157,0222, \ +0214,0202,0032,0310,0220,0053,0355,0241,0001,0164,0206,0201,0276,0105,0107,0031, \ +0223,0027,0203,0027,0246,0034,0037,0066,0257,0212,0257,0276,0252,0363,0171,0332, \ +0123,0021,0250,0077,0211,0166,0153,0027,0012,0237,0265,0254,0331,0375,0137,0352, \ +0321,0203,0311,0231,0116,0153,0121,0266,0040,0150,0067,0275,0205,0302,0170,0026, \ +0377,0123,0241,0173,0144,0131,0177,0042,0177,0322,0264,0162,0160,0350,0123,0347, \ +0350,0025,0114,0351,0136,0266,0070,0026,0133,0262,0271,0303,0324,0161,0070,0173, \ +0223,0356,0130,0220,0236,0322,0065,0145,0062,0145,0264,0205,0027,0127,0360,0220, \ +0211,0331,0253,0121,0053,0335,0145,0327,0205,0026,0304,0342,0021,0306,0272,0116, \ +0072,0120,0113,0270,0221,0344,0140,0052,0327,0372,0173,0350,0143,0242,0314,0215, \ +0162,0110,0351,0246,0357,0254,0372,0250,0153,0352,0266,0077,0314,0210,0357,0367, \ +0176,0123,0336,0310,0145,0136,0200,0163,0004,0003,0143,0072,0171,0254,0070,0266, \ +0162,0227,0322,0116,0203,0363,0376,0335,0076,0277,0151,0162,0225,0120,0275,0372, \ +0250,0054,0300,0036,0163,0056,0007,0371,0175,0176,0332,0026,0056,0353,0374,0361, \ +0001,0077,0223,0045,0003,0262,0362,0004,0064,0060,0240,0167,0353,0311,0137,0000, \ +0074,0200,0303,0230,0101,0254,0320,0272,0205,0336,0065,0037,0023,0214,0305,0203, \ +0277,0357,0371,0166,0144,0215,0246,0025,0306,0151,0306,0136,0322,0047,0223,0103, \ +0201,0221,0120,0141,0075,0010,0102,0221,0300,0171,0067,0361,0167,0125,0257,0114, \ +0102,0102,0026,0231,0230,0133,0356,0074,0345,0103,0063,0060,0151,0011,0040,0005, \ +0130,0005,0106,0110,0132,0334,0173,0063,0361,0152,0136,0102,0033,0015,0165,0110, \ +0146,0060,0102,0303,0126,0124,0372,0117,0301,0321,0267,0266,0054,0210,0023,0235, \ +0074,0277,0112,0346,0221,0310,0034,0253,0107,0356,0113,0314,0074,0135,0325,0252, \ +0032,0231,0072,0042,0145,0302,0230,0360,0227,0375,0234,0374,0174,0000,0350,0323, \ +0103,0141,0372,0300,0107,0347,0354,0062,0015,0135,0270,0140,0202,0200,0162,0310, \ +0077,0207,0332,0365,0337,0300,0364,0041,0305,0070,0110,0154,0076,0016,0376,0310, \ +0175,0336,0144,0261,0004,0067,0152,0250,0042,0042,0060,0140,0254,0122,0060,0104, \ +0177,0167,0246,0376,0101,0361,0347,0103,0164,0237,0206,0264,0237,0055,0024,0376, \ +0016,0144,0214,0312,0376,0073,0005,0374,0253,0270,0132,0027,0107,0240,0350,0305, \ +0013,0222,0366,0101,0014,0352,0235,0053,0164,0022,0057,0271,0204,0261,0103,0003, \ +0064,0315,0202,0312,0130,0336,0304,0135,0042,0043,0112,0366,0207,0125,0307,0251, \ +0320,0200,0364,0200,0307,0173,0221,0014,0025,0130,0250,0054,0102,0007,0031,0077, \ +0116,0141,0220,0345,0365,0237,0361,0010,0205,0031,0363,0146,0171,0314,0110,0355, \ +0060,0334,0246,0140,0157,0054,0320,0011,0041,0114,0073,0361,0225,0020,0001,0363, \ +0166,0302,0253,0047,0004,0301,0207,0014,0246,0230,0151,0246,0123,0023,0212,0112, \ +0350,0151,0006,0352,0371,0217,0266,0270,0217,0211,0012,0122,0236,0162,0044,0374, \ +0367,0101,0245,0162,0134,0172,0241,0042,0352,0014,0250,0151,0333,0154,0320,0372, \ +0302,0324,0022,0204,0154,0321,0320,0253,0012,0050,0320,0003,0072,0243,0042,0250, \ +0255,0227,0245,0151,0005,0220,0130,0142,0012,0225,0014,0303,0320,0034,0343,0254, \ +0370,0316,0355,0270,0344,0215,0132,0243,0132,0147,0311,0324,0147,0106,0245,0301, \ +0355,0147,0311,0315,0255,0010,0112,0354,0101,0063,0013,0260,0200,0333,0334,0153, \ +0165,0112,0355,0012,0222,0211,0044,0353,0340,0153,0200,0310,0027,0275,0007,0277, \ +0274,0153,0057,0155,0075,0022,0105,0074,0120,0276,0053,0307,0205,0015,0354,0201, \ +0131,0075,0033,0276,0144,0103,0350,0153,0302,0206,0374,0115,0020,0233,0260,0015, \ +0077,0033,0046,0061,0022,0367,0155,0075,0122,0176,0301,0350,0315,0146,0253,0051, \ +0237,0023,0252,0345,0116,0330,0002,0036,0155,0217,0230,0320,0050,0336,0335,0163, \ +0323,0260,0362,0105,0062,0201,0101,0250,0124,0277,0302,0146,0070,0042,0021,0144, \ +0005,0035,0254,0356,0017,0156,0063,0151,0147,0124,0330,0046,0360,0332,0122,0247, \ +0051,0023,0361,0347,0017,0064,0122,0044,0154,0321,0320,0061,0051,0113,0073,0172, \ +0133,0303,0350,0263,0002,0167,0100,0277,0077,0345,0233,0360,0200,0170,0166,0063, \ +0344,0045,0006,0064,0307,0375,0121,0004,0077,0057,0047,0033,0306,0276,0143,0031, \ +0026,0235,0350,0111,0007,0321,0300,0017,0074,0327,0147,0060,0170,0244,0025,0156, \ +0112,0005,0112,0217,0267,0135,0203,0064,0066,0223,0110,0117,0010,0076,0170,0060, \ +0335,0254,0021,0233,0022,0272,0302,0333,0060,0204,0023,0177,0103,0337,0140,0237, \ +0114,0027,0342,0065,0064,0271,0371,0130,0165,0307,0162,0157,0103,0161,0115,0054, \ +0340,0155,0014,0365,0030,0327,0264,0320,0044,0354,0322,0222,0065,0040,0035,0066, \ +0113,0153,0222,0035,0051,0007,0274,0041,0154,0106,0044,0030,0220,0013,0340,0341, \ +0020,0074,0266,0264,0142,0102,0021,0122,0050,0320,0201,0361,0076,0037,0002,0240, \ +0120,0064,0264,0040,0237,0253,0020,0252,0050,0341,0373,0375,0373,0206,0302,0354, \ +0336,0060,0033,0033,0027,0353,0020,0276,0375,0270,0377,0045,0342,0260,0371,0274, \ +0040,0217,0052,0117,0312,0204,0140,0076,0277,0124,0330,0051,0344,0060,0272,0231, \ +0033,0330,0020,0043,0272,0122,0034,0156,0165,0172,0273,0012,0322,0011,0373,0042, \ +0236,0010,0174,0236,0114,0223,0127,0347,0233,0003,0163,0273,0322,0172,0100,0210, \ +0231,0331,0036,0345,0016,0061,0157,0201,0141,0133,0036,0251,0172,0322,0155,0156, \ +0013,0067,0374,0234,0210,0074,0030,0175,0126,0311,0262,0061,0041,0316,0155,0101, \ +0136,0007,0231,0153,0261,0323,0076,0343,0213,0302,0217,0202,0170,0275,0301,0325, \ +0071,0205,0374,0346,0032,0357,0265,0220,0070,0306,0025,0201,0275,0110,0114,0060, \ +0276,0343,0004,0035,0103,0332,0367,0276,0075,0112,0155,0302,0225,0324,0073,0072, \ +0311,0244,0074,0053,0031,0207,0075,0374,0275,0172,0175,0010,0060,0240,0172,0330, \ +0230,0064,0214,0365,0121,0026,0102,0072,0344,0167,0032,0002,0273,0200,0151,0013, \ +0007,0221,0163,0151,0212,0343,0270,0106,0361,0241,0152,0240,0153,0376,0243,0327, \ +0134,0373,0202,0115,0243,0100,0317,0157,0021,0270,0324,0153,0333,0271,0062,0003, \ +0202,0132,0315,0031,0241,0367,0144,0007,0314,0374,0153,0020,0304,0177,0353,0247, \ +0121,0106,0163,0035,0312,0206,0124,0247,0253,0114,0233,0155,0043,0021,0257,0140, \ +0367,0033,0175,0246,0342,0207,0244,0230,0107,0026,0206,0143,0144,0155,0347,0120, \ +0317,0376,0320,0133,0130,0050,0017,0001,0222,0014,0016,0375,0015,0273,0015,0343, \ +0110,0125,0150,0364,0367,0235,0275,0336,0137,0151,0356,0360,0236,0210,0163,0150, \ +0317,0104,0053,0005,0026,0010,0210,0304,0144,0126,0012,0252,0002,0107,0260,0314, \ +0220,0245,0047,0017,0171,0365,0353,0372,0323,0274,0331,0132,0153,0047,0154,0335, \ +0214,0035,0060,0177,0073,0036,0141,0274,0324,0054,0101,0335,0006,0135,0226,0015, \ +0354,0326,0110,0050,0062,0066,0264,0222,0126,0326,0010,0255,0311,0311,0136,0002, \ +0021,0126,0205,0121,0043,0347,0036,0244,0131,0333,0013,0072,0106,0161,0326,0223, \ +0216,0026,0003,0162,0351,0073,0373,0033,0160,0330,0327,0171,0074,0030,0211,0005, \ +0025,0024,0014,0142,0154,0146,0040,0302,0011,0034,0045,0277,0275,0342,0235,0174, \ +0236,0127,0360,0347,0076,0033,0102,0046,0333,0131,0235,0061,0241,0226,0160,0115, \ +0240,0276,0166,0357,0335,0374,0317,0075,0313,0340,0322,0354,0015,0103,0015,0113, \ +0304,0243,0153,0305,0236,0335,0250,0336,0013,0136,0352,0370,0014,0140,0366,0035, \ +0214,0033,0160,0054,0267,0275,0142,0122,0365,0225,0010,0126,0170,0250,0216,0205, \ +0260,0175,0231,0101,0054,0226,0203,0045,0267,0077,0302,0176,0374,0215,0214,0354, \ +0151,0256,0271,0060,0226,0006,0255,0235,0215,0314,0047,0147,0000,0343,0334,0117, \ +0170,0212,0202,0001,0377,0066,0112,0221,0144,0024,0072,0214,0045,0103,0370,0060, \ +0254,0130,0216,0065,0223,0317,0177,0315,0362,0371,0172,0353,0173,0341,0207,0161, \ +0254,0311,0210,0157,0351,0273,0236,0343,0026,0273,0257,0112,0031,0154,0114,0246, \ +0036,0322,0000,0300,0257,0216,0340,0221,0247,0300,0004,0006,0033,0237,0035,0013, \ +0345,0323,0300,0101,0314,0014,0062,0070,0363,0155,0271,0335,0004,0135,0054,0360, \ +0044,0066,0146,0064,0012,0017,0365,0341,0163,0135,0222,0062,0322,0120,0214,0053, \ +0036,0222,0126,0042,0015,0205,0166,0333,0277,0024,0106,0374,0014,0250,0142,0163, \ +0026,0070,0204,0001,0313,0267,0373,0145,0137,0251,0224,0337,0323,0203,0065,0031, \ +0151,0211,0315,0041,0312,0340,0200,0141,0354,0350,0107,0271,0152,0042,0252,0040, \ +0320,0123,0266,0021,0074,0240,0177,0017,0257,0134,0256,0345,0172,0233,0225,0000, \ +0377,0303,0271,0003,0210,0205,0167,0332,0171,0235,0015,0215,0210,0157,0030,0040, \ +0252,0301,0140,0172,0115,0357,0227,0323,0227,0324,0340,0001,0211,0271,0043,0325, \ +0375,0227,0261,0237,0117,0217,0244,0334,0203,0037,0023,0311,0136,0343,0373,0100, \ +0270,0155,0341,0365,0377,0110,0215,0365,0014,0165,0210,0323,0074,0116,0070,0160, \ +0023,0373,0342,0051,0026,0042,0042,0106,0106,0003,0024,0006,0052,0042,0100,0125, \ +0077,0213,0126,0163,0245,0125,0130,0250,0050,0014,0030,0202,0242,0050,0273,0131, \ +0122,0052,0115,0335,0041,0221,0101,0027,0374,0371,0303,0076,0275,0117,0016,0337, \ +0263,0151,0016,0042,0020,0106,0002,0010,0105,0213,0017,0342,0220,0350,0340,0105, \ +0220,0144,0072,0077,0261,0357,0165,0356,0241,0125,0333,0162,0235,0056,0031,0365, \ +0263,0336,0233,0344,0056,0210,0210,0041,0337,0157,0366,0202,0104,0142,0144,0062, \ +0373,0345,0364,0346,0311,0061,0131,0312,0203,0230,0011,0361,0014,0052,0072,0142, \ +0134,0245,0351,0130,0250,0333,0030,0211,0111,0053,0311,0137,0232,0346,0320,0305, \ +0115,0023,0247,0141,0101,0102,0211,0132,0024,0014,0177,0277,0117,0070,0045,0277, \ +0317,0352,0364,0050,0172,0050,0110,0037,0361,0142,0140,0071,0176,0255,0257,0311, \ +0021,0006,0314,0263,0031,0253,0260,0154,0165,0057,0067,0112,0246,0176,0151,0003, \ +0050,0265,0176,0257,0131,0373,0350,0352,0132,0372,0107,0061,0177,0030,0231,0025, \ +0246,0340,0350,0251,0015,0370,0152,0216,0167,0210,0350,0132,0202,0166,0041,0076, \ +0301,0026,0037,0157,0103,0056,0364,0135,0172,0145,0072,0317,0250,0211,0267,0154, \ +0222,0321,0216,0152,0115,0374,0142,0225,0346,0051,0066,0170,0113,0363,0302,0310, \ +0040,0236,0273,0270,0312,0374,0167,0073,0102,0104,0070,0300,0072,0371,0077,0266, \ +0343,0313,0134,0036,0004,0354,0314,0246,0012,0024,0257,0233,0227,0215,0275,0163, \ +0017,0365,0360,0375,0267,0014,0054,0245,0014,0005,0363,0065,0372,0141,0360,0236, \ +0366,0225,0171,0301,0150,0200,0226,0033,0311,0302,0050,0331,0172,0017,0327,0342, \ +0366,0030,0273,0112,0167,0241,0041,0322,0004,0333,0057,0201,0103,0067,0353,0330, \ +0210,0127,0272,0175,0014,0131,0203,0234,0165,0017,0250,0367,0040,0361,0203,0040, \ +0073,0252,0021,0200,0147,0240,0127,0132,0207,0140,0244,0030,0006,0033,0300,0143, \ +0071,0354,0325,0143,0071,0032,0263,0347,0013,0326,0265,0373,0034,0373,0147,0261, \ +0044,0243,0354,0211,0371,0120,0271,0111,0053,0001,0266,0111,0370,0301,0201,0103, \ +0017,0007,0161,0372,0152,0203,0357,0020,0075,0077,0164,0160,0260,0047,0133,0175, \ +0003,0023,0277,0162,0013,0307,0360,0041,0303,0002,0153,0267,0047,0265,0165,0052, \ +0315,0006,0054,0071,0314,0266,0325,0346,0014,0131,0040,0157,0103,0242,0006,0021, \ +0172,0075,0225,0360,0122,0203,0022,0201,0204,0044,0000,0211,0306,0224,0365,0267, \ +0364,0244,0156,0362,0121,0026,0020,0113,0126,0332,0003,0165,0374,0354,0013,0004, \ +0152,0074,0146,0007,0332,0204,0005,0100,0256,0043,0045,0225,0317,0353,0247,0057, \ +0131,0274,0055,0026,0146,0356,0173,0025,0200,0024,0236,0361,0171,0124,0067,0354, \ +0301,0167,0065,0106,0142,0103,0357,0015,0167,0375,0336,0202,0256,0320,0333,0205, \ +0147,0064,0220,0212,0024,0220,0262,0332,0036,0232,0267,0135,0144,0250,0157,0234, \ +0324,0104,0052,0312,0377,0146,0132,0112,0321,0233,0323,0327,0000,0077,0276,0166, \ +0254,0352,0201,0367,0101,0052,0037,0261,0040,0050,0006,0203,0263,0221,0361,0313, \ +0326,0035,0236,0362,0030,0131,0174,0160,0012,0075,0146,0237,0014,0251,0017,0353, \ +0076,0067,0041,0030,0262,0017,0255,0346,0233,0044,0337,0143,0277,0225,0232,0107, \ +0162,0076,0305,0173,0127,0102,0145,0266,0216,0325,0107,0250,0042,0144,0032,0327, \ +0354,0307,0111,0063,0111,0153,0136,0246,0022,0027,0130,0144,0255,0217,0234,0113, \ +0056,0254,0015,0201,0147,0012,0044,0201,0111,0210,0230,0216,0244,0221,0253,0102, \ +0174,0103,0003,0005,0253,0024,0125,0213,0275,0303,0141,0277,0246,0352,0147,0242, \ +0106,0054,0033,0101,0273,0141,0347,0375,0356,0071,0021,0054,0334,0141,0175,0213, \ +0124,0043,0131,0127,0224,0003,0147,0252,0341,0126,0064,0120,0215,0041,0251,0044, \ +0363,0207,0340,0227,0212,0117,0246,0166,0333,0040,0314,0103,0333,0267,0247,0060, \ +0362,0060,0361,0310,0064,0241,0146,0256,0006,0354,0242,0117,0304,0030,0176,0125, \ +0146,0064,0041,0104,0050,0224,0030,0011,0047,0020,0337,0253,0300,0016,0306,0225, \ +0122,0225,0071,0320,0203,0074,0342,0230,0301,0127,0016,0350,0310,0342,0334,0144, \ +0225,0300,0344,0161,0110,0125,0051,0377,0126,0203,0344,0362,0347,0046,0113,0217, \ +0061,0221,0142,0221,0040,0207,0303,0273,0251,0370,0274,0017,0151,0023,0324,0146, \ +0320,0012,0166,0103,0340,0332,0120,0260,0264,0117,0333,0037,0075,0172,0373,0254, \ +0125,0271,0066,0212,0121,0044,0357,0311,0000,0253,0367,0242,0215,0003,0350,0140, \ +0277,0060,0374,0156,0224,0365,0100,0073,0012,0214,0127,0335,0272,0136,0164,0325, \ +0100,0334,0035,0106,0261,0016,0306,0227,0001,0025,0156,0111,0002,0045,0335,0024, \ +0114,0140,0073,0077,0235,0013,0216,0317,0007,0035,0054,0111,0054,0245,0050,0012, \ +0015,0310,0101,0072,0363,0024,0341,0216,0126,0215,0350,0172,0275,0322,0300,0170, \ +0153,0336,0071,0344,0006,0042,0370,0024,0100,0075,0305,0371,0045,0017,0345,0375, \ +0000,0131,0261,0251,0306,0332,0133,0075,0274,0320,0127,0071,0313,0257,0125,0012, \ +0210,0201,0141,0167,0245,0020,0052,0046,0114,0301,0361,0207,0331,0316,0153,0143, \ +0132,0347,0243,0201,0302,0205,0155,0116,0133,0002,0101,0101,0336,0204,0345,0047, \ +0122,0154,0101,0130,0234,0026,0336,0103,0051,0307,0051,0064,0242,0032,0027,0220, \ +0100,0151,0314,0166,0161,0224,0067,0016,0101,0310,0030,0115,0333,0271,0101,0245, \ +0226,0324,0020,0267,0275,0044,0260,0123,0002,0062,0303,0342,0171,0360,0373,0340, \ +0235,0275,0222,0361,0224,0254,0022,0316,0335,0150,0230,0310,0106,0050,0036,0245, \ +0241,0376,0073,0317,0366,0331,0047,0142,0360,0144,0013,0203,0211,0377,0224,0225, \ +0370,0301,0300,0106,0243,0170,0151,0366,0301,0011,0255,0002,0021,0011,0053,0070, \ +0151,0145,0012,0027,0106,0212,0007,0237,0313,0262,0364,0154,0027,0311,0304,0050, \ +0032,0163,0132,0103,0033,0034,0046,0162,0316,0073,0315,0152,0223,0330,0072,0140, \ +0155,0266,0320,0322,0143,0302,0011,0356,0231,0104,0035,0363,0124,0326,0065,0114, \ +0321,0123,0000,0134,0112,0072,0265,0061,0026,0022,0240,0161,0273,0145,0067,0156, \ +0302,0124,0070,0015,0325,0323,0217,0205,0066,0066,0262,0013,0070,0263,0165,0223, \ +0111,0046,0346,0010,0155,0166,0326,0205,0304,0020,0055,0372,0062,0234,0251,0276, \ +0124,0166,0156,0142,0341,0060,0170,0005,0076,0074,0156,0271,0062,0014,0217,0054, \ +0026,0016,0221,0120,0235,0362,0157,0355,0303,0107,0254,0362,0176,0341,0145,0222, \ +0031,0274,0135,0216,0377,0363,0201,0132,0032,0306,0237,0311,0364,0161,0101,0043, \ +0310,0356,0361,0224,0140,0242,0324,0137,0002,0346,0102,0332,0114,0031,0361,0266, \ +0047,0047,0153,0133,0156,0302,0055,0146,0046,0304,0037,0127,0164,0325,0257,0005, \ +0273,0214,0272,0150,0144,0104,0024,0357,0024,0022,0147,0105,0332,0075,0034,0236, \ +0354,0171,0224,0075,0214,0005,0201,0357,0274,0022,0050,0107,0010,0321,0011,0123, \ +0176,0240,0243,0165,0066,0113,0156,0065,0153,0302,0250,0072,0100,0074,0361,0037, \ +0232,0170,0361,0340,0345,0103,0010,0140,0134,0274,0067,0121,0373,0017,0121,0261, \ +0044,0255,0177,0120,0133,0015,0364,0317,0241,0022,0104,0302,0227,0056,0164,0247, \ +0226,0067,0212,0030,0042,0326,0363,0250,0376,0137,0325,0246,0324,0002,0101,0135, \ +0062,0366,0125,0167,0137,0221,0341,0145,0070,0024,0105,0226,0350,0267,0132,0112, \ +0161,0160,0316,0131,0202,0046,0002,0043,0046,0205,0203,0203,0330,0300,0241,0062, \ +0226,0046,0160,0033,0313,0310,0303,0154,0263,0224,0052,0103,0262,0240,0135,0215, \ +0301,0341,0013,0213,0251,0043,0005,0202,0331,0252,0065,0213,0064,0003,0046,0350, \ +0277,0150,0043,0330,0036,0306,0001,0222,0057,0260,0141,0174,0375,0107,0116,0060, \ +0242,0366,0031,0117,0260,0216,0134,0225,0105,0055,0353,0067,0032,0024,0260,0044, \ +0125,0224,0240,0141,0015,0266,0160,0055,0163,0015,0124,0215,0275,0325,0265,0262, \ +0151,0200,0074,0027,0342,0320,0071,0120,0141,0140,0351,0203,0260,0262,0332,0124, \ +0314,0056,0202,0143,0201,0162,0217,0210,0315,0134,0161,0206,0336,0220,0064,0041, \ +0120,0373,0341,0111,0115,0020,0147,0105,0264,0124,0052,0221,0065,0206,0017,0172, \ +0032,0144,0134,0025,0155,0162,0042,0165,0115,0053,0117,0317,0150,0000,0346,0226, \ +0146,0010,0043,0003,0002,0221,0015,0241,0142,0326,0250,0102,0101,0343,0156,0112, \ +0233,0273,0233,0030,0226,0266,0345,0222,0220,0241,0232,0226,0001,0106,0367,0335, \ +0202,0362,0042,0314,0152,0210,0344,0221,0013,0145,0116,0036,0373,0326,0256,0002, \ +0357,0114,0226,0052,0063,0150,0253,0100,0141,0216,0127,0202,0033,0144,0017,0270, \ +0053,0207,0074,0226,0001,0260,0042,0342,0267,0144,0273,0107,0066,0336,0003,0246, \ +0045,0340,0256,0352,0260,0227,0266,0366,0323,0213,0332,0310,0300,0226,0160,0242, \ +0302,0002,0274,0162,0066,0003,0152,0121,0300,0312,0130,0055,0040,0264,0253,0213, \ +0205,0233,0015,0074,0156,0214,0242,0373,0050,0263,0006,0132,0114,0040,0250,0214, \ +0053,0042,0277,0055,0125,0104,0207,0016,0233,0345,0300,0016,0047,0122,0006,0025, \ +0335,0254,0302,0032,0024,0255,0244,0025,0124,0302,0065,0305,0013,0040,0264,0153, \ +0016,0234,0362,0025,0102,0305,0275,0240,0331,0366,0025,0107,0226,0234,0351,0346, \ +0212,0145,0201,0104,0376,0223,0261,0102,0307,0063,0176,0314,0360,0015,0216,0232, \ +0070,0341,0217,0021,0143,0156,0034,0304,0033,0014,0376,0345,0003,0244,0205,0240, \ +0261,0207,0231,0071,0022,0205,0102,0303,0365,0047,0351,0234,0354,0321,0003,0275, \ +0237,0140,0213,0111,0102,0332,0023,0210,0012,0016,0263,0233,0337,0051,0031,0057, \ +0216,0176,0342,0316,0026,0302,0012,0321,0041,0203,0110,0060,0020,0303,0120,0115, \ +0262,0245,0336,0160,0216,0075,0320,0170,0125,0331,0364,0307,0027,0155,0062,0231, \ +0303,0224,0116,0233,0306,0031,0033,0052,0002,0246,0121,0172,0026,0005,0211,0022, \ +0332,0304,0343,0265,0227,0204,0273,0141,0036,0376,0270,0014,0140,0074,0354,0013, \ +0075,0326,0234,0314,0000,0344,0075,0145,0361,0045,0176,0300,0347,0013,0251,0255, \ +0041,0164,0223,0250,0322,0232,0210,0330,0176,0322,0211,0154,0333,0236,0243,0151, \ +0202,0360,0030,0345,0273,0232,0147,0274,0123,0273,0025,0112,0260,0336,0214,0361, \ +0066,0011,0207,0154,0232,0110,0260,0143,0336,0233,0123,0322,0063,0246,0054,0202, \ +0153,0207,0275,0006,0201,0325,0171,0042,0036,0327,0231,0126,0313,0004,0302,0245, \ +0017,0317,0071,0164,0223,0201,0316,0036,0135,0027,0073,0372,0165,0017,0155,0125, \ +0331,0170,0356,0140,0157,0362,0073,0146,0337,0312,0213,0307,0207,0207,0001,0354, \ +0101,0045,0151,0226,0350,0154,0055,0200,0153,0146,0141,0161,0240,0241,0140,0257, \ +0047,0011,0321,0032,0261,0126,0330,0370,0047,0002,0145,0345,0031,0336,0264,0066, \ +0337,0061,0302,0110,0034,0370,0251,0247,0074,0352,0217,0055,0157,0236,0241,0211, \ +0121,0103,0221,0266,0045,0146,0043,0140,0155,0054,0232,0225,0015,0022,0137,0026, \ +0224,0054,0303,0253,0213,0246,0001,0122,0237,0162,0130,0240,0117,0312,0056,0233, \ +0036,0070,0343,0105,0014,0167,0154,0146,0115,0226,0056,0264,0221,0072,0316,0377, \ +0274,0205,0127,0021,0355,0336,0262,0274,0330,0322,0211,0055,0204,0245,0202,0311, \ +0153,0361,0316,0200,0260,0074,0215,0212,0036,0111,0047,0271,0353,0047,0260,0054, \ +0046,0165,0170,0036,0341,0244,0011,0133,0030,0332,0262,0302,0213,0325,0276,0134, \ +0212,0075,0127,0212,0040,0231,0147,0304,0154,0314,0204,0324,0334,0334,0305,0130, \ +0301,0173,0135,0313,0061,0214,0254,0253,0135,0273,0261,0357,0204,0161,0152,0303, \ +0013,0052,0207,0105,0056,0032,0221,0237,0014,0316,0054,0253,0075,0200,0266,0321, \ +0027,0026,0146,0111,0260,0016,0216,0251,0145,0022,0054,0367,0230,0115,0261,0141, \ +0201,0020,0204,0033,0341,0352,0110,0303,0054,0217,0210,0073,0246,0256,0302,0254, \ +0260,0275,0300,0367,0163,0116,0071,0204,0362,0103,0103,0012,0202,0012,0361,0111, \ +0142,0044,0154,0264,0210,0306,0165,0153,0041,0335,0050,0227,0154,0177,0157,0134, \ +0361,0372,0016,0303,0167,0134,0300,0235,0140,0160,0347,0257,0205,0150,0377,0112, \ +0232,0227,0121,0164,0226,0272,0105,0044,0155,0205,0141,0262,0345,0243,0162,0074, \ +0261,0052,0063,0023,0140,0156,0036,0030,0046,0061,0252,0250,0026,0353,0101,0207, \ +0147,0120,0142,0027,0016,0107,0201,0350,0274,0302,0111,0054,0013,0204,0071,0342, \ +0032,0067,0172,0042,0031,0205,0007,0262,0351,0373,0141,0174,0166,0100,0153,0150, \ +0135,0316,0347,0064,0144,0110,0036,0031,0066,0317,0305,0215,0375,0006,0101,0016, \ +0306,0051,0357,0353,0176,0263,0361,0271,0237,0304,0150,0311,0200,0240,0245,0244, \ +0251,0131,0037,0235,0223,0110,0114,0022,0050,0203,0025,0245,0265,0260,0131,0040, \ +0244,0026,0035,0335,0333,0232,0336,0165,0126,0143,0374,0272,0372,0225,0213,0236, \ +0057,0004,0205,0132,0350,0212,0064,0120,0150,0307,0366,0037,0125,0014,0366,0203, \ +0010,0004,0373,0056,0050,0256,0003,0066,0024,0025,0345,0202,0236,0302,0072,0105, \ +0122,0021,0011,0257,0120,0102,0020,0045,0102,0245,0041,0175,0371,0126,0325,0160, \ +0234,0042,0245,0342,0104,0322,0051,0172,0101,0272,0077,0104,0005,0331,0034,0202, \ +0176,0277,0273,0227,0065,0305,0264,0251,0372,0023,0100,0312,0330,0020,0030,0104, \ +0235,0210,0114,0103,0302,0014,0231,0306,0222,0115,0231,0262,0117,0327,0036,0157, \ +0176,0316,0344,0107,0040,0212,0153,0221,0341,0044,0263,0020,0260,0306,0254,0226, \ +0071,0015,0255,0137,0225,0361,0302,0210,0121,0141,0053,0056,0320,0041,0217,0177, \ +0242,0205,0233,0062,0146,0155,0057,0206,0243,0075,0006,0310,0142,0264,0201,0224, \ +0333,0274,0301,0165,0153,0212,0226,0210,0222,0040,0052,0242,0305,0120,0106,0047, \ +0333,0150,0306,0215,0101,0130,0105,0222,0021,0201,0043,0002,0041,0047,0036,0306, \ +0276,0377,0041,0355,0262,0356,0333,0221,0374,0113,0120,0327,0050,0100,0150,0343, \ +0250,0253,0122,0320,0361,0122,0312,0252,0235,0321,0220,0111,0005,0052,0075,0127, \ +0006,0000,0064,0005,0221,0124,0176,0301,0265,0372,0016,0005,0336,0310,0305,0322, \ +0102,0311,0311,0211,0006,0355,0363,0364,0374,0076,0317,0317,0127,0176,0110,0271, \ +0235,0032,0315,0020,0017,0125,0112,0004,0237,0177,0057,0351,0075,0226,0104,0133, \ +0017,0367,0042,0236,0352,0252,0121,0046,0310,0105,0220,0140,0165,0324,0271,0326, \ +0366,0166,0351,0363,0372,0372,0072,0042,0274,0214,0073,0307,0223,0325,0137,0034, \ +0234,0123,0306,0355,0332,0020,0172,0324,0005,0070,0151,0347,0140,0076,0057,0002, \ +0276,0277,0122,0333,0032,0351,0242,0214,0007,0232,0101,0127,0106,0225,0221,0341, \ +0364,0145,0327,0333,0322,0015,0123,0072,0250,0270,0115,0053,0341,0235,0363,0363, \ +0270,0366,0240,0326,0304,0075,0311,0015,0240,0311,0043,0367,0030,0346,0274,0042, \ +0073,0367,0357,0036,0170,0302,0163,0320,0220,0051,0362,0144,0357,0330,0173,0071, \ +0167,0017,0300,0102,0107,0243,0145,0272,0267,0037,0104,0352,0016,0223,0237,0130, \ +0016,0204,0102,0100,0204,0030,0101,0262,0056,0104,0000,0053,0001,0261,0051,0076, \ +0336,0323,0355,0122,0034,0003,0170,0001,0251,0255,0306,0275,0146,0336,0215,0260, \ +0344,0134,0334,0064,0311,0131,0252,0210,0022,0264,0151,0021,0244,0212,0021,0216, \ +0302,0307,0166,0352,0153,0356,0335,0205,0277,0066,0024,0346,0046,0033,0016,0313, \ +0225,0224,0216,0215,0011,0022,0056,0253,0116,0326,0150,0354,0351,0073,0017,0107, \ +0122,0274,0072,0326,0352,0365,0234,0334,0131,0325,0333,0276,0272,0101,0154,0027, \ +0071,0125,0123,0327,0003,0061,0203,0201,0241,0226,0315,0210,0054,0131,0260,0011, \ +0312,0242,0177,0015,0335,0016,0071,0011,0055,0305,0001,0364,0150,0031,0060,0124, \ +0115,0035,0130,0203,0017,0234,0150,0155,0012,0113,0004,0020,0171,0361,0077,0167, \ +0277,0357,0353,0266,0347,0175,0212,0214,0020,0101,0022,0013,0020,0126,0054,0222, \ +0207,0016,0247,0364,0147,0232,0305,0034,0160,0301,0172,0361,0016,0037,0055,0160, \ +0340,0036,0176,0163,0305,0057,0010,0217,0242,0040,0170,0014,0272,0223,0352,0364, \ +0374,0175,0043,0327,0016,0016,0221,0122,0101,0162,0144,0014,0210,0317,0210,0167, \ +0370,0344,0074,0073,0154,0067,0121,0110,0054,0037,0077,0100,0017,0200,0240,0306, \ +0047,0263,0344,0113,0015,0033,0364,0363,0233,0324,0204,0127,0012,0242,0263,0372, \ +0263,0244,0224,0276,0244,0045,0132,0023,0023,0270,0334,0275,0251,0244,0014,0140, \ +0276,0045,0011,0046,0021,0254,0074,0015,0173,0014,0140,0250,0157,0147,0156,0350, \ +0064,0305,0066,0061,0342,0037,0134,0046,0266,0325,0367,0173,0204,0065,0154,0030, \ +0041,0271,0052,0116,0273,0120,0060,0177,0104,0117,0237,0107,0313,0220,0155,0373, \ +0136,0212,0335,0330,0020,0021,0221,0130,0144,0100,0135,0325,0222,0303,0315,0232, \ +0114,0005,0006,0020,0120,0224,0266,0173,0270,0030,0127,0211,0332,0037,0135,0166, \ +0070,0054,0201,0215,0345,0042,0036,0132,0153,0345,0034,0303,0272,0363,0021,0202, \ +0212,0012,0214,0131,0004,0206,0044,0016,0235,0263,0251,0344,0220,0362,0146,0035, \ +0065,0145,0207,0305,0324,0325,0060,0241,0127,0331,0145,0122,0052,0261,0210,0240, \ +0254,0107,0032,0072,0267,0000,0332,0066,0314,0045,0122,0022,0040,0155,0325,0226, \ +0070,0154,0271,0152,0364,0166,0122,0140,0215,0176,0131,0125,0034,0003,0037,0130, \ +0166,0003,0361,0105,0250,0160,0054,0223,0371,0367,0025,0222,0351,0022,0322,0115, \ +0353,0274,0232,0204,0071,0134,0052,0242,0040,0244,0101,0212,0326,0112,0262,0125, \ +0121,0045,0333,0062,0142,0374,0032,0105,0206,0062,0242,0241,0314,0236,0160,0371, \ +0234,0160,0103,0303,0176,0121,0223,0236,0307,0236,0333,0013,0230,0013,0167,0055, \ +0315,0100,0160,0012,0041,0363,0143,0266,0364,0262,0061,0264,0374,0205,0023,0303, \ +0002,0105,0154,0365,0320,0032,0305,0161,0057,0062,0353,0260,0206,0272,0171,0352, \ +0035,0222,0261,0135,0124,0022,0063,0065,0060,0124,0071,0011,0332,0071,0226,0263, \ +0020,0013,0163,0047,0222,0063,0372,0132,0221,0023,0124,0074,0075,0163,0113,0361, \ +0371,0357,0322,0275,0035,0304,0141,0016,0242,0051,0116,0244,0261,0170,0100,0360, \ +0350,0365,0130,0314,0125,0366,0103,0076,0173,0365,0265,0205,0025,0150,0225,0070, \ +0141,0304,0022,0140,0110,0221,0164,0027,0370,0161,0234,0272,0142,0137,0313,0232, \ +0026,0363,0135,0060,0126,0241,0364,0203,0014,0170,0246,0231,0352,0324,0335,0334, \ +0352,0036,0267,0300,0247,0261,0222,0347,0166,0305,0373,0151,0355,0065,0041,0255, \ +0341,0050,0125,0064,0135,0323,0273,0046,0002,0046,0256,0221,0006,0100,0337,0077, \ +0031,0273,0025,0267,0243,0261,0176,0016,0245,0114,0336,0020,0175,0214,0352,0146, \ +0333,0173,0226,0141,0230,0202,0252,0022,0304,0040,0355,0237,0004,0014,0246,0226, \ +0251,0122,0251,0170,0046,0263,0156,0325,0232,0322,0004,0105,0005,0122,0034,0155, \ +0006,0073,0005,0261,0266,0210,0212,0305,0002,0261,0353,0303,0342,0242,0274,0012, \ +0261,0230,0304,0020,0065,0223,0301,0025,0151,0260,0155,0131,0207,0017,0224,0320, \ +0350,0161,0067,0355,0014,0215,0105,0370,0275,0365,0077,0171,0226,0366,0141,0253, \ +0202,0110,0360,0374,0075,0352,0227,0020,0160,0057,0201,0034,0030,0152,0026,0266, \ +0252,0311,0345,0025,0064,0123,0317,0067,0022,0173,0265,0045,0111,0360,0336,0017, \ +0062,0034,0370,0122,0273,0062,0005,0006,0210,0005,0065,0010,0140,0313,0054,0160, \ +0120,0256,0161,0345,0044,0075,0134,0360,0063,0171,0066,0362,0004,0147,0256,0152, \ +0304,0260,0241,0130,0043,0254,0206,0237,0055,0243,0206,0157,0271,0266,0372,0154, \ +0034,0066,0041,0202,0152,0046,0032,0330,0014,0330,0323,0274,0164,0314,0310,0132, \ +0121,0066,0336,0240,0335,0031,0266,0211,0254,0112,0153,0132,0310,0232,0102,0272, \ +0314,0273,0070,0304,0114,0277,0146,0140,0263,0064,0146,0031,0023,0143,0033,0172, \ +0150,0324,0163,0110,0155,0112,0250,0055,0266,0321,0156,0045,0314,0306,0115,0046, \ +0032,0020,0064,0005,0250,0243,0012,0042,0025,0140,0041,0071,0306,0117,0043,0042, \ +0267,0077,0213,0257,0261,0147,0020,0252,0321,0020,0102,0266,0072,0367,0064,0132, \ +0160,0221,0246,0330,0206,0107,0273,0217,0072,0360,0145,0230,0034,0032,0303,0004, \ +0364,0350,0225,0275,0246,0207,0126,0170,0353,0352,0336,0155,0373,0115,0341,0233, \ +0153,0163,0110,0244,0264,0033,0343,0374,0064,0140,0270,0312,0062,0016,0250,0126, \ +0006,0330,0122,0142,0013,0203,0014,0312,0231,0213,0070,0046,0007,0042,0354,0146, \ +0031,0262,0103,0116,0104,0037,0205,0052,0250,0061,0024,0325,0220,0344,0335,0032, \ +0164,0071,0100,0062,0323,0210,0312,0202,0137,0013,0005,0332,0126,0124,0025,0223, \ +0022,0010,0152,0051,0042,0204,0234,0344,0053,0103,0011,0160,0327,0063,0140,0367, \ +0226,0247,0373,0301,0075,0047,0015,0014,0112,0220,0151,0010,0105,0167,0125,0160, \ +0121,0330,0100,0157,0251,0166,0040,0171,0270,0016,0065,0234,0217,0273,0316,0325, \ +0066,0264,0140,0063,0326,0360,0015,0200,0240,0267,0266,0026,0346,0166,0246,0141, \ +0134,0315,0253,0054,0074,0376,0202,0365,0323,0143,0001,0117,0004,0117,0253,0256, \ +0320,0243,0026,0012,0036,0335,0242,0034,0062,0141,0044,0301,0336,0255,0133,0030, \ +0126,0210,0053,0035,0015,0160,0124,0104,0264,0253,0002,0322,0203,0150,0066,0214, \ +0241,0111,0150,0312,0045,0245,0102,0054,0153,0130,0330,0353,0017,0206,0203,0132, \ +0223,0211,0130,0313,0020,0166,0222,0206,0254,0014,0214,0230,0221,0357,0002,0041, \ +0202,0321,0226,0140,0252,0214,0052,0300,0236,0325,0230,0014,0202,0074,0260,0370, \ +0161,0245,0007,0363,0020,0222,0200,0376,0103,0143,0030,0216,0231,0071,0355,0012, \ +0006,0044,0373,0131,0315,0237,0274,0146,0217,0315,0170,0263,0242,0126,0112,0025, \ +0373,0211,0056,0312,0061,0044,0173,0213,0054,0025,0153,0070,0147,0042,0277,0177, \ +0142,0075,0373,0276,0237,0052,0146,0063,0353,0153,0254,0244,0055,0201,0040,0054, \ +0205,0105,0345,0253,0275,0176,0077,0024,0342,0026,0321,0266,0103,0104,0020,0101, \ +0027,0053,0100,0266,0333,0113,0305,0170,0305,0100,0341,0035,0064,0247,0064,0314, \ +0165,0307,0027,0102,0152,0364,0274,0266,0156,0221,0060,0071,0174,0204,0204,0226, \ +0163,0372,0020,0206,0257,0124,0303,0332,0024,0114,0057,0101,0331,0135,0120,0102, \ +0366,0004,0210,0301,0221,0065,0017,0150,0035,0254,0233,0010,0252,0203,0335,0141, \ +0376,0106,0114,0214,0101,0121,0042,0042,0374,0041,0346,0305,0212,0013,0000,0273, \ +0117,0142,0120,0071,0033,0363,0006,0036,0256,0315,0201,0115,0126,0074,0335,0044, \ +0260,0306,0346,0100,0011,0044,0023,0060,0053,0251,0064,0212,0140,0056,0104,0020, \ +0300,0155,0224,0330,0137,0024,0262,0335,0222,0344,0053,0066,0152,0145,0321,0370, \ +0272,0205,0061,0250,0123,0133,0103,0351,0331,0016,0233,0161,0362,0274,0050,0062, \ +0332,0247,0026,0174,0223,0006,0060,0360,0264,0140,0202,0072,0065,0204,0300,0365, \ +0215,0060,0341,0303,0002,0262,0152,0331,0114,0341,0000,0241,0217,0215,0260,0147, \ +0247,0364,0153,0237,0351,0134,0040,0357,0035,0071,0123,0177,0160,0007,0220,0140, \ +0160,0205,0164,0265,0015,0337,0320,0104,0046,0241,0246,0022,0261,0327,0025,0110, \ +0237,0056,0320,0374,0261,0305,0005,0323,0026,0215,0013,0005,0301,0066,0367,0057, \ +0301,0214,0321,0355,0144,0114,0201,0100,0215,0326,0354,0042,0262,0067,0367,0310, \ +0147,0103,0274,0201,0206,0333,0140,0143,0207,0344,0331,0337,0211,0044,0211,0322, \ +0137,0270,0371,0247,0117,0151,0273,0076,0213,0244,0353,0071,0303,0346,0277,0051, \ +0142,0076,0256,0046,0031,0054,0136,0262,0034,0116,0333,0360,0374,0062,0131,0362, \ +0100,0251,0261,0354,0200,0210,0211,0074,0175,0344,0007,0112,0236,0246,0041,0175, \ +0173,0104,0240,0135,0157,0141,0277,0110,0210,0054,0122,0012,0221,0004,0264,0262, \ +0233,0103,0155,0007,0115,0275,0334,0075,0334,0347,0324,0040,0173,0317,0253,0157, \ +0007,0057,0324,0315,0201,0065,0240,0252,0160,0237,0310,0046,0027,0050,0225,0050, \ +0130,0271,0166,0107,0054,0346,0067,0024,0254,0040,0156,0323,0252,0003,0237,0214, \ +0061,0232,0147,0100,0071,0344,0144,0247,0330,0203,0061,0100,0142,0340,0140,0242, \ +0356,0022,0270,0276,0274,0103,0342,0130,0140,0307,0205,0120,0275,0073,0166,0363, \ +0163,0126,0015,0144,0245,0120,0144,0046,0031,0305,0226,0001,0367,0304,0213,0004, \ +0170,0100,0131,0143,0257,0064,0205,0244,0135,0206,0245,0004,0117,0237,0231,0152, \ +0343,0325,0341,0204,0015,0342,0057,0337,0312,0013,0323,0077,0334,0033,0021,0277, \ +0050,0114,0121,0124,0031,0011,0173,0002,0102,0107,0025,0322,0300,0044,0030,0107, \ +0236,0017,0317,0072,0310,0213,0160,0133,0203,0237,0155,0351,0353,0274,0056,0320, \ +0321,0263,0356,0101,0151,0216,0322,0171,0370,0311,0332,0203,0030,0014,0125,0110, \ +0300,0221,0167,0136,0071,0053,0241,0015,0260,0174,0171,0145,0277,0012,0332,0103, \ +0275,0311,0256,0031,0130,0144,0111,0044,0057,0226,0147,0003,0114,0001,0242,0223, \ +0117,0074,0254,0001,0124,0125,0007,0266,0205,0143,0067,0244,0322,0006,0010,0054, \ +0012,0313,0260,0325,0121,0021,0124,0122,0040,0345,0222,0252,0012,0230,0255,0126, \ +0043,0040,0040,0202,0044,0021,0143,0007,0141,0204,0105,0040,0226,0030,0036,0217, \ +0343,0066,0137,0040,0310,0014,0122,0130,0147,0152,0023,0357,0245,0102,0010,0375, \ +0076,0023,0172,0325,0275,0127,0002,0106,0134,0300,0143,0204,0005,0200,0072,0020, \ +0125,0035,0315,0121,0246,0301,0213,0026,0072,0141,0115,0024,0260,0340,0145,0301, \ +0143,0121,0245,0220,0125,0304,0054,0051,0051,0246,0055,0260,0314,0205,0064,0051, \ +0340,0366,0320,0314,0317,0314,0007,0022,0110,0355,0047,0023,0352,0045,0362,0147, \ +0265,0127,0230,0066,0362,0115,0260,0244,0326,0366,0171,0231,0115,0203,0272,0375, \ +0141,0231,0053,0230,0366,0103,0246,0126,0134,0364,0314,0312,0045,0112,0044,0116, \ +0046,0247,0340,0357,0324,0321,0202,0077,0117,0110,0253,0001,0144,0054,0144,0103, \ +0144,0332,0362,0342,0002,0204,0147,0150,0017,0132,0305,0005,0104,0102,0313,0146, \ +0346,0153,0010,0160,0071,0002,0305,0210,0221,0214,0106,0004,0130,0212,0103,0102, \ +0031,0016,0340,0257,0324,0056,0366,0306,0230,0323,0005,0214,0310,0271,0310,0134, \ +0325,0343,0152,0030,0344,0022,0112,0206,0210,0140,0112,0117,0204,0062,0011,0101, \ +0212,0063,0107,0151,0117,0036,0122,0167,0014,0026,0021,0115,0247,0234,0005,0022, \ +0326,0344,0167,0254,0067,0272,0007,0024,0031,0034,0067,0177,0153,0033,0026,0117, \ +0143,0331,0144,0264,0030,0240,0111,0041,0164,0136,0252,0060,0125,0212,0126,0211, \ +0005,0232,0105,0231,0112,0040,0062,0101,0017,0135,0240,0171,0103,0175,0246,0354, \ +0105,0240,0050,0045,0243,0106,0122,0120,0107,0020,0210,0161,0010,0212,0352,0026, \ +0345,0256,0015,0145,0322,0363,0255,0076,0343,0012,0241,0114,0030,0264,0110,0302, \ +0043,0254,0120,0144,0023,0352,0002,0044,0300,0360,0247,0147,0102,0223,0260,0304, \ +0276,0176,0335,0161,0325,0327,0235,0241,0334,0220,0066,0032,0347,0000,0367,0363, \ +0262,0151,0041,0360,0263,0236,0237,0335,0225,0207,0150,0045,0364,0333,0261,0065, \ +0334,0305,0072,0104,0343,0237,0076,0111,0162,0066,0122,0172,0034,0335,0156,0100, \ +0211,0256,0131,0253,0331,0024,0202,0004,0144,0006,0002,0074,0272,0136,0300,0210, \ +0327,0346,0166,0101,0260,0030,0126,0041,0257,0303,0001,0276,0061,0147,0206,0364, \ +0041,0263,0355,0355,0160,0034,0125,0161,0311,0374,0016,0366,0214,0063,0342,0361, \ +0147,0116,0367,0156,0105,0152,0367,0154,0226,0066,0311,0146,0111,0073,0132,0263, \ +0174,0234,0035,0002,0124,0261,0132,0106,0001,0302,0252,0044,0051,0102,0206,0077, \ +0036,0300,0124,0160,0240,0150,0024,0354,0163,0356,0341,0133,0074,0263,0016,0112, \ +0023,0200,0326,0227,0277,0032,0124,0147,0000,0275,0355,0112,0267,0377,0172,0105, \ +0035,0027,0240,0211,0031,0252,0205,0344,0202,0033,0327,0006,0375,0074,0312,0150, \ +0214,0134,0366,0272,0075,0113,0164,0041,0115,0312,0171,0221,0266,0124,0167,0354, \ +0252,0012,0066,0027,0246,0353,0177,0124,0154,0320,0334,0025,0234,0301,0317,0122, \ +0350,0023,0110,0016,0211,0064,0161,0200,0071,0366,0136,0261,0043,0165,0034,0266, \ +0052,0374,0050,0342,0142,0142,0073,0102,0364,0064,0051,0063,0222,0225,0026,0011, \ +0336,0365,0032,0366,0027,0115,0250,0203,0035,0345,0203,0235,0356,0060,0332,0131, \ +0223,0101,0120,0134,0314,0140,0062,0366,0310,0251,0253,0330,0070,0370,0206,0060, \ +0100,0243,0144,0022,0024,0056,0310,0255,0035,0375,0025,0223,0265,0305,0337,0307, \ +0274,0364,0076,0240,0107,0207,0350,0226,0352,0271,0055,0317,0131,0330,0166,0143, \ +0030,0335,0130,0277,0067,0032,0322,0257,0355,0310,0075,0233,0164,0265,0061,0304, \ +0067,0251,0371,0172,0224,0123,0120,0060,0152,0110,0142,0206,0265,0354,0301,0214, \ +0153,0030,0301,0210,0375,0027,0174,0314,0074,0017,0311,0331,0351,0160,0254,0035, \ +0313,0270,0154,0136,0133,0033,0155,0065,0303,0065,0021,0341,0112,0152,0207,0206, \ +0363,0176,0153,0352,0317,0233,0305,0173,0122,0304,0335,0076,0277,0147,0055,0240, \ +0233,0241,0124,0321,0201,0312,0115,0202,0171,0040,0141,0275,0236,0207,0251,0225, \ +0032,0236,0100,0341,0033,0126,0073,0017,0155,0045,0253,0077,0313,0217,0020,0221, \ +0032,0271,0233,0011,0022,0234,0002,0261,0234,0027,0337,0111,0140,0342,0040,0144, \ +0020,0036,0067,0003,0043,0070,0015,0214,0315,0254,0115,0154,0370,0307,0076,0174, \ +0155,0154,0315,0133,0351,0275,0033,0327,0242,0171,0166,0034,0103,0007,0206,0125, \ +0227,0057,0057,0206,0024,0103,0154,0136,0150,0005,0252,0073,0171,0353,0365,0336, \ +0163,0300,0167,0301,0044,0143,0111,0037,0207,0360,0116,0001,0166,0264,0031,0124, \ +0043,0262,0010,0046,0007,0227,0373,0371,0326,0264,0151,0253,0304,0131,0052,0231, \ +0145,0030,0373,0015,0146,0351,0244,0227,0101,0166,0332,0315,0071,0166,0103,0014, \ +0256,0276,0035,0307,0272,0034,0153,0356,0210,0225,0202,0017,0002,0026,0052,0161, \ +0005,0246,0032,0265,0100,0327,0141,0300,0215,0221,0244,0010,0232,0071,0124,0203, \ +0351,0175,0032,0101,0335,0336,0007,0162,0230,0006,0215,0350,0317,0300,0076,0024, \ +0113,0307,0231,0306,0152,0217,0272,0022,0106,0167,0350,0104,0237,0243,0350,0321, \ +0305,0015,0064,0003,0147,0207,0043,0115,0155,0165,0035,0137,0115,0261,0074,0042, \ +0247,0036,0200,0331,0355,0141,0334,0105,0110,0354,0274,0340,0300,0214,0210,0201, \ +0254,0150,0207,0147,0035,0050,0125,0224,0135,0264,0230,0301,0201,0203,0071,0106, \ +0215,0156,0122,0035,0003,0113,0133,0230,0043,0144,0334,0354,0162,0045,0361,0052, \ +0070,0121,0026,0044,0133,0255,0033,0006,0305,0101,0010,0215,0100,0320,0075,0033, \ +0115,0214,0336,0213,0066,0130,0004,0267,0110,0056,0005,0255,0042,0204,0154,0004, \ +0205,0107,0201,0112,0101,0040,0135,0034,0072,0012,0231,0120,0151,0126,0045,0034, \ +0032,0004,0023,0061,0112,0164,0204,0301,0213,0303,0266,0204,0201,0202,0132,0141, \ +0122,0140,0060,0034,0012,0135,0202,0303,0311,0224,0276,0150,0011,0002,0104,0130, \ +0222,0323,0265,0070,0262,0205,0122,0054,0123,0332,0016,0252,0056,0356,0001,0211, \ +0032,0054,0270,0323,0313,0262,0314,0064,0231,0100,0251,0017,0106,0262,0056,0322, \ +0051,0100,0263,0117,0040,0130,0302,0012,0025,0014,0115,0270,0040,0076,0051,0012, \ +0133,0260,0110,0162,0102,0143,0165,0316,0315,0124,0120,0166,0030,0105,0120,0120, \ +0136,0364,0310,0245,0001,0033,0276,0305,0210,0230,0026,0067,0000,0273,0065,0336, \ +0100,0224,0016,0122,0115,0341,0050,0007,0012,0024,0045,0331,0101,0324,0210,0055, \ +0070,0305,0006,0030,0020,0062,0010,0132,0334,0144,0022,0005,0176,0022,0077,0013, \ +0140,0335,0267,0102,0171,0000,0022,0332,0060,0230,0014,0071,0121,0066,0030,0050, \ +0343,0161,0022,0222,0147,0050,0123,0121,0043,0271,0201,0360,0117,0000,0306,0050, \ +0233,0214,0007,0211,0321,0047,0150,0001,0314,0066,0220,0016,0154,0222,0147,0164, \ +0025,0221,0023,0030,0121,0120,0372,0146,0370,0127,0025,0056,0144,0061,0304,0312, \ +0062,0362,0102,0243,0114,0103,0012,0131,0044,0130,0207,0066,0057,0070,0024,0064, \ +0135,0240,0346,0356,0212,0134,0140,0054,0130,0226,0214,0013,0325,0160,0013,0045, \ +0113,0342,0140,0157,0045,0060,0271,0130,0233,0124,0304,0074,0071,0303,0100,0154, \ +0162,0027,0054,0211,0166,0356,0073,0222,0164,0143,0112,0274,0222,0121,0021,0060, \ +0106,0325,0034,0074,0066,0347,0314,0252,0375,0376,0217,0047,0207,0232,0006,0227, \ +0302,0224,0166,0066,0244,0250,0276,0346,0224,0261,0110,0343,0004,0201,0034,0232, \ +0021,0067,0326,0310,0264,0310,0121,0153,0103,0251,0135,0160,0244,0343,0172,0360, \ +0302,0262,0236,0377,0211,0076,0064,0207,0055,0015,0264,0327,0204,0220,0213,0343, \ +0226,0376,0104,0306,0165,0010,0250,0155,0263,0236,0174,0147,0162,0156,0236,0305, \ +0356,0240,0216,0104,0305,0015,0351,0245,0304,0126,0276,0375,0005,0161,0013,0213, \ +0253,0002,0310,0315,0063,0327,0006,0261,0221,0027,0226,0002,0122,0054,0200,0351, \ +0024,0015,0150,0111,0036,0045,0303,0210,0143,0050,0224,0126,0221,0102,0306,0333, \ +0342,0201,0155,0170,0254,0047,0306,0076,0000,0157,0003,0150,0162,0100,0103,0371, \ +0274,0315,0117,0056,0016,0036,0315,0112,0065,0360,0032,0324,0261,0001,0276,0014, \ +0147,0147,0011,0271,0261,0252,0005,0232,0040,0033,0032,0136,0216,0126,0344,0370, \ +0131,0013,0135,0300,0212,0060,0235,0330,0353,0103,0154,0206,0334,0104,0230,0265, \ +0364,0060,0343,0074,0246,0004,0254,0375,0270,0172,0361,0341,0341,0367,0176,0033, \ +0016,0306,0221,0273,0061,0363,0003,0342,0372,0274,0030,0046,0117,0131,0002,0157, \ +0334,0175,0354,0204,0237,0010,0360,0351,0377,0333,0264,0233,0264,0021,0350,0363, \ +0117,0147,0253,0303,0345,0310,0261,0275,0160,0020,0260,0172,0324,0060,0342,0343, \ +0367,0375,0352,0300,0216,0041,0125,0240,0025,0276,0266,0046,0343,0043,0324,0330, \ +0007,0023,0337,0010,0260,0364,0227,0120,0337,0074,0155,0112,0151,0107,0363,0036, \ +0022,0222,0174,0154,0066,0075,0324,0340,0000,0172,0303,0306,0347,0346,0224,0057, \ +0345,0140,0266,0371,0325,0017,0030,0371,0170,0260,0343,0323,0003,0233,0120,0224, \ +0223,0244,0130,0101,0151,0110,0266,0140,0074,0017,0055,0025,0322,0014,0300,0333, \ +0127,0007,0035,0307,0367,0174,0052,0173,0115,0277,0102,0050,0202,0002,0050,0213, \ +0001,0221,0030,0042,0112,0315,0301,0300,0144,0121,0140,0251,0013,0267,0076,0170, \ +0157,0017,0172,0043,0333,0214,0207,0011,0017,0352,0220,0110,0020,0015,0167,0171, \ +0261,0044,0024,0343,0034,0274,0264,0260,0366,0227,0017,0145,0227,0143,0245,0274, \ +0022,0327,0237,0223,0115,0222,0176,0242,0044,0073,0217,0364,0366,0366,0157,0252, \ +0212,0222,0276,0213,0061,0314,0156,0114,0107,0251,0054,0202,0044,0355,0154,0323, \ +0331,0312,0123,0200,0301,0205,0067,0106,0023,0307,0212,0213,0066,0017,0313,0150, \ +0120,0112,0141,0325,0030,0236,0215,0364,0067,0176,0072,0152,0035,0030,0227,0051, \ +0214,0251,0231,0047,0342,0311,0000,0226,0223,0151,0052,0235,0320,0151,0307,0225, \ +0376,0155,0101,0147,0271,0236,0206,0214,0263,0362,0327,0154,0325,0026,0140,0350, \ +0306,0041,0142,0134,0041,0316,0012,0313,0033,0026,0337,0103,0352,0013,0202,0361, \ +0222,0023,0263,0112,0125,0070,0246,0011,0136,0113,0167,0101,0240,0237,0144,0102, \ +0321,0026,0211,0045,0252,0017,0360,0076,0060,0121,0275,0201,0374,0344,0203,0353, \ +0074,0135,0103,0362,0140,0376,0334,0216,0232,0047,0031,0351,0153,0046,0350,0036, \ +0011,0177,0175,0044,0244,0176,0176,0047,0273,0031,0351,0321,0351,0371,0365,0255, \ +0104,0170,0214,0074,0113,0001,0003,0004,0276,0206,0057,0261,0167,0016,0102,0010, \ +0227,0064,0250,0243,0107,0255,0155,0300,0330,0136,0145,0036,0170,0131,0150,0041, \ +0051,0121,0312,0251,0244,0002,0024,0023,0226,0004,0302,0224,0011,0143,0014,0111, \ +0026,0264,0350,0134,0041,0060,0201,0271,0030,0063,0166,0261,0065,0201,0102,0202, \ +0010,0332,0257,0234,0323,0035,0334,0101,0174,0255,0072,0340,0252,0225,0355,0141, \ +0246,0275,0370,0340,0110,0010,0272,0104,0325,0203,0237,0170,0320,0006,0210,0003, \ +0345,0201,0242,0132,0026,0167,0346,0351,0303,0241,0102,0330,0310,0335,0231,0101, \ +0370,0261,0075,0273,0066,0135,0366,0374,0136,0372,0217,0371,0207,0300,0055,0207, \ +0267,0325,0211,0205,0164,0276,0015,0252,0311,0353,0370,0325,0301,0270,0352,0314, \ +0177,0374,0135,0311,0024,0341,0102,0100,0142,0242,0313,0310, \ diff --git a/include/applets.src.h b/include/applets.src.h index 29ab167..7dbd4c7 100644 --- a/include/applets.src.h +++ b/include/applets.src.h @@ -52,6 +52,12 @@ s - suid type: # define APPLET_NOEXEC(name,main,l,s,name2) LINK l name # define APPLET_NOFORK(name,main,l,s,name2) LINK l name +#elif defined(MAKE_SUID) +# define APPLET(name,l,s) SUID s l name +# define APPLET_ODDNAME(name,main,l,s,name2) SUID s l name +# define APPLET_NOEXEC(name,main,l,s,name2) SUID s l name +# define APPLET_NOFORK(name,main,l,s,name2) SUID s l name + #else static struct bb_applet applets[] = { /* name, main, location, need_suid */ # define APPLET(name,l,s) { #name, #name, l, s }, @@ -73,16 +79,13 @@ IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP)) IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP)) -IF_AR(APPLET(ar, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP)) IF_ARPING(APPLET(arping, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_AWK(APPLET_NOEXEC(awk, awk, BB_DIR_USR_BIN, BB_SUID_DROP, awk)) IF_BASENAME(APPLET_NOFORK(basename, basename, BB_DIR_USR_BIN, BB_SUID_DROP, basename)) IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP)) IF_BEEP(APPLET(beep, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_BLKID(APPLET(blkid, BB_DIR_SBIN, BB_SUID_DROP)) IF_BRCTL(APPLET(brctl, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_BZIP2(APPLET(bzip2, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CAL(APPLET(cal, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CAT(APPLET_NOFORK(cat, cat, BB_DIR_BIN, BB_SUID_DROP, cat)) IF_CATV(APPLET(catv, BB_DIR_BIN, BB_SUID_DROP)) @@ -99,10 +102,8 @@ IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CKSUM(APPLET_NOEXEC(cksum, cksum, BB_DIR_USR_BIN, BB_SUID_DROP, cksum)) IF_CLEAR(APPLET(clear, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_CMP(APPLET(cmp, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp)) -IF_CPIO(APPLET(cpio, BB_DIR_BIN, BB_SUID_DROP)) IF_CROND(APPLET(crond, BB_DIR_USR_SBIN, BB_SUID_DROP)) /* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */ IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) @@ -117,21 +118,17 @@ IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP)) IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP)) IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP)) IF_DHCPRELAY(APPLET(dhcprelay, BB_DIR_USR_SBIN, BB_SUID_DROP)) -IF_DIFF(APPLET(diff, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname)) IF_DMESG(APPLET(dmesg, BB_DIR_BIN, BB_SUID_DROP)) IF_DNSD(APPLET(dnsd, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, BB_DIR_BIN, BB_SUID_DROP, dnsdomainname)) IF_DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, dos2unix)) -IF_DPKG(APPLET(dpkg, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_DPKG_DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, BB_DIR_USR_BIN, BB_SUID_DROP, dpkg_deb)) IF_DU(APPLET(du, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_DUMPKMAP(APPLET(dumpkmap, BB_DIR_BIN, BB_SUID_DROP)) IF_DUMPLEASES(APPLET(dumpleases, BB_DIR_USR_BIN, BB_SUID_DROP)) //IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP)) //IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label)) IF_ECHO(APPLET_NOFORK(echo, echo, BB_DIR_BIN, BB_SUID_DROP, echo)) -IF_ED(APPLET(ed, BB_DIR_BIN, BB_SUID_DROP)) IF_EJECT(APPLET(eject, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_ENV(APPLET_NOEXEC(env, env, BB_DIR_USR_BIN, BB_SUID_DROP, env)) IF_ENVDIR(APPLET_ODDNAME(envdir, chpst, BB_DIR_USR_BIN, BB_SUID_DROP, envdir)) @@ -170,8 +167,6 @@ IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP)) IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP)) -IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP)) -IF_GZIP(APPLET(gzip, BB_DIR_BIN, BB_SUID_DROP)) IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd)) IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP)) IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head)) @@ -230,13 +225,9 @@ IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls)) IF_LSATTR(APPLET(lsattr, BB_DIR_BIN, BB_SUID_DROP)) IF_LSPCI(APPLET(lspci, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_LSUSB(APPLET(lsusb, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzcat)) -IF_LZMA(APPLET_ODDNAME(lzma, unlzma, BB_DIR_USR_BIN, BB_SUID_DROP, lzma)) -IF_LZOP(APPLET(lzop, BB_DIR_BIN, BB_SUID_DROP)) -IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, lzopcat)) IF_MAKEDEVS(APPLET(makedevs, BB_DIR_SBIN, BB_SUID_DROP)) IF_MAKEMIME(APPLET(makemime, BB_DIR_BIN, BB_SUID_DROP)) -IF_MAN(APPLET(man, BB_DIR_SBIN, BB_SUID_DROP)) +IF_MAN(APPLET(man, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_MATCHPATHCON(APPLET(matchpathcon, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, BB_DIR_USR_BIN, BB_SUID_DROP, md5sum)) IF_MICROCOM(APPLET(microcom, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -297,12 +288,9 @@ IF_RENICE(APPLET(renice, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESET(APPLET(reset, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESIZE(APPLET(resize, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, BB_DIR_SBIN, BB_SUID_DROP, restorecon)) -IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_RM(APPLET_NOFORK(rm, rm, BB_DIR_BIN, BB_SUID_DROP, rm)) IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, BB_DIR_BIN, BB_SUID_DROP, rmdir)) IF_ROUTE(APPLET(route, BB_DIR_SBIN, BB_SUID_DROP)) -IF_RPM(APPLET(rpm, BB_DIR_BIN, BB_SUID_DROP)) -IF_RPM2CPIO(APPLET(rpm2cpio, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RTCWAKE(APPLET(rtcwake, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, BB_DIR_BIN, BB_SUID_DROP, run_parts)) IF_RUNCON(APPLET(runcon, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -312,7 +300,6 @@ IF_RUNSVDIR(APPLET(runsvdir, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_RX(APPLET(rx, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_SCRIPT(APPLET(script, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_SCRIPTREPLAY(APPLET(scriptreplay, BB_DIR_BIN, BB_SUID_DROP)) -IF_SED(APPLET(sed, BB_DIR_BIN, BB_SUID_DROP)) IF_SELINUXENABLED(APPLET(selinuxenabled, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_SENDMAIL(APPLET(sendmail, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_SEQ(APPLET_NOFORK(seq, seq, BB_DIR_USR_BIN, BB_SUID_DROP, seq)) @@ -356,7 +343,6 @@ IF_BB_SYSCTL(APPLET(sysctl, BB_DIR_SBIN, BB_SUID_DROP)) IF_SYSLOGD(APPLET(syslogd, BB_DIR_SBIN, BB_SUID_DROP)) IF_TAC(APPLET_NOEXEC(tac, tac, BB_DIR_USR_BIN, BB_SUID_DROP, tac)) IF_TAIL(APPLET(tail, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_TAR(APPLET(tar, BB_DIR_BIN, BB_SUID_DROP)) IF_TASKSET(APPLET(taskset, BB_DIR_USR_BIN, BB_SUID_DROP)) /* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */ IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, tcpsvd)) @@ -385,14 +371,9 @@ IF_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP)) IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd)) IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP)) IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP)) -IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP)) IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand)) IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos)) -IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP)) -IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop)) -IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep)) IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP)) @@ -401,21 +382,17 @@ IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP)) /* Needs to be run by root or be suid root - needs to change uid and gid: */ IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP)) -/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */ -IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP)) IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP)) IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP)) IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami)) -IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat)) -IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz)) IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes)) -IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat)) IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP)) -#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) +#if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) \ + && !defined(MAKE_LINKS) && !defined(MAKE_SUID) }; #endif diff --git a/include/bb_archive.h b/include/bb_archive.h index a7a2a11..b82cfd8 100644 --- a/include/bb_archive.h +++ b/include/bb_archive.h @@ -122,6 +122,9 @@ typedef struct archive_handle_t { #define ARCHIVE_NUMERIC_OWNER (1 << 7) #define ARCHIVE_O_TRUNC (1 << 8) #define ARCHIVE_REMEMBER_NAMES (1 << 9) +#if ENABLE_RPM +#define ARCHIVE_REPLACE_VIA_RENAME (1 << 10) +#endif /* POSIX tar Header Block, from POSIX 1003.1-1990 */ diff --git a/include/bb_e2fs_defs.h b/include/bb_e2fs_defs.h index b400f8c..3f5e3c4 100644 --- a/include/bb_e2fs_defs.h +++ b/include/bb_e2fs_defs.h @@ -442,7 +442,7 @@ struct ext2_super_block { uint32_t s_reserved[162]; /* Padding to the end of the block */ }; struct BUG_ext2_super_block { - char bug[sizeof(struct ext2_super_block) == 1024 ? 1 : -1]; + char bug[sizeof(struct ext2_super_block) == 1024 ? 1 : -1]; }; /* diff --git a/include/libbb.h b/include/libbb.h index 18d3e29..c678d58 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -45,12 +45,12 @@ #include <stdarg.h> #include <stddef.h> #include <string.h> -/* There are two incompatible basename's, let not use them! */ +/* There are two incompatible basename's, let's not use them! */ /* See the dirname/basename man page for details */ #include <libgen.h> /* dirname,basename */ #undef basename #define basename dont_use_basename -#include <sys/poll.h> +#include <poll.h> #include <sys/ioctl.h> #include <sys/mman.h> #include <sys/socket.h> @@ -410,6 +410,7 @@ char *bb_get_last_path_component_nostrip(const char *path) FAST_FUNC; const char *bb_basename(const char *name) FAST_FUNC; /* NB: can violate const-ness (similarly to strchr) */ char *last_char_is(const char *s, int c) FAST_FUNC; +const char* endofname(const char *name) FAST_FUNC; void ndelay_on(int fd) FAST_FUNC; void ndelay_off(int fd) FAST_FUNC; @@ -484,6 +485,8 @@ void record_signo(int signo); /* not FAST_FUNC! */ void xsetgid(gid_t gid) FAST_FUNC; void xsetuid(uid_t uid) FAST_FUNC; +void xsetegid(gid_t egid) FAST_FUNC; +void xseteuid(uid_t euid) FAST_FUNC; void xchdir(const char *path) FAST_FUNC; void xchroot(const char *path) FAST_FUNC; void xsetenv(const char *key, const char *value) FAST_FUNC; @@ -492,11 +495,12 @@ void bb_unsetenv_and_free(char *key) FAST_FUNC; void xunlink(const char *pathname) FAST_FUNC; void xstat(const char *pathname, struct stat *buf) FAST_FUNC; void xfstat(int fd, struct stat *buf, const char *errmsg) FAST_FUNC; +int open3_or_warn(const char *pathname, int flags, int mode) FAST_FUNC; +int open_or_warn(const char *pathname, int flags) FAST_FUNC; +int xopen3(const char *pathname, int flags, int mode) FAST_FUNC; int xopen(const char *pathname, int flags) FAST_FUNC; int xopen_nonblocking(const char *pathname) FAST_FUNC; -int xopen3(const char *pathname, int flags, int mode) FAST_FUNC; -int open_or_warn(const char *pathname, int flags) FAST_FUNC; -int open3_or_warn(const char *pathname, int flags, int mode) FAST_FUNC; +int xopen_as_uid_gid(const char *pathname, int flags, uid_t u, gid_t g) FAST_FUNC; int open_or_warn_stdin(const char *pathname) FAST_FUNC; int xopen_stdin(const char *pathname) FAST_FUNC; void xrename(const char *oldpath, const char *newpath) FAST_FUNC; @@ -506,9 +510,9 @@ int xmkstemp(char *template) FAST_FUNC; off_t fdlength(int fd) FAST_FUNC; uoff_t FAST_FUNC get_volume_size_in_bytes(int fd, - const char *override, - unsigned override_units, - int extend); + const char *override, + unsigned override_units, + int extend); void xpipe(int filedes[2]) FAST_FUNC; /* In this form code with pipes is much more readable */ @@ -546,7 +550,8 @@ struct BUG_too_small { void parse_datestr(const char *date_str, struct tm *ptm) FAST_FUNC; time_t validate_tm_time(const char *date_str, struct tm *ptm) FAST_FUNC; - +char *strftime_HHMMSS(char *buf, unsigned len, time_t *tp) FAST_FUNC; +char *strftime_YYYYMMDDHHMMSS(char *buf, unsigned len, time_t *tp) FAST_FUNC; int xsocket(int domain, int type, int protocol) FAST_FUNC; void xbind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen) FAST_FUNC; @@ -700,6 +705,13 @@ const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str); * else it is printed as-is (except for ch = 0x9b) */ enum { PRINTABLE_META = 0x100 }; void fputc_printable(int ch, FILE *file) FAST_FUNC; +/* Return a string that is the printable representation of character ch. + * Buffer must hold at least four characters. */ +enum { + VISIBLE_ENDLINE = 1 << 0, + VISIBLE_SHOW_TABS = 1 << 1, +}; +void visible(unsigned ch, char *buf, int flags) FAST_FUNC; /* dmalloc will redefine these to it's own implementation. It is safe * to have the prototypes here unconditionally. */ @@ -830,8 +842,8 @@ char *itoa(int n) FAST_FUNC; char *utoa_to_buf(unsigned n, char *buf, unsigned buflen) FAST_FUNC; char *itoa_to_buf(int n, char *buf, unsigned buflen) FAST_FUNC; /* Intelligent formatters of bignums */ -void smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale) FAST_FUNC; -void smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) FAST_FUNC; +char *smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale) FAST_FUNC; +char *smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) FAST_FUNC; /* If block_size == 0, display size without fractional part, * else display (size * block_size) with one decimal digit. * If display_unit == 0, show value no bigger than 1024 with suffix (K,M,G...), @@ -854,6 +866,9 @@ struct suffix_mult { char suffix[4]; unsigned mult; }; +extern const struct suffix_mult bkm_suffixes[]; +#define km_suffixes (bkm_suffixes + 1) + #include "xatonum.h" /* Specialized: */ @@ -1131,9 +1146,6 @@ void bb_displayroutes(int noresolve, int netstatfmt) FAST_FUNC; /* Networking */ -int create_icmp_socket(void) FAST_FUNC; -int create_icmp6_socket(void) FAST_FUNC; -/* interface.c */ /* This structure defines protocol families and their handlers. */ struct aftype { const char *name; @@ -1162,6 +1174,7 @@ struct hwtype { }; extern smallint interface_opt_a; int display_interfaces(char *ifname) FAST_FUNC; +int in_ether(const char *bufp, struct sockaddr *sap) FAST_FUNC; #if ENABLE_FEATURE_HWIB int in_ib(const char *bufp, struct sockaddr *sap) FAST_FUNC; #else @@ -1311,8 +1324,10 @@ int sd_listen_fds(void); #define SETUP_ENV_CLEARENV (1 << 1) #define SETUP_ENV_TO_TMP (1 << 2) #define SETUP_ENV_NO_CHDIR (1 << 4) -extern void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC; -extern int correct_password(const struct passwd *pw) FAST_FUNC; +void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC; +void nuke_str(char *str) FAST_FUNC; +int ask_and_check_password_extended(const struct passwd *pw, int timeout, const char *prompt) FAST_FUNC; +int ask_and_check_password(const struct passwd *pw) FAST_FUNC; /* Returns a malloced string */ #if !ENABLE_USE_BB_CRYPT #define pw_encrypt(clear, salt, cleanup) pw_encrypt(clear, salt) @@ -1458,7 +1473,7 @@ void read_key_ungets(char *buffer, const char *str, unsigned len) FAST_FUNC; /* It's NOT just ENABLEd or disabled. It's a number: */ # if defined CONFIG_FEATURE_EDITING_HISTORY && CONFIG_FEATURE_EDITING_HISTORY > 0 # define MAX_HISTORY (CONFIG_FEATURE_EDITING_HISTORY + 0) -unsigned size_from_HISTFILESIZE(const char *hp); +unsigned size_from_HISTFILESIZE(const char *hp) FAST_FUNC; # else # define MAX_HISTORY 0 # endif @@ -1500,6 +1515,7 @@ line_input_t *new_line_input_t(int flags) FAST_FUNC; * >0 length of input string, including terminating '\n' */ int read_line_input(line_input_t *st, const char *prompt, char *command, int maxsize, int timeout) FAST_FUNC; +void show_history(const line_input_t *st) FAST_FUNC; # if ENABLE_FEATURE_EDITING_SAVE_ON_EXIT void save_history(line_input_t *st); # endif @@ -1783,6 +1799,11 @@ extern struct globals *const ptr_to_globals; (*(struct globals**)&ptr_to_globals) = (void*)(x); \ barrier(); \ } while (0) +#define FREE_PTR_TO_GLOBALS() do { \ + if (ENABLE_FEATURE_CLEAN_UP) { \ + free(ptr_to_globals); \ + } \ +} while (0) /* You can change LIBBB_DEFAULT_LOGIN_SHELL, but don't use it, * use bb_default_login_shell and following defines. @@ -1832,21 +1853,37 @@ extern const char bb_default_login_shell[] ALIGN1; # define VC_4 "/dev/ttyv3" # define VC_5 "/dev/ttyv4" # define VC_FORMAT "/dev/ttyv%d" -# define LOOP_FORMAT "/dev/loop%d" -# define LOOP_NAMESIZE (sizeof("/dev/loop") + sizeof(int)*3 + 1) -# define LOOP_NAME "/dev/loop" -# define FB_0 "/dev/fb0" - -#else //__GNU__ -/*Linux 2.6, normal names */ +#elif defined(__GNU__) # define CURRENT_VC CURRENT_TTY -# define VC_1 "/dev/tty0" -# define VC_2 "/dev/tty1" -# define VC_3 "/dev/tty2" -# define VC_4 "/dev/tty3" -# define VC_5 "/dev/tty4" +# define VC_1 "/dev/tty1" +# define VC_2 "/dev/tty2" +# define VC_3 "/dev/tty3" +# define VC_4 "/dev/tty4" +# define VC_5 "/dev/tty5" +# define VC_FORMAT "/dev/tty%d" +#elif ENABLE_FEATURE_DEVFS +/*Linux, obsolete devfs names */ +# define CURRENT_VC "/dev/vc/0" +# define VC_1 "/dev/vc/1" +# define VC_2 "/dev/vc/2" +# define VC_3 "/dev/vc/3" +# define VC_4 "/dev/vc/4" +# define VC_5 "/dev/vc/5" +# define VC_FORMAT "/dev/vc/%d" +# define LOOP_FORMAT "/dev/loop/%u" +# define LOOP_NAMESIZE (sizeof("/dev/loop/") + sizeof(int)*3 + 1) +# define LOOP_NAME "/dev/loop/" +# define FB_0 "/dev/fb/0" +#else +/*Linux, normal names */ +# define CURRENT_VC "/dev/tty0" +# define VC_1 "/dev/tty1" +# define VC_2 "/dev/tty2" +# define VC_3 "/dev/tty3" +# define VC_4 "/dev/tty4" +# define VC_5 "/dev/tty5" # define VC_FORMAT "/dev/tty%d" -# define LOOP_FORMAT "/dev/loop%d" +# define LOOP_FORMAT "/dev/loop%u" # define LOOP_NAMESIZE (sizeof("/dev/loop") + sizeof(int)*3 + 1) # define LOOP_NAME "/dev/loop" # define FB_0 "/dev/fb0" diff --git a/include/liblzo_interface.h b/include/liblzo_interface.h index 9a84c0b..b7f1b63 100644 --- a/include/liblzo_interface.h +++ b/include/liblzo_interface.h @@ -30,7 +30,7 @@ /* static void die_at(int line) { - bb_error_msg_and_die("internal error at %d", line); + bb_error_msg_and_die("internal error at %d", line); } #define assert(v) if (!(v)) die_at(__LINE__) */ diff --git a/include/platform.h b/include/platform.h index 8a5cde4..4a0560c 100644 --- a/include/platform.h +++ b/include/platform.h @@ -214,6 +214,7 @@ typedef int bb__aliased_int FIX_ALIASING; typedef long bb__aliased_long FIX_ALIASING; typedef uint16_t bb__aliased_uint16_t FIX_ALIASING; typedef uint32_t bb__aliased_uint32_t FIX_ALIASING; +typedef uint64_t bb__aliased_uint64_t FIX_ALIASING; /* NB: unaligned parameter should be a pointer, aligned one - * a lvalue. This makes it more likely to not swap them by mistake @@ -269,6 +270,12 @@ typedef unsigned smalluint; #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +#ifdef __UCLIBC__ +# define UCLIBC_VERSION KERNEL_VERSION(__UCLIBC_MAJOR__, __UCLIBC_MINOR__, __UCLIBC_SUBLEVEL__) +#else +# define UCLIBC_VERSION 0 +#endif + /* ---- Miscellaneous --------------------------------------- */ @@ -311,8 +318,9 @@ typedef unsigned smalluint; * for a mmu-less system. */ #if ENABLE_NOMMU || \ - (defined __UCLIBC__ && __UCLIBC_MAJOR__ >= 0 && __UCLIBC_MINOR__ >= 9 && \ - __UCLIBC_SUBLEVEL__ > 28 && !defined __ARCH_USE_MMU__) + (defined __UCLIBC__ && \ + UCLIBC_VERSION > KERNEL_VERSION(0, 9, 28) && \ + !defined __ARCH_USE_MMU__) # define BB_MMU 0 # define USE_FOR_NOMMU(...) __VA_ARGS__ # define USE_FOR_MMU(...) @@ -379,13 +387,8 @@ typedef unsigned smalluint; #define HAVE_NET_ETHERNET_H 1 #define HAVE_SYS_STATFS_H 1 -#if defined(__UCLIBC_MAJOR__) -# if __UCLIBC_MAJOR__ == 0 \ - && ( __UCLIBC_MINOR__ < 9 \ - || (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ < 32) \ - ) -# undef HAVE_STRVERSCMP -# endif +#if defined(__UCLIBC__) && UCLIBC_VERSION < KERNEL_VERSION(0, 9, 32) +# undef HAVE_STRVERSCMP #endif #if defined(__dietlibc__) @@ -437,7 +440,7 @@ typedef unsigned smalluint; # undef HAVE_UNLOCKED_LINE_OPS #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__APPLE__) # undef HAVE_STRCHRNUL #endif diff --git a/init/bootchartd.c b/init/bootchartd.c index 9fd6233..c7388c9 100644 --- a/init/bootchartd.c +++ b/init/bootchartd.c @@ -60,6 +60,12 @@ # endif #endif +#if !ENABLE_TAR && !ENABLE_WERROR +# warning Note: bootchartd requires tar command, but you did not select it. +#elif !ENABLE_FEATURE_SEAMLESS_GZ && !ENABLE_WERROR +# warning Note: bootchartd requires tar -z support, but you did not select it. +#endif + #define BC_VERSION_STR "0.8" /* For debugging, set to 0: diff --git a/init/init.c b/init/init.c index b84bdcc..d29328c 100644 --- a/init/init.c +++ b/init/init.c @@ -9,11 +9,6 @@ * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ -//applet:IF_INIT(APPLET(init, BB_DIR_SBIN, BB_SUID_DROP)) -//applet:IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc, init, BB_DIR_ROOT, BB_SUID_DROP, linuxrc)) - -//kbuild:lib-$(CONFIG_INIT) += init.o - //config:config INIT //config: bool "init" //config: default y @@ -108,6 +103,11 @@ //config: Note that on Linux, init attempts to detect serial terminal and //config: sets TERM to "vt102" if one is found. +//applet:IF_INIT(APPLET(init, BB_DIR_SBIN, BB_SUID_DROP)) +//applet:IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc, init, BB_DIR_ROOT, BB_SUID_DROP, linuxrc)) + +//kbuild:lib-$(CONFIG_INIT) += init.o + #define DEBUG_SEGV_HANDLER 0 #include "libbb.h" @@ -140,12 +140,11 @@ * not fully functional init by switching it on! */ #define DEBUG_INIT 0 -#define COMMAND_SIZE 256 #define CONSOLE_NAME_SIZE 32 /* Default sysinit script. */ #ifndef INIT_SCRIPT -#define INIT_SCRIPT "/etc/init.d/rcS" +# define INIT_SCRIPT "/etc/init.d/rcS" #endif /* Each type of actions can appear many times. They will be @@ -195,7 +194,7 @@ struct init_action { pid_t pid; uint8_t action_type; char terminal[CONSOLE_NAME_SIZE]; - char command[COMMAND_SIZE]; + char command[1]; }; static struct init_action *init_action_list = NULL; @@ -223,8 +222,8 @@ static void message(int where, const char *fmt, ...) msg[0] = '\r'; va_start(arguments, fmt); l = 1 + vsnprintf(msg + 1, sizeof(msg) - 2, fmt, arguments); - if (l > sizeof(msg) - 1) - l = sizeof(msg) - 1; + if (l > sizeof(msg) - 2) + l = sizeof(msg) - 2; va_end(arguments); #if ENABLE_FEATURE_INIT_SYSLOG @@ -398,7 +397,7 @@ static void reset_sighandlers_and_unblock_sigs(void) } /* Wrapper around exec: - * Takes string (max COMMAND_SIZE chars). + * Takes string. * If chars like '>' detected, execs '[-]/bin/sh -c "exec ......."'. * Otherwise splits words on whitespace, deals with leading dash, * and uses plain exec(). @@ -406,10 +405,15 @@ static void reset_sighandlers_and_unblock_sigs(void) */ static void init_exec(const char *command) { - char *cmd[COMMAND_SIZE / 2]; - char buf[COMMAND_SIZE + 6]; /* COMMAND_SIZE+strlen("exec ")+1 */ - int dash = (command[0] == '-' /* maybe? && command[1] == '/' */); - + /* +8 allows to write VLA sizes below more efficiently: */ + unsigned command_size = strlen(command) + 8; + /* strlen(command) + strlen("exec ")+1: */ + char buf[command_size]; + /* strlen(command) / 2 + 4: */ + char *cmd[command_size / 2]; + int dash; + + dash = (command[0] == '-' /* maybe? && command[1] == '/' */); command += dash; /* See if any special /bin/sh requiring characters are present */ @@ -626,21 +630,21 @@ static void new_init_action(uint8_t action_type, const char *command, const char nextp = &a->next; } - a = xzalloc(sizeof(*a)); + a = xzalloc(sizeof(*a) + strlen(command)); /* Append to the end of the list */ append: *nextp = a; a->action_type = action_type; - safe_strncpy(a->command, command, sizeof(a->command)); + strcpy(a->command, command); safe_strncpy(a->terminal, cons, sizeof(a->terminal)); - dbg_message(L_LOG | L_CONSOLE, "command='%s' action=%d tty='%s'\n", + dbg_message(L_LOG | L_CONSOLE, "command='%s' action=%x tty='%s'\n", a->command, a->action_type, a->terminal); } /* NOTE that if CONFIG_FEATURE_USE_INITTAB is NOT defined, * then parse_inittab() simply adds in some default - * actions(i.e., runs INIT_SCRIPT and then starts a pair + * actions (i.e., runs INIT_SCRIPT and then starts a pair * of "askfirst" shells). If CONFIG_FEATURE_USE_INITTAB * _is_ defined, but /etc/inittab is missing, this * results in the same set of default behaviors. @@ -655,23 +659,22 @@ static void parse_inittab(void) #endif { /* No inittab file - set up some default behavior */ - /* Reboot on Ctrl-Alt-Del */ - new_init_action(CTRLALTDEL, "reboot", ""); - /* Umount all filesystems on halt/reboot */ - new_init_action(SHUTDOWN, "umount -a -r", ""); - /* Swapoff on halt/reboot */ - if (ENABLE_SWAPONOFF) - new_init_action(SHUTDOWN, "swapoff -a", ""); - /* Prepare to restart init when a QUIT is received */ - new_init_action(RESTART, "init", ""); + /* Sysinit */ + new_init_action(SYSINIT, INIT_SCRIPT, ""); /* Askfirst shell on tty1-4 */ new_init_action(ASKFIRST, bb_default_login_shell, ""); //TODO: VC_1 instead of ""? "" is console -> ctty problems -> angry users new_init_action(ASKFIRST, bb_default_login_shell, VC_2); new_init_action(ASKFIRST, bb_default_login_shell, VC_3); new_init_action(ASKFIRST, bb_default_login_shell, VC_4); - /* sysinit */ - new_init_action(SYSINIT, INIT_SCRIPT, ""); + /* Reboot on Ctrl-Alt-Del */ + new_init_action(CTRLALTDEL, "reboot", ""); + /* Umount all filesystems on halt/reboot */ + new_init_action(SHUTDOWN, "umount -a -r", ""); + /* Swapoff on halt/reboot */ + new_init_action(SHUTDOWN, "swapoff -a", ""); + /* Restart init when a QUIT is received */ + new_init_action(RESTART, "init", ""); return; } @@ -786,7 +789,7 @@ static void run_shutdown_and_kill_processes(void) * and only one will be remembered and acted upon. */ -/* The SIGUSR[12]/SIGTERM handler */ +/* The SIGPWR/SIGUSR[12]/SIGTERM handler */ static void halt_reboot_pwoff(int sig) NORETURN; static void halt_reboot_pwoff(int sig) { @@ -931,10 +934,17 @@ static void reload_inittab(void) /* Remove stale entries and SYSINIT entries. * We never rerun SYSINIT entries anyway, - * removing them too saves a few bytes */ + * removing them too saves a few bytes + */ nextp = &init_action_list; while ((a = *nextp) != NULL) { - if ((a->action_type & ~SYSINIT) == 0) { + /* + * Why pid == 0 check? + * Process can be removed from inittab and added *later*. + * If we delete its entry but process still runs, + * duplicate is spawned when the entry is re-added. + */ + if ((a->action_type & ~SYSINIT) == 0 && a->pid == 0) { *nextp = a->next; free(a); } else { @@ -1058,10 +1068,13 @@ int init_main(int argc UNUSED_PARAM, char **argv) message(L_CONSOLE | L_LOG, "init started: %s", bb_banner); #endif +#if 0 +/* It's 2013, does anyone really still depend on this? */ +/* If you do, consider adding swapon to sysinot actions then! */ /* struct sysinfo is linux-specific */ -#ifdef __linux__ +# ifdef __linux__ /* Make sure there is enough memory to do something useful. */ - if (ENABLE_SWAPONOFF) { + /*if (ENABLE_SWAPONOFF) - WRONG: we may have non-bbox swapon*/ { struct sysinfo info; if (sysinfo(&info) == 0 @@ -1075,6 +1088,7 @@ int init_main(int argc UNUSED_PARAM, char **argv) run_actions(SYSINIT); /* wait and removing */ } } +# endif #endif /* Check if we are supposed to be in single user mode */ @@ -1089,8 +1103,8 @@ int init_main(int argc UNUSED_PARAM, char **argv) /* NOTE that if CONFIG_FEATURE_USE_INITTAB is NOT defined, * then parse_inittab() simply adds in some default - * actions(i.e., INIT_SCRIPT and a pair - * of "askfirst" shells */ + * actions (i.e., INIT_SCRIPT and a pair + * of "askfirst" shells) */ parse_inittab(); } @@ -1114,13 +1128,14 @@ int init_main(int argc UNUSED_PARAM, char **argv) strncpy(argv[0], "init", strlen(argv[0])); /* Wipe argv[1]-argv[N] so they don't clutter the ps listing */ while (*++argv) - memset(*argv, 0, strlen(*argv)); + nuke_str(*argv); /* Set up signal handlers */ if (!DEBUG_INIT) { struct sigaction sa; bb_signals(0 + + (1 << SIGPWR) /* halt */ + (1 << SIGUSR1) /* halt */ + (1 << SIGTERM) /* reboot */ + (1 << SIGUSR2) /* poweroff */ @@ -1216,7 +1231,14 @@ int init_main(int argc UNUSED_PARAM, char **argv) //usage:#define init_trivial_usage //usage: "" //usage:#define init_full_usage "\n\n" -//usage: "Init is the parent of all processes" +//usage: "Init is the first process started during boot. It never exits." +//usage: IF_FEATURE_USE_INITTAB( +//usage: "\n""It (re)spawns children according to /etc/inittab." +//usage: ) +//usage: IF_NOT_FEATURE_USE_INITTAB( +//usage: "\n""This version of init doesn't use /etc/inittab," +//usage: "\n""has fixed set of processed to run." +//usage: ) //usage: //usage:#define init_notes_usage //usage: "This version of init is designed to be run only by the kernel.\n" @@ -1234,9 +1256,6 @@ int init_main(int argc UNUSED_PARAM, char **argv) //usage: " ::shutdown:/sbin/swapoff -a\n" //usage: " ::shutdown:/bin/umount -a -r\n" //usage: " ::restart:/sbin/init\n" -//usage: "\n" -//usage: "if it detects that /dev/console is _not_ a serial console, it will also run:\n" -//usage: "\n" //usage: " tty2::askfirst:/bin/sh\n" //usage: " tty3::askfirst:/bin/sh\n" //usage: " tty4::askfirst:/bin/sh\n" @@ -1252,11 +1271,7 @@ int init_main(int argc UNUSED_PARAM, char **argv) //usage: " the specified process to run on. The contents of this field are\n" //usage: " appended to \"/dev/\" and used as-is. There is no need for this field to\n" //usage: " be unique, although if it isn't you may have strange results. If this\n" -//usage: " field is left blank, the controlling tty is set to the console. Also\n" -//usage: " note that if BusyBox detects that a serial console is in use, then only\n" -//usage: " entries whose controlling tty is either the serial console or /dev/null\n" -//usage: " will be run. BusyBox init does nothing with utmp. We don't need no\n" -//usage: " stinkin' utmp.\n" +//usage: " field is left blank, then the init's stdin/out will be used.\n" //usage: "\n" //usage: " <runlevels>:\n" //usage: "\n" diff --git a/libbb/Kbuild.src b/libbb/Kbuild.src index 61eec26..a6468f1 100644 --- a/libbb/Kbuild.src +++ b/libbb/Kbuild.src @@ -27,8 +27,6 @@ lib-y += concat_subpath_file.o lib-y += copy_file.o lib-y += copyfd.o lib-y += crc32.o -lib-y += create_icmp6_socket.o -lib-y += create_icmp_socket.o lib-y += default_error_retval.o lib-y += device_open.o lib-y += dump.o @@ -146,7 +144,7 @@ lib-$(CONFIG_DELUSER) += update_passwd.o lib-$(CONFIG_PASSWD) += pw_encrypt.o update_passwd.o obscure.o lib-$(CONFIG_CHPASSWD) += pw_encrypt.o update_passwd.o lib-$(CONFIG_CRYPTPW) += pw_encrypt.o -lib-$(CONFIG_SULOGIN) += pw_encrypt.o +lib-$(CONFIG_SULOGIN) += pw_encrypt.o correct_password.o lib-$(CONFIG_VLOCK) += pw_encrypt.o correct_password.o lib-$(CONFIG_SU) += pw_encrypt.o correct_password.o lib-$(CONFIG_LOGIN) += pw_encrypt.o correct_password.o diff --git a/libbb/appletlib.c b/libbb/appletlib.c index fc1847a..5e4f4a9 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c @@ -29,7 +29,7 @@ #include "busybox.h" #if !(defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) \ - || defined(__APPLE__) \ + || defined(__APPLE__) \ ) # include <malloc.h> /* for mallopt */ #endif @@ -750,7 +750,7 @@ void FAST_FUNC run_applet_no_and_exit(int applet_no, char **argv) //TODO: just compare applet_no with APPLET_NO_test if (!ENABLE_TEST || strcmp(applet_name, "test") != 0) { /* If you want "foo --help" to return 0: */ - /*xfunc_error_retval = 0;*/ + xfunc_error_retval = 0; bb_show_usage(); } } diff --git a/libbb/bb_askpass.c b/libbb/bb_askpass.c index fe2b506..77c1bcd 100644 --- a/libbb/bb_askpass.c +++ b/libbb/bb_askpass.c @@ -65,7 +65,9 @@ char* FAST_FUNC bb_ask(const int fd, int timeout, const char *prompt) i = 0; while (1) { int r = read(fd, &ret[i], 1); - if (r < 0) { + if ((i == 0 && r == 0) /* EOF (^D) with no password */ + || r < 0 + ) { /* read is interrupted by timeout or ^C */ ret = NULL; break; diff --git a/libbb/bb_pwd.c b/libbb/bb_pwd.c index 4829b72..8250cd4 100644 --- a/libbb/bb_pwd.c +++ b/libbb/bb_pwd.c @@ -110,3 +110,51 @@ unsigned long FAST_FUNC get_ug_id(const char *s, return xname2id(s); return r; } + +/* Experimental "mallocing" API. + * The goal is nice: "we want to support a case when "guests" group is very large" + * but the code is butt-ugly. + */ +#if 0 +static char *find_latest(char last, char *cp) +{ + if (!cp) + return last; + cp += strlen(cp) + 1; + if (last < cp) + last = cp; + return last; +} + +struct group* FAST_FUNC xmalloc_getgrnam(const char *name) +{ + struct { + struct group gr; + // May still be not enough! + char buf[64*1024 - sizeof(struct group) - 16]; + } *s; + struct group *grp; + int r; + char *last; + char **gr_mem; + + s = xmalloc(sizeof(*s)); + r = getgrnam_r(name, &s->gr, s->buf, sizeof(s->buf), &grp); + if (!grp) { + free(s); + return grp; + } + last = find_latest(s->buf, grp->gr_name); + last = find_latest(last, grp->gr_passwd); + gr_mem = grp->gr_mem; + while (*gr_mem) + last = find_latest(last, *gr_mem++); + gr_mem++; /* points past NULL */ + if (last < (char*)gr_mem) + last = (char*)gr_mem; +//FIXME: what if we get not only truncated, but also moved here? +// grp->gr_name pointer and friends are invalid now!!! + s = xrealloc(s, last - (char*)s); + return grp; +} +#endif diff --git a/libbb/correct_password.c b/libbb/correct_password.c index 7cabd33..acadf39 100644 --- a/libbb/correct_password.c +++ b/libbb/correct_password.c @@ -31,12 +31,15 @@ #include "libbb.h" /* Ask the user for a password. + * Return 1 without asking if PW has an empty password. + * Return -1 on EOF, error while reading input, or timeout. * Return 1 if the user gives the correct password for entry PW, - * 0 if not. Return 1 without asking if PW has an empty password. + * 0 if not. * - * NULL pw means "just fake it for login with bad username" */ - -int FAST_FUNC correct_password(const struct passwd *pw) + * NULL pw means "just fake it for login with bad username" + */ +int FAST_FUNC ask_and_check_password_extended(const struct passwd *pw, + int timeout, const char *prompt) { char *unencrypted, *encrypted; const char *correct; @@ -65,13 +68,19 @@ int FAST_FUNC correct_password(const struct passwd *pw) return 1; fake_it: - unencrypted = bb_ask_stdin("Password: "); + unencrypted = bb_ask(STDIN_FILENO, timeout, prompt); if (!unencrypted) { - return 0; + /* EOF (such as ^D) or error (such as ^C) or timeout */ + return -1; } encrypted = pw_encrypt(unencrypted, correct, 1); r = (strcmp(encrypted, correct) == 0); free(encrypted); - memset(unencrypted, 0, strlen(unencrypted)); + nuke_str(unencrypted); return r; } + +int FAST_FUNC ask_and_check_password(const struct passwd *pw) +{ + return ask_and_check_password_extended(pw, 0, "Password: "); +} diff --git a/libbb/create_icmp6_socket.c b/libbb/create_icmp6_socket.c deleted file mode 100644 index bdee7a0..0000000 --- a/libbb/create_icmp6_socket.c +++ b/dev/null @@ -1,38 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Utility routines. - * - * create raw socket for icmp (IPv6 version) protocol - * and drop root privileges if running setuid - * - * Licensed under GPLv2, see file LICENSE in this source tree. - */ - -#include "libbb.h" - -#if ENABLE_FEATURE_IPV6 -int FAST_FUNC create_icmp6_socket(void) -{ - int sock; -#if 0 - struct protoent *proto; - proto = getprotobyname("ipv6-icmp"); - /* if getprotobyname failed, just silently force - * proto->p_proto to have the correct value for "ipv6-icmp" */ - sock = socket(AF_INET6, SOCK_RAW, - (proto ? proto->p_proto : IPPROTO_ICMPV6)); -#else - sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6); -#endif - if (sock < 0) { - if (errno == EPERM) - bb_error_msg_and_die("%s", bb_msg_perm_denied_are_you_root); - bb_perror_msg_and_die("%s", bb_msg_can_not_create_raw_socket); - } - - /* drop root privs if running setuid */ - xsetuid(getuid()); - - return sock; -} -#endif diff --git a/libbb/create_icmp_socket.c b/libbb/create_icmp_socket.c deleted file mode 100644 index 65eea3b..0000000 --- a/libbb/create_icmp_socket.c +++ b/dev/null @@ -1,36 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * Utility routines. - * - * create raw socket for icmp protocol - * and drop root privileges if running setuid - * - * Licensed under GPLv2, see file LICENSE in this source tree. - */ - -#include "libbb.h" - -int FAST_FUNC create_icmp_socket(void) -{ - int sock; -#if 0 - struct protoent *proto; - proto = getprotobyname("icmp"); - /* if getprotobyname failed, just silently force - * proto->p_proto to have the correct value for "icmp" */ - sock = socket(AF_INET, SOCK_RAW, - (proto ? proto->p_proto : 1)); /* 1 == ICMP */ -#else - sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */ -#endif - if (sock < 0) { - if (errno == EPERM) - bb_error_msg_and_die("%s", bb_msg_perm_denied_are_you_root); - bb_perror_msg_and_die("%s", bb_msg_can_not_create_raw_socket); - } - - /* drop root privs if running setuid */ - xsetuid(getuid()); - - return sock; -} diff --git a/libbb/dump.c b/libbb/dump.c index 91efe41..b465c5d 100644 --- a/libbb/dump.c +++ b/libbb/dump.c @@ -333,7 +333,7 @@ static void do_skip(priv_dumper_t *dumper, const char *fname, int statok) return; } } - if (fseek(stdin, dumper->pub.dump_skip, SEEK_SET)) { + if (fseeko(stdin, dumper->pub.dump_skip, SEEK_SET)) { bb_simple_perror_msg_and_die(fname); } dumper->address += dumper->pub.dump_skip; diff --git a/libbb/endofname.c b/libbb/endofname.c new file mode 100644 index 0000000..305f093 --- a/dev/null +++ b/libbb/endofname.c @@ -0,0 +1,26 @@ +/* + * Utility routines. + * + * Copyright (C) 2013 Denys Vlasenko + * + * Licensed under GPLv2, see file LICENSE in this source tree. + */ + +//kbuild:lib-y += endofname.o + +#include "libbb.h" + +#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c))) +#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c))) + +const char* FAST_FUNC +endofname(const char *name) +{ + if (!is_name(*name)) + return name; + while (*++name) { + if (!is_in_name(*name)) + break; + } + return name; +} diff --git a/libbb/fclose_nonstdin.c b/libbb/fclose_nonstdin.c index 5ce9d5b..1b14413 100644 --- a/libbb/fclose_nonstdin.c +++ b/libbb/fclose_nonstdin.c @@ -18,7 +18,8 @@ int FAST_FUNC fclose_if_not_stdin(FILE *f) { /* Some more paranoid applets want ferror() check too */ int r = ferror(f); /* NB: does NOT set errno! */ - if (r) errno = EIO; /* so we'll help it */ + if (r) + errno = EIO; /* so we'll help it */ if (f != stdin) return (r | fclose(f)); /* fclose does set errno on error */ return r; diff --git a/libbb/hash_md5_sha.c b/libbb/hash_md5_sha.c index b4d955e..3f743ac 100644 --- a/libbb/hash_md5_sha.c +++ b/libbb/hash_md5_sha.c @@ -84,7 +84,7 @@ static void FAST_FUNC common64_end(md5_ctx_t *ctx, int swap_needed) if (swap_needed) t = bb_bswap_64(t); /* wbuffer is suitably aligned for this */ - *(uint64_t *) (&ctx->wbuffer[64 - 8]) = t; + *(bb__aliased_uint64_t *) (&ctx->wbuffer[64 - 8]) = t; } ctx->process_block(ctx); if (remaining >= 8) @@ -883,10 +883,10 @@ void FAST_FUNC sha512_end(sha512_ctx_t *ctx, void *resbuf) uint64_t t; t = ctx->total64[0] << 3; t = SWAP_BE64(t); - *(uint64_t *) (&ctx->wbuffer[128 - 8]) = t; + *(bb__aliased_uint64_t *) (&ctx->wbuffer[128 - 8]) = t; t = (ctx->total64[1] << 3) | (ctx->total64[0] >> 61); t = SWAP_BE64(t); - *(uint64_t *) (&ctx->wbuffer[128 - 16]) = t; + *(bb__aliased_uint64_t *) (&ctx->wbuffer[128 - 16]) = t; } sha512_process_block128(ctx); if (remaining >= 16) diff --git a/libbb/human_readable.c b/libbb/human_readable.c index 8b22b0c..0b2eb77 100644 --- a/libbb/human_readable.c +++ b/libbb/human_readable.c @@ -94,7 +94,7 @@ const char* FAST_FUNC make_human_readable_str(unsigned long long val, /* Convert unsigned long long value into compact 5-char representation. * String is not terminated (buf[5] is untouched) */ -void FAST_FUNC smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) +char* FAST_FUNC smart_ulltoa5(unsigned long long ul, char buf[5], const char *scale) { const char *fmt; char c; @@ -145,12 +145,13 @@ void FAST_FUNC smart_ulltoa5(unsigned long long ul, char buf[5], const char *sca buf[3] = "0123456789"[v]; buf[4] = scale[idx]; /* typically scale = " kmgt..." */ } + return buf + 5; } /* Convert unsigned long long value into compact 4-char * representation. Examples: "1234", "1.2k", " 27M", "123T" * String is not terminated (buf[4] is untouched) */ -void FAST_FUNC smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale) +char* FAST_FUNC smart_ulltoa4(unsigned long long ul, char buf[4], const char *scale) { const char *fmt; char c; @@ -194,4 +195,5 @@ void FAST_FUNC smart_ulltoa4(unsigned long long ul, char buf[4], const char *sca buf[2] = "0123456789"[v]; buf[3] = scale[idx]; /* typically scale = " kmgt..." */ } + return buf + 4; } diff --git a/libbb/in_ether.c b/libbb/in_ether.c new file mode 100644 index 0000000..1de383b --- a/dev/null +++ b/libbb/in_ether.c @@ -0,0 +1,59 @@ +/* vi: set sw=4 ts=4: */ +/* + * Utility routines. + */ + +//kbuild:lib-$(CONFIG_ARP) += in_ether.o +//kbuild:lib-$(CONFIG_IFCONFIG) += in_ether.o +//kbuild:lib-$(CONFIG_IFENSLAVE) += in_ether.o + +#include "libbb.h" +#include <net/if_arp.h> +#include <net/ethernet.h> + +/* Convert Ethernet address from "XX[:]XX[:]XX[:]XX[:]XX[:]XX" to sockaddr. + * Return nonzero on error. + */ +int FAST_FUNC in_ether(const char *bufp, struct sockaddr *sap) +{ + char *ptr; + int i, j; + unsigned char val; + unsigned char c; + + sap->sa_family = ARPHRD_ETHER; + ptr = (char *) sap->sa_data; + + i = ETH_ALEN; + goto first; + do { + /* We might get a semicolon here */ + if (*bufp == ':') + bufp++; + first: + j = val = 0; + do { + c = *bufp; + if (((unsigned char)(c - '0')) <= 9) { + c -= '0'; + } else if ((unsigned char)((c|0x20) - 'a') <= 5) { + c = (unsigned char)((c|0x20) - 'a') + 10; + } else { + if (j && (c == ':' || c == '\0')) + /* One-digit byte: __:X:__ */ + break; + return -1; + } + ++bufp; + val <<= 4; + val += c; + j ^= 1; + } while (j); + + *ptr++ = val; + + } while (--i); + + /* Error if we aren't at end of string */ + return *bufp; +} diff --git a/libbb/inet_common.c b/libbb/inet_common.c index 0f4fca1..b3e0802 100644 --- a/libbb/inet_common.c +++ b/libbb/inet_common.c @@ -175,8 +175,7 @@ int FAST_FUNC INET6_resolve(const char *name, struct sockaddr_in6 *sin6) return -1; } memcpy(sin6, ai->ai_addr, sizeof(*sin6)); - if (ai) - freeaddrinfo(ai); + freeaddrinfo(ai); return 0; } diff --git a/libbb/lineedit.c b/libbb/lineedit.c index 0da625f..2fd5a9a 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c @@ -38,6 +38,14 @@ * and the \] escape to signal the end of such a sequence. Example: * * PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] ' + * + * Unicode in PS1 is not fully supported: prompt length calulation is wrong, + * resulting in line wrap problems with long (multi-line) input. + * + * Multi-line PS1 (e.g. PS1="\n[\w]\n$ ") has problems with history + * browsing: up/down arrows result in scrolling. + * It stems from simplistic "cmdedit_y = cmdedit_prmt_len / cmdedit_termw" + * calculation of how many lines the prompt takes. */ #include "libbb.h" #include "unicode.h" @@ -133,9 +141,6 @@ struct lineedit_statics { CHAR_T *command_ps; const char *cmdedit_prompt; -#if ENABLE_FEATURE_EDITING_FANCY_PROMPT - int num_ok_lines; /* = 1; */ -#endif #if ENABLE_USERNAME_OR_HOMEDIR char *user_buf; @@ -172,7 +177,6 @@ extern struct lineedit_statics *const lineedit_ptr_to_statics; #define command_len (S.command_len ) #define command_ps (S.command_ps ) #define cmdedit_prompt (S.cmdedit_prompt ) -#define num_ok_lines (S.num_ok_lines ) #define user_buf (S.user_buf ) #define home_pwd_buf (S.home_pwd_buf ) #define matches (S.matches ) @@ -185,8 +189,8 @@ extern struct lineedit_statics *const lineedit_ptr_to_statics; (*(struct lineedit_statics**)&lineedit_ptr_to_statics) = xzalloc(sizeof(S)); \ barrier(); \ cmdedit_termw = 80; \ - IF_FEATURE_EDITING_FANCY_PROMPT(num_ok_lines = 1;) \ IF_USERNAME_OR_HOMEDIR(home_pwd_buf = (char*)null_str;) \ + IF_FEATURE_EDITING_VI(delptr = delbuf;) \ } while (0) static void deinit_S(void) @@ -1251,14 +1255,16 @@ line_input_t* FAST_FUNC new_line_input_t(int flags) { line_input_t *n = xzalloc(sizeof(*n)); n->flags = flags; +#if MAX_HISTORY > 0 n->max_history = MAX_HISTORY; +#endif return n; } #if MAX_HISTORY > 0 -unsigned size_from_HISTFILESIZE(const char *hp) +unsigned FAST_FUNC size_from_HISTFILESIZE(const char *hp) { int size = MAX_HISTORY; if (hp) { @@ -1313,6 +1319,17 @@ static int get_next_history(void) return 0; } +/* Lists command history. Used by shell 'history' builtins */ +void FAST_FUNC show_history(const line_input_t *st) +{ + int i; + + if (!st) + return; + for (i = 0; i < st->cnt_history; i++) + printf("%4d %s\n", i, st->history[i]); +} + # if ENABLE_FEATURE_EDITING_SAVEHISTORY /* We try to ensure that concurrent additions to the history * do not overwrite each other. @@ -1532,7 +1549,6 @@ static void remember_in_history(char *str) # if ENABLE_FEATURE_EDITING_SAVEHISTORY && !ENABLE_FEATURE_EDITING_SAVE_ON_EXIT save_history(str); # endif - IF_FEATURE_EDITING_FANCY_PROMPT(num_ok_lines++;) } #else /* MAX_HISTORY == 0 */ @@ -1754,43 +1770,84 @@ static void ask_terminal(void) #define ask_terminal() ((void)0) #endif +/* Called just once at read_line_input() init time */ #if !ENABLE_FEATURE_EDITING_FANCY_PROMPT static void parse_and_put_prompt(const char *prmt_ptr) { + const char *p; cmdedit_prompt = prmt_ptr; - cmdedit_prmt_len = strlen(prmt_ptr); + p = strrchr(prmt_ptr, '\n'); + cmdedit_prmt_len = unicode_strwidth(p ? p+1 : prmt_ptr); put_prompt(); } #else static void parse_and_put_prompt(const char *prmt_ptr) { - int prmt_len = 0; - size_t cur_prmt_len = 0; - char flg_not_length = '['; + int prmt_size = 0; char *prmt_mem_ptr = xzalloc(1); - char *cwd_buf = xrealloc_getcwd_or_warn(NULL); +# if ENABLE_USERNAME_OR_HOMEDIR + char *cwd_buf = NULL; +# endif + char flg_not_length = '['; char cbuf[2]; - char c; - char *pbuf; - - cmdedit_prmt_len = 0; - if (!cwd_buf) { - cwd_buf = (char *)bb_msg_unknown; - } + /*cmdedit_prmt_len = 0; - already is */ cbuf[1] = '\0'; /* never changes */ while (*prmt_ptr) { + char timebuf[sizeof("HH:MM:SS")]; char *free_me = NULL; + char *pbuf; + char c; pbuf = cbuf; c = *prmt_ptr++; if (c == '\\') { - const char *cp = prmt_ptr; + const char *cp; int l; - - c = bb_process_escape_sequence(&prmt_ptr); +/* + * Supported via bb_process_escape_sequence: + * \a ASCII bell character (07) + * \e ASCII escape character (033) + * \n newline + * \r carriage return + * \\ backslash + * \nnn char with octal code nnn + * Supported: + * \$ if the effective UID is 0, a #, otherwise a $ + * \w current working directory, with $HOME abbreviated with a tilde + * Note: we do not support $PROMPT_DIRTRIM=n feature + * \W basename of the current working directory, with $HOME abbreviated with a tilde + * \h hostname up to the first '.' + * \H hostname + * \u username + * \[ begin a sequence of non-printing characters + * \] end a sequence of non-printing characters + * \T current time in 12-hour HH:MM:SS format + * \@ current time in 12-hour am/pm format + * \A current time in 24-hour HH:MM format + * \t current time in 24-hour HH:MM:SS format + * (all of the above work as \A) + * Not supported: + * \! history number of this command + * \# command number of this command + * \j number of jobs currently managed by the shell + * \l basename of the shell's terminal device name + * \s name of the shell, the basename of $0 (the portion following the final slash) + * \V release of bash, version + patch level (e.g., 2.00.0) + * \d date in "Weekday Month Date" format (e.g., "Tue May 26") + * \D{format} + * format is passed to strftime(3). + * An empty format results in a locale-specific time representation. + * The braces are required. + * Mishandled by bb_process_escape_sequence: + * \v version of bash (e.g., 2.00) + */ + cp = prmt_ptr; + c = *cp; + if (c != 't') /* don't treat \t as tab */ + c = bb_process_escape_sequence(&prmt_ptr); if (prmt_ptr == cp) { if (*cp == '\0') break; @@ -1802,39 +1859,54 @@ static void parse_and_put_prompt(const char *prmt_ptr) pbuf = user_buf ? user_buf : (char*)""; break; # endif + case 'H': case 'h': pbuf = free_me = safe_gethostname(); - *strchrnul(pbuf, '.') = '\0'; + if (c == 'h') + strchrnul(pbuf, '.')[0] = '\0'; break; case '$': c = (geteuid() == 0 ? '#' : '$'); break; + case 'T': /* 12-hour HH:MM:SS format */ + case '@': /* 12-hour am/pm format */ + case 'A': /* 24-hour HH:MM format */ + case 't': /* 24-hour HH:MM:SS format */ + /* We show all of them as 24-hour HH:MM */ + strftime_HHMMSS(timebuf, sizeof(timebuf), NULL)[-3] = '\0'; + pbuf = timebuf; + break; # if ENABLE_USERNAME_OR_HOMEDIR - case 'w': - /* /home/user[/something] -> ~[/something] */ - pbuf = cwd_buf; - l = strlen(home_pwd_buf); - if (l != 0 - && strncmp(home_pwd_buf, cwd_buf, l) == 0 - && (cwd_buf[l]=='/' || cwd_buf[l]=='\0') - && strlen(cwd_buf + l) < PATH_MAX - ) { - pbuf = free_me = xasprintf("~%s", cwd_buf + l); + case 'w': /* current dir */ + case 'W': /* basename of cur dir */ + if (!cwd_buf) { + cwd_buf = xrealloc_getcwd_or_warn(NULL); + if (!cwd_buf) + cwd_buf = (char *)bb_msg_unknown; + else { + /* /home/user[/something] -> ~[/something] */ + l = strlen(home_pwd_buf); + if (l != 0 + && strncmp(home_pwd_buf, cwd_buf, l) == 0 + && (cwd_buf[l] == '/' || cwd_buf[l] == '\0') + ) { + cwd_buf[0] = '~'; + overlapping_strcpy(cwd_buf + 1, cwd_buf + l); + } + } } - break; -# endif - case 'W': pbuf = cwd_buf; + if (c == 'w') + break; cp = strrchr(pbuf, '/'); - if (cp != NULL && cp != pbuf) - pbuf += (cp-pbuf) + 1; - break; - case '!': - pbuf = free_me = xasprintf("%d", num_ok_lines); - break; - case 'e': case 'E': /* \e \E = \033 */ - c = '\033'; + if (cp) + pbuf = (char*)cp + 1; break; +# endif +// bb_process_escape_sequence does this now: +// case 'e': case 'E': /* \e \E = \033 */ +// c = '\033'; +// break; case 'x': case 'X': { char buf2[4]; for (l = 0; l < 3;) { @@ -1856,7 +1928,8 @@ static void parse_and_put_prompt(const char *prmt_ptr) } case '[': case ']': if (c == flg_not_length) { - flg_not_length = (flg_not_length == '[' ? ']' : '['); + /* Toggle '['/']' hex 5b/5d */ + flg_not_length ^= 6; continue; } break; @@ -1864,16 +1937,29 @@ static void parse_and_put_prompt(const char *prmt_ptr) } /* if */ } /* if */ cbuf[0] = c; - cur_prmt_len = strlen(pbuf); - prmt_len += cur_prmt_len; - if (flg_not_length != ']') - cmdedit_prmt_len += cur_prmt_len; - prmt_mem_ptr = strcat(xrealloc(prmt_mem_ptr, prmt_len+1), pbuf); + { + int n = strlen(pbuf); + prmt_size += n; + if (c == '\n') + cmdedit_prmt_len = 0; + else if (flg_not_length != ']') { +#if 0 /*ENABLE_UNICODE_SUPPORT*/ +/* Won't work, pbuf is one BYTE string here instead of an one Unicode char string. */ +/* FIXME */ + cmdedit_prmt_len += unicode_strwidth(pbuf); +#else + cmdedit_prmt_len += n; +#endif + } + } + prmt_mem_ptr = strcat(xrealloc(prmt_mem_ptr, prmt_size+1), pbuf); free(free_me); } /* while */ +# if ENABLE_USERNAME_OR_HOMEDIR if (cwd_buf != (char *)bb_msg_unknown) free(cwd_buf); +# endif cmdedit_prompt = prmt_mem_ptr; put_prompt(); } @@ -1935,7 +2021,15 @@ static int lineedit_read_key(char *read_key_buffer, int timeout) S.sent_ESC_br6n = 0; if (cursor == 0) { /* otherwise it may be bogus */ int col = ((ic >> 32) & 0x7fff) - 1; - if (col > (int) cmdedit_prmt_len) { + /* + * Is col > cmdedit_prmt_len? + * If yes (terminal says cursor is farther to the right + * of where we think it should be), + * the prompt wasn't printed starting at col 1, + * there was additional text before it. + */ + if ((int)(col - cmdedit_prmt_len) > 0) { + /* Fix our understanding of current x position */ cmdedit_x += (col - cmdedit_prmt_len); while (cmdedit_x >= cmdedit_termw) { cmdedit_x -= cmdedit_termw; @@ -2026,6 +2120,7 @@ static int32_t reverse_i_search(void) char read_key_buffer[KEYCODE_BUFFER_SIZE]; const char *matched_history_line; const char *saved_prompt; + unsigned saved_prmt_len; int32_t ic; matched_history_line = NULL; @@ -2034,6 +2129,7 @@ static int32_t reverse_i_search(void) /* Save and replace the prompt */ saved_prompt = cmdedit_prompt; + saved_prmt_len = cmdedit_prmt_len; goto set_prompt; while (1) { @@ -2109,7 +2205,7 @@ static int32_t reverse_i_search(void) free((char*)cmdedit_prompt); set_prompt: cmdedit_prompt = xasprintf("(reverse-i-search)'%s': ", match_buf); - cmdedit_prmt_len = strlen(cmdedit_prompt); + cmdedit_prmt_len = unicode_strwidth(cmdedit_prompt); goto do_redraw; } } @@ -2131,7 +2227,7 @@ static int32_t reverse_i_search(void) free((char*)cmdedit_prompt); cmdedit_prompt = saved_prompt; - cmdedit_prmt_len = strlen(cmdedit_prompt); + cmdedit_prmt_len = saved_prmt_len; redraw(cmdedit_y, command_len - cursor); return ic; @@ -2699,8 +2795,9 @@ int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *comman free(command_ps); #endif - if (command_len > 0) + if (command_len > 0) { remember_in_history(command); + } if (break_out > 0) { command[command_len++] = '\n'; diff --git a/libbb/login.c b/libbb/login.c index 8a82c6a..8f080b7 100644 --- a/libbb/login.c +++ b/libbb/login.c @@ -16,7 +16,6 @@ #define LOGIN " login: " static const char fmtstr_d[] ALIGN1 = "%A, %d %B %Y"; -static const char fmtstr_t[] ALIGN1 = "%H:%M:%S"; void FAST_FUNC print_login_issue(const char *issue_file, const char *tty) { @@ -73,7 +72,7 @@ void FAST_FUNC print_login_issue(const char *issue_file, const char *tty) strftime(buf, sizeof(buf), fmtstr_d, localtime(&t)); break; case 't': - strftime(buf, sizeof(buf), fmtstr_t, localtime(&t)); + strftime_HHMMSS(buf, sizeof(buf), &t); break; case 'l': outbuf = tty; diff --git a/libbb/nuke_str.c b/libbb/nuke_str.c new file mode 100644 index 0000000..56b808b --- a/dev/null +++ b/libbb/nuke_str.c @@ -0,0 +1,21 @@ +/* vi: set sw=4 ts=4: */ +/* + * Utility routines. + * + * Copyright (C) 2008 Denys Vlasenko + * + * Licensed under GPLv2, see file LICENSE in this source tree. + */ + +//kbuild:lib-y += nuke_str.o + +#include "libbb.h" + +void FAST_FUNC nuke_str(char *str) +{ + if (str) { + while (*str) + *str++ = 0; + /* or: memset(str, 0, strlen(str)); - not as small as above */ + } +} diff --git a/libbb/platform.c b/libbb/platform.c index 2bf34f5..1973451 100644 --- a/libbb/platform.c +++ b/libbb/platform.c @@ -28,14 +28,16 @@ int FAST_FUNC vasprintf(char **string_ptr, const char *format, va_list p) r = vsnprintf(buf, 128, format, p); va_end(p); + /* Note: can't use xstrdup/xmalloc, they call vasprintf (us) on failure! */ + if (r < 128) { va_end(p2); - *string_ptr = xstrdup(buf); - return r; + *string_ptr = strdup(buf); + return (*string_ptr ? r : -1); } - *string_ptr = xmalloc(r+1); - r = vsnprintf(*string_ptr, r+1, format, p2); + *string_ptr = malloc(r+1); + r = (*string_ptr ? vsnprintf(*string_ptr, r+1, format, p2) : -1); va_end(p2); return r; diff --git a/libbb/printable.c b/libbb/printable.c index f6ada49..9a42343 100644 --- a/libbb/printable.c +++ b/libbb/printable.c @@ -32,3 +32,27 @@ void FAST_FUNC fputc_printable(int ch, FILE *file) } fputc(ch, file); } + +void FAST_FUNC visible(unsigned ch, char *buf, int flags) +{ + if (ch == '\t' && !(flags & VISIBLE_SHOW_TABS)) { + goto raw; + } + if (ch == '\n') { + if (flags & VISIBLE_ENDLINE) + *buf++ = '$'; + } else { + if (ch >= 128) { + ch -= 128; + *buf++ = 'M'; + *buf++ = '-'; + } + if (ch < 32 || ch == 127) { + *buf++ = '^'; + ch ^= 0x40; + } + } + raw: + *buf++ = ch; + *buf = '\0'; +} diff --git a/libbb/pw_encrypt_md5.c b/libbb/pw_encrypt_md5.c index 889e09c..1e52eca 100644 --- a/libbb/pw_encrypt_md5.c +++ b/libbb/pw_encrypt_md5.c @@ -86,7 +86,7 @@ md5_crypt(char result[MD5_OUT_BUFSIZE], const unsigned char *pw, const unsigned /* Get the length of the salt including "$1$" */ sl = 3; - while (salt[sl] && salt[sl] != '$' && sl < (3 + 8)) + while (sl < (3 + 8) && salt[sl] && salt[sl] != '$') sl++; /* Hash. the password first, since that is what is most unknown */ diff --git a/libbb/time.c b/libbb/time.c index 3778a2d..4a5b306 100644 --- a/libbb/time.c +++ b/libbb/time.c @@ -23,14 +23,16 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm) if (sscanf(date_str, "%u:%u%c", &ptm->tm_hour, &ptm->tm_min, - &end) >= 2) { + &end) >= 2 + ) { /* no adjustments needed */ } else /* mm.dd-HH:MM */ if (sscanf(date_str, "%u.%u-%u:%u%c", &ptm->tm_mon, &ptm->tm_mday, &ptm->tm_hour, &ptm->tm_min, - &end) >= 4) { + &end) >= 4 + ) { /* Adjust month from 1-12 to 0-11 */ ptm->tm_mon -= 1; } else @@ -38,15 +40,13 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm) if (sscanf(date_str, "%u.%u.%u-%u:%u%c", &ptm->tm_year, &ptm->tm_mon, &ptm->tm_mday, &ptm->tm_hour, &ptm->tm_min, - &end) >= 5) { - ptm->tm_year -= 1900; /* Adjust years */ - ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */ - } else + &end) >= 5 /* yyyy-mm-dd HH:MM */ - if (sscanf(date_str, "%u-%u-%u %u:%u%c", &ptm->tm_year, + || sscanf(date_str, "%u-%u-%u %u:%u%c", &ptm->tm_year, &ptm->tm_mon, &ptm->tm_mday, &ptm->tm_hour, &ptm->tm_min, - &end) >= 5) { + &end) >= 5 + ) { ptm->tm_year -= 1900; /* Adjust years */ ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */ } else @@ -58,7 +58,6 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm) return; /* don't fall through to end == ":" check */ } else #endif -//TODO: coreutils 6.9 also accepts "yyyy-mm-dd HH" (no minutes) { bb_error_msg_and_die(bb_msg_invalid_date, date_str); } @@ -68,7 +67,21 @@ void FAST_FUNC parse_datestr(const char *date_str, struct tm *ptm) end = '\0'; /* else end != NUL and we error out */ } - } else if (date_str[0] == '@') { + } else + /* yyyy-mm-dd HH */ + if (sscanf(date_str, "%u-%u-%u %u%c", &ptm->tm_year, + &ptm->tm_mon, &ptm->tm_mday, + &ptm->tm_hour, + &end) >= 4 + /* yyyy-mm-dd */ + || sscanf(date_str, "%u-%u-%u%c", &ptm->tm_year, + &ptm->tm_mon, &ptm->tm_mday, + &end) >= 3 + ) { + ptm->tm_year -= 1900; /* Adjust years */ + ptm->tm_mon -= 1; /* Adjust month from 1-12 to 0-11 */ + } else + if (date_str[0] == '@') { time_t t = bb_strtol(date_str + 1, NULL, 10); if (!errno) { struct tm *lt = localtime(&t); @@ -187,6 +200,27 @@ time_t FAST_FUNC validate_tm_time(const char *date_str, struct tm *ptm) return t; } +static char* strftime_fmt(char *buf, unsigned len, time_t *tp, const char *fmt) +{ + time_t t; + if (!tp) { + tp = &t; + time(tp); + } + /* Returns pointer to NUL */ + return buf + strftime(buf, len, fmt, localtime(tp)); +} + +char* FAST_FUNC strftime_HHMMSS(char *buf, unsigned len, time_t *tp) +{ + return strftime_fmt(buf, len, tp, "%H:%M:%S"); +} + +char* FAST_FUNC strftime_YYYYMMDDHHMMSS(char *buf, unsigned len, time_t *tp) +{ + return strftime_fmt(buf, len, tp, "%Y-%m-%d %H:%M:%S"); +} + #if ENABLE_MONOTONIC_SYSCALL #include <sys/syscall.h> diff --git a/libbb/unicode.c b/libbb/unicode.c index 96eb646..6bdb666 100644 --- a/libbb/unicode.c +++ b/libbb/unicode.c @@ -34,19 +34,37 @@ void FAST_FUNC reinit_unicode(const char *LANG) static const char unicode_0x394[] = { 0xce, 0x94, 0 }; size_t width; + /* We pass "" instead of "C" because some libc's have + * non-ASCII default locale for setlocale("") call + * (this allows users of such libc to have Unicoded + * system without having to mess with env). + * + * We set LC_CTYPE because (a) we may be called with $LC_CTYPE + * value in LANG, not with $LC_ALL, (b) internationalized + * LC_NUMERIC and LC_TIME are more PITA than benefit + * (for one, some utilities have hard time with comma + * used as a fractional separator). + */ //TODO: avoid repeated calls by caching last string? - setlocale(LC_ALL, (LANG && LANG[0]) ? LANG : "C"); + setlocale(LC_CTYPE, LANG ? LANG : ""); /* In unicode, this is a one character string */ -// can use unicode_strlen(string) too, but otherwise unicode_strlen() is unused - width = mbstowcs(NULL, unicode_0x394, INT_MAX); + width = unicode_strlen(unicode_0x394); unicode_status = (width == 1 ? UNICODE_ON : UNICODE_OFF); } void FAST_FUNC init_unicode(VOID) { - if (unicode_status == UNICODE_UNKNOWN) - reinit_unicode(getenv("LANG")); + /* Some people set only $LC_CTYPE, not $LC_ALL, because they want + * only Unicode to be activated on their system, not the whole + * shebang of wrong decimal points, strange date formats and so on. + */ + if (unicode_status == UNICODE_UNKNOWN) { + char *s = getenv("LC_ALL"); + if (!s) s = getenv("LC_CTYPE"); + if (!s) s = getenv("LANG"); + reinit_unicode(s); + } } #else @@ -64,8 +82,12 @@ void FAST_FUNC reinit_unicode(const char *LANG) void FAST_FUNC init_unicode(VOID) { - if (unicode_status == UNICODE_UNKNOWN) - reinit_unicode(getenv("LANG")); + if (unicode_status == UNICODE_UNKNOWN) { + char *s = getenv("LC_ALL"); + if (!s) s = getenv("LC_CTYPE"); + if (!s) s = getenv("LANG"); + reinit_unicode(s); + } } # endif @@ -971,7 +993,6 @@ int FAST_FUNC unicode_bidi_is_neutral_wchar(wint_t wc) /* The rest is mostly same for libc and for "homegrown" support */ -#if 0 // UNUSED size_t FAST_FUNC unicode_strlen(const char *string) { size_t width = mbstowcs(NULL, string, INT_MAX); @@ -979,7 +1000,6 @@ size_t FAST_FUNC unicode_strlen(const char *string) return strlen(string); return width; } -#endif size_t FAST_FUNC unicode_strwidth(const char *string) { diff --git a/libbb/xatonum.c b/libbb/xatonum.c index 62bbe53..6f4e023 100644 --- a/libbb/xatonum.c +++ b/libbb/xatonum.c @@ -68,3 +68,10 @@ uint16_t FAST_FUNC xatou16(const char *numstr) { return xatou_range(numstr, 0, 0xffff); } + +const struct suffix_mult bkm_suffixes[] = { + { "b", 512 }, + { "k", 1024 }, + { "m", 1024*1024 }, + { "", 0 } +}; diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index 29c963f..7a9581d 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c @@ -140,15 +140,6 @@ int FAST_FUNC xopen(const char *pathname, int flags) return xopen3(pathname, flags, 0666); } -/* Die if we can't open an existing file readonly with O_NONBLOCK - * and return the fd. - * Note that for ioctl O_RDONLY is sufficient. - */ -int FAST_FUNC xopen_nonblocking(const char *pathname) -{ - return xopen(pathname, O_RDONLY | O_NONBLOCK); -} - // Warn if we can't open a file and return a fd. int FAST_FUNC open3_or_warn(const char *pathname, int flags, int mode) { @@ -167,6 +158,32 @@ int FAST_FUNC open_or_warn(const char *pathname, int flags) return open3_or_warn(pathname, flags, 0666); } +/* Die if we can't open an existing file readonly with O_NONBLOCK + * and return the fd. + * Note that for ioctl O_RDONLY is sufficient. + */ +int FAST_FUNC xopen_nonblocking(const char *pathname) +{ + return xopen(pathname, O_RDONLY | O_NONBLOCK); +} + +int FAST_FUNC xopen_as_uid_gid(const char *pathname, int flags, uid_t u, gid_t g) +{ + int fd; + uid_t old_euid = geteuid(); + gid_t old_egid = getegid(); + + xsetegid(g); + xseteuid(u); + + fd = xopen(pathname, flags); + + xseteuid(old_euid); + xsetegid(old_egid); + + return fd; +} + void FAST_FUNC xunlink(const char *pathname) { if (unlink(pathname)) @@ -351,6 +368,16 @@ void FAST_FUNC xsetuid(uid_t uid) if (setuid(uid)) bb_perror_msg_and_die("setuid"); } +void FAST_FUNC xsetegid(gid_t egid) +{ + if (setegid(egid)) bb_perror_msg_and_die("setegid"); +} + +void FAST_FUNC xseteuid(uid_t euid) +{ + if (seteuid(euid)) bb_perror_msg_and_die("seteuid"); +} + // Die if we can't chdir to a new path. void FAST_FUNC xchdir(const char *path) { @@ -541,13 +568,11 @@ int FAST_FUNC bb_xioctl(int fd, unsigned request, void *argp) char* FAST_FUNC xmalloc_ttyname(int fd) { - char *buf = xzalloc(128); - int r = ttyname_r(fd, buf, 127); - if (r) { - free(buf); - buf = NULL; - } - return buf; + char buf[128]; + int r = ttyname_r(fd, buf, sizeof(buf) - 1); + if (r) + return NULL; + return xstrdup(buf); } void FAST_FUNC generate_uuid(uint8_t *buf) diff --git a/libbb/xreadlink.c b/libbb/xreadlink.c index ec95af2..bb63da0 100644 --- a/libbb/xreadlink.c +++ b/libbb/xreadlink.c @@ -8,6 +8,12 @@ #include "libbb.h" +/* some systems (eg Hurd) does not have MAXSYMLINKS definition, + * set it to some reasonable value if it isn't defined */ +#ifndef MAXSYMLINKS +# define MAXSYMLINKS 20 +#endif + /* * NOTE: This function returns a malloced char* that you will have to free * yourself. @@ -102,7 +108,8 @@ char* FAST_FUNC xmalloc_readlink_or_warn(const char *path) char* FAST_FUNC xmalloc_realpath(const char *path) { -#if defined(__GLIBC__) && !defined(__UCLIBC__) +#if defined(__GLIBC__) || \ + (defined(__UCLIBC__) && UCLIBC_VERSION >= KERNEL_VERSION(0, 9, 31)) /* glibc provides a non-standard extension */ /* new: POSIX.1-2008 specifies this behavior as well */ return realpath(path, NULL); diff --git a/loginutils/adduser.c b/loginutils/adduser.c index 5dd2de1..79b9501 100644 --- a/loginutils/adduser.c +++ b/loginutils/adduser.c @@ -162,9 +162,9 @@ int adduser_main(int argc UNUSED_PARAM, char **argv) pw.pw_shell = (char *)get_shell_name(); pw.pw_dir = NULL; - /* at most two non-option args */ + /* at least one and at most two non-option args */ /* disable interactive passwd for system accounts */ - opt_complementary = "?2:SD:u+"; + opt_complementary = "-1:?2:SD:u+"; if (sizeof(pw.pw_uid) == sizeof(int)) { opts = getopt32(argv, "h:g:s:G:DSHu:", &pw.pw_dir, &pw.pw_gecos, &pw.pw_shell, &usegroup, &pw.pw_uid); } else { diff --git a/loginutils/cryptpw.c b/loginutils/cryptpw.c index a36f920..29f0fbe 100644 --- a/loginutils/cryptpw.c +++ b/loginutils/cryptpw.c @@ -92,6 +92,7 @@ int cryptpw_main(int argc UNUSED_PARAM, char **argv) { char salt[MAX_PW_SALT_LEN]; char *salt_ptr; + char *password; const char *opt_m, *opt_S; int fd; @@ -123,15 +124,19 @@ int cryptpw_main(int argc UNUSED_PARAM, char **argv) xmove_fd(fd, STDIN_FILENO); - puts(pw_encrypt( - argv[0] ? argv[0] : ( - /* Only mkpasswd, and only from tty, prompts. - * Otherwise it is a plain read. */ - (isatty(STDIN_FILENO) && applet_name[0] == 'm') + password = argv[0]; + if (!password) { + /* Only mkpasswd, and only from tty, prompts. + * Otherwise it is a plain read. */ + password = (isatty(STDIN_FILENO) && applet_name[0] == 'm') ? bb_ask_stdin("Password: ") : xmalloc_fgetline(stdin) - ), - salt, 1)); + ; + /* may still be NULL on EOF/error */ + } + + if (password) + puts(pw_encrypt(password, salt, 1)); return EXIT_SUCCESS; } diff --git a/loginutils/getty.c b/loginutils/getty.c index e5d13be..0f060ae 100644 --- a/loginutils/getty.c +++ b/loginutils/getty.c @@ -695,6 +695,6 @@ int getty_main(int argc UNUSED_PARAM, char **argv) /* We use PATH because we trust that root doesn't set "bad" PATH, * and getty is not suid-root applet */ /* With -n, logname == NULL, and login will ask for username instead */ - BB_EXECLP(G.login, G.login, "--", logname, NULL); + BB_EXECLP(G.login, G.login, "--", logname, (char *)0); bb_error_msg_and_die("can't execute '%s'", G.login); } diff --git a/loginutils/login.c b/loginutils/login.c index 6ec8dc4..a4b19cc 100644 --- a/loginutils/login.c +++ b/loginutils/login.c @@ -420,7 +420,7 @@ int login_main(int argc UNUSED_PARAM, char **argv) * Note that reads (in no-echo mode) trash tty attributes. * If we get interrupted by SIGALRM, we need to restore attrs. */ - if (correct_password(pw)) + if (ask_and_check_password(pw) > 0) break; #endif /* ENABLE_PAM */ auth_failed: diff --git a/loginutils/passwd.c b/loginutils/passwd.c index a7006f0..1509089 100644 --- a/loginutils/passwd.c +++ b/loginutils/passwd.c @@ -17,11 +17,6 @@ #include <syslog.h> #include <sys/resource.h> /* setrlimit */ -static void nuke_str(char *str) -{ - if (str) memset(str, 0, strlen(str)); -} - static char* new_password(const struct passwd *pw, uid_t myuid, const char *algo) { char salt[MAX_PW_SALT_LEN]; diff --git a/loginutils/su.c b/loginutils/su.c index 2ec05e1..c51f26f 100644 --- a/loginutils/su.c +++ b/loginutils/su.c @@ -93,7 +93,7 @@ int su_main(int argc UNUSED_PARAM, char **argv) pw = xgetpwnam(opt_username); - if (cur_uid == 0 || correct_password(pw)) { + if (cur_uid == 0 || ask_and_check_password(pw) > 0) { if (ENABLE_FEATURE_SU_SYSLOG) syslog(LOG_NOTICE, "%c %s %s:%s", '+', tty, old_user, opt_username); diff --git a/loginutils/sulogin.c b/loginutils/sulogin.c index bd2b09e..2a29099 100644 --- a/loginutils/sulogin.c +++ b/loginutils/sulogin.c @@ -14,24 +14,12 @@ #include "libbb.h" #include <syslog.h> -//static void catchalarm(int UNUSED_PARAM junk) -//{ -// exit(EXIT_FAILURE); -//} - - int sulogin_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int sulogin_main(int argc UNUSED_PARAM, char **argv) { - char *cp; int timeout = 0; struct passwd *pwd; const char *shell; -#if ENABLE_FEATURE_SHADOWPASSWDS - /* Using _r function to avoid pulling in static buffers */ - char buffer[256]; - struct spwd spw; -#endif logmode = LOGMODE_BOTH; openlog(applet_name, 0, LOG_AUTH); @@ -62,43 +50,24 @@ int sulogin_main(int argc UNUSED_PARAM, char **argv) goto auth_error; } -#if ENABLE_FEATURE_SHADOWPASSWDS - { - /* getspnam_r may return 0 yet set result to NULL. - * At least glibc 2.4 does this. Be extra paranoid here. */ - struct spwd *result = NULL; - int r = getspnam_r(pwd->pw_name, &spw, buffer, sizeof(buffer), &result); - if (r || !result) { - goto auth_error; - } - pwd->pw_passwd = result->sp_pwdp; - } -#endif - while (1) { - char *encrypted; int r; - /* cp points to a static buffer that is zeroed every time */ - cp = bb_ask(STDIN_FILENO, timeout, - "Give root password for system maintenance\n" - "(or type Control-D for normal startup):"); - - if (!cp || !*cp) { + r = ask_and_check_password_extended(pwd, timeout, + "Give root password for system maintenance\n" + "(or type Control-D for normal startup):" + ); + if (r < 0) { + /* ^D, ^C, timeout, or read error */ bb_info_msg("Normal startup"); return 0; } - encrypted = pw_encrypt(cp, pwd->pw_passwd, 1); - r = strcmp(encrypted, pwd->pw_passwd); - free(encrypted); - if (r == 0) { + if (r > 0) { break; } bb_do_delay(LOGIN_FAIL_DELAY); bb_info_msg("Login incorrect"); } - memset(cp, 0, strlen(cp)); -// signal(SIGALRM, SIG_DFL); bb_info_msg("System Maintenance Mode"); diff --git a/loginutils/vlock.c b/loginutils/vlock.c index 75af939..44b14e6 100644 --- a/loginutils/vlock.c +++ b/loginutils/vlock.c @@ -104,7 +104,7 @@ int vlock_main(int argc UNUSED_PARAM, char **argv) /* "s" if -a, else "": */ "s" + !option_mask32, pw->pw_name ); - if (correct_password(pw)) { + if (ask_and_check_password(pw) > 0) { break; } bb_do_delay(LOGIN_FAIL_DELAY); diff --git a/mailutils/sendmail.c b/mailutils/sendmail.c index c426e9d..b5aa1d1 100644 --- a/mailutils/sendmail.c +++ b/mailutils/sendmail.c @@ -92,25 +92,73 @@ static int smtp_check(const char *fmt, int code) // strip argument of bad chars static char *sane_address(char *str) { - char *s = str; - char *p = s; + char *s; + + trim(str); + s = str; while (*s) { - if (isalnum(*s) || '_' == *s || '-' == *s || '.' == *s || '@' == *s) { - *p++ = *s; + if (!isalnum(*s) && !strchr("_-.@", *s)) { + bb_error_msg("bad address '%s'", str); + /* returning "": */ + str[0] = '\0'; + return str; } s++; } - *p = '\0'; return str; } +// check for an address inside angle brackets, if not found fall back to normal +static char *angle_address(char *str) +{ + char *s, *e; + + trim(str); + e = last_char_is(str, '>'); + if (e) { + s = strrchr(str, '<'); + if (s) { + *e = '\0'; + str = s + 1; + } + } + return sane_address(str); +} + static void rcptto(const char *s) { + if (!*s) + return; // N.B. we don't die if recipient is rejected, for the other recipients may be accepted if (250 != smtp_checkp("RCPT TO:<%s>", s, -1)) bb_error_msg("Bad recipient: <%s>", s); } +// send to a list of comma separated addresses +static void rcptto_list(const char *list) +{ + char *str = xstrdup(list); + char *s = str; + char prev = 0; + int in_quote = 0; + + while (*s) { + char ch = *s++; + + if (ch == '"' && prev != '\\') { + in_quote = !in_quote; + } else if (!in_quote && ch == ',') { + s[-1] = '\0'; + rcptto(angle_address(str)); + str = s; + } + prev = ch; + } + if (prev != ',') + rcptto(angle_address(str)); + free(str); +} + int sendmail_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int sendmail_main(int argc UNUSED_PARAM, char **argv) { @@ -121,6 +169,13 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv) char *host = sane_address(safe_gethostname()); unsigned nheaders = 0; int code; + enum { + HDR_OTHER = 0, + HDR_TOCC, + HDR_BCC, + } last_hdr = 0; + int check_hdr; + int has_to = 0; enum { //--- standard options @@ -282,23 +337,36 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv) // analyze headers // To: or Cc: headers add recipients + check_hdr = (0 == strncasecmp("To:", s, 3)); + has_to |= check_hdr; if (opts & OPT_t) { - if (0 == strncasecmp("To:", s, 3) || 0 == strncasecmp("Bcc:" + 1, s, 3)) { - rcptto(sane_address(s+3)); + if (check_hdr || 0 == strncasecmp("Bcc:" + 1, s, 3)) { + rcptto_list(s+3); + last_hdr = HDR_TOCC; goto addheader; } // Bcc: header adds blind copy (hidden) recipient if (0 == strncasecmp("Bcc:", s, 4)) { - rcptto(sane_address(s+4)); + rcptto_list(s+4); free(s); + last_hdr = HDR_BCC; continue; // N.B. Bcc: vanishes from headers! } } - if (strchr(s, ':') || (list && isspace(s[0]))) { + check_hdr = (list && isspace(s[0])); + if (strchr(s, ':') || check_hdr) { // other headers go verbatim // N.B. RFC2822 2.2.3 "Long Header Fields" allows for headers to occupy several lines. // Continuation is denoted by prefixing additional lines with whitespace(s). // Thanks (stefan.seyfried at googlemail.com) for pointing this out. + if (check_hdr && last_hdr != HDR_OTHER) { + rcptto_list(s+1); + if (last_hdr == HDR_BCC) + continue; + // N.B. Bcc: vanishes from headers! + } else { + last_hdr = HDR_OTHER; + } addheader: // N.B. we allow MAX_HEADERS generic headers at most to prevent attacks if (MAX_HEADERS && ++nheaders >= MAX_HEADERS) @@ -309,12 +377,27 @@ int sendmail_main(int argc UNUSED_PARAM, char **argv) // so stop "analyze headers" mode reenter: // put recipients specified on cmdline + check_hdr = 1; while (*argv) { char *t = sane_address(*argv); rcptto(t); //if (MAX_HEADERS && ++nheaders >= MAX_HEADERS) // goto bail; - llist_add_to_end(&list, xasprintf("To: %s", t)); + if (!has_to) { + const char *hdr; + + if (check_hdr && argv[1]) + hdr = "To: %s,"; + else if (check_hdr) + hdr = "To: %s"; + else if (argv[1]) + hdr = "To: %s," + 3; + else + hdr = "To: %s" + 3; + llist_add_to_end(&list, + xasprintf(hdr, t)); + check_hdr = 0; + } argv++; } // enter "put message" mode diff --git a/miscutils/Config.src b/miscutils/Config.src index b9fc196..1da9800 100644 --- a/miscutils/Config.src +++ b/miscutils/Config.src @@ -503,18 +503,6 @@ config READAHEAD As readahead(2) blocks until each file has been read, it is best to run this applet as a background job. -config RFKILL - bool "rfkill" - default n # doesn't build on Ubuntu 9.04 - select PLATFORM_LINUX - help - Enable/disable wireless devices. - - rfkill list : list all wireless devices - rfkill list bluetooth : list all bluetooth devices - rfkill list 1 : list device corresponding to the given index - rfkill block|unblock wlan : block/unblock all wlan(wifi) devices - config RUNLEVEL bool "runlevel" default y @@ -591,13 +579,6 @@ config VOLNAME help Prints a CD-ROM volume name. -config WALL - bool "wall" - default y - depends on FEATURE_UTMP - help - Write a message to all users that are logged in. - config WATCHDOG bool "watchdog" default y diff --git a/miscutils/Kbuild.src b/miscutils/Kbuild.src index 8c49864..9e164f1 100644 --- a/miscutils/Kbuild.src +++ b/miscutils/Kbuild.src @@ -36,7 +36,6 @@ lib-$(CONFIG_MOUNTPOINT) += mountpoint.o lib-$(CONFIG_MT) += mt.o lib-$(CONFIG_RAIDAUTORUN) += raidautorun.o lib-$(CONFIG_READAHEAD) += readahead.o -lib-$(CONFIG_RFKILL) += rfkill.o lib-$(CONFIG_RUNLEVEL) += runlevel.o lib-$(CONFIG_RX) += rx.o lib-$(CONFIG_SETSID) += setsid.o @@ -46,5 +45,4 @@ lib-$(CONFIG_TIME) += time.o lib-$(CONFIG_TIMEOUT) += timeout.o lib-$(CONFIG_TTYSIZE) += ttysize.o lib-$(CONFIG_VOLNAME) += volname.o -lib-$(CONFIG_WALL) += wall.o lib-$(CONFIG_WATCHDOG) += watchdog.o diff --git a/miscutils/chat.c b/miscutils/chat.c index ce994f8..bd2abc2 100644 --- a/miscutils/chat.c +++ b/miscutils/chat.c @@ -296,7 +296,7 @@ int chat_main(int argc UNUSED_PARAM, char **argv) full_write(record_fd, buf+buf_len, 1); } // dump device input if ECHO ON - if (echo > 0) { + if (echo) { // if (buf[buf_len] < ' ') { // full_write(STDERR_FILENO, "^", 1); // buf[buf_len] += '@'; diff --git a/miscutils/chrt.c b/miscutils/chrt.c index 91b5397..f2f559f 100644 --- a/miscutils/chrt.c +++ b/miscutils/chrt.c @@ -23,9 +23,6 @@ #include <sched.h> #include "libbb.h" -#ifndef _POSIX_PRIORITY_SCHEDULING -#warning your system may be foobared -#endif static const struct { int policy; diff --git a/miscutils/crontab.c b/miscutils/crontab.c index 49d1da7..94659bd 100644 --- a/miscutils/crontab.c +++ b/miscutils/crontab.c @@ -55,28 +55,6 @@ static void edit_file(const struct passwd *pas, const char *file) bb_perror_msg_and_die("can't execute '%s'", ptr); } -static int open_as_user(const struct passwd *pas, const char *file) -{ - pid_t pid; - char c; - - pid = xvfork(); - if (pid) { /* PARENT */ - if (wait4pid(pid) == 0) { - /* exitcode 0: child says it can read */ - return open(file, O_RDONLY); - } - return -1; - } - - /* CHILD */ - /* initgroups, setgid, setuid */ - change_identity(pas); - /* We just try to read one byte. If it works, file is readable - * under this user. We signal that by exiting with 0. */ - _exit(safe_read(xopen(file, O_RDONLY), &c, 1) < 0); -} - int crontab_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int crontab_main(int argc UNUSED_PARAM, char **argv) { @@ -137,10 +115,7 @@ int crontab_main(int argc UNUSED_PARAM, char **argv) if (!argv[0]) bb_show_usage(); if (NOT_LONE_DASH(argv[0])) { - src_fd = open_as_user(pas, argv[0]); - if (src_fd < 0) - bb_error_msg_and_die("user %s cannot read %s", - pas->pw_name, argv[0]); + src_fd = xopen_as_uid_gid(argv[0], O_RDONLY, pas->pw_uid, pas->pw_gid); } } diff --git a/miscutils/devfsd.c b/miscutils/devfsd.c index 24c953b..96ffe07 100644 --- a/miscutils/devfsd.c +++ b/miscutils/devfsd.c @@ -1083,21 +1083,23 @@ static int get_uid_gid(int flag, const char *string) { struct passwd *pw_ent; struct group *grp_ent; - static const char *msg; + const char *msg; - if (ENABLE_DEVFSD_VERBOSE) - msg = "user"; - - if (isdigit(string[0]) ||((string[0] == '-') && isdigit(string[1]))) + if (isdigit(string[0]) || ((string[0] == '-') && isdigit(string[1]))) return atoi(string); if (flag == UID && (pw_ent = getpwnam(string)) != NULL) return pw_ent->pw_uid; - if (flag == GID && (grp_ent = getgrnam(string)) != NULL) - return grp_ent->gr_gid; - else if (ENABLE_DEVFSD_VERBOSE) - msg = "group"; + if (ENABLE_DEVFSD_VERBOSE) + msg = "user"; + + if (flag == GID) { + if ((grp_ent = getgrnam(string)) != NULL) + return grp_ent->gr_gid; + if (ENABLE_DEVFSD_VERBOSE) + msg = "group"; + } if (ENABLE_DEVFSD_VERBOSE) msg_logger(LOG_ERR, "unknown %s: %s, defaulting to %cid=0", msg, string, msg[0]); diff --git a/miscutils/flash_eraseall.c b/miscutils/flash_eraseall.c index 0598371..bf9b739 100644 --- a/miscutils/flash_eraseall.c +++ b/miscutils/flash_eraseall.c @@ -11,10 +11,11 @@ */ //usage:#define flash_eraseall_trivial_usage -//usage: "[-jq] MTD_DEVICE" +//usage: "[-jNq] MTD_DEVICE" //usage:#define flash_eraseall_full_usage "\n\n" //usage: "Erase an MTD device\n" //usage: "\n -j Format the device for jffs2" +//usage: "\n -N Don't skip bad blocks" //usage: "\n -q Don't display progress messages" #include "libbb.h" @@ -22,9 +23,9 @@ #include <linux/jffs2.h> #define OPTION_J (1 << 0) -#define OPTION_Q (1 << 1) -#define IS_NAND (1 << 2) -#define BBTEST (1 << 3) +#define OPTION_N (1 << 1) +#define OPTION_Q (1 << 2) +#define IS_NAND (1 << 3) /* mtd/jffs2-user.h used to have this atrocity: extern int target_endian; @@ -71,7 +72,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv) char *mtd_name; opt_complementary = "=1"; - flags = BBTEST | getopt32(argv, "jq"); + flags = getopt32(argv, "jNq"); mtd_name = argv[optind]; fd = xopen(mtd_name, O_RDWR); @@ -139,7 +140,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv) for (erase.start = 0; erase.start < meminfo.size; erase.start += meminfo.erasesize) { - if (flags & BBTEST) { + if (!(flags & OPTION_N)) { int ret; loff_t offset = erase.start; @@ -154,7 +155,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv) * types e.g. NOR */ if (errno == EOPNOTSUPP) { - flags &= ~BBTEST; + flags |= OPTION_N; if (flags & IS_NAND) bb_error_msg_and_die("bad block check not available"); } else { diff --git a/miscutils/flashcp.c b/miscutils/flashcp.c index 1704479..a834a7f 100644 --- a/miscutils/flashcp.c +++ b/miscutils/flashcp.c @@ -16,6 +16,7 @@ #include "libbb.h" #include <mtd/mtd-user.h> +/* If 1, simulates "flashing" by writing to existing regular file */ #define MTD_DEBUG 0 #define OPT_v (1 << 0) @@ -32,7 +33,7 @@ static void progress(int mode, uoff_t count, uoff_t total) if (total) percent = (unsigned) (percent / total); printf("\r%s: %"OFF_FMT"u/%"OFF_FMT"u (%u%%) ", - (mode == 0) ? "Erasing block" : ((mode == 1) ? "Writing kb" : "Verifying kb"), + (mode < 0) ? "Erasing block" : ((mode == 0) ? "Writing kb" : "Verifying kb"), count, total, (unsigned)percent); fflush_all(); } @@ -97,8 +98,7 @@ int flashcp_main(int argc UNUSED_PARAM, char **argv) #endif e.start = 0; for (i = 1; i <= erase_count; i++) { - progress(0, i, erase_count); - errno = 0; + progress(-1, i, erase_count); #if !MTD_DEBUG if (ioctl(fd_d, MEMERASE, &e) < 0) { bb_perror_msg_and_die("erase error at 0x%llx on %s", @@ -113,7 +113,7 @@ int flashcp_main(int argc UNUSED_PARAM, char **argv) /* doing this outer loop gives significantly smaller code * than doing two separate loops for writing and verifying */ - for (i = 1; i <= 2; i++) { + for (i = 0; i <= 1; i++) { uoff_t done; unsigned count; @@ -122,25 +122,29 @@ int flashcp_main(int argc UNUSED_PARAM, char **argv) done = 0; count = BUFSIZE; while (1) { - uoff_t rem = statb.st_size - done; + uoff_t rem; + + progress(i, done / 1024, (uoff_t)statb.st_size / 1024); + rem = statb.st_size - done; if (rem == 0) break; if (rem < BUFSIZE) count = rem; - progress(i, done / 1024, (uoff_t)statb.st_size / 1024); xread(fd_f, buf, count); - if (i == 1) { + if (i == 0) { int ret; + if (count < BUFSIZE) + memset((char*)buf + count, 0, BUFSIZE - count); errno = 0; - ret = full_write(fd_d, buf, count); - if (ret != (int) count) { + ret = full_write(fd_d, buf, BUFSIZE); + if (ret != BUFSIZE) { bb_perror_msg_and_die("write error at 0x%"OFF_FMT"x on %s, " "write returned %d", done, devicename, ret); } - } else { /* i == 2 */ + } else { /* i == 1 */ xread(fd_d, buf2, count); - if (memcmp(buf, buf2, count)) { + if (memcmp(buf, buf2, count) != 0) { bb_error_msg_and_die("verification mismatch at 0x%"OFF_FMT"x", done); } } diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c index 69726ae..f0e9c9d 100644 --- a/miscutils/hdparm.c +++ b/miscutils/hdparm.c @@ -465,14 +465,14 @@ static void on_off(int value) static void print_flag_on_off(int get_arg, const char *s, unsigned long arg) { if (get_arg) { - printf(" setting %s to %ld", s, arg); + printf(" setting %s to %lu", s, arg); on_off(arg); } } static void print_value_on_off(const char *str, unsigned long argp) { - printf(" %s\t= %2ld", str, argp); + printf(" %s\t= %2lu", str, argp); on_off(argp != 0); } @@ -1509,7 +1509,7 @@ static void bus_state_value(unsigned value) else if (value == BUSSTATE_TRISTATE) printf(" (tristate)\n"); else - printf(" (unknown: %d)\n", value); + printf(" (unknown: %u)\n", value); } #endif @@ -1589,7 +1589,7 @@ static void interpret_xfermode(unsigned xfermode) static void print_flag(int flag, const char *s, unsigned long value) { if (flag) - printf(" setting %s to %ld\n", s, value); + printf(" setting %s to %lu\n", s, value); } static void process_dev(char *devname) diff --git a/miscutils/less.c b/miscutils/less.c index 622969f..599e65c 100644 --- a/miscutils/less.c +++ b/miscutils/less.c @@ -1608,6 +1608,9 @@ static void sigwinch_handler(int sig UNUSED_PARAM) int less_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int less_main(int argc, char **argv) { + char *tty_name; + int tty_fd; + INIT_G(); /* TODO: -x: do not interpret backspace, -xx: tab also */ @@ -1637,10 +1640,28 @@ int less_main(int argc, char **argv) if (option_mask32 & FLAG_TILDE) empty_line_marker = ""; - kbd_fd = open(CURRENT_TTY, O_RDONLY); - if (kbd_fd < 0) - return bb_cat(argv); - ndelay_on(kbd_fd); + /* Some versions of less can survive w/o controlling tty, + * try to do the same. This also allows to specify an alternative + * tty via "less 1<>TTY". + * We don't try to use STDOUT_FILENO directly, + * since we want to set this fd to non-blocking mode, + * and not bother with restoring it on exit. + */ + tty_name = xmalloc_ttyname(STDOUT_FILENO); + if (tty_name) { + tty_fd = open(tty_name, O_RDONLY); + free(tty_name); + if (tty_fd < 0) + goto try_ctty; + } else { + /* Try controlling tty */ + try_ctty: + tty_fd = open(CURRENT_TTY, O_RDONLY); + if (tty_fd < 0) + return bb_cat(argv); + } + ndelay_on(tty_fd); + kbd_fd = tty_fd; /* save in a global */ tcgetattr(kbd_fd, &term_orig); term_less = term_orig; diff --git a/miscutils/man.c b/miscutils/man.c index e380fda..d3e832b 100644 --- a/miscutils/man.c +++ b/miscutils/man.c @@ -162,7 +162,7 @@ int man_main(int argc UNUSED_PARAM, char **argv) opt = getopt32(argv, "+aw"); argv += optind; - sec_list = xstrdup("1:2:3:4:5:6:7:8:9"); + sec_list = xstrdup("0p:1:1p:2:3:3p:4:5:6:7:8:9"); /* Last valid man_path_list[] is [0x10] */ count_mp = 0; man_path_list = xzalloc(0x11 * sizeof(man_path_list[0])); diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c index 5dc1373..d5ae1e7 100644 --- a/miscutils/nandwrite.c +++ b/miscutils/nandwrite.c @@ -23,7 +23,7 @@ //config: Dump the content of raw NAND chip //applet:IF_NANDWRITE(APPLET(nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP)) -//applet:IF_NANDWRITE(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump)) +//applet:IF_NANDDUMP(APPLET_ODDNAME(nanddump, nandwrite, BB_DIR_USR_SBIN, BB_SUID_DROP, nanddump)) //kbuild:lib-$(CONFIG_NANDWRITE) += nandwrite.o //kbuild:lib-$(CONFIG_NANDDUMP) += nandwrite.o @@ -31,14 +31,14 @@ //usage:#define nandwrite_trivial_usage //usage: "[-p] [-s ADDR] MTD_DEVICE [FILE]" //usage:#define nandwrite_full_usage "\n\n" -//usage: "Write to the specified MTD device\n" +//usage: "Write to MTD_DEVICE\n" //usage: "\n -p Pad to page size" //usage: "\n -s ADDR Start address" //usage:#define nanddump_trivial_usage -//usage: "[-o] [-b] [-s ADDR] [-f FILE] MTD_DEVICE" +//usage: "[-o] [-b] [-s ADDR] [-l LEN] [-f FILE] MTD_DEVICE" //usage:#define nanddump_full_usage "\n\n" -//usage: "Dump the specified MTD device\n" +//usage: "Dump MTD_DEVICE\n" //usage: "\n -o Dump oob data" //usage: "\n -b Omit bad block from the dump" //usage: "\n -s ADDR Start address" diff --git a/miscutils/rfkill.c b/miscutils/rfkill.c index 4671973..7411b6f 100644 --- a/miscutils/rfkill.c +++ b/miscutils/rfkill.c @@ -7,6 +7,23 @@ * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +//config:config RFKILL +//config: bool "rfkill" +//config: default n # doesn't build on Ubuntu 9.04 +//config: select PLATFORM_LINUX +//config: help +//config: Enable/disable wireless devices. +//config: +//config: rfkill list : list all wireless devices +//config: rfkill list bluetooth : list all bluetooth devices +//config: rfkill list 1 : list device corresponding to the given index +//config: rfkill block|unblock wlan : block/unblock all wlan(wifi) devices +//config: + +//applet:IF_RFKILL(APPLET(rfkill, BB_DIR_USR_SBIN, BB_SUID_DROP)) + +//kbuild:lib-$(CONFIG_RFKILL) += rfkill.o + //usage:#define rfkill_trivial_usage //usage: "COMMAND [INDEX|TYPE]" //usage:#define rfkill_full_usage "\n\n" diff --git a/miscutils/setserial.c b/miscutils/setserial.c index 2a034e3..dfed330 100644 --- a/miscutils/setserial.c +++ b/miscutils/setserial.c @@ -223,7 +223,7 @@ struct serial_struct { //usage: " -v Verbose\n" //usage: "\n" //usage: "Parameters: (* = takes an argument, ^ = can be turned off by preceding ^)\n" -//usage: " *port, *irq, *divisor, *uart, *baund_base, *close_delay, *closing_wait,\n" +//usage: " *port, *irq, *divisor, *uart, *baud_base, *close_delay, *closing_wait,\n" //usage: " ^fourport, ^auto_irq, ^skip_test, ^sak, ^session_lockout, ^pgrp_lockout,\n" //usage: " ^callout_nohup, ^split_termios, ^hup_notify, ^low_latency, autoconfig,\n" //usage: " spd_normal, spd_hi, spd_vhi, spd_shi, spd_warp, spd_cust\n" @@ -311,7 +311,7 @@ static const char commands[] = "irq\0" "divisor\0" "uart\0" - "baund_base\0" + "baud_base\0" "close_delay\0" "closing_wait\0" diff --git a/miscutils/setsid.c b/miscutils/setsid.c index ad2c8a4..637081b 100644 --- a/miscutils/setsid.c +++ b/miscutils/setsid.c @@ -31,7 +31,17 @@ int setsid_main(int argc UNUSED_PARAM, char **argv) /* setsid() is allowed only when we are not a process group leader. * Otherwise our PID serves as PGID of some existing process group - * and cannot be used as PGID of a new process group. */ + * and cannot be used as PGID of a new process group. + * + * Example: setsid() below fails when run alone in interactive shell: + * $ setsid PROG + * because shell's child (setsid) is put in a new process group. + * But doesn't fail if shell is not interactive + * (and therefore doesn't create process groups for pipes), + * or if setsid is not the first process in the process group: + * $ true | setsid PROG + * or if setsid is executed in backquotes (`setsid PROG`)... + */ if (setsid() < 0) { pid_t pid = fork_or_rexec(argv); if (pid != 0) { @@ -43,7 +53,7 @@ int setsid_main(int argc UNUSED_PARAM, char **argv) * However, the code is larger and upstream * does not do such trick. */ - exit(EXIT_SUCCESS); + return EXIT_SUCCESS; } /* child */ diff --git a/miscutils/ubi_tools.c b/miscutils/ubi_tools.c index dd99a44..b713935 100644 --- a/miscutils/ubi_tools.c +++ b/miscutils/ubi_tools.c @@ -66,14 +66,6 @@ #endif #include <mtd/ubi-user.h> -#define OPTION_M (1 << 0) -#define OPTION_D (1 << 1) -#define OPTION_n (1 << 2) -#define OPTION_N (1 << 3) -#define OPTION_s (1 << 4) -#define OPTION_a (1 << 5) -#define OPTION_t (1 << 6) - #define do_attach (ENABLE_UBIATTACH && applet_name[3] == 'a') #define do_detach (ENABLE_UBIDETACH && applet_name[3] == 'd') #define do_mkvol (ENABLE_UBIMKVOL && applet_name[3] == 'm') @@ -81,191 +73,250 @@ #define do_rsvol (ENABLE_UBIRSVOL && applet_name[4] == 's') #define do_update (ENABLE_UBIUPDATEVOL && applet_name[3] == 'u') -//usage:#define ubiattach_trivial_usage -//usage: "-m MTD_NUM [-d UBI_NUM] UBI_CTRL_DEV" -//usage:#define ubiattach_full_usage "\n\n" -//usage: "Attach MTD device to UBI\n" -//usage: "\n -m MTD_NUM MTD device number to attach" -//usage: "\n -d UBI_NUM UBI device number to assign" -//usage: -//usage:#define ubidetach_trivial_usage -//usage: "-d UBI_NUM UBI_CTRL_DEV" -//usage:#define ubidetach_full_usage "\n\n" -//usage: "Detach MTD device from UBI\n" -//usage: "\n -d UBI_NUM UBI device number" -//usage: -//usage:#define ubimkvol_trivial_usage -//usage: "UBI_DEVICE -N NAME -s SIZE" -//usage:#define ubimkvol_full_usage "\n\n" -//usage: "Create UBI volume\n" -//usage: "\n -a ALIGNMENT Volume alignment (default 1)" -//usage: "\n -n VOLID Volume ID, if not specified, it" -//usage: "\n will be assigned automatically" -//usage: "\n -N NAME Volume name" -//usage: "\n -s SIZE Size in bytes" -//usage: "\n -t TYPE Volume type (static|dynamic)" -//usage: -//usage:#define ubirmvol_trivial_usage -//usage: "UBI_DEVICE -n VOLID" -//usage:#define ubirmvol_full_usage "\n\n" -//usage: "Remove UBI volume\n" -//usage: "\n -n VOLID Volume ID" -//usage: -//usage:#define ubirsvol_trivial_usage -//usage: "UBI_DEVICE -n VOLID -s SIZE" -//usage:#define ubirsvol_full_usage "\n\n" -//usage: "Resize UBI volume\n" -//usage: "\n -n VOLID Volume ID to resize" -//usage: "\n -s SIZE Size in bytes" -//usage: -//usage:#define ubiupdatevol_trivial_usage -//usage: "UBI_DEVICE [IMG_FILE]" -//usage:#define ubiupdatevol_full_usage "\n\n" -//usage: "Update UBI volume\n" -//usage: "\n -t Truncate UBI volume" -//usage: "\n -s SIZE Bytes in input (if reading stdin)" +static unsigned get_num_from_file(const char *path, unsigned max, const char *errmsg) +{ + char buf[sizeof(long long)*3]; + unsigned long long num; + + if (open_read_close(path, buf, sizeof(buf)) < 0) + bb_perror_msg_and_die(errmsg, path); + /* It can be \n terminated, xatoull won't work well */ + if (sscanf(buf, "%llu", &num) != 1 || num > max) + bb_error_msg_and_die(errmsg, path); + return num; +} +/* To prevent malloc(1G) accidents */ +#define MAX_SANE_ERASEBLOCK (16*1024*1024) int ubi_tools_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int ubi_tools_main(int argc UNUSED_PARAM, char **argv) { + static const struct suffix_mult size_suffixes[] = { + { "KiB", 1024 }, + { "MiB", 1024*1024 }, + { "GiB", 1024*1024*1024 }, + { "", 0 } + }; + unsigned opts; char *ubi_ctrl; - //struct stat st; int fd; int mtd_num; int dev_num = UBI_DEV_NUM_AUTO; int vol_id = UBI_VOL_NUM_AUTO; - char *vol_name = NULL; - int size_bytes; + char *vol_name; + unsigned long long size_bytes = size_bytes; /* for compiler */ + char *size_bytes_str; int alignment = 1; - char *type = NULL; + char *type; + union { + struct ubi_attach_req attach_req; + struct ubi_mkvol_req mkvol_req; + struct ubi_rsvol_req rsvol_req; + } req_structs; +#define attach_req req_structs.attach_req +#define mkvol_req req_structs.mkvol_req +#define rsvol_req req_structs.rsvol_req + char path[sizeof("/sys/class/ubi/ubi%d_%d/usable_eb_size") + + 2 * sizeof(int)*3 + /*just in case:*/ 16]; +#define path_sys_class_ubi_ubi (path + sizeof("/sys/class/ubi/ubi")-1) + + strcpy(path, "/sys/class/ubi/ubi"); + memset(&req_structs, 0, sizeof(req_structs)); + + if (do_mkvol) { + opt_complementary = "-1:d+:n+:a+"; + opts = getopt32(argv, "md:n:N:s:a:t:", + &dev_num, &vol_id, + &vol_name, &size_bytes_str, &alignment, &type + ); + } else { + opt_complementary = "-1:m+:d+:n+:a+"; + opts = getopt32(argv, "m:d:n:N:s:a:t:", + &mtd_num, &dev_num, &vol_id, + &vol_name, &size_bytes_str, &alignment, &type + ); + } +#define OPTION_m (1 << 0) +#define OPTION_d (1 << 1) +#define OPTION_n (1 << 2) +#define OPTION_N (1 << 3) +#define OPTION_s (1 << 4) +#define OPTION_a (1 << 5) +#define OPTION_t (1 << 6) - opt_complementary = "-1:m+:d+:n+:s+:a+"; - opts = getopt32(argv, "m:d:n:N:s:a:t::", - &mtd_num, &dev_num, &vol_id, - &vol_name, &size_bytes, &alignment, &type - ); - ubi_ctrl = argv[optind]; + if (opts & OPTION_s) + size_bytes = xatoull_sfx(size_bytes_str, size_suffixes); + argv += optind; + ubi_ctrl = *argv++; fd = xopen(ubi_ctrl, O_RDWR); //xfstat(fd, &st, ubi_ctrl); //if (!S_ISCHR(st.st_mode)) // bb_error_msg_and_die("%s: not a char device", ubi_ctrl); +//usage:#define ubiattach_trivial_usage +//usage: "-m MTD_NUM [-d UBI_NUM] UBI_CTRL_DEV" +//usage:#define ubiattach_full_usage "\n\n" +//usage: "Attach MTD device to UBI\n" +//usage: "\n -m MTD_NUM MTD device number to attach" +//usage: "\n -d UBI_NUM UBI device number to assign" if (do_attach) { - struct ubi_attach_req req; - if (!(opts & OPTION_M)) + if (!(opts & OPTION_m)) bb_error_msg_and_die("%s device not specified", "MTD"); - memset(&req, 0, sizeof(req)); - req.mtd_num = mtd_num; - req.ubi_num = dev_num; + attach_req.mtd_num = mtd_num; + attach_req.ubi_num = dev_num; - xioctl(fd, UBI_IOCATT, &req); + xioctl(fd, UBI_IOCATT, &attach_req); } else + +//usage:#define ubidetach_trivial_usage +//usage: "-d UBI_NUM UBI_CTRL_DEV" +//usage:#define ubidetach_full_usage "\n\n" +//usage: "Detach MTD device from UBI\n" +//usage: "\n -d UBI_NUM UBI device number" if (do_detach) { - if (!(opts & OPTION_D)) + if (!(opts & OPTION_d)) bb_error_msg_and_die("%s device not specified", "UBI"); + /* FIXME? kernel expects int32_t* here: */ xioctl(fd, UBI_IOCDET, &dev_num); } else + +//usage:#define ubimkvol_trivial_usage +//usage: "UBI_DEVICE -N NAME [-s SIZE | -m]" +//usage:#define ubimkvol_full_usage "\n\n" +//usage: "Create UBI volume\n" +//usage: "\n -a ALIGNMENT Volume alignment (default 1)" +//usage: "\n -m Set volume size to maximum available" +//usage: "\n -n VOLID Volume ID. If not specified," +//usage: "\n assigned automatically" +//usage: "\n -N NAME Volume name" +//usage: "\n -s SIZE Size in bytes" +//usage: "\n -t TYPE Volume type (static|dynamic)" if (do_mkvol) { - struct ubi_mkvol_req req; - int vol_name_len; + if (opts & OPTION_m) { + unsigned leb_avail; + unsigned leb_size; + unsigned num; + char *p; + + if (sscanf(ubi_ctrl, "/dev/ubi%u", &num) != 1) + bb_error_msg_and_die("wrong format of UBI device name"); + + p = path_sys_class_ubi_ubi + sprintf(path_sys_class_ubi_ubi, "%u/", num); + + strcpy(p, "avail_eraseblocks"); + leb_avail = get_num_from_file(path, UINT_MAX, "Can't get available eraseblocks from '%s'"); + + strcpy(p, "eraseblock_size"); + leb_size = get_num_from_file(path, MAX_SANE_ERASEBLOCK, "Can't get eraseblock size from '%s'"); + + size_bytes = leb_avail * (unsigned long long)leb_size; + //if (size_bytes <= 0) + // bb_error_msg_and_die("%s invalid maximum size calculated", "UBI"); + } else if (!(opts & OPTION_s)) - bb_error_msg_and_die("%s size not specified", "UBI"); + bb_error_msg_and_die("size not specified"); + if (!(opts & OPTION_N)) - bb_error_msg_and_die("%s name not specified", "UBI"); - vol_name_len = strlen(vol_name); - if (vol_name_len > UBI_MAX_VOLUME_NAME) - bb_error_msg_and_die("%s volume name too long", "UBI"); - - memset(&req, 0, sizeof(req)); - req.vol_id = vol_id; - if ((opts & OPTION_t) && type) { - if (type[0] == 's') - req.vol_type = UBI_STATIC_VOLUME; - else - req.vol_type = UBI_DYNAMIC_VOLUME; - } else { - req.vol_type = UBI_DYNAMIC_VOLUME; - } - req.alignment = alignment; - req.bytes = size_bytes; - strncpy(req.name, vol_name, UBI_MAX_VOLUME_NAME); - req.name_len = vol_name_len; + bb_error_msg_and_die("name not specified"); + + mkvol_req.vol_id = vol_id; + mkvol_req.vol_type = UBI_DYNAMIC_VOLUME; + if ((opts & OPTION_t) && type[0] == 's') + mkvol_req.vol_type = UBI_STATIC_VOLUME; + mkvol_req.alignment = alignment; + mkvol_req.bytes = size_bytes; /* signed int64_t */ + strncpy(mkvol_req.name, vol_name, UBI_MAX_VOLUME_NAME); + mkvol_req.name_len = strlen(vol_name); + if (mkvol_req.name_len > UBI_MAX_VOLUME_NAME) + bb_error_msg_and_die("volume name too long: '%s'", vol_name); - xioctl(fd, UBI_IOCMKVOL, &req); + xioctl(fd, UBI_IOCMKVOL, &mkvol_req); } else + +//usage:#define ubirmvol_trivial_usage +//usage: "UBI_DEVICE -n VOLID" +//usage:#define ubirmvol_full_usage "\n\n" +//usage: "Remove UBI volume\n" +//usage: "\n -n VOLID Volume ID" if (do_rmvol) { if (!(opts & OPTION_n)) - bb_error_msg_and_die("%s volume id not specified", "UBI"); + bb_error_msg_and_die("volume id not specified"); + /* FIXME? kernel expects int32_t* here: */ xioctl(fd, UBI_IOCRMVOL, &vol_id); } else + +//usage:#define ubirsvol_trivial_usage +//usage: "UBI_DEVICE -n VOLID -s SIZE" +//usage:#define ubirsvol_full_usage "\n\n" +//usage: "Resize UBI volume\n" +//usage: "\n -n VOLID Volume ID" +//usage: "\n -s SIZE Size in bytes" if (do_rsvol) { - struct ubi_rsvol_req req; if (!(opts & OPTION_s)) - bb_error_msg_and_die("%s size not specified", "UBI"); + bb_error_msg_and_die("size not specified"); if (!(opts & OPTION_n)) - bb_error_msg_and_die("%s volume id not specified", "UBI"); + bb_error_msg_and_die("volume id not specified"); - memset(&req, 0, sizeof(req)); - req.bytes = size_bytes; - req.vol_id = vol_id; + rsvol_req.bytes = size_bytes; /* signed int64_t */ + rsvol_req.vol_id = vol_id; - xioctl(fd, UBI_IOCRSVOL, &req); + xioctl(fd, UBI_IOCRSVOL, &rsvol_req); } else + +//usage:#define ubiupdatevol_trivial_usage +//usage: "UBI_DEVICE [-t | [-s SIZE] IMG_FILE]" +//usage:#define ubiupdatevol_full_usage "\n\n" +//usage: "Update UBI volume\n" +//usage: "\n -t Truncate to zero size" +//usage: "\n -s SIZE Size in bytes to resize to" if (do_update) { - long long bytes; + int64_t bytes64; if (opts & OPTION_t) { - // truncate the volume by starting an update for size 0 - bytes = 0; - xioctl(fd, UBI_IOCVOLUP, &bytes); + /* truncate the volume by starting an update for size 0 */ + bytes64 = 0; + /* this ioctl expects int64_t* parameter */ + xioctl(fd, UBI_IOCVOLUP, &bytes64); } else { struct stat st; - char buf[sizeof("/sys/class/ubi/ubi%d_%d/usable_eb_size") + 2 * sizeof(int)*3]; - int input_fd; unsigned ubinum, volnum; unsigned leb_size; ssize_t len; char *input_data; - // Make assumption that device not is in normal format. - // Removes need for scanning sysfs tree as full libubi does + /* Assume that device is in normal format. */ + /* Removes need for scanning sysfs tree as full libubi does. */ if (sscanf(ubi_ctrl, "/dev/ubi%u_%u", &ubinum, &volnum) != 2) - bb_error_msg_and_die("%s volume node not in correct format", "UBI"); - - sprintf(buf, "/sys/class/ubi/ubi%u_%u/usable_eb_size", ubinum, volnum); - if (open_read_close(buf, buf, sizeof(buf)) <= 0) - bb_error_msg_and_die("%s could not get LEB size", "UBI"); - if (sscanf(buf, "%u", &leb_size) != 1) - bb_error_msg_and_die("%s could not get LEB size", "UBI"); - - if (opts & OPTION_s) { - input_fd = 0; - } else { - if (!argv[optind+1]) + bb_error_msg_and_die("wrong format of UBI device name"); + + sprintf(path_sys_class_ubi_ubi, "%u_%u/usable_eb_size", ubinum, volnum); + leb_size = get_num_from_file(path, MAX_SANE_ERASEBLOCK, "Can't get usable eraseblock size from '%s'"); + + if (!(opts & OPTION_s)) { + if (!*argv) bb_show_usage(); - xstat(argv[optind+1], &st); + xstat(*argv, &st); size_bytes = st.st_size; - input_fd = xopen(argv[optind+1], O_RDONLY); + xmove_fd(xopen(*argv, O_RDONLY), STDIN_FILENO); } - bytes = size_bytes; - xioctl(fd, UBI_IOCVOLUP, &bytes); + bytes64 = size_bytes; + /* this ioctl expects signed int64_t* parameter */ + xioctl(fd, UBI_IOCVOLUP, &bytes64); input_data = xmalloc(leb_size); - while ((len = full_read(input_fd, input_data, leb_size)) > 0) { + while ((len = full_read(STDIN_FILENO, input_data, leb_size)) > 0) { xwrite(fd, input_data, len); } if (len < 0) - bb_error_msg_and_die("%s volume update failed", "UBI"); - if (ENABLE_FEATURE_CLEAN_UP) - close(input_fd); + bb_perror_msg_and_die("UBI volume update failed"); } } diff --git a/miscutils/wall.c b/miscutils/wall.c index 762f53b..bb709ee 100644 --- a/miscutils/wall.c +++ b/miscutils/wall.c @@ -6,6 +6,18 @@ * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +//config:config WALL +//config: bool "wall" +//config: default y +//config: depends on FEATURE_UTMP +//config: help +//config: Write a message to all users that are logged in. + +/* Needs to be run by root or be suid root - needs to write to /dev/TTY: */ +//applet:IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) + +//kbuild:lib-$(CONFIG_WALL) += wall.o + //usage:#define wall_trivial_usage //usage: "[FILE]" //usage:#define wall_full_usage "\n\n" @@ -22,8 +34,15 @@ int wall_main(int argc UNUSED_PARAM, char **argv) { struct utmp *ut; char *msg; - int fd = argv[1] ? xopen(argv[1], O_RDONLY) : STDIN_FILENO; + int fd; + fd = STDIN_FILENO; + if (argv[1]) { + /* The applet is setuid. + * Access to the file must be under user's uid/gid. + */ + fd = xopen_as_uid_gid(argv[1], O_RDONLY, getuid(), getgid()); + } msg = xmalloc_read(fd, NULL); if (ENABLE_FEATURE_CLEAN_UP && argv[1]) close(fd); diff --git a/modutils/modprobe.c b/modutils/modprobe.c index 7ea5a11..f6f45f3 100644 --- a/modutils/modprobe.c +++ b/modutils/modprobe.c @@ -175,7 +175,7 @@ struct globals { } FIX_ALIASING; #define G (*ptr_to_globals) #define INIT_G() do { \ - SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ + SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ } while (0) diff --git a/networking/Config.src b/networking/Config.src index e1ae0c9..ca0ddcd 100644 --- a/networking/Config.src +++ b/networking/Config.src @@ -970,16 +970,18 @@ config FEATURE_WGET_LONG_OPTIONS Support long options for the wget applet. config FEATURE_WGET_TIMEOUT - bool "Enable read timeout option -T SEC" + bool "Enable timeout option -T SEC" default y depends on WGET help - Supports network read timeout for wget, so that wget will give - up and timeout when reading network data, through the -T command - line option. Currently only network data read timeout is - supported (i.e., timeout is not applied to the DNS nor TCP - connection initialization). When FEATURE_WGET_LONG_OPTIONS is - also enabled, the --timeout option will work in addition to -T. + Supports network read and connect timeouts for wget, + so that wget will give up and timeout, through the -T + command line option. + + Currently only connect and network data read timeout are + supported (i.e., timeout is not applied to the DNS query). When + FEATURE_WGET_LONG_OPTIONS is also enabled, the --timeout option + will work in addition to -T. config ZCIP bool "zcip" diff --git a/networking/arp.c b/networking/arp.c index 1c99987..e79b1b6 100644 --- a/networking/arp.c +++ b/networking/arp.c @@ -22,12 +22,12 @@ //usage:#define arp_full_usage "\n\n" //usage: "Manipulate ARP cache\n" //usage: "\n -a Display (all) hosts" -//usage: "\n -s Set new ARP entry" -//usage: "\n -d Delete a specified entry" +//usage: "\n -d Delete ARP entry" +//usage: "\n -s Set new entry" //usage: "\n -v Verbose" //usage: "\n -n Don't resolve names" //usage: "\n -i IF Network interface" -//usage: "\n -D Read <hwaddr> from given device" +//usage: "\n -D Read HWADDR from IFACE" //usage: "\n -A,-p AF Protocol family" //usage: "\n -H HWTYPE Hardware address type" @@ -213,16 +213,15 @@ static int arp_del(char **args) } /* Get the hardware address to a specified interface name */ -static void arp_getdevhw(char *ifname, struct sockaddr *sa, - const struct hwtype *hwt) +static void arp_getdevhw(char *ifname, struct sockaddr *sa) { struct ifreq ifr; const struct hwtype *xhw; strcpy(ifr.ifr_name, ifname); ioctl_or_perror_and_die(sockfd, SIOCGIFHWADDR, &ifr, - "cant get HW-Address for '%s'", ifname); - if (hwt && (ifr.ifr_hwaddr.sa_family != hw->type)) { + "can't get HW-Address for '%s'", ifname); + if (hw_set && (ifr.ifr_hwaddr.sa_family != hw->type)) { bb_error_msg_and_die("protocol type mismatch"); } memcpy(sa, &(ifr.ifr_hwaddr), sizeof(struct sockaddr)); @@ -233,8 +232,8 @@ static void arp_getdevhw(char *ifname, struct sockaddr *sa, xhw = get_hwntype(-1); } bb_error_msg("device '%s' has HW address %s '%s'", - ifname, xhw->name, - xhw->print((unsigned char *) &ifr.ifr_hwaddr.sa_data)); + ifname, xhw->name, + xhw->print((unsigned char *) &ifr.ifr_hwaddr.sa_data)); } } @@ -261,7 +260,7 @@ static int arp_set(char **args) bb_error_msg_and_die("need hardware address"); } if (option_mask32 & ARP_OPT_D) { - arp_getdevhw(*args++, &req.arp_ha, hw_set ? hw : NULL); + arp_getdevhw(*args++, &req.arp_ha); } else { if (hw->input(*args++, &req.arp_ha) < 0) { bb_error_msg_and_die("invalid hardware address"); @@ -460,12 +459,12 @@ static int arp_show(char *name) arp_disp(hostname, ip, type, flags, hwa, mask, dev); } if (option_mask32 & ARP_OPT_v) - printf("Entries: %d\tSkipped: %d\tFound: %d\n", + printf("Entries: %u\tSkipped: %u\tFound: %u\n", entries, entries - shown, shown); if (!shown) { if (hw_set || host || device[0]) - printf("No match found in %d entries\n", entries); + printf("No match found in %u entries\n", entries); } if (ENABLE_FEATURE_CLEAN_UP) { free((char*)host); @@ -477,28 +476,33 @@ static int arp_show(char *name) int arp_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int arp_main(int argc UNUSED_PARAM, char **argv) { - const char *hw_type = "ether"; + const char *hw_type; const char *protocol; unsigned opts; INIT_G(); xmove_fd(xsocket(AF_INET, SOCK_DGRAM, 0), sockfd); + ap = get_aftype(DFLT_AF); - if (!ap) - bb_error_msg_and_die("%s: %s not supported", DFLT_AF, "address family"); + /* Defaults are always supported */ + //if (!ap) + // bb_error_msg_and_die("%s: %s not supported", DFLT_AF, "address family"); + hw = get_hwtype(DFLT_HW); + //if (!hw) + // bb_error_msg_and_die("%s: %s not supported", DFLT_HW, "hardware type"); opts = getopt32(argv, "A:p:H:t:i:adnDsv", &protocol, &protocol, &hw_type, &hw_type, &device); argv += optind; if (opts & (ARP_OPT_A | ARP_OPT_p)) { ap = get_aftype(protocol); - if (ap == NULL) + if (!ap) bb_error_msg_and_die("%s: unknown %s", protocol, "address family"); } - if (opts & (ARP_OPT_A | ARP_OPT_p)) { + if (opts & (ARP_OPT_H | ARP_OPT_t)) { hw = get_hwtype(hw_type); - if (hw == NULL) + if (!hw) bb_error_msg_and_die("%s: unknown %s", hw_type, "hardware type"); hw_set = 1; } @@ -507,14 +511,6 @@ int arp_main(int argc UNUSED_PARAM, char **argv) if (ap->af != AF_INET) { bb_error_msg_and_die("%s: kernel only supports 'inet'", ap->name); } - - /* If no hw type specified get default */ - if (!hw) { - hw = get_hwtype(DFLT_HW); - if (!hw) - bb_error_msg_and_die("%s: %s not supported", DFLT_HW, "hardware type"); - } - if (hw->alen <= 0) { bb_error_msg_and_die("%s: %s without ARP support", hw->name, "hardware type"); @@ -528,6 +524,7 @@ int arp_main(int argc UNUSED_PARAM, char **argv) return arp_set(argv); return arp_del(argv); } + //if (opts & ARP_OPT_a) - default return arp_show(argv[0]); } diff --git a/networking/ether-wake.c b/networking/ether-wake.c index bf09cd5..c38547d 100644 --- a/networking/ether-wake.c +++ b/networking/ether-wake.c @@ -62,17 +62,17 @@ * An alternative to needing 'root' is using a UDP broadcast socket, however * doing so only works with adapters configured for unicast+broadcast Rx * filter. That configuration consumes more power. -*/ + */ //usage:#define ether_wake_trivial_usage -//usage: "[-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC" +//usage: "[-b] [-i IFACE] [-p aa:bb:cc:dd[:ee:ff]/a.b.c.d] MAC" //usage:#define ether_wake_full_usage "\n\n" //usage: "Send a magic packet to wake up sleeping machines.\n" //usage: "MAC must be a station address (00:11:22:33:44:55) or\n" //usage: "a hostname with a known 'ethers' entry.\n" -//usage: "\n -b Send wake-up packet to the broadcast address" -//usage: "\n -i iface Interface to use (default eth0)" -//usage: "\n -p pass Append four or six byte password PW to the packet" +//usage: "\n -b Broadcast the packet" +//usage: "\n -i IFACE Interface to use (default eth0)" +//usage: "\n -p PASSWORD Append four or six byte PASSWORD to the packet" #include "libbb.h" #include <netpacket/packet.h> @@ -121,10 +121,7 @@ static void get_dest_addr(const char *hostid, struct ether_addr *eaddr) eap = ether_aton_r(hostid, eaddr); if (eap) { bb_debug_msg("The target station address is %s\n\n", ether_ntoa(eap)); -#if !defined(__UCLIBC_MAJOR__) \ - || __UCLIBC_MAJOR__ > 0 \ - || __UCLIBC_MINOR__ > 9 \ - || (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ >= 30) +#if !defined(__UCLIBC__) || UCLIBC_VERSION >= KERNEL_VERSION(0, 9, 30) } else if (ether_hostton(hostid, eaddr) == 0) { bb_debug_msg("Station address for hostname %s is %s\n\n", hostid, ether_ntoa(eaddr)); #endif @@ -133,7 +130,8 @@ static void get_dest_addr(const char *hostid, struct ether_addr *eaddr) } } -static int get_fill(unsigned char *pkt, struct ether_addr *eaddr, int broadcast) +#define PKT_HEADER_SIZE (20 + 16*6) +static int fill_pkt_header(unsigned char *pkt, struct ether_addr *eaddr, int broadcast) { int i; unsigned char *station_addr = eaddr->ether_addr_octet; @@ -156,7 +154,7 @@ static int get_fill(unsigned char *pkt, struct ether_addr *eaddr, int broadcast) memcpy(pkt, station_addr, 6); /* 20,26,32,... */ } - return 20 + 16*6; /* length of packet */ + return PKT_HEADER_SIZE; /* length of packet */ } static int get_wol_pw(const char *ethoptarg, unsigned char *wol_passwd) @@ -198,7 +196,7 @@ int ether_wake_main(int argc UNUSED_PARAM, char **argv) int wol_passwd_sz = 0; int s; /* Raw socket */ int pktsize; - unsigned char outpack[1000]; + unsigned char outpack[PKT_HEADER_SIZE + 6 /* max passwd size */ + 16 /* paranoia */]; struct ether_addr eaddr; struct whereto_t whereto; /* who to wake up */ @@ -220,7 +218,7 @@ int ether_wake_main(int argc UNUSED_PARAM, char **argv) get_dest_addr(argv[optind], &eaddr); /* fill out the header of the packet */ - pktsize = get_fill(outpack, &eaddr, flags /* & 1 OPT_BROADCAST */); + pktsize = fill_pkt_header(outpack, &eaddr, flags /* & 1 OPT_BROADCAST */); bb_debug_dump_packet(outpack, pktsize); diff --git a/networking/hostname.c b/networking/hostname.c index 5209bc8..4da5b40 100644 --- a/networking/hostname.c +++ b/networking/hostname.c @@ -106,7 +106,7 @@ int hostname_main(int argc UNUSED_PARAM, char **argv) OPT_i = 0x4, OPT_s = 0x8, OPT_F = 0x10, - OPT_dfis = 0xf, + OPT_dfi = 0x7, }; unsigned opts; @@ -134,7 +134,7 @@ int hostname_main(int argc UNUSED_PARAM, char **argv) if (applet_name[0] == 'd') /* dnsdomainname? */ opts = OPT_d; - if (opts & OPT_dfis) { + if (opts & OPT_dfi) { /* Cases when we need full hostname (or its part) */ struct hostent *hp; char *p; @@ -159,6 +159,9 @@ int hostname_main(int argc UNUSED_PARAM, char **argv) bb_putchar('\n'); } } + } else if (opts & OPT_s) { + strchrnul(buf, '.')[0] = '\0'; + puts(buf); } else if (opts & OPT_F) { /* Set the hostname */ do_sethostname(hostname_str, 1); diff --git a/networking/httpd.c b/networking/httpd.c index 1934bb2..621d9cd 100644 --- a/networking/httpd.c +++ b/networking/httpd.c @@ -1104,18 +1104,31 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post /* NB: breaking out of this loop jumps to log_and_exit() */ out_cnt = 0; + pfd[FROM_CGI].fd = fromCgi_rd; + pfd[FROM_CGI].events = POLLIN; + pfd[TO_CGI].fd = toCgi_wr; while (1) { - memset(pfd, 0, sizeof(pfd)); - - pfd[FROM_CGI].fd = fromCgi_rd; - pfd[FROM_CGI].events = POLLIN; - - if (toCgi_wr) { - pfd[TO_CGI].fd = toCgi_wr; - if (hdr_cnt > 0) { - pfd[TO_CGI].events = POLLOUT; - } else if (post_len > 0) { - pfd[0].events = POLLIN; + /* Note: even pfd[0].events == 0 won't prevent + * revents == POLLHUP|POLLERR reports from closed stdin. + * Setting fd to -1 works: */ + pfd[0].fd = -1; + pfd[0].events = POLLIN; + pfd[0].revents = 0; /* probably not needed, paranoia */ + + /* We always poll this fd, thus kernel always sets revents: */ + /*pfd[FROM_CGI].events = POLLIN; - moved out of loop */ + /*pfd[FROM_CGI].revents = 0; - not needed */ + + /* gcc-4.8.0 still doesnt fill two shorts with one insn :( */ + /* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47059 */ + /* hopefully one day it will... */ + pfd[TO_CGI].events = POLLOUT; + pfd[TO_CGI].revents = 0; /* needed! */ + + if (toCgi_wr && hdr_cnt <= 0) { + if (post_len > 0) { + /* Expect more POST data from network */ + pfd[0].fd = 0; } else { /* post_len <= 0 && hdr_cnt <= 0: * no more POST data to CGI, @@ -1127,7 +1140,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post } /* Now wait on the set of sockets */ - count = safe_poll(pfd, toCgi_wr ? TO_CGI+1 : FROM_CGI+1, -1); + count = safe_poll(pfd, hdr_cnt > 0 ? TO_CGI+1 : FROM_CGI+1, -1); if (count <= 0) { #if 0 if (safe_waitpid(pid, &status, WNOHANG) <= 0) { @@ -1144,7 +1157,7 @@ static NOINLINE void cgi_io_loop_and_exit(int fromCgi_rd, int toCgi_wr, int post } if (pfd[TO_CGI].revents) { - /* hdr_cnt > 0 here due to the way pfd[TO_CGI].events set */ + /* hdr_cnt > 0 here due to the way poll() called */ /* Have data from peer and can write to CGI */ count = safe_write(toCgi_wr, hdr_ptr, hdr_cnt); /* Doesn't happen, we dont use nonblocking IO here @@ -1709,8 +1722,8 @@ static int pam_talker(int num_msg, s = userinfo->pw; break; case PAM_ERROR_MSG: - case PAM_TEXT_INFO: - s = ""; + case PAM_TEXT_INFO: + s = ""; break; default: free(response); @@ -1964,7 +1977,9 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr) send_headers_and_exit(HTTP_BAD_REQUEST); /* Determine type of request (GET/POST) */ - urlp = strpbrk(iobuf, " \t"); + // rfc2616: method and URI is separated by exactly one space + //urlp = strpbrk(iobuf, " \t"); - no, tab isn't allowed + urlp = strchr(iobuf, ' '); if (urlp == NULL) send_headers_and_exit(HTTP_BAD_REQUEST); *urlp++ = '\0'; @@ -1982,7 +1997,8 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr) if (strcasecmp(iobuf, request_GET) != 0) send_headers_and_exit(HTTP_NOT_IMPLEMENTED); #endif - urlp = skip_whitespace(urlp); + // rfc2616: method and URI is separated by exactly one space + //urlp = skip_whitespace(urlp); - should not be necessary if (urlp[0] != '/') send_headers_and_exit(HTTP_BAD_REQUEST); diff --git a/networking/ifconfig.c b/networking/ifconfig.c index 5a934fa..dcbb552 100644 --- a/networking/ifconfig.c +++ b/networking/ifconfig.c @@ -56,7 +56,7 @@ #endif #if ENABLE_FEATURE_IFCONFIG_SLIP -# include <net/if_slip.h> +# include <linux/if_slip.h> #endif /* I don't know if this is needed for busybox or not. Anyone? */ @@ -265,49 +265,6 @@ static const struct options OptArray[] = { { NULL, 0, ARG_HOSTNAME, (IFF_UP | IFF_RUNNING) } }; -#if ENABLE_FEATURE_IFCONFIG_HW -/* Input an Ethernet address and convert to binary. */ -static int in_ether(const char *bufp, struct sockaddr *sap) -{ - char *ptr; - int i, j; - unsigned char val; - unsigned char c; - - sap->sa_family = ARPHRD_ETHER; - ptr = (char *) sap->sa_data; - - i = 0; - do { - j = val = 0; - - /* We might get a semicolon here - not required. */ - if (i && (*bufp == ':')) { - bufp++; - } - - do { - c = *bufp; - if (((unsigned char)(c - '0')) <= 9) { - c -= '0'; - } else if ((unsigned char)((c|0x20) - 'a') <= 5) { - c = (unsigned char)((c|0x20) - 'a') + 10; - } else if (j && (c == ':' || c == 0)) { - break; - } else { - return -1; - } - ++bufp; - val <<= 4; - val += c; - } while (++j < 2); - *ptr++ = val; - } while (++i < ETH_ALEN); - - return *bufp; /* Error if we don't end at end of string. */ -} -#endif - int ifconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int ifconfig_main(int argc UNUSED_PARAM, char **argv) { diff --git a/networking/ifplugd.c b/networking/ifplugd.c index 86586f0..b578f4c 100644 --- a/networking/ifplugd.c +++ b/networking/ifplugd.c @@ -451,20 +451,24 @@ static smallint detect_link(void) static NOINLINE int check_existence_through_netlink(void) { int iface_len; - char replybuf[1024]; + /* Buffer was 1K, but on linux-3.9.9 it was reported to be too small. + * netlink.h: "limit to 8K to avoid MSG_TRUNC when PAGE_SIZE is very large". + * Note: on error returns (-1) we exit, no need to free replybuf. + */ + enum { BUF_SIZE = 8 * 1024 }; + char *replybuf = xmalloc(BUF_SIZE); iface_len = strlen(G.iface); while (1) { struct nlmsghdr *mhdr; ssize_t bytes; - bytes = recv(netlink_fd, &replybuf, sizeof(replybuf), MSG_DONTWAIT); + bytes = recv(netlink_fd, replybuf, BUF_SIZE, MSG_DONTWAIT); if (bytes < 0) { if (errno == EAGAIN) - return G.iface_exists; + goto ret; if (errno == EINTR) continue; - bb_perror_msg("netlink: recv"); return -1; } @@ -507,6 +511,8 @@ static NOINLINE int check_existence_through_netlink(void) } } + ret: + free(replybuf); return G.iface_exists; } @@ -556,7 +562,8 @@ int ifplugd_main(int argc UNUSED_PARAM, char **argv) if (opts & FLAG_KILL) { if (pid_from_pidfile > 0) - kill(pid_from_pidfile, SIGQUIT); + /* Upstream tool use SIGINT for -k */ + kill(pid_from_pidfile, SIGINT); return EXIT_SUCCESS; } diff --git a/networking/ifupdown.c b/networking/ifupdown.c index 8180482..0f0857c 100644 --- a/networking/ifupdown.c +++ b/networking/ifupdown.c @@ -743,7 +743,7 @@ static const struct method_t *get_method(const struct address_family_t *af, char return NULL; } -static struct interfaces_file_t *read_interfaces(const char *filename) +static struct interfaces_file_t *read_interfaces(const char *filename, struct interfaces_file_t *defn) { /* Let's try to be compatible. * @@ -758,19 +758,25 @@ static struct interfaces_file_t *read_interfaces(const char *filename) * be ignored. Blank lines are ignored. Lines may be indented freely. * A "\" character at the very end of the line indicates the next line * should be treated as a continuation of the current one. + * + * Lines beginning with "source" are used to include stanzas from + * other files, so configuration can be split into many files. + * The word "source" is followed by the path of file to be sourced. */ #if ENABLE_FEATURE_IFUPDOWN_MAPPING struct mapping_defn_t *currmap = NULL; #endif struct interface_defn_t *currif = NULL; - struct interfaces_file_t *defn; FILE *f; char *buf; char *first_word; char *rest_of_line; enum { NONE, IFACE, MAPPING } currently_processing = NONE; - defn = xzalloc(sizeof(*defn)); + if (!defn) + defn = xzalloc(sizeof(*defn)); + + debug_noise("reading %s file:\n", filename); f = xfopen_for_read(filename); while ((buf = xmalloc_fgetline(f)) != NULL) { @@ -881,6 +887,8 @@ static struct interfaces_file_t *read_interfaces(const char *filename) debug_noise("\nauto %s\n", first_word); } currently_processing = NONE; + } else if (strcmp(first_word, "source") == 0) { + read_interfaces(next_word(&rest_of_line), defn); } else { switch (currently_processing) { case IFACE: @@ -934,6 +942,7 @@ static struct interfaces_file_t *read_interfaces(const char *filename) bb_error_msg_and_die("%s: I/O error", filename); } fclose(f); + debug_noise("\ndone reading %s\n\n", filename); return defn; } @@ -1199,9 +1208,7 @@ int ifupdown_main(int argc UNUSED_PARAM, char **argv) if (!DO_ALL) bb_show_usage(); } - debug_noise("reading %s file:\n", interfaces); - defn = read_interfaces(interfaces); - debug_noise("\ndone reading %s\n\n", interfaces); + defn = read_interfaces(interfaces, NULL); /* Create a list of interfaces to work on */ if (DO_ALL) { diff --git a/networking/interface.c b/networking/interface.c index 9ae8b3f..bf7d2b1 100644 --- a/networking/interface.c +++ b/networking/interface.c @@ -722,68 +722,15 @@ static char* FAST_FUNC ether_print(unsigned char *ptr) return buff; } -static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap); - static const struct hwtype ether_hwtype = { .name = "ether", .title = "Ethernet", .type = ARPHRD_ETHER, .alen = ETH_ALEN, .print = ether_print, - .input = ether_input + .input = in_ether }; -static unsigned hexchar2int(char c) -{ - if (isdigit(c)) - return c - '0'; - c &= ~0x20; /* a -> A */ - if ((unsigned)(c - 'A') <= 5) - return c - ('A' - 10); - return ~0U; -} - -/* Input an Ethernet address and convert to binary. */ -static int FAST_FUNC ether_input(const char *bufp, struct sockaddr *sap) -{ - unsigned char *ptr; - char c; - int i; - unsigned val; - - sap->sa_family = ether_hwtype.type; - ptr = (unsigned char*) sap->sa_data; - - i = 0; - while ((*bufp != '\0') && (i < ETH_ALEN)) { - val = hexchar2int(*bufp++) * 0x10; - if (val > 0xff) { - errno = EINVAL; - return -1; - } - c = *bufp; - if (c == ':' || c == 0) - val >>= 4; - else { - val |= hexchar2int(c); - if (val > 0xff) { - errno = EINVAL; - return -1; - } - } - if (c != 0) - bufp++; - *ptr++ = (unsigned char) val; - i++; - - /* We might get a semicolon here - not required. */ - if (*bufp == ':') { - bufp++; - } - } - return 0; -} - static const struct hwtype ppp_hwtype = { .name = "ppp", .title = "Point-to-Point Protocol", @@ -927,7 +874,7 @@ static void print_bytes_scaled(unsigned long long ull, const char *end) static void ife_print6(struct interface *ptr) { FILE *f; - char addr6[40], devname[20]; + char addr6[40], devname[21]; struct sockaddr_in6 sap; int plen, scope, dad_status, if_idx; char addr6p[8][5]; diff --git a/networking/libiproute/ipaddress.c b/networking/libiproute/ipaddress.c index da76bbe..1058b5a 100644 --- a/networking/libiproute/ipaddress.c +++ b/networking/libiproute/ipaddress.c @@ -627,10 +627,12 @@ static int ipaddr_modify(int cmd, char **argv) req.ifa.ifa_family = preferred_family; while (*argv) { - const smalluint arg = index_in_strings(option, *argv); - if (arg <= 1) { /* peer, remote */ + unsigned arg = index_in_strings(option, *argv); + /* if search fails, "local" is assumed */ + if ((int)arg >= 0) NEXT_ARG(); + if (arg <= 1) { /* peer, remote */ if (peer_len) { duparg("peer", *argv); } @@ -643,7 +645,6 @@ static int ipaddr_modify(int cmd, char **argv) req.ifa.ifa_prefixlen = peer.bitlen; } else if (arg <= 3) { /* broadcast, brd */ inet_prefix addr; - NEXT_ARG(); if (brd_len) { duparg("broadcast", *argv); } @@ -660,7 +661,6 @@ static int ipaddr_modify(int cmd, char **argv) } } else if (arg == 4) { /* anycast */ inet_prefix addr; - NEXT_ARG(); if (any_len) { duparg("anycast", *argv); } @@ -672,22 +672,18 @@ static int ipaddr_modify(int cmd, char **argv) any_len = addr.bytelen; } else if (arg == 5) { /* scope */ uint32_t scope = 0; - NEXT_ARG(); if (rtnl_rtscope_a2n(&scope, *argv)) { invarg(*argv, "scope"); } req.ifa.ifa_scope = scope; scoped = 1; } else if (arg == 6) { /* dev */ - NEXT_ARG(); d = *argv; } else if (arg == 7) { /* label */ - NEXT_ARG(); l = *argv; addattr_l(&req.n, sizeof(req), IFA_LABEL, l, strlen(l) + 1); } else { - if (arg == 8) /* local */ - NEXT_ARG(); + /* local (specified or assumed) */ if (local_len) { duparg2("local", *argv); } @@ -724,7 +720,7 @@ static int ipaddr_modify(int cmd, char **argv) } brd = peer; if (brd.bitlen <= 30) { - for (i=31; i>=brd.bitlen; i--) { + for (i = 31; i >= brd.bitlen; i--) { if (brd_len == -1) brd.data[0] |= htonl(1<<(31-i)); else @@ -754,11 +750,11 @@ int FAST_FUNC do_ipaddr(char **argv) { static const char commands[] ALIGN1 = "add\0""delete\0""list\0""show\0""lst\0""flush\0"; - smalluint cmd = 2; + int cmd = 2; if (*argv) { cmd = index_in_substrings(commands, *argv); - if (cmd > 5) - bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); + if (cmd < 0) + invarg(*argv, applet_name); argv++; if (cmd <= 1) return ipaddr_modify((cmd == 0) ? RTM_NEWADDR : RTM_DELADDR, argv); diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c index 8e9f1bd..286e59e 100644 --- a/networking/libiproute/iplink.c +++ b/networking/libiproute/iplink.c @@ -1,18 +1,33 @@ /* vi: set sw=4 ts=4: */ /* * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> + * Patrick McHardy <kaber@trash.net> * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ #include <net/if.h> -#include <net/if_packet.h> +/*#include <net/if_packet.h> - not needed? */ #include <netpacket/packet.h> #include <netinet/if_ether.h> +#include <linux/if_vlan.h> #include "ip_common.h" /* #include "libbb.h" is inside */ #include "rt_names.h" #include "utils.h" +#undef ETH_P_8021AD +#define ETH_P_8021AD 0x88A8 +#undef VLAN_FLAG_REORDER_HDR +#define VLAN_FLAG_REORDER_HDR 0x1 +#undef VLAN_FLAG_GVRP +#define VLAN_FLAG_GVRP 0x2 +#undef VLAN_FLAG_LOOSE_BINDING +#define VLAN_FLAG_LOOSE_BINDING 0x4 +#undef VLAN_FLAG_MVRP +#define VLAN_FLAG_MVRP 0x8 +#undef IFLA_VLAN_PROTOCOL +#define IFLA_VLAN_PROTOCOL 5 + #ifndef IFLA_LINKINFO # define IFLA_LINKINFO 18 # define IFLA_INFO_KIND 1 @@ -277,12 +292,103 @@ static int ipaddr_list_link(char **argv) return ipaddr_list_or_flush(argv, 0); } +static void vlan_parse_opt(char **argv, struct nlmsghdr *n, unsigned int size) +{ + static const char keywords[] ALIGN1 = + "id\0" + "protocol\0" + "reorder_hdr\0" + "gvrp\0" + "mvrp\0" + "loose_binding\0" + ; + static const char protocols[] ALIGN1 = + "802.1q\0" + "802.1ad\0" + ; + static const char str_on_off[] ALIGN1 = + "on\0" + "off\0" + ; + enum { + ARG_id = 0, + ARG_reorder_hdr, + ARG_gvrp, + ARG_mvrp, + ARG_loose_binding, + ARG_protocol, + }; + enum { + PROTO_8021Q = 0, + PROTO_8021AD, + }; + enum { + PARM_on = 0, + PARM_off + }; + int arg; + uint16_t id, proto; + struct ifla_vlan_flags flags = {}; + + while (*argv) { + arg = index_in_substrings(keywords, *argv); + if (arg < 0) + invarg(*argv, "type vlan"); + + NEXT_ARG(); + if (arg == ARG_id) { + id = get_u16(*argv, "id"); + addattr_l(n, size, IFLA_VLAN_ID, &id, sizeof(id)); + } else if (arg == ARG_protocol) { + arg = index_in_substrings(protocols, *argv); + if (arg == PROTO_8021Q) + proto = ETH_P_8021Q; + else if (arg == PROTO_8021AD) + proto = ETH_P_8021AD; + else + bb_error_msg_and_die("unknown VLAN encapsulation protocol '%s'", + *argv); + addattr_l(n, size, IFLA_VLAN_PROTOCOL, &proto, sizeof(proto)); + } else { + int param = index_in_strings(str_on_off, *argv); + if (param < 0) + die_must_be_on_off(nth_string(keywords, arg)); + + if (arg == ARG_reorder_hdr) { + flags.mask |= VLAN_FLAG_REORDER_HDR; + flags.flags &= ~VLAN_FLAG_REORDER_HDR; + if (param == PARM_on) + flags.flags |= VLAN_FLAG_REORDER_HDR; + } else if (arg == ARG_gvrp) { + flags.mask |= VLAN_FLAG_GVRP; + flags.flags &= ~VLAN_FLAG_GVRP; + if (param == PARM_on) + flags.flags |= VLAN_FLAG_GVRP; + } else if (arg == ARG_mvrp) { + flags.mask |= VLAN_FLAG_MVRP; + flags.flags &= ~VLAN_FLAG_MVRP; + if (param == PARM_on) + flags.flags |= VLAN_FLAG_MVRP; + } else { /*if (arg == ARG_loose_binding) */ + flags.mask |= VLAN_FLAG_LOOSE_BINDING; + flags.flags &= ~VLAN_FLAG_LOOSE_BINDING; + if (param == PARM_on) + flags.flags |= VLAN_FLAG_LOOSE_BINDING; + } + } + argv++; + } + + if (flags.mask) + addattr_l(n, size, IFLA_VLAN_FLAGS, &flags, sizeof(flags)); +} + #ifndef NLMSG_TAIL #define NLMSG_TAIL(nmsg) \ - ((struct rtattr *) ((size_t)((void *) (nmsg)) + (size_t) NLMSG_ALIGN((nmsg)->nlmsg_len))) + ((struct rtattr *) (((void *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len))) #endif /* Return value becomes exitcode. It's okay to not return at all */ -static int do_change(char **argv, const unsigned rtm) +static int do_add_or_delete(char **argv, const unsigned rtm) { static const char keywords[] ALIGN1 = "link\0""name\0""type\0""dev\0"; @@ -312,15 +418,17 @@ static int do_change(char **argv, const unsigned rtm) while (*argv) { arg = index_in_substrings(keywords, *argv); + if (arg == ARG_type) { + NEXT_ARG(); + type_str = *argv++; + break; + } if (arg == ARG_link) { NEXT_ARG(); link_str = *argv; } else if (arg == ARG_name) { NEXT_ARG(); name_str = *argv; - } else if (arg == ARG_type) { - NEXT_ARG(); - type_str = *argv; } else { if (arg == ARG_dev) { if (dev_str) @@ -339,7 +447,18 @@ static int do_change(char **argv, const unsigned rtm) addattr_l(&req.n, sizeof(req), IFLA_LINKINFO, NULL, 0); addattr_l(&req.n, sizeof(req), IFLA_INFO_KIND, type_str, strlen(type_str)); - linkinfo->rta_len = (size_t) NLMSG_TAIL(&req.n) - (size_t) linkinfo; + + if (*argv) { + struct rtattr *data = NLMSG_TAIL(&req.n); + addattr_l(&req.n, sizeof(req), IFLA_INFO_DATA, NULL, 0); + + if (strcmp(type_str, "vlan") == 0) + vlan_parse_opt(argv, &req.n, sizeof(req)); + + data->rta_len = (void *)NLMSG_TAIL(&req.n) - (void *)data; + } + + linkinfo->rta_len = (void *)NLMSG_TAIL(&req.n) - (void *)linkinfo; } if (rtm != RTM_NEWLINK) { if (!dev_str) @@ -370,13 +489,13 @@ int FAST_FUNC do_iplink(char **argv) static const char keywords[] ALIGN1 = "add\0""delete\0""set\0""show\0""lst\0""list\0"; if (*argv) { - smalluint key = index_in_substrings(keywords, *argv); - if (key > 5) /* invalid argument */ - bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); + int key = index_in_substrings(keywords, *argv); + if (key < 0) /* invalid argument */ + invarg(*argv, applet_name); argv++; if (key <= 1) /* add/delete */ - return do_change(argv, key ? RTM_DELLINK : RTM_NEWLINK); - else if (key == 2) /* set */ + return do_add_or_delete(argv, key ? RTM_DELLINK : RTM_NEWLINK); + if (key == 2) /* set */ return do_set(argv); } /* show, lst, list */ diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c index 241a6bf..8dbe6bd 100644 --- a/networking/libiproute/iprule.c +++ b/networking/libiproute/iprule.c @@ -215,7 +215,7 @@ static int iprule_modify(int cmd, char **argv) while (*argv) { key = index_in_substrings(keywords, *argv) + 1; if (key == 0) /* no match found in keywords array, bail out. */ - bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); + invarg(*argv, applet_name); if (key == ARG_from) { inet_prefix dst; NEXT_ARG(); @@ -308,9 +308,9 @@ int FAST_FUNC do_iprule(char **argv) static const char ip_rule_commands[] ALIGN1 = "add\0""delete\0""list\0""show\0"; if (*argv) { - smalluint cmd = index_in_substrings(ip_rule_commands, *argv); - if (cmd > 3) - bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); + int cmd = index_in_substrings(ip_rule_commands, *argv); + if (cmd < 0) + invarg(*argv, applet_name); argv++; if (cmd < 2) return iprule_modify((cmd == 0) ? RTM_NEWRULE : RTM_DELRULE, argv); diff --git a/networking/libiproute/iptunnel.c b/networking/libiproute/iptunnel.c index 2b651b9..b54c3c5 100644 --- a/networking/libiproute/iptunnel.c +++ b/networking/libiproute/iptunnel.c @@ -561,9 +561,9 @@ int FAST_FUNC do_iptunnel(char **argv) enum { ARG_add = 0, ARG_change, ARG_del, ARG_show, ARG_list, ARG_lst }; if (*argv) { - smalluint key = index_in_substrings(keywords, *argv); - if (key > 5) - bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name); + int key = index_in_substrings(keywords, *argv); + if (key < 0) + invarg(*argv, applet_name); argv++; if (key == ARG_add) return do_add(SIOCADDTUNNEL, argv); diff --git a/networking/nameif.c b/networking/nameif.c index 5d7e8f9..9a8846d 100644 --- a/networking/nameif.c +++ b/networking/nameif.c @@ -292,12 +292,11 @@ int nameif_main(int argc UNUSED_PARAM, char **argv) if (ch->mac && memcmp(ch->mac, ifr.ifr_hwaddr.sa_data, ETH_ALEN) != 0) continue; /* if we came here, all selectors have matched */ - break; + goto found; } /* Nothing found for current interface */ - if (!ch) - continue; - + continue; + found: if (strcmp(ifr.ifr_name, ch->ifname) != 0) { strcpy(ifr.ifr_newname, ch->ifname); ioctl_or_perror_and_die(ctl_sk, SIOCSIFNAME, &ifr, @@ -313,10 +312,14 @@ int nameif_main(int argc UNUSED_PARAM, char **argv) ch->next->prev = ch->prev; if (ENABLE_FEATURE_CLEAN_UP) delete_eth_table(ch); - } + } /* while */ + if (ENABLE_FEATURE_CLEAN_UP) { - for (ch = clist; ch; ch = ch->next) + ethtable_t *next; + for (ch = clist; ch; ch = next) { + next = ch->next; delete_eth_table(ch); + } config_close(parser); }; diff --git a/networking/nc.c b/networking/nc.c index 3ae73c4..6105db1 100644 --- a/networking/nc.c +++ b/networking/nc.c @@ -24,7 +24,7 @@ //config: Allow netcat to act as a server. //config: //config:config NC_EXTRA -//config: bool "Netcat extensions (-eiw and filename)" +//config: bool "Netcat extensions (-eiw and -f FILE)" //config: default y //config: depends on NC //config: help @@ -40,7 +40,7 @@ //config: This option makes nc closely follow original nc-1.10. //config: The code is about 2.5k bigger. It enables //config: -s ADDR, -n, -u, -v, -o FILE, -z options, but loses -//config: busybox-specific extensions: -f FILE and -ll. +//config: busybox-specific extensions: -f FILE. #if ENABLE_NC_110_COMPAT # include "nc_bloaty.c" @@ -60,17 +60,18 @@ //usage:#define nc_full_usage "\n\n" //usage: "Open a pipe to IP:PORT" IF_NC_EXTRA(" or FILE") //usage: NC_OPTIONS_STR -//usage: IF_NC_EXTRA( -//usage: "\n -e PROG Run PROG after connect" //usage: IF_NC_SERVER( //usage: "\n -l Listen mode, for inbound connects" //usage: IF_NC_EXTRA( -//usage: "\n (use -l twice with -e for persistent server)") +//usage: "\n (use -ll with -e for persistent server)" +//usage: ) //usage: "\n -p PORT Local port" //usage: ) -//usage: "\n -w SEC Timeout for connect" +//usage: IF_NC_EXTRA( +//usage: "\n -w SEC Connect timeout" //usage: "\n -i SEC Delay interval for lines sent" //usage: "\n -f FILE Use file (ala /dev/ttyS0) instead of network" +//usage: "\n -e PROG Run PROG after connect" //usage: ) //usage: //usage:#define nc_notes_usage "" @@ -147,7 +148,7 @@ int nc_main(int argc, char **argv) *p++ = argv[optind++]; } ) - /* optind points to argv[arvc] (NULL) now. + /* optind points to argv[argc] (NULL) now. ** FIXME: we assume that getopt will not count options ** possibly present on "-e PROG ARGS" and will not ** include them into final value of optind @@ -226,10 +227,9 @@ int nc_main(int argc, char **argv) /* child, or main thread if only one -l */ xmove_fd(cfd, 0); xdup2(0, 1); - xdup2(0, 2); + /*xdup2(0, 2); - original nc 1.10 does this, we don't */ IF_NC_EXTRA(BB_EXECVP(execparam[0], execparam);) - /* Don't print stuff or it will go over the wire... */ - _exit(127); + IF_NC_EXTRA(bb_perror_msg_and_die("can't execute '%s'", execparam[0]);) } /* Select loop copying stdin to cfd, and cfd to stdout */ @@ -261,7 +261,7 @@ int nc_main(int argc, char **argv) if (nread < 1) { /* Close outgoing half-connection so they get EOF, * but leave incoming alone so we can see response */ - shutdown(cfd, 1); + shutdown(cfd, SHUT_WR); FD_CLR(STDIN_FILENO, &readfds); } ofd = cfd; diff --git a/networking/nc_bloaty.c b/networking/nc_bloaty.c index 62a0251..b9eff3d 100644 --- a/networking/nc_bloaty.c +++ b/networking/nc_bloaty.c @@ -48,6 +48,12 @@ * - TCP connects from wrong ip/ports (if peer ip:port is specified * on the command line, but accept() says that it came from different addr) * are closed, but we don't exit - we continue to listen/accept. + * Since bbox 1.22: + * - nc exits when _both_ stdin and network are closed. + * This makes these two commands: + * echo "Yes" | nc 127.0.0.1 1234 + * echo "no" | nc -lp 1234 + * exchange their data _and exit_ instead of being stuck. */ /* done in nc.c: #include "libbb.h" */ @@ -63,6 +69,12 @@ //usage: " -e PROG Run PROG after connect (must be last)" //usage: IF_NC_SERVER( //usage: "\n -l Listen mode, for inbound connects" +//usage: "\n -lk With -e, provides persistent server" +/* -ll does the same as -lk, but its our extension, while -k is BSD'd, + * presumably more widely known. Therefore we advertise it, not -ll. + * I would like to drop -ll support, but our "small" nc supports it, + * and Rob uses it. + */ //usage: ) //usage: "\n -p PORT Local port" //usage: "\n -s ADDR Local address" @@ -128,8 +140,6 @@ struct globals { jmp_buf jbuf; /* timer crud */ - fd_set ding1; /* for select loop */ - fd_set ding2; char bigbuf_in[BIGSIZ]; /* data buffers */ char bigbuf_net[BIGSIZ]; }; @@ -141,8 +151,6 @@ struct globals { #define themaddr (G.themaddr ) #define remend (G.remend ) #define jbuf (G.jbuf ) -#define ding1 (G.ding1 ) -#define ding2 (G.ding2 ) #define bigbuf_in (G.bigbuf_in ) #define bigbuf_net (G.bigbuf_net) #define o_verbose (G.o_verbose ) @@ -166,18 +174,14 @@ enum { OPT_v = (1 << 4), OPT_w = (1 << 5), OPT_l = (1 << 6) * ENABLE_NC_SERVER, - OPT_i = (1 << (6+ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, - OPT_o = (1 << (7+ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, - OPT_z = (1 << (8+ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, + OPT_k = (1 << 7) * ENABLE_NC_SERVER, + OPT_i = (1 << (7+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, + OPT_o = (1 << (8+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, + OPT_z = (1 << (9+2*ENABLE_NC_SERVER)) * ENABLE_NC_EXTRA, }; #define o_nflag (option_mask32 & OPT_n) #define o_udpmode (option_mask32 & OPT_u) -#if ENABLE_NC_SERVER -#define o_listen (option_mask32 & OPT_l) -#else -#define o_listen 0 -#endif #if ENABLE_NC_EXTRA #define o_ofile (option_mask32 & OPT_o) #define o_zero (option_mask32 & OPT_z) @@ -298,7 +302,7 @@ static int connect_w_timeout(int fd) incoming and returns an open connection *from* someplace. If we were given host/port args, any connections from elsewhere are rejected. This in conjunction with local-address binding should limit things nicely... */ -static void dolisten(void) +static void dolisten(int is_persistent, char **proggie) { int rr; @@ -371,6 +375,7 @@ create new one, and bind() it. TODO */ xconnect(netfd, &remend.u.sa, ouraddr->len); } else { /* TCP */ + another: arm(o_wait); /* wrap this in a timer, too; 0 = forever */ if (setjmp(jbuf) == 0) { again: @@ -405,6 +410,19 @@ create new one, and bind() it. TODO */ unarm(); } else bb_error_msg_and_die("timeout"); + + if (is_persistent && proggie) { + /* -l -k -e PROG */ + signal(SIGCHLD, SIG_IGN); /* no zombies please */ + if (xvfork() != 0) { + /* parent: go back and accept more connections */ + close(rr); + goto another; + } + /* child */ + signal(SIGCHLD, SIG_DFL); + } + xmove_fd(rr, netfd); /* dump the old socket, here's our new one */ /* find out what address the connection was *to* on our end, in case we're doing a listen-on-any on a multihomed machine. This allows one to @@ -454,6 +472,9 @@ create new one, and bind() it. TODO */ if (!o_nflag) free(remhostname); } + + if (proggie) + doexec(proggie); } /* udptest: @@ -571,26 +592,27 @@ static int readwrite(void) unsigned rzleft; unsigned rnleft; unsigned netretry; /* net-read retry counter */ - unsigned wretry; /* net-write sanity counter */ - unsigned wfirst; /* one-shot flag to skip first net read */ + unsigned fds_open; /* if you don't have all this FD_* macro hair in sys/types.h, you'll have to either find it or do your own bit-bashing: *ding1 |= (1 << fd), etc... */ - FD_SET(netfd, &ding1); /* global: the net is open */ + fd_set ding1; /* for select loop */ + fd_set ding2; + FD_ZERO(&ding1); + FD_SET(netfd, &ding1); + FD_SET(STDIN_FILENO, &ding1); + fds_open = 2; + netretry = 2; - wfirst = 0; rzleft = rnleft = 0; if (o_interval) sleep(o_interval); /* pause *before* sending stuff, too */ - errno = 0; /* clear from sleep, close, whatever */ /* and now the big ol' select shoveling loop ... */ - while (FD_ISSET(netfd, &ding1)) { /* i.e. till the *net* closes! */ - wretry = 8200; /* more than we'll ever hafta write */ - if (wfirst) { /* any saved stdin buffer? */ - wfirst = 0; /* clear flag for the duration */ - goto shovel; /* and go handle it first */ - } + /* nc 1.10 has "while (FD_ISSET(netfd)" here */ + while (fds_open) { + unsigned wretry = 8200; /* net-write sanity counter */ + ding2 = ding1; /* FD_COPY ain't portable... */ /* some systems, notably linux, crap into their select timers on return, so we create a expendable copy and give *that* to select. */ @@ -610,13 +632,14 @@ static int readwrite(void) /* if we have a timeout AND stdin is closed AND we haven't heard anything from the net during that time, assume it's dead and close it too. */ if (rr == 0) { - if (!FD_ISSET(STDIN_FILENO, &ding1)) + if (!FD_ISSET(STDIN_FILENO, &ding1)) { netretry--; /* we actually try a coupla times. */ - if (!netretry) { - if (o_verbose > 1) /* normally we don't care */ - fprintf(stderr, "net timeout\n"); - close(netfd); - return 0; /* not an error! */ + if (!netretry) { + if (o_verbose > 1) /* normally we don't care */ + fprintf(stderr, "net timeout\n"); + /*close(netfd); - redundant, exit will do it */ + return 0; /* not an error! */ + } } } /* select timeout */ /* xxx: should we check the exception fds too? The read fds seem to give @@ -630,7 +653,8 @@ static int readwrite(void) /* nc 1.10 doesn't do this */ bb_perror_msg("net read"); } - FD_CLR(netfd, &ding1); /* net closed, we'll finish up... */ + FD_CLR(netfd, &ding1); /* net closed */ + fds_open--; rzleft = 0; /* can't write anymore: broken pipe */ } else { rnleft = rr; @@ -650,11 +674,12 @@ Debug("got %d from the net, errno %d", rr, errno); /* Considered making reads here smaller for UDP mode, but 8192-byte mobygrams are kinda fun and exercise the reassembler. */ if (rr <= 0) { /* at end, or fukt, or ... */ - FD_CLR(STDIN_FILENO, &ding1); /* disable and close stdin */ - close(STDIN_FILENO); -// Does it make sense to shutdown(net_fd, SHUT_WR) -// to let other side know that we won't write anything anymore? -// (and what about keeping compat if we do that?) + FD_CLR(STDIN_FILENO, &ding1); /* disable stdin */ + /*close(STDIN_FILENO); - not really necessary */ + /* Let peer know we have no more data */ + /* nc 1.10 doesn't do this: */ + shutdown(netfd, SHUT_WR); + fds_open--; } else { rzleft = rr; zp = bigbuf_in; @@ -665,24 +690,14 @@ Debug("got %d from the net, errno %d", rr, errno); Geez, why does this look an awful lot like the big loop in "rsh"? ... not sure if the order of this matters, but write net -> stdout first. */ - /* sanity check. Works because they're both unsigned... */ - if ((rzleft > 8200) || (rnleft > 8200)) { - holler_error("bogus buffers: %u, %u", rzleft, rnleft); - rzleft = rnleft = 0; - } - /* net write retries sometimes happen on UDP connections */ - if (!wretry) { /* is something hung? */ - holler_error("too many output retries"); - return 1; - } if (rnleft) { rr = write(STDOUT_FILENO, np, rnleft); if (rr > 0) { if (o_ofile) /* log the stdout */ oprint('<', (unsigned char *)np, rr); - np += rr; /* fix up ptrs and whatnot */ - rnleft -= rr; /* will get sanity-checked above */ - wrote_out += rr; /* global count */ + np += rr; + rnleft -= rr; + wrote_out += rr; /* global count */ } Debug("wrote %d to stdout, errno %d", rr, errno); } /* rnleft */ @@ -697,20 +712,24 @@ Debug("wrote %d to stdout, errno %d", rr, errno); oprint('>', (unsigned char *)zp, rr); zp += rr; rzleft -= rr; - wrote_net += rr; /* global count */ + wrote_net += rr; /* global count */ } Debug("wrote %d to net, errno %d", rr, errno); } /* rzleft */ if (o_interval) { /* cycle between slow lines, or ... */ sleep(o_interval); - errno = 0; /* clear from sleep */ continue; /* ...with hairy select loop... */ } - if ((rzleft) || (rnleft)) { /* shovel that shit till they ain't */ + if (rzleft || rnleft) { /* shovel that shit till they ain't */ wretry--; /* none left, and get another load */ + /* net write retries sometimes happen on UDP connections */ + if (!wretry) { /* is something hung? */ + holler_error("too many output retries"); + return 1; + } goto shovel; } - } /* while ding1:netfd is open */ + } /* while (fds_open) */ /* XXX: maybe want a more graceful shutdown() here, or screw around with linger times?? I suspect that I don't need to since I'm always doing @@ -730,6 +749,7 @@ int nc_main(int argc UNUSED_PARAM, char **argv) char *themdotted = themdotted; /* for compiler */ char **proggie; int x; + unsigned cnt_l = 0; unsigned o_lport = 0; INIT_G(); @@ -760,7 +780,7 @@ int nc_main(int argc UNUSED_PARAM, char **argv) if (proggie[0][0] == '-') { char *optpos = *proggie + 1; /* Skip all valid opts w/o params */ - optpos = optpos + strspn(optpos, "nuv"IF_NC_SERVER("l")IF_NC_EXTRA("z")); + optpos = optpos + strspn(optpos, "nuv"IF_NC_SERVER("lk")IF_NC_EXTRA("z")); if (*optpos == 'e' && !optpos[1]) { *optpos = '\0'; proggie++; @@ -774,17 +794,21 @@ int nc_main(int argc UNUSED_PARAM, char **argv) e_found: // -g -G -t -r deleted, unimplemented -a deleted too - opt_complementary = "?2:vv:w+"; /* max 2 params; -v is a counter; -w N */ - getopt32(argv, "np:s:uvw:" IF_NC_SERVER("l") + opt_complementary = "?2:vv:ll:w+"; /* max 2 params; -v and -l are counters; -w N */ + getopt32(argv, "np:s:uvw:" IF_NC_SERVER("lk") IF_NC_EXTRA("i:o:z"), &str_p, &str_s, &o_wait - IF_NC_EXTRA(, &str_i, &str_o), &o_verbose); + IF_NC_EXTRA(, &str_i, &str_o), &o_verbose IF_NC_SERVER(, &cnt_l)); argv += optind; #if ENABLE_NC_EXTRA if (option_mask32 & OPT_i) /* line-interval time */ o_interval = xatou_range(str_i, 1, 0xffff); #endif +#if ENABLE_NC_SERVER //if (option_mask32 & OPT_l) /* listen mode */ + if (option_mask32 & OPT_k) /* persistent server mode */ + cnt_l = 2; +#endif //if (option_mask32 & OPT_n) /* numeric-only, no DNS lookups */ //if (option_mask32 & OPT_o) /* hexdump log */ if (option_mask32 & OPT_p) { /* local source port */ @@ -833,7 +857,7 @@ int nc_main(int argc UNUSED_PARAM, char **argv) if (o_udpmode) socket_want_pktinfo(netfd); if (!ENABLE_FEATURE_UNIX_LOCAL - || o_listen + || cnt_l != 0 /* listen */ || ouraddr->u.sa.sa_family != AF_UNIX ) { xbind(netfd, &ouraddr->u.sa, ouraddr->len); @@ -852,9 +876,8 @@ int nc_main(int argc UNUSED_PARAM, char **argv) } #endif - FD_SET(STDIN_FILENO, &ding1); /* stdin *is* initially open */ if (proggie) { - close(0); /* won't need stdin */ + close(STDIN_FILENO); /* won't need stdin */ option_mask32 &= ~OPT_o; /* -o with -e is meaningless! */ } #if ENABLE_NC_EXTRA @@ -862,11 +885,9 @@ int nc_main(int argc UNUSED_PARAM, char **argv) xmove_fd(xopen(str_o, O_WRONLY|O_CREAT|O_TRUNC), ofd); #endif - if (o_listen) { - dolisten(); + if (cnt_l != 0) { + dolisten((cnt_l - 1), proggie); /* dolisten does its own connect reporting */ - if (proggie) /* -e given? */ - doexec(proggie); x = readwrite(); /* it even works with UDP! */ } else { /* Outbound connects. Now we're more picky about args... */ diff --git a/networking/netstat.c b/networking/netstat.c index c0c6ba5..f80b845 100644 --- a/networking/netstat.c +++ b/networking/netstat.c @@ -125,10 +125,10 @@ typedef enum { */ #define ADDR_WIDE 51 /* INET6_ADDRSTRLEN + 5 for the port number */ #if ENABLE_FEATURE_NETSTAT_WIDE -# define FMT_NET_CONN_DATA "%s %6ld %6ld %-*s %-*s %-12s" +# define FMT_NET_CONN_DATA "%s %6lu %6lu %-*s %-*s %-12s" # define FMT_NET_CONN_HEADER "\nProto Recv-Q Send-Q %-*s %-*s State %s\n" #else -# define FMT_NET_CONN_DATA "%s %6ld %6ld %-23s %-23s %-12s" +# define FMT_NET_CONN_DATA "%s %6lu %6lu %-23s %-23s %-12s" # define FMT_NET_CONN_HEADER "\nProto Recv-Q Send-Q %-23s %-23s State %s\n" #endif @@ -403,7 +403,7 @@ static int scan_inet_proc_line(struct inet_params *param, char *line) "%*d: %32[0-9A-Fa-f]:%X " "%32[0-9A-Fa-f]:%X %X " "%lX:%lX %*X:%*X " - "%*X %d %*d %ld ", + "%*X %d %*d %lu ", local_addr, ¶m->local_port, rem_addr, ¶m->rem_port, ¶m->state, ¶m->txq, ¶m->rxq, @@ -611,7 +611,7 @@ static int FAST_FUNC unix_do_one(char *line) strcat(ss_flags, "N "); strcat(ss_flags, "]"); - printf("%-5s %-6ld %-11s %-10s %-13s %6lu ", + printf("%-5s %-6lu %-11s %-10s %-13s %6lu ", ss_proto, refcnt, ss_flags, ss_type, ss_state, inode ); diff --git a/networking/nslookup.c b/networking/nslookup.c index 62e2c6e..77337cf 100644 --- a/networking/nslookup.c +++ b/networking/nslookup.c @@ -150,6 +150,9 @@ static void set_default_dns(const char *server) { len_and_sockaddr *lsa; + if (!server) + return; + /* NB: this works even with, say, "[::1]:5353"! :) */ lsa = xhost2sockaddr(server, 53); @@ -193,9 +196,17 @@ int nslookup_main(int argc, char **argv) /* (but it also says "may be enabled in /etc/resolv.conf") */ /*_res.options |= RES_USE_INET6;*/ - if (argv[2]) - set_default_dns(argv[2]); + set_default_dns(argv[2]); server_print(); + + /* getaddrinfo and friends are free to request a resolver + * reinitialization. Just in case, set_default_dns() again + * after getaddrinfo (in server_print). This reportedly helps + * with bug 675 "nslookup does not properly use second argument" + * at least on Debian Wheezy and Openwrt AA (eglibc based). + */ + set_default_dns(argv[2]); + return print_host(argv[1], "Name:"); } diff --git a/networking/ntpd.c b/networking/ntpd.c index 447a464..1c1c38f 100644 --- a/networking/ntpd.c +++ b/networking/ntpd.c @@ -63,10 +63,10 @@ extern int adjtimex (struct timex *); /* Verbosity control (max level of -dddd options accepted). - * max 5 is very talkative (and bloated). 2 is non-bloated, + * max 6 is very talkative (and bloated). 3 is non-bloated, * production level setting. */ -#define MAX_VERBOSE 2 +#define MAX_VERBOSE 3 /* High-level description of the algorithm: @@ -96,11 +96,24 @@ extern int adjtimex (struct timex *); * was hibernated, someone set totally wrong date, etc), * then the time is stepped, all datapoints are discarded, * and we go back to steady state. + * + * Made some changes to speed up re-syncing after our clock goes bad + * (tested with suspending my laptop): + * - if largish offset (>= STEP_THRESHOLD * 8 == 1 sec) is seen + * from a peer, schedule next query for this peer soon + * without drastically lowering poll interval for everybody. + * This makes us collect enough data for step much faster: + * e.g. at poll = 10 (1024 secs), step was done within 5 minutes + * after first reply which indicated that our clock is 14 seconds off. + * - on step, do not discard d_dispersion data of the existing datapoints, + * do not clear reachable_bits. This prevents discarding first ~8 + * datapoints after the step. */ -#define RETRY_INTERVAL 5 /* on error, retry in N secs */ +#define RETRY_INTERVAL 5 /* on error, retry in N secs */ #define RESPONSE_INTERVAL 15 /* wait for reply up to N secs */ -#define INITIAL_SAMPLES 4 /* how many samples do we want for init */ +#define INITIAL_SAMPLES 4 /* how many samples do we want for init */ +#define BAD_DELAY_GROWTH 4 /* drop packet if its delay grew by more than this */ /* Clock discipline parameters and constants */ @@ -114,6 +127,10 @@ extern int adjtimex (struct timex *); #define FREQ_TOLERANCE 0.000015 /* frequency tolerance (15 PPM) */ #define BURSTPOLL 0 /* initial poll */ #define MINPOLL 5 /* minimum poll interval. std ntpd uses 6 (6: 64 sec) */ +/* If we got largish offset from a peer, cap next query interval + * for this peer by this many seconds: + */ +#define BIGOFF_INTERVAL (1 << 6) /* If offset > discipline_jitter * POLLADJ_GATE, and poll interval is >= 2^BIGPOLL, * then it is decreased _at once_. (If < 2^BIGPOLL, it will be decreased _eventually_). */ @@ -233,8 +250,8 @@ typedef struct { uint8_t lastpkt_status; uint8_t lastpkt_stratum; uint8_t reachable_bits; - /* when to send new query (if p_fd == -1) - * or when receive times out (if p_fd >= 0): */ + /* when to send new query (if p_fd == -1) + * or when receive times out (if p_fd >= 0): */ double next_action_time; double p_xmttime; double lastpkt_recv_time; @@ -339,7 +356,7 @@ struct globals { #define STATE_NSET 0 /* initial state, "nothing is set" */ //#define STATE_FSET 1 /* frequency set from file */ -#define STATE_SPIK 2 /* spike detected */ +//#define STATE_SPIK 2 /* spike detected */ //#define STATE_FREQ 3 /* initial frequency */ #define STATE_SYNC 4 /* clock synchronized (normal operation) */ uint8_t discipline_state; // doc calls it c.state @@ -372,6 +389,7 @@ static const int const_IPTOS_LOWDELAY = IPTOS_LOWDELAY; #define VERB3 if (MAX_VERBOSE >= 3 && G.verbose >= 3) #define VERB4 if (MAX_VERBOSE >= 4 && G.verbose >= 4) #define VERB5 if (MAX_VERBOSE >= 5 && G.verbose >= 5) +#define VERB6 if (MAX_VERBOSE >= 6 && G.verbose >= 6) static double LOG2D(int a) @@ -573,7 +591,7 @@ filter_datapoints(peer_t *p) got_newest = 0; sum = 0; for (i = 0; i < NUM_DATAPOINTS; i++) { - VERB4 { + VERB5 { bb_error_msg("datapoint[%d]: off:%f disp:%f(%f) age:%f%s", i, fdp[idx].d_offset, @@ -670,7 +688,7 @@ filter_datapoints(peer_t *p) sum = SQRT(sum / NUM_DATAPOINTS); p->filter_jitter = sum > G_precision_sec ? sum : G_precision_sec; - VERB3 bb_error_msg("filter offset:%+f disp:%f jitter:%f", + VERB4 bb_error_msg("filter offset:%+f disp:%f jitter:%f", p->filter_offset, p->filter_dispersion, p->filter_jitter); @@ -682,6 +700,18 @@ reset_peer_stats(peer_t *p, double offset) int i; bool small_ofs = fabs(offset) < 16 * STEP_THRESHOLD; + /* Used to set p->filter_datapoint[i].d_dispersion = MAXDISP + * and clear reachable bits, but this proved to be too agressive: + * after step (tested with suspinding laptop for ~30 secs), + * this caused all previous data to be considered invalid, + * making us needing to collect full ~8 datapoins per peer + * after step in order to start trusting them. + * In turn, this was making poll interval decrease even after + * step was done. (Poll interval decreases already before step + * in this scenario, because we see large offsets and end up with + * no good peer to select). + */ + for (i = 0; i < NUM_DATAPOINTS; i++) { if (small_ofs) { p->filter_datapoint[i].d_recv_time += offset; @@ -695,17 +725,17 @@ reset_peer_stats(peer_t *p, double offset) } else { p->filter_datapoint[i].d_recv_time = G.cur_time; p->filter_datapoint[i].d_offset = 0; - p->filter_datapoint[i].d_dispersion = MAXDISP; + /*p->filter_datapoint[i].d_dispersion = MAXDISP;*/ } } if (small_ofs) { p->lastpkt_recv_time += offset; } else { - p->reachable_bits = 0; + /*p->reachable_bits = 0;*/ p->lastpkt_recv_time = G.cur_time; } filter_datapoints(p); /* recalc p->filter_xxx */ - VERB5 bb_error_msg("%s->lastpkt_recv_time=%f", p->p_dotted, p->lastpkt_recv_time); + VERB6 bb_error_msg("%s->lastpkt_recv_time=%f", p->p_dotted, p->lastpkt_recv_time); } static void @@ -810,22 +840,34 @@ send_query_to_peer(peer_t *p) p->p_xmt_msg.m_xmttime.fractionl = random(); p->p_xmttime = gettime1900d(); + /* Were doing it only if sendto worked, but + * loss of sync detection needs reachable_bits updated + * even if sending fails *locally*: + * "network is unreachable" because cable was pulled? + * We still need to declare "unsync" if this condition persists. + */ + p->reachable_bits <<= 1; + if (do_sendto(p->p_fd, /*from:*/ NULL, /*to:*/ &p->p_lsa->u.sa, /*addrlen:*/ p->p_lsa->len, &p->p_xmt_msg, NTP_MSGSIZE_NOAUTH) == -1 ) { close(p->p_fd); p->p_fd = -1; + /* + * We know that we sent nothing. + * We can retry *soon* without fearing + * that we are flooding the peer. + */ set_next(p, RETRY_INTERVAL); return; } - p->reachable_bits <<= 1; set_next(p, RESPONSE_INTERVAL); } /* Note that there is no provision to prevent several run_scripts - * to be done in quick succession. In fact, it happens rather often + * to be started in quick succession. In fact, it happens rather often * if initial syncronization results in a step. * You will see "step" and then "stratum" script runs, sometimes * as close as only 0.002 seconds apart. @@ -836,6 +878,8 @@ static void run_script(const char *action, double offset) char *argv[3]; char *env1, *env2, *env3, *env4; + G.last_script_run = G.cur_time; + if (!G.script_name) return; @@ -872,8 +916,6 @@ static void run_script(const char *action, double offset) free(env2); free(env3); free(env4); - - G.last_script_run = G.cur_time; } static NOINLINE void @@ -893,11 +935,11 @@ step_time(double offset) VERB2 { tval = tvc.tv_sec; - strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&tval)); + strftime_YYYYMMDDHHMMSS(buf, sizeof(buf), &tval); bb_error_msg("current time is %s.%06u", buf, (unsigned)tvc.tv_usec); } tval = tvn.tv_sec; - strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", localtime(&tval)); + strftime_YYYYMMDDHHMMSS(buf, sizeof(buf), &tval); bb_error_msg("setting time to %s.%06u (offset %+fs)", buf, (unsigned)tvn.tv_usec, offset); /* Correct various fields which contain time-relative values: */ @@ -965,20 +1007,20 @@ fit(peer_t *p, double rd) { if ((p->reachable_bits & (p->reachable_bits-1)) == 0) { /* One or zero bits in reachable_bits */ - VERB3 bb_error_msg("peer %s unfit for selection: unreachable", p->p_dotted); + VERB4 bb_error_msg("peer %s unfit for selection: unreachable", p->p_dotted); return 0; } #if 0 /* we filter out such packets earlier */ if ((p->lastpkt_status & LI_ALARM) == LI_ALARM || p->lastpkt_stratum >= MAXSTRAT ) { - VERB3 bb_error_msg("peer %s unfit for selection: bad status/stratum", p->p_dotted); + VERB4 bb_error_msg("peer %s unfit for selection: bad status/stratum", p->p_dotted); return 0; } #endif /* rd is root_distance(p) */ if (rd > MAXDIST + FREQ_TOLERANCE * (1 << G.poll_exp)) { - VERB3 bb_error_msg("peer %s unfit for selection: root distance too high", p->p_dotted); + VERB4 bb_error_msg("peer %s unfit for selection: root distance too high", p->p_dotted); return 0; } //TODO @@ -1018,7 +1060,7 @@ select_and_cluster(void) continue; } - VERB4 bb_error_msg("interval: [%f %f %f] %s", + VERB5 bb_error_msg("interval: [%f %f %f] %s", offset - rd, offset, offset + rd, @@ -1043,7 +1085,7 @@ select_and_cluster(void) } num_candidates = num_points / 3; if (num_candidates == 0) { - VERB3 bb_error_msg("no valid datapoints, no peer selected"); + VERB3 bb_error_msg("no valid datapoints%s", ", no peer selected"); return NULL; } //TODO: sorting does not seem to be done in reference code @@ -1101,12 +1143,13 @@ select_and_cluster(void) break; num_falsetickers++; if (num_falsetickers * 2 >= num_candidates) { - VERB3 bb_error_msg("too many falsetickers:%d (candidates:%d), no peer selected", - num_falsetickers, num_candidates); + VERB3 bb_error_msg("falsetickers:%d, candidates:%d%s", + num_falsetickers, num_candidates, + ", no peer selected"); return NULL; } } - VERB3 bb_error_msg("selected interval: [%f, %f]; candidates:%d falsetickers:%d", + VERB4 bb_error_msg("selected interval: [%f, %f]; candidates:%d falsetickers:%d", low, high, num_candidates, num_falsetickers); /* Clustering */ @@ -1124,7 +1167,7 @@ select_and_cluster(void) survivor[num_survivors].p = p; /* x.opt_rd == root_distance(p); */ survivor[num_survivors].metric = MAXDIST * p->lastpkt_stratum + point[i].opt_rd; - VERB4 bb_error_msg("survivor[%d] metric:%f peer:%s", + VERB5 bb_error_msg("survivor[%d] metric:%f peer:%s", num_survivors, survivor[num_survivors].metric, p->p_dotted); num_survivors++; } @@ -1134,8 +1177,9 @@ select_and_cluster(void) * is acceptable. */ if (num_survivors < MIN_SELECTED) { - VERB3 bb_error_msg("num_survivors %d < %d, no peer selected", - num_survivors, MIN_SELECTED); + VERB3 bb_error_msg("survivors:%d%s", + num_survivors, + ", no peer selected"); return NULL; } @@ -1155,7 +1199,7 @@ select_and_cluster(void) double min_jitter = min_jitter; if (num_survivors <= MIN_CLUSTERED) { - VERB3 bb_error_msg("num_survivors %d <= %d, not discarding more", + VERB4 bb_error_msg("num_survivors %d <= %d, not discarding more", num_survivors, MIN_CLUSTERED); break; } @@ -1181,11 +1225,11 @@ select_and_cluster(void) max_selection_jitter = selection_jitter_sq; max_idx = i; } - VERB5 bb_error_msg("survivor %d selection_jitter^2:%f", + VERB6 bb_error_msg("survivor %d selection_jitter^2:%f", i, selection_jitter_sq); } max_selection_jitter = SQRT(max_selection_jitter / num_survivors); - VERB4 bb_error_msg("max_selection_jitter (at %d):%f min_jitter:%f", + VERB5 bb_error_msg("max_selection_jitter (at %d):%f min_jitter:%f", max_idx, max_selection_jitter, min_jitter); /* If the maximum selection jitter is less than the @@ -1194,7 +1238,7 @@ select_and_cluster(void) * as well stop. */ if (max_selection_jitter < min_jitter) { - VERB3 bb_error_msg("max_selection_jitter:%f < min_jitter:%f, num_survivors:%d, not discarding more", + VERB4 bb_error_msg("max_selection_jitter:%f < min_jitter:%f, num_survivors:%d, not discarding more", max_selection_jitter, min_jitter, num_survivors); break; } @@ -1202,7 +1246,7 @@ select_and_cluster(void) /* Delete survivor[max_idx] from the list * and go around again. */ - VERB5 bb_error_msg("dropping survivor %d", max_idx); + VERB6 bb_error_msg("dropping survivor %d", max_idx); num_survivors--; while (max_idx < num_survivors) { survivor[max_idx] = survivor[max_idx + 1]; @@ -1244,7 +1288,7 @@ select_and_cluster(void) /* Starting from 1 is ok here */ for (i = 1; i < num_survivors; i++) { if (G.last_update_peer == survivor[i].p) { - VERB4 bb_error_msg("keeping old synced peer"); + VERB5 bb_error_msg("keeping old synced peer"); p = G.last_update_peer; goto keep_old; } @@ -1252,7 +1296,7 @@ select_and_cluster(void) } G.last_update_peer = p; keep_old: - VERB3 bb_error_msg("selected peer %s filter_offset:%+f age:%f", + VERB4 bb_error_msg("selected peer %s filter_offset:%+f age:%f", p->p_dotted, p->filter_offset, G.cur_time - p->lastpkt_recv_time @@ -1271,7 +1315,7 @@ set_new_values(int disc_state, double offset, double recv_time) * of the last clock filter sample, which must be earlier than * the current time. */ - VERB3 bb_error_msg("disc_state=%d last update offset=%f recv_time=%f", + VERB4 bb_error_msg("disc_state=%d last update offset=%f recv_time=%f", disc_state, offset, recv_time); G.discipline_state = disc_state; G.last_update_offset = offset; @@ -1309,8 +1353,8 @@ update_local_clock(peer_t *p) * an old sample or the same sample twice. */ if (recv_time <= G.last_update_recv_time) { - VERB3 bb_error_msg("same or older datapoint: %f >= %f, not using it", - G.last_update_recv_time, recv_time); + VERB3 bb_error_msg("update from %s: same or older datapoint, not using it", + p->p_dotted); return 0; /* "leave poll interval as is" */ } @@ -1326,7 +1370,7 @@ update_local_clock(peer_t *p) if (G.discipline_state == STATE_FREQ) { /* Ignore updates until the stepout threshold */ if (since_last_update < WATCH_THRESHOLD) { - VERB3 bb_error_msg("measuring drift, datapoint ignored, %f sec remains", + VERB4 bb_error_msg("measuring drift, datapoint ignored, %f sec remains", WATCH_THRESHOLD - since_last_update); return 0; /* "leave poll interval as is" */ } @@ -1340,10 +1384,21 @@ update_local_clock(peer_t *p) * offset exceeds the step threshold and when it does not. */ if (abs_offset > STEP_THRESHOLD) { +#if 0 + double remains; + +// This "spike state" seems to be useless, peer selection already drops +// occassional "bad" datapoints. If we are here, there were _many_ +// large offsets. When a few first large offsets are seen, +// we end up in "no valid datapoints, no peer selected" state. +// Only when enough of them are seen (which means it's not a fluke), +// we end up here. Looks like _our_ clock is off. switch (G.discipline_state) { case STATE_SYNC: /* The first outlyer: ignore it, switch to SPIK state */ - VERB3 bb_error_msg("offset:%+f - spike detected", offset); + VERB3 bb_error_msg("update from %s: offset:%+f, spike%s", + p->p_dotted, offset, + ""); G.discipline_state = STATE_SPIK; return -1; /* "decrease poll interval" */ @@ -1351,13 +1406,16 @@ update_local_clock(peer_t *p) /* Ignore succeeding outlyers until either an inlyer * is found or the stepout threshold is exceeded. */ - if (since_last_update < WATCH_THRESHOLD) { - VERB3 bb_error_msg("spike detected, datapoint ignored, %f sec remains", - WATCH_THRESHOLD - since_last_update); + remains = WATCH_THRESHOLD - since_last_update; + if (remains > 0) { + VERB3 bb_error_msg("update from %s: offset:%+f, spike%s", + p->p_dotted, offset, + ", datapoint ignored"); return -1; /* "decrease poll interval" */ } /* fall through: we need to step */ } /* switch */ +#endif /* Step the time and clamp down the poll interval. * @@ -1380,7 +1438,7 @@ update_local_clock(peer_t *p) * is always suppressed, even at the longer poll * intervals. */ - VERB3 bb_error_msg("stepping time by %+f; poll_exp=MINPOLL", offset); + VERB4 bb_error_msg("stepping time by %+f; poll_exp=MINPOLL", offset); step_time(offset); if (option_mask32 & OPT_q) { /* We were only asked to set time once. Done. */ @@ -1393,6 +1451,8 @@ update_local_clock(peer_t *p) run_script("step", offset); + recv_time += offset; + #if USING_INITIAL_FREQ_ESTIMATION if (G.discipline_state == STATE_NSET) { set_new_values(STATE_FREQ, /*offset:*/ 0, recv_time); @@ -1405,7 +1465,7 @@ update_local_clock(peer_t *p) } else { /* abs_offset <= STEP_THRESHOLD */ if (G.poll_exp < MINPOLL && G.initial_poll_complete) { - VERB3 bb_error_msg("small offset:%+f, disabling burst mode", offset); + VERB4 bb_error_msg("small offset:%+f, disabling burst mode", offset); G.polladj_count = 0; G.poll_exp = MINPOLL; } @@ -1434,7 +1494,7 @@ update_local_clock(peer_t *p) #else set_new_values(STATE_SYNC, offset, recv_time); #endif - VERB3 bb_error_msg("transitioning to FREQ, datapoint ignored"); + VERB4 bb_error_msg("transitioning to FREQ, datapoint ignored"); return 0; /* "leave poll interval as is" */ #if 0 /* this is dead code for now */ @@ -1503,7 +1563,7 @@ update_local_clock(peer_t *p) dtemp = p->filter_jitter; // SQRT(SQUARE(p->filter_jitter) + SQUARE(G.cluster_jitter)); dtemp += MAXD(p->filter_dispersion + FREQ_TOLERANCE * (G.cur_time - p->lastpkt_recv_time) + abs_offset, MINDISP); G.rootdisp = p->lastpkt_rootdisp + dtemp; - VERB3 bb_error_msg("updating leap/refid/reftime/rootdisp from peer %s", p->p_dotted); + VERB4 bb_error_msg("updating leap/refid/reftime/rootdisp from peer %s", p->p_dotted); /* We are in STATE_SYNC now, but did not do adjtimex yet. * (Any other state does not reach this, they all return earlier) @@ -1523,13 +1583,13 @@ update_local_clock(peer_t *p) dtemp = SQUARE(dtemp); G.discipline_wander = SQRT(etemp + (dtemp - etemp) / AVG); - VERB3 bb_error_msg("discipline freq_drift=%.9f(int:%ld corr:%e) wander=%f", + VERB4 bb_error_msg("discipline freq_drift=%.9f(int:%ld corr:%e) wander=%f", G.discipline_freq_drift, (long)(G.discipline_freq_drift * 65536e6), freq_drift, G.discipline_wander); #endif - VERB3 { + VERB4 { memset(&tmx, 0, sizeof(tmx)); if (adjtimex(&tmx) < 0) bb_perror_msg_and_die("adjtimex"); @@ -1577,7 +1637,7 @@ update_local_clock(peer_t *p) /* NB: here kernel returns constant == G.poll_exp, not == G.poll_exp - 4. * Not sure why. Perhaps it is normal. */ - VERB3 bb_error_msg("adjtimex:%d freq:%ld offset:%+ld status:0x%x", + VERB4 bb_error_msg("adjtimex:%d freq:%ld offset:%+ld status:0x%x", rc, tmx.freq, tmx.offset, tmx.status); G.kernel_freq_drift = tmx.freq / 65536; VERB2 bb_error_msg("update from:%s offset:%+f jitter:%f clock drift:%+.3fppm tc:%d", @@ -1599,7 +1659,7 @@ retry_interval(void) interval = RETRY_INTERVAL; r = random(); interval += r % (unsigned)(RETRY_INTERVAL / 4); - VERB3 bb_error_msg("chose retry interval:%u", interval); + VERB4 bb_error_msg("chose retry interval:%u", interval); return interval; } static unsigned @@ -1612,7 +1672,7 @@ poll_interval(int exponent) interval = 1 << exponent; r = random(); interval += ((r & (interval-1)) >> 4) + ((r >> 8) & 1); /* + 1/16 of interval, max */ - VERB3 bb_error_msg("chose poll interval:%u (poll_exp:%d exp:%d)", interval, G.poll_exp, exponent); + VERB4 bb_error_msg("chose poll interval:%u (poll_exp:%d exp:%d)", interval, G.poll_exp, exponent); return interval; } static NOINLINE void @@ -1622,10 +1682,13 @@ recv_and_process_peer_pkt(peer_t *p) ssize_t size; msg_t msg; double T1, T2, T3, T4; + double dv, offset; unsigned interval; datapoint_t *datapoint; peer_t *q; + offset = 0; + /* We can recvfrom here and check from.IP, but some multihomed * ntp servers reply from their *other IP*. * TODO: maybe we should check at least what we can: from.port == 123? @@ -1671,9 +1734,8 @@ recv_and_process_peer_pkt(peer_t *p) // TODO: stratum 0 responses may have commands in 32-bit m_refid field: // "DENY", "RSTR" - peer does not like us at all // "RATE" - peer is overloaded, reduce polling freq - interval = poll_interval(0); - bb_error_msg("reply from %s: peer is unsynced, next query in %us", p->p_dotted, interval); - goto set_next_and_ret; + bb_error_msg("reply from %s: peer is unsynced", p->p_dotted); + goto pick_normal_interval; } // /* Verify valid root distance */ @@ -1706,27 +1768,37 @@ recv_and_process_peer_pkt(peer_t *p) T4 = G.cur_time; p->lastpkt_recv_time = T4; + VERB6 bb_error_msg("%s->lastpkt_recv_time=%f", p->p_dotted, p->lastpkt_recv_time); - VERB5 bb_error_msg("%s->lastpkt_recv_time=%f", p->p_dotted, p->lastpkt_recv_time); - p->datapoint_idx = p->reachable_bits ? (p->datapoint_idx + 1) % NUM_DATAPOINTS : 0; - datapoint = &p->filter_datapoint[p->datapoint_idx]; - datapoint->d_recv_time = T4; - datapoint->d_offset = ((T2 - T1) + (T3 - T4)) / 2; /* The delay calculation is a special case. In cases where the * server and client clocks are running at different rates and * with very fast networks, the delay can appear negative. In * order to avoid violating the Principle of Least Astonishment, * the delay is clamped not less than the system precision. */ + dv = p->lastpkt_delay; p->lastpkt_delay = (T4 - T1) - (T3 - T2); if (p->lastpkt_delay < G_precision_sec) p->lastpkt_delay = G_precision_sec; + /* + * If this packet's delay is much bigger than the last one, + * it's better to just ignore it than use its much less precise value. + */ + if (p->reachable_bits && p->lastpkt_delay > dv * BAD_DELAY_GROWTH) { + bb_error_msg("reply from %s: delay %f is too high, ignoring", p->p_dotted, p->lastpkt_delay); + goto pick_normal_interval; + } + + p->datapoint_idx = p->reachable_bits ? (p->datapoint_idx + 1) % NUM_DATAPOINTS : 0; + datapoint = &p->filter_datapoint[p->datapoint_idx]; + datapoint->d_recv_time = T4; + datapoint->d_offset = offset = ((T2 - T1) + (T3 - T4)) / 2; datapoint->d_dispersion = LOG2D(msg.m_precision_exp) + G_precision_sec; if (!p->reachable_bits) { /* 1st datapoint ever - replicate offset in every element */ int i; for (i = 0; i < NUM_DATAPOINTS; i++) { - p->filter_datapoint[i].d_offset = datapoint->d_offset; + p->filter_datapoint[i].d_offset = offset; } } @@ -1734,7 +1806,7 @@ recv_and_process_peer_pkt(peer_t *p) if ((MAX_VERBOSE && G.verbose) || (option_mask32 & OPT_w)) { bb_error_msg("reply from %s: offset:%+f delay:%f status:0x%02x strat:%d refid:0x%08x rootdelay:%f reach:0x%02x", p->p_dotted, - datapoint->d_offset, + offset, p->lastpkt_delay, p->lastpkt_status, p->lastpkt_stratum, @@ -1759,7 +1831,7 @@ recv_and_process_peer_pkt(peer_t *p) * drop poll interval one step down. */ if (fabs(q->filter_offset) >= POLLDOWN_OFFSET) { - VERB3 bb_error_msg("offset:%+f > POLLDOWN_OFFSET", q->filter_offset); + VERB4 bb_error_msg("offset:%+f > POLLDOWN_OFFSET", q->filter_offset); goto poll_down; } } @@ -1781,11 +1853,11 @@ recv_and_process_peer_pkt(peer_t *p) G.polladj_count = 0; if (G.poll_exp < MAXPOLL) { G.poll_exp++; - VERB3 bb_error_msg("polladj: discipline_jitter:%f ++poll_exp=%d", + VERB4 bb_error_msg("polladj: discipline_jitter:%f ++poll_exp=%d", G.discipline_jitter, G.poll_exp); } } else { - VERB3 bb_error_msg("polladj: incr:%d", G.polladj_count); + VERB4 bb_error_msg("polladj: incr:%d", G.polladj_count); } } else { G.polladj_count -= G.poll_exp * 2; @@ -1807,17 +1879,32 @@ recv_and_process_peer_pkt(peer_t *p) if (pp->p_fd < 0) pp->next_action_time -= (1 << G.poll_exp); } - VERB3 bb_error_msg("polladj: discipline_jitter:%f --poll_exp=%d", + VERB4 bb_error_msg("polladj: discipline_jitter:%f --poll_exp=%d", G.discipline_jitter, G.poll_exp); } } else { - VERB3 bb_error_msg("polladj: decr:%d", G.polladj_count); + VERB4 bb_error_msg("polladj: decr:%d", G.polladj_count); } } } /* Decide when to send new query for this peer */ + pick_normal_interval: interval = poll_interval(0); + if (fabs(offset) >= STEP_THRESHOLD * 8 && interval > BIGOFF_INTERVAL) { + /* If we are synced, offsets are less than STEP_THRESHOLD, + * or at the very least not much larger than it. + * Now we see a largish one. + * Either this peer is feeling bad, or packet got corrupted, + * or _our_ clock is wrong now and _all_ peers will show similar + * largish offsets too. + * I observed this with laptop suspend stopping clock. + * In any case, it makes sense to make next request soonish: + * cases 1 and 2: get a better datapoint, + * case 3: allows to resync faster. + */ + interval = BIGOFF_INTERVAL; + } set_next_and_ret: set_next(p, interval); @@ -2165,12 +2252,14 @@ int ntpd_main(int argc UNUSED_PARAM, char **argv) did_poll: gettime1900d(); /* sets G.cur_time */ if (nfds <= 0) { - if (G.script_name && G.cur_time - G.last_script_run > 11*60) { + if (!bb_got_signal /* poll wasn't interrupted by a signal */ + && G.cur_time - G.last_script_run > 11*60 + ) { /* Useful for updating battery-backed RTC and such */ run_script("periodic", G.last_update_offset); gettime1900d(); /* sets G.cur_time */ } - continue; + goto check_unsync; } /* Process any received packets */ @@ -2201,6 +2290,21 @@ int ntpd_main(int argc UNUSED_PARAM, char **argv) gettime1900d(); /* sets G.cur_time */ } } + + check_unsync: + if (G.ntp_peers && G.stratum != MAXSTRAT) { + for (item = G.ntp_peers; item != NULL; item = item->link) { + peer_t *p = (peer_t *) item->data; + if (p->reachable_bits) + goto have_reachable_peer; + } + /* No peer responded for last 8 packets, panic */ + G.polladj_count = 0; + G.poll_exp = MINPOLL; + G.stratum = MAXSTRAT; + run_script("unsync", 0.0); + have_reachable_peer: ; + } } /* while (!bb_got_signal) */ remove_pidfile(CONFIG_PID_FILE_PATH "/ntpd.pid"); diff --git a/networking/ntpd_simple.c b/networking/ntpd_simple.c index 55bded8..3e7fc47 100644 --- a/networking/ntpd_simple.c +++ b/networking/ntpd_simple.c @@ -378,7 +378,7 @@ step_time_once(double offset) bb_perror_msg_and_die("settimeofday"); tval = tv.tv_sec; - strftime(buf, sizeof(buf), "%a %b %e %H:%M:%S %Z %Y", localtime(&tval)); + strftime_YYYYMMDDHHMMSS(buf, sizeof(buf), &tval); bb_error_msg("setting clock to %s (offset %fs)", buf, offset); diff --git a/networking/ping.c b/networking/ping.c index ac67d46..b207442 100644 --- a/networking/ping.c +++ b/networking/ping.c @@ -89,7 +89,9 @@ //usage: "[OPTIONS] HOST" //usage:# define ping_full_usage "\n\n" //usage: "Send ICMP ECHO_REQUEST packets to network hosts\n" +//usage: IF_PING6( //usage: "\n -4,-6 Force IP or IPv6 name resolution" +//usage: ) //usage: "\n -c CNT Send only CNT pings" //usage: "\n -s SIZE Send SIZE data bytes in packets (default:56)" //usage: "\n -t TTL Set TTL" @@ -147,8 +149,46 @@ enum { MAX_DUP_CHK = (8 * 128), MAXWAIT = 10, PINGINTERVAL = 1, /* 1 second */ + pingsock = 0, }; +static void +#if ENABLE_PING6 +create_icmp_socket(len_and_sockaddr *lsa) +#else +create_icmp_socket(void) +#define create_icmp_socket(lsa) create_icmp_socket() +#endif +{ + int sock; +#if ENABLE_PING6 + if (lsa->u.sa.sa_family == AF_INET6) + sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6); + else +#endif + sock = socket(AF_INET, SOCK_RAW, 1); /* 1 == ICMP */ + if (sock < 0) { + if (errno != EPERM) + bb_perror_msg_and_die("%s", bb_msg_can_not_create_raw_socket); +#if defined(__linux__) || defined(__APPLE__) + /* We don't have root privileges. Try SOCK_DGRAM instead. + * Linux needs net.ipv4.ping_group_range for this to work. + * MacOSX allows ICMP_ECHO, ICMP_TSTAMP or ICMP_MASKREQ + */ +#if ENABLE_PING6 + if (lsa->u.sa.sa_family == AF_INET6) + sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6); + else +#endif + sock = socket(AF_INET, SOCK_DGRAM, 1); /* 1 == ICMP */ + if (sock < 0) +#endif + bb_error_msg_and_die("%s", bb_msg_perm_denied_are_you_root); + } + + xmove_fd(sock, pingsock); +} + #if !ENABLE_FEATURE_FANCY_PING /* Simple version */ @@ -169,12 +209,10 @@ static void noresp(int ign UNUSED_PARAM) static void ping4(len_and_sockaddr *lsa) { struct icmp *pkt; - int pingsock, c; - - pingsock = create_icmp_socket(); + int c; pkt = (struct icmp *) G.packet; - memset(pkt, 0, sizeof(G.packet)); + /*memset(pkt, 0, sizeof(G.packet)); already is */ pkt->icmp_type = ICMP_ECHO; pkt->icmp_cksum = inet_cksum((uint16_t *) pkt, sizeof(G.packet)); @@ -182,11 +220,15 @@ static void ping4(len_and_sockaddr *lsa) /* listen for replies */ while (1) { +#if 0 struct sockaddr_in from; socklen_t fromlen = sizeof(from); c = recvfrom(pingsock, G.packet, sizeof(G.packet), 0, (struct sockaddr *) &from, &fromlen); +#else + c = recv(pingsock, G.packet, sizeof(G.packet), 0); +#endif if (c < 0) { if (errno != EINTR) bb_perror_msg("recvfrom"); @@ -208,13 +250,11 @@ static void ping4(len_and_sockaddr *lsa) static void ping6(len_and_sockaddr *lsa) { struct icmp6_hdr *pkt; - int pingsock, c; + int c; int sockopt; - pingsock = create_icmp6_socket(); - pkt = (struct icmp6_hdr *) G.packet; - memset(pkt, 0, sizeof(G.packet)); + /*memset(pkt, 0, sizeof(G.packet)); already is */ pkt->icmp6_type = ICMP6_ECHO_REQUEST; sockopt = offsetof(struct icmp6_hdr, icmp6_cksum); @@ -224,18 +264,21 @@ static void ping6(len_and_sockaddr *lsa) /* listen for replies */ while (1) { +#if 0 struct sockaddr_in6 from; socklen_t fromlen = sizeof(from); c = recvfrom(pingsock, G.packet, sizeof(G.packet), 0, (struct sockaddr *) &from, &fromlen); +#else + c = recv(pingsock, G.packet, sizeof(G.packet), 0); +#endif if (c < 0) { if (errno != EINTR) bb_perror_msg("recvfrom"); continue; } - if (c >= ICMP_MINLEN) { /* icmp6_hdr */ - pkt = (struct icmp6_hdr *) G.packet; + if (c >= ICMP_MINLEN) { /* icmp6_hdr */ if (pkt->icmp6_type == ICMP6_ECHO_REPLY) break; } @@ -283,6 +326,7 @@ static int common_ping_main(sa_family_t af, char **argv) signal(SIGALRM, noresp); alarm(5); /* give the host 5000ms to respond */ + create_icmp_socket(lsa); #if ENABLE_PING6 if (lsa->u.sa.sa_family == AF_INET6) ping6(lsa); @@ -299,7 +343,7 @@ static int common_ping_main(sa_family_t af, char **argv) /* Full(er) version */ -#define OPT_STRING ("qvc:s:t:w:W:I:4" IF_PING6("6")) +#define OPT_STRING ("qvc:s:t:w:W:I:n4" IF_PING6("6")) enum { OPT_QUIET = 1 << 0, OPT_VERBOSE = 1 << 1, @@ -309,13 +353,13 @@ enum { OPT_w = 1 << 5, OPT_W = 1 << 6, OPT_I = 1 << 7, - OPT_IPV4 = 1 << 8, - OPT_IPV6 = (1 << 9) * ENABLE_PING6, + /*OPT_n = 1 << 8, - ignored */ + OPT_IPV4 = 1 << 9, + OPT_IPV6 = (1 << 10) * ENABLE_PING6, }; struct globals { - int pingsock; int if_index; char *str_I; len_and_sockaddr *source_lsa; @@ -341,17 +385,13 @@ struct globals { struct sockaddr_in6 sin6; #endif } pingaddr; - char rcvd_tbl[MAX_DUP_CHK / 8]; + unsigned char rcvd_tbl[MAX_DUP_CHK / 8]; } FIX_ALIASING; #define G (*(struct globals*)&bb_common_bufsiz1) -#define pingsock (G.pingsock ) #define if_index (G.if_index ) #define source_lsa (G.source_lsa ) #define str_I (G.str_I ) #define datalen (G.datalen ) -#define ntransmitted (G.ntransmitted) -#define nreceived (G.nreceived ) -#define nrepeats (G.nrepeats ) #define pingcount (G.pingcount ) #define opt_ttl (G.opt_ttl ) #define myid (G.myid ) @@ -369,51 +409,55 @@ void BUG_ping_globals_too_big(void); #define INIT_G() do { \ if (sizeof(G) > COMMON_BUFSIZE) \ BUG_ping_globals_too_big(); \ - pingsock = -1; \ datalen = DEFDATALEN; \ timeout = MAXWAIT; \ tmin = UINT_MAX; \ } while (0) -#define A(bit) rcvd_tbl[(bit)>>3] /* identify byte in array */ -#define B(bit) (1 << ((bit) & 0x07)) /* identify bit in byte */ -#define SET(bit) (A(bit) |= B(bit)) -#define CLR(bit) (A(bit) &= (~B(bit))) -#define TST(bit) (A(bit) & B(bit)) - -/**************************************************************************/ +#define BYTE(bit) rcvd_tbl[(bit)>>3] +#define MASK(bit) (1 << ((bit) & 7)) +#define SET(bit) (BYTE(bit) |= MASK(bit)) +#define CLR(bit) (BYTE(bit) &= (~MASK(bit))) +#define TST(bit) (BYTE(bit) & MASK(bit)) static void print_stats_and_exit(int junk) NORETURN; static void print_stats_and_exit(int junk UNUSED_PARAM) { + unsigned long ul; + unsigned long nrecv; + signal(SIGINT, SIG_IGN); - printf("\n--- %s ping statistics ---\n", hostname); - printf("%lu packets transmitted, ", ntransmitted); - printf("%lu packets received, ", nreceived); - if (nrepeats) - printf("%lu duplicates, ", nrepeats); - if (ntransmitted) - ntransmitted = (ntransmitted - nreceived) * 100 / ntransmitted; - printf("%lu%% packet loss\n", ntransmitted); + nrecv = G.nreceived; + printf("\n--- %s ping statistics ---\n" + "%lu packets transmitted, " + "%lu packets received, ", + hostname, G.ntransmitted, nrecv + ); + if (G.nrepeats) + printf("%lu duplicates, ", G.nrepeats); + ul = G.ntransmitted; + if (ul != 0) + ul = (ul - nrecv) * 100 / ul; + printf("%lu%% packet loss\n", ul); if (tmin != UINT_MAX) { - unsigned tavg = tsum / (nreceived + nrepeats); + unsigned tavg = tsum / (nrecv + G.nrepeats); printf("round-trip min/avg/max = %u.%03u/%u.%03u/%u.%03u ms\n", tmin / 1000, tmin % 1000, tavg / 1000, tavg % 1000, tmax / 1000, tmax % 1000); } /* if condition is true, exit with 1 -- 'failure' */ - exit(nreceived == 0 || (deadline && nreceived < pingcount)); + exit(nrecv == 0 || (deadline && nrecv < pingcount)); } static void sendping_tail(void (*sp)(int), int size_pkt) { int sz; - CLR((uint16_t)ntransmitted % MAX_DUP_CHK); - ntransmitted++; + CLR((uint16_t)G.ntransmitted % MAX_DUP_CHK); + G.ntransmitted++; size_pkt += datalen; @@ -423,7 +467,7 @@ static void sendping_tail(void (*sp)(int), int size_pkt) if (sz != size_pkt) bb_error_msg_and_die("%s", bb_msg_write_error); - if (pingcount == 0 || deadline || ntransmitted < pingcount) { + if (pingcount == 0 || deadline || G.ntransmitted < pingcount) { /* Didn't send all pings yet - schedule next in 1s */ signal(SIGALRM, sp); if (deadline) { @@ -439,7 +483,7 @@ static void sendping_tail(void (*sp)(int), int size_pkt) * otherwise ping waits for two RTTs. */ unsigned expire = timeout; - if (nreceived) { + if (G.nreceived) { /* approx. 2*tmax, in seconds (2 RTT) */ expire = tmax / (512*1024); if (expire == 0) @@ -458,7 +502,7 @@ static void sendping4(int junk UNUSED_PARAM) pkt->icmp_type = ICMP_ECHO; /*pkt->icmp_code = 0;*/ pkt->icmp_cksum = 0; /* cksum is calculated with this field set to 0 */ - pkt->icmp_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */ + pkt->icmp_seq = htons(G.ntransmitted); /* don't ++ here, it can be a macro */ pkt->icmp_id = myid; /* If datalen < 4, we store timestamp _past_ the packet, @@ -481,11 +525,11 @@ static void sendping6(int junk UNUSED_PARAM) pkt->icmp6_type = ICMP6_ECHO_REQUEST; /*pkt->icmp6_code = 0;*/ /*pkt->icmp6_cksum = 0;*/ - pkt->icmp6_seq = htons(ntransmitted); /* don't ++ here, it can be a macro */ + pkt->icmp6_seq = htons(G.ntransmitted); /* don't ++ here, it can be a macro */ pkt->icmp6_id = myid; /*if (datalen >= 4)*/ - *(uint32_t*)(&pkt->icmp6_data8[4]) = monotonic_us(); + *(bb__aliased_uint32_t*)(&pkt->icmp6_data8[4]) = monotonic_us(); //TODO? pkt->icmp_cksum = inet_cksum(...); @@ -545,11 +589,10 @@ static void unpack_tail(int sz, uint32_t *tp, const char *from_str, uint16_t recv_seq, int ttl) { + unsigned char *b, m; const char *dupmsg = " (DUP!)"; unsigned triptime = 0; - ++nreceived; - if (tp) { /* (int32_t) cast is for hypothetical 64-bit unsigned */ /* (doesn't hurt 32-bit real-world anyway) */ @@ -561,11 +604,15 @@ static void unpack_tail(int sz, uint32_t *tp, tmax = triptime; } - if (TST(recv_seq % MAX_DUP_CHK)) { - ++nrepeats; - --nreceived; + b = &BYTE(recv_seq % MAX_DUP_CHK); + m = MASK(recv_seq % MAX_DUP_CHK); + /*if TST(recv_seq % MAX_DUP_CHK):*/ + if (*b & m) { + ++G.nrepeats; } else { - SET(recv_seq % MAX_DUP_CHK); + /*SET(recv_seq % MAX_DUP_CHK):*/ + *b |= m; + ++G.nreceived; dupmsg += 7; } @@ -648,7 +695,6 @@ static void ping4(len_and_sockaddr *lsa) { int sockopt; - pingsock = create_icmp_socket(); pingaddr.sin = lsa->u.sin; if (source_lsa) { if (setsockopt(pingsock, IPPROTO_IP, IP_MULTICAST_IF, @@ -656,8 +702,6 @@ static void ping4(len_and_sockaddr *lsa) bb_error_msg_and_die("can't set multicast source interface"); xbind(pingsock, &source_lsa->u.sa, source_lsa->len); } - if (str_I) - setsockopt_bindtodevice(pingsock, str_I); /* enable broadcast pings */ setsockopt_broadcast(pingsock); @@ -692,7 +736,7 @@ static void ping4(len_and_sockaddr *lsa) continue; } unpack4(G.rcv_packet, c, &from); - if (pingcount && nreceived >= pingcount) + if (pingcount && G.nreceived >= pingcount) break; } } @@ -706,13 +750,9 @@ static void ping6(len_and_sockaddr *lsa) struct iovec iov; char control_buf[CMSG_SPACE(36)]; - pingsock = create_icmp6_socket(); pingaddr.sin6 = lsa->u.sin6; - /* untested whether "-I addr" really works for IPv6: */ if (source_lsa) xbind(pingsock, &source_lsa->u.sa, source_lsa->len); - if (str_I) - setsockopt_bindtodevice(pingsock, str_I); #ifdef ICMP6_FILTER { @@ -784,7 +824,7 @@ static void ping6(len_and_sockaddr *lsa) } } unpack6(G.rcv_packet, c, &from, hoplimit); - if (pingcount && nreceived >= pingcount) + if (pingcount && G.nreceived >= pingcount) break; } } @@ -799,6 +839,11 @@ static void ping(len_and_sockaddr *lsa) } printf(": %d data bytes\n", datalen); + create_icmp_socket(lsa); + /* untested whether "-I addr" really works for IPv6: */ + if (str_I) + setsockopt_bindtodevice(pingsock, str_I); + G.sizeof_rcv_packet = datalen + MAXIPLEN + MAXICMPLEN; G.rcv_packet = xzalloc(G.sizeof_rcv_packet); #if ENABLE_PING6 diff --git a/networking/pscan.c b/networking/pscan.c index 28005ad..72ed8cd 100644 --- a/networking/pscan.c +++ b/networking/pscan.c @@ -157,7 +157,7 @@ int pscan_main(int argc UNUSED_PARAM, char **argv) } if (ENABLE_FEATURE_CLEAN_UP) free(lsap); - printf("%d closed, %d open, %d timed out (or blocked) ports\n", + printf("%u closed, %u open, %u timed out (or blocked) ports\n", closed_ports, open_ports, nports - (closed_ports + open_ports)); diff --git a/networking/tc.c b/networking/tc.c index f968707..533f7c0 100644 --- a/networking/tc.c +++ b/networking/tc.c @@ -65,7 +65,7 @@ struct globals { } FIX_ALIASING; #define G (*(struct globals*)&bb_common_bufsiz1) struct BUG_G_too_big { - char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1]; + char BUG_G_too_big[sizeof(G) <= COMMON_BUFSIZE ? 1 : -1]; }; #define filter_ifindex (G.filter_ifindex) #define filter_qdisc (G.filter_qdisc) @@ -418,9 +418,6 @@ static int print_class(const struct sockaddr_nl *who UNUSED_PARAM, static int print_filter(const struct sockaddr_nl *who UNUSED_PARAM, struct nlmsghdr *hdr, void *arg UNUSED_PARAM) { - struct tcmsg *msg = NLMSG_DATA(hdr); - int len = hdr->nlmsg_len; - struct rtattr * tb[TCA_MAX+1]; return 0; } diff --git a/networking/telnet.c b/networking/telnet.c index 58a6919..a255797 100644 --- a/networking/telnet.c +++ b/networking/telnet.c @@ -125,12 +125,10 @@ static void subneg(byte c); static void iac_flush(void) { - write(netfd, G.iacbuf, G.iaclen); + full_write(netfd, G.iacbuf, G.iaclen); G.iaclen = 0; } -#define write_str(fd, str) write(fd, str, sizeof(str) - 1) - static void doexit(int ev) NORETURN; static void doexit(int ev) { @@ -145,7 +143,7 @@ static void con_escape(void) if (bb_got_signal) /* came from line mode... go raw */ rawmode(); - write_str(1, "\r\nConsole escape. Commands are:\r\n\n" + full_write1_str("\r\nConsole escape. Commands are:\r\n\n" " l go to line mode\r\n" " c go to character mode\r\n" " z suspend telnet\r\n" @@ -176,7 +174,7 @@ static void con_escape(void) doexit(EXIT_SUCCESS); } - write_str(1, "continuing...\r\n"); + full_write1_str("continuing...\r\n"); if (bb_got_signal) cookmode(); @@ -383,10 +381,11 @@ static void put_iac_naws(byte c, int x, int y) put_iac(SB); put_iac(c); - put_iac((x >> 8) & 0xff); - put_iac(x & 0xff); - put_iac((y >> 8) & 0xff); - put_iac(y & 0xff); + /* "... & 0xff" implicitly done below */ + put_iac(x >> 8); + put_iac(x); + put_iac(y >> 8); + put_iac(y); put_iac(IAC); put_iac(SE); diff --git a/networking/traceroute.c b/networking/traceroute.c index eaefac6..c3b9b71 100644 --- a/networking/traceroute.c +++ b/networking/traceroute.c @@ -796,7 +796,9 @@ static int common_traceroute_main(int op, char **argv) { int minpacket; +#ifdef IP_TOS int tos = 0; +#endif int max_ttl = 30; int nprobes = 3; int first_ttl = 1; @@ -810,6 +812,7 @@ common_traceroute_main(int op, char **argv) char *waittime_str; char *pausemsecs_str; char *first_ttl_str; + char *dest_str; #if ENABLE_FEATURE_TRACEROUTE_SOURCE_ROUTE llist_t *source_route_list = NULL; int lsrr = 0; @@ -842,8 +845,10 @@ common_traceroute_main(int op, char **argv) if (op & OPT_IP_CHKSUM) bb_error_msg("warning: ip checksums disabled"); #endif +#ifdef IP_TOS if (op & OPT_TOS) tos = xatou_range(tos_str, 0, 255); +#endif if (op & OPT_MAX_TTL) max_ttl = xatou_range(max_ttl_str, 1, 255); if (op & OPT_PORT) @@ -1064,8 +1069,12 @@ common_traceroute_main(int op, char **argv) xsetgid(getgid()); xsetuid(getuid()); - printf("traceroute to %s (%s)", argv[0], - xmalloc_sockaddr2dotted_noport(&dest_lsa->u.sa)); + dest_str = xmalloc_sockaddr2dotted_noport(&dest_lsa->u.sa); + printf("traceroute to %s (%s)", argv[0], dest_str); + if (ENABLE_FEATURE_CLEAN_UP) { + free(dest_str); + } + if (op & OPT_SOURCE) printf(" from %s", source); printf(", %d hops max, %d byte packets\n", max_ttl, packlen); @@ -1221,6 +1230,12 @@ common_traceroute_main(int op, char **argv) } } + if (ENABLE_FEATURE_CLEAN_UP) { + free(to); + free(lastaddr); + free(from_lsa); + } + return 0; } diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c index ae0e0d3..fe322db 100644 --- a/networking/udhcp/common.c +++ b/networking/udhcp/common.c @@ -62,6 +62,7 @@ const struct dhcp_optflag dhcp_optflags[] = { { OPTION_U16 , 0x84 }, /* DHCP_VLAN_ID */ { OPTION_U8 , 0x85 }, /* DHCP_VLAN_PRIORITY */ #endif + { OPTION_STRING , 0xd1 }, /* DHCP_PXE_CONF_FILE */ { OPTION_6RD , 0xd4 }, /* DHCP_6RD */ { OPTION_STATIC_ROUTES | OPTION_LIST , 0xf9 }, /* DHCP_MS_STATIC_ROUTES */ { OPTION_STRING , 0xfc }, /* DHCP_WPAD */ @@ -128,6 +129,7 @@ const char dhcp_option_strings[] ALIGN1 = "vlanid" "\0" /* DHCP_VLAN_ID */ "vlanpriority" "\0"/* DHCP_VLAN_PRIORITY */ #endif + "pxeconffile" "\0" /* DHCP_PXE_CONF_FILE */ "ip6rd" "\0" /* DHCP_6RD */ "msstaticroutes""\0"/* DHCP_MS_STATIC_ROUTES */ "wpad" "\0" /* DHCP_WPAD */ @@ -371,20 +373,23 @@ static NOINLINE void attach_option( char *buffer, int length) { - struct option_set *existing, *new, **curr; - char *allocated = NULL; + struct option_set *existing; + char *allocated; - existing = udhcp_find_option(*opt_list, optflag->code); - if (!existing) { - log2("Attaching option %02x to list", optflag->code); - allocated = allocate_tempopt_if_needed(optflag, buffer, &length); + allocated = allocate_tempopt_if_needed(optflag, buffer, &length); #if ENABLE_FEATURE_UDHCP_RFC3397 - if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) { - /* reuse buffer and length for RFC1035-formatted string */ - allocated = buffer = (char *)dname_enc(NULL, 0, buffer, &length); - } + if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) { + /* reuse buffer and length for RFC1035-formatted string */ + allocated = buffer = (char *)dname_enc(NULL, 0, buffer, &length); + } #endif + + existing = udhcp_find_option(*opt_list, optflag->code); + if (!existing) { + struct option_set *new, **curr; + /* make a new option */ + log2("Attaching option %02x to list", optflag->code); new = xmalloc(sizeof(*new)); new->data = xmalloc(length + OPT_DATA); new->data[OPT_CODE] = optflag->code; @@ -405,14 +410,7 @@ static NOINLINE void attach_option( /* add it to an existing option */ log2("Attaching option %02x to existing member of list", optflag->code); - allocated = allocate_tempopt_if_needed(optflag, buffer, &length); old_len = existing->data[OPT_LEN]; -#if ENABLE_FEATURE_UDHCP_RFC3397 - if ((optflag->flags & OPTION_TYPE_MASK) == OPTION_DNS_STRING) { - /* reuse buffer and length for RFC1035-formatted string */ - allocated = buffer = (char *)dname_enc(existing->data + OPT_DATA, old_len, buffer, &length); - } -#endif if (old_len + length < 255) { /* actually 255 is ok too, but adding a space can overlow it */ @@ -424,7 +422,7 @@ static NOINLINE void attach_option( existing->data[OPT_DATA + old_len] = ' '; old_len++; } - memcpy(existing->data + OPT_DATA + old_len, buffer, length); + memcpy(existing->data + OPT_DATA + old_len, (allocated ? allocated : buffer), length); existing->data[OPT_LEN] = old_len + length; } /* else, ignore the data, we could put this in a second option in the future */ } /* else, ignore the new data */ diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h index 0e8e45f..5e70d60 100644 --- a/networking/udhcp/common.h +++ b/networking/udhcp/common.h @@ -149,8 +149,9 @@ enum { //#define DHCP_DOMAIN_SEARCH 0x77 /* RFC 3397. set of ASCIZ string, DNS-style compressed */ //#define DHCP_SIP_SERVERS 0x78 /* RFC 3361. flag byte, then: 0: domain names, 1: IP addrs */ //#define DHCP_STATIC_ROUTES 0x79 /* RFC 3442. (mask,ip,router) tuples */ -#define DHCP_VLAN_ID 0x84 /* 802.1P VLAN ID */ -#define DHCP_VLAN_PRIORITY 0x85 /* 802.1Q VLAN priority */ +//#define DHCP_VLAN_ID 0x84 /* 802.1P VLAN ID */ +//#define DHCP_VLAN_PRIORITY 0x85 /* 802.1Q VLAN priority */ +//#define DHCP_PXE_CONF_FILE 0xd1 /* RFC 5071 Configuration File */ //#define DHCP_MS_STATIC_ROUTES 0xf9 /* Microsoft's pre-RFC 3442 code for 0x79? */ //#define DHCP_WPAD 0xfc /* MSIE's Web Proxy Autodiscovery Protocol */ #define DHCP_END 0xff diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c index c44220b..b0f0798 100644 --- a/networking/udhcp/d6_dhcpc.c +++ b/networking/udhcp/d6_dhcpc.c @@ -311,8 +311,8 @@ static int d6_mcast_from_client_config_ifindex(struct d6_packet *packet, uint8_t return d6_send_raw_packet( packet, (end - (uint8_t*) packet), - /*src*/ NULL, CLIENT_PORT, - /*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT, MAC_BCAST_ADDR, + /*src*/ NULL, CLIENT_PORT6, + /*dst*/ (struct in6_addr*)FF02__1_2, SERVER_PORT6, MAC_BCAST_ADDR, client_config.ifindex ); } @@ -554,8 +554,8 @@ static NOINLINE int send_d6_renew(uint32_t xid, struct in6_addr *server_ipv6, st if (server_ipv6) return d6_send_kernel_packet( &packet, (opt_ptr - (uint8_t*) &packet), - our_cur_ipv6, CLIENT_PORT, - server_ipv6, SERVER_PORT + our_cur_ipv6, CLIENT_PORT6, + server_ipv6, SERVER_PORT6 ); return d6_mcast_from_client_config_ifindex(&packet, opt_ptr); } @@ -576,8 +576,8 @@ static int send_d6_release(struct in6_addr *server_ipv6, struct in6_addr *our_cu bb_info_msg("Sending release..."); return d6_send_kernel_packet( &packet, (opt_ptr - (uint8_t*) &packet), - our_cur_ipv6, CLIENT_PORT, - server_ipv6, SERVER_PORT + our_cur_ipv6, CLIENT_PORT6, + server_ipv6, SERVER_PORT6 ); } @@ -614,7 +614,7 @@ static NOINLINE int d6_recv_raw_packet(struct in6_addr *peer_ipv6 /* make sure its the right packet for us, and that it passes sanity checks */ if (packet.ip6.ip6_nxt != IPPROTO_UDP || (packet.ip6.ip6_vfc >> 4) != 6 - || packet.udp.dest != htons(CLIENT_PORT) + || packet.udp.dest != htons(CLIENT_PORT6) /* || bytes > (int) sizeof(packet) - can't happen */ || packet.udp.len != packet.ip6.ip6_plen ) { @@ -708,7 +708,7 @@ static int d6_raw_socket(int ifindex) BPF_STMT(BPF_LDX|BPF_B|BPF_MSH, 0), /* load udp destination port from halfword[header_len + 2] */ BPF_STMT(BPF_LD|BPF_H|BPF_IND, 2), - /* jump to L3 if udp dport is CLIENT_PORT, else to L4 */ + /* jump to L3 if udp dport is CLIENT_PORT6, else to L4 */ BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 68, 0, 1), /* L3: accept packet */ BPF_STMT(BPF_RET|BPF_K, 0xffffffff), @@ -733,7 +733,7 @@ static int d6_raw_socket(int ifindex) xbind(fd, (struct sockaddr *) &sock, sizeof(sock)); #if 0 - if (CLIENT_PORT == 68) { + if (CLIENT_PORT6 == 546) { /* Use only if standard port is in use */ /* Ignoring error (kernel may lack support for this) */ if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter_prog, @@ -761,7 +761,7 @@ static void change_listen_mode(int new_mode) sockfd = -1; } if (new_mode == LISTEN_KERNEL) - sockfd = udhcp_listen_socket(/*INADDR_ANY,*/ CLIENT_PORT, client_config.interface); + sockfd = udhcp_listen_socket(/*INADDR_ANY,*/ CLIENT_PORT6, client_config.interface); else if (new_mode != LISTEN_NONE) sockfd = d6_raw_socket(client_config.ifindex); /* else LISTEN_NONE: sockfd stays closed */ @@ -931,8 +931,8 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv) fd_set rfds; /* Default options */ - IF_FEATURE_UDHCP_PORT(SERVER_PORT = 547;) - IF_FEATURE_UDHCP_PORT(CLIENT_PORT = 546;) + IF_FEATURE_UDHCP_PORT(SERVER_PORT6 = 547;) + IF_FEATURE_UDHCP_PORT(CLIENT_PORT6 = 546;) client_config.interface = "eth0"; client_config.script = CONFIG_UDHCPC_DEFAULT_SCRIPT; @@ -961,8 +961,8 @@ int udhcpc6_main(int argc UNUSED_PARAM, char **argv) } #if ENABLE_FEATURE_UDHCP_PORT if (opt & OPT_P) { - CLIENT_PORT = xatou16(str_P); - SERVER_PORT = CLIENT_PORT - 1; + CLIENT_PORT6 = xatou16(str_P); + SERVER_PORT6 = CLIENT_PORT6 + 1; } #endif while (list_O) { diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c index 0862288..8dee916 100644 --- a/networking/udhcp/dhcpc.c +++ b/networking/udhcp/dhcpc.c @@ -667,6 +667,15 @@ static int raw_bcast_from_client_config_ifindex(struct dhcp_packet *packet) client_config.ifindex); } +static int bcast_or_ucast(struct dhcp_packet *packet, uint32_t ciaddr, uint32_t server) +{ + if (server) + return udhcp_send_kernel_packet(packet, + ciaddr, CLIENT_PORT, + server, SERVER_PORT); + return raw_bcast_from_client_config_ifindex(packet); +} + /* Broadcast a DHCP discover packet to the network, with an optionally requested IP */ /* NOINLINE: limit stack usage in caller */ static NOINLINE int send_discover(uint32_t xid, uint32_t requested) @@ -773,11 +782,7 @@ static NOINLINE int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr) add_client_options(&packet); bb_info_msg("Sending renew..."); - if (server) - return udhcp_send_kernel_packet(&packet, - ciaddr, CLIENT_PORT, - server, SERVER_PORT); - return raw_bcast_from_client_config_ifindex(&packet); + return bcast_or_ucast(&packet, ciaddr, server); } #if ENABLE_FEATURE_UDHCPC_ARPING @@ -826,7 +831,11 @@ static int send_release(uint32_t server, uint32_t ciaddr) udhcp_add_simple_option(&packet, DHCP_SERVER_ID, server); bb_info_msg("Sending release..."); - return udhcp_send_kernel_packet(&packet, ciaddr, CLIENT_PORT, server, SERVER_PORT); + /* Note: normally we unicast here since "server" is not zero. + * However, there _are_ people who run "address-less" DHCP servers, + * and reportedly ISC dhcp client and Windows allow that. + */ + return bcast_or_ucast(&packet, ciaddr, server); } /* Returns -1 on errors that are fatal for the socket, -2 for those that aren't */ @@ -1135,34 +1144,35 @@ static void client_background(void) //usage:# define IF_UDHCP_VERBOSE(...) //usage:#endif //usage:#define udhcpc_trivial_usage -//usage: "[-fbnq"IF_UDHCP_VERBOSE("v")"oCRB] [-i IFACE] [-r IP] [-s PROG] [-p PIDFILE]\n" -//usage: " [-V VENDOR] [-x OPT:VAL]... [-O OPT]..." IF_FEATURE_UDHCP_PORT(" [-P N]") +//usage: "[-fbq"IF_UDHCP_VERBOSE("v")IF_FEATURE_UDHCPC_ARPING("a")"RB] [-t N] [-T SEC] [-A SEC/-n]\n" +//usage: " [-i IFACE]"IF_FEATURE_UDHCP_PORT(" [-P PORT]")" [-s PROG] [-p PIDFILE]\n" +//usage: " [-oC] [-r IP] [-V VENDOR] [-F NAME] [-x OPT:VAL]... [-O OPT]..." //usage:#define udhcpc_full_usage "\n" //usage: IF_LONG_OPTS( //usage: "\n -i,--interface IFACE Interface to use (default eth0)" -//usage: "\n -p,--pidfile FILE Create pidfile" +//usage: IF_FEATURE_UDHCP_PORT( +//usage: "\n -P,--client-port PORT Use PORT (default 68)" +//usage: ) //usage: "\n -s,--script PROG Run PROG at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" +//usage: "\n -p,--pidfile FILE Create pidfile" //usage: "\n -B,--broadcast Request broadcast replies" -//usage: "\n -t,--retries N Send up to N discover packets" -//usage: "\n -T,--timeout N Pause between packets (default 3 seconds)" -//usage: "\n -A,--tryagain N Wait N seconds after failure (default 20)" +//usage: "\n -t,--retries N Send up to N discover packets (default 3)" +//usage: "\n -T,--timeout SEC Pause between packets (default 3)" +//usage: "\n -A,--tryagain SEC Wait if lease is not obtained (default 20)" +//usage: "\n -n,--now Exit if lease is not obtained" +//usage: "\n -q,--quit Exit after obtaining lease" +//usage: "\n -R,--release Release IP on exit" //usage: "\n -f,--foreground Run in foreground" //usage: USE_FOR_MMU( //usage: "\n -b,--background Background if lease is not obtained" //usage: ) -//usage: "\n -n,--now Exit if lease is not obtained" -//usage: "\n -q,--quit Exit after obtaining lease" -//usage: "\n -R,--release Release IP on exit" //usage: "\n -S,--syslog Log to syslog too" -//usage: IF_FEATURE_UDHCP_PORT( -//usage: "\n -P,--client-port N Use port N (default 68)" -//usage: ) //usage: IF_FEATURE_UDHCPC_ARPING( //usage: "\n -a,--arping Use arping to validate offered address" //usage: ) -//usage: "\n -O,--request-option OPT Request option OPT from server (cumulative)" -//usage: "\n -o,--no-default-options Don't request any options (unless -O is given)" //usage: "\n -r,--request IP Request this IP address" +//usage: "\n -o,--no-default-options Don't request any options (unless -O is given)" +//usage: "\n -O,--request-option OPT Request option OPT from server (cumulative)" //usage: "\n -x OPT:VAL Include option OPT in sent packets (cumulative)" //usage: "\n Examples of string, numeric, and hex byte opts:" //usage: "\n -x hostname:bbox - option 12" @@ -1177,29 +1187,29 @@ static void client_background(void) //usage: ) //usage: IF_NOT_LONG_OPTS( //usage: "\n -i IFACE Interface to use (default eth0)" -//usage: "\n -p FILE Create pidfile" +//usage: IF_FEATURE_UDHCP_PORT( +//usage: "\n -P PORT Use PORT (default 68)" +//usage: ) //usage: "\n -s PROG Run PROG at DHCP events (default "CONFIG_UDHCPC_DEFAULT_SCRIPT")" +//usage: "\n -p FILE Create pidfile" //usage: "\n -B Request broadcast replies" -//usage: "\n -t N Send up to N discover packets" -//usage: "\n -T N Pause between packets (default 3 seconds)" -//usage: "\n -A N Wait N seconds (default 20) after failure" +//usage: "\n -t N Send up to N discover packets (default 3)" +//usage: "\n -T SEC Pause between packets (default 3)" +//usage: "\n -A SEC Wait if lease is not obtained (default 20)" +//usage: "\n -n Exit if lease is not obtained" +//usage: "\n -q Exit after obtaining lease" +//usage: "\n -R Release IP on exit" //usage: "\n -f Run in foreground" //usage: USE_FOR_MMU( //usage: "\n -b Background if lease is not obtained" //usage: ) -//usage: "\n -n Exit if lease is not obtained" -//usage: "\n -q Exit after obtaining lease" -//usage: "\n -R Release IP on exit" //usage: "\n -S Log to syslog too" -//usage: IF_FEATURE_UDHCP_PORT( -//usage: "\n -P N Use port N (default 68)" -//usage: ) //usage: IF_FEATURE_UDHCPC_ARPING( //usage: "\n -a Use arping to validate offered address" //usage: ) -//usage: "\n -O OPT Request option OPT from server (cumulative)" -//usage: "\n -o Don't request any options (unless -O is given)" //usage: "\n -r IP Request this IP address" +//usage: "\n -o Don't request any options (unless -O is given)" +//usage: "\n -O OPT Request option OPT from server (cumulative)" //usage: "\n -x OPT:VAL Include option OPT in sent packets (cumulative)" //usage: "\n Examples of string, numeric, and hex byte opts:" //usage: "\n -x hostname:bbox - option 12" @@ -1647,14 +1657,19 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv) * might work too. * "Next server" and router are definitely wrong ones to use, though... */ +/* We used to ignore pcakets without DHCP_SERVER_ID. + * I've got user reports from people who run "address-less" servers. + * They either supply DHCP_SERVER_ID of 0.0.0.0 or don't supply it at all. + * They say ISC DHCP client supports this case. + */ + server_addr = 0; temp = udhcp_get_option(&packet, DHCP_SERVER_ID); if (!temp) { - bb_error_msg("no server ID, ignoring packet"); - continue; - /* still selecting - this server looks bad */ + bb_error_msg("no server ID, using 0.0.0.0"); + } else { + /* it IS unaligned sometimes, don't "optimize" */ + move_from_unaligned32(server_addr, temp); } - /* it IS unaligned sometimes, don't "optimize" */ - move_from_unaligned32(server_addr, temp); /*xid = packet.xid; - already is */ requested_ip = packet.yiaddr; diff --git a/networking/udhcp/dhcpc.h b/networking/udhcp/dhcpc.h index 2859a07..9f423a5 100644 --- a/networking/udhcp/dhcpc.h +++ b/networking/udhcp/dhcpc.h @@ -29,9 +29,11 @@ struct client_config_t { #define client_config (*(struct client_config_t*)(&bb_common_bufsiz1[COMMON_BUFSIZE / 2])) #if ENABLE_FEATURE_UDHCP_PORT -#define CLIENT_PORT (client_config.port) +#define CLIENT_PORT (client_config.port) +#define CLIENT_PORT6 (client_config.port) #else -#define CLIENT_PORT 68 +#define CLIENT_PORT 68 +#define CLIENT_PORT6 546 #endif POP_SAVED_FUNCTION_VISIBILITY diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c index 9ad9595..a1a7f6b 100644 --- a/networking/udhcp/dhcpd.c +++ b/networking/udhcp/dhcpd.c @@ -22,11 +22,12 @@ */ //usage:#define udhcpd_trivial_usage -//usage: "[-fS]" IF_FEATURE_UDHCP_PORT(" [-P N]") " [CONFFILE]" +//usage: "[-fS] [-I ADDR]" IF_FEATURE_UDHCP_PORT(" [-P N]") " [CONFFILE]" //usage:#define udhcpd_full_usage "\n\n" //usage: "DHCP server\n" //usage: "\n -f Run in foreground" //usage: "\n -S Log to syslog too" +//usage: "\n -I ADDR Local address" //usage: IF_FEATURE_UDHCP_PORT( //usage: "\n -P N Use port N (default 67)" //usage: ) @@ -302,6 +303,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) unsigned num_ips; unsigned opt; struct option_set *option; + char *str_I = str_I; IF_FEATURE_UDHCP_PORT(char *str_P;) #if ENABLE_FEATURE_UDHCP_PORT @@ -312,8 +314,10 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) #if defined CONFIG_UDHCP_DEBUG && CONFIG_UDHCP_DEBUG >= 1 opt_complementary = "vv"; #endif - opt = getopt32(argv, "fSv" - IF_FEATURE_UDHCP_PORT("P:", &str_P) + opt = getopt32(argv, "fSI:v" + IF_FEATURE_UDHCP_PORT("P:") + , &str_I + IF_FEATURE_UDHCP_PORT(, &str_P) IF_UDHCP_VERBOSE(, &dhcp_verbose) ); if (!(opt & 1)) { /* no -f */ @@ -326,8 +330,13 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) openlog(applet_name, LOG_PID, LOG_DAEMON); logmode |= LOGMODE_SYSLOG; } + if (opt & 4) { /* -I */ + len_and_sockaddr *lsa = xhost_and_af2sockaddr(str_I, 0, AF_INET); + server_config.server_nip = lsa->u.sin.sin_addr.s_addr; + free(lsa); + } #if ENABLE_FEATURE_UDHCP_PORT - if (opt & 8) { /* -P */ + if (opt & 16) { /* -P */ SERVER_PORT = xatou16(str_P); CLIENT_PORT = SERVER_PORT + 1; } @@ -367,7 +376,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv) if (udhcp_read_interface(server_config.interface, &server_config.ifindex, - &server_config.server_nip, + (server_config.server_nip == 0 ? &server_config.server_nip : NULL), server_config.server_mac) ) { retval = 1; diff --git a/networking/udhcp/dhcpd.h b/networking/udhcp/dhcpd.h index 7c801bf..a77724f 100644 --- a/networking/udhcp/dhcpd.h +++ b/networking/udhcp/dhcpd.h @@ -61,9 +61,11 @@ struct server_config_t { /* client_config sits in 2nd half of bb_common_bufsiz1 */ #if ENABLE_FEATURE_UDHCP_PORT -#define SERVER_PORT (server_config.port) +#define SERVER_PORT (server_config.port) +#define SERVER_PORT6 (server_config.port) #else -#define SERVER_PORT 67 +#define SERVER_PORT 67 +#define SERVER_PORT6 547 #endif diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c index 33c9585..148f525 100644 --- a/networking/udhcp/packet.c +++ b/networking/udhcp/packet.c @@ -143,8 +143,15 @@ int FAST_FUNC udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt, * * In order to work with those buggy servers, * we truncate packets after end option byte. + * + * However, RFC 1542 says "The IP Total Length and UDP Length + * must be large enough to contain the minimal BOOTP header of 300 octets". + * Thus, we retain enough padding to not go below 300 BOOTP bytes. + * Some devices have filters which drop DHCP packets shorter than that. */ padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(packet.data.options); + if (padding > DHCP_SIZE - 300) + padding = DHCP_SIZE - 300; packet.ip.protocol = IPPROTO_UDP; packet.ip.saddr = source_nip; @@ -215,6 +222,8 @@ int FAST_FUNC udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt, udhcp_dump_packet(dhcp_pkt); padding = DHCP_OPTIONS_BUFSIZE - 1 - udhcp_end_option(dhcp_pkt->options); + if (padding > DHCP_SIZE - 300) + padding = DHCP_SIZE - 300; result = safe_write(fd, dhcp_pkt, DHCP_SIZE - padding); msg = "write"; ret_close: diff --git a/networking/wget.c b/networking/wget.c index 071cd94..e15f68d 100644 --- a/networking/wget.c +++ b/networking/wget.c @@ -62,16 +62,17 @@ struct globals { const char *curfile; /* Name of current file being transferred */ bb_progress_t pmt; #endif - char *dir_prefix; + char *dir_prefix; #if ENABLE_FEATURE_WGET_LONG_OPTIONS - char *post_data; - char *extra_headers; + char *post_data; + char *extra_headers; #endif - char *fname_out; /* where to direct output (-O) */ - const char *proxy_flag; /* Use proxies if env vars are set */ - const char *user_agent; /* "User-Agent" header field */ + char *fname_out; /* where to direct output (-O) */ + const char *proxy_flag; /* Use proxies if env vars are set */ + const char *user_agent; /* "User-Agent" header field */ #if ENABLE_FEATURE_WGET_TIMEOUT unsigned timeout_seconds; + bool connecting; #endif int output_fd; int o_flags; @@ -86,8 +87,10 @@ struct globals { } FIX_ALIASING; #define G (*ptr_to_globals) #define INIT_G() do { \ - SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ - IF_FEATURE_WGET_TIMEOUT(G.timeout_seconds = 900;) \ + SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \ +} while (0) +#define FINI_G() do { \ + FREE_PTR_TO_GLOBALS(); \ } while (0) @@ -195,13 +198,27 @@ static char* sanitize_string(char *s) return s; } +#if ENABLE_FEATURE_WGET_TIMEOUT +static void alarm_handler(int sig UNUSED_PARAM) +{ + /* This is theoretically unsafe (uses stdio and malloc in signal handler) */ + if (G.connecting) + bb_error_msg_and_die("download timed out"); +} +#endif + static FILE *open_socket(len_and_sockaddr *lsa) { + int fd; FILE *fp; + IF_FEATURE_WGET_TIMEOUT(alarm(G.timeout_seconds); G.connecting = 1;) + fd = xconnect_stream(lsa); + IF_FEATURE_WGET_TIMEOUT(G.connecting = 0;) + /* glibc 2.4 seems to try seeking on it - ??! */ /* hopefully it understands what ESPIPE means... */ - fp = fdopen(xconnect_stream(lsa), "r+"); + fp = fdopen(fd, "r+"); if (fp == NULL) bb_perror_msg_and_die("%s", bb_msg_memory_exhausted); @@ -209,6 +226,7 @@ static FILE *open_socket(len_and_sockaddr *lsa) } /* Returns '\n' if it was seen, else '\0'. Trims at first '\r' or '\n' */ +/* FIXME: does not respect FEATURE_WGET_TIMEOUT and -T N: */ static char fgets_and_trim(FILE *fp) { char c; @@ -256,15 +274,22 @@ static void parse_url(const char *src_url, struct host_info *h) free(h->allocated); h->allocated = url = xstrdup(src_url); - if (strncmp(url, "http://", 7) == 0) { - h->port = bb_lookup_port("http", "tcp", 80); - h->host = url + 7; - h->is_ftp = 0; - } else if (strncmp(url, "ftp://", 6) == 0) { + if (strncmp(url, "ftp://", 6) == 0) { h->port = bb_lookup_port("ftp", "tcp", 21); h->host = url + 6; h->is_ftp = 1; } else + if (strncmp(url, "http://", 7) == 0) { + h->host = url + 7; + http: + h->port = bb_lookup_port("http", "tcp", 80); + h->is_ftp = 0; + } else + if (!strstr(url, "//")) { + // GNU wget is user-friendly and falls back to http:// + h->host = url; + goto http; + } else bb_error_msg_and_die("not an http or ftp url: %s", sanitize_string(url)); // FYI: @@ -328,8 +353,16 @@ static char *gethdr(FILE *fp) return NULL; /* convert the header name to lower case */ - for (s = G.wget_buf; isalnum(*s) || *s == '-' || *s == '.'; ++s) { - /* tolower for "A-Z", no-op for "0-9a-z-." */ + for (s = G.wget_buf; isalnum(*s) || *s == '-' || *s == '.' || *s == '_'; ++s) { + /* + * No-op for 20-3f and 60-7f. "0-9a-z-." are in these ranges. + * 40-5f range ("@A-Z[\]^_") maps to 60-7f. + * "A-Z" maps to "a-z". + * "@[\]" can't occur in header names. + * "^_" maps to "~,DEL" (which is wrong). + * "^" was never seen yet, "_" was seen from web.archive.org + * (x-archive-orig-x_commoncrawl_Signature: HEXSTRING). + */ *s |= 0x20; } @@ -936,7 +969,10 @@ int wget_main(int argc UNUSED_PARAM, char **argv) INIT_G(); - IF_FEATURE_WGET_TIMEOUT(G.timeout_seconds = 900;) +#if ENABLE_FEATURE_WGET_TIMEOUT + G.timeout_seconds = 900; + signal(SIGALRM, alarm_handler); +#endif G.proxy_flag = "on"; /* use proxies if env vars are set */ G.user_agent = "Wget"; /* "User-Agent" header field */ @@ -987,5 +1023,10 @@ int wget_main(int argc UNUSED_PARAM, char **argv) if (G.output_fd >= 0) xclose(G.output_fd); +#if ENABLE_FEATURE_CLEAN_UP && ENABLE_FEATURE_WGET_LONG_OPTIONS + free(G.extra_headers); +#endif + FINI_G(); + return EXIT_SUCCESS; } diff --git a/procps/kill.c b/procps/kill.c index cb129ac..f4637c4 100644 --- a/procps/kill.c +++ b/procps/kill.c @@ -60,7 +60,7 @@ * This is needed to avoid collision with kill -9 ... syntax */ -int kill_main(int argc, char **argv) +int kill_main(int argc UNUSED_PARAM, char **argv) { char *arg; pid_t pid; @@ -79,10 +79,9 @@ int kill_main(int argc, char **argv) #endif /* Parse any options */ - argc--; arg = *++argv; - if (argc < 1 || arg[0] != '-') { + if (!arg || arg[0] != '-') { goto do_it_now; } @@ -91,13 +90,14 @@ int kill_main(int argc, char **argv) * echo "Died of SIG`kill -l $?`" * We try to mimic what kill from coreutils-6.8 does */ if (arg[1] == 'l' && arg[2] == '\0') { - if (argc == 1) { + arg = *++argv; + if (!arg) { /* Print the whole signal list */ print_signames(); return 0; } /* -l <sig list> */ - while ((arg = *++argv)) { + do { if (isdigit(arg[0])) { signo = bb_strtou(arg, NULL, 10); if (errno) { @@ -118,8 +118,8 @@ int kill_main(int argc, char **argv) } printf("%d\n", signo); } - } - /* If they specified -l, we are all done */ + arg = *++argv; + } while (arg); return EXIT_SUCCESS; } @@ -127,8 +127,7 @@ int kill_main(int argc, char **argv) if (killall && arg[1] == 'q' && arg[2] == '\0') { quiet = 1; arg = *++argv; - argc--; - if (argc < 1) + if (!arg) bb_show_usage(); if (arg[0] != '-') goto do_it_now; @@ -140,8 +139,7 @@ int kill_main(int argc, char **argv) if (killall5 && arg[0] == 'o') goto do_it_now; - if (argc > 1 && arg[0] == 's' && arg[1] == '\0') { /* -s SIG? */ - argc--; + if (argv[1] && arg[0] == 's' && arg[1] == '\0') { /* -s SIG? */ arg = *++argv; } /* else it must be -SIG */ signo = get_signum(arg); @@ -150,7 +148,6 @@ int kill_main(int argc, char **argv) return EXIT_FAILURE; } arg = *++argv; - argc--; do_it_now: pid = getpid(); @@ -158,7 +155,8 @@ int kill_main(int argc, char **argv) if (killall5) { pid_t sid; procps_status_t* p = NULL; - int ret = 0; + /* compat: exitcode 2 is "no one was signaled" */ + int ret = 2; /* Find out our session id */ sid = getsid(pid); @@ -167,9 +165,10 @@ int kill_main(int argc, char **argv) kill(-1, SIGSTOP); /* Signal all processes except those in our session */ while ((p = procps_scan(p, PSSCAN_PID|PSSCAN_SID)) != NULL) { - int i; + char **args; if (p->sid == (unsigned)sid + || p->sid == 0 /* compat: kernel thread, don't signal it */ || p->pid == (unsigned)pid || p->pid == 1 ) { @@ -178,18 +177,19 @@ int kill_main(int argc, char **argv) /* All remaining args must be -o PID options. * Check p->pid against them. */ - for (i = 0; i < argc; i++) { + args = argv; + while (*args) { pid_t omit; - arg = argv[i]; + arg = *args++; if (arg[0] != '-' || arg[1] != 'o') { bb_error_msg("bad option '%s'", arg); ret = 1; goto resume; } arg += 2; - if (!arg[0] && argv[++i]) - arg = argv[i]; + if (!arg[0] && *args) + arg = *args++; omit = bb_strtoi(arg, NULL, 10); if (errno) { bb_error_msg("invalid number '%s'", arg); @@ -200,6 +200,7 @@ int kill_main(int argc, char **argv) goto dont_kill; } kill(p->pid, signo); + ret = 0; dont_kill: ; } resume: @@ -210,14 +211,14 @@ int kill_main(int argc, char **argv) } /* Pid or name is required for kill/killall */ - if (argc < 1) { + if (!arg) { bb_error_msg("you need to specify whom to kill"); return EXIT_FAILURE; } if (killall) { /* Looks like they want to do a killall. Do that */ - while (arg) { + do { pid_t* pidList; pidList = find_pid_by_name(arg); @@ -240,7 +241,7 @@ int kill_main(int argc, char **argv) } free(pidList); arg = *++argv; - } + } while (arg); return errors; } diff --git a/procps/lsof.c b/procps/lsof.c index ee39ddb..281a55c 100644 --- a/procps/lsof.c +++ b/procps/lsof.c @@ -61,9 +61,12 @@ int lsof_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) d_fd = opendir(name); if (d_fd) { while ((entry = readdir(d_fd)) != NULL) { - if (entry->d_type == DT_LNK) { - safe_strncpy(name + baseofs, entry->d_name, 10); - fdlink = xmalloc_readlink(name); + /* Skip entries '.' and '..' (and any hidden file) */ + if (entry->d_name[0] == '.') + continue; + + safe_strncpy(name + baseofs, entry->d_name, 10); + if ((fdlink = xmalloc_readlink(name)) != NULL) { printf("%d\t%s\t%s\n", proc->pid, proc->exe, fdlink); free(fdlink); } diff --git a/procps/nmeter.c b/procps/nmeter.c index 6a3b327..5d5b83b 100644 --- a/procps/nmeter.c +++ b/procps/nmeter.c @@ -333,8 +333,7 @@ static void scale(ullong ul) char buf[5]; /* see http://en.wikipedia.org/wiki/Tera */ - smart_ulltoa4(ul, buf, " kmgtpezy"); - buf[4] = '\0'; + smart_ulltoa4(ul, buf, " kmgtpezy")[0] = '\0'; put(buf); } diff --git a/procps/pgrep.c b/procps/pgrep.c index 044f553..4ab458b 100644 --- a/procps/pgrep.c +++ b/procps/pgrep.c @@ -65,9 +65,9 @@ static void act(unsigned pid, char *cmd, int signo) { if (pgrep) { if (option_mask32 & (1 << OPTBIT_L)) /* OPT_LIST */ - printf("%d %s\n", pid, cmd); + printf("%u %s\n", pid, cmd); else - printf("%d\n", pid); + printf("%u\n", pid); } else kill(pid, signo); } @@ -128,7 +128,7 @@ int pgrep_main(int argc UNUSED_PARAM, char **argv) bb_show_usage(); if (argv[0]) - xregcomp(&re_buffer, argv[0], REG_EXTENDED | REG_NOSUB); + xregcomp(&re_buffer, argv[0], OPT_ANCHOR ? REG_EXTENDED : (REG_EXTENDED|REG_NOSUB)); matched_pid = 0; cmd_last = NULL; diff --git a/procps/powertop.c b/procps/powertop.c index 71988a2..e3c29d1 100644 --- a/procps/powertop.c +++ b/procps/powertop.c @@ -627,7 +627,6 @@ static void show_timerstats(void) int i, n = 0; char strbuf6[6]; - strbuf6[5] = '\0'; puts("\nTop causes for wakeups:"); for (i = 0; i < G.lines_cnt; i++) { if ((G.lines[i].count > 0 /*|| G.lines[i].disk_count > 0*/) @@ -639,7 +638,7 @@ static void show_timerstats(void) /*char c = ' '; if (G.lines[i].disk_count) c = 'D';*/ - smart_ulltoa5(G.lines[i].count, strbuf6, " KMGTPEZY"); + smart_ulltoa5(G.lines[i].count, strbuf6, " KMGTPEZY")[0] = '\0'; printf(/*" %5.1f%% (%s)%c %s\n"*/ " %5.1f%% (%s) %s\n", G.lines[i].count * 100.0 / G.lines_cumulative_count, diff --git a/procps/ps.c b/procps/ps.c index 0df20b7..c65fa01 100644 --- a/procps/ps.c +++ b/procps/ps.c @@ -70,7 +70,7 @@ enum { MAX_WIDTH = 2*1024 }; #if ENABLE_FEATURE_PS_TIME || ENABLE_FEATURE_PS_LONG -static long get_uptime(void) +static unsigned long get_uptime(void) { #ifdef __linux__ struct sysinfo info; @@ -78,12 +78,15 @@ static long get_uptime(void) return 0; return info.uptime; #elif 1 - char buf[64]; - long uptime; + unsigned long uptime; + char buf[sizeof(uptime)*3 + 2]; + /* /proc/uptime is "UPTIME_SEC.NN IDLE_SEC.NN\n" + * (where IDLE is cumulative over all CPUs) + */ if (open_read_close("/proc/uptime", buf, sizeof(buf)) <= 0) - bb_perror_msg_and_die("can't read %s", "/proc/uptime"); + bb_perror_msg_and_die("can't read '%s'", "/proc/uptime"); buf[sizeof(buf)-1] = '\0'; - sscanf(buf, "%l", &uptime); + sscanf(buf, "%lu", &uptime); return uptime; #else struct timespec ts; @@ -138,7 +141,7 @@ struct globals { unsigned terminal_width; #if ENABLE_FEATURE_PS_TIME unsigned kernel_HZ; - unsigned long long seconds_since_boot; + unsigned long seconds_since_boot; #endif } FIX_ALIASING; #define G (*(struct globals*)&bb_common_bufsiz1) @@ -149,14 +152,13 @@ struct globals { #define buffer (G.buffer ) #define terminal_width (G.terminal_width ) #define kernel_HZ (G.kernel_HZ ) -#define seconds_since_boot (G.seconds_since_boot) #define INIT_G() do { } while (0) #if ENABLE_FEATURE_PS_TIME /* for ELF executables, notes are pushed before environment and args */ -static ptrdiff_t find_elf_note(ptrdiff_t findme) +static uintptr_t find_elf_note(uintptr_t findme) { - ptrdiff_t *ep = (ptrdiff_t *) environ; + uintptr_t *ep = (uintptr_t *) environ; while (*ep++) continue; @@ -222,7 +224,6 @@ static inline unsigned get_HZ_by_waiting(void) static unsigned get_kernel_HZ(void) { - if (kernel_HZ) return kernel_HZ; @@ -231,7 +232,7 @@ static unsigned get_kernel_HZ(void) if (kernel_HZ == (unsigned)-1) kernel_HZ = get_HZ_by_waiting(); - seconds_since_boot = get_uptime(); + G.seconds_since_boot = get_uptime(); return kernel_HZ; } @@ -298,8 +299,7 @@ static void put_lu(char *buf, int size, unsigned long u) char buf4[5]; /* see http://en.wikipedia.org/wiki/Tera */ - smart_ulltoa4(u, buf4, " mgtpezy"); - buf4[4] = '\0'; + smart_ulltoa4(u, buf4, " mgtpezy")[0] = '\0'; sprintf(buf, "%.*s", size, buf4); } @@ -350,7 +350,7 @@ static void func_etime(char *buf, int size, const procps_status_t *ps) mm = ps->start_time / get_kernel_HZ(); /* must be after get_kernel_HZ()! */ - mm = seconds_since_boot - mm; + mm = G.seconds_since_boot - mm; ss = mm % 60; mm /= 60; snprintf(buf, size+1, "%3lu:%02u", mm, ss); @@ -588,7 +588,7 @@ int ps_main(int argc UNUSED_PARAM, char **argv) // -o col1,col2,col3=header // Select which columns to display /* We allow (and ignore) most of the above. FIXME. - * -T is picked for threads (POSIX hasn't it standardized). + * -T is picked for threads (POSIX hasn't standardized it). * procps v3.2.7 supports -T and shows tids as SPID column, * it also supports -L where it shows tids as LWP column. */ @@ -599,7 +599,9 @@ int ps_main(int argc UNUSED_PARAM, char **argv) parse_o(llist_pop(&opt_o)); } while (opt_o); } else { - /* Below: parse_o() needs char*, NOT const char*, can't give it default_o */ + /* Below: parse_o() needs char*, NOT const char*, + * can't pass it constant string. Need to make a copy first. + */ #if ENABLE_SELINUX if (!(opt & OPT_Z) || !is_selinux_enabled()) { /* no -Z or no SELinux: do not show LABEL */ @@ -652,8 +654,8 @@ int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) OPT_l = (1 << ENABLE_SELINUX) * (1 << ENABLE_FEATURE_SHOW_THREADS) * ENABLE_FEATURE_PS_LONG, }; #if ENABLE_FEATURE_PS_LONG - time_t now = 0; - long uptime = 0; + time_t now = now; + unsigned long uptime; #endif /* If we support any options, parse argv */ #if ENABLE_SELINUX || ENABLE_FEATURE_SHOW_THREADS || ENABLE_FEATURE_PS_WIDE || ENABLE_FEATURE_PS_LONG @@ -737,8 +739,7 @@ int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) #endif { char buf6[6]; - smart_ulltoa5(p->vsz, buf6, " mgtpezy"); - buf6[5] = '\0'; + smart_ulltoa5(p->vsz, buf6, " mgtpezy")[0] = '\0'; #if ENABLE_FEATURE_PS_LONG if (opts & OPT_l) { char bufr[6], stime_str[6]; @@ -749,8 +750,7 @@ int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) time_t start = now - elapsed; struct tm *tm = localtime(&start); - smart_ulltoa5(p->rss, bufr, " mgtpezy"); - bufr[5] = '\0'; + smart_ulltoa5(p->rss, bufr, " mgtpezy")[0] = '\0'; if (p->tty_major == 136) /* It should be pts/N, not ptsN, but N > 9 diff --git a/procps/pstree.c b/procps/pstree.c index 45fce3a..2ff5ccb 100644 --- a/procps/pstree.c +++ b/procps/pstree.c @@ -34,8 +34,15 @@ struct child; +#ifdef ENABLE_FEATURE_SHOW_THREADS +/* For threads, we add {...} around the comm, so we need two extra bytes */ +# define COMM_DISP_LEN (COMM_LEN + 2) +#else +# define COMM_DISP_LEN COMM_LEN +#endif + typedef struct proc { - char comm[COMM_LEN + 1]; + char comm[COMM_DISP_LEN + 1]; // char flags; - unused, delete? pid_t pid; uid_t uid; @@ -341,8 +348,8 @@ static void dump_by_user(PROC *current, uid_t uid) #if ENABLE_FEATURE_SHOW_THREADS static void handle_thread(const char *comm, pid_t pid, pid_t ppid, uid_t uid) { - char threadname[COMM_LEN + 2]; - sprintf(threadname, "{%.*s}", COMM_LEN - 2, comm); + char threadname[COMM_DISP_LEN + 1]; + sprintf(threadname, "{%.*s}", (int)sizeof(threadname) - 3, comm); add_proc(threadname, pid, ppid, uid/*, 1*/); } #endif diff --git a/procps/top.c b/procps/top.c index 2908bd3..51f1c1a 100644 --- a/procps/top.c +++ b/procps/top.c @@ -294,7 +294,7 @@ static void get_jiffy_counts(void) * they are used to calculate per process CPU% */ prev_jif = cur_jif; if (read_cpu_jiffy(fp, &cur_jif) < 4) - bb_error_msg_and_die("can't read /proc/stat"); + bb_error_msg_and_die("can't read '%s'", "/proc/stat"); #if !ENABLE_FEATURE_TOP_SMP_CPU fclose(fp); @@ -677,7 +677,7 @@ static NOINLINE void display_process_list(int lines_rem, int scr_width) if (s->vsz >= 100000) sprintf(vsz_str_buf, "%6ldm", s->vsz/1024); else - sprintf(vsz_str_buf, "%7ld", s->vsz); + sprintf(vsz_str_buf, "%7lu", s->vsz); /* PID PPID USER STAT VSZ %VSZ [%CPU] COMMAND */ col = snprintf(line_buf, scr_width, "\n" "%5u%6u %-8.8s %s%s" FMT @@ -847,8 +847,7 @@ static void display_topmem_header(int scr_width, int *lines_rem_p) static void ulltoa6_and_space(unsigned long long ul, char buf[6]) { /* see http://en.wikipedia.org/wiki/Tera */ - smart_ulltoa5(ul, buf, " mgtpezy"); - buf[5] = ' '; + smart_ulltoa5(ul, buf, " mgtpezy")[0] = ' '; } static NOINLINE void display_topmem_process_list(int lines_rem, int scr_width) diff --git a/procps/watch.c b/procps/watch.c index 36af1cc..0397f21 100644 --- a/procps/watch.c +++ b/procps/watch.c @@ -69,7 +69,6 @@ int watch_main(int argc UNUSED_PARAM, char **argv) printf("\033[H""\033[J"); if (!(opt & 0x2)) { // no -t const unsigned time_len = sizeof("1234-67-90 23:56:89"); - time_t t; // STDERR_FILENO is procps3 compat: // "watch ls 2>/dev/null" does not detect tty size @@ -79,10 +78,13 @@ int watch_main(int argc UNUSED_PARAM, char **argv) free(header); header = xasprintf("Every %us: %-*s", period, (int)width, cmd); } - time(&t); - if (time_len < width) - strftime(header + width - time_len, time_len, - "%Y-%m-%d %H:%M:%S", localtime(&t)); + if (time_len < width) { + strftime_YYYYMMDDHHMMSS( + header + width - time_len, + time_len, + /*time_t*:*/ NULL + ); + } // compat: empty line between header and cmd output printf("%s\n\n", header); diff --git a/runit/chpst.c b/runit/chpst.c index ed72c8b..71af29f 100644 --- a/runit/chpst.c +++ b/runit/chpst.c @@ -236,7 +236,6 @@ int chpst_main(int argc UNUSED_PARAM, char **argv) { struct bb_uidgid_t ugid; char *set_user = set_user; /* for compiler */ - char *env_user = env_user; char *env_dir = env_dir; char *root; char *nicestr; @@ -264,7 +263,7 @@ int chpst_main(int argc UNUSED_PARAM, char **argv) IF_CHPST("/:n:vP012"), &limita, &limitc, &limitd, &limitf, &limitl, &limitm, &limito, &limitp, &limitr, &limits, &limitt, - &set_user, &env_user, &env_dir + &set_user, &set_user, &env_dir IF_CHPST(, &root, &nicestr)); argv += optind; if (opt & OPT_m) { // -m means -asld @@ -292,7 +291,7 @@ int chpst_main(int argc UNUSED_PARAM, char **argv) // envuidgid? if (ENABLE_ENVUIDGID && applet_name[0] == 'e' && applet_name[3] == 'u') { - env_user = *argv++; + set_user = *argv++; opt |= OPT_U; } diff --git a/runit/runsv.c b/runit/runsv.c index 3e1a3c8..d941e89 100644 --- a/runit/runsv.c +++ b/runit/runsv.c @@ -33,7 +33,6 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //usage:#define runsv_full_usage "\n\n" //usage: "Start and monitor a service and optionally an appendant log service" -#include <sys/poll.h> #include <sys/file.h> #include "libbb.h" #include "runit_lib.h" diff --git a/runit/runsvdir.c b/runit/runsvdir.c index 32526cf..af7e75b 100644 --- a/runit/runsvdir.c +++ b/runit/runsvdir.c @@ -35,7 +35,6 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //usage: "\n -P Put each runsv in a new session" //usage: "\n -s SCRIPT Run SCRIPT <signo> after signal is processed" -#include <sys/poll.h> #include <sys/file.h> #include "libbb.h" #include "runit_lib.h" @@ -169,7 +169,6 @@ Exit Codes //usage: "pause, cont, hup, alarm, interrupt, quit, 1, 2, term, kill: send\n" //usage: "STOP, CONT, HUP, ALRM, INT, QUIT, USR1, USR2, TERM, KILL signal to service" -#include <sys/poll.h> #include <sys/file.h> #include "libbb.h" #include "runit_lib.h" diff --git a/runit/svlogd.c b/runit/svlogd.c index b7a0a6e..c080b9a 100644 --- a/runit/svlogd.c +++ b/runit/svlogd.c @@ -142,7 +142,6 @@ log message, you can use a pattern like this instead //usage: "\n""+,-PATTERN - (de)select line for logging" //usage: "\n""E,ePATTERN - (de)select line for stderr" -#include <sys/poll.h> #include <sys/file.h> #include "libbb.h" #include "runit_lib.h" @@ -745,11 +744,6 @@ static NOINLINE unsigned logdir_open(struct logdir *ld, const char *fn) ld->inst = new; break; case 's': { - static const struct suffix_mult km_suffixes[] = { - { "k", 1024 }, - { "m", 1024*1024 }, - { "", 0 } - }; ld->sizemax = xatou_sfx(&s[1], km_suffixes); break; } diff --git a/scripts/bloat-o-meter b/scripts/bloat-o-meter index 6db2a5e..cb861b8 100755 --- a/scripts/bloat-o-meter +++ b/scripts/bloat-o-meter @@ -7,11 +7,14 @@ # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. -import sys, os#, re +import sys, os def usage(): - sys.stderr.write("usage: %s [-t] file1 file2\n" % sys.argv[0]) - sys.exit(-1) + sys.stderr.write("usage: %s [-t] file1 file2 [-- <readelf options>]\n" + % sys.argv[0]) + sys.stderr.write("\t-t\tShow time spent on parsing/processing\n") + sys.stderr.write("\t--\tPass additional parameters to readelf\n") + sys.exit(1) f1, f2 = (None, None) flag_timing, dashes = (False, False) @@ -31,6 +34,8 @@ for f in sys.argv[1:]: f1 = f elif f2 is None: f2 = f + else: + usage() if flag_timing: import time if f1 is None or f2 is None: diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 1651390..38bae80 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile @@ -150,7 +150,7 @@ HOSTCFLAGS_zconf.tab.o := -I$(src) HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -ldl HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK -HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` +HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` -ldl HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ -D LKC_DIRECT_LINK diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index fe6d2db..d21d06e 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -474,7 +474,11 @@ int conf_write(const char *name) fprintf(out_h, "#define CONFIG_%s 1\n", sym->name); /* bbox */ fprintf(out_h, "#define ENABLE_%s 1\n", sym->name); - fprintf(out_h, "#define IF_%s(...) __VA_ARGS__\n", sym->name); + fprintf(out_h, "#ifdef MAKE_SUID\n"); + fprintf(out_h, "# define IF_%s(...) __VA_ARGS__ \"CONFIG_%s\"\n", sym->name, sym->name); + fprintf(out_h, "#else\n"); + fprintf(out_h, "# define IF_%s(...) __VA_ARGS__\n", sym->name); + fprintf(out_h, "#endif\n"); fprintf(out_h, "#define IF_NOT_%s(...)\n", sym->name); } break; @@ -506,7 +510,11 @@ int conf_write(const char *name) fputs("\"\n", out_h); /* bbox */ fprintf(out_h, "#define ENABLE_%s 1\n", sym->name); - fprintf(out_h, "#define IF_%s(...) __VA_ARGS__\n", sym->name); + fprintf(out_h, "#ifdef MAKE_SUID\n"); + fprintf(out_h, "# define IF_%s(...) __VA_ARGS__ \"CONFIG_%s\"\n", sym->name, sym->name); + fprintf(out_h, "#else\n"); + fprintf(out_h, "# define IF_%s(...) __VA_ARGS__\n", sym->name); + fprintf(out_h, "#endif\n"); fprintf(out_h, "#define IF_NOT_%s(...)\n", sym->name); } break; @@ -518,7 +526,11 @@ int conf_write(const char *name) fprintf(out_h, "#define CONFIG_%s 0x%s\n", sym->name, str); /* bbox */ fprintf(out_h, "#define ENABLE_%s 1\n", sym->name); - fprintf(out_h, "#define IF_%s(...) __VA_ARGS__\n", sym->name); + fprintf(out_h, "#ifdef MAKE_SUID\n"); + fprintf(out_h, "# define IF_%s(...) __VA_ARGS__ \"CONFIG_%s\"\n", sym->name, sym->name); + fprintf(out_h, "#else\n"); + fprintf(out_h, "# define IF_%s(...) __VA_ARGS__\n", sym->name); + fprintf(out_h, "#endif\n"); fprintf(out_h, "#define IF_NOT_%s(...)\n", sym->name); } break; @@ -532,7 +544,11 @@ int conf_write(const char *name) fprintf(out_h, "#define CONFIG_%s %s\n", sym->name, str); /* bbox */ fprintf(out_h, "#define ENABLE_%s 1\n", sym->name); - fprintf(out_h, "#define IF_%s(...) __VA_ARGS__\n", sym->name); + fprintf(out_h, "#ifdef MAKE_SUID\n"); + fprintf(out_h, "# define IF_%s(...) __VA_ARGS__ \"CONFIG_%s\"\n", sym->name, sym->name); + fprintf(out_h, "#else\n"); + fprintf(out_h, "# define IF_%s(...) __VA_ARGS__\n", sym->name); + fprintf(out_h, "#endif\n"); fprintf(out_h, "#define IF_NOT_%s(...)\n", sym->name); } break; diff --git a/scripts/mkconfigs b/scripts/mkconfigs index db94fcc..6a26fe1 100755 --- a/scripts/mkconfigs +++ b/scripts/mkconfigs @@ -65,11 +65,11 @@ static const char bbconfig_config_bz2[] ALIGN1 = {" grep -e '^# CONFIG_' -e '^CONFIG_' "$config" \ | bzip2 -1 | dd bs=2 skip=1 2>/dev/null \ -| od -v -t x1 \ +| od -v -b \ | sed -e 's/^[^ ]*//' \ -e 's/ //g' \ -e '/^$/d' \ - -e 's/\(..\)/0x\1,/g' + -e 's/\(...\)/0\1,/g' echo "};" echo "#endif" diff --git a/scripts/randomtest b/scripts/randomtest index a102593..d2b26bc 100755 --- a/scripts/randomtest +++ b/scripts/randomtest @@ -65,6 +65,7 @@ if test x"$LIBC" = x"uclibc"; then | grep -v CONFIG_BUILD_LIBBUSYBOX \ | grep -v CONFIG_PIE \ \ + | grep -v CONFIG_FEATURE_TOUCH_NODEREF \ | grep -v CONFIG_FEATURE_2_4_MODULES \ >.config.new mv .config.new .config @@ -72,6 +73,7 @@ if test x"$LIBC" = x"uclibc"; then echo '# CONFIG_BUILD_LIBBUSYBOX is not set' >>.config echo '# CONFIG_PIE is not set' >>.config echo '# CONFIG_FEATURE_2_4_MODULES is not set' >>.config + echo '# CONFIG_FEATURE_TOUCH_NODEREF is not set' >>.config fi # If STATIC, remove some things. diff --git a/scripts/trylink b/scripts/trylink index a8b0b2e..e471699 100755 --- a/scripts/trylink +++ b/scripts/trylink @@ -117,7 +117,7 @@ LDLIBS=`echo "$LDLIBS" | xargs -n1 | sort | uniq | xargs` # First link with all libs. If it fails, bail out echo "Trying libraries: $LDLIBS" # "lib1 lib2 lib3" -> "-llib1 -llib2 -llib3" -l_list=`echo "$LDLIBS" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'` +l_list=`echo " $LDLIBS " | sed -e 's: \([^- ][^ ]*\): -l\1:g'` test "x$l_list" != "x" && l_list="$START_GROUP $l_list $END_GROUP" try $CC $CFLAGS $LDFLAGS \ -o $EXE \ @@ -141,7 +141,7 @@ while test "$LDLIBS"; do for one in $LDLIBS; do without_one=`echo " $LDLIBS " | sed "s/ $one / /g" | xargs` # "lib1 lib2 lib3" -> "-llib1 -llib2 -llib3" - l_list=`echo "$without_one" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'` + l_list=`echo " $without_one " | sed -e 's: \([^- ][^ ]*\): -l\1:g'` test x"$l_list" != x"" && l_list="$START_GROUP $l_list $END_GROUP" $debug && echo "Trying -l options: '$l_list'" try $CC $CFLAGS $LDFLAGS \ @@ -172,7 +172,7 @@ done # Make the binary with final, minimal list of libs echo "Final link with: ${LDLIBS:-<none>}" -l_list=`echo "$LDLIBS" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'` +l_list=`echo " $LDLIBS " | sed -e 's: \([^- ][^ ]*\): -l\1:g'` test "x$l_list" != "x" && l_list="$START_GROUP $l_list $END_GROUP" # --verbose gives us gobs of info to stdout (e.g. linker script used) if ! test -f busybox_ldscript; then diff --git a/shell/ash.c b/shell/ash.c index e731345..f3feffe 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -385,6 +385,9 @@ static void trace_vprintf(const char *fmt, va_list va); /* ============ Utility functions */ #define xbarrier() do { __asm__ __volatile__ ("": : :"memory"); } while (0) +#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c))) +#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c))) + static int isdigit_str9(const char *str) { int maxlen = 9 + 1; /* max 9 digits: 999999999 */ @@ -2008,27 +2011,6 @@ getoptsreset(const char *value) } #endif -/* math.h has these, otherwise define our private copies */ -#if !ENABLE_SH_MATH_SUPPORT -#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c))) -#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c))) -/* - * Return the pointer to the first char which is not part of a legal variable name - * (a letter or underscore followed by letters, underscores, and digits). - */ -static const char* -endofname(const char *name) -{ - if (!is_name(*name)) - return name; - while (*++name) { - if (!is_in_name(*name)) - break; - } - return name; -} -#endif - /* * Compares two strings up to the first = or '\0'. The first * string must be terminated by '='; the second may be terminated by @@ -2304,7 +2286,7 @@ unsetvar(const char *s) free(vp); INT_ON; } else { - setvar(s, 0, 0); + setvar2(s, 0); vp->flags &= ~VEXPORT; } ok: @@ -6357,7 +6339,7 @@ subevalvar(char *p, char *varname, int strloc, int subtype, switch (subtype) { case VSASSIGN: - setvar(varname, startp, 0); + setvar2(varname, startp); amount = startp - expdest; STADJUST(amount, expdest); return startp; @@ -8572,7 +8554,7 @@ evalfor(union node *n, int flags) loopnest++; flags &= EV_TESTED; for (sp = arglist.list; sp; sp = sp->next) { - setvar(n->nfor.var, sp->text, 0); + setvar2(n->nfor.var, sp->text); evaltree(n->nfor.body, flags); if (evalskip) { if (evalskip == SKIPCONT && --skipcount <= 0) { @@ -9051,6 +9033,9 @@ static int getoptscmd(int, char **) FAST_FUNC; #if !ENABLE_FEATURE_SH_EXTRA_QUIET static int helpcmd(int, char **) FAST_FUNC; #endif +#if MAX_HISTORY +static int historycmd(int, char **) FAST_FUNC; +#endif #if ENABLE_SH_MATH_SUPPORT static int letcmd(int, char **) FAST_FUNC; #endif @@ -9124,6 +9109,9 @@ static const struct builtincmd builtintab[] = { #if !ENABLE_FEATURE_SH_EXTRA_QUIET { BUILTIN_NOSPEC "help" , helpcmd }, #endif +#if MAX_HISTORY + { BUILTIN_NOSPEC "history" , historycmd }, +#endif #if JOBS { BUILTIN_REGULAR "jobs" , jobscmd }, { BUILTIN_REGULAR "kill" , killcmd }, @@ -9463,7 +9451,7 @@ evalcommand(union node *cmd, int flags) * '_' in 'vi' command mode during line editing... * However I implemented that within libedit itself. */ - setvar("_", lastarg, 0); + setvar2("_", lastarg); } popstackmark(&smark); } @@ -9669,7 +9657,12 @@ preadfd(void) * _during_ shell execution, not only if it was set when * shell was started. Therefore, re-check LANG every time: */ - reinit_unicode(lookupvar("LANG")); + { + const char *s = lookupvar("LC_ALL"); + if (!s) s = lookupvar("LC_CTYPE"); + if (!s) s = lookupvar("LANG"); + reinit_unicode(s); + } nr = read_line_input(line_input_state, cmdedit_prompt, buf, IBUFSIZ, timeout); if (nr == 0) { /* Ctrl+C pressed */ @@ -12276,8 +12269,10 @@ dotcmd(int argc, char **argv) /* "false; . empty_file; echo $?" should print 0, not 1: */ exitstatus = 0; + /* This aborts if file isn't found, which is POSIXly correct. + * bash returns exitcode 1 instead. + */ fullname = find_dot_file(argv[1]); - argv += 2; argc -= 2; if (argc) { /* argc > 0, argv[0] != NULL */ @@ -12287,6 +12282,9 @@ dotcmd(int argc, char **argv) shellparam.p = argv; }; + /* This aborts if file can't be opened, which is POSIXly correct. + * bash returns exitcode 1 instead. + */ setinputfile(fullname, INPUT_PUSH_FILE); commandname = fullname; cmdloop(0); @@ -12633,6 +12631,15 @@ helpcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) } #endif /* FEATURE_SH_EXTRA_QUIET */ +#if MAX_HISTORY +static int FAST_FUNC +historycmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) +{ + show_history(line_input_state); + return EXIT_SUCCESS; +} +#endif + /* * The export and readonly commands. */ @@ -13004,8 +13011,11 @@ init(void) } } - setvar("PPID", utoa(getppid()), 0); - + setvar2("PPID", utoa(getppid())); +#if ENABLE_ASH_BASH_COMPAT + p = lookupvar("SHLVL"); + setvar2("SHLVL", utoa(p ? atoi(p) + 1 : 1)); +#endif p = lookupvar("PWD"); if (p) { if (*p != '/' || stat(p, &st1) || stat(".", &st2) @@ -13209,27 +13219,21 @@ int ash_main(int argc UNUSED_PARAM, char **argv) setstackmark(&smark); procargs(argv); -#if ENABLE_FEATURE_EDITING_SAVEHISTORY - if (iflag) { - const char *hp = lookupvar("HISTFILE"); - if (!hp) { - hp = lookupvar("HOME"); - if (hp) { - char *defhp = concat_path_file(hp, ".ash_history"); - setvar("HISTFILE", defhp, 0); - free(defhp); - } - } - } -#endif if (argv[0] && argv[0][0] == '-') isloginsh = 1; if (isloginsh) { + const char *hp; + state = 1; read_profile("/etc/profile"); state1: state = 2; - read_profile(".profile"); + hp = lookupvar("HOME"); + if (hp) { + hp = concat_path_file(hp, ".profile"); + read_profile(hp); + free((char*)hp); + } } state2: state = 3; @@ -13261,6 +13265,15 @@ int ash_main(int argc UNUSED_PARAM, char **argv) #if MAX_HISTORY > 0 && ENABLE_FEATURE_EDITING_SAVEHISTORY if (iflag) { const char *hp = lookupvar("HISTFILE"); + if (!hp) { + hp = lookupvar("HOME"); + if (hp) { + hp = concat_path_file(hp, ".ash_history"); + setvar2("HISTFILE", hp); + free((char*)hp); + hp = lookupvar("HISTFILE"); + } + } if (hp) line_input_state->hist_file = hp; # if ENABLE_FEATURE_SH_HISTFILESIZE diff --git a/shell/hush.c b/shell/hush.c index 2f1d51a..8a4215d 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -850,6 +850,9 @@ static int builtin_jobs(char **argv) FAST_FUNC; #if ENABLE_HUSH_HELP static int builtin_help(char **argv) FAST_FUNC; #endif +#if MAX_HISTORY && ENABLE_FEATURE_EDITING +static int builtin_history(char **argv) FAST_FUNC; +#endif #if ENABLE_HUSH_LOCAL static int builtin_local(char **argv) FAST_FUNC; #endif @@ -919,6 +922,9 @@ static const struct built_in_command bltins1[] = { #if ENABLE_HUSH_HELP BLTIN("help" , builtin_help , NULL), #endif +#if MAX_HISTORY && ENABLE_FEATURE_EDITING + BLTIN("history" , builtin_history , "Show command history"), +#endif #if ENABLE_HUSH_JOB BLTIN("jobs" , builtin_jobs , "List jobs"), #endif @@ -1304,7 +1310,7 @@ static void restore_G_args(save_arg_t *sv, char **argv) * backgrounds (i.e. stops) or kills all members of currently running * pipe. * - * Wait builtin in interruptible by signals for which user trap is set + * Wait builtin is interruptible by signals for which user trap is set * or by SIGINT in interactive shell. * * Trap handlers will execute even within trap handlers. (right?) @@ -1383,7 +1389,7 @@ static void restore_G_args(save_arg_t *sv, char **argv) * are set to '' (ignore) are NOT reset to defaults. We do the same. * * Problem: the above approach makes it unwieldy to catch signals while - * we are in read builtin, of while we read commands from stdin: + * we are in read builtin, or while we read commands from stdin: * masked signals are not visible! * * New implementation @@ -1392,7 +1398,7 @@ static void restore_G_args(save_arg_t *sv, char **argv) * for them - a bit like emulating kernel pending signal mask in userspace. * We are interested in: signals which need to have special handling * as described above, and all signals which have traps set. - * Signals are rocorded in pending_set. + * Signals are recorded in pending_set. * After each pipe execution, we extract any pending signals * and act on them. * @@ -2038,7 +2044,10 @@ static void get_user_input(struct in_str *i) * _during_ shell execution, not only if it was set when * shell was started. Therefore, re-check LANG every time: */ - reinit_unicode(get_local_var_value("LANG")); + const char *s = get_local_var_value("LC_ALL"); + if (!s) s = get_local_var_value("LC_CTYPE"); + if (!s) s = get_local_var_value("LANG"); + reinit_unicode(s); G.flag_SIGINT = 0; /* buglet: SIGINT will not make new prompt to appear _at once_, @@ -7354,7 +7363,7 @@ static int run_list(struct pipe *pi) * and we should not execute CMD */ debug_printf_exec("skipped cmd because of || or &&\n"); last_followup = pi->followup; - continue; + goto dont_check_jobs_but_continue; } } last_followup = pi->followup; @@ -7493,8 +7502,10 @@ static int run_list(struct pipe *pi) G.flag_break_continue = 0; /* else: e.g. "continue 2" should *break* once, *then* continue */ } /* else: "while... do... { we are here (innermost list is not a loop!) };...done" */ - if (G.depth_break_continue != 0 || fbc == BC_BREAK) - goto check_jobs_and_break; + if (G.depth_break_continue != 0 || fbc == BC_BREAK) { + checkjobs(NULL); + break; + } /* "continue": simulate end of loop */ rword = RES_DONE; continue; @@ -7502,7 +7513,6 @@ static int run_list(struct pipe *pi) #endif #if ENABLE_HUSH_FUNCTIONS if (G.flag_return_in_progress == 1) { - /* same as "goto check_jobs_and_break" */ checkjobs(NULL); break; } @@ -7544,6 +7554,9 @@ static int run_list(struct pipe *pi) if (rword == RES_IF || rword == RES_ELIF) cond_code = rcode; #endif + check_jobs_and_continue: + checkjobs(NULL); + dont_check_jobs_but_continue: ; #if ENABLE_HUSH_LOOPS /* Beware of "while false; true; do ..."! */ if (pi->next @@ -7555,22 +7568,17 @@ static int run_list(struct pipe *pi) /* "while false; do...done" - exitcode 0 */ G.last_exitcode = rcode = EXIT_SUCCESS; debug_printf_exec(": while expr is false: breaking (exitcode:EXIT_SUCCESS)\n"); - goto check_jobs_and_break; + break; } } if (rword == RES_UNTIL) { if (!rcode) { debug_printf_exec(": until expr is true: breaking\n"); - check_jobs_and_break: - checkjobs(NULL); break; } } } #endif - - check_jobs_and_continue: - checkjobs(NULL); } /* for (pi) */ #if ENABLE_HUSH_JOB @@ -8628,6 +8636,14 @@ static int FAST_FUNC builtin_help(char **argv UNUSED_PARAM) } #endif +#if MAX_HISTORY && ENABLE_FEATURE_EDITING +static int FAST_FUNC builtin_history(char **argv UNUSED_PARAM) +{ + show_history(G.line_input_state); + return EXIT_SUCCESS; +} +#endif + #if ENABLE_HUSH_JOB static int FAST_FUNC builtin_jobs(char **argv UNUSED_PARAM) { @@ -8880,6 +8896,9 @@ static int FAST_FUNC builtin_source(char **argv) free(arg_path); if (!input) { /* bb_perror_msg("%s", *argv); - done by fopen_or_warn */ + /* POSIX: non-interactive shell should abort here, + * not merely fail. So far no one complained :) + */ return EXIT_FAILURE; } close_on_exec_on(fileno(input)); @@ -8889,12 +8908,14 @@ static int FAST_FUNC builtin_source(char **argv) /* "we are inside sourced file, ok to use return" */ G.flag_return_in_progress = -1; #endif - save_and_replace_G_args(&sv, argv); + if (argv[1]) + save_and_replace_G_args(&sv, argv); parse_and_run_file(input); fclose(input); - restore_G_args(&sv, argv); + if (argv[1]) + restore_G_args(&sv, argv); #if ENABLE_HUSH_FUNCTIONS G.flag_return_in_progress = sv_flg; #endif diff --git a/shell/hush_test/hush-misc/source2.right b/shell/hush_test/hush-misc/source2.right new file mode 100644 index 0000000..0587bad --- a/dev/null +++ b/shell/hush_test/hush-misc/source2.right @@ -0,0 +1,4 @@ +0:arg0 1:arg1 2:arg2 +Ok1:0 +0:arg0 1:q 2:w +Ok2:0 diff --git a/shell/hush_test/hush-misc/source2.tests b/shell/hush_test/hush-misc/source2.tests new file mode 100755 index 0000000..40b6b83 --- a/dev/null +++ b/shell/hush_test/hush-misc/source2.tests @@ -0,0 +1,8 @@ +echo 'echo "0:$0 1:$1 2:$2"' >sourced1 +set -- 1 2 3 +"$THIS_SH" -c '. ./sourced1' arg0 arg1 arg2 +echo Ok1:$? +"$THIS_SH" -c '. ./sourced1 q w e' arg0 arg1 arg2 +echo Ok2:$? + +rm sourced1 diff --git a/shell/hush_test/hush-misc/while4.right b/shell/hush_test/hush-misc/while4.right new file mode 100644 index 0000000..7b24a35 --- a/dev/null +++ b/shell/hush_test/hush-misc/while4.right @@ -0,0 +1 @@ +Ok:0 diff --git a/shell/hush_test/hush-misc/while4.tests b/shell/hush_test/hush-misc/while4.tests new file mode 100755 index 0000000..ba80e60 --- a/dev/null +++ b/shell/hush_test/hush-misc/while4.tests @@ -0,0 +1,6 @@ +false +while false && echo Not reached; do + echo BUG + break +done +echo Ok:$? diff --git a/shell/math.c b/shell/math.c index 15c0039..3da1511 100644 --- a/shell/math.c +++ b/shell/math.c @@ -494,18 +494,6 @@ static const char op_tokens[] ALIGN1 = { }; #define ptr_to_rparen (&op_tokens[sizeof(op_tokens)-7]) -const char* FAST_FUNC -endofname(const char *name) -{ - if (!is_name(*name)) - return name; - while (*++name) { - if (!is_in_name(*name)) - break; - } - return name; -} - static arith_t FAST_FUNC evaluate_string(arith_state_t *math_state, const char *expr) { diff --git a/shell/math.h b/shell/math.h index 2d305eb..864bee6 100644 --- a/shell/math.h +++ b/shell/math.h @@ -73,11 +73,6 @@ typedef long arith_t; #define strto_arith_t strtoul #endif -/* ash's and hush's endofname is the same, so... */ -# define is_name(c) ((c) == '_' || isalpha((unsigned char)(c))) -# define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c))) -const char* FAST_FUNC endofname(const char *name); - typedef const char* FAST_FUNC (*arith_var_lookup_t)(const char *name); typedef void FAST_FUNC (*arith_var_set_t)(const char *name, const char *val); //typedef const char* FAST_FUNC (*arith_var_endofname_t)(const char *name); diff --git a/shell/shell_common.c b/shell/shell_common.c index 0051f21..5729715 100644 --- a/shell/shell_common.c +++ b/shell/shell_common.c @@ -37,7 +37,7 @@ int FAST_FUNC is_well_formed_var_name(const char *s, char terminator) /* read builtin */ -/* Needs to be interruptible: shell mush handle traps and shell-special signals +/* Needs to be interruptible: shell must handle traps and shell-special signals * while inside read. To implement this, be sure to not loop on EINTR * and return errno == EINTR reliably. */ diff --git a/sysklogd/logread.c b/sysklogd/logread.c index 9939569..bea73d9 100644 --- a/sysklogd/logread.c +++ b/sysklogd/logread.c @@ -49,13 +49,18 @@ struct globals { memcpy(SMrup, init_sem, sizeof(init_sem)); \ } while (0) +#if 0 static void error_exit(const char *str) NORETURN; static void error_exit(const char *str) { - //release all acquired resources + /* Release all acquired resources */ shmdt(shbuf); bb_perror_msg_and_die(str); } +#else +/* On Linux, shmdt is not mandatory on exit */ +# define error_exit(str) bb_perror_msg_and_die(str) +#endif /* * sem_up - up()'s a semaphore. @@ -66,11 +71,10 @@ static void sem_up(int semid) error_exit("semop[SMrup]"); } -static void interrupted(int sig UNUSED_PARAM) +static void interrupted(int sig) { - signal(SIGINT, SIG_IGN); - shmdt(shbuf); - exit(EXIT_SUCCESS); + /* shmdt(shbuf); - on Linux, shmdt is not mandatory on exit */ + kill_myself_with_sig(sig); } int logread_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; @@ -85,18 +89,18 @@ int logread_main(int argc UNUSED_PARAM, char **argv) log_shmid = shmget(KEY_ID, 0, 0); if (log_shmid == -1) - bb_perror_msg_and_die("can't find syslogd buffer"); + bb_perror_msg_and_die("can't %s syslogd buffer", "find"); /* Attach shared memory to our char* */ shbuf = shmat(log_shmid, NULL, SHM_RDONLY); if (shbuf == NULL) - bb_perror_msg_and_die("can't access syslogd buffer"); + bb_perror_msg_and_die("can't %s syslogd buffer", "access"); log_semid = semget(KEY_ID, 0, 0); if (log_semid == -1) error_exit("can't get access to semaphores for syslogd buffer"); - signal(SIGINT, interrupted); + bb_signals(BB_FATAL_SIGS, interrupted); /* Suppose atomic memory read */ /* Max possible value for tail is shbuf->size - 1 */ @@ -122,7 +126,7 @@ int logread_main(int argc UNUSED_PARAM, char **argv) shbuf_data = shbuf->data; /* pointer! */ if (DEBUG) - printf("cur:%d tail:%i size:%i\n", + printf("cur:%u tail:%u size:%u\n", cur, shbuf_tail, shbuf_size); if (!follow) { @@ -183,9 +187,10 @@ int logread_main(int argc UNUSED_PARAM, char **argv) } free(copy); #endif + fflush_all(); } while (follow); - shmdt(shbuf); + /* shmdt(shbuf); - on Linux, shmdt is not mandatory on exit */ fflush_stdout_and_exit(EXIT_SUCCESS); } diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index 3fe3f53..a6a4ff2 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c @@ -29,7 +29,7 @@ //usage: "\n -b N N rotated logs to keep (default:1, max=99, 0=purge)" //usage: ) //usage: IF_FEATURE_REMOTE_LOG( -//usage: "\n -R HOST[:PORT] Log to IP or hostname on PORT (default PORT=514/UDP)" +//usage: "\n -R HOST[:PORT] Log to HOST:PORT (default PORT:514)" //usage: "\n -L Log locally and via network (default is network only if -R)" //usage: ) //usage: IF_FEATURE_SYSLOGD_DUP( @@ -58,6 +58,9 @@ #define SYSLOG_NAMES_CONST #include <syslog.h> */ +#ifndef _PATH_LOG +#define _PATH_LOG "/dev/log" +#endif #include <sys/un.h> #include <sys/uio.h> @@ -824,8 +827,8 @@ static NOINLINE int create_socket(void) /* Unlink old /dev/log or object it points to. */ /* (if it exists, bind will fail) */ - strcpy(sunx.sun_path, "/dev/log"); - dev_log_name = xmalloc_follow_symlinks("/dev/log"); + strcpy(sunx.sun_path, _PATH_LOG); + dev_log_name = xmalloc_follow_symlinks(_PATH_LOG); if (dev_log_name) { safe_strncpy(sunx.sun_path, dev_log_name, sizeof(sunx.sun_path)); free(dev_log_name); @@ -834,7 +837,7 @@ static NOINLINE int create_socket(void) sock_fd = xsocket(AF_UNIX, SOCK_DGRAM, 0); xbind(sock_fd, (struct sockaddr *) &sunx, sizeof(sunx)); - chmod("/dev/log", 0666); + chmod(_PATH_LOG, 0666); return sock_fd; } @@ -905,7 +908,7 @@ static void do_syslogd(void) sz = read(sock_fd, recvbuf, MAX_READ - 1); if (sz < 0) { if (!bb_got_signal) - bb_perror_msg("read from /dev/log"); + bb_perror_msg("read from %s", _PATH_LOG); break; } diff --git a/testsuite/awk.tests b/testsuite/awk.tests index f9c3b6b..132afc6 100755 --- a/testsuite/awk.tests +++ b/testsuite/awk.tests @@ -24,10 +24,57 @@ testing "awk if operator < " "awk 'BEGIN{if(2 < 13) print \"foo\"}'" "foo\n" " testing "awk if string == " "awk 'BEGIN{if(\"a\"==\"ab\") print \"bar\"}'" "" "" "" # 4294967295 = 0xffffffff -testing "awk bitwise op" "awk '{ print or(4294967295,1) }'" "4.29497e+09\n" "" "\n" +testing "awk bitwise op" "awk '{ print or(4294967295,1) }'" "4294967295\n" "" "\n" + +# we were testing for a non-empty body when deciding if a function was +# defined or not. The testcase below caused: +# awk: cmd. line:8: Call to undefined function +prg=' +function empty_fun(count) { + # empty +} +END { + i=1 + print "L" i "\n" + empty_fun(i + i + ++i) + print "L" i "\n" +}' +testing "awk handles empty function f(arg){}" \ + "awk '$prg'" \ + "L1\n\nL2\n\n" \ + "" "" + +prg=' +function outer_fun() { + return 1 +} +END { + i=1 + print "L" i "\n" + i += outer_fun() + print "L" i "\n" +}' +testing "awk properly handles function from other scope" \ + "awk '$prg'" \ + "L1\n\nL2\n\n" \ + "" "" + +prg=' +END { + i=1 + print "L" i "\n" + i + trigger_error_fun() + print "L" i "\n" +}' +testing "awk properly handles undefined function" \ + "awk '$prg' 2>&1" \ + "L1\n\nawk: cmd. line:5: Call to undefined function\n" \ + "" "" + + optional DESKTOP -testing "awk hex const 1" "awk '{ print or(0xffffffff,1) }'" "4.29497e+09\n" "" "\n" -testing "awk hex const 2" "awk '{ print or(0x80000000,1) }'" "2.14748e+09\n" "" "\n" +testing "awk hex const 1" "awk '{ print or(0xffffffff,1) }'" "4294967295\n" "" "\n" +testing "awk hex const 2" "awk '{ print or(0x80000000,1) }'" "2147483649\n" "" "\n" testing "awk oct const" "awk '{ print or(01234,1) }'" "669\n" "" "\n" SKIP= @@ -222,6 +269,32 @@ testing "awk FS assignment" "awk '{FS=\":\"; print \$1}'" \ "" \ "a:b c:d\ne:f g:h" +optional FEATURE_AWK_LIBM +testing "awk large integer" \ + "awk 'BEGIN{n=(2^31)-1; print n, int(n), n%1, ++n, int(n), n%1}'" \ + "2147483647 2147483647 0 2147483648 2147483648 0\n" \ + "" "" +SKIP= + +testing "awk length(array)" \ + "awk 'BEGIN{ A[1]=2; A[\"qwe\"]=\"asd\"; print length(A)}'" \ + "2\n" \ + "" "" + +testing "awk -f and ARGC" \ + "awk -f - input" \ + "re\n2\n" \ + "do re mi\n" \ + '{print $2; print ARGC;}' \ + +optional FEATURE_AWK_GNU_EXTENSIONS +testing "awk -e and ARGC" \ + "awk -e '{print \$2; print ARGC;}' input" \ + "re\n2\n" \ + "do re mi\n" \ + "" +SKIP= + # testing "description" "command" "result" "infile" "stdin" exit $FAILCOUNT diff --git a/testsuite/date/date-works b/testsuite/date/date-works index 901c485..35c2468 100644 --- a/testsuite/date/date-works +++ b/testsuite/date/date-works @@ -31,9 +31,11 @@ dt=`busybox date -d '1999-1-2 3:4:5'` dt=`echo "$dt" | cut -b1-19` test x"$dt" = x"Sat Jan 2 03:04:05" -dt=`busybox date -d 01231133` -dt=`echo "$dt" | cut -b5-19` -test x"$dt" = x"Jan 23 11:33:00" +# date (GNU coreutils) 8.17 doesn't accept 01231133 either: +# date: invalid date '01231133' +#dt=`busybox date -d 01231133` +#dt=`echo "$dt" | cut -b5-19` +#test x"$dt" = x"Jan 23 11:33:00" dt=`busybox date -d 200001231133` dt=`echo "$dt" | cut -b1-19` diff --git a/testsuite/date/date-works-1 b/testsuite/date/date-works-1 index 12018fe..6b2421e 100644 --- a/testsuite/date/date-works-1 +++ b/testsuite/date/date-works-1 @@ -41,9 +41,9 @@ test x"$hdt" = x"$dt" # Avoiding using week day in this evaluation, as it's mostly different every year # date (GNU coreutils) 6.10 reports: # date: invalid date '01231133' -dt=`busybox date -d 01231133 +%c` -dt=`echo "$dt" | cut -b5-19` -test x"$dt" = x"Jan 23 11:33:00" +#dt=`busybox date -d 01231133 +%c` +#dt=`echo "$dt" | cut -b5-19` +#test x"$dt" = x"Jan 23 11:33:00" # date (GNU coreutils) 6.10 reports: # date: invalid date '012311332000' diff --git a/testsuite/du/du-k-works b/testsuite/du/du-k-works index 36dcaa8..213e9ba 100644 --- a/testsuite/du/du-k-works +++ b/testsuite/du/du-k-works @@ -2,6 +2,12 @@ mkdir du.testdir cd du.testdir dd if=/dev/zero of=file1 bs=1k count=64 2>/dev/null dd if=/dev/zero of=file2 bs=1k count=16 2>/dev/null +# ext4 on images <512M gives 81kb +# ext3 on images <512M gives 83kb +# a bsd system reportedly gives 82kb test x"`busybox du -k .`" = x"80 ." \ + -o x"`busybox du -k .`" = x"81 ." \ + -o x"`busybox du -k .`" = x"82 ." \ + -o x"`busybox du -k .`" = x"83 ." \ -o x"`busybox du -k .`" = x"84 ." \ -o x"`busybox du -k .`" = x"88 ." diff --git a/testsuite/du/du-l-works b/testsuite/du/du-l-works index 426ee89..af87345 100644 --- a/testsuite/du/du-l-works +++ b/testsuite/du/du-l-works @@ -6,6 +6,7 @@ dd if=/dev/zero of=file1 bs=1k count=64 2>/dev/null ln file1 file1.1 dd if=/dev/zero of=file2 bs=1k count=16 2>/dev/null test x"`busybox du -l .`" = x"144 ." \ + -o x"`busybox du -l .`" = x"146 ." \ -o x"`busybox du -l .`" = x"148 ." \ -o x"`busybox du -l .`" = x"152 ." \ -o x"`busybox du -l .`" = x"156 ." diff --git a/testsuite/grep.tests b/testsuite/grep.tests index 4781f22..412efff 100755 --- a/testsuite/grep.tests +++ b/testsuite/grep.tests @@ -82,6 +82,20 @@ testing "grep -F handles -i" "grep -F -i foo input ; echo \$?" \ testing "grep can read regexps from stdin" "grep -f - input ; echo \$?" \ "two\nthree\n0\n" "tw\ntwo\nthree\n" "tw.\nthr\n" +# -x (whole line match) +testing "grep -x (full match)" "grep -x foo input ; echo \$?" \ + "foo\n0\n" "foo\n" "" +testing "grep -x (partial match 1)" "grep -x foo input ; echo \$?" \ + "1\n" "foo bar\n" "" +testing "grep -x (partial match 2)" "grep -x foo input ; echo \$?" \ + "1\n" "bar foo\n" "" +testing "grep -x -F (full match)" "grep -x -F foo input ; echo \$?" \ + "foo\n0\n" "foo\n" "" +testing "grep -x -F (partial match 1)" "grep -x -F foo input ; echo \$?" \ + "1\n" "foo bar\n" "" +testing "grep -x -F (partial match 2)" "grep -x -F foo input ; echo \$?" \ + "1\n" "bar foo\n" "" + optional FEATURE_GREP_EGREP_ALIAS testing "grep -E supports extended regexps" "grep -E fo+" "foo\n" "" \ "b\ar\nfoo\nbaz" @@ -127,6 +141,24 @@ testing "grep -Fw doesn't stop on 1st mismatch" \ "foop foo\n" \ "" +testing "grep -w doesn't stop on 1st mismatch" \ + "grep -w foo input" \ + "foop foo\n" \ + "foop foo\n" \ + "" + +testing "grep -w ^str doesn't match str not at the beginning" \ + "grep -w ^str input" \ + "" \ + "strstr\n" \ + "" + +testing "grep -w ^ doesn't hang" \ + "grep -w ^ input" \ + "" \ + "anything\n" \ + "" + # testing "test name" "commands" "expected result" "file input" "stdin" # file input will be file called "input" # test can create a file "actual" instead of writing to stdout diff --git a/testsuite/hostid/hostid-works b/testsuite/hostid/hostid-works index bcfd717..8c20bdf 100644 --- a/testsuite/hostid/hostid-works +++ b/testsuite/hostid/hostid-works @@ -1,8 +1,6 @@ h=x$(busybox hostid) # Is $h a sequence of hex numbers? -x="${h//[0123456789abcdef]/x}" -x="${x//xxx/x}" -x="${x//xxx/x}" -x="${x//xxx/x}" -x="${x//xx/x}" -test x"$x" = x"x" +case "$h" in + x*[!0-9a-f]*) false;; + *) true;; +esac diff --git a/testsuite/md5sum.tests b/testsuite/md5sum.tests index 1068b08..6c75b6d 100755 --- a/testsuite/md5sum.tests +++ b/testsuite/md5sum.tests @@ -30,13 +30,13 @@ result=`( n=0 while test $n -le 999; do echo "$text" | head -c $n | "$sum" - : $((n++)) + n=$(($n+1)) done | "$sum" )` if test x"$result" = x"$expected -"; then - echo "PASS: $sum" - exit 0 + echo "PASS: $sum" + exit 0 fi echo "FAIL: $sum (r:$result exp:$expected)" diff --git a/testsuite/sed.tests b/testsuite/sed.tests index 468565f..9494ac2 100755 --- a/testsuite/sed.tests +++ b/testsuite/sed.tests @@ -154,11 +154,9 @@ testing "sed selective matches insert newline" \ testing "sed selective matches noinsert newline" \ "sed -ne 's/woo/bang/p' input -" "a bang\nb bang" "a woo\nb woo" \ "c no\nd no" -test x"$SKIP_KNOWN_BUGS" = x"" && { testing "sed clusternewline" \ "sed -e '/one/a 111' -e '/two/i 222' -e p input -" \ "one\none\n111\n222\ntwo\ntwo" "one" "two" -} testing "sed subst+write" \ "sed -e 's/i/z/' -e 'woutputw' input -; $ECHO -n X; cat outputw" \ "thzngy\nagaznXthzngy\nagazn" "thingy" "again" @@ -310,6 +308,27 @@ testing "sed zero chars match/replace logic must not falsely trigger here 2" \ "sed 's/ *$/_/g'" \ "qwerty_\n" "" "qwerty\n" +testing "sed /\$_in_regex/ should not match newlines, only end-of-line" \ + "sed ': testcont; /\\\\$/{ =; N; b testcont }'" \ + "\ +this is a regular line +2 +line with \\ +continuation +more regular lines +5 +line with \\ +continuation +" \ + "" "\ +this is a regular line +line with \\ +continuation +more regular lines +line with \\ +continuation +" + # testing "description" "commands" "result" "infile" "stdin" exit $FAILCOUNT diff --git a/testsuite/tar.tests b/testsuite/tar.tests index 7927020..4929f4e 100755 --- a/testsuite/tar.tests +++ b/testsuite/tar.tests @@ -15,6 +15,44 @@ mkdir tar.tempdir && cd tar.tempdir || exit 1 # testing "test name" "script" "expected result" "file input" "stdin" +testing "Empty file is not a tarball" '\ +tar xvf - 2>&1; echo $? +' "\ +tar: short read +1 +" \ +"" "" +SKIP= + +optional FEATURE_SEAMLESS_GZ +# In NOMMU case, "invalid magic" message comes from gunzip child process. +# Otherwise, it comes from tar. +# Need to fix output up to avoid false positive. +testing "Empty file is not a tarball.tar.gz" '\ +{ tar xvzf - 2>&1; echo $?; } | grep -Fv "invalid magic" +' "\ +tar: short read +1 +" \ +"" "" +SKIP= + +testing "Two zeroed blocks is a ('truncated') empty tarball" '\ +dd if=/dev/zero bs=512 count=2 2>/dev/null | tar xvf - 2>&1; echo $? +' "\ +0 +" \ +"" "" +SKIP= + +testing "Twenty zeroed blocks is an empty tarball" '\ +dd if=/dev/zero bs=512 count=20 2>/dev/null | tar xvf - 2>&1; echo $? +' "\ +0 +" \ +"" "" +SKIP= + optional FEATURE_TAR_CREATE FEATURE_LS_SORTFILES testing "tar hardlinks and repeated files" '\ rm -rf input_* test.tar 2>/dev/null diff --git a/testsuite/testing.sh b/testsuite/testing.sh index 9ce9844..ccfebc8 100644 --- a/testsuite/testing.sh +++ b/testsuite/testing.sh @@ -63,10 +63,10 @@ optional() { SKIP= while test "$1"; do - if test x"${OPTIONFLAGS/*:$1:*/y}" != x"y"; then - SKIP=1 - return - fi + case "${OPTIONFLAGS}" in + *:$1:*) ;; + *) SKIP=1; return ;; + esac shift done } diff --git a/testsuite/which/which-uses-default-path b/testsuite/which/which-uses-default-path index 63ceb9f..349583d 100644 --- a/testsuite/which/which-uses-default-path +++ b/testsuite/which/which-uses-default-path @@ -1,4 +1,4 @@ -BUSYBOX=$(type -p busybox) +BUSYBOX=$(command -pv busybox) SAVED_PATH=$PATH unset PATH $BUSYBOX which ls diff --git a/util-linux/Config.src b/util-linux/Config.src index 93b84ad..8c5343b 100644 --- a/util-linux/Config.src +++ b/util-linux/Config.src @@ -699,250 +699,6 @@ config FEATURE_MTAB_SUPPORT About the only reason to use this is if you've removed /proc from your kernel. -config VOLUMEID - bool #No description makes it a hidden option - default n - -menu "Filesystem/Volume identification" - depends on VOLUMEID - -config FEATURE_VOLUMEID_EXT - bool "Ext filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_BTRFS - bool "btrfs filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_REISERFS - bool "Reiser filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_FAT - bool "fat filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_EXFAT - bool "exFAT filesystem" - default y - depends on VOLUMEID - help - exFAT (extended FAT) is a proprietary file system designed especially - for flash drives. It has many features from NTFS, but with less - overhead. exFAT is used on most SDXC cards for consumer electronics. - -config FEATURE_VOLUMEID_HFS - bool "hfs filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_JFS - bool "jfs filesystem" - default y - depends on VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_UFS -### bool "ufs filesystem" -### default y -### depends on VOLUMEID -### help -### TODO - -config FEATURE_VOLUMEID_XFS - bool "xfs filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_NILFS - bool "nilfs filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_NTFS - bool "ntfs filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_ISO9660 - bool "iso9660 filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_UDF - bool "udf filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_LUKS - bool "luks filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_LINUXSWAP - bool "linux swap filesystem" - default y - depends on VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_LVM -### bool "lvm" -### default y -### depends on VOLUMEID -### help -### TODO - -config FEATURE_VOLUMEID_CRAMFS - bool "cramfs filesystem" - default y - depends on VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_HPFS -### bool "hpfs filesystem" -### default y -### depends on VOLUMEID -### help -### TODO - -config FEATURE_VOLUMEID_ROMFS - bool "romfs filesystem" - default y - depends on VOLUMEID - help - TODO - -config FEATURE_VOLUMEID_SQUASHFS - bool "SquashFS filesystem" - default y - depends on VOLUMEID && FEATURE_BLKID_TYPE - help - Squashfs is a compressed read-only filesystem for Linux. Squashfs is - intended for general read-only filesystem use and in constrained block - device/memory systems (e.g. embedded systems) where low overhead is - needed. - -config FEATURE_VOLUMEID_SYSV - bool "sysv filesystem" - default y - depends on VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_MINIX -### bool "minix filesystem" -### default y -### depends on VOLUMEID -### help -### TODO - -### These only detect partition tables - not used (yet?) -### config FEATURE_VOLUMEID_MAC -### bool "mac filesystem" -### default y -### depends on VOLUMEID -### help -### TODO -### -### config FEATURE_VOLUMEID_MSDOS -### bool "msdos filesystem" -### default y -### depends on VOLUMEID -### help -### TODO - -config FEATURE_VOLUMEID_OCFS2 - bool "ocfs2 filesystem" - default y - depends on VOLUMEID - help - TODO - -### config FEATURE_VOLUMEID_HIGHPOINTRAID -### bool "highpoint raid" -### default y -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_ISWRAID -### bool "intel raid" -### default y -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_LSIRAID -### bool "lsi raid" -### default y -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_VIARAID -### bool "via raid" -### default y -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_SILICONRAID -### bool "silicon raid" -### default y -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_NVIDIARAID -### bool "nvidia raid" -### default y -### depends on VOLUMEID -### help -### TODO - -### config FEATURE_VOLUMEID_PROMISERAID -### bool "promise raid" -### default y -### depends on VOLUMEID -### help -### TODO - -config FEATURE_VOLUMEID_LINUXRAID - bool "linuxraid" - default y - depends on VOLUMEID - help - TODO - -endmenu +source util-linux/volume_id/Config.in endmenu diff --git a/util-linux/fdformat.c b/util-linux/fdformat.c index b3e918f..6f49cec 100644 --- a/util-linux/fdformat.c +++ b/util-linux/fdformat.c @@ -72,7 +72,7 @@ int fdformat_main(int argc UNUSED_PARAM, char **argv) /* original message was: "Could not determine current format type" */ xioctl(fd, FDGETPRM, ¶m); - printf("%s-sided, %d tracks, %d sec/track. Total capacity %d kB\n", + printf("%s-sided, %u tracks, %u sec/track. Total capacity %d kB\n", (param.head == 2) ? "Double" : "Single", param.track, param.sect, param.size >> 1); diff --git a/util-linux/fdisk_gpt.c b/util-linux/fdisk_gpt.c index d43d9c7..5786d5f 100644 --- a/util-linux/fdisk_gpt.c +++ b/util-linux/fdisk_gpt.c @@ -93,9 +93,7 @@ gpt_list_table(int xtra UNUSED_PARAM) int i; char numstr6[6]; - numstr6[5] = '\0'; - - smart_ulltoa5(total_number_of_sectors, numstr6, " KMGTPEZY"); + smart_ulltoa5(total_number_of_sectors * sector_size, numstr6, " KMGTPEZY")[0] = '\0'; printf("Disk %s: %llu sectors, %s\n", disk_device, (unsigned long long)total_number_of_sectors, numstr6); @@ -112,8 +110,8 @@ gpt_list_table(int xtra UNUSED_PARAM) for (i = 0; i < n_parts; i++) { gpt_partition *p = gpt_part(i); if (p->lba_start) { - smart_ulltoa5(1 + SWAP_LE64(p->lba_end) - SWAP_LE64(p->lba_start), - numstr6, " KMGTPEZY"); + smart_ulltoa5((1 + SWAP_LE64(p->lba_end) - SWAP_LE64(p->lba_start)) * sector_size, + numstr6, " KMGTPEZY")[0] = '\0'; printf("%4u %15llu %15llu %11s %04x ", i + 1, (unsigned long long)SWAP_LE64(p->lba_start), diff --git a/util-linux/fdisk_sun.c b/util-linux/fdisk_sun.c index e7fcc06..e32740d 100644 --- a/util-linux/fdisk_sun.c +++ b/util-linux/fdisk_sun.c @@ -348,6 +348,7 @@ create_sunlabel(void) set_all_unchanged(); set_changed(0); + check_sun_label(); get_boot(CREATE_EMPTY_SUN); } @@ -497,11 +498,14 @@ add_sun_partition(int n, int sys) else first = read_int(scround(start), scround(stop)+1, scround(stop), 0, mesg); - if (display_in_cyl_units) + if (display_in_cyl_units) { first *= units_per_sector; - else + } else { /* Starting sector has to be properly aligned */ - first = (first + g_heads * g_sectors - 1) / (g_heads * g_sectors); + first = (first + g_heads * g_sectors - 1) / + (g_heads * g_sectors); + first *= g_heads * g_sectors; + } if (n == 2 && first != 0) printf("\ It is highly recommended that the third partition covers the whole disk\n\ diff --git a/util-linux/fsck_minix.c b/util-linux/fsck_minix.c index c1d1b2c..33767a1 100644 --- a/util-linux/fsck_minix.c +++ b/util-linux/fsck_minix.c @@ -686,7 +686,7 @@ static void get_inode_common(unsigned nr, uint16_t i_mode) total++; if (!inode_count[nr]) { if (!inode_in_use(nr)) { - printf("Inode %d is marked as 'unused', but it is used " + printf("Inode %u is marked as 'unused', but it is used " "for file '%s'\n", nr, current_name); if (OPT_repair) { if (ask("Mark as 'in use'", 1)) diff --git a/util-linux/getopt.c b/util-linux/getopt.c index 1ae0c59..58df1c8 100644 --- a/util-linux/getopt.c +++ b/util-linux/getopt.c @@ -35,27 +35,32 @@ //usage: "[OPTIONS] [--] OPTSTRING PARAMS" //usage:#define getopt_full_usage "\n\n" //usage: IF_LONG_OPTS( -//usage: " -a,--alternative Allow long options starting with single -" -//usage: "\n -l,--longoptions=LOPT[,...] Long options to be recognized" -//usage: "\n -n,--name=PROGNAME The name under which errors are reported" -//usage: "\n -o,--options=OPTSTRING Short options to be recognized" -//usage: "\n -q,--quiet Disable error reporting by getopt(3)" +//usage: IF_FEATURE_GETOPT_LONG( +//usage: " -a,--alternative Allow long options starting with single -\n" +//usage: " -l,--longoptions=LOPT[,...] Long options to recognize\n" +//usage: ) +//usage: " -n,--name=PROGNAME The name under which errors are reported" +//usage: "\n -o,--options=OPTSTRING Short options to recognize" +//usage: "\n -q,--quiet No error messages on unrecognized options" //usage: "\n -Q,--quiet-output No normal output" //usage: "\n -s,--shell=SHELL Set shell quoting conventions" -//usage: "\n -T,--test Test for getopt(1) version" -//usage: "\n -u,--unquoted Don't quote the output" +//usage: "\n -T,--test Version test (exits with 4)" +//usage: "\n -u,--unquoted Don't quote output" //usage: ) //usage: IF_NOT_LONG_OPTS( -//usage: " -a Allow long options starting with single -" -//usage: "\n -l LOPT[,...] Long options to be recognized" -//usage: "\n -n PROGNAME The name under which errors are reported" -//usage: "\n -o OPTSTRING Short options to be recognized" -//usage: "\n -q Disable error reporting by getopt(3)" +//usage: IF_FEATURE_GETOPT_LONG( +//usage: " -a Allow long options starting with single -\n" +//usage: " -l LOPT[,...] Long options to recognize\n" +//usage: ) +//usage: " -n PROGNAME The name under which errors are reported" +//usage: "\n -o OPTSTRING Short options to recognize" +//usage: "\n -q No error messages on unrecognized options" //usage: "\n -Q No normal output" //usage: "\n -s SHELL Set shell quoting conventions" -//usage: "\n -T Test for getopt(1) version" -//usage: "\n -u Don't quote the output" +//usage: "\n -T Version test (exits with 4)" +//usage: "\n -u Don't quote output" //usage: ) +//usage: IF_FEATURE_GETOPT_LONG( /* example uses -l, needs FEATURE_GETOPT_LONG */ //usage: "\n" //usage: "\nExample:" //usage: "\n" @@ -73,6 +78,7 @@ //usage: "\n *) echo Error; exit 1;;" //usage: "\n esac" //usage: "\ndone" +//usage: ) //usage: //usage:#define getopt_example_usage //usage: "$ cat getopt.test\n" @@ -214,11 +220,6 @@ static const char *normalize(const char *arg) static int generate_output(char **argv, int argc, const char *optstr, const struct option *longopts) { int exit_code = 0; /* We assume everything will be OK */ - int opt; -#if ENABLE_FEATURE_GETOPT_LONG - int longindex; -#endif - const char *charptr; if (quiet_errors) /* No error reporting from getopt(3) */ opterr = 0; @@ -233,13 +234,14 @@ static int generate_output(char **argv, int argc, const char *optstr, const stru #endif while (1) { - opt = #if ENABLE_FEATURE_GETOPT_LONG - alternative ? - getopt_long_only(argc, argv, optstr, longopts, &longindex) : - getopt_long(argc, argv, optstr, longopts, &longindex); + int longindex; + int opt = alternative + ? getopt_long_only(argc, argv, optstr, longopts, &longindex) + : getopt_long(argc, argv, optstr, longopts, &longindex) + ; #else - getopt(argc, argv, optstr); + int opt = getopt(argc, argv, optstr); #endif if (opt == -1) break; @@ -257,9 +259,10 @@ static int generate_output(char **argv, int argc, const char *optstr, const stru if (opt == NON_OPT) printf(" %s", normalize(optarg)); else { + const char *charptr; printf(" -%c", opt); charptr = strchr(optstr, opt); - if (charptr != NULL && *++charptr == ':') + if (charptr && *++charptr == ':') printf(" %s", normalize(optarg ? optarg : "")); } @@ -267,9 +270,11 @@ static int generate_output(char **argv, int argc, const char *optstr, const stru } if (!quiet_output) { + unsigned idx; printf(" --"); - while (optind < argc) - printf(" %s", normalize(argv[optind++])); + idx = optind; + while (argv[idx]) + printf(" %s", normalize(argv[idx++])); bb_putchar('\n'); } return exit_code; diff --git a/util-linux/hexdump.c b/util-linux/hexdump.c index 9a312f9..ac7e24f 100644 --- a/util-linux/hexdump.c +++ b/util-linux/hexdump.c @@ -66,13 +66,6 @@ static const char add_first[] ALIGN1 = "\"%07.7_Ax\n\""; static const char hexdump_opts[] ALIGN1 = "bcdoxCe:f:n:s:v" IF_FEATURE_HEXDUMP_REVERSE("R"); -static const struct suffix_mult suffixes[] = { - { "b", 512 }, - { "k", 1024 }, - { "m", 1024*1024 }, - { "", 0 } -}; - int hexdump_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int hexdump_main(int argc, char **argv) { @@ -116,7 +109,12 @@ int hexdump_main(int argc, char **argv) dumper->dump_length = xatoi_positive(optarg); } /* else */ if (ch == 's') { /* compat: -s accepts hex numbers too */ - dumper->dump_skip = xstrtoul_range_sfx(optarg, /*base:*/ 0, /*lo:*/ 0, /*hi:*/ LONG_MAX, suffixes); + dumper->dump_skip = xstrtoull_range_sfx( + optarg, + /*base:*/ 0, + /*lo:*/ 0, /*hi:*/ OFF_T_MAX, + bkm_suffixes + ); } /* else */ if (ch == 'v') { dumper->dump_vflag = ALL; diff --git a/util-linux/ipcs.c b/util-linux/ipcs.c index 2668caf..67a25a8 100644 --- a/util-linux/ipcs.c +++ b/util-linux/ipcs.c @@ -166,10 +166,10 @@ static NOINLINE void do_shm(void) case STATUS: printf("------ Shared Memory %s --------\n", "Status"); printf("segments allocated %d\n" - "pages allocated %ld\n" - "pages resident %ld\n" - "pages swapped %ld\n" - "Swap performance: %ld attempts\t%ld successes\n", + "pages allocated %lu\n" + "pages resident %lu\n" + "pages swapped %lu\n" + "Swap performance: %lu attempts\t%lu successes\n", shm_info.used_ids, shm_info.shm_tot, shm_info.shm_rss, @@ -569,7 +569,7 @@ static void print_sem(int semid) if (val < 0 || ncnt < 0 || zcnt < 0 || pid < 0) { bb_perror_msg_and_die("semctl"); } - printf("%-10d %-10d %-10d %-10d %-10d\n", i, val, ncnt, zcnt, pid); + printf("%-10u %-10d %-10d %-10d %-10d\n", i, val, ncnt, zcnt, pid); } bb_putchar('\n'); } diff --git a/util-linux/losetup.c b/util-linux/losetup.c index 21108d0..d450b5a 100644 --- a/util-linux/losetup.c +++ b/util-linux/losetup.c @@ -8,16 +8,16 @@ */ //usage:#define losetup_trivial_usage -//usage: "[-r] [-o OFS] LOOPDEV FILE - associate loop devices\n" +//usage: "[-r] [-o OFS] {-f|LOOPDEV} FILE - associate loop devices\n" //usage: " losetup -d LOOPDEV - disassociate\n" -//usage: " losetup [-f] - show" +//usage: " losetup -a - show status\n" +//usage: " losetup -f - show next free loop device" //usage:#define losetup_full_usage "\n\n" //usage: " -o OFS Start OFS bytes into FILE" //usage: "\n -r Read-only" -//usage: "\n -f Show first free loop device" +//usage: "\n -f Show/use next free loop device" //usage: //usage:#define losetup_notes_usage -//usage: "No arguments will display all current associations.\n" //usage: "One argument (losetup /dev/loop1) will display the current association\n" //usage: "(if any), or disassociate it (with -d). The display shows the offset\n" //usage: "and filename of the file the loop device is currently bound to.\n\n" @@ -27,50 +27,32 @@ #include "libbb.h" +/* 1048575 is a max possible minor number in Linux circa 2010 */ +/* for now use something less extreme */ +#define MAX_LOOP_NUM 1023 + int losetup_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int losetup_main(int argc UNUSED_PARAM, char **argv) { unsigned opt; - int n; char *opt_o; - unsigned long long offset = 0; + char dev[LOOP_NAMESIZE]; enum { OPT_d = (1 << 0), OPT_o = (1 << 1), OPT_f = (1 << 2), - OPT_r = (1 << 3), /* must be last */ + OPT_a = (1 << 3), + OPT_r = (1 << 4), /* must be last */ }; - /* max 2 args, -d,-o,-f opts are mutually exclusive */ - opt_complementary = "?2:d--of:o--df:f--do"; - opt = getopt32(argv, "do:fr", &opt_o); + opt_complementary = "?2:d--ofar:a--ofr"; + opt = getopt32(argv, "do:far", &opt_o); argv += optind; - if (opt == OPT_o) - offset = xatoull(opt_o); - - if (opt == OPT_d) { - /* -d BLOCKDEV */ - if (!argv[0] || argv[1]) - bb_show_usage(); - if (del_loop(argv[0])) - bb_simple_perror_msg_and_die(argv[0]); - return EXIT_SUCCESS; - } - - if (argv[0]) { + /* LOOPDEV */ + if (!opt && argv[0] && !argv[1]) { char *s; - if (opt == OPT_f) /* -f should not have arguments */ - bb_show_usage(); - - if (argv[1]) { - /* [-r] [-o OFS] BLOCKDEV FILE */ - if (set_loop(&argv[0], argv[1], offset, (opt / OPT_r)) < 0) - bb_simple_perror_msg_and_die(argv[0]); - return EXIT_SUCCESS; - } - /* [-r] [-o OFS] BLOCKDEV */ s = query_loop(argv[0]); if (!s) bb_simple_perror_msg_and_die(argv[0]); @@ -80,28 +62,65 @@ int losetup_main(int argc UNUSED_PARAM, char **argv) return EXIT_SUCCESS; } - /* [-r] [-o OFS|-f] with no params */ - n = 0; - while (1) { - char *s; - char dev[LOOP_NAMESIZE]; - - sprintf(dev, LOOP_FORMAT, n); - s = query_loop(dev); - n++; - if (!s) { - if (n > 9 && errno && errno != ENXIO) - return EXIT_SUCCESS; - if (opt == OPT_f) { - puts(dev); - return EXIT_SUCCESS; - } - } else { - if (opt != OPT_f) + /* -d LOOPDEV */ + if (opt == OPT_d && argv[0]) { + if (del_loop(argv[0])) + bb_simple_perror_msg_and_die(argv[0]); + return EXIT_SUCCESS; + } + + /* -a */ + if (opt == OPT_a) { + int n; + for (n = 0; n < MAX_LOOP_NUM; n++) { + char *s; + + sprintf(dev, LOOP_FORMAT, n); + s = query_loop(dev); + if (s) { printf("%s: %s\n", dev, s); - if (ENABLE_FEATURE_CLEAN_UP) free(s); + } + } + return EXIT_SUCCESS; + } + + /* contains -f */ + if (opt & OPT_f) { + char *s; + int n = 0; + + do { + if (n > MAX_LOOP_NUM) + bb_error_msg_and_die("no free loop devices"); + sprintf(dev, LOOP_FORMAT, n++); + s = query_loop(dev); + free(s); + } while (s); + /* now: dev is next free "/dev/loopN" */ + if ((opt == OPT_f) && !argv[0]) { + puts(dev); + return EXIT_SUCCESS; } } - return EXIT_SUCCESS; + + /* [-r] [-o OFS] {-f|LOOPDEV} FILE */ + if (argv[0] && ((opt & OPT_f) || argv[1])) { + unsigned long long offset = 0; + char *d = dev; + + if (opt & OPT_o) + offset = xatoull(opt_o); + if (!(opt & OPT_f)) + d = *argv++; + + if (argv[0]) { + if (set_loop(&d, argv[0], offset, (opt & OPT_r)) < 0) + bb_simple_perror_msg_and_die(argv[0]); + return EXIT_SUCCESS; + } + } + + bb_show_usage(); /* does not return */ + /*return EXIT_FAILURE;*/ } diff --git a/util-linux/mdev.c b/util-linux/mdev.c index 3d4e135..e80b58f 100644 --- a/util-linux/mdev.c +++ b/util-linux/mdev.c @@ -325,23 +325,6 @@ static void clean_up_cur_rule(void) make_default_cur_rule(); } -/* In later versions, endofname is in libbb */ -#define endofname mdev_endofname -static -const char* FAST_FUNC -endofname(const char *name) -{ -#define is_name(c) ((c) == '_' || isalpha((unsigned char)(c))) -#define is_in_name(c) ((c) == '_' || isalnum((unsigned char)(c))) - if (!is_name(*name)) - return name; - while (*++name) { - if (!is_in_name(*name)) - break; - } - return name; -} - static char *parse_envmatch_pfx(char *val) { struct envmatch **nextp = &G.cur_rule.envmatch; @@ -1100,15 +1083,15 @@ int mdev_main(int argc UNUSED_PARAM, char **argv) * ACTION can be "add", "remove", "change" * DEVPATH is like "/block/sda" or "/class/input/mice" */ - action = getenv("ACTION"); - op = index_in_strings(keywords, action); env_devname = getenv("DEVNAME"); /* can be NULL */ - env_devpath = getenv("DEVPATH"); G.subsystem = getenv("SUBSYSTEM"); + action = getenv("ACTION"); + env_devpath = getenv("DEVPATH"); if (!action || !env_devpath /*|| !G.subsystem*/) bb_show_usage(); fw = getenv("FIRMWARE"); seq = getenv("SEQNUM"); + op = index_in_strings(keywords, action); my_pid = getpid(); open_mdev_log(seq, my_pid); diff --git a/util-linux/mkfs_minix.c b/util-linux/mkfs_minix.c index 59d7d23..d65a516 100644 --- a/util-linux/mkfs_minix.c +++ b/util-linux/mkfs_minix.c @@ -196,54 +196,6 @@ static void minix_clrbit(char *a, unsigned i) # define BLKGETSIZE _IO(0x12,96) /* return device size */ #endif - -static long valid_offset(int fd, int offset) -{ - char ch; - - if (lseek(fd, offset, SEEK_SET) < 0) - return 0; - if (read(fd, &ch, 1) < 1) - return 0; - return 1; -} - -static int count_blocks(int fd) -{ - int high, low; - - low = 0; - for (high = 1; valid_offset(fd, high); high *= 2) - low = high; - - while (low < high - 1) { - const int mid = (low + high) / 2; - - if (valid_offset(fd, mid)) - low = mid; - else - high = mid; - } - valid_offset(fd, 0); - return (low + 1); -} - -static int get_size(const char *file) -{ - int fd; - long size; - - fd = xopen(file, O_RDWR); - if (ioctl(fd, BLKGETSIZE, &size) >= 0) { - close(fd); - return (size * 512); - } - - size = count_blocks(fd); - close(fd); - return size; -} - static void write_tables(void) { /* Mark the superblock valid. */ @@ -553,7 +505,7 @@ static void get_list_blocks(char *filename) listfile = xfopen_for_read(filename); while (!feof(listfile)) { - fscanf(listfile, "%ld\n", &blockno); + fscanf(listfile, "%lu\n", &blockno); mark_zone(blockno); G.badblocks++; } @@ -636,7 +588,6 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv) { unsigned opt; char *tmp; - struct stat statbuf; char *str_i; char *listfile = NULL; @@ -673,13 +624,17 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv) #endif } - G.device_name = *argv++; + G.device_name = argv[0]; if (!G.device_name) bb_show_usage(); - if (*argv) - G.total_blocks = xatou32(*argv); - else - G.total_blocks = get_size(G.device_name) / 1024; + + /* Check if it is mounted */ + if (find_mount_point(G.device_name, 0)) + bb_error_msg_and_die("can't format mounted filesystem"); + + xmove_fd(xopen(G.device_name, O_RDWR), dev_fd); + + G.total_blocks = get_volume_size_in_bytes(dev_fd, argv[1], 1024, /*extend:*/ 1) / 1024; if (G.total_blocks < 10) bb_error_msg_and_die("must have at least 10 blocks"); @@ -690,25 +645,21 @@ int mkfs_minix_main(int argc UNUSED_PARAM, char **argv) G.magic = MINIX2_SUPER_MAGIC; } else if (G.total_blocks > 65535) G.total_blocks = 65535; - - /* Check if it is mounted */ - if (find_mount_point(G.device_name, 0)) - bb_error_msg_and_die("can't format mounted filesystem"); - - xmove_fd(xopen(G.device_name, O_RDWR), dev_fd); +#if 0 + struct stat statbuf; xfstat(dev_fd, &statbuf, G.device_name); +/* why? */ if (!S_ISBLK(statbuf.st_mode)) opt &= ~1; // clear -c (check) - +#if 0 /* I don't know why someone has special code to prevent mkfs.minix * on IDE devices. Why IDE but not SCSI, etc?... */ -#if 0 else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340) /* what is this? */ bb_error_msg_and_die("will not try " "to make filesystem on '%s'", G.device_name); #endif - +#endif tmp = G.root_block; *(short *) tmp = 1; strcpy(tmp + 2, "."); diff --git a/util-linux/mount.c b/util-linux/mount.c index 7e547fe..16b58a0 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -1856,8 +1856,8 @@ static int singlemount(struct mntent *mp, int ignore_busy) len, share, share + len + 1 /* "dir1/dir2" */ ); - parse_mount_options(unc, &filteropts); - if (ENABLE_FEATURE_CLEAN_UP) free(unc); + parse_mount_options(unc, &filteropts); + if (ENABLE_FEATURE_CLEAN_UP) free(unc); } lsa = host2sockaddr(hostname, 0); diff --git a/util-linux/readprofile.c b/util-linux/readprofile.c index 974fe89..a645404 100644 --- a/util-linux/readprofile.c +++ b/util-linux/readprofile.c @@ -152,7 +152,7 @@ int readprofile_main(int argc UNUSED_PARAM, char **argv) step = buf[0]; if (optInfo) { - printf("Sampling_step: %i\n", step); + printf("Sampling_step: %u\n", step); return EXIT_SUCCESS; } @@ -219,10 +219,10 @@ int readprofile_main(int argc UNUSED_PARAM, char **argv) && (fn_len = next_add-fn_add) != 0 ) { if (optVerbose) - printf("%016llx %-40s %6i %8.4f\n", fn_add, + printf("%016llx %-40s %6u %8.4f\n", fn_add, fn_name, this, this/(double)fn_len); else - printf("%6i %-40s %8.4f\n", + printf("%6u %-40s %8.4f\n", this, fn_name, this/(double)fn_len); if (optSub) { unsigned long long scan; @@ -246,14 +246,14 @@ int readprofile_main(int argc UNUSED_PARAM, char **argv) } /* clock ticks, out of kernel text - probably modules */ - printf("%6i %s\n", buf[len/sizeof(*buf)-1], "*unknown*"); + printf("%6u %s\n", buf[len/sizeof(*buf)-1], "*unknown*"); /* trailer */ if (optVerbose) - printf("%016x %-40s %6i %8.4f\n", + printf("%016x %-40s %6u %8.4f\n", 0, "total", total, total/(double)(fn_add-add0)); else - printf("%6i %-40s %8.4f\n", + printf("%6u %-40s %8.4f\n", total, "total", total/(double)(fn_add-add0)); fclose(map); diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c index 54867ec..3f22334 100644 --- a/util-linux/swaponoff.c +++ b/util-linux/swaponoff.c @@ -95,6 +95,20 @@ static int do_em_all(void) if (applet_name[5] != 'n' || hasmntopt(m, MNTOPT_NOAUTO) == NULL ) { +#if ENABLE_FEATURE_SWAPON_PRI + char *p; + g_flags = 0; /* each swap space might have different flags */ + p = hasmntopt(m, "pri"); + if (p) { + /* Max allowed 32767 (==SWAP_FLAG_PRIO_MASK) */ + unsigned int swap_prio = MIN(bb_strtou(p + 4 , NULL, 10), SWAP_FLAG_PRIO_MASK); + /* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */ + if (errno != ERANGE) { + g_flags = SWAP_FLAG_PREFER | + (swap_prio << SWAP_FLAG_PRIO_SHIFT); + } + } +#endif err += swap_enable_disable(m->mnt_fsname); } } diff --git a/util-linux/volume_id/Config.src b/util-linux/volume_id/Config.src new file mode 100644 index 0000000..ac208c9 --- a/dev/null +++ b/util-linux/volume_id/Config.src @@ -0,0 +1,15 @@ +# +# For a description of the syntax of this configuration file, +# see scripts/kbuild/config-language.txt. +# + +config VOLUMEID + bool #No description makes it a hidden option + default n + +menu "Filesystem/Volume identification" + depends on VOLUMEID + +INSERT + +endmenu diff --git a/util-linux/volume_id/Kbuild.src b/util-linux/volume_id/Kbuild.src index 759fdaa..6b4fb74 100644 --- a/util-linux/volume_id/Kbuild.src +++ b/util-linux/volume_id/Kbuild.src @@ -7,41 +7,3 @@ lib-y:= INSERT - -lib-$(CONFIG_BLKID) += get_devname.o -lib-$(CONFIG_FINDFS) += get_devname.o -lib-$(CONFIG_FEATURE_MOUNT_LABEL) += get_devname.o - -lib-$(CONFIG_VOLUMEID) += volume_id.o util.o -lib-$(CONFIG_FEATURE_VOLUMEID_BTRFS) += btrfs.o -lib-$(CONFIG_FEATURE_VOLUMEID_EXT) += ext.o -lib-$(CONFIG_FEATURE_VOLUMEID_FAT) += fat.o -lib-$(CONFIG_FEATURE_VOLUMEID_HFS) += hfs.o -### lib-$(CONFIG_FEATURE_VOLUMEID_HIGHPOINTRAID) += highpoint.o -### lib-$(CONFIG_FEATURE_VOLUMEID_ISWRAID) += isw_raid.o -### lib-$(CONFIG_FEATURE_VOLUMEID_LSIRAID) += lsi_raid.o -### lib-$(CONFIG_FEATURE_VOLUMEID_VIARAID) += via_raid.o -### lib-$(CONFIG_FEATURE_VOLUMEID_SILICONRAID) += silicon_raid.o -### lib-$(CONFIG_FEATURE_VOLUMEID_NVIDIARAID) += nvidia_raid.o -### lib-$(CONFIG_FEATURE_VOLUMEID_PROMISERAID) += promise_raid.o -lib-$(CONFIG_FEATURE_VOLUMEID_ISO9660) += iso9660.o -lib-$(CONFIG_FEATURE_VOLUMEID_JFS) += jfs.o -lib-$(CONFIG_FEATURE_VOLUMEID_LINUXRAID) += linux_raid.o -lib-$(CONFIG_FEATURE_VOLUMEID_LINUXSWAP) += linux_swap.o -### lib-$(CONFIG_FEATURE_VOLUMEID_LVM) += lvm.o -### lib-$(CONFIG_FEATURE_VOLUMEID_MAC) += mac.o -### lib-$(CONFIG_FEATURE_VOLUMEID_MSDOS) += msdos.o -lib-$(CONFIG_FEATURE_VOLUMEID_NILFS) += nilfs.o -lib-$(CONFIG_FEATURE_VOLUMEID_NTFS) += ntfs.o -lib-$(CONFIG_FEATURE_VOLUMEID_EXFAT) += exfat.o -lib-$(CONFIG_FEATURE_VOLUMEID_REISERFS) += reiserfs.o -lib-$(CONFIG_FEATURE_VOLUMEID_UDF) += udf.o -### lib-$(CONFIG_FEATURE_VOLUMEID_UFS) += ufs.o -lib-$(CONFIG_FEATURE_VOLUMEID_XFS) += xfs.o -lib-$(CONFIG_FEATURE_VOLUMEID_CRAMFS) += cramfs.o -### lib-$(CONFIG_FEATURE_VOLUMEID_HPFS) += hpfs.o -lib-$(CONFIG_FEATURE_VOLUMEID_ROMFS) += romfs.o -lib-$(CONFIG_FEATURE_VOLUMEID_SYSV) += sysv.o -### lib-$(CONFIG_FEATURE_VOLUMEID_MINIX) += minix.o -lib-$(CONFIG_FEATURE_VOLUMEID_LUKS) += luks.o -lib-$(CONFIG_FEATURE_VOLUMEID_OCFS2) += ocfs2.o diff --git a/util-linux/volume_id/btrfs.c b/util-linux/volume_id/btrfs.c index ee71d2e..e4dddf2 100644 --- a/util-linux/volume_id/btrfs.c +++ b/util-linux/volume_id/btrfs.c @@ -19,6 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_BTRFS) += btrfs.o + +//config: +//config:config FEATURE_VOLUMEID_BTRFS +//config: bool "btrfs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" #define BTRFS_UUID_SIZE 16 diff --git a/util-linux/volume_id/cramfs.c b/util-linux/volume_id/cramfs.c index 28e9970..aeb7f20 100644 --- a/util-linux/volume_id/cramfs.c +++ b/util-linux/volume_id/cramfs.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_CRAMFS) += cramfs.o + +//config: +//config:config FEATURE_VOLUMEID_CRAMFS +//config: bool "cramfs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct cramfs_super { diff --git a/util-linux/volume_id/exfat.c b/util-linux/volume_id/exfat.c index a38a891..c3aa368 100644 --- a/util-linux/volume_id/exfat.c +++ b/util-linux/volume_id/exfat.c @@ -18,6 +18,19 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_EXFAT) += exfat.o + +//config: +//config:config FEATURE_VOLUMEID_EXFAT +//config: bool "exFAT filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: exFAT (extended FAT) is a proprietary file system designed especially +//config: for flash drives. It has many features from NTFS, but with less +//config: overhead. exFAT is used on most SDXC cards for consumer electronics. +//config: + #include "volume_id_internal.h" #define EXFAT_SB_OFFSET 0 diff --git a/util-linux/volume_id/ext.c b/util-linux/volume_id/ext.c index 9745106..df39d93 100644 --- a/util-linux/volume_id/ext.c +++ b/util-linux/volume_id/ext.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_EXT) += ext.o + +//config: +//config:config FEATURE_VOLUMEID_EXT +//config: bool "Ext filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" #include "bb_e2fs_defs.h" diff --git a/util-linux/volume_id/f2fs.c b/util-linux/volume_id/f2fs.c new file mode 100644 index 0000000..bf0b662 --- a/dev/null +++ b/util-linux/volume_id/f2fs.c @@ -0,0 +1,95 @@ +/* + * volume_id - reads filesystem label and uuid + * + * Copyright (C) 2012 S-G Bergh <sgb@systemasis.org> + * + * Licensed under GPLv2, see file LICENSE in this source tree. + */ + +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_F2FS) += f2fs.o + +//config: +//config:config FEATURE_VOLUMEID_F2FS +//config: bool "f2fs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: F2FS (aka Flash-Friendly File System) is a log-structured file system, +//config: which is adapted to newer forms of storage. F2FS also remedies some +//config: known issues of the older log structured file systems, such as high +//config: cleaning overhead. +//config: + +#include "volume_id_internal.h" + +#define F2FS_MAGIC 0xF2F52010 // F2FS Magic Number +#define F2FS_UUID_SIZE 16 +#define F2FS_LABEL_SIZE 512 +#define F2FS_LABEL_BYTES 1024 +#define F2FS_SB1_OFFSET 0x400 // offset for 1:st super block +/* +#define F2FS_SB2_OFFSET 0x1400 // offset for 2:nd super block +*/ + +struct f2fs_super_block { // According to version 1.1 +/* 0x00 */ uint32_t magic; // Magic Number +/* 0x04 */ uint16_t major_ver; // Major Version +/* 0x06 */ uint16_t minor_ver; // Minor Version +/* 0x08 */ uint32_t log_sectorsize; // log2 sector size in bytes +/* 0x0C */ uint32_t log_sectors_per_block; // log2 # of sectors per block +/* 0x10 */ uint32_t log_blocksize; // log2 block size in bytes +/* 0x14 */ uint32_t log_blocks_per_seg; // log2 # of blocks per segment +/* 0x18 */ uint32_t segs_per_sec; // # of segments per section +/* 0x1C */ uint32_t secs_per_zone; // # of sections per zone +/* 0x20 */ uint32_t checksum_offset; // checksum offset inside super block +/* 0x24 */ uint64_t block_count; // total # of user blocks +/* 0x2C */ uint32_t section_count; // total # of sections +/* 0x30 */ uint32_t segment_count; // total # of segments +/* 0x34 */ uint32_t segment_count_ckpt; // # of segments for checkpoint +/* 0x38 */ uint32_t segment_count_sit; // # of segments for SIT +/* 0x3C */ uint32_t segment_count_nat; // # of segments for NAT +/* 0x40 */ uint32_t segment_count_ssa; // # of segments for SSA +/* 0x44 */ uint32_t segment_count_main; // # of segments for main area +/* 0x48 */ uint32_t segment0_blkaddr; // start block address of segment 0 +/* 0x4C */ uint32_t cp_blkaddr; // start block address of checkpoint +/* 0x50 */ uint32_t sit_blkaddr; // start block address of SIT +/* 0x54 */ uint32_t nat_blkaddr; // start block address of NAT +/* 0x58 */ uint32_t ssa_blkaddr; // start block address of SSA +/* 0x5C */ uint32_t main_blkaddr; // start block address of main area +/* 0x60 */ uint32_t root_ino; // root inode number +/* 0x64 */ uint32_t node_ino; // node inode number +/* 0x68 */ uint32_t meta_ino; // meta inode number +/* 0x6C */ uint8_t uuid[F2FS_UUID_SIZE]; // 128-bit uuid for volume +/* 0x7C */ uint16_t volume_name[F2FS_LABEL_SIZE]; // volume name +// /* 0x47C */ uint32_t extension_count; // # of extensions below +// /* 0x480 */ uint8_t extension_list[64][8]; // extension array +} PACKED; + + +int FAST_FUNC volume_id_probe_f2fs(struct volume_id *id /*,uint64_t off*/) +{ + struct f2fs_super_block *sb; + + // Go for primary super block (ignore second sb) + dbg("f2fs: probing at offset 0x%x", F2FS_SB1_OFFSET); + sb = volume_id_get_buffer(id, F2FS_SB1_OFFSET, sizeof(*sb)); + + if (!sb) + return -1; + + if (sb->magic != cpu_to_le32(F2FS_MAGIC)) + return -1; + + IF_FEATURE_BLKID_TYPE(id->type = "f2fs"); + + // For version 1.0 we don't know sb structure and can't set label/uuid + if (sb->major_ver == cpu_to_le16(1) && sb->minor_ver == cpu_to_le16(0)) + return 0; + + volume_id_set_label_unicode16(id, (uint8_t *)sb->volume_name, + LE, MIN(F2FS_LABEL_BYTES, VOLUME_ID_LABEL_SIZE)); + + volume_id_set_uuid(id, sb->uuid, UUID_DCE); + + return 0; +} diff --git a/util-linux/volume_id/fat.c b/util-linux/volume_id/fat.c index 904fbb2..476d500 100644 --- a/util-linux/volume_id/fat.c +++ b/util-linux/volume_id/fat.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_FAT) += fat.o + +//config: +//config:config FEATURE_VOLUMEID_FAT +//config: bool "fat filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" /* linux/msdos_fs.h says: */ diff --git a/util-linux/volume_id/get_devname.c b/util-linux/volume_id/get_devname.c index 665cb9b..0c6bdfd 100644 --- a/util-linux/volume_id/get_devname.c +++ b/util-linux/volume_id/get_devname.c @@ -7,6 +7,11 @@ * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ + +//kbuild:lib-$(CONFIG_BLKID) += get_devname.o +//kbuild:lib-$(CONFIG_FINDFS) += get_devname.o +//kbuild:lib-$(CONFIG_FEATURE_MOUNT_LABEL) += get_devname.o + #include <sys/mount.h> /* BLKGETSIZE64 */ #if !defined(BLKGETSIZE64) # define BLKGETSIZE64 _IOR(0x12,114,size_t) diff --git a/util-linux/volume_id/hfs.c b/util-linux/volume_id/hfs.c index 3d9704d..8d34aaf 100644 --- a/util-linux/volume_id/hfs.c +++ b/util-linux/volume_id/hfs.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_HFS) += hfs.o + +//config: +//config:config FEATURE_VOLUMEID_HFS +//config: bool "hfs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct hfs_finder_info{ diff --git a/util-linux/volume_id/iso9660.c b/util-linux/volume_id/iso9660.c index 1d7693a..3848de4 100644 --- a/util-linux/volume_id/iso9660.c +++ b/util-linux/volume_id/iso9660.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_ISO9660) += iso9660.o + +//config: +//config:config FEATURE_VOLUMEID_ISO9660 +//config: bool "iso9660 filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" #define ISO_SUPERBLOCK_OFFSET 0x8000 diff --git a/util-linux/volume_id/jfs.c b/util-linux/volume_id/jfs.c index 5333af2..a6eaff4 100644 --- a/util-linux/volume_id/jfs.c +++ b/util-linux/volume_id/jfs.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_JFS) += jfs.o + +//config: +//config:config FEATURE_VOLUMEID_JFS +//config: bool "jfs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct jfs_super_block { diff --git a/util-linux/volume_id/linux_raid.c b/util-linux/volume_id/linux_raid.c index 209eaab..f20823a 100644 --- a/util-linux/volume_id/linux_raid.c +++ b/util-linux/volume_id/linux_raid.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_LINUXRAID) += linux_raid.o + +//config: +//config:config FEATURE_VOLUMEID_LINUXRAID +//config: bool "linuxraid" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct mdp_super_block { diff --git a/util-linux/volume_id/linux_swap.c b/util-linux/volume_id/linux_swap.c index 1ee534a..39470d4 100644 --- a/util-linux/volume_id/linux_swap.c +++ b/util-linux/volume_id/linux_swap.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_LINUXSWAP) += linux_swap.o + +//config: +//config:config FEATURE_VOLUMEID_LINUXSWAP +//config: bool "linux swap filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct swap_header_v1_2 { diff --git a/util-linux/volume_id/luks.c b/util-linux/volume_id/luks.c index f9b3766..42bf876 100644 --- a/util-linux/volume_id/luks.c +++ b/util-linux/volume_id/luks.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_LUKS) += luks.o + +//config: +//config:config FEATURE_VOLUMEID_LUKS +//config: bool "luks filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" #define LUKS_MAGIC_L 6 diff --git a/util-linux/volume_id/nilfs.c b/util-linux/volume_id/nilfs.c index b88a9e4..f3a9ef5 100644 --- a/util-linux/volume_id/nilfs.c +++ b/util-linux/volume_id/nilfs.c @@ -19,6 +19,26 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_NILFS) += nilfs.o + +//config: +//config:config FEATURE_VOLUMEID_NILFS +//config: bool "nilfs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: NILFS is a New Implementation of a Log-Structured File System (LFS) +//config: that supports continuous snapshots. This provides features like +//config: versioning of the entire filesystem, restoration of files that +//config: were deleted a few minutes ago. NILFS keeps consistency like +//config: conventional LFS, so it provides quick recovery after system crashes. +//config: +//config: The possible use of NILFS includes versioning, tamper detection, +//config: SOX compliance logging, and so forth. It can serve as an alternative +//config: filesystem for Linux desktop environment, or as a basis of advanced +//config: storage appliances. +//config: + #include "volume_id_internal.h" #define NILFS_UUID_SIZE 16 diff --git a/util-linux/volume_id/ntfs.c b/util-linux/volume_id/ntfs.c index 0444e54..46f687a 100644 --- a/util-linux/volume_id/ntfs.c +++ b/util-linux/volume_id/ntfs.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_NTFS) += ntfs.o + +//config: +//config:config FEATURE_VOLUMEID_NTFS +//config: bool "ntfs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct ntfs_super_block { diff --git a/util-linux/volume_id/ocfs2.c b/util-linux/volume_id/ocfs2.c index fcdb151..415e0bf 100644 --- a/util-linux/volume_id/ocfs2.c +++ b/util-linux/volume_id/ocfs2.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_OCFS2) += ocfs2.o + +//config: +//config:config FEATURE_VOLUMEID_OCFS2 +//config: bool "ocfs2 filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" /* All these values are taken from ocfs2-tools's ocfs2_fs.h */ diff --git a/util-linux/volume_id/reiserfs.c b/util-linux/volume_id/reiserfs.c index 67b4a18..24979fb 100644 --- a/util-linux/volume_id/reiserfs.c +++ b/util-linux/volume_id/reiserfs.c @@ -19,6 +19,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_REISERFS) += reiserfs.o + +//config: +//config:config FEATURE_VOLUMEID_REISERFS +//config: bool "Reiser filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct reiserfs_super_block { diff --git a/util-linux/volume_id/romfs.c b/util-linux/volume_id/romfs.c index 15653be..4754fdb 100644 --- a/util-linux/volume_id/romfs.c +++ b/util-linux/volume_id/romfs.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_ROMFS) += romfs.o + +//config: +//config:config FEATURE_VOLUMEID_ROMFS +//config: bool "romfs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct romfs_super { diff --git a/util-linux/volume_id/squashfs.c b/util-linux/volume_id/squashfs.c index c5b4f9c..079b6cc 100644 --- a/util-linux/volume_id/squashfs.c +++ b/util-linux/volume_id/squashfs.c @@ -8,6 +8,18 @@ //kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_SQUASHFS) += squashfs.o +//config: +//config:config FEATURE_VOLUMEID_SQUASHFS +//config: bool "SquashFS filesystem" +//config: default y +//config: depends on VOLUMEID && FEATURE_BLKID_TYPE +//config: help +//config: Squashfs is a compressed read-only filesystem for Linux. Squashfs is +//config: intended for general read-only filesystem use and in constrained block +//config: device/memory systems (e.g. embedded systems) where low overhead is +//config: needed. +//config: + #include "volume_id_internal.h" struct squashfs_superblock { diff --git a/util-linux/volume_id/sysv.c b/util-linux/volume_id/sysv.c index 6eb9646..7b4b536 100644 --- a/util-linux/volume_id/sysv.c +++ b/util-linux/volume_id/sysv.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_SYSV) += sysv.o + +//config: +//config:config FEATURE_VOLUMEID_SYSV +//config: bool "sysv filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" #define SYSV_NICINOD 100 diff --git a/util-linux/volume_id/udf.c b/util-linux/volume_id/udf.c index d3747fb..9214545 100644 --- a/util-linux/volume_id/udf.c +++ b/util-linux/volume_id/udf.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_UDF) += udf.o + +//config: +//config:config FEATURE_VOLUMEID_UDF +//config: bool "udf filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct volume_descriptor { diff --git a/util-linux/volume_id/unused_highpoint.c b/util-linux/volume_id/unused_highpoint.c index 17b7b32..7231a1d 100644 --- a/util-linux/volume_id/unused_highpoint.c +++ b/util-linux/volume_id/unused_highpoint.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_HIGHPOINTRAID) += highpoint.o + +//config: +//config:### config FEATURE_VOLUMEID_HIGHPOINTRAID +//config:### bool "highpoint raid" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct hpt37x_meta { diff --git a/util-linux/volume_id/unused_hpfs.c b/util-linux/volume_id/unused_hpfs.c index 4429524..a87c89f 100644 --- a/util-linux/volume_id/unused_hpfs.c +++ b/util-linux/volume_id/unused_hpfs.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_HPFS) += hpfs.o + +//config: +//config:### config FEATURE_VOLUMEID_HPFS +//config:### bool "hpfs filesystem" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct hpfs_super { diff --git a/util-linux/volume_id/unused_isw_raid.c b/util-linux/volume_id/unused_isw_raid.c index 7ab47b3..851bd2f 100644 --- a/util-linux/volume_id/unused_isw_raid.c +++ b/util-linux/volume_id/unused_isw_raid.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_ISWRAID) += isw_raid.o + +//config: +//config:### config FEATURE_VOLUMEID_ISWRAID +//config:### bool "intel raid" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct isw_meta { diff --git a/util-linux/volume_id/unused_lsi_raid.c b/util-linux/volume_id/unused_lsi_raid.c index e6cc8ed..52d68de 100644 --- a/util-linux/volume_id/unused_lsi_raid.c +++ b/util-linux/volume_id/unused_lsi_raid.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_LSIRAID) += lsi_raid.o + +//config: +//config:### config FEATURE_VOLUMEID_LSIRAID +//config:### bool "lsi raid" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct lsi_meta { diff --git a/util-linux/volume_id/unused_lvm.c b/util-linux/volume_id/unused_lvm.c index 2206498..08fa052 100644 --- a/util-linux/volume_id/unused_lvm.c +++ b/util-linux/volume_id/unused_lvm.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_LVM) += lvm.o + +//config: +//config:### config FEATURE_VOLUMEID_LVM +//config:### bool "lvm" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct lvm1_super_block { diff --git a/util-linux/volume_id/unused_mac.c b/util-linux/volume_id/unused_mac.c index e8deb97..a1a53d1 100644 --- a/util-linux/volume_id/unused_mac.c +++ b/util-linux/volume_id/unused_mac.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_MAC) += mac.o + +//config: +//config:### config FEATURE_VOLUMEID_MAC +//config:### bool "mac filesystem" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct mac_driver_desc { diff --git a/util-linux/volume_id/unused_minix.c b/util-linux/volume_id/unused_minix.c index a3e1077..50afd5c 100644 --- a/util-linux/volume_id/unused_minix.c +++ b/util-linux/volume_id/unused_minix.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_MINIX) += minix.o + +//config: +//config:### config FEATURE_VOLUMEID_MINIX +//config:### bool "minix filesystem" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct minix_super_block { diff --git a/util-linux/volume_id/unused_msdos.c b/util-linux/volume_id/unused_msdos.c index 2e8cb19..5ebaa3e 100644 --- a/util-linux/volume_id/unused_msdos.c +++ b/util-linux/volume_id/unused_msdos.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_MSDOS) += msdos.o + +//config: +//config:### config FEATURE_VOLUMEID_MSDOS +//config:### bool "msdos filesystem" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct msdos_partition_entry { @@ -165,7 +176,7 @@ int FAST_FUNC volume_id_probe_msdos_part_table(struct volume_id *id, uint64_t of if (id->partition_count < 4) id->partition_count = 4; - p = &id->partitions[id->partition_count]; +// p = &id->partitions[id->partition_count]; // if (is_raid(part[i].sys_ind)) // volume_id_set_usage_part(p, VOLUME_ID_RAID); diff --git a/util-linux/volume_id/unused_nvidia_raid.c b/util-linux/volume_id/unused_nvidia_raid.c index 9e84729..d99a108 100644 --- a/util-linux/volume_id/unused_nvidia_raid.c +++ b/util-linux/volume_id/unused_nvidia_raid.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_NVIDIARAID) += nvidia_raid.o + +//config: +//config:### config FEATURE_VOLUMEID_NVIDIARAID +//config:### bool "nvidia raid" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct nvidia_meta { diff --git a/util-linux/volume_id/unused_promise_raid.c b/util-linux/volume_id/unused_promise_raid.c index 0b0d006..cebebe3 100644 --- a/util-linux/volume_id/unused_promise_raid.c +++ b/util-linux/volume_id/unused_promise_raid.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_PROMISERAID) += promise_raid.o + +//config: +//config:### config FEATURE_VOLUMEID_PROMISERAID +//config:### bool "promise raid" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct promise_meta { diff --git a/util-linux/volume_id/unused_silicon_raid.c b/util-linux/volume_id/unused_silicon_raid.c index 878b881..40c8faa 100644 --- a/util-linux/volume_id/unused_silicon_raid.c +++ b/util-linux/volume_id/unused_silicon_raid.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_SILICONRAID) += silicon_raid.o + +//config: +//config:### config FEATURE_VOLUMEID_SILICONRAID +//config:### bool "silicon raid" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct silicon_meta { diff --git a/util-linux/volume_id/unused_ufs.c b/util-linux/volume_id/unused_ufs.c index 9f925d9..d33c10f 100644 --- a/util-linux/volume_id/unused_ufs.c +++ b/util-linux/volume_id/unused_ufs.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_UFS) += ufs.o + +//config: +//config:### config FEATURE_VOLUMEID_UFS +//config:### bool "ufs filesystem" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct ufs_super_block { diff --git a/util-linux/volume_id/unused_via_raid.c b/util-linux/volume_id/unused_via_raid.c index a11eec1..258f93a 100644 --- a/util-linux/volume_id/unused_via_raid.c +++ b/util-linux/volume_id/unused_via_raid.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:### lib-$(CONFIG_FEATURE_VOLUMEID_VIARAID) += via_raid.o + +//config: +//config:### config FEATURE_VOLUMEID_VIARAID +//config:### bool "via raid" +//config:### default y +//config:### depends on VOLUMEID +//config:### help +//config:### TODO +//config: + #include "volume_id_internal.h" struct via_meta { diff --git a/util-linux/volume_id/volume_id.c b/util-linux/volume_id/volume_id.c index e928af5..66690c2 100644 --- a/util-linux/volume_id/volume_id.c +++ b/util-linux/volume_id/volume_id.c @@ -18,6 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_VOLUMEID) += volume_id.o util.o + #include "volume_id_internal.h" @@ -136,6 +138,9 @@ static const probe_fptr fs2[] = { #if ENABLE_FEATURE_VOLUMEID_UFS volume_id_probe_ufs, #endif +#if ENABLE_FEATURE_VOLUMEID_F2FS + volume_id_probe_f2fs, +#endif #if ENABLE_FEATURE_VOLUMEID_NILFS volume_id_probe_nilfs, #endif diff --git a/util-linux/volume_id/volume_id_internal.h b/util-linux/volume_id/volume_id_internal.h index 3f02bd5..6e2dbd7 100644 --- a/util-linux/volume_id/volume_id_internal.h +++ b/util-linux/volume_id/volume_id_internal.h @@ -96,44 +96,24 @@ void FAST_FUNC free_volume_id(struct volume_id *id); /* size of seek buffer, FAT cluster is 32k max */ #define SEEK_BUFFER_SIZE 0x10000 -#define bswap16(x) (uint16_t) ( \ - (((uint16_t)(x) & 0x00ffu) << 8) | \ - (((uint16_t)(x) & 0xff00u) >> 8)) - -#define bswap32(x) (uint32_t) ( \ - (((uint32_t)(x) & 0xff000000u) >> 24) | \ - (((uint32_t)(x) & 0x00ff0000u) >> 8) | \ - (((uint32_t)(x) & 0x0000ff00u) << 8) | \ - (((uint32_t)(x) & 0x000000ffu) << 24)) - -#define bswap64(x) (uint64_t) ( \ - (((uint64_t)(x) & 0xff00000000000000ull) >> 56) | \ - (((uint64_t)(x) & 0x00ff000000000000ull) >> 40) | \ - (((uint64_t)(x) & 0x0000ff0000000000ull) >> 24) | \ - (((uint64_t)(x) & 0x000000ff00000000ull) >> 8) | \ - (((uint64_t)(x) & 0x00000000ff000000ull) << 8) | \ - (((uint64_t)(x) & 0x0000000000ff0000ull) << 24) | \ - (((uint64_t)(x) & 0x000000000000ff00ull) << 40) | \ - (((uint64_t)(x) & 0x00000000000000ffull) << 56)) - #if BB_LITTLE_ENDIAN -#define le16_to_cpu(x) (x) -#define le32_to_cpu(x) (x) -#define le64_to_cpu(x) (x) -#define be16_to_cpu(x) bswap16(x) -#define be32_to_cpu(x) bswap32(x) -#define cpu_to_le16(x) (x) -#define cpu_to_le32(x) (x) -#define cpu_to_be32(x) bswap32(x) +# define le16_to_cpu(x) (uint16_t)(x) +# define le32_to_cpu(x) (uint32_t)(x) +# define le64_to_cpu(x) (uint64_t)(x) +# define be16_to_cpu(x) (uint16_t)(bswap_16(x)) +# define be32_to_cpu(x) (uint32_t)(bswap_32(x)) +# define cpu_to_le16(x) (uint16_t)(x) +# define cpu_to_le32(x) (uint32_t)(x) +# define cpu_to_be32(x) (uint32_t)(bswap_32(x)) #else -#define le16_to_cpu(x) bswap16(x) -#define le32_to_cpu(x) bswap32(x) -#define le64_to_cpu(x) bswap64(x) -#define be16_to_cpu(x) (x) -#define be32_to_cpu(x) (x) -#define cpu_to_le16(x) bswap16(x) -#define cpu_to_le32(x) bswap32(x) -#define cpu_to_be32(x) (x) +# define le16_to_cpu(x) (uint16_t)(bswap_16(x)) +# define le32_to_cpu(x) (uint32_t)(bswap_32(x)) +# define le64_to_cpu(x) (uint64_t)(bb_bswap_64(x)) +# define be16_to_cpu(x) (uint16_t)(x) +# define be32_to_cpu(x) (uint32_t)(x) +# define cpu_to_le16(x) (uint16_t)(bswap_16(x)) +# define cpu_to_le32(x) (uint32_t)(bswap_32(x)) +# define cpu_to_be32(x) (uint32_t)(x) #endif /* volume_id_set_uuid(id,buf,fmt) assumes size of uuid buf @@ -215,6 +195,8 @@ int FAST_FUNC volume_id_probe_luks(struct volume_id *id /*,uint64_t off*/); //int FAST_FUNC volume_id_probe_msdos_part_table(struct volume_id *id /*,uint64_t off*/); +int FAST_FUNC volume_id_probe_f2fs(struct volume_id *id /*,uint64_t off*/); + int FAST_FUNC volume_id_probe_nilfs(struct volume_id *id /*,uint64_t off*/); int FAST_FUNC volume_id_probe_ntfs(struct volume_id *id /*,uint64_t off*/); diff --git a/util-linux/volume_id/xfs.c b/util-linux/volume_id/xfs.c index 8474602..5eefc20 100644 --- a/util-linux/volume_id/xfs.c +++ b/util-linux/volume_id/xfs.c @@ -18,6 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +//kbuild:lib-$(CONFIG_FEATURE_VOLUMEID_XFS) += xfs.o + +//config: +//config:config FEATURE_VOLUMEID_XFS +//config: bool "xfs filesystem" +//config: default y +//config: depends on VOLUMEID +//config: help +//config: TODO +//config: + #include "volume_id_internal.h" struct xfs_super_block { |