From c598c4cf3e0af185d3e8fc329d10067c0607f860 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Fri, 3 Sep 2010 12:23:04 +0000 Subject: [PATCH 001/160] Initial tree setup. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1 978522c7-42b7-df11-88a9-00e081727c95 From 1b37b52a09d06ed5e4d82fcfbce69aa9fe68006f Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Fri, 3 Sep 2010 15:33:06 +0000 Subject: [PATCH 002/160] python: merged offline changes. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@10 978522c7-42b7-df11-88a9-00e081727c95 --- Include/osdefs.h | 29 ++++ Include/pyport.h | 10 +- Lib/bsddb/dbshelve.py | 2 +- Lib/cgi.py | 2 +- Lib/distutils/ccompiler.py | 1 + Lib/distutils/command/bdist_rpm.py | 5 +- Lib/distutils/command/install.py | 4 +- Lib/distutils/emxccompiler.py | 25 ++-- Lib/distutils/sysconfig.py | 47 ++++++- Lib/distutils/unixccompiler.py | 4 +- Lib/os.py | 4 +- Lib/os2knixpath.py | 155 +++++++++++++++++++++ Lib/popen2.py | 2 +- Lib/site.py | 8 +- Lib/tempfile.py | 4 +- Lib/test/regrtest.py | 25 ++++ Lib/test/test_tempfile.py | 4 +- Lib/test/test_unicodedata.py | 1 - Lib/urllib2.py | 6 + Makefile.pre.in | 25 +++- Misc/python-config.in | 2 + Modules/Setup.dist | 2 +- Modules/_hotshot.c | 4 + Modules/_multiprocessing/multiprocessing.c | 2 +- Modules/_multiprocessing/multiprocessing.h | 4 + Modules/cjkcodecs/cjkcodecs.h | 11 ++ Modules/fcntlmodule.c | 4 +- Modules/getpath.c | 59 ++++++-- Modules/posixmodule.c | 112 ++++++++++++--- Modules/resource.c | 3 +- Objects/exceptions.c | 2 +- Python/dynload_shlib.c | 14 +- Python/import.c | 26 ++++ Python/pystrtod.c | 8 ++ Python/sysmodule.c | 27 +++- Python/traceback.c | 2 +- configure | 17 ++- pyconfig.h.in | 7 + setup.py | 19 ++- 39 files changed, 600 insertions(+), 88 deletions(-) create mode 100644 Lib/os2knixpath.py diff --git a/Include/osdefs.h b/Include/osdefs.h index 69376593..f69b7c17 100644 --- a/Include/osdefs.h +++ b/Include/osdefs.h @@ -19,6 +19,7 @@ extern "C" { #define ALTSEP '/' #define MAXPATHLEN 256 #endif +#define DRVSEP ':' /* (bird) */ #define DELIM ';' #endif #endif @@ -35,6 +36,34 @@ extern "C" { #define SEP '/' #endif +/* Test if `ch' is a filename separator (bird) */ +#ifdef ALTSEP +#define IS_SEP(ch) ((ch) == SEP || (ch) == ALTSEP) +#else +#define IS_SEP(ch) ((ch) == SEP) +#endif + +/* Test if `path' has a drive letter or not. (bird) */ +#ifdef DRVSEP +#define HAS_DRV(path) (*(path) && (path)[1] == DRVSEP) +#else +#define HAS_DRV(path) 0 +#endif + +/* Test if `path' is absolute or not. (bird) */ +#ifdef DRVSEP +#define IS_ABSPATH(path) (IS_SEP((path)[0]) || HAS_DRV(path)) +#else +#define IS_ABSPATH(path) (IS_SEP((path)[0])) +#endif + +/* Test if `path' contains any of the path separators including drive letter. (bird) */ +#ifdef ALTSEP +#define HAS_ANYSEP(path) ( strchr((path), SEP) || strchr((path), ALTSEP) || HAS_DRV(path) ) +#else +#define HAS_ANYSEP(path) ( strchr((path), SEP) || HAS_DRV(path) ) +#endif + /* Max pathname length */ #ifndef MAXPATHLEN #if defined(PATH_MAX) && PATH_MAX > 1024 diff --git a/Include/pyport.h b/Include/pyport.h index 54411f25..5a5bf5f8 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -549,9 +549,9 @@ extern int fdatasync(int); All windows ports, except cygwin, are handled in PC/pyconfig.h. BeOS and cygwin are the only other autoconf platform requiring special - linkage handling and both of these use __declspec(). + linkage handling and both of these use __declspec(). Ditto for OS/2. */ -#if defined(__CYGWIN__) || defined(__BEOS__) +#if defined(__CYGWIN__) || defined(__BEOS__) || defined(__OS2__) # define HAVE_DECLSPEC_DLL #endif @@ -563,7 +563,7 @@ extern int fdatasync(int); # define PyAPI_DATA(RTYPE) extern __declspec(dllexport) RTYPE /* module init functions inside the core need no external linkage */ /* except for Cygwin to handle embedding (FIXME: BeOS too?) */ -# if defined(__CYGWIN__) +# if defined(__CYGWIN__) || defined(__OS2__) # define PyMODINIT_FUNC __declspec(dllexport) void # else /* __CYGWIN__ */ # define PyMODINIT_FUNC void @@ -573,10 +573,12 @@ extern int fdatasync(int); /* public Python functions and data are imported */ /* Under Cygwin, auto-import functions to prevent compilation */ /* failures similar to http://python.org/doc/FAQ.html#3.24 */ -# if !defined(__CYGWIN__) +# if !defined(__CYGWIN__) && !defined(__OS2__) # define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE # endif /* !__CYGWIN__ */ +# if !defined(__OS2__) # define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE +# endif /* !__OS2__ */ /* module init functions outside the core must be exported */ # if defined(__cplusplus) # define PyMODINIT_FUNC extern "C" __declspec(dllexport) void diff --git a/Lib/bsddb/dbshelve.py b/Lib/bsddb/dbshelve.py index 5990df3d..cbbc14cc 100644 --- a/Lib/bsddb/dbshelve.py +++ b/Lib/bsddb/dbshelve.py @@ -1,4 +1,4 @@ -#!/bin/env python +#!/usr/bin/env python #------------------------------------------------------------------------ # Copyright (c) 1997-2001 by Total Control Software # All Rights Reserved diff --git a/Lib/cgi.py b/Lib/cgi.py index fd303830..9ae3a343 100644 --- a/Lib/cgi.py +++ b/Lib/cgi.py @@ -1,4 +1,4 @@ -#! /usr/local/bin/python +#!/usr/bin/python # NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is # intentionally NOT "/usr/bin/env python". On many systems diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py index 5fc70d7f..164eb6d2 100644 --- a/Lib/distutils/ccompiler.py +++ b/Lib/distutils/ccompiler.py @@ -982,6 +982,7 @@ def mkpath (self, name, mode=0777): # on a cygwin built python we can use gcc like an ordinary UNIXish # compiler ('cygwin.*', 'unix'), + ('os2knix', 'emx'), ('os2emx', 'emx'), # OS name mappings diff --git a/Lib/distutils/command/bdist_rpm.py b/Lib/distutils/command/bdist_rpm.py index 5e6577b9..904af56b 100644 --- a/Lib/distutils/command/bdist_rpm.py +++ b/Lib/distutils/command/bdist_rpm.py @@ -199,7 +199,7 @@ def finalize_options (self): raise DistutilsOptionError, \ "--python and --fix-python are mutually exclusive options" - if os.name != 'posix': + if os.name != 'posix' and os.name != 'os2': raise DistutilsPlatformError, \ ("don't know how to create RPM " "distributions on platform %s" % os.name) @@ -322,6 +322,7 @@ def run (self): log.info("building RPMs") rpm_cmd = ['rpm'] if os.path.exists('/usr/bin/rpmbuild') or \ + os.path.exists('/usr/bin/rpmbuild.exe') or \ os.path.exists('/bin/rpmbuild'): rpm_cmd = ['rpmbuild'] if self.source_only: # what kind of RPMs? @@ -345,6 +346,8 @@ def run (self): non_src_rpm = "%{arch}/" + nvr_string + ".%{arch}.rpm" q_cmd = r"rpm -q --qf '%s %s\n' --specfile '%s'" % ( src_rpm, non_src_rpm, spec_path) + if os.name == 'os2': + q_cmd = q_cmd.replace( '%{', '%%{') out = os.popen(q_cmd) binary_rpms = [] diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py index 76efe3be..f5f0a293 100644 --- a/Lib/distutils/command/install.py +++ b/Lib/distutils/command/install.py @@ -283,7 +283,7 @@ def finalize_options (self): "exec_prefix/home or install_(plat)base") # Next, stuff that's wrong (or dubious) only on certain platforms. - if os.name != "posix": + if os.name != "posix" and os.name != "os2": if self.exec_prefix: self.warn("exec-prefix option ignored on this platform") self.exec_prefix = None @@ -298,7 +298,7 @@ def finalize_options (self): self.dump_dirs("pre-finalize_{unix,other}") - if os.name == 'posix': + if os.name == 'posix' or os.name == "os2": self.finalize_unix() else: self.finalize_other() diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index c3c24e73..f936488a 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -63,10 +63,10 @@ def __init__ (self, # Hard-code GCC because that's what this is all about. # XXX optimization, warnings etc. should be customizable. - self.set_executables(compiler='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall', - compiler_so='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall', - linker_exe='gcc -Zomf -Zmt -Zcrtdll', - linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll') + self.set_executables(compiler='gcc -g -O2 -march=i386 -mtune=i686 -fomit-frame-pointer -Wall', + compiler_so='gcc -g -O2 -march=i386 -mtune=i686 -fomit-frame-pointer -Wall', + linker_exe='gcc -Zomf -Zexe', + linker_so='gcc -Zomf -Zdll') # want the gcc library statically linked (so that we don't have # to distribute a version dependent on the compiler we have) @@ -138,7 +138,7 @@ def link (self, "DATA MULTIPLE NONSHARED", "EXPORTS"] for sym in export_symbols: - contents.append(' "%s"' % sym) + contents.append(' "_%s"' % sym) self.execute(write_file, (def_file, contents), "writing %s" % def_file) @@ -208,8 +208,7 @@ def object_filenames (self, # override the find_library_file method from UnixCCompiler # to deal with file naming/searching differences def find_library_file(self, dirs, lib, debug=0): - shortlib = '%s.lib' % lib - longlib = 'lib%s.lib' % lib # this form very rare + try_names = [lib + ".lib", lib + ".a", "lib" + lib + ".lib", "lib" + lib + ".a"] # get EMX's default library directory search path try: @@ -217,13 +216,13 @@ def find_library_file(self, dirs, lib, debug=0): except KeyError: emx_dirs = [] + #print "dirs:",dirs for dir in dirs + emx_dirs: - shortlibp = os.path.join(dir, shortlib) - longlibp = os.path.join(dir, longlib) - if os.path.exists(shortlibp): - return shortlibp - elif os.path.exists(longlibp): - return longlibp + for name in try_names: + libfile = os.path.join(dir, name) + #print "libfile:",libfile + if os.path.exists(libfile): + return libfile # Oops, didn't find it in *any* of 'dirs' return None diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 3b7c2b01..95706c10 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -90,7 +90,16 @@ def get_python_inc(plat_specific=0, prefix=None): else: return os.path.join(prefix, "Include") elif os.name == "os2": - return os.path.join(prefix, "Include") + if python_build: + base = os.path.dirname(os.path.abspath(sys.executable)) + if plat_specific: + inc_dir = base + else: + inc_dir = os.path.join(base, "Include") + if not os.path.exists(inc_dir): + inc_dir = os.path.join(os.path.dirname(base), "Include") + return inc_dir + return os.path.join(prefix, "include", "python" + get_python_version()) else: raise DistutilsPlatformError( "I don't know where Python installs its C header files " @@ -144,10 +153,12 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): return os.path.join(prefix, "Lib", "site-packages") elif os.name == "os2": + libpython = os.path.join(prefix, + "lib", "python" + get_python_version()) if standard_lib: - return os.path.join(prefix, "Lib") + return libpython else: - return os.path.join(prefix, "Lib", "site-packages") + return os.path.join(libpython, "site-packages") else: raise DistutilsPlatformError( @@ -490,6 +501,36 @@ def _init_mac(): def _init_os2(): """Initialize the module as appropriate for OS/2""" g = {} + # load the installed Makefile: + try: + filename = get_makefile_filename() + parse_makefile(filename, g) + except IOError, msg: + my_msg = "invalid Python installation: unable to open %s" % filename + if hasattr(msg, "strerror"): + my_msg = my_msg + " (%s)" % msg.strerror + + raise DistutilsPlatformError(my_msg) + + # load the installed pyconfig.h: + try: + filename = get_config_h_filename() + parse_config_h(file(filename), g) + except IOError, msg: + my_msg = "invalid Python installation: unable to open %s" % filename + if hasattr(msg, "strerror"): + my_msg = my_msg + " (%s)" % msg.strerror + + raise DistutilsPlatformError(my_msg) + + # On AIX, there are wrong paths to the linker scripts in the Makefile + # -- these paths are relative to the Python source, but when installed + # the scripts are in another directory. + if python_build: + g['LDSHARED'] = g['BLDSHARED'] + + # OS/2 module + # set basic install directories g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index 86701975..913c21bb 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -139,7 +139,7 @@ class UnixCCompiler(CCompiler): shared_lib_extension = ".so" dylib_lib_extension = ".dylib" static_lib_format = shared_lib_format = dylib_lib_format = "lib%s%s" - if sys.platform == "cygwin": + if sys.platform == "cygwin" or sys.platform == "os2emx" or sys.platform == "os2knix": exe_extension = ".exe" def preprocess(self, source, @@ -283,7 +283,7 @@ def runtime_library_dir_option(self, dir): # the configuration data stored in the Python installation, so # we use this hack. compiler = os.path.basename(sysconfig.get_config_var("CC")) - if sys.platform[:6] == "darwin": + if sys.platform[:6] == "darwin" or sys.platform[:7] == "os2knix": # MacOSX's linker doesn't understand the -R flag at all return "-L" + dir elif sys.platform[:5] == "hp-ux": diff --git a/Lib/os.py b/Lib/os.py index 88adc155..666b770d 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -74,7 +74,9 @@ def _get_exports_list(module): from os2 import _exit except ImportError: pass - if sys.version.find('EMX GCC') == -1: + if sys.platform == 'os2knix': + import os2knixpath as path + elif sys.version.find('EMX GCC') == -1: import ntpath as path else: import os2emxpath as path diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py new file mode 100644 index 00000000..4e85c4d4 --- /dev/null +++ b/Lib/os2knixpath.py @@ -0,0 +1,155 @@ +# Module 'os2emxpath' -- common operations on OS/2 pathnames +"""Common pathname manipulations, OS/2 EMX version. + +Instead of importing this module directly, import os and refer to this +module as os.path. +""" + +import os +import stat +from genericpath import * +from ntpath import (expanduser, expandvars, isabs, islink, splitdrive, + splitext, split, walk) + +__all__ = ["normcase","isabs","join","splitdrive","split","splitext", + "basename","dirname","commonprefix","getsize","getmtime", + "getatime","getctime", "islink","exists","lexists","isdir","isfile", + "ismount","walk","expanduser","expandvars","normpath","abspath", + "splitunc","curdir","pardir","sep","pathsep","defpath","altsep", + "extsep","devnull","realpath","supports_unicode_filenames"] + +# strings representing various path-related bits and pieces +curdir = '.' +pardir = '..' +extsep = '.' +sep = '/' +altsep = '\\' +pathsep = ';' +defpath = '.;C:\\bin' +devnull = 'nul' + +# Normalize the case of a pathname and map slashes to backslashes. +# Other normalizations (such as optimizing '../' away) are not done +# (this is done by normpath). + +def normcase(s): + """Normalize case of pathname. + + Makes all characters lowercase and all altseps into seps.""" + return s.replace('\\', '/').lower() + + +# Join two (or more) paths. + +def join(a, *p): + """Join two or more pathname components, inserting sep as needed""" + path = a + for b in p: + if isabs(b): + path = b + elif path == '' or path[-1:] in '/\\:': + path = path + b + else: + path = path + '/' + b + return path + + +# Parse UNC paths +def splitunc(p): + """Split a pathname into UNC mount point and relative path specifiers. + + Return a 2-tuple (unc, rest); either part may be empty. + If unc is not empty, it has the form '//host/mount' (or similar + using backslashes). unc+rest is always the input path. + Paths containing drive letters never have an UNC part. + """ + if p[1:2] == ':': + return '', p # Drive letter present + firstTwo = p[0:2] + if firstTwo == '/' * 2 or firstTwo == '\\' * 2: + # is a UNC path: + # vvvvvvvvvvvvvvvvvvvv equivalent to drive letter + # \\machine\mountpoint\directories... + # directory ^^^^^^^^^^^^^^^ + normp = normcase(p) + index = normp.find('/', 2) + if index == -1: + ##raise RuntimeError, 'illegal UNC path: "' + p + '"' + return ("", p) + index = normp.find('/', index + 1) + if index == -1: + index = len(p) + return p[:index], p[index:] + return '', p + + +# Return the tail (basename) part of a path. + +def basename(p): + """Returns the final component of a pathname""" + return split(p)[1] + + +# Return the head (dirname) part of a path. + +def dirname(p): + """Returns the directory component of a pathname""" + return split(p)[0] + + +# alias exists to lexists +lexists = exists + + +# Is a path a directory? + +# Is a path a mount point? Either a root (with or without drive letter) +# or an UNC path with at most a / or \ after the mount point. + +def ismount(path): + """Test whether a path is a mount point (defined as root of drive)""" + unc, rest = splitunc(path) + if unc: + return rest in ("", "/", "\\") + p = splitdrive(path)[1] + return len(p) == 1 and p[0] in '/\\' + + +# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A/B. + +def normpath(path): + """Normalize path, eliminating double slashes, etc.""" + path = path.replace('\\', '/') + prefix, path = splitdrive(path) + while path[:1] == '/': + prefix = prefix + '/' + path = path[1:] + comps = path.split('/') + i = 0 + while i < len(comps): + if comps[i] == '.': + del comps[i] + elif comps[i] == '..' and i > 0 and comps[i-1] not in ('', '..'): + del comps[i-1:i+1] + i = i - 1 + elif comps[i] == '' and i > 0 and comps[i-1] != '': + del comps[i] + else: + i = i + 1 + # If the path is now empty, substitute '.' + if not prefix and not comps: + comps.append('.') + return prefix + '/'.join(comps) + + +# Return an absolute path. +def abspath(path): + """Return the absolute version of a path""" + if not isabs(path): + path = join(os.getcwd(), path) + return normpath(path) + +# realpath is a no-op on systems without islink support +realpath = abspath + +supports_unicode_filenames = False diff --git a/Lib/popen2.py b/Lib/popen2.py index cb769f88..5a19732d 100644 --- a/Lib/popen2.py +++ b/Lib/popen2.py @@ -134,7 +134,7 @@ def __init__(self, cmd, bufsize=-1): self.fromchild = os.fdopen(c2pread, 'r', bufsize) -if sys.platform[:3] == "win" or sys.platform == "os2emx": +if sys.platform[:3] == "win" or sys.platform == "os2emx" or sys.platform == "os2knix": # Some things don't make sense on non-Unix platforms. del Popen3, Popen4 diff --git a/Lib/site.py b/Lib/site.py index 21c7db24..9f0969a8 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -231,7 +231,7 @@ def addusersitepackages(known_paths): def joinuser(*args): return os.path.expanduser(os.path.join(*args)) - #if sys.platform in ('os2emx', 'riscos'): + #if sys.platform in ('os2emx', 'os2knix', 'riscos'): # # Don't know what to put here # USER_BASE = '' # USER_SITE = '' @@ -262,7 +262,7 @@ def addsitepackages(known_paths): continue seen.append(prefix) - if sys.platform in ('os2emx', 'riscos'): + if sys.platform in ('os2emx', 'os2knix', 'riscos'): sitedirs.append(os.path.join(prefix, "Lib", "site-packages")) elif os.sep == '/': sitedirs.append(os.path.join(prefix, "lib", @@ -494,7 +494,9 @@ def main(): ENABLE_USER_SITE = check_enableusersite() known_paths = addusersitepackages(known_paths) known_paths = addsitepackages(known_paths) - if sys.platform == 'os2emx': + if sys.platform == 'os2emx' or sys.platform == 'os2knix': + if (sys.path and os.path.basename(sys.path[-1]) == "Modules"): + addbuilddir() setBEGINLIBPATH() setquit() setcopyright() diff --git a/Lib/tempfile.py b/Lib/tempfile.py index b0fd87d3..13b19c31 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -387,7 +387,7 @@ def __enter__(self): # NT provides delete-on-close as a primitive, so we don't need # the wrapper to do anything special. We still use it so that # file.name is useful (i.e. not "(fdopen)") with NamedTemporaryFile. - if _os.name != 'nt': + if _os.name != 'nt' and _os.name != 'os2': # Cache the unlinker so we don't get spurious errors at # shutdown when the module-level "os" is None'd out. Note # that this must be referenced as self.unlink, because the @@ -445,7 +445,7 @@ def NamedTemporaryFile(mode='w+b', bufsize=-1, suffix="", file = _os.fdopen(fd, mode, bufsize) return _TemporaryFileWrapper(file, name, delete) -if _os.name != 'posix' or _os.sys.platform == 'cygwin': +if _os.name != 'posix' or _os.sys.platform == 'cygwin' or _os.sys.platform == 'os2emx' or _os.sys.platform == 'os2knix': # On non-POSIX and Cygwin systems, assume that we cannot unlink a file # while it is open. TemporaryFile = NamedTemporaryFile diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 70777876..2d123148 100644 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -1036,6 +1036,31 @@ def printlist(x, width=70, indent=4): test_resource test_signal """, + 'os2knix': + """ + test_al + test_applesingle + test_audioop + test_bsddb185 + test_bsddb3 + test_cd + test_cl + test_commands + test_dl + test_gl + test_imgfile + test_linuxaudiodev + test_mhlib + test_mmap + test_nis + test_openpty + test_ossaudiodev + test_pty + test_resource + test_sqlite + test_startfile + test_sunaudiodev + """, 'freebsd4': """ test_bsddb diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py index 61014319..4d620d00 100644 --- a/Lib/test/test_tempfile.py +++ b/Lib/test/test_tempfile.py @@ -259,7 +259,7 @@ def test_file_mode(self): file = self.do_create() mode = stat.S_IMODE(os.stat(file.name).st_mode) expected = 0600 - if sys.platform in ('win32', 'os2emx', 'mac'): + if sys.platform in ('win32', 'os2emx', 'os2knix', 'mac'): # There's no distinction among 'user', 'group' and 'world'; # replicate the 'user' bits. user = expected >> 6 @@ -478,7 +478,7 @@ def test_mode(self): mode = stat.S_IMODE(os.stat(dir).st_mode) mode &= 0777 # Mask off sticky bits inherited from /tmp expected = 0700 - if sys.platform in ('win32', 'os2emx', 'mac'): + if sys.platform in ('win32', 'os2emx', 'os2knix', 'mac'): # There's no distinction among 'user', 'group' and 'world'; # replicate the 'user' bits. user = expected >> 6 diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py index baa36cbf..dd0678d8 100644 --- a/Lib/test/test_unicodedata.py +++ b/Lib/test/test_unicodedata.py @@ -71,7 +71,6 @@ def setUp(self): # In case unicodedata is not available, this will raise an ImportError, # but the other test cases will still be run import unicodedata - self.db = unicodedata def tearDown(self): del self.db diff --git a/Lib/urllib2.py b/Lib/urllib2.py index b416913f..c7b03044 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -1274,6 +1274,12 @@ def open_local_file(self, req): import mimetypes host = req.get_host() file = req.get_selector() + + # YD hack: add again drive name + if os.name == 'os2' and len(host)>2 and host[1] == ':': + file = host + file + host = "" + localfile = url2pathname(file) try: stats = os.stat(localfile) diff --git a/Makefile.pre.in b/Makefile.pre.in index 5d70f106..645076db 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -157,6 +157,7 @@ BLDLIBRARY= @BLDLIBRARY@ DLLLIBRARY= @DLLLIBRARY@ LDLIBRARYDIR= @LDLIBRARYDIR@ INSTSONAME= @INSTSONAME@ +CONDENSED_VERSION= @CONDENSED_VERSION@ LIBS= @LIBS@ @@ -453,6 +454,12 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ $(LN) -fsn Versions/Current/Headers $(PYTHONFRAMEWORKDIR)/Headers $(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources +ifneq ($(filter os2emx os2knix,$(MACHDEP)),) # bird hack! +$(DLLLIBRARY) $(LDLIBRARY): $(LIBRARY_OBJS) + $(LDSHARED) -o $(DLLLIBRARY) $^ $(LIBS) $(MODLIBS) $(SYSLIBS) + emximp -o $(LDLIBRARY) $(DLLLIBRARY) + +else # CYGWIN # This rule builds the Cygwin Python DLL and import library if configured # for a shared core library; otherwise, this rule is a noop. $(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS) @@ -461,6 +468,7 @@ $(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST); \ else true; \ fi +endif # end bird hack! oldsharedmods: $(SHAREDMODS) @@ -532,10 +540,14 @@ Parser/tokenizer_pgen.o: $(srcdir)/Parser/tokenizer.c Parser/pgenmain.o: $(srcdir)/Include/parsetok.h $(AST_H): $(AST_ASDL) $(ASDLGEN_FILES) +ifndef BOOTSTRAPPING_PYTHON $(ASDLGEN) -h $(AST_H_DIR) $(AST_ASDL) +endif $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES) +ifndef BOOTSTRAPPING_PYTHON $(ASDLGEN) -c $(AST_C_DIR) $(AST_ASDL) +endif Python/compile.o Python/symtable.o: $(GRAMMAR_H) $(AST_H) @@ -763,6 +775,9 @@ bininstall: altbininstall (cd $(DESTDIR)$(BINDIR); $(LN) python$(VERSION)$(EXE) $(PYTHON)) -rm -f $(DESTDIR)$(BINDIR)/python-config (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python-config) + rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \ + $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/$(PYTHON); \ + $(INSTALL_DATA) $(LDLIBRARY) $(DLLLIBRARY) $(DESTDIR)$(LIBDIR); \ # Install the interpreter with $(VERSION) affixed # This goes into $(exec_prefix) @@ -905,11 +920,17 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ ./$(BUILDPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()" +ifneq ($(filter os2emx os2knix,$(MACHDEP)),) # bird hack! +PATH_SEPARATOR = ; +else +PATH_SEPARATOR = : +endif + # Create the PLATDIR source directory, if one wasn't distributed.. $(srcdir)/Lib/$(PLATDIR): mkdir $(srcdir)/Lib/$(PLATDIR) cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen - export PATH; PATH="`pwd`:$$PATH"; \ + export PATH; PATH="`pwd`$(PATH_SEPARATOR)$$PATH"; \ export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \ export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \ export EXE; EXE="$(BUILDEXE)"; \ @@ -1005,7 +1026,7 @@ sharedinstall: --prefix=$(prefix) \ --install-scripts=$(BINDIR) \ --install-platlib=$(DESTSHARED) \ - --root=/$(DESTDIR) + --root=$(DESTDIR) # Here are a couple of targets for MacOSX again, to install a full # framework-based Python. frameworkinstall installs everything, the diff --git a/Misc/python-config.in b/Misc/python-config.in index 9ac44146..057ac120 100644 --- a/Misc/python-config.in +++ b/Misc/python-config.in @@ -44,6 +44,8 @@ elif opt in ('--includes', '--cflags'): elif opt in ('--libs', '--ldflags'): libs = getvar('LIBS').split() + getvar('SYSLIBS').split() + # YD ignore libs + libs = getvar('SYSLIBS').split() libs.append('-lpython'+pyver) # add the prefix/lib/pythonX.Y/config dir, but only if there is no # shared library in prefix/lib/. diff --git a/Modules/Setup.dist b/Modules/Setup.dist index 5e69a607..57099e16 100644 --- a/Modules/Setup.dist +++ b/Modules/Setup.dist @@ -112,7 +112,7 @@ PYTHONPATH=$(COREPYTHONPATH) # This only contains the minimal set of modules required to run the # setup.py script in the root of the Python source tree. -posix posixmodule.c # posix (UNIX) system calls +os2 posixmodule.c # posix (UNIX) system calls errno errnomodule.c # posix (UNIX) errno values pwd pwdmodule.c # this is needed to find out the user's home dir # if $HOME is not set diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c index 48d0446e..9975a3b5 100644 --- a/Modules/_hotshot.c +++ b/Modules/_hotshot.c @@ -1604,7 +1604,11 @@ static PyMethodDef functions[] = { }; +#ifdef __OS2__ +PyMODINIT_FUNC +#else void +#endif init_hotshot(void) { PyObject *module; diff --git a/Modules/_multiprocessing/multiprocessing.c b/Modules/_multiprocessing/multiprocessing.c index 48049c76..ea92f302 100644 --- a/Modules/_multiprocessing/multiprocessing.c +++ b/Modules/_multiprocessing/multiprocessing.c @@ -86,7 +86,7 @@ ProcessingCtrlHandler(DWORD dwCtrlType) #else /* !MS_WINDOWS */ -#if HAVE_FD_TRANSFER +#if defined(HAVE_FD_TRANSFER) /* Functions for transferring file descriptors between processes. Reimplements some of the functionality of the fdcred diff --git a/Modules/_multiprocessing/multiprocessing.h b/Modules/_multiprocessing/multiprocessing.h index 4f4f9d73..384f669c 100644 --- a/Modules/_multiprocessing/multiprocessing.h +++ b/Modules/_multiprocessing/multiprocessing.h @@ -27,10 +27,14 @@ # include # include # include /* htonl() and ntohl() */ +#ifndef __EMX__ # if HAVE_SEM_OPEN # include typedef sem_t *SEM_HANDLE; # endif +#else +# define SEM_HANDLE HANDLE +#endif # define HANDLE int # define SOCKET int # define BOOL int diff --git a/Modules/cjkcodecs/cjkcodecs.h b/Modules/cjkcodecs/cjkcodecs.h index 4005bcfe..bf34a5c7 100644 --- a/Modules/cjkcodecs/cjkcodecs.h +++ b/Modules/cjkcodecs/cjkcodecs.h @@ -386,6 +386,16 @@ importmap(const char *modname, const char *symbol, } #endif +#ifdef __OS2__ +#define I_AM_A_MODULE_FOR(loc) \ + PyMODINIT_FUNC \ + init_codecs_##loc(void) \ + { \ + PyObject *m = Py_InitModule("_codecs_" #loc, __methods);\ + if (m != NULL) \ + (void)register_maps(m); \ + } +#else #define I_AM_A_MODULE_FOR(loc) \ void \ init_codecs_##loc(void) \ @@ -394,5 +404,6 @@ importmap(const char *modname, const char *symbol, if (m != NULL) \ (void)register_maps(m); \ } +#endif #endif diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c index a333a34b..16c580e8 100644 --- a/Modules/fcntlmodule.c +++ b/Modules/fcntlmodule.c @@ -315,7 +315,7 @@ fcntl_lockf(PyObject *self, PyObject *args) &lenobj, &startobj, &whence)) return NULL; -#if defined(PYOS_OS2) && defined(PYCC_GCC) +#if defined(PYOS_OS2) && defined(PYCC_GCC) && !defined(__KLIBC__) PyErr_SetString(PyExc_NotImplementedError, "lockf not supported on OS/2 (EMX)"); return NULL; @@ -373,7 +373,7 @@ fcntl_lockf(PyObject *self, PyObject *args) } Py_INCREF(Py_None); return Py_None; -#endif /* defined(PYOS_OS2) && defined(PYCC_GCC) */ +#endif /* defined(PYOS_OS2) && defined(PYCC_GCC) && !defined(__KLIBC__)*/ } PyDoc_STRVAR(lockf_doc, diff --git a/Modules/getpath.c b/Modules/getpath.c index 09fbe101..523cde78 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -116,10 +116,25 @@ #define EXEC_PREFIX PREFIX #endif +#ifndef __EMX__ #ifndef PYTHONPATH #define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" #endif +#else +//#define PYTHONPATH "./Lib;./Lib/plat-" PLATFORM \ +// ";./Lib/lib-dynload;./Lib/site-packages" +// force unixroot +#define PYTHONPATH PREFIX "/lib/python" VERSION ";" \ + EXEC_PREFIX "/lib/python" VERSION "/lib-" PLATFORM ";" \ + EXEC_PREFIX "/lib/python" VERSION "/site-packages" ";" \ + EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ";" \ +/* now local (for building) */ \ + "./lib" ";" \ + "./lib/plat-" PLATFORM ";" \ + "./lib/site-packages" ";" \ + "./lib/lib-dynload" +#endif #ifndef LANDMARK #define LANDMARK "os.py" @@ -135,7 +150,7 @@ static void reduce(char *dir) { size_t i = strlen(dir); - while (i > 0 && dir[i] != SEP) + while (i > 0 && !IS_SEP(dir[i])) --i; dir[i] = '\0'; } @@ -208,11 +223,11 @@ static void joinpath(char *buffer, char *stuff) { size_t n, k; - if (stuff[0] == SEP) + if (IS_ABSPATH(stuff)) n = 0; else { n = strlen(buffer); - if (n > 0 && buffer[n-1] != SEP && n < MAXPATHLEN) + if (n > 0 && !IS_SEP(buffer[n-1]) && n < MAXPATHLEN) buffer[n++] = SEP; } if (n > MAXPATHLEN) @@ -229,11 +244,17 @@ joinpath(char *buffer, char *stuff) static void copy_absolute(char *path, char *p) { - if (p[0] == SEP) + if (IS_ABSPATH(p)) { strcpy(path, p); +#ifdef ALTSEP + p = path; + while ((p = strchr(p, ALTSEP))) + *p++ = SEP; +#endif + } else { getcwd(path, MAXPATHLEN); - if (p[0] == '.' && p[1] == SEP) + if (p[0] == '.' && IS_SEP(p[1])) p += 2; joinpath(path, p); } @@ -245,8 +266,13 @@ absolutize(char *path) { char buffer[MAXPATHLEN + 1]; - if (path[0] == SEP) + if (IS_ABSPATH(path)) { +#ifdef ALTSEP + while ((path = strchr(path, ALTSEP))) + *path++ = SEP; +#endif return; + } copy_absolute(buffer, path); strcpy(path, buffer); } @@ -398,7 +424,7 @@ calculate_path(void) * other way to find a directory to start the search from. If * $PATH isn't exported, you lose. */ - if (strchr(prog, SEP)) + if (HAS_ANYSEP(prog)) strncpy(progpath, prog, MAXPATHLEN); #ifdef __APPLE__ /* On Mac OS X, if a script uses an interpreter of the form @@ -441,7 +467,9 @@ calculate_path(void) } else progpath[0] = '\0'; - if (progpath[0] != SEP) +#ifndef ALTSEP + if (!IS_ABSPATH(progpath)) +#endif absolutize(progpath); strncpy(argv0_path, progpath, MAXPATHLEN); argv0_path[MAXPATHLEN] = '\0'; @@ -487,7 +515,7 @@ calculate_path(void) while (linklen != -1) { /* It's not null terminated! */ tmpbuffer[linklen] = '\0'; - if (tmpbuffer[0] == SEP) + if (IS_ABSPATH(tmpbuffer)) /* tmpbuffer should never be longer than MAXPATHLEN, but extra check does not hurt */ strncpy(argv0_path, tmpbuffer, MAXPATHLEN); @@ -552,9 +580,9 @@ calculate_path(void) prefixsz = strlen(prefix) + 1; while (1) { - char *delim = strchr(defpath, DELIM); + char *delim = strchr(defpath, ':'); /* bird: hardcoded DELIM in default path. */ - if (defpath[0] != SEP) + if (!IS_ABSPATH(defpath)) /* Paths are relative to prefix */ bufsz += prefixsz; @@ -597,18 +625,19 @@ calculate_path(void) */ defpath = pythonpath; while (1) { - char *delim = strchr(defpath, DELIM); + char *delim = strchr(defpath, ':'); /* bird: hardcoded DELIM in default path. */ - if (defpath[0] != SEP) { + if (!IS_ABSPATH(defpath)) { strcat(buf, prefix); strcat(buf, separator); } if (delim) { - size_t len = delim - defpath + 1; + size_t len = delim - defpath; size_t end = strlen(buf) + len; strncat(buf, defpath, len); - *(buf + end) = '\0'; + *(buf + end) = DELIM; /* bird: correct the DELIM char. */ + *(buf + end + 1) = '\0'; } else { strcat(buf, defpath); diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 2ed54e4b..bee75673 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -34,6 +34,10 @@ # include #endif /* defined(__VMS) */ +#if defined(__KLIBC__) +#include +#endif + #ifdef __cplusplus extern "C" { #endif @@ -131,7 +135,7 @@ corresponding Unix manual entries for more information on calls."); #define HAVE_FSYNC 1 #define fsync _commit #else -#if defined(PYOS_OS2) && defined(PYCC_GCC) || defined(__VMS) +#if (defined(PYOS_OS2) && defined(PYCC_GCC) && !defined(__KLIBC__)) || defined(__VMS) /* Everything needed is defined in PC/os2emx/pyconfig.h or vms/pyconfig.h */ #else /* all other compilers */ /* Unix functions that the configure script doesn't check for */ @@ -427,6 +431,15 @@ convertenviron(void) PyDict_SetItemString(d, "ENDLIBPATH", v); Py_DECREF(v); } +#ifdef LIBPATHSTRICT + buffer[0] = buffer[1] = buffer[2] = buffer[3] = '\0'; + rc = DosQueryExtLIBPATH(buffer, LIBPATHSTRICT); + if (rc == NO_ERROR) { /* (not a typo, envname is NOT 'LIBPATH_STRICT') */ + PyObject *v = PyString_FromString(buffer); + PyDict_SetItemString(d, "LIBPATHSTRICT", v); + Py_DECREF(v); + } +#endif } #endif return d; @@ -1649,8 +1662,6 @@ posix_chdir(PyObject *self, PyObject *args) { #ifdef MS_WINDOWS return win32_1str(args, "chdir", "s:chdir", win32_chdir, "U:chdir", win32_wchdir); -#elif defined(PYOS_OS2) && defined(PYCC_GCC) - return posix_1str(args, "et:chdir", _chdir2); #elif defined(__VMS) return posix_1str(args, "et:chdir", (int (*)(const char *))chdir); #else @@ -1986,11 +1997,7 @@ posix_getcwd(PyObject *self, PyObject *noargs) if (tmpbuf == NULL) { break; } -#if defined(PYOS_OS2) && defined(PYCC_GCC) - res = _getcwd2(tmpbuf, bufsize); -#else res = getcwd(tmpbuf, bufsize); -#endif if (res == NULL) { free(tmpbuf); @@ -2050,11 +2057,7 @@ posix_getcwdu(PyObject *self, PyObject *noargs) #endif Py_BEGIN_ALLOW_THREADS -#if defined(PYOS_OS2) && defined(PYCC_GCC) - res = _getcwd2(buf, sizeof buf); -#else res = getcwd(buf, sizeof buf); -#endif Py_END_ALLOW_THREADS if (res == NULL) return posix_error(); @@ -2244,7 +2247,7 @@ posix_listdir(PyObject *self, PyObject *args) return d; -#elif defined(PYOS_OS2) +#elif defined(PYOS_OS2_00) // YD os2 api does not support path rewriting #ifndef MAX_PATH #define MAX_PATH CCHMAXPATH @@ -3116,7 +3119,8 @@ posix_execve(PyObject *self, PyObject *args) #if defined(PYOS_OS2) /* Omit Pseudo-Env Vars that Would Confuse Programs if Passed On */ - if (stricmp(k, "BEGINLIBPATH") != 0 && stricmp(k, "ENDLIBPATH") != 0) { + if (stricmp(k, "BEGINLIBPATH") != 0 && stricmp(k, "ENDLIBPATH") != 0 + && stricmp(k, "LIBPATHSTRICT") != 0) { #endif len = PyString_Size(key) + PyString_Size(val) + 2; p = PyMem_NEW(char, len); @@ -4215,13 +4219,28 @@ posix_popen(PyObject *self, PyObject *args) char *name; char *mode = "r"; int bufsize = -1; + int unset_emxshell = 0; FILE *fp; PyObject *f; if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize)) return NULL; + /* a little hack for making sure commands.getstatusoutput works + * (ASSUMES that COMSPEC isn't a posix shell.) */ + if (name[0] == '{' && !getenv("EMXSHELL")) { + char path[512]; + _searchenv("sh.exe", "PATH", path); + if (!path[0]) + _searchenv("ash.exe", "PATH", path); + if (!path[0]) + _searchenv("bash.exe", "PATH", path); + if (path[0]) + unset_emxshell = setenv("EMXSHELL", path, 0) == 0; + } Py_BEGIN_ALLOW_THREADS fp = popen(name, mode); Py_END_ALLOW_THREADS + if (unset_emxshell) + unsetenv("EMXSHELL"); if (fp == NULL) return posix_error(); f = PyFile_FromFile(fp, name, mode, pclose); @@ -4371,7 +4390,7 @@ _PyPopen(char *cmdstring, int mode, int n, int bufsize) struct pipe_ref p_fd[3]; FILE *p_s[3]; int file_count, i, pipe_err; - pid_t pipe_pid; + pid_t pipe_pid = -1; char *shell, *sh_name, *opt, *rd_mode, *wr_mode; PyObject *f, *p_f[3]; @@ -4390,6 +4409,8 @@ _PyPopen(char *cmdstring, int mode, int n, int bufsize) /* prepare shell references */ if ((shell = getenv("EMXSHELL")) == NULL) if ((shell = getenv("COMSPEC")) == NULL) + if ((shell = getenv("SHELL")) == NULL) + if ((shell = getenv("OS2_SHELL")) == NULL) { errno = ENOENT; return posix_error(); @@ -4428,7 +4449,11 @@ _PyPopen(char *cmdstring, int mode, int n, int bufsize) file_count = 3; i = pipe_err = 0; while ((pipe_err == 0) && (i < file_count)) +#ifndef __KLIBC__ pipe_err = pipe((int *)&p_fd[i++]); +#else + pipe_err = socketpair(AF_UNIX, SOCK_STREAM,0,(int *)&p_fd[i++]); +#endif if (pipe_err < 0) { /* didn't get them all made - clean up and bail out */ @@ -6589,7 +6614,7 @@ Create a pipe."); static PyObject * posix_pipe(PyObject *self, PyObject *noargs) { -#if defined(PYOS_OS2) +#if defined(PYOS_OS2) && !defined(__KLIBC__) HFILE read, write; APIRET rc; @@ -6605,7 +6630,11 @@ posix_pipe(PyObject *self, PyObject *noargs) int fds[2]; int res; Py_BEGIN_ALLOW_THREADS +#ifndef __KLIBC__ res = pipe(fds); +#else + res = socketpair(AF_UNIX, SOCK_STREAM,0, fds); +#endif Py_END_ALLOW_THREADS if (res != 0) return posix_error(); @@ -6795,8 +6824,16 @@ posix_putenv(PyObject *self, PyObject *args) rc = DosSetExtLIBPATH(s2, END_LIBPATH); if (rc != NO_ERROR) return os2_error(rc); - } else { +#ifdef LIBPATHSTRICT + } else if (stricmp(s1, "LIBPATHSTRICT") == 0) { + APIRET rc; + + rc = DosSetExtLIBPATH(s2, LIBPATHSTRICT); + if (rc != NO_ERROR) + return os2_error(rc); #endif + } else { +#endif /* OS2 */ /* XXX This can leak memory -- not easy to fix :-( */ len = strlen(s1) + strlen(s2) + 2; @@ -8429,6 +8466,43 @@ vms_urandom(PyObject *self, PyObject *args) } #endif +#ifdef __EMX__ +/* Use openssl random routine */ +#include +PyDoc_STRVAR(os2_urandom__doc__, +"urandom(n) -> str\n\n\ +Return a string of n random bytes suitable for cryptographic use."); + +static PyObject* +os2_urandom(PyObject *self, PyObject *args) +{ + int howMany; + PyObject* result; + + /* Read arguments */ + if (! PyArg_ParseTuple(args, "i:urandom", &howMany)) + return NULL; + if (howMany < 0) + return PyErr_Format(PyExc_ValueError, + "negative argument not allowed"); + + /* Allocate bytes */ + result = PyString_FromStringAndSize(NULL, howMany); + if (result != NULL) { + /* Get random data */ + if (RAND_pseudo_bytes((unsigned char*) + PyString_AS_STRING(result), + howMany) < 0) { + Py_DECREF(result); + return PyErr_Format(PyExc_ValueError, + "RAND_pseudo_bytes"); + } + } + return result; +} +#endif + + static PyMethodDef posix_methods[] = { {"access", posix_access, METH_VARARGS, posix_access__doc__}, #ifdef HAVE_TTYNAME @@ -8738,6 +8812,9 @@ static PyMethodDef posix_methods[] = { #endif #ifdef __VMS {"urandom", vms_urandom, METH_VARARGS, vms_urandom__doc__}, + #endif + #ifdef __EMX__ + {"urandom", os2_urandom, METH_VARARGS, os2_urandom__doc__}, #endif {NULL, NULL} /* Sentinel */ }; @@ -8755,7 +8832,6 @@ static int insertvalues(PyObject *module) { APIRET rc; ULONG values[QSV_MAX+1]; - PyObject *v; char *ver, tmp[50]; Py_BEGIN_ALLOW_THREADS @@ -8784,7 +8860,7 @@ static int insertvalues(PyObject *module) case 50: ver = "5.00"; break; default: PyOS_snprintf(tmp, sizeof(tmp), - "%d-%d", values[QSV_VERSION_MAJOR], + "%ld-%ld", values[QSV_VERSION_MAJOR], values[QSV_VERSION_MINOR]); ver = &tmp[0]; } diff --git a/Modules/resource.c b/Modules/resource.c index 38974f95..3f8a0b3f 100644 --- a/Modules/resource.c +++ b/Modules/resource.c @@ -68,6 +68,7 @@ resource_getrusage(PyObject *self, PyObject *args) if (!PyArg_ParseTuple(args, "i:getrusage", &who)) return NULL; +#ifndef __OS2__ if (getrusage(who, &ru) == -1) { if (errno == EINVAL) { PyErr_SetString(PyExc_ValueError, @@ -77,7 +78,7 @@ resource_getrusage(PyObject *self, PyObject *args) PyErr_SetFromErrno(ResourceError); return NULL; } - +#endif result = PyStructSequence_New(&StructRUsageType); if (!result) return NULL; diff --git a/Objects/exceptions.c b/Objects/exceptions.c index d98dc9c6..4b99b202 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -1146,7 +1146,7 @@ my_basename(char *name) if (name == NULL) return "???"; while (*cp != '\0') { - if (*cp == SEP) + if (IS_SEP(*cp)) result = cp + 1; ++cp; } diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index f12a93cb..d516af00 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -20,11 +20,15 @@ #include #else #if defined(PYOS_OS2) && defined(PYCC_GCC) +#ifdef __KLIBC__ +#error "kLIBC has dlfcn.h and shouldn't get here!" +#endif #include "dlfcn.h" #endif #endif -#if (defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__) +#if ((defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__)) \ + || (defined(__OS2__) && defined(__KLIBC__)) #define LEAD_UNDERSCORE "_" #else #define LEAD_UNDERSCORE "" @@ -36,7 +40,7 @@ const struct filedescr _PyImport_DynLoadFiletab[] = { {".dll", "rb", C_EXTENSION}, {"module.dll", "rb", C_EXTENSION}, #else -#if defined(PYOS_OS2) && defined(PYCC_GCC) +#if (defined(PYOS_OS2) && defined(PYCC_GCC)) || (defined(__OS2__) && defined(__KLIBC__)) {".pyd", "rb", C_EXTENSION}, {".dll", "rb", C_EXTENSION}, #else @@ -127,6 +131,12 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname, pathname = pathbuf; #endif +#if (defined(PYOS_OS2) && defined(PYCC_GCC)) + // resolve unixroot + if (_realrealpath( pathname, pathbuf, sizeof(pathbuf))!=0) + pathname = pathbuf; +#endif + handle = dlopen(pathname, dlopenflags); if (handle == NULL) { diff --git a/Python/import.c b/Python/import.c index 43eabb83..5a182d1b 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1563,6 +1563,9 @@ PyAPI_FUNC(int) _PyImport_IsScript(struct filedescr * fd) #include #include +#elif defined(__KLIBC__) +#include + #elif defined(PYOS_OS2) #define INCL_DOS #define INCL_DOSERRORS @@ -1682,6 +1685,29 @@ case_ok(char *buf, Py_ssize_t len, Py_ssize_t namelen, char *name) return 0; /* OS/2 */ +#elif defined(__KLIBC__) + char canon[MAXPATHLEN+1]; + size_t canonlen; + char *p, *p2; + + if (Py_GETENV("PYTHONCASEOK") != NULL) + return 1; + + /* This resolves case differences and return and native OS/2 + path. Unfortunately, it'll also resolve symbolic links + while of course will screw up a bit... */ + if (!_realrealpath(buf, canon, sizeof(canon))) + return 0; + canonlen = strlen(canon); + if (canonlen < namelen) + return 0; + p = strrchr(canon, SEP); + p2 = strrchr(p ? p : canon, ALTSEP); + if (p2) + p = p2; + + return strncmp(p ? p + 1 : canon, name, namelen) == 0; + #elif defined(PYOS_OS2) HDIR hdir = 1; ULONG srchcnt = 1; diff --git a/Python/pystrtod.c b/Python/pystrtod.c index 6f8f52d5..6828ea31 100644 --- a/Python/pystrtod.c +++ b/Python/pystrtod.c @@ -2,6 +2,10 @@ #include #include +#ifdef __EMX__ +#include +#endif + /* ascii character tests (as opposed to locale tests) */ #define ISSPACE(c) ((c) == ' ' || (c) == '\f' || (c) == '\n' || \ @@ -40,6 +44,9 @@ double PyOS_ascii_strtod(const char *nptr, char **endptr) { +#ifdef __EMX__ +_control87(MCW_EM, MCW_EM); +#endif char *fail_pos; double val = -1.0; struct lconv *locale_data; @@ -172,6 +179,7 @@ PyOS_ascii_strtod(const char *nptr, char **endptr) } else { +//sigfpe here val = strtod(digits_pos, &fail_pos); } diff --git a/Python/sysmodule.c b/Python/sysmodule.c index e6801495..0b9a3345 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1555,19 +1555,29 @@ PySys_SetArgv(int argc, char **argv) if (nr > 0) { /* It's a symlink */ link[nr] = '\0'; - if (link[0] == SEP) + if (IS_ABSPATH(link)) argv0 = link; /* Link to absolute path */ - else if (strchr(link, SEP) == NULL) + else if (!HAS_ANYSEP(link)) ; /* Link without path */ else { /* Must join(dirname(argv0), link) */ char *q = strrchr(argv0, SEP); +#ifdef ALTSEP + char *q2 = strrchr(q ? q : argv0, ALTSEP); + if (q2) + q = q2; +#endif +#ifdef DRVSEP + if (!q && HAS_DRV(argv0)) + q = strchr(argv0, DRVSEP); +#endif + if (q == NULL) argv0 = link; /* argv0 without path */ else { /* Must make a copy */ strcpy(argv0copy, argv0); - q = strrchr(argv0copy, SEP); + q = &argv0copy[q - argv0]; strcpy(q+1, link); argv0 = argv0copy; } @@ -1608,6 +1618,17 @@ PySys_SetArgv(int argc, char **argv) } #endif p = strrchr(argv0, SEP); +#ifdef ALTSEP + { + char *p2 = strrchr(p ? p : argv0, ALTSEP); + if (p2 != NULL) + p = p2; + } +#endif +#ifdef DRVSEP + if (p == NULL && HAS_DRV(argv0)) + p = strchr(argv0, DRVSEP); +#endif } if (p != NULL) { #ifndef RISCOS diff --git a/Python/traceback.c b/Python/traceback.c index c2d7e77a..b17eae19 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -157,7 +157,7 @@ _Py_DisplaySourceLine(PyObject *f, const char *filename, int lineno, int indent) strcpy(namebuf, PyString_AsString(v)); if (strlen(namebuf) != len) continue; /* v contains '\0' */ - if (len > 0 && namebuf[len-1] != SEP) + if (len > 0 && IS_SEP(namebuf[len-1])) namebuf[len++] = SEP; strcpy(namebuf+len, tail); xfp = fopen(namebuf, "r" PY_STDIOTEXTMODE); diff --git a/configure b/configure index 1be46320..1f56a6bd 100644 --- a/configure +++ b/configure @@ -697,6 +697,7 @@ DLLLIBRARY BLDLIBRARY LDLIBRARYDIR INSTSONAME +CONDENSED_VERSION RUNSHARED LINKCC RANLIB @@ -2105,6 +2106,7 @@ then darwin*) MACHDEP="darwin";; atheos*) MACHDEP="atheos";; irix646) MACHDEP="irix6";; + os2*|OS/2*|emx*) MACHDEP="os2knix";; '') MACHDEP="unknown";; esac fi @@ -4012,6 +4014,7 @@ INSTSONAME='$(LDLIBRARY)' DLLLIBRARY='' LDLIBRARYDIR='' RUNSHARED='' +CONDENSED_VERSION=`echo "${VERSION}" | tr -d .,"` # LINKCC is the command that links the python executable -- default is $(CC). # If CXX is set, and if it is needed to link a main function that was @@ -4055,7 +4058,7 @@ fi if test -z "$enable_shared" then case $ac_sys_system in - CYGWIN* | atheos*) + CYGWIN* | atheos* | *OS/2* | *emx* | *os2*) enable_shared="yes";; *) enable_shared="no";; @@ -4204,6 +4207,12 @@ _ACEOF BLDLIBRARY='-L. -lpython$(VERSION)' RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}' ;; + OS/2*|os2*|*emx*) + LDLIBRARY='python$(VERSION)_dll.a' + BLDLIBRARY='-L. -lpython$(VERSION)' + RUNSHARED=BEGINLIBPATH="'`pwd`;$BEGINLIBPATH'" + DLLLIBRARY='python${CONDENSED_VERSION}.dll' + ;; esac else # shared is disabled @@ -4532,6 +4541,7 @@ if test -z "$LN" ; then BeOS*) LN="ln -s";; CYGWIN*) LN="ln -s";; atheos*) LN="ln -s";; + OS/2*|os2*|*emx*) LN="ln -s";; *) LN=ln;; esac fi @@ -13191,6 +13201,7 @@ then esac ;; CYGWIN*) SO=.dll;; + OS/2*|os2*|*emx*) SO=.dll;; *) SO=.so;; esac else @@ -13321,6 +13332,7 @@ then Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";; CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";; atheos*) LDSHARED="gcc -shared";; + OS/2*|os2*|*emx*) LDSHARED="gcc -Zdll -Zomf";; *) LDSHARED="ld";; esac fi @@ -25910,6 +25922,7 @@ BLDLIBRARY!$BLDLIBRARY$ac_delim LDLIBRARYDIR!$LDLIBRARYDIR$ac_delim INSTSONAME!$INSTSONAME$ac_delim RUNSHARED!$RUNSHARED$ac_delim +CONDENSED_VERSION!$CONDENSED_VERSION$ac_delim LINKCC!$LINKCC$ac_delim RANLIB!$RANLIB$ac_delim AR!$AR$ac_delim @@ -25927,7 +25940,7 @@ SO!$SO$ac_delim LDSHARED!$LDSHARED$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 98; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/pyconfig.h.in b/pyconfig.h.in index e05ab4a8..f988b45f 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -1091,5 +1091,12 @@ #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ #endif +#if defined(__EMX__) +#define PLATFORM "os2knix" +#define PYOS_OS2 1 +#define PYCC_GCC 1 +#undef HAVE_LINK // YD not working but available +#endif + #endif /*Py_PYCONFIG_H*/ diff --git a/setup.py b/setup.py index f75608d8..75b89b96 100644 --- a/setup.py +++ b/setup.py @@ -382,6 +382,10 @@ def detect_modules(self): inc_dirs += ['/system/include', '/atheos/autolnk/include'] inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) + # Check for OS/2 which may have libraries in non-standard locations + if platform == 'os2knix': + lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep) + inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb) if platform in ['osf1', 'unixware7', 'openunix8']: lib_dirs += ['/usr/ccs/lib'] @@ -516,7 +520,7 @@ def detect_modules(self): exts.append( Extension('cPickle', ['cPickle.c']) ) # Memory-mapped files (also works on Win32). - if platform not in ['atheos', 'mac']: + if platform not in ['atheos', 'mac', 'os2knix']: exts.append( Extension('mmap', ['mmapmodule.c']) ) else: missing.append('mmap') @@ -867,6 +871,9 @@ class db_found(Exception): pass print "bsddb lib dir:", dblib_dir, " inc dir:", db_incdir db_incs = [db_incdir] dblibs = [dblib] + # YD add required libs + if os.name == "os2": + dblibs += ["mmap", "pthread"] # We add the runtime_library_dirs argument because the # BerkeleyDB lib we're linking against often isn't in the # system dynamic library search path. This is usually @@ -1068,7 +1075,7 @@ class db_found(Exception): pass missing.append('resource') # Sun yellow pages. Some systems have the functions in libc. - if (platform not in ['cygwin', 'atheos', 'qnx6'] and + if (platform not in ['cygwin', 'atheos', 'qnx6', 'os2knix'] and find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None): if (self.compiler.find_library_file(lib_dirs, 'nsl')): libs = ['nsl'] @@ -1287,6 +1294,14 @@ class db_found(Exception): pass ) libraries = [] + elif platform in ('os2knix'): + # FreeBSD's P1003.1b semaphore support is very experimental + # and has many known problems. (as of June 2008) + macros = dict( # FreeBSD + HAVE_SEM_OPEN=0, + HAVE_SEM_TIMEDWAIT=0, + ) + libraries = [] elif platform.startswith('openbsd'): macros = dict( # OpenBSD HAVE_SEM_OPEN=0, # Not implemented From 1c84f1e84f83f5569122c6f27b1bdfb4385e6de9 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Sat, 11 Sep 2010 13:20:49 +0000 Subject: [PATCH 003/160] python: drive is 2 letters only, fixes mercurial unbundle. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@12 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/urllib2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/urllib2.py b/Lib/urllib2.py index c7b03044..40c21cb4 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -1276,7 +1276,7 @@ def open_local_file(self, req): file = req.get_selector() # YD hack: add again drive name - if os.name == 'os2' and len(host)>2 and host[1] == ':': + if os.name == 'os2' and len(host)>1 and host[1] == ':': file = host + file host = "" From cc61d7104d10f3f02f560c9460b6a23256bee344 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Sun, 12 Sep 2010 21:24:21 +0000 Subject: [PATCH 004/160] python: allows submodules to inherit python build flags, so they build with same options. fixes highmem in mercurial. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@13 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/sysconfig.py | 2 +- configure | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 95706c10..ca63d17f 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -172,7 +172,7 @@ def customize_compiler(compiler): Mainly needed on Unix, so we can plug in the information that varies across Unices and is stored in Python's Makefile. """ - if compiler.compiler_type == "unix": + if compiler.compiler_type == "unix" or compiler.compiler_type == "emx": (cc, cxx, opt, cflags, ccshared, ldshared, so_ext) = \ get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', 'CCSHARED', 'LDSHARED', 'SO') diff --git a/configure b/configure index 1f56a6bd..e16cc46b 100644 --- a/configure +++ b/configure @@ -13332,7 +13332,7 @@ then Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";; CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";; atheos*) LDSHARED="gcc -shared";; - OS/2*|os2*|*emx*) LDSHARED="gcc -Zdll -Zomf";; + OS/2*|os2*|*emx*) LDSHARED="${CC} ${LDFLAGS} -Zdll";; *) LDSHARED="ld";; esac fi From fdfac28cbf1b581bbbff2589455859795db18904 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Tue, 14 Sep 2010 11:16:59 +0000 Subject: [PATCH 005/160] python: fix loading path and prefix access. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@20 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/getpath.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Modules/getpath.c b/Modules/getpath.c index 523cde78..2acb55ca 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -125,14 +125,14 @@ //#define PYTHONPATH "./Lib;./Lib/plat-" PLATFORM \ // ";./Lib/lib-dynload;./Lib/site-packages" // force unixroot -#define PYTHONPATH PREFIX "/lib/python" VERSION ";" \ - EXEC_PREFIX "/lib/python" VERSION "/lib-" PLATFORM ";" \ - EXEC_PREFIX "/lib/python" VERSION "/site-packages" ";" \ - EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ";" \ +#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ + EXEC_PREFIX "/lib/python" VERSION "/lib-" PLATFORM ":" \ + EXEC_PREFIX "/lib/python" VERSION "/site-packages" ":" \ + EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ":" \ /* now local (for building) */ \ - "./lib" ";" \ - "./lib/plat-" PLATFORM ";" \ - "./lib/site-packages" ";" \ + "./lib" ":" \ + "./lib/plat-" PLATFORM ":" \ + "./lib/site-packages" ":" \ "./lib/lib-dynload" #endif @@ -659,6 +659,7 @@ calculate_path(void) * If we're loading relative to the build directory, * return the compiled-in defaults instead. */ +#ifndef __KLIBC__ // YD force hardcoded build prefix if (pfound > 0) { reduce(prefix); reduce(prefix); @@ -668,8 +669,10 @@ calculate_path(void) strcpy(prefix, separator); } else +#endif strncpy(prefix, PREFIX, MAXPATHLEN); +#ifndef __KLIBC__ // YD force hardcoded build exec_prefix if (efound > 0) { reduce(exec_prefix); reduce(exec_prefix); @@ -678,6 +681,7 @@ calculate_path(void) strcpy(exec_prefix, separator); } else +#endif strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN); } From 6cb629791178a07f9dd3920ca68b2a9752e9a826 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Tue, 14 Sep 2010 11:20:10 +0000 Subject: [PATCH 006/160] python: clean up in code. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@21 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/emxccompiler.py | 8 -------- Lib/test/test_unicodedata.py | 1 + Misc/python-config.in | 8 +++++--- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index f936488a..7b767244 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -61,13 +61,6 @@ def __init__ (self, (self.gcc_version, self.ld_version) ) - # Hard-code GCC because that's what this is all about. - # XXX optimization, warnings etc. should be customizable. - self.set_executables(compiler='gcc -g -O2 -march=i386 -mtune=i686 -fomit-frame-pointer -Wall', - compiler_so='gcc -g -O2 -march=i386 -mtune=i686 -fomit-frame-pointer -Wall', - linker_exe='gcc -Zomf -Zexe', - linker_so='gcc -Zomf -Zdll') - # want the gcc library statically linked (so that we don't have # to distribute a version dependent on the compiler we have) self.dll_libraries=["gcc"] @@ -216,7 +209,6 @@ def find_library_file(self, dirs, lib, debug=0): except KeyError: emx_dirs = [] - #print "dirs:",dirs for dir in dirs + emx_dirs: for name in try_names: libfile = os.path.join(dir, name) diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py index dd0678d8..baa36cbf 100644 --- a/Lib/test/test_unicodedata.py +++ b/Lib/test/test_unicodedata.py @@ -71,6 +71,7 @@ def setUp(self): # In case unicodedata is not available, this will raise an ImportError, # but the other test cases will still be run import unicodedata + self.db = unicodedata def tearDown(self): del self.db diff --git a/Misc/python-config.in b/Misc/python-config.in index 057ac120..27f5f235 100644 --- a/Misc/python-config.in +++ b/Misc/python-config.in @@ -43,9 +43,11 @@ elif opt in ('--includes', '--cflags'): print ' '.join(flags) elif opt in ('--libs', '--ldflags'): - libs = getvar('LIBS').split() + getvar('SYSLIBS').split() - # YD ignore libs - libs = getvar('SYSLIBS').split() + if os.name != 'os2': + libs = getvar('LIBS').split() + getvar('SYSLIBS').split() + else + # YD ignore libs + libs = getvar('SYSLIBS').split() libs.append('-lpython'+pyver) # add the prefix/lib/pythonX.Y/config dir, but only if there is no # shared library in prefix/lib/. From 0077d6475340e2abddc8c25097a4eff36f4fe79f Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Wed, 22 Sep 2010 13:05:47 +0000 Subject: [PATCH 007/160] python: add tinfo to required libraries for ncurses module. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@27 978522c7-42b7-df11-88a9-00e081727c95 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 75b89b96..4550b549 100644 --- a/setup.py +++ b/setup.py @@ -1099,7 +1099,7 @@ class db_found(Exception): pass exts.append( Extension('_curses', ['_cursesmodule.c'], libraries = curses_libs) ) elif (self.compiler.find_library_file(lib_dirs, 'ncurses')): - curses_libs = ['ncurses'] + curses_libs = ['ncurses', 'tinfo'] exts.append( Extension('_curses', ['_cursesmodule.c'], libraries = curses_libs) ) elif (self.compiler.find_library_file(lib_dirs, 'curses') From 54444b06e5268ea6265c991b61c41f8c1794853e Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Fri, 22 Oct 2010 13:51:55 +0000 Subject: [PATCH 008/160] python: allow selecting default from current locale, fixes unicode decoding errors in gettext conversions. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@58 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/site.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/site.py b/Lib/site.py index 9f0969a8..4d5b8ca6 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -451,7 +451,7 @@ def setencoding(): default is 'ascii', but if you're willing to experiment, you can change this.""" encoding = "ascii" # Default value set by _PyUnicode_Init() - if 0: + if 1: # Enable to support locale aware default string encodings. import locale loc = locale.getdefaultlocale() From 1f4b877c27f6d81b23ec6b4fdd8ccf55b19582b8 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Fri, 22 Oct 2010 20:46:09 +0000 Subject: [PATCH 009/160] python: use current codepage as charset in locale settings. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@60 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/gettext.py | 7 +++++++ Lib/locale.py | 7 ++++++- Modules/_localemodule.c | 29 ++++++++++++++++++++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/Lib/gettext.py b/Lib/gettext.py index 90ebc518..f13b9d85 100644 --- a/Lib/gettext.py +++ b/Lib/gettext.py @@ -149,6 +149,13 @@ def _expand_lang(locale): mask |= COMPONENT_CODESET else: codeset = '' + + # use new os2 code to get current codepage + if pos == -1 and os.name == "os2": + import _locale + codeset = _locale._getdefaultlocale()[1] + mask |= COMPONENT_CODESET + pos = locale.find('_') if pos >= 0: territory = locale[pos:] diff --git a/Lib/locale.py b/Lib/locale.py index df5ab39f..ac5a735a 100644 --- a/Lib/locale.py +++ b/Lib/locale.py @@ -341,6 +341,11 @@ def normalize(localename): langname = fullname encoding = '' + if sys.platform[:3] == "os2": + import _locale + langname, encoding = _locale._getdefaultlocale() + langname = langname.replace('_euro', '') + # First lookup: fullname (possibly with encoding) norm_encoding = encoding.replace('-', '') norm_encoding = norm_encoding.replace('_', '') @@ -522,7 +527,7 @@ def resetlocale(category=LC_ALL): """ _setlocale(category, _build_localename(getdefaultlocale())) -if sys.platform in ('win32', 'darwin', 'mac'): +if sys.platform in ('win32', 'darwin', 'mac', 'os2knix'): # On Win32, this will return the ANSI code page # On the Mac, it should return the system encoding; # it might return "ascii" instead diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index bf5d58d0..6cee98bf 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -41,6 +41,12 @@ This software comes with no warranty. Use at your own risk. #include #endif +#if defined(__KLIBC__) +#define INCL_DOS +#define INCL_DOSERRORS +#include +#endif + #ifdef RISCOS char *strdup(const char *); #endif @@ -444,6 +450,27 @@ PyLocale_getdefaultlocale(PyObject* self) } #endif +#if defined(__KLIBC__) +static PyObject* +PyLocale_getdefaultlocale(PyObject* self) +{ + char encoding[100]; + char locale[100]; + ULONG cp[3]; + ULONG cplen; + + strcpy( locale, ""); + if (getenv("LANG")) + strcpy( locale, getenv("LANG")); + + strcpy( encoding, ""); + if (DosQueryCp (sizeof (cp), cp, &cplen) == NO_ERROR) + PyOS_snprintf(encoding, sizeof(encoding), "CP%u", cp[0]); + + return Py_BuildValue("ss", locale, encoding); +} +#endif + #ifdef HAVE_LANGINFO_H #define LANGINFO(X) {#X, X} static struct langinfo_constant{ @@ -689,7 +716,7 @@ static struct PyMethodDef PyLocale_Methods[] = { METH_VARARGS, strcoll__doc__}, {"strxfrm", (PyCFunction) PyLocale_strxfrm, METH_VARARGS, strxfrm__doc__}, -#if defined(MS_WINDOWS) || defined(__APPLE__) +#if defined(MS_WINDOWS) || defined(__APPLE__) || defined(__KLIBC__) {"_getdefaultlocale", (PyCFunction) PyLocale_getdefaultlocale, METH_NOARGS}, #endif #ifdef HAVE_LANGINFO_H From 5b0f1a6ff47dfcb09cb58093796a4c7bc5a3d44f Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Wed, 10 Nov 2010 15:21:30 +0000 Subject: [PATCH 010/160] python: exit infinite loop on tokenizer on EOF, fixes yum --disablerepo hang. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@105 978522c7-42b7-df11-88a9-00e081727c95 --- Parser/tokenizer.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 1d0a4aa3..72122ef9 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -1292,6 +1292,10 @@ tok_get(register struct tok_state *tok, char **p_start, char **p_end) } while (isalnum(c) || c == '_') { c = tok_nextc(tok); +#ifdef __KLIBC__ + if (c == EOF) + break; +#endif } tok_backup(tok, c); *p_start = tok->start; From 93b98d150d4ba6f00e75f5d192811bc15c96e612 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Tue, 4 Jan 2011 09:35:57 +0000 Subject: [PATCH 011/160] python: backported bdb 4.8.x code from Python 2.7 git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@132 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/_bsddb.c | 3541 ++++++++++++++++++++++++++++++++++------- Modules/bsddb.h | 32 +- Modules/bsddbmodule.c | 1292 +++++++-------- setup.py | 4 +- 4 files changed, 3663 insertions(+), 1206 deletions(-) diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c index 222e38e7..8c0499ac 100644 --- a/Modules/_bsddb.c +++ b/Modules/_bsddb.c @@ -73,6 +73,10 @@ * DBLock (A lock handle) * DBSequence (Sequence) * + * More datatypes added: + * + * DBLogCursor (Log Cursor) + * */ /* --------------------------------------------------------------------- */ @@ -95,7 +99,7 @@ #include "bsddb.h" #undef COMPILING_BSDDB_C -static char *rcs_id = "$Id: _bsddb.c 78564 2010-03-01 21:08:21Z florent.xicluna $"; +static char *rcs_id = "$Id: _bsddb.c 81029 2010-05-09 14:46:46Z antoine.pitrou $"; /* --------------------------------------------------------------------- */ /* Various macro definitions */ @@ -139,9 +143,9 @@ typedef int Py_ssize_t; /* and these are for calling C --> Python */ #if defined(MYDB_USE_GILSTATE) #define MYDB_BEGIN_BLOCK_THREADS \ - PyGILState_STATE __savestate = PyGILState_Ensure(); + PyGILState_STATE __savestate = PyGILState_Ensure(); #define MYDB_END_BLOCK_THREADS \ - PyGILState_Release(__savestate); + PyGILState_Release(__savestate); #else /* MYDB_USE_GILSTATE */ /* Pre GILState API - do it the long old way */ static PyInterpreterState* _db_interpreterState = NULL; @@ -169,9 +173,6 @@ static PyInterpreterState* _db_interpreterState = NULL; #endif -/* Should DB_INCOMPLETE be turned into a warning or an exception? */ -#define INCOMPLETE_IS_WARNING 1 - /* --------------------------------------------------------------------- */ /* Exceptions */ @@ -191,10 +192,6 @@ static PyObject* DBNoServerIDError; /* DB_NOSERVER_ID */ static PyObject* DBPageNotFoundError; /* DB_PAGE_NOTFOUND */ static PyObject* DBSecondaryBadError; /* DB_SECONDARY_BAD */ -#if !INCOMPLETE_IS_WARNING -static PyObject* DBIncompleteError; /* DB_INCOMPLETE */ -#endif - static PyObject* DBInvalidArgError; /* EINVAL */ static PyObject* DBAccessError; /* EACCES */ static PyObject* DBNoSpaceError; /* ENOSPC */ @@ -208,11 +205,27 @@ static PyObject* DBPermissionsError; /* EPERM */ #if (DBVER >= 42) static PyObject* DBRepHandleDeadError; /* DB_REP_HANDLE_DEAD */ #endif +#if (DBVER >= 44) +static PyObject* DBRepLockoutError; /* DB_REP_LOCKOUT */ +#endif + +#if (DBVER >= 46) +static PyObject* DBRepLeaseExpiredError; /* DB_REP_LEASE_EXPIRED */ +#endif + +#if (DBVER >= 47) +static PyObject* DBForeignConflictError; /* DB_FOREIGN_CONFLICT */ +#endif + static PyObject* DBRepUnavailError; /* DB_REP_UNAVAIL */ #if (DBVER < 43) -#define DB_BUFFER_SMALL ENOMEM +#define DB_BUFFER_SMALL ENOMEM +#endif + +#if (DBVER < 48) +#define DB_GID_SIZE DB_XIDDATASIZE #endif @@ -238,7 +251,7 @@ static PyObject* DBRepUnavailError; /* DB_REP_UNAVAIL */ #endif staticforward PyTypeObject DB_Type, DBCursor_Type, DBEnv_Type, DBTxn_Type, - DBLock_Type; + DBLock_Type, DBLogCursor_Type; #if (DBVER >= 43) staticforward PyTypeObject DBSequence_Type; #endif @@ -250,6 +263,7 @@ staticforward PyTypeObject DBSequence_Type; #define DBObject_Check(v) (Py_TYPE(v) == &DB_Type) #define DBCursorObject_Check(v) (Py_TYPE(v) == &DBCursor_Type) +#define DBLogCursorObject_Check(v) (Py_TYPE(v) == &DBLogCursor_Type) #define DBEnvObject_Check(v) (Py_TYPE(v) == &DBEnv_Type) #define DBTxnObject_Check(v) (Py_TYPE(v) == &DBTxn_Type) #define DBLockObject_Check(v) (Py_TYPE(v) == &DBLock_Type) @@ -355,6 +369,9 @@ staticforward PyTypeObject DBSequence_Type; #define CHECK_CURSOR_NOT_CLOSED(curs) \ _CHECK_OBJECT_NOT_CLOSED(curs->dbc, DBCursorClosedError, DBCursor) +#define CHECK_LOGCURSOR_NOT_CLOSED(logcurs) \ + _CHECK_OBJECT_NOT_CLOSED(logcurs->logc, DBCursorClosedError, DBLogCursor) + #if (DBVER >= 43) #define CHECK_SEQUENCE_NOT_CLOSED(curs) \ _CHECK_OBJECT_NOT_CLOSED(curs->sequence, DBError, DBSequence) @@ -537,7 +554,7 @@ unsigned int our_strlcpy(char* dest, const char* src, unsigned int n) srclen = strlen(src); if (n <= 0) - return srclen; + return srclen; copylen = (srclen > n-1) ? n-1 : srclen; /* populate dest[0] thru dest[copylen-1] */ memcpy(dest, src, copylen); @@ -554,7 +571,7 @@ static char _db_errmsg[1024]; static void _db_errorCallback(const char* prefix, char* msg) #else static void _db_errorCallback(const DB_ENV *db_env, - const char* prefix, const char* msg) + const char* prefix, const char* msg) #endif { our_strlcpy(_db_errmsg, msg, sizeof(_db_errmsg)); @@ -667,27 +684,8 @@ static int makeDBError(int err) unsigned int bytes_left; switch (err) { - case 0: /* successful, no error */ break; - -#if (DBVER < 41) - case DB_INCOMPLETE: -#if INCOMPLETE_IS_WARNING - bytes_left = our_strlcpy(errTxt, db_strerror(err), sizeof(errTxt)); - /* Ensure that bytes_left never goes negative */ - if (_db_errmsg[0] && bytes_left < (sizeof(errTxt) - 4)) { - bytes_left = sizeof(errTxt) - bytes_left - 4 - 1; - assert(bytes_left >= 0); - strcat(errTxt, " -- "); - strncat(errTxt, _db_errmsg, bytes_left); - } - _db_errmsg[0] = 0; - exceptionRaised = PyErr_Warn(PyExc_RuntimeWarning, errTxt); - -#else /* do an exception instead */ - errObj = DBIncompleteError; -#endif - break; -#endif /* DBVER < 41 */ + case 0: /* successful, no error */ + return 0; case DB_KEYEMPTY: errObj = DBKeyEmptyError; break; case DB_KEYEXIST: errObj = DBKeyExistError; break; @@ -705,8 +703,8 @@ static int makeDBError(int err) case DB_BUFFER_SMALL: errObj = DBNoMemoryError; break; #if (DBVER >= 43) - /* ENOMEM and DB_BUFFER_SMALL were one and the same until 4.3 */ - case ENOMEM: errObj = PyExc_MemoryError; break; + /* ENOMEM and DB_BUFFER_SMALL were one and the same until 4.3 */ + case ENOMEM: errObj = PyExc_MemoryError; break; #endif case EINVAL: errObj = DBInvalidArgError; break; case EACCES: errObj = DBAccessError; break; @@ -720,6 +718,17 @@ static int makeDBError(int err) #if (DBVER >= 42) case DB_REP_HANDLE_DEAD : errObj = DBRepHandleDeadError; break; #endif +#if (DBVER >= 44) + case DB_REP_LOCKOUT : errObj = DBRepLockoutError; break; +#endif + +#if (DBVER >= 46) + case DB_REP_LEASE_EXPIRED : errObj = DBRepLeaseExpiredError; break; +#endif + +#if (DBVER >= 47) + case DB_FOREIGN_CONFLICT : errObj = DBForeignConflictError; break; +#endif case DB_REP_UNAVAIL : errObj = DBRepUnavailError; break; @@ -788,7 +797,6 @@ static int _DB_delete(DBObject* self, DB_TXN *txn, DBT *key, int flags) if (makeDBError(err)) { return -1; } - self->haveStat = 0; return 0; } @@ -805,13 +813,12 @@ static int _DB_put(DBObject* self, DB_TXN *txn, DBT *key, DBT *data, int flags) if (makeDBError(err)) { return -1; } - self->haveStat = 0; return 0; } /* Get a key/data pair from a cursor */ static PyObject* _DBCursor_get(DBCursorObject* self, int extra_flags, - PyObject *args, PyObject *kwargs, char *format) + PyObject *args, PyObject *kwargs, char *format) { int err; PyObject* retval = NULL; @@ -822,7 +829,7 @@ static PyObject* _DBCursor_get(DBCursorObject* self, int extra_flags, static char* kwnames[] = { "flags", "dlen", "doff", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, format, kwnames, - &flags, &dlen, &doff)) + &flags, &dlen, &doff)) return NULL; CHECK_CURSOR_NOT_CLOSED(self); @@ -838,7 +845,7 @@ static PyObject* _DBCursor_get(DBCursorObject* self, int extra_flags, MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->mydb->moduleFlags.getReturnsNone) { + && self->mydb->moduleFlags.getReturnsNone) { Py_INCREF(Py_None); retval = Py_None; } @@ -882,13 +889,13 @@ static void _addIntToDict(PyObject* dict, char *name, int value) static void _addTimeTToDict(PyObject* dict, char *name, time_t value) { PyObject* v; - /* if the value fits in regular int, use that. */ + /* if the value fits in regular int, use that. */ #ifdef PY_LONG_LONG - if (sizeof(time_t) > sizeof(long)) - v = PyLong_FromLongLong((PY_LONG_LONG) value); - else + if (sizeof(time_t) > sizeof(long)) + v = PyLong_FromLongLong((PY_LONG_LONG) value); + else #endif - v = NUMBER_FromLong((long) value); + v = NUMBER_FromLong((long) value); if (!v || PyDict_SetItemString(dict, name, v)) PyErr_Clear(); @@ -930,7 +937,6 @@ newDBObject(DBEnvObject* arg, int flags) if (self == NULL) return NULL; - self->haveStat = 0; self->flags = 0; self->setflags = 0; self->myenvobj = NULL; @@ -1038,10 +1044,10 @@ newDBCursorObject(DBC* dbc, DBTxnObject *txn, DBObject* db) INSERT_IN_DOUBLE_LINKED_LIST(self->mydb->children_cursors,self); if (txn && ((PyObject *)txn!=Py_None)) { - INSERT_IN_DOUBLE_LINKED_LIST_TXN(txn->children_cursors,self); - self->txn=txn; + INSERT_IN_DOUBLE_LINKED_LIST_TXN(txn->children_cursors,self); + self->txn=txn; } else { - self->txn=NULL; + self->txn=NULL; } self->in_weakreflist = NULL; @@ -1077,6 +1083,54 @@ DBCursor_dealloc(DBCursorObject* self) } +static DBLogCursorObject* +newDBLogCursorObject(DB_LOGC* dblogc, DBEnvObject* env) +{ + DBLogCursorObject* self; + + self = PyObject_New(DBLogCursorObject, &DBLogCursor_Type); + + if (self == NULL) + return NULL; + + self->logc = dblogc; + self->env = env; + + INSERT_IN_DOUBLE_LINKED_LIST(self->env->children_logcursors, self); + + self->in_weakreflist = NULL; + Py_INCREF(self->env); + return self; +} + + +/* Forward declaration */ +static PyObject *DBLogCursor_close_internal(DBLogCursorObject* self); + +static void +DBLogCursor_dealloc(DBLogCursorObject* self) +{ + PyObject *dummy; + + if (self->logc != NULL) { + dummy = DBLogCursor_close_internal(self); + /* + ** Raising exceptions while doing + ** garbage collection is a fatal error. + */ + if (dummy) + Py_DECREF(dummy); + else + PyErr_Clear(); + } + if (self->in_weakreflist != NULL) { + PyObject_ClearWeakRefs((PyObject *) self); + } + Py_DECREF(self->env); + PyObject_Del(self); +} + + static DBEnvObject* newDBEnvObject(int flags) { @@ -1092,6 +1146,7 @@ newDBEnvObject(int flags) self->moduleFlags.cursorSetReturnsNone = DEFAULT_CURSOR_SET_RETURNS_NONE; self->children_dbs = NULL; self->children_txns = NULL; + self->children_logcursors = NULL ; Py_INCREF(Py_None); self->private_obj = Py_None; Py_INCREF(Py_None); @@ -1163,6 +1218,8 @@ newDBTxnObject(DBEnvObject* myenv, DBTxnObject *parent, DB_TXN *txn, int flags) self->flag_prepare = 0; self->parent_txn = NULL; self->env = NULL; + /* We initialize just in case "txn_begin" fails */ + self->txn = NULL; if (parent && ((PyObject *)parent!=Py_None)) { parent_txn = parent->txn; @@ -1176,6 +1233,7 @@ newDBTxnObject(DBEnvObject* myenv, DBTxnObject *parent, DB_TXN *txn, int flags) MYDB_END_ALLOW_THREADS; if (makeDBError(err)) { + /* Free object half initialized */ Py_DECREF(self); return NULL; } @@ -1209,7 +1267,7 @@ DBTxn_dealloc(DBTxnObject* self) if (self->txn) { int flag_prepare = self->flag_prepare; - dummy=DBTxn_abort_discard_internal(self,0); + dummy=DBTxn_abort_discard_internal(self, 0); /* ** Raising exceptions while doing ** garbage collection is a fatal error. @@ -1232,7 +1290,12 @@ DBTxn_dealloc(DBTxnObject* self) if (self->env) { Py_DECREF(self->env); } else { - Py_DECREF(self->parent_txn); + /* + ** We can have "self->env==NULL" and "self->parent_txn==NULL" + ** if something happens when creating the transaction object + ** and we abort the object while half done. + */ + Py_XDECREF(self->parent_txn); } PyObject_Del(self); } @@ -1247,6 +1310,7 @@ newDBLockObject(DBEnvObject* myenv, u_int32_t locker, DBT* obj, if (self == NULL) return NULL; self->in_weakreflist = NULL; + self->lock_initialized = 0; /* Just in case the call fails */ MYDB_BEGIN_ALLOW_THREADS; err = myenv->db_env->lock_get(myenv->db_env, locker, flags, obj, lock_mode, @@ -1255,6 +1319,8 @@ newDBLockObject(DBEnvObject* myenv, u_int32_t locker, DBT* obj, if (makeDBError(err)) { Py_DECREF(self); self = NULL; + } else { + self->lock_initialized = 1; } return self; @@ -1268,6 +1334,7 @@ DBLock_dealloc(DBLockObject* self) PyObject_ClearWeakRefs((PyObject *) self); } /* TODO: is this lock held? should we release it? */ + /* CAUTION: The lock can be not initialized if the creation has failed */ PyObject_Del(self); } @@ -1288,6 +1355,7 @@ newDBSequenceObject(DBObject* mydb, int flags) self->txn = NULL; self->in_weakreflist = NULL; + self->sequence = NULL; /* Just in case the call fails */ MYDB_BEGIN_ALLOW_THREADS; err = db_sequence_create(&self->sequence, self->mydb->db, flags); @@ -1406,21 +1474,81 @@ _db_associateCallback(DB* db, const DBT* priKey, const DBT* priData, PyBytes_AsStringAndSize(result, &data, &size); secKey->flags = DB_DBT_APPMALLOC; /* DB will free */ secKey->data = malloc(size); /* TODO, check this */ - if (secKey->data) { - memcpy(secKey->data, data, size); - secKey->size = size; - retval = 0; - } - else { - PyErr_SetString(PyExc_MemoryError, + if (secKey->data) { + memcpy(secKey->data, data, size); + secKey->size = size; + retval = 0; + } + else { + PyErr_SetString(PyExc_MemoryError, "malloc failed in _db_associateCallback"); - PyErr_Print(); - } + PyErr_Print(); + } + } +#if (DBVER >= 46) + else if (PyList_Check(result)) + { + char* data; + Py_ssize_t size; + int i, listlen; + DBT* dbts; + + listlen = PyList_Size(result); + + dbts = (DBT *)malloc(sizeof(DBT) * listlen); + + for (i=0; iassociate callback should be a list of strings."); +#else +"The list returned by DB->associate callback should be a list of bytes."); +#endif + PyErr_Print(); + } + + PyBytes_AsStringAndSize( + PyList_GetItem(result, i), + &data, &size); + + CLEAR_DBT(dbts[i]); + dbts[i].data = malloc(size); /* TODO, check this */ + + if (dbts[i].data) + { + memcpy(dbts[i].data, data, size); + dbts[i].size = size; + dbts[i].ulen = dbts[i].size; + dbts[i].flags = DB_DBT_APPMALLOC; /* DB will free */ + } + else + { + PyErr_SetString(PyExc_MemoryError, + "malloc failed in _db_associateCallback (list)"); + PyErr_Print(); + } + } + + CLEAR_DBT(*secKey); + + secKey->data = dbts; + secKey->size = listlen; + secKey->flags = DB_DBT_APPMALLOC | DB_DBT_MULTIPLE; + retval = 0; } +#endif else { PyErr_SetString( PyExc_TypeError, - "DB associate callback should return DB_DONOTINDEX or string."); +#if (PY_VERSION_HEX < 0x03000000) +"DB associate callback should return DB_DONOTINDEX/string/list of strings."); +#else +"DB associate callback should return DB_DONOTINDEX/bytes/list of bytes."); +#endif PyErr_Print(); } @@ -1439,29 +1567,18 @@ DB_associate(DBObject* self, PyObject* args, PyObject* kwargs) int err, flags=0; DBObject* secondaryDB; PyObject* callback; -#if (DBVER >= 41) PyObject *txnobj = NULL; DB_TXN *txn = NULL; static char* kwnames[] = {"secondaryDB", "callback", "flags", "txn", NULL}; -#else - static char* kwnames[] = {"secondaryDB", "callback", "flags", NULL}; -#endif -#if (DBVER >= 41) if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|iO:associate", kwnames, &secondaryDB, &callback, &flags, &txnobj)) { -#else - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|i:associate", kwnames, - &secondaryDB, &callback, &flags)) { -#endif return NULL; } -#if (DBVER >= 41) if (!checkTxnObj(txnobj, &txn)) return NULL; -#endif CHECK_DB_NOT_CLOSED(self); if (!DBObject_Check(secondaryDB)) { @@ -1497,18 +1614,11 @@ DB_associate(DBObject* self, PyObject* args, PyObject* kwargs) PyEval_InitThreads(); #endif MYDB_BEGIN_ALLOW_THREADS; -#if (DBVER >= 41) err = self->db->associate(self->db, - txn, + txn, secondaryDB->db, _db_associateCallback, flags); -#else - err = self->db->associate(self->db, - secondaryDB->db, - _db_associateCallback, - flags); -#endif MYDB_END_ALLOW_THREADS; if (err) { @@ -1617,7 +1727,7 @@ _DB_consume(DBObject* self, PyObject* args, PyObject* kwargs, int consume_flag) MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->moduleFlags.getReturnsNone) { + && self->moduleFlags.getReturnsNone) { err = 0; Py_INCREF(Py_None); retval = Py_None; @@ -1701,6 +1811,64 @@ DB_delete(DBObject* self, PyObject* args, PyObject* kwargs) } +#if (DBVER >= 47) +/* +** This function is available since Berkeley DB 4.4, +** but 4.6 version is so buggy that we only support +** it from BDB 4.7 and newer. +*/ +static PyObject* +DB_compact(DBObject* self, PyObject* args, PyObject* kwargs) +{ + PyObject* txnobj = NULL; + PyObject *startobj = NULL, *stopobj = NULL; + int flags = 0; + DB_TXN *txn = NULL; + DBT *start_p = NULL, *stop_p = NULL; + DBT start, stop; + int err; + DB_COMPACT c_data = { 0 }; + static char* kwnames[] = { "txn", "start", "stop", "flags", + "compact_fillpercent", "compact_pages", + "compact_timeout", NULL }; + + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOOiiiI:compact", kwnames, + &txnobj, &startobj, &stopobj, &flags, + &c_data.compact_fillpercent, + &c_data.compact_pages, + &c_data.compact_timeout)) + return NULL; + + CHECK_DB_NOT_CLOSED(self); + if (!checkTxnObj(txnobj, &txn)) { + return NULL; + } + + if (startobj && make_key_dbt(self, startobj, &start, NULL)) { + start_p = &start; + } + if (stopobj && make_key_dbt(self, stopobj, &stop, NULL)) { + stop_p = &stop; + } + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->compact(self->db, txn, start_p, stop_p, &c_data, + flags, NULL); + MYDB_END_ALLOW_THREADS; + + if (startobj) + FREE_DBT(start); + if (stopobj) + FREE_DBT(stop); + + RETURN_IF_ERR(); + + return PyLong_FromUnsignedLong(c_data.compact_pages_truncated); +} +#endif + + static PyObject* DB_fd(DBObject* self) { @@ -1716,6 +1884,55 @@ DB_fd(DBObject* self) } +#if (DBVER >= 46) +static PyObject* +DB_exists(DBObject* self, PyObject* args, PyObject* kwargs) +{ + int err, flags=0; + PyObject* txnobj = NULL; + PyObject* keyobj; + DBT key; + DB_TXN *txn; + + static char* kwnames[] = {"key", "txn", "flags", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|Oi:exists", kwnames, + &keyobj, &txnobj, &flags)) + return NULL; + + CHECK_DB_NOT_CLOSED(self); + if (!make_key_dbt(self, keyobj, &key, NULL)) + return NULL; + if (!checkTxnObj(txnobj, &txn)) { + FREE_DBT(key); + return NULL; + } + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->exists(self->db, txn, &key, flags); + MYDB_END_ALLOW_THREADS; + + FREE_DBT(key); + + if (!err) { + Py_INCREF(Py_True); + return Py_True; + } + if ((err == DB_NOTFOUND || err == DB_KEYEMPTY)) { + Py_INCREF(Py_False); + return Py_False; + } + + /* + ** If we reach there, there was an error. The + ** "return" should be unreachable. + */ + RETURN_IF_ERR(); + assert(0); /* This coude SHOULD be unreachable */ + return NULL; +} +#endif + static PyObject* DB_get(DBObject* self, PyObject* args, PyObject* kwargs) { @@ -1764,7 +1981,7 @@ DB_get(DBObject* self, PyObject* args, PyObject* kwargs) retval = dfltobj; } else if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->moduleFlags.getReturnsNone) { + && self->moduleFlags.getReturnsNone) { err = 0; Py_INCREF(Py_None); retval = Py_None; @@ -1833,7 +2050,7 @@ DB_pget(DBObject* self, PyObject* args, PyObject* kwargs) retval = dfltobj; } else if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->moduleFlags.getReturnsNone) { + && self->moduleFlags.getReturnsNone) { err = 0; Py_INCREF(Py_None); retval = Py_None; @@ -1968,7 +2185,7 @@ DB_get_both(DBObject* self, PyObject* args, PyObject* kwargs) MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->moduleFlags.getReturnsNone) { + && self->moduleFlags.getReturnsNone) { err = 0; Py_INCREF(Py_None); retval = Py_None; @@ -2042,8 +2259,8 @@ DB_join(DBObject* self, PyObject* args) length = PyObject_Length(cursorsObj); cursors = malloc((length+1) * sizeof(DBC*)); if (!cursors) { - PyErr_NoMemory(); - return NULL; + PyErr_NoMemory(); + return NULL; } cursors[length] = NULL; @@ -2114,7 +2331,6 @@ DB_open(DBObject* self, PyObject* args, PyObject* kwargs) int err, type = DB_UNKNOWN, flags=0, mode=0660; char* filename = NULL; char* dbname = NULL; -#if (DBVER >= 41) PyObject *txnobj = NULL; DB_TXN *txn = NULL; /* with dbname */ @@ -2123,45 +2339,22 @@ DB_open(DBObject* self, PyObject* args, PyObject* kwargs) /* without dbname */ static char* kwnames_basic[] = { "filename", "dbtype", "flags", "mode", "txn", NULL}; -#else - /* with dbname */ - static char* kwnames[] = { - "filename", "dbname", "dbtype", "flags", "mode", NULL}; - /* without dbname */ - static char* kwnames_basic[] = { - "filename", "dbtype", "flags", "mode", NULL}; -#endif -#if (DBVER >= 41) if (!PyArg_ParseTupleAndKeywords(args, kwargs, "z|ziiiO:open", kwnames, - &filename, &dbname, &type, &flags, &mode, + &filename, &dbname, &type, &flags, &mode, &txnobj)) -#else - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "z|ziii:open", kwnames, - &filename, &dbname, &type, &flags, - &mode)) -#endif { - PyErr_Clear(); - type = DB_UNKNOWN; flags = 0; mode = 0660; - filename = NULL; dbname = NULL; -#if (DBVER >= 41) - if (!PyArg_ParseTupleAndKeywords(args, kwargs,"z|iiiO:open", + PyErr_Clear(); + type = DB_UNKNOWN; flags = 0; mode = 0660; + filename = NULL; dbname = NULL; + if (!PyArg_ParseTupleAndKeywords(args, kwargs,"z|iiiO:open", kwnames_basic, - &filename, &type, &flags, &mode, + &filename, &type, &flags, &mode, &txnobj)) - return NULL; -#else - if (!PyArg_ParseTupleAndKeywords(args, kwargs,"z|iii:open", - kwnames_basic, - &filename, &type, &flags, &mode)) - return NULL; -#endif + return NULL; } -#if (DBVER >= 41) if (!checkTxnObj(txnobj, &txn)) return NULL; -#endif if (NULL == self->db) { PyObject *t = Py_BuildValue("(is)", 0, @@ -2173,24 +2366,17 @@ DB_open(DBObject* self, PyObject* args, PyObject* kwargs) return NULL; } -#if (DBVER >= 41) if (txn) { /* Can't use 'txnobj' because could be 'txnobj==Py_None' */ INSERT_IN_DOUBLE_LINKED_LIST_TXN(((DBTxnObject *)txnobj)->children_dbs,self); self->txn=(DBTxnObject *)txnobj; } else { self->txn=NULL; } -#else - self->txn=NULL; -#endif MYDB_BEGIN_ALLOW_THREADS; -#if (DBVER >= 41) err = self->db->open(self->db, txn, filename, dbname, type, flags, mode); -#else - err = self->db->open(self->db, filename, dbname, type, flags, mode); -#endif MYDB_END_ALLOW_THREADS; + if (makeDBError(err)) { PyObject *dummy; @@ -2319,105 +2505,188 @@ DB_set_private(DBObject* self, PyObject* private_obj) RETURN_NONE(); } - +#if (DBVER >= 46) static PyObject* -DB_set_bt_minkey(DBObject* self, PyObject* args) +DB_set_priority(DBObject* self, PyObject* args) { - int err, minkey; + int err, priority; - if (!PyArg_ParseTuple(args,"i:set_bt_minkey", &minkey )) + if (!PyArg_ParseTuple(args,"i:set_priority", &priority)) return NULL; CHECK_DB_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db->set_bt_minkey(self->db, minkey); + err = self->db->set_priority(self->db, priority); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); RETURN_NONE(); } -static int -_default_cmp(const DBT *leftKey, - const DBT *rightKey) +static PyObject* +DB_get_priority(DBObject* self) { - int res; - int lsize = leftKey->size, rsize = rightKey->size; + int err = 0; + DB_CACHE_PRIORITY priority; - res = memcmp(leftKey->data, rightKey->data, - lsize < rsize ? lsize : rsize); + CHECK_DB_NOT_CLOSED(self); - if (res == 0) { - if (lsize < rsize) { - res = -1; - } - else if (lsize > rsize) { - res = 1; - } - } - return res; + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_priority(self->db, &priority); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(priority); } +#endif -static int -_db_compareCallback(DB* db, - const DBT *leftKey, - const DBT *rightKey) +static PyObject* +DB_set_q_extentsize(DBObject* self, PyObject* args) { - int res = 0; - PyObject *args; - PyObject *result = NULL; - DBObject *self = (DBObject *)db->app_private; + int err; + u_int32_t extentsize; - if (self == NULL || self->btCompareCallback == NULL) { - MYDB_BEGIN_BLOCK_THREADS; - PyErr_SetString(PyExc_TypeError, - (self == 0 - ? "DB_bt_compare db is NULL." - : "DB_bt_compare callback is NULL.")); - /* we're in a callback within the DB code, we can't raise */ - PyErr_Print(); - res = _default_cmp(leftKey, rightKey); - MYDB_END_BLOCK_THREADS; - } else { - MYDB_BEGIN_BLOCK_THREADS; - - args = BuildValue_SS(leftKey->data, leftKey->size, rightKey->data, rightKey->size); - if (args != NULL) { - result = PyEval_CallObject(self->btCompareCallback, args); - } - if (args == NULL || result == NULL) { - /* we're in a callback within the DB code, we can't raise */ - PyErr_Print(); - res = _default_cmp(leftKey, rightKey); - } else if (NUMBER_Check(result)) { - res = NUMBER_AsLong(result); - } else { - PyErr_SetString(PyExc_TypeError, - "DB_bt_compare callback MUST return an int."); - /* we're in a callback within the DB code, we can't raise */ - PyErr_Print(); - res = _default_cmp(leftKey, rightKey); - } - - Py_XDECREF(args); - Py_XDECREF(result); - - MYDB_END_BLOCK_THREADS; - } - return res; + if (!PyArg_ParseTuple(args,"i:set_q_extentsize", &extentsize)) + return NULL; + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->set_q_extentsize(self->db, extentsize); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); } +#if (DBVER >= 42) static PyObject* -DB_set_bt_compare(DBObject* self, PyObject* comparator) +DB_get_q_extentsize(DBObject* self) { - int err; - PyObject *tuple, *result; + int err = 0; + u_int32_t extentsize; CHECK_DB_NOT_CLOSED(self); - if (!PyCallable_Check(comparator)) { - makeTypeError("Callable", comparator); - return NULL; - } + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_q_extentsize(self->db, &extentsize); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(extentsize); +} +#endif + +static PyObject* +DB_set_bt_minkey(DBObject* self, PyObject* args) +{ + int err, minkey; + + if (!PyArg_ParseTuple(args,"i:set_bt_minkey", &minkey)) + return NULL; + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->set_bt_minkey(self->db, minkey); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +#if (DBVER >= 42) +static PyObject* +DB_get_bt_minkey(DBObject* self) +{ + int err; + u_int32_t bt_minkey; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_bt_minkey(self->db, &bt_minkey); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(bt_minkey); +} +#endif + +static int +_default_cmp(const DBT *leftKey, + const DBT *rightKey) +{ + int res; + int lsize = leftKey->size, rsize = rightKey->size; + + res = memcmp(leftKey->data, rightKey->data, + lsize < rsize ? lsize : rsize); + + if (res == 0) { + if (lsize < rsize) { + res = -1; + } + else if (lsize > rsize) { + res = 1; + } + } + return res; +} + +static int +_db_compareCallback(DB* db, + const DBT *leftKey, + const DBT *rightKey) +{ + int res = 0; + PyObject *args; + PyObject *result = NULL; + DBObject *self = (DBObject *)db->app_private; + + if (self == NULL || self->btCompareCallback == NULL) { + MYDB_BEGIN_BLOCK_THREADS; + PyErr_SetString(PyExc_TypeError, + (self == 0 + ? "DB_bt_compare db is NULL." + : "DB_bt_compare callback is NULL.")); + /* we're in a callback within the DB code, we can't raise */ + PyErr_Print(); + res = _default_cmp(leftKey, rightKey); + MYDB_END_BLOCK_THREADS; + } else { + MYDB_BEGIN_BLOCK_THREADS; + + args = BuildValue_SS(leftKey->data, leftKey->size, rightKey->data, rightKey->size); + if (args != NULL) { + result = PyEval_CallObject(self->btCompareCallback, args); + } + if (args == NULL || result == NULL) { + /* we're in a callback within the DB code, we can't raise */ + PyErr_Print(); + res = _default_cmp(leftKey, rightKey); + } else if (NUMBER_Check(result)) { + res = NUMBER_AsLong(result); + } else { + PyErr_SetString(PyExc_TypeError, + "DB_bt_compare callback MUST return an int."); + /* we're in a callback within the DB code, we can't raise */ + PyErr_Print(); + res = _default_cmp(leftKey, rightKey); + } + + Py_XDECREF(args); + Py_XDECREF(result); + + MYDB_END_BLOCK_THREADS; + } + return res; +} + +static PyObject* +DB_set_bt_compare(DBObject* self, PyObject* comparator) +{ + int err; + PyObject *tuple, *result; + + CHECK_DB_NOT_CLOSED(self); + + if (!PyCallable_Check(comparator)) { + makeTypeError("Callable", comparator); + return NULL; + } /* * Perform a test call of the comparator function with two empty @@ -2430,15 +2699,15 @@ DB_set_bt_compare(DBObject* self, PyObject* comparator) if (result == NULL) return NULL; if (!NUMBER_Check(result)) { - Py_DECREF(result); - PyErr_SetString(PyExc_TypeError, - "callback MUST return an int"); - return NULL; + Py_DECREF(result); + PyErr_SetString(PyExc_TypeError, + "callback MUST return an int"); + return NULL; } else if (NUMBER_AsLong(result) != 0) { - Py_DECREF(result); - PyErr_SetString(PyExc_TypeError, - "callback failed to return 0 on two empty strings"); - return NULL; + Py_DECREF(result); + PyErr_SetString(PyExc_TypeError, + "callback failed to return 0 on two empty strings"); + return NULL; } Py_DECREF(result); @@ -2446,8 +2715,8 @@ DB_set_bt_compare(DBObject* self, PyObject* comparator) * simplify the code. This would have no real use, as one cannot * change the function once the db is opened anyway */ if (self->btCompareCallback != NULL) { - PyErr_SetString(PyExc_RuntimeError, "set_bt_compare() cannot be called more than once"); - return NULL; + PyErr_SetString(PyExc_RuntimeError, "set_bt_compare() cannot be called more than once"); + return NULL; } Py_INCREF(comparator); @@ -2462,9 +2731,9 @@ DB_set_bt_compare(DBObject* self, PyObject* comparator) err = self->db->set_bt_compare(self->db, _db_compareCallback); if (err) { - /* restore the old state in case of error */ - Py_DECREF(comparator); - self->btCompareCallback = NULL; + /* restore the old state in case of error */ + Py_DECREF(comparator); + self->btCompareCallback = NULL; } RETURN_IF_ERR(); @@ -2490,6 +2759,25 @@ DB_set_cachesize(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_cachesize(DBObject* self) +{ + int err; + u_int32_t gbytes, bytes; + int ncache; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_cachesize(self->db, &gbytes, &bytes, &ncache); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return Py_BuildValue("(iii)", gbytes, bytes, ncache); +} +#endif static PyObject* DB_set_flags(DBObject* self, PyObject* args) @@ -2509,6 +2797,22 @@ DB_set_flags(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_flags(DBObject* self) +{ + int err; + u_int32_t flags; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_flags(self->db, &flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(flags); +} +#endif static PyObject* DB_set_h_ffactor(DBObject* self, PyObject* args) @@ -2526,6 +2830,22 @@ DB_set_h_ffactor(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_h_ffactor(DBObject* self) +{ + int err; + u_int32_t ffactor; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_h_ffactor(self->db, &ffactor); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(ffactor); +} +#endif static PyObject* DB_set_h_nelem(DBObject* self, PyObject* args) @@ -2543,6 +2863,22 @@ DB_set_h_nelem(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_h_nelem(DBObject* self) +{ + int err; + u_int32_t nelem; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_h_nelem(self->db, &nelem); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(nelem); +} +#endif static PyObject* DB_set_lorder(DBObject* self, PyObject* args) @@ -2560,6 +2896,22 @@ DB_set_lorder(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_lorder(DBObject* self) +{ + int err; + int lorder; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_lorder(self->db, &lorder); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(lorder); +} +#endif static PyObject* DB_set_pagesize(DBObject* self, PyObject* args) @@ -2577,6 +2929,22 @@ DB_set_pagesize(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_pagesize(DBObject* self) +{ + int err; + u_int32_t pagesize; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_pagesize(self->db, &pagesize); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(pagesize); +} +#endif static PyObject* DB_set_re_delim(DBObject* self, PyObject* args) @@ -2599,6 +2967,22 @@ DB_set_re_delim(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_re_delim(DBObject* self) +{ + int err, re_delim; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_re_delim(self->db, &re_delim); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(re_delim); +} +#endif + static PyObject* DB_set_re_len(DBObject* self, PyObject* args) { @@ -2615,6 +2999,22 @@ DB_set_re_len(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_re_len(DBObject* self) +{ + int err; + u_int32_t re_len; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_re_len(self->db, &re_len); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(re_len); +} +#endif static PyObject* DB_set_re_pad(DBObject* self, PyObject* args) @@ -2636,41 +3036,55 @@ DB_set_re_pad(DBObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DB_get_re_pad(DBObject* self) +{ + int err, re_pad; + + CHECK_DB_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_re_pad(self->db, &re_pad); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(re_pad); +} +#endif static PyObject* DB_set_re_source(DBObject* self, PyObject* args) { int err; - char *re_source; + char *source; - if (!PyArg_ParseTuple(args,"s:set_re_source", &re_source)) + if (!PyArg_ParseTuple(args,"s:set_re_source", &source)) return NULL; CHECK_DB_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db->set_re_source(self->db, re_source); + err = self->db->set_re_source(self->db, source); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); RETURN_NONE(); } - +#if (DBVER >= 42) static PyObject* -DB_set_q_extentsize(DBObject* self, PyObject* args) +DB_get_re_source(DBObject* self) { int err; - int extentsize; + const char *source; - if (!PyArg_ParseTuple(args,"i:set_q_extentsize", &extentsize)) - return NULL; CHECK_DB_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db->set_q_extentsize(self->db, extentsize); + err = self->db->get_re_source(self->db, &source); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); - RETURN_NONE(); + return PyBytes_FromString(source); } +#endif static PyObject* DB_stat(DBObject* self, PyObject* args, PyObject* kwargs) @@ -2707,8 +3121,6 @@ DB_stat(DBObject* self, PyObject* args, PyObject* kwargs) MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); - self->haveStat = 1; - /* Turn the stat structure into a dictionary */ type = _DB_get_type(self); if ((type == -1) || ((d = PyDict_New()) == NULL)) { @@ -2730,9 +3142,6 @@ DB_stat(DBObject* self, PyObject* args, PyObject* kwargs) MAKE_HASH_ENTRY(pagecnt); #endif MAKE_HASH_ENTRY(pagesize); -#if (DBVER < 41) - MAKE_HASH_ENTRY(nelem); -#endif MAKE_HASH_ENTRY(ffactor); MAKE_HASH_ENTRY(buckets); MAKE_HASH_ENTRY(free); @@ -2779,9 +3188,7 @@ DB_stat(DBObject* self, PyObject* args, PyObject* kwargs) MAKE_QUEUE_ENTRY(nkeys); MAKE_QUEUE_ENTRY(ndata); MAKE_QUEUE_ENTRY(pagesize); -#if (DBVER >= 41) MAKE_QUEUE_ENTRY(extentsize); -#endif MAKE_QUEUE_ENTRY(pages); MAKE_QUEUE_ENTRY(re_len); MAKE_QUEUE_ENTRY(re_pad); @@ -2807,6 +3214,29 @@ DB_stat(DBObject* self, PyObject* args, PyObject* kwargs) return d; } +#if (DBVER >= 43) +static PyObject* +DB_stat_print(DBObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:stat_print", + kwnames, &flags)) + { + return NULL; + } + CHECK_DB_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->stat_print(self->db, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} +#endif + + static PyObject* DB_sync(DBObject* self, PyObject* args) { @@ -2885,14 +3315,14 @@ DB_verify(DBObject* self, PyObject* args, PyObject* kwargs) CHECK_DB_NOT_CLOSED(self); if (outFileName) outFile = fopen(outFileName, "w"); - /* XXX(nnorwitz): it should probably be an exception if outFile - can't be opened. */ + /* XXX(nnorwitz): it should probably be an exception if outFile + can't be opened. */ { /* DB.verify acts as a DB handle destructor (like close) */ PyObject *error; error=DB_close_internal(self, 0, 1); - if (error ) { + if (error) { return error; } } @@ -2930,7 +3360,6 @@ DB_set_get_returns_none(DBObject* self, PyObject* args) return NUMBER_FromLong(oldValue); } -#if (DBVER >= 41) static PyObject* DB_set_encrypt(DBObject* self, PyObject* args, PyObject* kwargs) { @@ -2940,8 +3369,8 @@ DB_set_encrypt(DBObject* self, PyObject* args, PyObject* kwargs) static char* kwnames[] = { "passwd", "flags", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i:set_encrypt", kwnames, - &passwd, &flags)) { - return NULL; + &passwd, &flags)) { + return NULL; } MYDB_BEGIN_ALLOW_THREADS; @@ -2951,7 +3380,24 @@ DB_set_encrypt(DBObject* self, PyObject* args, PyObject* kwargs) RETURN_IF_ERR(); RETURN_NONE(); } -#endif /* DBVER >= 41 */ + +#if (DBVER >= 42) +static PyObject* +DB_get_encrypt_flags(DBObject* self) +{ + int err; + u_int32_t flags; + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get_encrypt_flags(self->db, &flags); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return NUMBER_FromLong(flags); +} +#endif + /*-------------------------------------------------------------- */ @@ -2961,7 +3407,6 @@ Py_ssize_t DB_length(PyObject* _self) { int err; Py_ssize_t size = 0; - int flags = 0; void* sp; DBObject* self = (DBObject*)_self; @@ -2974,41 +3419,21 @@ Py_ssize_t DB_length(PyObject* _self) return -1; } - if (self->haveStat) { /* Has the stat function been called recently? If - so, we can use the cached value. */ - flags = DB_FAST_STAT; - } - MYDB_BEGIN_ALLOW_THREADS; -redo_stat_for_length: #if (DBVER >= 43) - err = self->db->stat(self->db, /*txnid*/ NULL, &sp, flags); + err = self->db->stat(self->db, /*txnid*/ NULL, &sp, 0); #else - err = self->db->stat(self->db, &sp, flags); + err = self->db->stat(self->db, &sp, 0); #endif + MYDB_END_ALLOW_THREADS; /* All the stat structures have matching fields upto the ndata field, so we can use any of them for the type cast */ size = ((DB_BTREE_STAT*)sp)->bt_ndata; - /* A size of 0 could mean that Berkeley DB no longer had the stat values cached. - * redo a full stat to make sure. - * Fixes SF python bug 1493322, pybsddb bug 1184012 - */ - if (size == 0 && (flags & DB_FAST_STAT)) { - flags = 0; - if (!err) - free(sp); - goto redo_stat_for_length; - } - - MYDB_END_ALLOW_THREADS; - if (err) return -1; - self->haveStat = 1; - free(sp); return size; } @@ -3097,18 +3522,11 @@ DB_ass_sub(DBObject* self, PyObject* keyobj, PyObject* dataobj) static PyObject* -DB_has_key(DBObject* self, PyObject* args, PyObject* kwargs) +_DB_has_key(DBObject* self, PyObject* keyobj, PyObject* txnobj) { int err; - PyObject* keyobj; - DBT key, data; - PyObject* txnobj = NULL; + DBT key; DB_TXN *txn = NULL; - static char* kwnames[] = {"key","txn", NULL}; - - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:has_key", kwnames, - &keyobj, &txnobj)) - return NULL; CHECK_DB_NOT_CLOSED(self); if (!make_key_dbt(self, keyobj, &key, NULL)) @@ -3118,28 +3536,77 @@ DB_has_key(DBObject* self, PyObject* args, PyObject* kwargs) return NULL; } +#if (DBVER < 46) /* This causes DB_BUFFER_SMALL to be returned when the db has the key because it has a record but can't allocate a buffer for the data. This saves having to deal with data we won't be using. */ - CLEAR_DBT(data); - data.flags = DB_DBT_USERMEM; + { + DBT data ; + CLEAR_DBT(data); + data.flags = DB_DBT_USERMEM; + MYDB_BEGIN_ALLOW_THREADS; + err = self->db->get(self->db, txn, &key, &data, 0); + MYDB_END_ALLOW_THREADS; + } +#else MYDB_BEGIN_ALLOW_THREADS; - err = self->db->get(self->db, txn, &key, &data, 0); + err = self->db->exists(self->db, txn, &key, 0); MYDB_END_ALLOW_THREADS; +#endif + FREE_DBT(key); + /* + ** DB_BUFFER_SMALL is only used if we use "get". + ** We can drop it when we only use "exists", + ** when we drop suport for Berkeley DB < 4.6. + */ if (err == DB_BUFFER_SMALL || err == 0) { - return NUMBER_FromLong(1); + Py_INCREF(Py_True); + return Py_True; } else if (err == DB_NOTFOUND || err == DB_KEYEMPTY) { - return NUMBER_FromLong(0); + Py_INCREF(Py_False); + return Py_False; } makeDBError(err); return NULL; } +static PyObject* +DB_has_key(DBObject* self, PyObject* args, PyObject* kwargs) +{ + PyObject* keyobj; + PyObject* txnobj = NULL; + static char* kwnames[] = {"key","txn", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:has_key", kwnames, + &keyobj, &txnobj)) + return NULL; + + return _DB_has_key(self, keyobj, txnobj); +} + + +static int DB_contains(DBObject* self, PyObject* keyobj) +{ + PyObject* result; + int result2 = 0; + + result = _DB_has_key(self, keyobj, NULL) ; + if (result == NULL) { + return -1; /* Propague exception */ + } + if (result != Py_False) { + result2 = 1; + } + + Py_DECREF(result); + return result2; +} + #define _KEYS_LIST 1 #define _VALUES_LIST 2 @@ -3292,6 +3759,116 @@ DB_values(DBObject* self, PyObject* args) return _DB_make_list(self, txn, _VALUES_LIST); } +/* --------------------------------------------------------------------- */ +/* DBLogCursor methods */ + + +static PyObject* +DBLogCursor_close_internal(DBLogCursorObject* self) +{ + int err = 0; + + if (self->logc != NULL) { + EXTRACT_FROM_DOUBLE_LINKED_LIST(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->logc->close(self->logc, 0); + MYDB_END_ALLOW_THREADS; + self->logc = NULL; + } + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBLogCursor_close(DBLogCursorObject* self) +{ + return DBLogCursor_close_internal(self); +} + + +static PyObject* +_DBLogCursor_get(DBLogCursorObject* self, int flag, DB_LSN *lsn2) +{ + int err; + DBT data; + DB_LSN lsn = {0, 0}; + PyObject *dummy, *retval; + + CLEAR_DBT(data); + data.flags = DB_DBT_MALLOC; /* Berkeley DB must do the malloc */ + + CHECK_LOGCURSOR_NOT_CLOSED(self); + + if (lsn2) + lsn = *lsn2; + + MYDB_BEGIN_ALLOW_THREADS; + err = self->logc->get(self->logc, &lsn, &data, flag); + MYDB_END_ALLOW_THREADS; + + if (err == DB_NOTFOUND) { + Py_INCREF(Py_None); + retval = Py_None; + } + else if (makeDBError(err)) { + retval = NULL; + } + else { + retval = dummy = BuildValue_S(data.data, data.size); + if (dummy) { + retval = Py_BuildValue("(ii)O", lsn.file, lsn.offset, dummy); + Py_DECREF(dummy); + } + } + + FREE_DBT(data); + return retval; +} + +static PyObject* +DBLogCursor_current(DBLogCursorObject* self) +{ + return _DBLogCursor_get(self, DB_CURRENT, NULL); +} + +static PyObject* +DBLogCursor_first(DBLogCursorObject* self) +{ + return _DBLogCursor_get(self, DB_FIRST, NULL); +} + +static PyObject* +DBLogCursor_last(DBLogCursorObject* self) +{ + return _DBLogCursor_get(self, DB_LAST, NULL); +} + +static PyObject* +DBLogCursor_next(DBLogCursorObject* self) +{ + return _DBLogCursor_get(self, DB_NEXT, NULL); +} + +static PyObject* +DBLogCursor_prev(DBLogCursorObject* self) +{ + return _DBLogCursor_get(self, DB_PREV, NULL); +} + +static PyObject* +DBLogCursor_set(DBLogCursorObject* self, PyObject* args) +{ + DB_LSN lsn; + + if (!PyArg_ParseTuple(args, "(ii):set", &lsn.file, &lsn.offset)) + return NULL; + + return _DBLogCursor_get(self, DB_SET, &lsn); +} + + + /* --------------------------------------------------------------------- */ /* DBCursor methods */ @@ -3367,7 +3944,6 @@ DBC_delete(DBCursorObject* self, PyObject* args) MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); - self->mydb->haveStat = 0; RETURN_NONE(); } @@ -3414,12 +3990,12 @@ DBC_get(DBCursorObject* self, PyObject* args, PyObject *kwargs) CLEAR_DBT(key); CLEAR_DBT(data); if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|ii:get", &kwnames[2], - &flags, &dlen, &doff)) + &flags, &dlen, &doff)) { PyErr_Clear(); if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi|ii:get", &kwnames[1], - &keyobj, &flags, &dlen, &doff)) + &keyobj, &flags, &dlen, &doff)) { PyErr_Clear(); if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOi|ii:get", @@ -3427,8 +4003,8 @@ DBC_get(DBCursorObject* self, PyObject* args, PyObject *kwargs) &flags, &dlen, &doff)) { return NULL; - } - } + } + } } CHECK_CURSOR_NOT_CLOSED(self); @@ -3447,7 +4023,7 @@ DBC_get(DBCursorObject* self, PyObject* args, PyObject *kwargs) MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->mydb->moduleFlags.getReturnsNone) { + && self->mydb->moduleFlags.getReturnsNone) { Py_INCREF(Py_None); retval = Py_None; } @@ -3490,12 +4066,12 @@ DBC_pget(DBCursorObject* self, PyObject* args, PyObject *kwargs) CLEAR_DBT(key); CLEAR_DBT(data); if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|ii:pget", &kwnames[2], - &flags, &dlen, &doff)) + &flags, &dlen, &doff)) { PyErr_Clear(); if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi|ii:pget", - kwnames_keyOnly, - &keyobj, &flags, &dlen, &doff)) + kwnames_keyOnly, + &keyobj, &flags, &dlen, &doff)) { PyErr_Clear(); if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOi|ii:pget", @@ -3503,8 +4079,8 @@ DBC_pget(DBCursorObject* self, PyObject* args, PyObject *kwargs) &flags, &dlen, &doff)) { return NULL; - } - } + } + } } CHECK_CURSOR_NOT_CLOSED(self); @@ -3525,7 +4101,7 @@ DBC_pget(DBCursorObject* self, PyObject* args, PyObject *kwargs) MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->mydb->moduleFlags.getReturnsNone) { + && self->mydb->moduleFlags.getReturnsNone) { Py_INCREF(Py_None); retval = Py_None; } @@ -3636,7 +4212,7 @@ DBC_put(DBCursorObject* self, PyObject* args, PyObject* kwargs) int doff = -1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|iii:put", kwnames, - &keyobj, &dataobj, &flags, &dlen, &doff)) + &keyobj, &dataobj, &flags, &dlen, &doff)) return NULL; CHECK_CURSOR_NOT_CLOSED(self); @@ -3655,7 +4231,6 @@ DBC_put(DBCursorObject* self, PyObject* args, PyObject* kwargs) MYDB_END_ALLOW_THREADS; FREE_DBT(key); /* 'make_key_dbt' could do a 'malloc' */ RETURN_IF_ERR(); - self->mydb->haveStat = 0; RETURN_NONE(); } @@ -3671,7 +4246,7 @@ DBC_set(DBCursorObject* self, PyObject* args, PyObject *kwargs) int doff = -1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|iii:set", kwnames, - &keyobj, &flags, &dlen, &doff)) + &keyobj, &flags, &dlen, &doff)) return NULL; CHECK_CURSOR_NOT_CLOSED(self); @@ -3689,7 +4264,7 @@ DBC_set(DBCursorObject* self, PyObject* args, PyObject *kwargs) err = _DBC_get(self->dbc, &key, &data, flags|DB_SET); MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->mydb->moduleFlags.cursorSetReturnsNone) { + && self->mydb->moduleFlags.cursorSetReturnsNone) { Py_INCREF(Py_None); retval = Py_None; } @@ -3734,7 +4309,7 @@ DBC_set_range(DBCursorObject* self, PyObject* args, PyObject* kwargs) int doff = -1; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|iii:set_range", kwnames, - &keyobj, &flags, &dlen, &doff)) + &keyobj, &flags, &dlen, &doff)) return NULL; CHECK_CURSOR_NOT_CLOSED(self); @@ -3751,7 +4326,7 @@ DBC_set_range(DBCursorObject* self, PyObject* args, PyObject* kwargs) err = _DBC_get(self->dbc, &key, &data, flags|DB_SET_RANGE); MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->mydb->moduleFlags.cursorSetReturnsNone) { + && self->mydb->moduleFlags.cursorSetReturnsNone) { Py_INCREF(Py_None); retval = Py_None; } @@ -3905,7 +4480,7 @@ DBC_set_recno(DBCursorObject* self, PyObject* args, PyObject *kwargs) static char* kwnames[] = { "recno","flags", "dlen", "doff", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|iii:set_recno", kwnames, - &irecno, &flags, &dlen, &doff)) + &irecno, &flags, &dlen, &doff)) return NULL; CHECK_CURSOR_NOT_CLOSED(self); @@ -3934,7 +4509,7 @@ DBC_set_recno(DBCursorObject* self, PyObject* args, PyObject *kwargs) err = _DBC_get(self->dbc, &key, &data, flags|DB_SET_RECNO); MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->mydb->moduleFlags.cursorSetReturnsNone) { + && self->mydb->moduleFlags.cursorSetReturnsNone) { Py_INCREF(Py_None); retval = Py_None; } @@ -3970,6 +4545,13 @@ DBC_next_nodup(DBCursorObject* self, PyObject* args, PyObject *kwargs) return _DBCursor_get(self,DB_NEXT_NODUP,args,kwargs,"|iii:next_nodup"); } +#if (DBVER >= 46) +static PyObject* +DBC_prev_dup(DBCursorObject* self, PyObject* args, PyObject *kwargs) +{ + return _DBCursor_get(self,DB_PREV_DUP,args,kwargs,"|iii:prev_dup"); +} +#endif static PyObject* DBC_prev_nodup(DBCursorObject* self, PyObject* args, PyObject *kwargs) @@ -3997,7 +4579,7 @@ DBC_join_item(DBCursorObject* self, PyObject* args) err = _DBC_get(self->dbc, &key, &data, flags | DB_JOIN_ITEM); MYDB_END_ALLOW_THREADS; if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) - && self->mydb->moduleFlags.getReturnsNone) { + && self->mydb->moduleFlags.getReturnsNone) { Py_INCREF(Py_None); retval = Py_None; } @@ -4012,6 +4594,44 @@ DBC_join_item(DBCursorObject* self, PyObject* args) } +#if (DBVER >= 46) +static PyObject* +DBC_set_priority(DBCursorObject* self, PyObject* args, PyObject* kwargs) +{ + int err, priority; + static char* kwnames[] = { "priority", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:set_priority", kwnames, + &priority)) + return NULL; + + CHECK_CURSOR_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->dbc->set_priority(self->dbc, priority); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + + +static PyObject* +DBC_get_priority(DBCursorObject* self) +{ + int err; + DB_CACHE_PRIORITY priority; + + CHECK_CURSOR_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->dbc->get_priority(self->dbc, &priority); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(priority); +} +#endif + + /* --------------------------------------------------------------------- */ /* DBEnv methods */ @@ -4025,12 +4645,16 @@ DBEnv_close_internal(DBEnvObject* self, int flags) if (!self->closed) { /* Don't close more than once */ while(self->children_txns) { - dummy=DBTxn_abort_discard_internal(self->children_txns,0); - Py_XDECREF(dummy); + dummy = DBTxn_abort_discard_internal(self->children_txns, 0); + Py_XDECREF(dummy); } while(self->children_dbs) { - dummy=DB_close_internal(self->children_dbs, 0, 0); - Py_XDECREF(dummy); + dummy = DB_close_internal(self->children_dbs, 0, 0); + Py_XDECREF(dummy); + } + while(self->children_logcursors) { + dummy = DBLogCursor_close_internal(self->children_logcursors); + Py_XDECREF(dummy); } } @@ -4080,209 +4704,798 @@ DBEnv_open(DBEnvObject* self, PyObject* args) static PyObject* -DBEnv_remove(DBEnvObject* self, PyObject* args) +DBEnv_memp_stat(DBEnvObject* self, PyObject* args, PyObject *kwargs) { - int err, flags=0; - char *db_home; + int err; + DB_MPOOL_STAT *gsp; + DB_MPOOL_FSTAT **fsp, **fsp2; + PyObject* d = NULL, *d2, *d3, *r; + u_int32_t flags = 0; + static char* kwnames[] = { "flags", NULL }; - if (!PyArg_ParseTuple(args, "s|i:remove", &db_home, &flags)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:memp_stat", + kwnames, &flags)) return NULL; + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->remove(self->db_env, db_home, flags); + err = self->db_env->memp_stat(self->db_env, &gsp, &fsp, flags); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); - RETURN_NONE(); + + /* Turn the stat structure into a dictionary */ + d = PyDict_New(); + if (d == NULL) { + if (gsp) + free(gsp); + return NULL; + } + +#define MAKE_ENTRY(name) _addIntToDict(d, #name, gsp->st_##name) + + MAKE_ENTRY(gbytes); + MAKE_ENTRY(ncache); +#if (DBVER >= 46) + MAKE_ENTRY(max_ncache); +#endif + MAKE_ENTRY(regsize); +#if (DBVER >= 43) + MAKE_ENTRY(mmapsize); + MAKE_ENTRY(maxopenfd); + MAKE_ENTRY(maxwrite); + MAKE_ENTRY(maxwrite_sleep); +#endif + MAKE_ENTRY(map); + MAKE_ENTRY(cache_hit); + MAKE_ENTRY(cache_miss); + MAKE_ENTRY(page_create); + MAKE_ENTRY(page_in); + MAKE_ENTRY(page_out); + MAKE_ENTRY(ro_evict); + MAKE_ENTRY(rw_evict); + MAKE_ENTRY(page_trickle); + MAKE_ENTRY(pages); + MAKE_ENTRY(page_clean); + MAKE_ENTRY(page_dirty); + MAKE_ENTRY(hash_buckets); + MAKE_ENTRY(hash_searches); + MAKE_ENTRY(hash_longest); + MAKE_ENTRY(hash_examined); + MAKE_ENTRY(hash_nowait); + MAKE_ENTRY(hash_wait); +#if (DBVER >= 45) + MAKE_ENTRY(hash_max_nowait); +#endif + MAKE_ENTRY(hash_max_wait); + MAKE_ENTRY(region_wait); + MAKE_ENTRY(region_nowait); +#if (DBVER >= 45) + MAKE_ENTRY(mvcc_frozen); + MAKE_ENTRY(mvcc_thawed); + MAKE_ENTRY(mvcc_freed); +#endif + MAKE_ENTRY(alloc); + MAKE_ENTRY(alloc_buckets); + MAKE_ENTRY(alloc_max_buckets); + MAKE_ENTRY(alloc_pages); + MAKE_ENTRY(alloc_max_pages); +#if (DBVER >= 45) + MAKE_ENTRY(io_wait); +#endif +#if (DBVER >= 48) + MAKE_ENTRY(sync_interrupted); +#endif + +#undef MAKE_ENTRY + free(gsp); + + d2 = PyDict_New(); + if (d2 == NULL) { + Py_DECREF(d); + if (fsp) + free(fsp); + return NULL; + } +#define MAKE_ENTRY(name) _addIntToDict(d3, #name, (*fsp2)->st_##name) + for(fsp2=fsp;*fsp2; fsp2++) { + d3 = PyDict_New(); + if (d3 == NULL) { + Py_DECREF(d); + Py_DECREF(d2); + if (fsp) + free(fsp); + return NULL; + } + MAKE_ENTRY(pagesize); + MAKE_ENTRY(cache_hit); + MAKE_ENTRY(cache_miss); + MAKE_ENTRY(map); + MAKE_ENTRY(page_create); + MAKE_ENTRY(page_in); + MAKE_ENTRY(page_out); + if(PyDict_SetItemString(d2, (*fsp2)->file_name, d3)) { + Py_DECREF(d); + Py_DECREF(d2); + Py_DECREF(d3); + if (fsp) + free(fsp); + return NULL; + } + Py_DECREF(d3); + } + +#undef MAKE_ENTRY + free(fsp); + + r = Py_BuildValue("(OO)", d, d2); + Py_DECREF(d); + Py_DECREF(d2); + return r; } -#if (DBVER >= 41) +#if (DBVER >= 43) static PyObject* -DBEnv_dbremove(DBEnvObject* self, PyObject* args, PyObject* kwargs) +DBEnv_memp_stat_print(DBEnvObject* self, PyObject* args, PyObject *kwargs) { int err; - u_int32_t flags=0; - char *file = NULL; - char *database = NULL; - PyObject *txnobj = NULL; - DB_TXN *txn = NULL; - static char* kwnames[] = { "file", "database", "txn", "flags", - NULL }; + int flags=0; + static char* kwnames[] = { "flags", NULL }; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|zOi:dbremove", kwnames, - &file, &database, &txnobj, &flags)) { - return NULL; - } - if (!checkTxnObj(txnobj, &txn)) { + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:memp_stat_print", + kwnames, &flags)) + { return NULL; } CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->dbremove(self->db_env, txn, file, database, flags); + err = self->db_env->memp_stat_print(self->db_env, flags); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); RETURN_NONE(); } +#endif + static PyObject* -DBEnv_dbrename(DBEnvObject* self, PyObject* args, PyObject* kwargs) +DBEnv_memp_trickle(DBEnvObject* self, PyObject* args) { - int err; - u_int32_t flags=0; - char *file = NULL; - char *database = NULL; - char *newname = NULL; - PyObject *txnobj = NULL; - DB_TXN *txn = NULL; - static char* kwnames[] = { "file", "database", "newname", "txn", - "flags", NULL }; + int err, percent, nwrotep; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "szs|Oi:dbrename", kwnames, - &file, &database, &newname, &txnobj, &flags)) { - return NULL; - } - if (!checkTxnObj(txnobj, &txn)) { + if (!PyArg_ParseTuple(args, "i:memp_trickle", &percent)) return NULL; - } CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->dbrename(self->db_env, txn, file, database, newname, - flags); + err = self->db_env->memp_trickle(self->db_env, percent, &nwrotep); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); - RETURN_NONE(); + return NUMBER_FromLong(nwrotep); } static PyObject* -DBEnv_set_encrypt(DBEnvObject* self, PyObject* args, PyObject* kwargs) +DBEnv_memp_sync(DBEnvObject* self, PyObject* args) { int err; - u_int32_t flags=0; - char *passwd = NULL; + DB_LSN lsn = {0, 0}; + DB_LSN *lsn_p = NULL; + + if (!PyArg_ParseTuple(args, "|(ii):memp_sync", &lsn.file, &lsn.offset)) + return NULL; + if ((lsn.file!=0) || (lsn.offset!=0)) { + lsn_p = &lsn; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->memp_sync(self->db_env, lsn_p); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_remove(DBEnvObject* self, PyObject* args) +{ + int err, flags=0; + char *db_home; + + if (!PyArg_ParseTuple(args, "s|i:remove", &db_home, &flags)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->remove(self->db_env, db_home, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_dbremove(DBEnvObject* self, PyObject* args, PyObject* kwargs) +{ + int err; + u_int32_t flags=0; + char *file = NULL; + char *database = NULL; + PyObject *txnobj = NULL; + DB_TXN *txn = NULL; + static char* kwnames[] = { "file", "database", "txn", "flags", + NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|zOi:dbremove", kwnames, + &file, &database, &txnobj, &flags)) { + return NULL; + } + if (!checkTxnObj(txnobj, &txn)) { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->dbremove(self->db_env, txn, file, database, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_dbrename(DBEnvObject* self, PyObject* args, PyObject* kwargs) +{ + int err; + u_int32_t flags=0; + char *file = NULL; + char *database = NULL; + char *newname = NULL; + PyObject *txnobj = NULL; + DB_TXN *txn = NULL; + static char* kwnames[] = { "file", "database", "newname", "txn", + "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "szs|Oi:dbrename", kwnames, + &file, &database, &newname, &txnobj, &flags)) { + return NULL; + } + if (!checkTxnObj(txnobj, &txn)) { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->dbrename(self->db_env, txn, file, database, newname, + flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + + + +static PyObject* +DBEnv_set_encrypt(DBEnvObject* self, PyObject* args, PyObject* kwargs) +{ + int err; + u_int32_t flags=0; + char *passwd = NULL; static char* kwnames[] = { "passwd", "flags", NULL }; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i:set_encrypt", kwnames, - &passwd, &flags)) { - return NULL; - } + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|i:set_encrypt", kwnames, + &passwd, &flags)) { + return NULL; + } + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_encrypt(self->db_env, passwd, flags); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + RETURN_NONE(); +} + +#if (DBVER >= 42) +static PyObject* +DBEnv_get_encrypt_flags(DBEnvObject* self) +{ + int err; + u_int32_t flags; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_encrypt_flags(self->db_env, &flags); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return NUMBER_FromLong(flags); +} + +static PyObject* +DBEnv_get_timeout(DBEnvObject* self, PyObject* args, PyObject* kwargs) +{ + int err; + int flag; + u_int32_t timeout; + static char* kwnames[] = {"flag", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:get_timeout", kwnames, + &flag)) { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_timeout(self->db_env, &timeout, flag); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(timeout); +} +#endif + + +static PyObject* +DBEnv_set_timeout(DBEnvObject* self, PyObject* args, PyObject* kwargs) +{ + int err; + u_int32_t flags=0; + u_int32_t timeout = 0; + static char* kwnames[] = { "timeout", "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:set_timeout", kwnames, + &timeout, &flags)) { + return NULL; + } + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_timeout(self->db_env, (db_timeout_t)timeout, flags); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_set_shm_key(DBEnvObject* self, PyObject* args) +{ + int err; + long shm_key = 0; + + if (!PyArg_ParseTuple(args, "l:set_shm_key", &shm_key)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + err = self->db_env->set_shm_key(self->db_env, shm_key); + RETURN_IF_ERR(); + RETURN_NONE(); +} + +#if (DBVER >= 42) +static PyObject* +DBEnv_get_shm_key(DBEnvObject* self) +{ + int err; + long shm_key; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_shm_key(self->db_env, &shm_key); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return NUMBER_FromLong(shm_key); +} +#endif + +#if (DBVER >= 46) +static PyObject* +DBEnv_set_cache_max(DBEnvObject* self, PyObject* args) +{ + int err, gbytes, bytes; + + if (!PyArg_ParseTuple(args, "ii:set_cache_max", + &gbytes, &bytes)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_cache_max(self->db_env, gbytes, bytes); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_get_cache_max(DBEnvObject* self) +{ + int err; + u_int32_t gbytes, bytes; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_cache_max(self->db_env, &gbytes, &bytes); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return Py_BuildValue("(ii)", gbytes, bytes); +} +#endif + +#if (DBVER >= 46) +static PyObject* +DBEnv_set_thread_count(DBEnvObject* self, PyObject* args) +{ + int err; + u_int32_t count; + + if (!PyArg_ParseTuple(args, "i:set_thread_count", &count)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_thread_count(self->db_env, count); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_get_thread_count(DBEnvObject* self) +{ + int err; + u_int32_t count; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_thread_count(self->db_env, &count); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(count); +} +#endif + +static PyObject* +DBEnv_set_cachesize(DBEnvObject* self, PyObject* args) +{ + int err, gbytes=0, bytes=0, ncache=0; + + if (!PyArg_ParseTuple(args, "ii|i:set_cachesize", + &gbytes, &bytes, &ncache)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_cachesize(self->db_env, gbytes, bytes, ncache); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +#if (DBVER >= 42) +static PyObject* +DBEnv_get_cachesize(DBEnvObject* self) +{ + int err; + u_int32_t gbytes, bytes; + int ncache; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_cachesize(self->db_env, &gbytes, &bytes, &ncache); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return Py_BuildValue("(iii)", gbytes, bytes, ncache); +} +#endif + + +static PyObject* +DBEnv_set_flags(DBEnvObject* self, PyObject* args) +{ + int err, flags=0, onoff=0; + + if (!PyArg_ParseTuple(args, "ii:set_flags", + &flags, &onoff)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_flags(self->db_env, flags, onoff); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +#if (DBVER >= 42) +static PyObject* +DBEnv_get_flags(DBEnvObject* self) +{ + int err; + u_int32_t flags; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_flags(self->db_env, &flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(flags); +} +#endif + +#if (DBVER >= 47) +static PyObject* +DBEnv_log_set_config(DBEnvObject* self, PyObject* args) +{ + int err, flags, onoff; + + if (!PyArg_ParseTuple(args, "ii:log_set_config", + &flags, &onoff)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->log_set_config(self->db_env, flags, onoff); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_log_get_config(DBEnvObject* self, PyObject* args) +{ + int err, flag, onoff; + + if (!PyArg_ParseTuple(args, "i:log_get_config", &flag)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->log_get_config(self->db_env, flag, &onoff); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return PyBool_FromLong(onoff); +} +#endif /* DBVER >= 47 */ + +#if (DBVER >= 44) +static PyObject* +DBEnv_mutex_set_max(DBEnvObject* self, PyObject* args) +{ + int err; + int value; + + if (!PyArg_ParseTuple(args, "i:mutex_set_max", &value)) + return NULL; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->mutex_set_max(self->db_env, value); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_mutex_get_max(DBEnvObject* self) +{ + int err; + u_int32_t value; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->mutex_get_max(self->db_env, &value); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return NUMBER_FromLong(value); +} + +static PyObject* +DBEnv_mutex_set_align(DBEnvObject* self, PyObject* args) +{ + int err; + int align; + + if (!PyArg_ParseTuple(args, "i:mutex_set_align", &align)) + return NULL; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->mutex_set_align(self->db_env, align); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_mutex_get_align(DBEnvObject* self) +{ + int err; + u_int32_t align; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->mutex_get_align(self->db_env, &align); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return NUMBER_FromLong(align); +} + +static PyObject* +DBEnv_mutex_set_increment(DBEnvObject* self, PyObject* args) +{ + int err; + int increment; + + if (!PyArg_ParseTuple(args, "i:mutex_set_increment", &increment)) + return NULL; + + CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->set_encrypt(self->db_env, passwd, flags); + err = self->db_env->mutex_set_increment(self->db_env, increment); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); RETURN_NONE(); } -#endif /* DBVER >= 41 */ static PyObject* -DBEnv_set_timeout(DBEnvObject* self, PyObject* args, PyObject* kwargs) +DBEnv_mutex_get_increment(DBEnvObject* self) { int err; - u_int32_t flags=0; - u_int32_t timeout = 0; - static char* kwnames[] = { "timeout", "flags", NULL }; + u_int32_t increment; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:set_timeout", kwnames, - &timeout, &flags)) { - return NULL; - } + CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->set_timeout(self->db_env, (db_timeout_t)timeout, flags); + err = self->db_env->mutex_get_increment(self->db_env, &increment); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); - RETURN_NONE(); + + return NUMBER_FromLong(increment); } static PyObject* -DBEnv_set_shm_key(DBEnvObject* self, PyObject* args) +DBEnv_mutex_set_tas_spins(DBEnvObject* self, PyObject* args) { int err; - long shm_key = 0; + int tas_spins; - if (!PyArg_ParseTuple(args, "l:set_shm_key", &shm_key)) + if (!PyArg_ParseTuple(args, "i:mutex_set_tas_spins", &tas_spins)) return NULL; + CHECK_ENV_NOT_CLOSED(self); - err = self->db_env->set_shm_key(self->db_env, shm_key); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->mutex_set_tas_spins(self->db_env, tas_spins); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); RETURN_NONE(); } static PyObject* -DBEnv_set_cachesize(DBEnvObject* self, PyObject* args) +DBEnv_mutex_get_tas_spins(DBEnvObject* self) { - int err, gbytes=0, bytes=0, ncache=0; + int err; + u_int32_t tas_spins; - if (!PyArg_ParseTuple(args, "ii|i:set_cachesize", - &gbytes, &bytes, &ncache)) - return NULL; CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->set_cachesize(self->db_env, gbytes, bytes, ncache); + err = self->db_env->mutex_get_tas_spins(self->db_env, &tas_spins); MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); - RETURN_NONE(); -} + return NUMBER_FromLong(tas_spins); +} +#endif static PyObject* -DBEnv_set_flags(DBEnvObject* self, PyObject* args) +DBEnv_set_data_dir(DBEnvObject* self, PyObject* args) { - int err, flags=0, onoff=0; + int err; + char *dir; - if (!PyArg_ParseTuple(args, "ii:set_flags", - &flags, &onoff)) + if (!PyArg_ParseTuple(args, "s:set_data_dir", &dir)) return NULL; CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->set_flags(self->db_env, flags, onoff); + err = self->db_env->set_data_dir(self->db_env, dir); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); RETURN_NONE(); } - -#if (DBVER >= 47) +#if (DBVER >= 42) static PyObject* -DBEnv_log_set_config(DBEnvObject* self, PyObject* args) +DBEnv_get_data_dirs(DBEnvObject* self) { - int err, flags, onoff; + int err; + PyObject *tuple; + PyObject *item; + const char **dirpp; + int size, i; - if (!PyArg_ParseTuple(args, "ii:log_set_config", - &flags, &onoff)) - return NULL; CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->log_set_config(self->db_env, flags, onoff); + err = self->db_env->get_data_dirs(self->db_env, &dirpp); MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); - RETURN_NONE(); -} -#endif /* DBVER >= 47 */ + /* + ** Calculate size. Python C API + ** actually allows for tuple resizing, + ** but this is simple enough. + */ + for (size=0; *(dirpp+size) ; size++); + + tuple = PyTuple_New(size); + if (!tuple) + return NULL; + + for (i=0; i= 44) static PyObject* -DBEnv_set_data_dir(DBEnvObject* self, PyObject* args) +DBEnv_set_lg_filemode(DBEnvObject* self, PyObject* args) { - int err; - char *dir; + int err, filemode; - if (!PyArg_ParseTuple(args, "s:set_data_dir", &dir)) + if (!PyArg_ParseTuple(args, "i:set_lg_filemode", &filemode)) return NULL; CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->set_data_dir(self->db_env, dir); + err = self->db_env->set_lg_filemode(self->db_env, filemode); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); RETURN_NONE(); } +static PyObject* +DBEnv_get_lg_filemode(DBEnvObject* self) +{ + int err, filemode; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lg_filemode(self->db_env, &filemode); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(filemode); +} +#endif static PyObject* DBEnv_set_lg_bsize(DBEnvObject* self, PyObject* args) @@ -4300,6 +5513,22 @@ DBEnv_set_lg_bsize(DBEnvObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_lg_bsize(DBEnvObject* self) +{ + int err; + u_int32_t lg_bsize; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lg_bsize(self->db_env, &lg_bsize); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(lg_bsize); +} +#endif static PyObject* DBEnv_set_lg_dir(DBEnvObject* self, PyObject* args) @@ -4318,6 +5547,23 @@ DBEnv_set_lg_dir(DBEnvObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_lg_dir(DBEnvObject* self) +{ + int err; + const char *dirp; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lg_dir(self->db_env, &dirp); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return PyBytes_FromString(dirp); +} +#endif + static PyObject* DBEnv_set_lg_max(DBEnvObject* self, PyObject* args) { @@ -4368,6 +5614,55 @@ DBEnv_set_lg_regionmax(DBEnvObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_lg_regionmax(DBEnvObject* self) +{ + int err; + u_int32_t lg_regionmax; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lg_regionmax(self->db_env, &lg_regionmax); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(lg_regionmax); +} +#endif + +#if (DBVER >= 47) +static PyObject* +DBEnv_set_lk_partitions(DBEnvObject* self, PyObject* args) +{ + int err, lk_partitions; + + if (!PyArg_ParseTuple(args, "i:set_lk_partitions", &lk_partitions)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_lk_partitions(self->db_env, lk_partitions); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_get_lk_partitions(DBEnvObject* self) +{ + int err; + u_int32_t lk_partitions; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lk_partitions(self->db_env, &lk_partitions); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(lk_partitions); +} +#endif static PyObject* DBEnv_set_lk_detect(DBEnvObject* self, PyObject* args) @@ -4385,6 +5680,23 @@ DBEnv_set_lk_detect(DBEnvObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_lk_detect(DBEnvObject* self) +{ + int err; + u_int32_t lk_detect; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lk_detect(self->db_env, &lk_detect); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(lk_detect); +} +#endif + #if (DBVER < 45) static PyObject* @@ -4422,6 +5734,22 @@ DBEnv_set_lk_max_locks(DBEnvObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_lk_max_locks(DBEnvObject* self) +{ + int err; + u_int32_t lk_max; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lk_max_locks(self->db_env, &lk_max); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(lk_max); +} +#endif static PyObject* DBEnv_set_lk_max_lockers(DBEnvObject* self, PyObject* args) @@ -4439,6 +5767,22 @@ DBEnv_set_lk_max_lockers(DBEnvObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_lk_max_lockers(DBEnvObject* self) +{ + int err; + u_int32_t lk_max; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lk_max_lockers(self->db_env, &lk_max); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(lk_max); +} +#endif static PyObject* DBEnv_set_lk_max_objects(DBEnvObject* self, PyObject* args) @@ -4456,6 +5800,40 @@ DBEnv_set_lk_max_objects(DBEnvObject* self, PyObject* args) RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_lk_max_objects(DBEnvObject* self) +{ + int err; + u_int32_t lk_max; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_lk_max_objects(self->db_env, &lk_max); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(lk_max); +} +#endif + +#if (DBVER >= 42) +static PyObject* +DBEnv_get_mp_mmapsize(DBEnvObject* self) +{ + int err; + size_t mmapsize; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_mp_mmapsize(self->db_env, &mmapsize); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(mmapsize); +} +#endif + static PyObject* DBEnv_set_mp_mmapsize(DBEnvObject* self, PyObject* args) @@ -4492,6 +5870,26 @@ DBEnv_set_tmp_dir(DBEnvObject* self, PyObject* args) } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_tmp_dir(DBEnvObject* self) +{ + int err; + const char *dirpp; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_tmp_dir(self->db_env, &dirpp); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + + return PyBytes_FromString(dirpp); +} +#endif + + static PyObject* DBEnv_txn_recover(DBEnvObject* self) { @@ -4501,7 +5899,11 @@ DBEnv_txn_recover(DBEnvObject* self) DBTxnObject *txn; #define PREPLIST_LEN 16 DB_PREPLIST preplist[PREPLIST_LEN]; +#if (DBVER < 48) long retp; +#else + u_int32_t retp; +#endif CHECK_ENV_NOT_CLOSED(self); @@ -4522,12 +5924,12 @@ DBEnv_txn_recover(DBEnvObject* self) flags=DB_NEXT; /* Prepare for next loop pass */ for (i=0; idb_env->txn_checkpoint(self->db_env, kbyte, min, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + + +#if (DBVER >= 42) +static PyObject* +DBEnv_get_tx_max(DBEnvObject* self) { - int err, kbyte=0, min=0, flags=0; + int err; + u_int32_t max; - if (!PyArg_ParseTuple(args, "|iii:txn_checkpoint", &kbyte, &min, &flags)) - return NULL; CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; - err = self->db_env->txn_checkpoint(self->db_env, kbyte, min, flags); + err = self->db_env->get_tx_max(self->db_env, &max); MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); - RETURN_NONE(); + return PyLong_FromUnsignedLong(max); } +#endif static PyObject* @@ -4611,12 +6031,31 @@ DBEnv_set_tx_max(DBEnvObject* self, PyObject* args) return NULL; CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; err = self->db_env->set_tx_max(self->db_env, max); + MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); RETURN_NONE(); } +#if (DBVER >= 42) +static PyObject* +DBEnv_get_tx_timestamp(DBEnvObject* self) +{ + int err; + time_t timestamp; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_tx_timestamp(self->db_env, ×tamp); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(timestamp); +} +#endif + static PyObject* DBEnv_set_tx_timestamp(DBEnvObject* self, PyObject* args) { @@ -4628,7 +6067,9 @@ DBEnv_set_tx_timestamp(DBEnvObject* self, PyObject* args) return NULL; CHECK_ENV_NOT_CLOSED(self); timestamp = (time_t)stamp; + MYDB_BEGIN_ALLOW_THREADS; err = self->db_env->set_tx_timestamp(self->db_env, ×tamp); + MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); RETURN_NONE(); } @@ -4721,6 +6162,26 @@ DBEnv_lock_put(DBEnvObject* self, PyObject* args) } #if (DBVER >= 44) +static PyObject* +DBEnv_fileid_reset(DBEnvObject* self, PyObject* args, PyObject* kwargs) +{ + int err; + char *file; + u_int32_t flags = 0; + static char* kwnames[] = { "file", "flags", NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "z|i:fileid_reset", kwnames, + &file, &flags)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->fileid_reset(self->db_env, file, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + static PyObject* DBEnv_lsn_reset(DBEnvObject* self, PyObject* args, PyObject* kwargs) { @@ -4742,6 +6203,30 @@ DBEnv_lsn_reset(DBEnvObject* self, PyObject* args, PyObject* kwargs) } #endif /* DBVER >= 4.4 */ + +#if (DBVER >= 43) +static PyObject* +DBEnv_stat_print(DBEnvObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:stat_print", + kwnames, &flags)) + { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->stat_print(self->db_env, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} +#endif + + static PyObject* DBEnv_log_stat(DBEnvObject* self, PyObject* args) { @@ -4776,9 +6261,6 @@ DBEnv_log_stat(DBEnvObject* self, PyObject* args) #if (DBVER >= 44) MAKE_ENTRY(lg_size); MAKE_ENTRY(record); -#endif -#if (DBVER < 41) - MAKE_ENTRY(lg_max); #endif MAKE_ENTRY(w_mbytes); MAKE_ENTRY(w_bytes); @@ -4806,6 +6288,29 @@ DBEnv_log_stat(DBEnvObject* self, PyObject* args) } /* DBEnv_log_stat */ +#if (DBVER >= 43) +static PyObject* +DBEnv_log_stat_print(DBEnvObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:log_stat_print", + kwnames, &flags)) + { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->log_stat_print(self->db_env, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} +#endif + + static PyObject* DBEnv_lock_stat(DBEnvObject* self, PyObject* args) { @@ -4832,13 +6337,8 @@ DBEnv_lock_stat(DBEnvObject* self, PyObject* args) #define MAKE_ENTRY(name) _addIntToDict(d, #name, sp->st_##name) -#if (DBVER < 41) - MAKE_ENTRY(lastid); -#endif -#if (DBVER >=41) MAKE_ENTRY(id); MAKE_ENTRY(cur_maxid); -#endif MAKE_ENTRY(nmodes); MAKE_ENTRY(maxlocks); MAKE_ENTRY(maxlockers); @@ -4863,10 +6363,8 @@ DBEnv_lock_stat(DBEnvObject* self, PyObject* args) MAKE_ENTRY(lock_wait); #endif MAKE_ENTRY(ndeadlocks); -#if (DBVER >= 41) MAKE_ENTRY(locktimeout); MAKE_ENTRY(txntimeout); -#endif MAKE_ENTRY(nlocktimeouts); MAKE_ENTRY(ntxntimeouts); #if (DBVER >= 46) @@ -4892,6 +6390,45 @@ DBEnv_lock_stat(DBEnvObject* self, PyObject* args) return d; } +#if (DBVER >= 43) +static PyObject* +DBEnv_lock_stat_print(DBEnvObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:lock_stat_print", + kwnames, &flags)) + { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->lock_stat_print(self->db_env, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} +#endif + + +static PyObject* +DBEnv_log_cursor(DBEnvObject* self) +{ + int err; + DB_LOGC* dblogc; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->log_cursor(self->db_env, &dblogc, 0); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return (PyObject*) newDBLogCursorObject(dblogc, self); +} + + static PyObject* DBEnv_log_flush(DBEnvObject* self) { @@ -4907,6 +6444,86 @@ DBEnv_log_flush(DBEnvObject* self) RETURN_NONE(); } +static PyObject* +DBEnv_log_file(DBEnvObject* self, PyObject* args) +{ + int err; + DB_LSN lsn = {0, 0}; + int size = 20; + char *name = NULL; + PyObject *retval; + + if (!PyArg_ParseTuple(args, "(ii):log_file", &lsn.file, &lsn.offset)) + return NULL; + + CHECK_ENV_NOT_CLOSED(self); + + do { + name = malloc(size); + if (!name) { + PyErr_NoMemory(); + return NULL; + } + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->log_file(self->db_env, &lsn, name, size); + MYDB_END_ALLOW_THREADS; + if (err == EINVAL) { + free(name); + size *= 2; + } else if (err) { + free(name); + RETURN_IF_ERR(); + assert(0); /* Unreachable... supposely */ + return NULL; + } +/* +** If the final buffer we try is too small, we will +** get this exception: +** DBInvalidArgError: +** (22, 'Invalid argument -- DB_ENV->log_file: name buffer is too short') +*/ + } while ((err == EINVAL) && (size<(1<<17))); + + RETURN_IF_ERR(); /* Maybe the size is not the problem */ + + retval = Py_BuildValue("s", name); + free(name); + return retval; +} + + +#if (DBVER >= 44) +static PyObject* +DBEnv_log_printf(DBEnvObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + char *string; + PyObject *txnobj = NULL; + DB_TXN *txn = NULL; + static char* kwnames[] = {"string", "txn", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|O:log_printf", kwnames, + &string, &txnobj)) + return NULL; + + CHECK_ENV_NOT_CLOSED(self); + + if (!checkTxnObj(txnobj, &txn)) + return NULL; + + /* + ** Do not use the format string directly, to avoid attacks. + */ + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->log_printf(self->db_env, txn, "%s", string); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + RETURN_NONE(); +} +#endif + + static PyObject* DBEnv_log_archive(DBEnvObject* self, PyObject* args) { @@ -4932,27 +6549,120 @@ DBEnv_log_archive(DBEnvObject* self, PyObject* args) return NULL; } - if (log_list) { - char **log_list_start; - for (log_list_start = log_list; *log_list != NULL; ++log_list) { - item = PyBytes_FromString (*log_list); - if (item == NULL) { - Py_DECREF(list); - list = NULL; - break; - } - if (PyList_Append(list, item)) { - Py_DECREF(list); - list = NULL; - Py_DECREF(item); - break; - } - Py_DECREF(item); - } - free(log_list_start); - } - return list; + if (log_list) { + char **log_list_start; + for (log_list_start = log_list; *log_list != NULL; ++log_list) { + item = PyBytes_FromString (*log_list); + if (item == NULL) { + Py_DECREF(list); + list = NULL; + break; + } + if (PyList_Append(list, item)) { + Py_DECREF(list); + list = NULL; + Py_DECREF(item); + break; + } + Py_DECREF(item); + } + free(log_list_start); + } + return list; +} + + +#if (DBVER >= 44) +static PyObject* +DBEnv_mutex_stat(DBEnvObject* self, PyObject* args) +{ + int err; + DB_MUTEX_STAT* statp = NULL; + PyObject* d = NULL; + u_int32_t flags = 0; + + if (!PyArg_ParseTuple(args, "|i:mutex_stat", &flags)) + return NULL; + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->mutex_stat(self->db_env, &statp, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + + /* Turn the stat structure into a dictionary */ + d = PyDict_New(); + if (d == NULL) { + if (statp) + free(statp); + return NULL; + } + +#define MAKE_ENTRY(name) _addIntToDict(d, #name, statp->st_##name) + + MAKE_ENTRY(mutex_align); + MAKE_ENTRY(mutex_tas_spins); + MAKE_ENTRY(mutex_cnt); + MAKE_ENTRY(mutex_free); + MAKE_ENTRY(mutex_inuse); + MAKE_ENTRY(mutex_inuse_max); + MAKE_ENTRY(regsize); + MAKE_ENTRY(region_wait); + MAKE_ENTRY(region_nowait); + +#undef MAKE_ENTRY + free(statp); + return d; +} +#endif + + +#if (DBVER >= 44) +static PyObject* +DBEnv_mutex_stat_print(DBEnvObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:mutex_stat_print", + kwnames, &flags)) + { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->mutex_stat_print(self->db_env, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} +#endif + + +#if (DBVER >= 43) +static PyObject* +DBEnv_txn_stat_print(DBEnvObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:stat_print", + kwnames, &flags)) + { + return NULL; + } + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->txn_stat_print(self->db_env, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); } +#endif static PyObject* @@ -5047,6 +6757,7 @@ DBEnv_set_private(DBEnvObject* self, PyObject* private_obj) } +#if (DBVER < 48) static PyObject* DBEnv_set_rpc_server(DBEnvObject* self, PyObject* args, PyObject* kwargs) { @@ -5068,6 +6779,84 @@ DBEnv_set_rpc_server(DBEnvObject* self, PyObject* args, PyObject* kwargs) RETURN_IF_ERR(); RETURN_NONE(); } +#endif + +#if (DBVER >= 43) +static PyObject* +DBEnv_set_mp_max_openfd(DBEnvObject* self, PyObject* args) +{ + int err; + int maxopenfd; + + if (!PyArg_ParseTuple(args, "i:set_mp_max_openfd", &maxopenfd)) { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_mp_max_openfd(self->db_env, maxopenfd); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_get_mp_max_openfd(DBEnvObject* self) +{ + int err; + int maxopenfd; + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_mp_max_openfd(self->db_env, &maxopenfd); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + return NUMBER_FromLong(maxopenfd); +} + + +static PyObject* +DBEnv_set_mp_max_write(DBEnvObject* self, PyObject* args) +{ + int err; + int maxwrite, maxwrite_sleep; + + if (!PyArg_ParseTuple(args, "ii:set_mp_max_write", &maxwrite, + &maxwrite_sleep)) { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->set_mp_max_write(self->db_env, maxwrite, + maxwrite_sleep); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_get_mp_max_write(DBEnvObject* self) +{ + int err; + int maxwrite; +#if (DBVER >= 46) + db_timeout_t maxwrite_sleep; +#else + int maxwrite_sleep; +#endif + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->get_mp_max_write(self->db_env, &maxwrite, + &maxwrite_sleep); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + + return Py_BuildValue("(ii)", maxwrite, (int)maxwrite_sleep); +} +#endif + static PyObject* DBEnv_set_verbose(DBEnvObject* self, PyObject* args) @@ -5146,8 +6935,8 @@ DBEnv_set_event_notify(DBEnvObject* self, PyObject* notifyFunc) CHECK_ENV_NOT_CLOSED(self); if (!PyCallable_Check(notifyFunc)) { - makeTypeError("Callable", notifyFunc); - return NULL; + makeTypeError("Callable", notifyFunc); + return NULL; } Py_XDECREF(self->event_notifyCallback); @@ -5165,8 +6954,8 @@ DBEnv_set_event_notify(DBEnvObject* self, PyObject* notifyFunc) MYDB_END_ALLOW_THREADS; if (err) { - Py_DECREF(notifyFunc); - self->event_notifyCallback = NULL; + Py_DECREF(notifyFunc); + self->event_notifyCallback = NULL; } RETURN_IF_ERR(); @@ -5487,7 +7276,7 @@ DBEnv_rep_start(DBEnvObject* self, PyObject* args, PyObject* kwargs) if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i|O:rep_start", kwnames, &flags, &cdata_py)) { - return NULL; + return NULL; } CHECK_ENV_NOT_CLOSED(self); @@ -5625,6 +7414,175 @@ DBEnv_rep_get_timeout(DBEnvObject* self, PyObject* args) } #endif + +#if (DBVER >= 47) +static PyObject* +DBEnv_rep_set_clockskew(DBEnvObject* self, PyObject* args) +{ + int err; + unsigned int fast, slow; + +#if (PY_VERSION_HEX >= 0x02040000) + if (!PyArg_ParseTuple(args,"II:rep_set_clockskew", &fast, &slow)) + return NULL; +#else + if (!PyArg_ParseTuple(args,"ii:rep_set_clockskew", &fast, &slow)) + return NULL; +#endif + + CHECK_ENV_NOT_CLOSED(self); + + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->rep_set_clockskew(self->db_env, fast, slow); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} + +static PyObject* +DBEnv_rep_get_clockskew(DBEnvObject* self) +{ + int err; + unsigned int fast, slow; + + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->rep_get_clockskew(self->db_env, &fast, &slow); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); +#if (PY_VERSION_HEX >= 0x02040000) + return Py_BuildValue("(II)", fast, slow); +#else + return Py_BuildValue("(ii)", fast, slow); +#endif +} +#endif + +#if (DBVER >= 43) +static PyObject* +DBEnv_rep_stat_print(DBEnvObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:rep_stat_print", + kwnames, &flags)) + { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->rep_stat_print(self->db_env, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + RETURN_NONE(); +} +#endif + +static PyObject* +DBEnv_rep_stat(DBEnvObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + DB_REP_STAT *statp; + PyObject *stats; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:rep_stat", + kwnames, &flags)) + { + return NULL; + } + CHECK_ENV_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->db_env->rep_stat(self->db_env, &statp, flags); + MYDB_END_ALLOW_THREADS; + RETURN_IF_ERR(); + + stats=PyDict_New(); + if (stats == NULL) { + free(statp); + return NULL; + } + +#define MAKE_ENTRY(name) _addIntToDict(stats, #name, statp->st_##name) +#define MAKE_DB_LSN_ENTRY(name) _addDB_lsnToDict(stats , #name, statp->st_##name) + +#if (DBVER >= 44) + MAKE_ENTRY(bulk_fills); + MAKE_ENTRY(bulk_overflows); + MAKE_ENTRY(bulk_records); + MAKE_ENTRY(bulk_transfers); + MAKE_ENTRY(client_rerequests); + MAKE_ENTRY(client_svc_miss); + MAKE_ENTRY(client_svc_req); +#endif + MAKE_ENTRY(dupmasters); +#if (DBVER >= 43) + MAKE_ENTRY(egen); + MAKE_ENTRY(election_nvotes); + MAKE_ENTRY(startup_complete); + MAKE_ENTRY(pg_duplicated); + MAKE_ENTRY(pg_records); + MAKE_ENTRY(pg_requested); + MAKE_ENTRY(next_pg); + MAKE_ENTRY(waiting_pg); +#endif + MAKE_ENTRY(election_cur_winner); + MAKE_ENTRY(election_gen); + MAKE_DB_LSN_ENTRY(election_lsn); + MAKE_ENTRY(election_nsites); + MAKE_ENTRY(election_priority); +#if (DBVER >= 44) + MAKE_ENTRY(election_sec); + MAKE_ENTRY(election_usec); +#endif + MAKE_ENTRY(election_status); + MAKE_ENTRY(election_tiebreaker); + MAKE_ENTRY(election_votes); + MAKE_ENTRY(elections); + MAKE_ENTRY(elections_won); + MAKE_ENTRY(env_id); + MAKE_ENTRY(env_priority); + MAKE_ENTRY(gen); + MAKE_ENTRY(log_duplicated); + MAKE_ENTRY(log_queued); + MAKE_ENTRY(log_queued_max); + MAKE_ENTRY(log_queued_total); + MAKE_ENTRY(log_records); + MAKE_ENTRY(log_requested); + MAKE_ENTRY(master); + MAKE_ENTRY(master_changes); +#if (DBVER >= 47) + MAKE_ENTRY(max_lease_sec); + MAKE_ENTRY(max_lease_usec); + MAKE_DB_LSN_ENTRY(max_perm_lsn); +#endif + MAKE_ENTRY(msgs_badgen); + MAKE_ENTRY(msgs_processed); + MAKE_ENTRY(msgs_recover); + MAKE_ENTRY(msgs_send_failures); + MAKE_ENTRY(msgs_sent); + MAKE_ENTRY(newsites); + MAKE_DB_LSN_ENTRY(next_lsn); + MAKE_ENTRY(nsites); + MAKE_ENTRY(nthrottles); + MAKE_ENTRY(outdated); +#if (DBVER >= 46) + MAKE_ENTRY(startsync_delayed); +#endif + MAKE_ENTRY(status); + MAKE_ENTRY(txns_applied); + MAKE_DB_LSN_ENTRY(waiting_lsn); + +#undef MAKE_DB_LSN_ENTRY +#undef MAKE_ENTRY + + free(statp); + return stats; +} + /* --------------------------------------------------------------------- */ /* REPLICATION METHODS: Replication Manager */ @@ -5640,7 +7598,7 @@ DBEnv_repmgr_start(DBEnvObject* self, PyObject* args, PyObject* if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:repmgr_start", kwnames, &nthreads, &flags)) { - return NULL; + return NULL; } CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; @@ -5663,7 +7621,7 @@ DBEnv_repmgr_set_local_site(DBEnvObject* self, PyObject* args, PyObject* if (!PyArg_ParseTupleAndKeywords(args, kwargs, "si|i:repmgr_set_local_site", kwnames, &host, &port, &flags)) { - return NULL; + return NULL; } CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; @@ -5687,7 +7645,7 @@ DBEnv_repmgr_add_remote_site(DBEnvObject* self, PyObject* args, PyObject* if (!PyArg_ParseTupleAndKeywords(args, kwargs, "si|i:repmgr_add_remote_site", kwnames, &host, &port, &flags)) { - return NULL; + return NULL; } CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; @@ -5705,7 +7663,7 @@ DBEnv_repmgr_set_ack_policy(DBEnvObject* self, PyObject* args) if (!PyArg_ParseTuple(args, "i:repmgr_set_ack_policy", &ack_policy)) { - return NULL; + return NULL; } CHECK_ENV_NOT_CLOSED(self); MYDB_BEGIN_ALLOW_THREADS; @@ -5880,7 +7838,7 @@ static void _promote_transaction_dbs_and_sequences(DBTxnObject *txn) /* The db is already linked to its environment, ** so nothing to do. */ - db->txn=NULL; + db->txn=NULL; } } @@ -5949,9 +7907,9 @@ DBTxn_prepare(DBTxnObject* self, PyObject* args) if (!PyArg_ParseTuple(args, "s#:prepare", &gid, &gid_size)) return NULL; - if (gid_size != DB_XIDDATASIZE) { + if (gid_size != DB_GID_SIZE) { PyErr_SetString(PyExc_TypeError, - "gid must be DB_XIDDATASIZE bytes long"); + "gid must be DB_GID_SIZE bytes long"); return NULL; } @@ -6066,6 +8024,76 @@ DBTxn_id(DBTxnObject* self) return NUMBER_FromLong(id); } + +static PyObject* +DBTxn_set_timeout(DBTxnObject* self, PyObject* args, PyObject* kwargs) +{ + int err; + u_int32_t flags=0; + u_int32_t timeout = 0; + static char* kwnames[] = { "timeout", "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:set_timeout", kwnames, + &timeout, &flags)) { + return NULL; + } + + MYDB_BEGIN_ALLOW_THREADS; + err = self->txn->set_timeout(self->txn, (db_timeout_t)timeout, flags); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + RETURN_NONE(); +} + + +#if (DBVER >= 44) +static PyObject* +DBTxn_set_name(DBTxnObject* self, PyObject* args) +{ + int err; + const char *name; + + if (!PyArg_ParseTuple(args, "s:set_name", &name)) + return NULL; + + MYDB_BEGIN_ALLOW_THREADS; + err = self->txn->set_name(self->txn, name); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); + RETURN_NONE(); +} +#endif + + +#if (DBVER >= 44) +static PyObject* +DBTxn_get_name(DBTxnObject* self) +{ + int err; + const char *name; + + MYDB_BEGIN_ALLOW_THREADS; + err = self->txn->get_name(self->txn, &name); + MYDB_END_ALLOW_THREADS; + + RETURN_IF_ERR(); +#if (PY_VERSION_HEX < 0x03000000) + if (!name) { + return PyString_FromString(""); + } + return PyString_FromString(name); +#else + if (!name) { + return PyUnicode_FromString(""); + } + return PyUnicode_FromString(name); +#endif +} +#endif + + #if (DBVER >= 43) /* --------------------------------------------------------------------- */ /* DBSequence methods */ @@ -6169,12 +8197,12 @@ DBSequence_get_key(DBSequenceObject* self) } static PyObject* -DBSequence_init_value(DBSequenceObject* self, PyObject* args) +DBSequence_initial_value(DBSequenceObject* self, PyObject* args) { int err; PY_LONG_LONG value; db_seq_t value2; - if (!PyArg_ParseTuple(args,"L:init_value", &value)) + if (!PyArg_ParseTuple(args,"L:initial_value", &value)) return NULL; CHECK_SEQUENCE_NOT_CLOSED(self) @@ -6340,16 +8368,39 @@ DBSequence_get_range(DBSequenceObject* self) PY_LONG_LONG min, max; db_seq_t min2, max2; - CHECK_SEQUENCE_NOT_CLOSED(self) + CHECK_SEQUENCE_NOT_CLOSED(self) + + MYDB_BEGIN_ALLOW_THREADS + err = self->sequence->get_range(self->sequence, &min2, &max2); + MYDB_END_ALLOW_THREADS + + RETURN_IF_ERR(); + min=min2; /* If truncation, compiler should show a warning */ + max=max2; + return Py_BuildValue("(LL)", min, max); +} + + +static PyObject* +DBSequence_stat_print(DBSequenceObject* self, PyObject* args, PyObject *kwargs) +{ + int err; + int flags=0; + static char* kwnames[] = { "flags", NULL }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:stat_print", + kwnames, &flags)) + { + return NULL; + } - MYDB_BEGIN_ALLOW_THREADS - err = self->sequence->get_range(self->sequence, &min2, &max2); - MYDB_END_ALLOW_THREADS + CHECK_SEQUENCE_NOT_CLOSED(self); + MYDB_BEGIN_ALLOW_THREADS; + err = self->sequence->stat_print(self->sequence, flags); + MYDB_END_ALLOW_THREADS; RETURN_IF_ERR(); - min=min2; /* If truncation, compiler should show a warning */ - max=max2; - return Py_BuildValue("(LL)", min, max); + RETURN_NONE(); } static PyObject* @@ -6403,11 +8454,18 @@ static PyMethodDef DB_methods[] = { {"append", (PyCFunction)DB_append, METH_VARARGS|METH_KEYWORDS}, {"associate", (PyCFunction)DB_associate, METH_VARARGS|METH_KEYWORDS}, {"close", (PyCFunction)DB_close, METH_VARARGS}, +#if (DBVER >= 47) + {"compact", (PyCFunction)DB_compact, METH_VARARGS|METH_KEYWORDS}, +#endif {"consume", (PyCFunction)DB_consume, METH_VARARGS|METH_KEYWORDS}, {"consume_wait", (PyCFunction)DB_consume_wait, METH_VARARGS|METH_KEYWORDS}, {"cursor", (PyCFunction)DB_cursor, METH_VARARGS|METH_KEYWORDS}, {"delete", (PyCFunction)DB_delete, METH_VARARGS|METH_KEYWORDS}, {"fd", (PyCFunction)DB_fd, METH_NOARGS}, +#if (DBVER >= 46) + {"exists", (PyCFunction)DB_exists, + METH_VARARGS|METH_KEYWORDS}, +#endif {"get", (PyCFunction)DB_get, METH_VARARGS|METH_KEYWORDS}, {"pget", (PyCFunction)DB_pget, METH_VARARGS|METH_KEYWORDS}, {"get_both", (PyCFunction)DB_get_both, METH_VARARGS|METH_KEYWORDS}, @@ -6424,24 +8482,70 @@ static PyMethodDef DB_methods[] = { {"remove", (PyCFunction)DB_remove, METH_VARARGS|METH_KEYWORDS}, {"rename", (PyCFunction)DB_rename, METH_VARARGS}, {"set_bt_minkey", (PyCFunction)DB_set_bt_minkey, METH_VARARGS}, +#if (DBVER >= 42) + {"get_bt_minkey", (PyCFunction)DB_get_bt_minkey, METH_NOARGS}, +#endif {"set_bt_compare", (PyCFunction)DB_set_bt_compare, METH_O}, {"set_cachesize", (PyCFunction)DB_set_cachesize, METH_VARARGS}, -#if (DBVER >= 41) +#if (DBVER >= 42) + {"get_cachesize", (PyCFunction)DB_get_cachesize, METH_NOARGS}, +#endif {"set_encrypt", (PyCFunction)DB_set_encrypt, METH_VARARGS|METH_KEYWORDS}, +#if (DBVER >= 42) + {"get_encrypt_flags", (PyCFunction)DB_get_encrypt_flags, METH_NOARGS}, #endif + {"set_flags", (PyCFunction)DB_set_flags, METH_VARARGS}, +#if (DBVER >= 42) + {"get_flags", (PyCFunction)DB_get_flags, METH_NOARGS}, +#endif {"set_h_ffactor", (PyCFunction)DB_set_h_ffactor, METH_VARARGS}, +#if (DBVER >= 42) + {"get_h_ffactor", (PyCFunction)DB_get_h_ffactor, METH_NOARGS}, +#endif {"set_h_nelem", (PyCFunction)DB_set_h_nelem, METH_VARARGS}, +#if (DBVER >= 42) + {"get_h_nelem", (PyCFunction)DB_get_h_nelem, METH_NOARGS}, +#endif {"set_lorder", (PyCFunction)DB_set_lorder, METH_VARARGS}, +#if (DBVER >= 42) + {"get_lorder", (PyCFunction)DB_get_lorder, METH_NOARGS}, +#endif {"set_pagesize", (PyCFunction)DB_set_pagesize, METH_VARARGS}, +#if (DBVER >= 42) + {"get_pagesize", (PyCFunction)DB_get_pagesize, METH_NOARGS}, +#endif {"set_re_delim", (PyCFunction)DB_set_re_delim, METH_VARARGS}, +#if (DBVER >= 42) + {"get_re_delim", (PyCFunction)DB_get_re_delim, METH_NOARGS}, +#endif {"set_re_len", (PyCFunction)DB_set_re_len, METH_VARARGS}, +#if (DBVER >= 42) + {"get_re_len", (PyCFunction)DB_get_re_len, METH_NOARGS}, +#endif {"set_re_pad", (PyCFunction)DB_set_re_pad, METH_VARARGS}, +#if (DBVER >= 42) + {"get_re_pad", (PyCFunction)DB_get_re_pad, METH_NOARGS}, +#endif {"set_re_source", (PyCFunction)DB_set_re_source, METH_VARARGS}, +#if (DBVER >= 42) + {"get_re_source", (PyCFunction)DB_get_re_source, METH_NOARGS}, +#endif {"set_q_extentsize",(PyCFunction)DB_set_q_extentsize, METH_VARARGS}, +#if (DBVER >= 42) + {"get_q_extentsize",(PyCFunction)DB_get_q_extentsize, METH_NOARGS}, +#endif {"set_private", (PyCFunction)DB_set_private, METH_O}, {"get_private", (PyCFunction)DB_get_private, METH_NOARGS}, +#if (DBVER >= 46) + {"set_priority", (PyCFunction)DB_set_priority, METH_VARARGS}, + {"get_priority", (PyCFunction)DB_get_priority, METH_NOARGS}, +#endif {"stat", (PyCFunction)DB_stat, METH_VARARGS|METH_KEYWORDS}, +#if (DBVER >= 43) + {"stat_print", (PyCFunction)DB_stat_print, + METH_VARARGS|METH_KEYWORDS}, +#endif {"sync", (PyCFunction)DB_sync, METH_VARARGS}, {"truncate", (PyCFunction)DB_truncate, METH_VARARGS|METH_KEYWORDS}, {"type", (PyCFunction)DB_get_type, METH_NOARGS}, @@ -6453,6 +8557,20 @@ static PyMethodDef DB_methods[] = { }; +/* We need this to support __contains__() */ +static PySequenceMethods DB_sequence = { + 0, /* sq_length, mapping wins here */ + 0, /* sq_concat */ + 0, /* sq_repeat */ + 0, /* sq_item */ + 0, /* sq_slice */ + 0, /* sq_ass_item */ + 0, /* sq_ass_slice */ + (objobjproc)DB_contains, /* sq_contains */ + 0, /* sq_inplace_concat */ + 0, /* sq_inplace_repeat */ +}; + static PyMappingMethods DB_mapping = { DB_length, /*mp_length*/ (binaryfunc)DB_subscript, /*mp_subscript*/ @@ -6483,8 +8601,29 @@ static PyMethodDef DBCursor_methods[] = { {"consume", (PyCFunction)DBC_consume, METH_VARARGS|METH_KEYWORDS}, {"next_dup", (PyCFunction)DBC_next_dup, METH_VARARGS|METH_KEYWORDS}, {"next_nodup", (PyCFunction)DBC_next_nodup, METH_VARARGS|METH_KEYWORDS}, +#if (DBVER >= 46) + {"prev_dup", (PyCFunction)DBC_prev_dup, + METH_VARARGS|METH_KEYWORDS}, +#endif {"prev_nodup", (PyCFunction)DBC_prev_nodup, METH_VARARGS|METH_KEYWORDS}, {"join_item", (PyCFunction)DBC_join_item, METH_VARARGS}, +#if (DBVER >= 46) + {"set_priority", (PyCFunction)DBC_set_priority, + METH_VARARGS|METH_KEYWORDS}, + {"get_priority", (PyCFunction)DBC_get_priority, METH_NOARGS}, +#endif + {NULL, NULL} /* sentinel */ +}; + + +static PyMethodDef DBLogCursor_methods[] = { + {"close", (PyCFunction)DBLogCursor_close, METH_NOARGS}, + {"current", (PyCFunction)DBLogCursor_current, METH_NOARGS}, + {"first", (PyCFunction)DBLogCursor_first, METH_NOARGS}, + {"last", (PyCFunction)DBLogCursor_last, METH_NOARGS}, + {"next", (PyCFunction)DBLogCursor_next, METH_NOARGS}, + {"prev", (PyCFunction)DBLogCursor_prev, METH_NOARGS}, + {"set", (PyCFunction)DBLogCursor_set, METH_VARARGS}, {NULL, NULL} /* sentinel */ }; @@ -6493,57 +8632,178 @@ static PyMethodDef DBEnv_methods[] = { {"close", (PyCFunction)DBEnv_close, METH_VARARGS}, {"open", (PyCFunction)DBEnv_open, METH_VARARGS}, {"remove", (PyCFunction)DBEnv_remove, METH_VARARGS}, -#if (DBVER >= 41) {"dbremove", (PyCFunction)DBEnv_dbremove, METH_VARARGS|METH_KEYWORDS}, {"dbrename", (PyCFunction)DBEnv_dbrename, METH_VARARGS|METH_KEYWORDS}, +#if (DBVER >= 46) + {"set_thread_count", (PyCFunction)DBEnv_set_thread_count, METH_VARARGS}, + {"get_thread_count", (PyCFunction)DBEnv_get_thread_count, METH_NOARGS}, +#endif {"set_encrypt", (PyCFunction)DBEnv_set_encrypt, METH_VARARGS|METH_KEYWORDS}, +#if (DBVER >= 42) + {"get_encrypt_flags", (PyCFunction)DBEnv_get_encrypt_flags, METH_NOARGS}, + {"get_timeout", (PyCFunction)DBEnv_get_timeout, + METH_VARARGS|METH_KEYWORDS}, +#endif + {"set_timeout", (PyCFunction)DBEnv_set_timeout, METH_VARARGS|METH_KEYWORDS}, + {"set_shm_key", (PyCFunction)DBEnv_set_shm_key, METH_VARARGS}, +#if (DBVER >= 42) + {"get_shm_key", (PyCFunction)DBEnv_get_shm_key, METH_NOARGS}, +#endif +#if (DBVER >= 46) + {"set_cache_max", (PyCFunction)DBEnv_set_cache_max, METH_VARARGS}, + {"get_cache_max", (PyCFunction)DBEnv_get_cache_max, METH_NOARGS}, +#endif + {"set_cachesize", (PyCFunction)DBEnv_set_cachesize, METH_VARARGS}, +#if (DBVER >= 42) + {"get_cachesize", (PyCFunction)DBEnv_get_cachesize, METH_NOARGS}, +#endif + {"memp_trickle", (PyCFunction)DBEnv_memp_trickle, METH_VARARGS}, + {"memp_sync", (PyCFunction)DBEnv_memp_sync, METH_VARARGS}, + {"memp_stat", (PyCFunction)DBEnv_memp_stat, + METH_VARARGS|METH_KEYWORDS}, +#if (DBVER >= 43) + {"memp_stat_print", (PyCFunction)DBEnv_memp_stat_print, + METH_VARARGS|METH_KEYWORDS}, +#endif +#if (DBVER >= 44) + {"mutex_set_max", (PyCFunction)DBEnv_mutex_set_max, METH_VARARGS}, + {"mutex_get_max", (PyCFunction)DBEnv_mutex_get_max, METH_NOARGS}, + {"mutex_set_align", (PyCFunction)DBEnv_mutex_set_align, METH_VARARGS}, + {"mutex_get_align", (PyCFunction)DBEnv_mutex_get_align, METH_NOARGS}, + {"mutex_set_increment", (PyCFunction)DBEnv_mutex_set_increment, + METH_VARARGS}, + {"mutex_get_increment", (PyCFunction)DBEnv_mutex_get_increment, + METH_NOARGS}, + {"mutex_set_tas_spins", (PyCFunction)DBEnv_mutex_set_tas_spins, + METH_VARARGS}, + {"mutex_get_tas_spins", (PyCFunction)DBEnv_mutex_get_tas_spins, + METH_NOARGS}, + {"mutex_stat", (PyCFunction)DBEnv_mutex_stat, METH_VARARGS}, +#if (DBVER >= 44) + {"mutex_stat_print", (PyCFunction)DBEnv_mutex_stat_print, + METH_VARARGS|METH_KEYWORDS}, +#endif +#endif + {"set_data_dir", (PyCFunction)DBEnv_set_data_dir, METH_VARARGS}, +#if (DBVER >= 42) + {"get_data_dirs", (PyCFunction)DBEnv_get_data_dirs, METH_NOARGS}, +#endif +#if (DBVER >= 42) + {"get_flags", (PyCFunction)DBEnv_get_flags, METH_NOARGS}, #endif - {"set_timeout", (PyCFunction)DBEnv_set_timeout, METH_VARARGS|METH_KEYWORDS}, - {"set_shm_key", (PyCFunction)DBEnv_set_shm_key, METH_VARARGS}, - {"set_cachesize", (PyCFunction)DBEnv_set_cachesize, METH_VARARGS}, - {"set_data_dir", (PyCFunction)DBEnv_set_data_dir, METH_VARARGS}, - {"set_flags", (PyCFunction)DBEnv_set_flags, METH_VARARGS}, + {"set_flags", (PyCFunction)DBEnv_set_flags, METH_VARARGS}, #if (DBVER >= 47) - {"log_set_config", (PyCFunction)DBEnv_log_set_config, METH_VARARGS}, + {"log_set_config", (PyCFunction)DBEnv_log_set_config, METH_VARARGS}, + {"log_get_config", (PyCFunction)DBEnv_log_get_config, METH_VARARGS}, +#endif + {"set_lg_bsize", (PyCFunction)DBEnv_set_lg_bsize, METH_VARARGS}, +#if (DBVER >= 42) + {"get_lg_bsize", (PyCFunction)DBEnv_get_lg_bsize, METH_NOARGS}, +#endif + {"set_lg_dir", (PyCFunction)DBEnv_set_lg_dir, METH_VARARGS}, +#if (DBVER >= 42) + {"get_lg_dir", (PyCFunction)DBEnv_get_lg_dir, METH_NOARGS}, #endif - {"set_lg_bsize", (PyCFunction)DBEnv_set_lg_bsize, METH_VARARGS}, - {"set_lg_dir", (PyCFunction)DBEnv_set_lg_dir, METH_VARARGS}, - {"set_lg_max", (PyCFunction)DBEnv_set_lg_max, METH_VARARGS}, + {"set_lg_max", (PyCFunction)DBEnv_set_lg_max, METH_VARARGS}, #if (DBVER >= 42) - {"get_lg_max", (PyCFunction)DBEnv_get_lg_max, METH_NOARGS}, + {"get_lg_max", (PyCFunction)DBEnv_get_lg_max, METH_NOARGS}, #endif {"set_lg_regionmax",(PyCFunction)DBEnv_set_lg_regionmax, METH_VARARGS}, - {"set_lk_detect", (PyCFunction)DBEnv_set_lk_detect, METH_VARARGS}, +#if (DBVER >= 42) + {"get_lg_regionmax",(PyCFunction)DBEnv_get_lg_regionmax, METH_NOARGS}, +#endif +#if (DBVER >= 44) + {"set_lg_filemode", (PyCFunction)DBEnv_set_lg_filemode, METH_VARARGS}, + {"get_lg_filemode", (PyCFunction)DBEnv_get_lg_filemode, METH_NOARGS}, +#endif +#if (DBVER >= 47) + {"set_lk_partitions", (PyCFunction)DBEnv_set_lk_partitions, METH_VARARGS}, + {"get_lk_partitions", (PyCFunction)DBEnv_get_lk_partitions, METH_NOARGS}, +#endif + {"set_lk_detect", (PyCFunction)DBEnv_set_lk_detect, METH_VARARGS}, +#if (DBVER >= 42) + {"get_lk_detect", (PyCFunction)DBEnv_get_lk_detect, METH_NOARGS}, +#endif #if (DBVER < 45) - {"set_lk_max", (PyCFunction)DBEnv_set_lk_max, METH_VARARGS}, + {"set_lk_max", (PyCFunction)DBEnv_set_lk_max, METH_VARARGS}, #endif {"set_lk_max_locks", (PyCFunction)DBEnv_set_lk_max_locks, METH_VARARGS}, +#if (DBVER >= 42) + {"get_lk_max_locks", (PyCFunction)DBEnv_get_lk_max_locks, METH_NOARGS}, +#endif {"set_lk_max_lockers", (PyCFunction)DBEnv_set_lk_max_lockers, METH_VARARGS}, +#if (DBVER >= 42) + {"get_lk_max_lockers", (PyCFunction)DBEnv_get_lk_max_lockers, METH_NOARGS}, +#endif {"set_lk_max_objects", (PyCFunction)DBEnv_set_lk_max_objects, METH_VARARGS}, - {"set_mp_mmapsize", (PyCFunction)DBEnv_set_mp_mmapsize, METH_VARARGS}, - {"set_tmp_dir", (PyCFunction)DBEnv_set_tmp_dir, METH_VARARGS}, - {"txn_begin", (PyCFunction)DBEnv_txn_begin, METH_VARARGS|METH_KEYWORDS}, - {"txn_checkpoint", (PyCFunction)DBEnv_txn_checkpoint, METH_VARARGS}, - {"txn_stat", (PyCFunction)DBEnv_txn_stat, METH_VARARGS}, - {"set_tx_max", (PyCFunction)DBEnv_set_tx_max, METH_VARARGS}, +#if (DBVER >= 42) + {"get_lk_max_objects", (PyCFunction)DBEnv_get_lk_max_objects, METH_NOARGS}, +#endif +#if (DBVER >= 43) + {"stat_print", (PyCFunction)DBEnv_stat_print, + METH_VARARGS|METH_KEYWORDS}, +#endif + {"set_mp_mmapsize", (PyCFunction)DBEnv_set_mp_mmapsize, METH_VARARGS}, +#if (DBVER >= 42) + {"get_mp_mmapsize", (PyCFunction)DBEnv_get_mp_mmapsize, METH_NOARGS}, +#endif + {"set_tmp_dir", (PyCFunction)DBEnv_set_tmp_dir, METH_VARARGS}, +#if (DBVER >= 42) + {"get_tmp_dir", (PyCFunction)DBEnv_get_tmp_dir, METH_NOARGS}, +#endif + {"txn_begin", (PyCFunction)DBEnv_txn_begin, METH_VARARGS|METH_KEYWORDS}, + {"txn_checkpoint", (PyCFunction)DBEnv_txn_checkpoint, METH_VARARGS}, + {"txn_stat", (PyCFunction)DBEnv_txn_stat, METH_VARARGS}, +#if (DBVER >= 43) + {"txn_stat_print", (PyCFunction)DBEnv_txn_stat_print, + METH_VARARGS|METH_KEYWORDS}, +#endif +#if (DBVER >= 42) + {"get_tx_max", (PyCFunction)DBEnv_get_tx_max, METH_NOARGS}, + {"get_tx_timestamp", (PyCFunction)DBEnv_get_tx_timestamp, METH_NOARGS}, +#endif + {"set_tx_max", (PyCFunction)DBEnv_set_tx_max, METH_VARARGS}, {"set_tx_timestamp", (PyCFunction)DBEnv_set_tx_timestamp, METH_VARARGS}, - {"lock_detect", (PyCFunction)DBEnv_lock_detect, METH_VARARGS}, - {"lock_get", (PyCFunction)DBEnv_lock_get, METH_VARARGS}, - {"lock_id", (PyCFunction)DBEnv_lock_id, METH_NOARGS}, - {"lock_id_free", (PyCFunction)DBEnv_lock_id_free, METH_VARARGS}, - {"lock_put", (PyCFunction)DBEnv_lock_put, METH_VARARGS}, - {"lock_stat", (PyCFunction)DBEnv_lock_stat, METH_VARARGS}, - {"log_archive", (PyCFunction)DBEnv_log_archive, METH_VARARGS}, - {"log_flush", (PyCFunction)DBEnv_log_flush, METH_NOARGS}, - {"log_stat", (PyCFunction)DBEnv_log_stat, METH_VARARGS}, + {"lock_detect", (PyCFunction)DBEnv_lock_detect, METH_VARARGS}, + {"lock_get", (PyCFunction)DBEnv_lock_get, METH_VARARGS}, + {"lock_id", (PyCFunction)DBEnv_lock_id, METH_NOARGS}, + {"lock_id_free", (PyCFunction)DBEnv_lock_id_free, METH_VARARGS}, + {"lock_put", (PyCFunction)DBEnv_lock_put, METH_VARARGS}, + {"lock_stat", (PyCFunction)DBEnv_lock_stat, METH_VARARGS}, +#if (DBVER >= 43) + {"lock_stat_print", (PyCFunction)DBEnv_lock_stat_print, + METH_VARARGS|METH_KEYWORDS}, +#endif + {"log_cursor", (PyCFunction)DBEnv_log_cursor, METH_NOARGS}, + {"log_file", (PyCFunction)DBEnv_log_file, METH_VARARGS}, +#if (DBVER >= 44) + {"log_printf", (PyCFunction)DBEnv_log_printf, + METH_VARARGS|METH_KEYWORDS}, +#endif + {"log_archive", (PyCFunction)DBEnv_log_archive, METH_VARARGS}, + {"log_flush", (PyCFunction)DBEnv_log_flush, METH_NOARGS}, + {"log_stat", (PyCFunction)DBEnv_log_stat, METH_VARARGS}, +#if (DBVER >= 43) + {"log_stat_print", (PyCFunction)DBEnv_log_stat_print, + METH_VARARGS|METH_KEYWORDS}, +#endif #if (DBVER >= 44) - {"lsn_reset", (PyCFunction)DBEnv_lsn_reset, METH_VARARGS|METH_KEYWORDS}, + {"fileid_reset", (PyCFunction)DBEnv_fileid_reset, METH_VARARGS|METH_KEYWORDS}, + {"lsn_reset", (PyCFunction)DBEnv_lsn_reset, METH_VARARGS|METH_KEYWORDS}, #endif {"set_get_returns_none",(PyCFunction)DBEnv_set_get_returns_none, METH_VARARGS}, - {"txn_recover", (PyCFunction)DBEnv_txn_recover, METH_NOARGS}, + {"txn_recover", (PyCFunction)DBEnv_txn_recover, METH_NOARGS}, +#if (DBVER < 48) {"set_rpc_server", (PyCFunction)DBEnv_set_rpc_server, METH_VARARGS||METH_KEYWORDS}, - {"set_verbose", (PyCFunction)DBEnv_set_verbose, METH_VARARGS}, +#endif +#if (DBVER >= 43) + {"set_mp_max_openfd", (PyCFunction)DBEnv_set_mp_max_openfd, METH_VARARGS}, + {"get_mp_max_openfd", (PyCFunction)DBEnv_get_mp_max_openfd, METH_NOARGS}, + {"set_mp_max_write", (PyCFunction)DBEnv_set_mp_max_write, METH_VARARGS}, + {"get_mp_max_write", (PyCFunction)DBEnv_get_mp_max_write, METH_NOARGS}, +#endif + {"set_verbose", (PyCFunction)DBEnv_set_verbose, METH_VARARGS}, #if (DBVER >= 42) {"get_verbose", (PyCFunction)DBEnv_get_verbose, METH_VARARGS}, #endif @@ -6581,6 +8841,17 @@ static PyMethodDef DBEnv_methods[] = { {"rep_set_timeout", (PyCFunction)DBEnv_rep_set_timeout, METH_VARARGS}, {"rep_get_timeout", (PyCFunction)DBEnv_rep_get_timeout, METH_VARARGS}, #endif +#if (DBVER >= 47) + {"rep_set_clockskew", (PyCFunction)DBEnv_rep_set_clockskew, METH_VARARGS}, + {"rep_get_clockskew", (PyCFunction)DBEnv_rep_get_clockskew, METH_VARARGS}, +#endif + {"rep_stat", (PyCFunction)DBEnv_rep_stat, + METH_VARARGS|METH_KEYWORDS}, +#if (DBVER >= 43) + {"rep_stat_print", (PyCFunction)DBEnv_rep_stat_print, + METH_VARARGS|METH_KEYWORDS}, +#endif + #if (DBVER >= 45) {"repmgr_start", (PyCFunction)DBEnv_repmgr_start, METH_VARARGS|METH_KEYWORDS}, @@ -6611,6 +8882,12 @@ static PyMethodDef DBTxn_methods[] = { {"discard", (PyCFunction)DBTxn_discard, METH_NOARGS}, {"abort", (PyCFunction)DBTxn_abort, METH_NOARGS}, {"id", (PyCFunction)DBTxn_id, METH_NOARGS}, + {"set_timeout", (PyCFunction)DBTxn_set_timeout, + METH_VARARGS|METH_KEYWORDS}, +#if (DBVER >= 44) + {"set_name", (PyCFunction)DBTxn_set_name, METH_VARARGS}, + {"get_name", (PyCFunction)DBTxn_get_name, METH_NOARGS}, +#endif {NULL, NULL} /* sentinel */ }; @@ -6621,7 +8898,7 @@ static PyMethodDef DBSequence_methods[] = { {"get", (PyCFunction)DBSequence_get, METH_VARARGS|METH_KEYWORDS}, {"get_dbp", (PyCFunction)DBSequence_get_dbp, METH_NOARGS}, {"get_key", (PyCFunction)DBSequence_get_key, METH_NOARGS}, - {"init_value", (PyCFunction)DBSequence_init_value, METH_VARARGS}, + {"initial_value", (PyCFunction)DBSequence_initial_value, METH_VARARGS}, {"open", (PyCFunction)DBSequence_open, METH_VARARGS|METH_KEYWORDS}, {"remove", (PyCFunction)DBSequence_remove, METH_VARARGS|METH_KEYWORDS}, {"set_cachesize", (PyCFunction)DBSequence_set_cachesize, METH_VARARGS}, @@ -6631,6 +8908,8 @@ static PyMethodDef DBSequence_methods[] = { {"set_range", (PyCFunction)DBSequence_set_range, METH_VARARGS}, {"get_range", (PyCFunction)DBSequence_get_range, METH_NOARGS}, {"stat", (PyCFunction)DBSequence_stat, METH_VARARGS|METH_KEYWORDS}, + {"stat_print", (PyCFunction)DBSequence_stat_print, + METH_VARARGS|METH_KEYWORDS}, {NULL, NULL} /* sentinel */ }; #endif @@ -6644,7 +8923,9 @@ DBEnv_db_home_get(DBEnvObject* self) CHECK_ENV_NOT_CLOSED(self); #if (DBVER >= 42) + MYDB_BEGIN_ALLOW_THREADS; self->db_env->get_home(self->db_env, &home); + MYDB_END_ALLOW_THREADS; #else home=self->db_env->db_home; #endif @@ -6679,23 +8960,23 @@ statichere PyTypeObject DB_Type = { 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ + &DB_sequence,/*tp_as_sequence*/ &DB_mapping,/*tp_as_mapping*/ 0, /*tp_hash*/ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ 0, /* tp_setattro */ - 0, /* tp_as_buffer */ + 0, /* tp_as_buffer */ #if (PY_VERSION_HEX < 0x03000000) Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */ #else Py_TPFLAGS_DEFAULT, /* tp_flags */ #endif 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ offsetof(DBObject, in_weakreflist), /* tp_weaklistoffset */ 0, /*tp_iter*/ 0, /*tp_iternext*/ @@ -6747,6 +9028,49 @@ statichere PyTypeObject DBCursor_Type = { }; +statichere PyTypeObject DBLogCursor_Type = { +#if (PY_VERSION_HEX < 0x03000000) + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ +#else + PyVarObject_HEAD_INIT(NULL, 0) +#endif + "DBLogCursor", /*tp_name*/ + sizeof(DBLogCursorObject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)DBLogCursor_dealloc,/*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ +#if (PY_VERSION_HEX < 0x03000000) + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */ +#else + Py_TPFLAGS_DEFAULT, /* tp_flags */ +#endif + 0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + offsetof(DBLogCursorObject, in_weakreflist), /* tp_weaklistoffset */ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + DBLogCursor_methods, /*tp_methods*/ + 0, /*tp_members*/ +}; + + statichere PyTypeObject DBEnv_Type = { #if (PY_VERSION_HEX < 0x03000000) PyObject_HEAD_INIT(NULL) @@ -6768,20 +9092,20 @@ statichere PyTypeObject DBEnv_Type = { 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ 0, /* tp_setattro */ - 0, /* tp_as_buffer */ + 0, /* tp_as_buffer */ #if (PY_VERSION_HEX < 0x03000000) Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */ #else Py_TPFLAGS_DEFAULT, /* tp_flags */ #endif 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ offsetof(DBEnvObject, in_weakreflist), /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ @@ -6811,20 +9135,20 @@ statichere PyTypeObject DBTxn_Type = { 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ 0, /* tp_setattro */ - 0, /* tp_as_buffer */ + 0, /* tp_as_buffer */ #if (PY_VERSION_HEX < 0x03000000) Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */ #else Py_TPFLAGS_DEFAULT, /* tp_flags */ #endif 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ offsetof(DBTxnObject, in_weakreflist), /* tp_weaklistoffset */ 0, /*tp_iter*/ 0, /*tp_iternext*/ @@ -6854,20 +9178,20 @@ statichere PyTypeObject DBLock_Type = { 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ 0, /* tp_setattro */ - 0, /* tp_as_buffer */ + 0, /* tp_as_buffer */ #if (PY_VERSION_HEX < 0x03000000) Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */ #else Py_TPFLAGS_DEFAULT, /* tp_flags */ #endif 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ offsetof(DBLockObject, in_weakreflist), /* tp_weaklistoffset */ }; @@ -6893,20 +9217,20 @@ statichere PyTypeObject DBSequence_Type = { 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ 0, /* tp_setattro */ - 0, /* tp_as_buffer */ + 0, /* tp_as_buffer */ #if (PY_VERSION_HEX < 0x03000000) Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */ #else Py_TPFLAGS_DEFAULT, /* tp_flags */ #endif 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ offsetof(DBSequenceObject, in_weakreflist), /* tp_weaklistoffset */ 0, /*tp_iter*/ 0, /*tp_iternext*/ @@ -7031,14 +9355,26 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ { PyObject* m; PyObject* d; - PyObject* pybsddb_version_s = PyBytes_FromString( PY_BSDDB_VERSION ); - PyObject* db_version_s = PyBytes_FromString( DB_VERSION_STRING ); - PyObject* cvsid_s = PyBytes_FromString( rcs_id ); PyObject* py_api; + PyObject* pybsddb_version_s; + PyObject* db_version_s; + PyObject* cvsid_s; + +#if (PY_VERSION_HEX < 0x03000000) + pybsddb_version_s = PyString_FromString(PY_BSDDB_VERSION); + db_version_s = PyString_FromString(DB_VERSION_STRING); + cvsid_s = PyString_FromString(rcs_id); +#else + /* This data should be ascii, so UTF-8 conversion is fine */ + pybsddb_version_s = PyUnicode_FromString(PY_BSDDB_VERSION); + db_version_s = PyUnicode_FromString(DB_VERSION_STRING); + cvsid_s = PyUnicode_FromString(rcs_id); +#endif /* Initialize object types */ if ((PyType_Ready(&DB_Type) < 0) || (PyType_Ready(&DBCursor_Type) < 0) + || (PyType_Ready(&DBLogCursor_Type) < 0) || (PyType_Ready(&DBEnv_Type) < 0) || (PyType_Ready(&DBTxn_Type) < 0) || (PyType_Ready(&DBLock_Type) < 0) @@ -7068,7 +9404,7 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ #if (PY_VERSION_HEX < 0x03000000) return; #else - return NULL; + return NULL; #endif } @@ -7091,6 +9427,7 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_MAX_PAGES); ADD_INT(d, DB_MAX_RECORDS); +#if (DBVER < 48) #if (DBVER >= 42) ADD_INT(d, DB_RPCCLIENT); #else @@ -7098,7 +9435,11 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ /* allow apps to be written using DB_RPCCLIENT on older Berkeley DB */ _addIntToDict(d, "DB_RPCCLIENT", DB_CLIENT); #endif +#endif + +#if (DBVER < 48) ADD_INT(d, DB_XA_CREATE); +#endif ADD_INT(d, DB_CREATE); ADD_INT(d, DB_NOMMAP); @@ -7115,7 +9456,13 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_INIT_TXN); ADD_INT(d, DB_JOINENV); +#if (DBVER >= 48) + ADD_INT(d, DB_GID_SIZE); +#else ADD_INT(d, DB_XIDDATASIZE); + /* Allow new code to work in old BDB releases */ + _addIntToDict(d, "DB_GID_SIZE", DB_XIDDATASIZE); +#endif ADD_INT(d, DB_RECOVER); ADD_INT(d, DB_RECOVER_FATAL); @@ -7130,6 +9477,10 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_TXN_SYNC); ADD_INT(d, DB_TXN_NOWAIT); +#if (DBVER >= 46) + ADD_INT(d, DB_TXN_WAIT); +#endif + ADD_INT(d, DB_EXCL); ADD_INT(d, DB_FCNTL_LOCKING); ADD_INT(d, DB_ODDFILESIZE); @@ -7141,6 +9492,7 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_VERIFY); ADD_INT(d, DB_UPGRADE); + ADD_INT(d, DB_PRINTABLE); ADD_INT(d, DB_AGGRESSIVE); ADD_INT(d, DB_NOORDERCHK); ADD_INT(d, DB_ORDERCHKONLY); @@ -7226,6 +9578,10 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_REVSPLITOFF); ADD_INT(d, DB_SNAPSHOT); +#if (DBVER >= 43) + ADD_INT(d, DB_INORDER); +#endif + ADD_INT(d, DB_JOIN_NOSORT); ADD_INT(d, DB_AFTER); @@ -7235,12 +9591,6 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_CACHED_COUNTS); #endif -#if (DBVER >= 41) - _addIntToDict(d, "DB_CHECKPOINT", 0); -#else - ADD_INT(d, DB_CHECKPOINT); - ADD_INT(d, DB_CURLSN); -#endif #if (DBVER <= 41) ADD_INT(d, DB_COMMIT); #endif @@ -7251,6 +9601,7 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_FIRST); ADD_INT(d, DB_FLUSH); ADD_INT(d, DB_GET_BOTH); + ADD_INT(d, DB_GET_BOTH_RANGE); ADD_INT(d, DB_GET_RECNO); ADD_INT(d, DB_JOIN_ITEM); ADD_INT(d, DB_KEYFIRST); @@ -7265,6 +9616,9 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_POSITION); ADD_INT(d, DB_PREV); ADD_INT(d, DB_PREV_NODUP); +#if (DBVER >= 46) + ADD_INT(d, DB_PREV_DUP); +#endif #if (DBVER < 45) ADD_INT(d, DB_RECORDCOUNT); #endif @@ -7280,17 +9634,18 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_MULTIPLE_KEY); #if (DBVER >= 44) + ADD_INT(d, DB_IMMUTABLE_KEY); ADD_INT(d, DB_READ_UNCOMMITTED); /* replaces DB_DIRTY_READ in 4.4 */ ADD_INT(d, DB_READ_COMMITTED); #endif +#if (DBVER >= 44) + ADD_INT(d, DB_FREELIST_ONLY); + ADD_INT(d, DB_FREE_SPACE); +#endif + ADD_INT(d, DB_DONOTINDEX); -#if (DBVER >= 41) - _addIntToDict(d, "DB_INCOMPLETE", 0); -#else - ADD_INT(d, DB_INCOMPLETE); -#endif ADD_INT(d, DB_KEYEMPTY); ADD_INT(d, DB_KEYEXIST); ADD_INT(d, DB_LOCK_DEADLOCK); @@ -7311,14 +9666,30 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_PANIC_ENVIRONMENT); ADD_INT(d, DB_NOPANIC); -#if (DBVER >= 41) ADD_INT(d, DB_OVERWRITE); + +#if (DBVER >= 43) + ADD_INT(d, DB_STAT_SUBSYSTEM); + ADD_INT(d, DB_STAT_MEMP_HASH); +#endif + +#if (DBVER >= 48) + ADD_INT(d, DB_OVERWRITE_DUP); #endif -#ifdef DB_REGISTER +#if (DBVER >= 47) + ADD_INT(d, DB_FOREIGN_ABORT); + ADD_INT(d, DB_FOREIGN_CASCADE); + ADD_INT(d, DB_FOREIGN_NULLIFY); +#endif + +#if (DBVER >= 44) ADD_INT(d, DB_REGISTER); #endif + ADD_INT(d, DB_EID_INVALID); + ADD_INT(d, DB_EID_BROADCAST); + #if (DBVER >= 42) ADD_INT(d, DB_TIME_NOTGRANTED); ADD_INT(d, DB_TXN_NOT_DURABLE); @@ -7391,6 +9762,32 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_REP_MASTER); ADD_INT(d, DB_REP_CLIENT); + + ADD_INT(d, DB_REP_PERMANENT); + +#if (DBVER >= 44) + ADD_INT(d, DB_REP_CONF_NOAUTOINIT); + ADD_INT(d, DB_REP_CONF_DELAYCLIENT); + ADD_INT(d, DB_REP_CONF_BULK); + ADD_INT(d, DB_REP_CONF_NOWAIT); + ADD_INT(d, DB_REP_ANYWHERE); + ADD_INT(d, DB_REP_REREQUEST); +#endif + +#if (DBVER >= 42) + ADD_INT(d, DB_REP_NOBUFFER); +#endif + +#if (DBVER >= 46) + ADD_INT(d, DB_REP_LEASE_EXPIRED); + ADD_INT(d, DB_IGNORE_LEASE); +#endif + +#if (DBVER >= 47) + ADD_INT(d, DB_REP_CONF_LEASE); + ADD_INT(d, DB_REPMGR_CONF_2SITE_STRICT); +#endif + #if (DBVER >= 45) ADD_INT(d, DB_REP_ELECTION); @@ -7402,6 +9799,11 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ #if (DBVER >= 46) ADD_INT(d, DB_REP_CHECKPOINT_DELAY); ADD_INT(d, DB_REP_FULL_ELECTION_TIMEOUT); + ADD_INT(d, DB_REP_LEASE_TIMEOUT); +#endif +#if (DBVER >= 47) + ADD_INT(d, DB_REP_HEARTBEAT_MONITOR); + ADD_INT(d, DB_REP_HEARTBEAT_SEND); #endif #if (DBVER >= 45) @@ -7414,7 +9816,6 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_REPMGR_ACKS_QUORUM); ADD_INT(d, DB_REPMGR_CONNECTED); ADD_INT(d, DB_REPMGR_DISCONNECTED); - ADD_INT(d, DB_STAT_CLEAR); ADD_INT(d, DB_STAT_ALL); #endif @@ -7430,12 +9831,16 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_DSYNC_LOG); #endif -#if (DBVER >= 41) ADD_INT(d, DB_ENCRYPT_AES); ADD_INT(d, DB_AUTO_COMMIT); -#else - /* allow Berkeley DB 4.1 aware apps to run on older versions */ - _addIntToDict(d, "DB_AUTO_COMMIT", 0); + ADD_INT(d, DB_PRIORITY_VERY_LOW); + ADD_INT(d, DB_PRIORITY_LOW); + ADD_INT(d, DB_PRIORITY_DEFAULT); + ADD_INT(d, DB_PRIORITY_HIGH); + ADD_INT(d, DB_PRIORITY_VERY_HIGH); + +#if (DBVER >= 46) + ADD_INT(d, DB_PRIORITY_UNCHANGED); #endif ADD_INT(d, EINVAL); @@ -7473,7 +9878,7 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ * using one base class. */ PyDict_SetItemString(d, "KeyError", PyExc_KeyError); PyRun_String("class DBNotFoundError(DBError, KeyError): pass\n" - "class DBKeyEmptyError(DBError, KeyError): pass", + "class DBKeyEmptyError(DBError, KeyError): pass", Py_file_input, d, d); DBNotFoundError = PyDict_GetItemString(d, "DBNotFoundError"); DBKeyEmptyError = PyDict_GetItemString(d, "DBKeyEmptyError"); @@ -7499,12 +9904,7 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ } #endif - -#if !INCOMPLETE_IS_WARNING - MAKE_EX(DBIncompleteError); -#endif MAKE_EX(DBCursorClosedError); - MAKE_EX(DBKeyEmptyError); MAKE_EX(DBKeyExistError); MAKE_EX(DBLockDeadlockError); MAKE_EX(DBLockNotGrantedError); @@ -7530,23 +9930,52 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ #if (DBVER >= 42) MAKE_EX(DBRepHandleDeadError); #endif +#if (DBVER >= 44) + MAKE_EX(DBRepLockoutError); +#endif MAKE_EX(DBRepUnavailError); +#if (DBVER >= 46) + MAKE_EX(DBRepLeaseExpiredError); +#endif + +#if (DBVER >= 47) + MAKE_EX(DBForeignConflictError); +#endif + #undef MAKE_EX - /* Initiliase the C API structure and add it to the module */ - bsddb_api.db_type = &DB_Type; - bsddb_api.dbcursor_type = &DBCursor_Type; - bsddb_api.dbenv_type = &DBEnv_Type; - bsddb_api.dbtxn_type = &DBTxn_Type; - bsddb_api.dblock_type = &DBLock_Type; + /* Initialise the C API structure and add it to the module */ + bsddb_api.db_type = &DB_Type; + bsddb_api.dbcursor_type = &DBCursor_Type; + bsddb_api.dblogcursor_type = &DBLogCursor_Type; + bsddb_api.dbenv_type = &DBEnv_Type; + bsddb_api.dbtxn_type = &DBTxn_Type; + bsddb_api.dblock_type = &DBLock_Type; #if (DBVER >= 43) - bsddb_api.dbsequence_type = &DBSequence_Type; + bsddb_api.dbsequence_type = &DBSequence_Type; #endif - bsddb_api.makeDBError = makeDBError; + bsddb_api.makeDBError = makeDBError; + /* + ** Capsules exist from Python 3.1, but I + ** don't want to break the API compatibility + ** for already published Python versions. + */ +#if (PY_VERSION_HEX < 0x03020000) py_api = PyCObject_FromVoidPtr((void*)&bsddb_api, NULL); +#else + { + char py_api_name[250]; + + strcpy(py_api_name, _bsddbModuleName); + strcat(py_api_name, ".api"); + + py_api = PyCapsule_New((void*)&bsddb_api, py_api_name, NULL); + } +#endif + PyDict_SetItemString(d, "api", py_api); Py_DECREF(py_api); diff --git a/Modules/bsddb.h b/Modules/bsddb.h index 673f5fc1..70c7bf88 100644 --- a/Modules/bsddb.h +++ b/Modules/bsddb.h @@ -70,6 +70,10 @@ * DBLock (A lock handle) * DBSequence (Sequence) * + * New datatypes: + * + * DBLogCursor (Log Cursor) + * */ /* --------------------------------------------------------------------- */ @@ -105,7 +109,7 @@ #error "eek! DBVER can't handle minor versions > 9" #endif -#define PY_BSDDB_VERSION "4.7.3" +#define PY_BSDDB_VERSION "4.8.4" /* Python object definitions */ @@ -122,6 +126,7 @@ struct behaviourFlags { struct DBObject; /* Forward declaration */ struct DBCursorObject; /* Forward declaration */ +struct DBLogCursorObject; /* Forward declaration */ struct DBTxnObject; /* Forward declaration */ struct DBSequenceObject; /* Forward declaration */ @@ -134,6 +139,7 @@ typedef struct { PyObject* event_notifyCallback; struct DBObject *children_dbs; struct DBTxnObject *children_txns; + struct DBLogCursorObject *children_logcursors; PyObject *private_obj; PyObject *rep_transport; PyObject *in_weakreflist; /* List of weak references */ @@ -145,7 +151,6 @@ typedef struct DBObject { DBEnvObject* myenvobj; /* PyObject containing the DB_ENV */ u_int32_t flags; /* saved flags from open() */ u_int32_t setflags; /* saved flags from set_flags() */ - int haveStat; struct behaviourFlags moduleFlags; struct DBTxnObject *txn; struct DBCursorObject *children_cursors; @@ -193,9 +198,20 @@ typedef struct DBTxnObject { } DBTxnObject; +typedef struct DBLogCursorObject { + PyObject_HEAD + DB_LOGC* logc; + DBEnvObject* env; + struct DBLogCursorObject **sibling_prev_p; + struct DBLogCursorObject *sibling_next; + PyObject *in_weakreflist; /* List of weak references */ +} DBLogCursorObject; + + typedef struct { PyObject_HEAD DB_LOCK lock; + int lock_initialized; /* Signal if we actually have a lock */ PyObject *in_weakreflist; /* List of weak references */ } DBLockObject; @@ -220,6 +236,7 @@ typedef struct DBSequenceObject { /* To access the structure from an external module, use code like the following (error checking missed out for clarity): + // If you are using Python before 3.2: BSDDB_api* bsddb_api; PyObject* mod; PyObject* cobj; @@ -231,6 +248,15 @@ typedef struct DBSequenceObject { Py_DECREF(cobj); Py_DECREF(mod); + + // If you are using Python 3.2 or up: + BSDDB_api* bsddb_api; + + // Use "bsddb3._pybsddb.api" if you're using + // the standalone pybsddb add-on. + bsddb_api = (void **)PyCapsule_Import("bsddb._bsddb.api", 1); + + The structure's members must not be changed. */ @@ -238,6 +264,7 @@ typedef struct { /* Type objects */ PyTypeObject* db_type; PyTypeObject* dbcursor_type; + PyTypeObject* dblogcursor_type; PyTypeObject* dbenv_type; PyTypeObject* dbtxn_type; PyTypeObject* dblock_type; @@ -247,7 +274,6 @@ typedef struct { /* Functions */ int (*makeDBError)(int err); - } BSDDB_api; diff --git a/Modules/bsddbmodule.c b/Modules/bsddbmodule.c index 09728821..578cf3df 100644 --- a/Modules/bsddbmodule.c +++ b/Modules/bsddbmodule.c @@ -30,12 +30,12 @@ (it messes up the info required in the Setup file) */ typedef struct { - PyObject_HEAD - DB *di_bsddb; - int di_size; /* -1 means recompute */ - int di_type; + PyObject_HEAD + DB *di_bsddb; + int di_size; /* -1 means recompute */ + int di_type; #ifdef WITH_THREAD - PyThread_type_lock di_lock; + PyThread_type_lock di_lock; #endif } bsddbobject; @@ -44,819 +44,821 @@ static PyTypeObject Bsddbtype; #define is_bsddbobject(v) ((v)->ob_type == &Bsddbtype) #define check_bsddbobject_open(v, r) if ((v)->di_bsddb == NULL) \ { PyErr_SetString(BsddbError, \ - "BSDDB object has already been closed"); \ + "BSDDB object has already been closed"); \ return r; } static PyObject *BsddbError; static PyObject * newdbhashobject(char *file, int flags, int mode, - int bsize, int ffactor, int nelem, int cachesize, - int hash, int lorder) + int bsize, int ffactor, int nelem, int cachesize, + int hash, int lorder) { - bsddbobject *dp; - HASHINFO info; + bsddbobject *dp; + HASHINFO info; - if ((dp = PyObject_New(bsddbobject, &Bsddbtype)) == NULL) - return NULL; + if ((dp = PyObject_New(bsddbobject, &Bsddbtype)) == NULL) + return NULL; - info.bsize = bsize; - info.ffactor = ffactor; - info.nelem = nelem; - info.cachesize = cachesize; - info.hash = NULL; /* XXX should derive from hash argument */ - info.lorder = lorder; + info.bsize = bsize; + info.ffactor = ffactor; + info.nelem = nelem; + info.cachesize = cachesize; + info.hash = NULL; /* XXX should derive from hash argument */ + info.lorder = lorder; #ifdef O_BINARY - flags |= O_BINARY; + flags |= O_BINARY; #endif - Py_BEGIN_ALLOW_THREADS - dp->di_bsddb = dbopen(file, flags, mode, DB_HASH, &info); - Py_END_ALLOW_THREADS - if (dp->di_bsddb == NULL) { - PyErr_SetFromErrno(BsddbError); + Py_BEGIN_ALLOW_THREADS + dp->di_bsddb = dbopen(file, flags, mode, DB_HASH, &info); + Py_END_ALLOW_THREADS + if (dp->di_bsddb == NULL) { + PyErr_SetFromErrno(BsddbError); #ifdef WITH_THREAD - dp->di_lock = NULL; + dp->di_lock = NULL; #endif - Py_DECREF(dp); - return NULL; - } + Py_DECREF(dp); + return NULL; + } - dp->di_size = -1; - dp->di_type = DB_HASH; + dp->di_size = -1; + dp->di_type = DB_HASH; #ifdef WITH_THREAD - dp->di_lock = PyThread_allocate_lock(); - if (dp->di_lock == NULL) { - PyErr_SetString(BsddbError, "can't allocate lock"); - Py_DECREF(dp); - return NULL; - } + dp->di_lock = PyThread_allocate_lock(); + if (dp->di_lock == NULL) { + PyErr_SetString(BsddbError, "can't allocate lock"); + Py_DECREF(dp); + return NULL; + } #endif - return (PyObject *)dp; + return (PyObject *)dp; } static PyObject * newdbbtobject(char *file, int flags, int mode, - int btflags, int cachesize, int maxkeypage, - int minkeypage, int psize, int lorder) + int btflags, int cachesize, int maxkeypage, + int minkeypage, int psize, int lorder) { - bsddbobject *dp; - BTREEINFO info; + bsddbobject *dp; + BTREEINFO info; - if ((dp = PyObject_New(bsddbobject, &Bsddbtype)) == NULL) - return NULL; + if ((dp = PyObject_New(bsddbobject, &Bsddbtype)) == NULL) + return NULL; - info.flags = btflags; - info.cachesize = cachesize; - info.maxkeypage = maxkeypage; - info.minkeypage = minkeypage; - info.psize = psize; - info.lorder = lorder; - info.compare = 0; /* Use default comparison functions, for now..*/ - info.prefix = 0; + info.flags = btflags; + info.cachesize = cachesize; + info.maxkeypage = maxkeypage; + info.minkeypage = minkeypage; + info.psize = psize; + info.lorder = lorder; + info.compare = 0; /* Use default comparison functions, for now..*/ + info.prefix = 0; #ifdef O_BINARY - flags |= O_BINARY; + flags |= O_BINARY; #endif - Py_BEGIN_ALLOW_THREADS - dp->di_bsddb = dbopen(file, flags, mode, DB_BTREE, &info); - Py_END_ALLOW_THREADS - if (dp->di_bsddb == NULL) { - PyErr_SetFromErrno(BsddbError); + Py_BEGIN_ALLOW_THREADS + dp->di_bsddb = dbopen(file, flags, mode, DB_BTREE, &info); + Py_END_ALLOW_THREADS + if (dp->di_bsddb == NULL) { + PyErr_SetFromErrno(BsddbError); #ifdef WITH_THREAD - dp->di_lock = NULL; + dp->di_lock = NULL; #endif - Py_DECREF(dp); - return NULL; - } + Py_DECREF(dp); + return NULL; + } - dp->di_size = -1; - dp->di_type = DB_BTREE; + dp->di_size = -1; + dp->di_type = DB_BTREE; #ifdef WITH_THREAD - dp->di_lock = PyThread_allocate_lock(); - if (dp->di_lock == NULL) { - PyErr_SetString(BsddbError, "can't allocate lock"); - Py_DECREF(dp); - return NULL; - } + dp->di_lock = PyThread_allocate_lock(); + if (dp->di_lock == NULL) { + PyErr_SetString(BsddbError, "can't allocate lock"); + Py_DECREF(dp); + return NULL; + } #endif - return (PyObject *)dp; + return (PyObject *)dp; } static PyObject * newdbrnobject(char *file, int flags, int mode, - int rnflags, int cachesize, int psize, int lorder, - size_t reclen, u_char bval, char *bfname) + int rnflags, int cachesize, int psize, int lorder, + size_t reclen, u_char bval, char *bfname) { - bsddbobject *dp; - RECNOINFO info; - int fd; + bsddbobject *dp; + RECNOINFO info; + int fd; - if ((dp = PyObject_New(bsddbobject, &Bsddbtype)) == NULL) - return NULL; + if ((dp = PyObject_New(bsddbobject, &Bsddbtype)) == NULL) + return NULL; - info.flags = rnflags; - info.cachesize = cachesize; - info.psize = psize; - info.lorder = lorder; - info.reclen = reclen; - info.bval = bval; - info.bfname = bfname; + info.flags = rnflags; + info.cachesize = cachesize; + info.psize = psize; + info.lorder = lorder; + info.reclen = reclen; + info.bval = bval; + info.bfname = bfname; #ifdef O_BINARY - flags |= O_BINARY; + flags |= O_BINARY; #endif - /* This is a hack to avoid a dbopen() bug that happens when - * it fails. */ - fd = open(file, flags); - if (fd == -1) { - dp->di_bsddb = NULL; - } - else { - close(fd); - Py_BEGIN_ALLOW_THREADS - dp->di_bsddb = dbopen(file, flags, mode, DB_RECNO, &info); - Py_END_ALLOW_THREADS - } - if (dp->di_bsddb == NULL) { - PyErr_SetFromErrno(BsddbError); + /* This is a hack to avoid a dbopen() bug that happens when + * it fails. */ + fd = open(file, flags); + if (fd == -1) { + dp->di_bsddb = NULL; + } + else { + close(fd); + Py_BEGIN_ALLOW_THREADS + dp->di_bsddb = dbopen(file, flags, mode, DB_RECNO, &info); + Py_END_ALLOW_THREADS + } + if (dp->di_bsddb == NULL) { + PyErr_SetFromErrno(BsddbError); #ifdef WITH_THREAD - dp->di_lock = NULL; + dp->di_lock = NULL; #endif - Py_DECREF(dp); - return NULL; - } + Py_DECREF(dp); + return NULL; + } - dp->di_size = -1; - dp->di_type = DB_RECNO; + dp->di_size = -1; + dp->di_type = DB_RECNO; #ifdef WITH_THREAD - dp->di_lock = PyThread_allocate_lock(); - if (dp->di_lock == NULL) { - PyErr_SetString(BsddbError, "can't allocate lock"); - Py_DECREF(dp); - return NULL; - } + dp->di_lock = PyThread_allocate_lock(); + if (dp->di_lock == NULL) { + PyErr_SetString(BsddbError, "can't allocate lock"); + Py_DECREF(dp); + return NULL; + } #endif - return (PyObject *)dp; + return (PyObject *)dp; } static void bsddb_dealloc(bsddbobject *dp) { #ifdef WITH_THREAD - if (dp->di_lock) { - PyThread_acquire_lock(dp->di_lock, 0); - PyThread_release_lock(dp->di_lock); - PyThread_free_lock(dp->di_lock); - dp->di_lock = NULL; - } + if (dp->di_lock) { + PyThread_acquire_lock(dp->di_lock, 0); + PyThread_release_lock(dp->di_lock); + PyThread_free_lock(dp->di_lock); + dp->di_lock = NULL; + } #endif - if (dp->di_bsddb != NULL) { - int status; - Py_BEGIN_ALLOW_THREADS - status = (dp->di_bsddb->close)(dp->di_bsddb); - Py_END_ALLOW_THREADS - if (status != 0) - fprintf(stderr, - "Python bsddb: close errno %d in dealloc\n", - errno); - } - PyObject_Del(dp); + if (dp->di_bsddb != NULL) { + int status; + Py_BEGIN_ALLOW_THREADS + status = (dp->di_bsddb->close)(dp->di_bsddb); + Py_END_ALLOW_THREADS + if (status != 0) + fprintf(stderr, + "Python bsddb: close errno %d in dealloc\n", + errno); + } + PyObject_Del(dp); } #ifdef WITH_THREAD #define BSDDB_BGN_SAVE(_dp) \ - Py_BEGIN_ALLOW_THREADS PyThread_acquire_lock(_dp->di_lock,1); + Py_BEGIN_ALLOW_THREADS PyThread_acquire_lock(_dp->di_lock,1); #define BSDDB_END_SAVE(_dp) \ - PyThread_release_lock(_dp->di_lock); Py_END_ALLOW_THREADS + PyThread_release_lock(_dp->di_lock); Py_END_ALLOW_THREADS #else -#define BSDDB_BGN_SAVE(_dp) Py_BEGIN_ALLOW_THREADS +#define BSDDB_BGN_SAVE(_dp) Py_BEGIN_ALLOW_THREADS #define BSDDB_END_SAVE(_dp) Py_END_ALLOW_THREADS #endif static Py_ssize_t bsddb_length(bsddbobject *dp) { - check_bsddbobject_open(dp, -1); - if (dp->di_size < 0) { - DBT krec, drec; - int status; - int size = 0; - BSDDB_BGN_SAVE(dp) - for (status = (dp->di_bsddb->seq)(dp->di_bsddb, - &krec, &drec,R_FIRST); - status == 0; - status = (dp->di_bsddb->seq)(dp->di_bsddb, - &krec, &drec, R_NEXT)) - size++; - BSDDB_END_SAVE(dp) - if (status < 0) { - PyErr_SetFromErrno(BsddbError); - return -1; - } - dp->di_size = size; - } - return dp->di_size; + check_bsddbobject_open(dp, -1); + if (dp->di_size < 0) { + DBT krec, drec; + int status; + int size = 0; + BSDDB_BGN_SAVE(dp) + for (status = (dp->di_bsddb->seq)(dp->di_bsddb, + &krec, &drec,R_FIRST); + status == 0; + status = (dp->di_bsddb->seq)(dp->di_bsddb, + &krec, &drec, R_NEXT)) + size++; + BSDDB_END_SAVE(dp) + if (status < 0) { + PyErr_SetFromErrno(BsddbError); + return -1; + } + dp->di_size = size; + } + return dp->di_size; } static PyObject * bsddb_subscript(bsddbobject *dp, PyObject *key) { - int status; - DBT krec, drec; - char *data,buf[4096]; - int size; - PyObject *result; - recno_t recno; - - if (dp->di_type == DB_RECNO) { - if (!PyArg_Parse(key, "i", &recno)) { - PyErr_SetString(PyExc_TypeError, - "key type must be integer"); - return NULL; - } - krec.data = &recno; - krec.size = sizeof(recno); - } - else { - if (!PyArg_Parse(key, "s#", &data, &size)) { - PyErr_SetString(PyExc_TypeError, - "key type must be string"); - return NULL; - } - krec.data = data; - krec.size = size; - } - check_bsddbobject_open(dp, NULL); - - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->get)(dp->di_bsddb, &krec, &drec, 0); - if (status == 0) { - if (drec.size > sizeof(buf)) data = malloc(drec.size); - else data = buf; - if (data!=NULL) memcpy(data,drec.data,drec.size); - } - BSDDB_END_SAVE(dp) - if (data==NULL) return PyErr_NoMemory(); - if (status != 0) { - if (status < 0) - PyErr_SetFromErrno(BsddbError); - else - PyErr_SetObject(PyExc_KeyError, key); - return NULL; - } - - result = PyString_FromStringAndSize(data, (int)drec.size); - if (data != buf) free(data); - return result; + int status; + DBT krec, drec; + char *data = NULL; + char buf[4096]; + int size; + PyObject *result; + recno_t recno; + + if (dp->di_type == DB_RECNO) { + if (!PyArg_Parse(key, "i", &recno)) { + PyErr_SetString(PyExc_TypeError, + "key type must be integer"); + return NULL; + } + krec.data = &recno; + krec.size = sizeof(recno); + } + else { + if (!PyArg_Parse(key, "s#", &data, &size)) { + PyErr_SetString(PyExc_TypeError, + "key type must be string"); + return NULL; + } + krec.data = data; + krec.size = size; + } + check_bsddbobject_open(dp, NULL); + + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->get)(dp->di_bsddb, &krec, &drec, 0); + if (status == 0) { + if (drec.size > sizeof(buf)) data = malloc(drec.size); + else data = buf; + if (data!=NULL) memcpy(data,drec.data,drec.size); + } + BSDDB_END_SAVE(dp) + if (data==NULL) return PyErr_NoMemory(); + if (status != 0) { + if (status < 0) + PyErr_SetFromErrno(BsddbError); + else + PyErr_SetObject(PyExc_KeyError, key); + return NULL; + } + + result = PyString_FromStringAndSize(data, (int)drec.size); + if (data != buf) free(data); + return result; } static int bsddb_ass_sub(bsddbobject *dp, PyObject *key, PyObject *value) { - int status; - DBT krec, drec; - char *data; - int size; - recno_t recno; - - if (dp->di_type == DB_RECNO) { - if (!PyArg_Parse(key, "i", &recno)) { - PyErr_SetString(PyExc_TypeError, - "bsddb key type must be integer"); - return -1; - } - krec.data = &recno; - krec.size = sizeof(recno); - } - else { - if (!PyArg_Parse(key, "s#", &data, &size)) { - PyErr_SetString(PyExc_TypeError, - "bsddb key type must be string"); - return -1; - } - krec.data = data; - krec.size = size; - } - check_bsddbobject_open(dp, -1); - dp->di_size = -1; - if (value == NULL) { - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->del)(dp->di_bsddb, &krec, 0); - BSDDB_END_SAVE(dp) - } - else { - if (!PyArg_Parse(value, "s#", &data, &size)) { - PyErr_SetString(PyExc_TypeError, - "bsddb value type must be string"); - return -1; - } - drec.data = data; - drec.size = size; - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->put)(dp->di_bsddb, &krec, &drec, 0); - BSDDB_END_SAVE(dp) - } - if (status != 0) { - if (status < 0) - PyErr_SetFromErrno(BsddbError); - else - PyErr_SetObject(PyExc_KeyError, key); - return -1; - } - return 0; + int status; + DBT krec, drec; + char *data; + int size; + recno_t recno; + + if (dp->di_type == DB_RECNO) { + if (!PyArg_Parse(key, "i", &recno)) { + PyErr_SetString(PyExc_TypeError, + "bsddb key type must be integer"); + return -1; + } + krec.data = &recno; + krec.size = sizeof(recno); + } + else { + if (!PyArg_Parse(key, "s#", &data, &size)) { + PyErr_SetString(PyExc_TypeError, + "bsddb key type must be string"); + return -1; + } + krec.data = data; + krec.size = size; + } + check_bsddbobject_open(dp, -1); + dp->di_size = -1; + if (value == NULL) { + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->del)(dp->di_bsddb, &krec, 0); + BSDDB_END_SAVE(dp) + } + else { + if (!PyArg_Parse(value, "s#", &data, &size)) { + PyErr_SetString(PyExc_TypeError, + "bsddb value type must be string"); + return -1; + } + drec.data = data; + drec.size = size; + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->put)(dp->di_bsddb, &krec, &drec, 0); + BSDDB_END_SAVE(dp) + } + if (status != 0) { + if (status < 0) + PyErr_SetFromErrno(BsddbError); + else + PyErr_SetObject(PyExc_KeyError, key); + return -1; + } + return 0; } static PyMappingMethods bsddb_as_mapping = { - (lenfunc)bsddb_length, /*mp_length*/ - (binaryfunc)bsddb_subscript, /*mp_subscript*/ - (objobjargproc)bsddb_ass_sub, /*mp_ass_subscript*/ + (lenfunc)bsddb_length, /*mp_length*/ + (binaryfunc)bsddb_subscript, /*mp_subscript*/ + (objobjargproc)bsddb_ass_sub, /*mp_ass_subscript*/ }; static PyObject * bsddb_close(bsddbobject *dp) { - if (dp->di_bsddb != NULL) { - int status; - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->close)(dp->di_bsddb); - BSDDB_END_SAVE(dp) - if (status != 0) { - dp->di_bsddb = NULL; - PyErr_SetFromErrno(BsddbError); - return NULL; - } - } - dp->di_bsddb = NULL; - Py_INCREF(Py_None); - return Py_None; + if (dp->di_bsddb != NULL) { + int status; + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->close)(dp->di_bsddb); + BSDDB_END_SAVE(dp) + if (status != 0) { + dp->di_bsddb = NULL; + PyErr_SetFromErrno(BsddbError); + return NULL; + } + } + dp->di_bsddb = NULL; + Py_INCREF(Py_None); + return Py_None; } static PyObject * bsddb_keys(bsddbobject *dp) { - PyObject *list, *item=NULL; - DBT krec, drec; - char *data=NULL,buf[4096]; - int status; - int err; - - check_bsddbobject_open(dp, NULL); - list = PyList_New(0); - if (list == NULL) - return NULL; - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, R_FIRST); - if (status == 0) { - if (krec.size > sizeof(buf)) data = malloc(krec.size); - else data = buf; - if (data != NULL) memcpy(data,krec.data,krec.size); - } - BSDDB_END_SAVE(dp) - if (status == 0 && data==NULL) return PyErr_NoMemory(); - while (status == 0) { - if (dp->di_type == DB_RECNO) - item = PyInt_FromLong(*((int*)data)); - else - item = PyString_FromStringAndSize(data, - (int)krec.size); - if (data != buf) free(data); - if (item == NULL) { - Py_DECREF(list); - return NULL; - } - err = PyList_Append(list, item); - Py_DECREF(item); - if (err != 0) { - Py_DECREF(list); - return NULL; - } - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->seq) - (dp->di_bsddb, &krec, &drec, R_NEXT); - if (status == 0) { - if (krec.size > sizeof(buf)) - data = malloc(krec.size); - else data = buf; - if (data != NULL) - memcpy(data,krec.data,krec.size); - } - BSDDB_END_SAVE(dp) - if (data == NULL) return PyErr_NoMemory(); - } - if (status < 0) { - PyErr_SetFromErrno(BsddbError); - Py_DECREF(list); - return NULL; - } - if (dp->di_size < 0) - dp->di_size = PyList_Size(list); /* We just did the work */ - return list; + PyObject *list, *item=NULL; + DBT krec, drec; + char *data=NULL,buf[4096]; + int status; + int err; + + check_bsddbobject_open(dp, NULL); + list = PyList_New(0); + if (list == NULL) + return NULL; + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, R_FIRST); + if (status == 0) { + if (krec.size > sizeof(buf)) data = malloc(krec.size); + else data = buf; + if (data != NULL) memcpy(data,krec.data,krec.size); + } + BSDDB_END_SAVE(dp) + if (status == 0 && data==NULL) return PyErr_NoMemory(); + while (status == 0) { + if (dp->di_type == DB_RECNO) + item = PyInt_FromLong(*((int*)data)); + else + item = PyString_FromStringAndSize(data, + (int)krec.size); + if (data != buf) free(data); + if (item == NULL) { + Py_DECREF(list); + return NULL; + } + err = PyList_Append(list, item); + Py_DECREF(item); + if (err != 0) { + Py_DECREF(list); + return NULL; + } + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->seq) + (dp->di_bsddb, &krec, &drec, R_NEXT); + if (status == 0) { + if (krec.size > sizeof(buf)) + data = malloc(krec.size); + else data = buf; + if (data != NULL) + memcpy(data,krec.data,krec.size); + } + BSDDB_END_SAVE(dp) + if (data == NULL) return PyErr_NoMemory(); + } + if (status < 0) { + PyErr_SetFromErrno(BsddbError); + Py_DECREF(list); + return NULL; + } + if (dp->di_size < 0) + dp->di_size = PyList_Size(list); /* We just did the work */ + return list; } static PyObject * bsddb_has_key(bsddbobject *dp, PyObject *args) { - DBT krec, drec; - int status; - char *data; - int size; - recno_t recno; - - if (dp->di_type == DB_RECNO) { - if (!PyArg_ParseTuple(args, "i;key type must be integer", - &recno)) { - return NULL; - } - krec.data = &recno; - krec.size = sizeof(recno); - } - else { - if (!PyArg_ParseTuple(args, "s#;key type must be string", - &data, &size)) { - return NULL; - } - krec.data = data; - krec.size = size; - } - check_bsddbobject_open(dp, NULL); - - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->get)(dp->di_bsddb, &krec, &drec, 0); - BSDDB_END_SAVE(dp) - if (status < 0) { - PyErr_SetFromErrno(BsddbError); - return NULL; - } - - return PyInt_FromLong(status == 0); + DBT krec, drec; + int status; + char *data; + int size; + recno_t recno; + + if (dp->di_type == DB_RECNO) { + if (!PyArg_ParseTuple(args, "i;key type must be integer", + &recno)) { + return NULL; + } + krec.data = &recno; + krec.size = sizeof(recno); + } + else { + if (!PyArg_ParseTuple(args, "s#;key type must be string", + &data, &size)) { + return NULL; + } + krec.data = data; + krec.size = size; + } + check_bsddbobject_open(dp, NULL); + + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->get)(dp->di_bsddb, &krec, &drec, 0); + BSDDB_END_SAVE(dp) + if (status < 0) { + PyErr_SetFromErrno(BsddbError); + return NULL; + } + + return PyInt_FromLong(status == 0); } static PyObject * bsddb_set_location(bsddbobject *dp, PyObject *key) { - int status; - DBT krec, drec; - char *data,buf[4096]; - int size; - PyObject *result; - recno_t recno; - - if (dp->di_type == DB_RECNO) { - if (!PyArg_ParseTuple(key, "i;key type must be integer", - &recno)) { - return NULL; - } - krec.data = &recno; - krec.size = sizeof(recno); - } - else { - if (!PyArg_ParseTuple(key, "s#;key type must be string", - &data, &size)) { - return NULL; - } - krec.data = data; - krec.size = size; - } - check_bsddbobject_open(dp, NULL); - - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, R_CURSOR); - if (status == 0) { - if (drec.size > sizeof(buf)) data = malloc(drec.size); - else data = buf; - if (data!=NULL) memcpy(data,drec.data,drec.size); - } - BSDDB_END_SAVE(dp) - if (data==NULL) return PyErr_NoMemory(); - if (status != 0) { - if (status < 0) - PyErr_SetFromErrno(BsddbError); - else - PyErr_SetObject(PyExc_KeyError, key); - return NULL; - } - - if (dp->di_type == DB_RECNO) - result = Py_BuildValue("is#", *((int*)krec.data), - data, drec.size); - else - result = Py_BuildValue("s#s#", krec.data, krec.size, - data, drec.size); - if (data != buf) free(data); - return result; + int status; + DBT krec, drec; + char *data = NULL; + char buf[4096]; + int size; + PyObject *result; + recno_t recno; + + if (dp->di_type == DB_RECNO) { + if (!PyArg_ParseTuple(key, "i;key type must be integer", + &recno)) { + return NULL; + } + krec.data = &recno; + krec.size = sizeof(recno); + } + else { + if (!PyArg_ParseTuple(key, "s#;key type must be string", + &data, &size)) { + return NULL; + } + krec.data = data; + krec.size = size; + } + check_bsddbobject_open(dp, NULL); + + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, &drec, R_CURSOR); + if (status == 0) { + if (drec.size > sizeof(buf)) data = malloc(drec.size); + else data = buf; + if (data!=NULL) memcpy(data,drec.data,drec.size); + } + BSDDB_END_SAVE(dp) + if (data==NULL) return PyErr_NoMemory(); + if (status != 0) { + if (status < 0) + PyErr_SetFromErrno(BsddbError); + else + PyErr_SetObject(PyExc_KeyError, key); + return NULL; + } + + if (dp->di_type == DB_RECNO) + result = Py_BuildValue("is#", *((int*)krec.data), + data, drec.size); + else + result = Py_BuildValue("s#s#", krec.data, krec.size, + data, drec.size); + if (data != buf) free(data); + return result; } static PyObject * bsddb_seq(bsddbobject *dp, int sequence_request) { - int status; - DBT krec, drec; - char *kdata=NULL,kbuf[4096]; - char *ddata=NULL,dbuf[4096]; - PyObject *result; - - check_bsddbobject_open(dp, NULL); - krec.data = 0; - krec.size = 0; - - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, - &drec, sequence_request); - if (status == 0) { - if (krec.size > sizeof(kbuf)) kdata = malloc(krec.size); - else kdata = kbuf; - if (kdata != NULL) memcpy(kdata,krec.data,krec.size); - if (drec.size > sizeof(dbuf)) ddata = malloc(drec.size); - else ddata = dbuf; - if (ddata != NULL) memcpy(ddata,drec.data,drec.size); - } - BSDDB_END_SAVE(dp) - if (status == 0) { - if ((kdata == NULL) || (ddata == NULL)) - return PyErr_NoMemory(); - } - else { - /* (status != 0) */ - if (status < 0) - PyErr_SetFromErrno(BsddbError); - else - PyErr_SetString(PyExc_KeyError, "no key/data pairs"); - return NULL; - } - - if (dp->di_type == DB_RECNO) - result = Py_BuildValue("is#", *((int*)kdata), - ddata, drec.size); - else - result = Py_BuildValue("s#s#", kdata, krec.size, - ddata, drec.size); - if (kdata != kbuf) free(kdata); - if (ddata != dbuf) free(ddata); - return result; + int status; + DBT krec, drec; + char *kdata=NULL,kbuf[4096]; + char *ddata=NULL,dbuf[4096]; + PyObject *result; + + check_bsddbobject_open(dp, NULL); + krec.data = 0; + krec.size = 0; + + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->seq)(dp->di_bsddb, &krec, + &drec, sequence_request); + if (status == 0) { + if (krec.size > sizeof(kbuf)) kdata = malloc(krec.size); + else kdata = kbuf; + if (kdata != NULL) memcpy(kdata,krec.data,krec.size); + if (drec.size > sizeof(dbuf)) ddata = malloc(drec.size); + else ddata = dbuf; + if (ddata != NULL) memcpy(ddata,drec.data,drec.size); + } + BSDDB_END_SAVE(dp) + if (status == 0) { + if ((kdata == NULL) || (ddata == NULL)) + return PyErr_NoMemory(); + } + else { + /* (status != 0) */ + if (status < 0) + PyErr_SetFromErrno(BsddbError); + else + PyErr_SetString(PyExc_KeyError, "no key/data pairs"); + return NULL; + } + + if (dp->di_type == DB_RECNO) + result = Py_BuildValue("is#", *((int*)kdata), + ddata, drec.size); + else + result = Py_BuildValue("s#s#", kdata, krec.size, + ddata, drec.size); + if (kdata != kbuf) free(kdata); + if (ddata != dbuf) free(ddata); + return result; } static PyObject * bsddb_next(bsddbobject *dp) { - return bsddb_seq(dp, R_NEXT); + return bsddb_seq(dp, R_NEXT); } static PyObject * bsddb_previous(bsddbobject *dp) { - return bsddb_seq(dp, R_PREV); + return bsddb_seq(dp, R_PREV); } static PyObject * bsddb_first(bsddbobject *dp) { - return bsddb_seq(dp, R_FIRST); + return bsddb_seq(dp, R_FIRST); } static PyObject * bsddb_last(bsddbobject *dp) { - return bsddb_seq(dp, R_LAST); + return bsddb_seq(dp, R_LAST); } static PyObject * bsddb_sync(bsddbobject *dp) { - int status; - - check_bsddbobject_open(dp, NULL); - BSDDB_BGN_SAVE(dp) - status = (dp->di_bsddb->sync)(dp->di_bsddb, 0); - BSDDB_END_SAVE(dp) - if (status != 0) { - PyErr_SetFromErrno(BsddbError); - return NULL; - } - return PyInt_FromLong(status = 0); + int status; + + check_bsddbobject_open(dp, NULL); + BSDDB_BGN_SAVE(dp) + status = (dp->di_bsddb->sync)(dp->di_bsddb, 0); + BSDDB_END_SAVE(dp) + if (status != 0) { + PyErr_SetFromErrno(BsddbError); + return NULL; + } + return PyInt_FromLong(0); } static PyMethodDef bsddb_methods[] = { - {"close", (PyCFunction)bsddb_close, METH_NOARGS}, - {"keys", (PyCFunction)bsddb_keys, METH_NOARGS}, - {"has_key", (PyCFunction)bsddb_has_key, METH_VARARGS}, - {"set_location", (PyCFunction)bsddb_set_location, METH_VARARGS}, - {"next", (PyCFunction)bsddb_next, METH_NOARGS}, - {"previous", (PyCFunction)bsddb_previous, METH_NOARGS}, - {"first", (PyCFunction)bsddb_first, METH_NOARGS}, - {"last", (PyCFunction)bsddb_last, METH_NOARGS}, - {"sync", (PyCFunction)bsddb_sync, METH_NOARGS}, - {NULL, NULL} /* sentinel */ + {"close", (PyCFunction)bsddb_close, METH_NOARGS}, + {"keys", (PyCFunction)bsddb_keys, METH_NOARGS}, + {"has_key", (PyCFunction)bsddb_has_key, METH_VARARGS}, + {"set_location", (PyCFunction)bsddb_set_location, METH_VARARGS}, + {"next", (PyCFunction)bsddb_next, METH_NOARGS}, + {"previous", (PyCFunction)bsddb_previous, METH_NOARGS}, + {"first", (PyCFunction)bsddb_first, METH_NOARGS}, + {"last", (PyCFunction)bsddb_last, METH_NOARGS}, + {"sync", (PyCFunction)bsddb_sync, METH_NOARGS}, + {NULL, NULL} /* sentinel */ }; static PyObject * bsddb_getattr(PyObject *dp, char *name) { - return Py_FindMethod(bsddb_methods, dp, name); + return Py_FindMethod(bsddb_methods, dp, name); } static PyTypeObject Bsddbtype = { - PyObject_HEAD_INIT(NULL) - 0, - "bsddb.bsddb", - sizeof(bsddbobject), - 0, - (destructor)bsddb_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - (getattrfunc)bsddb_getattr, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - &bsddb_as_mapping, /*tp_as_mapping*/ + PyObject_HEAD_INIT(NULL) + 0, + "bsddb.bsddb", + sizeof(bsddbobject), + 0, + (destructor)bsddb_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + (getattrfunc)bsddb_getattr, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + &bsddb_as_mapping, /*tp_as_mapping*/ }; static PyObject * bsdhashopen(PyObject *self, PyObject *args) { - char *file; - char *flag = NULL; - int flags = O_RDONLY; - int mode = 0666; - int bsize = 0; - int ffactor = 0; - int nelem = 0; - int cachesize = 0; - int hash = 0; /* XXX currently ignored */ - int lorder = 0; - - if (!PyArg_ParseTuple(args, "z|siiiiiii:hashopen", - &file, &flag, &mode, - &bsize, &ffactor, &nelem, &cachesize, - &hash, &lorder)) - return NULL; - if (flag != NULL) { - /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ - if (flag[0] == 'r') - flags = O_RDONLY; - else if (flag[0] == 'w') - flags = O_RDWR; - else if (flag[0] == 'c') - flags = O_RDWR|O_CREAT; - else if (flag[0] == 'n') - flags = O_RDWR|O_CREAT|O_TRUNC; - else { - PyErr_SetString(BsddbError, - "Flag should begin with 'r', 'w', 'c' or 'n'"); - return NULL; - } - if (flag[1] == 'l') { + char *file; + char *flag = NULL; + int flags = O_RDONLY; + int mode = 0666; + int bsize = 0; + int ffactor = 0; + int nelem = 0; + int cachesize = 0; + int hash = 0; /* XXX currently ignored */ + int lorder = 0; + + if (!PyArg_ParseTuple(args, "z|siiiiiii:hashopen", + &file, &flag, &mode, + &bsize, &ffactor, &nelem, &cachesize, + &hash, &lorder)) + return NULL; + if (flag != NULL) { + /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ + if (flag[0] == 'r') + flags = O_RDONLY; + else if (flag[0] == 'w') + flags = O_RDWR; + else if (flag[0] == 'c') + flags = O_RDWR|O_CREAT; + else if (flag[0] == 'n') + flags = O_RDWR|O_CREAT|O_TRUNC; + else { + PyErr_SetString(BsddbError, + "Flag should begin with 'r', 'w', 'c' or 'n'"); + return NULL; + } + if (flag[1] == 'l') { #if defined(O_EXLOCK) && defined(O_SHLOCK) - if (flag[0] == 'r') - flags |= O_SHLOCK; - else - flags |= O_EXLOCK; + if (flag[0] == 'r') + flags |= O_SHLOCK; + else + flags |= O_EXLOCK; #else - PyErr_SetString(BsddbError, - "locking not supported on this platform"); - return NULL; + PyErr_SetString(BsddbError, + "locking not supported on this platform"); + return NULL; #endif - } - } - return newdbhashobject(file, flags, mode, - bsize, ffactor, nelem, cachesize, hash, lorder); + } + } + return newdbhashobject(file, flags, mode, + bsize, ffactor, nelem, cachesize, hash, lorder); } static PyObject * bsdbtopen(PyObject *self, PyObject *args) { - char *file; - char *flag = NULL; - int flags = O_RDONLY; - int mode = 0666; - int cachesize = 0; - int maxkeypage = 0; - int minkeypage = 0; - int btflags = 0; - unsigned int psize = 0; - int lorder = 0; - - if (!PyArg_ParseTuple(args, "z|siiiiiii:btopen", - &file, &flag, &mode, - &btflags, &cachesize, &maxkeypage, &minkeypage, - &psize, &lorder)) - return NULL; - if (flag != NULL) { - /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ - if (flag[0] == 'r') - flags = O_RDONLY; - else if (flag[0] == 'w') - flags = O_RDWR; - else if (flag[0] == 'c') - flags = O_RDWR|O_CREAT; - else if (flag[0] == 'n') - flags = O_RDWR|O_CREAT|O_TRUNC; - else { - PyErr_SetString(BsddbError, - "Flag should begin with 'r', 'w', 'c' or 'n'"); - return NULL; - } - if (flag[1] == 'l') { + char *file; + char *flag = NULL; + int flags = O_RDONLY; + int mode = 0666; + int cachesize = 0; + int maxkeypage = 0; + int minkeypage = 0; + int btflags = 0; + unsigned int psize = 0; + int lorder = 0; + + if (!PyArg_ParseTuple(args, "z|siiiiiii:btopen", + &file, &flag, &mode, + &btflags, &cachesize, &maxkeypage, &minkeypage, + &psize, &lorder)) + return NULL; + if (flag != NULL) { + /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ + if (flag[0] == 'r') + flags = O_RDONLY; + else if (flag[0] == 'w') + flags = O_RDWR; + else if (flag[0] == 'c') + flags = O_RDWR|O_CREAT; + else if (flag[0] == 'n') + flags = O_RDWR|O_CREAT|O_TRUNC; + else { + PyErr_SetString(BsddbError, + "Flag should begin with 'r', 'w', 'c' or 'n'"); + return NULL; + } + if (flag[1] == 'l') { #if defined(O_EXLOCK) && defined(O_SHLOCK) - if (flag[0] == 'r') - flags |= O_SHLOCK; - else - flags |= O_EXLOCK; + if (flag[0] == 'r') + flags |= O_SHLOCK; + else + flags |= O_EXLOCK; #else - PyErr_SetString(BsddbError, - "locking not supported on this platform"); - return NULL; + PyErr_SetString(BsddbError, + "locking not supported on this platform"); + return NULL; #endif - } - } - return newdbbtobject(file, flags, mode, - btflags, cachesize, maxkeypage, minkeypage, - psize, lorder); + } + } + return newdbbtobject(file, flags, mode, + btflags, cachesize, maxkeypage, minkeypage, + psize, lorder); } static PyObject * bsdrnopen(PyObject *self, PyObject *args) { - char *file; - char *flag = NULL; - int flags = O_RDONLY; - int mode = 0666; - int cachesize = 0; - int rnflags = 0; - unsigned int psize = 0; - int lorder = 0; - size_t reclen = 0; - char *bval = ""; - char *bfname = NULL; - - if (!PyArg_ParseTuple(args, "z|siiiiiiss:rnopen", - &file, &flag, &mode, - &rnflags, &cachesize, &psize, &lorder, - &reclen, &bval, &bfname)) - return NULL; - - if (flag != NULL) { - /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ - if (flag[0] == 'r') - flags = O_RDONLY; - else if (flag[0] == 'w') - flags = O_RDWR; - else if (flag[0] == 'c') - flags = O_RDWR|O_CREAT; - else if (flag[0] == 'n') - flags = O_RDWR|O_CREAT|O_TRUNC; - else { - PyErr_SetString(BsddbError, - "Flag should begin with 'r', 'w', 'c' or 'n'"); - return NULL; - } - if (flag[1] == 'l') { + char *file; + char *flag = NULL; + int flags = O_RDONLY; + int mode = 0666; + int cachesize = 0; + int rnflags = 0; + unsigned int psize = 0; + int lorder = 0; + size_t reclen = 0; + char *bval = ""; + char *bfname = NULL; + + if (!PyArg_ParseTuple(args, "z|siiiiiiss:rnopen", + &file, &flag, &mode, + &rnflags, &cachesize, &psize, &lorder, + &reclen, &bval, &bfname)) + return NULL; + + if (flag != NULL) { + /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ + if (flag[0] == 'r') + flags = O_RDONLY; + else if (flag[0] == 'w') + flags = O_RDWR; + else if (flag[0] == 'c') + flags = O_RDWR|O_CREAT; + else if (flag[0] == 'n') + flags = O_RDWR|O_CREAT|O_TRUNC; + else { + PyErr_SetString(BsddbError, + "Flag should begin with 'r', 'w', 'c' or 'n'"); + return NULL; + } + if (flag[1] == 'l') { #if defined(O_EXLOCK) && defined(O_SHLOCK) - if (flag[0] == 'r') - flags |= O_SHLOCK; - else - flags |= O_EXLOCK; + if (flag[0] == 'r') + flags |= O_SHLOCK; + else + flags |= O_EXLOCK; #else - PyErr_SetString(BsddbError, - "locking not supported on this platform"); - return NULL; + PyErr_SetString(BsddbError, + "locking not supported on this platform"); + return NULL; #endif - } - else if (flag[1] != '\0') { - PyErr_SetString(BsddbError, - "Flag char 2 should be 'l' or absent"); - return NULL; - } - } - return newdbrnobject(file, flags, mode, rnflags, cachesize, - psize, lorder, reclen, bval[0], bfname); + } + else if (flag[1] != '\0') { + PyErr_SetString(BsddbError, + "Flag char 2 should be 'l' or absent"); + return NULL; + } + } + return newdbrnobject(file, flags, mode, rnflags, cachesize, + psize, lorder, reclen, bval[0], bfname); } static PyMethodDef bsddbmodule_methods[] = { - {"hashopen", (PyCFunction)bsdhashopen, METH_VARARGS}, - {"btopen", (PyCFunction)bsdbtopen, METH_VARARGS}, - {"rnopen", (PyCFunction)bsdrnopen, METH_VARARGS}, - /* strictly for use by dbhhash!!! */ - {"open", (PyCFunction)bsdhashopen, METH_VARARGS}, - {0, 0}, + {"hashopen", (PyCFunction)bsdhashopen, METH_VARARGS}, + {"btopen", (PyCFunction)bsdbtopen, METH_VARARGS}, + {"rnopen", (PyCFunction)bsdrnopen, METH_VARARGS}, + /* strictly for use by dbhhash!!! */ + {"open", (PyCFunction)bsdhashopen, METH_VARARGS}, + {0, 0}, }; PyMODINIT_FUNC initbsddb185(void) { - PyObject *m, *d; + PyObject *m, *d; if (PyErr_WarnPy3k("the bsddb185 module has been removed in " "Python 3.0", 2) < 0) - return; - - Bsddbtype.ob_type = &PyType_Type; - m = Py_InitModule("bsddb185", bsddbmodule_methods); - if (m == NULL) - return; - d = PyModule_GetDict(m); - BsddbError = PyErr_NewException("bsddb.error", NULL, NULL); - if (BsddbError != NULL) - PyDict_SetItemString(d, "error", BsddbError); + return; + + Bsddbtype.ob_type = &PyType_Type; + m = Py_InitModule("bsddb185", bsddbmodule_methods); + if (m == NULL) + return; + d = PyModule_GetDict(m); + BsddbError = PyErr_NewException("bsddb.error", NULL, NULL); + if (BsddbError != NULL) + PyDict_SetItemString(d, "error", BsddbError); } diff --git a/setup.py b/setup.py index 4550b549..4f70488f 100644 --- a/setup.py +++ b/setup.py @@ -712,9 +712,9 @@ def detect_modules(self): # a release. Most open source OSes come with one or more # versions of BerkeleyDB already installed. - max_db_ver = (4, 7) + max_db_ver = (4, 8) min_db_ver = (3, 3) - db_setup_debug = False # verbose debug prints from this script? + db_setup_debug = True # verbose debug prints from this script? def allow_db_ver(db_ver): """Returns a boolean if the given BerkeleyDB version is acceptable. From a9e65773b806a7acae18ef5a57cd1922a70cb89f Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Sun, 24 Apr 2011 22:05:00 +0000 Subject: [PATCH 012/160] python: fix detection of sizeof() constants, fixes largefile support with latest gcc 4.4.x. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@162 978522c7-42b7-df11-88a9-00e081727c95 --- configure | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configure b/configure index e16cc46b..0fc46225 100644 --- a/configure +++ b/configure @@ -12713,6 +12713,7 @@ main() FILE *f=fopen("conftestval", "w"); if (!f) exit(1); fprintf(f, "%d\n", sizeof(off_t)); + fclose(f); exit(0); } _ACEOF @@ -12804,6 +12805,7 @@ main() FILE *f=fopen("conftestval", "w"); if (!f) exit(1); fprintf(f, "%d\n", sizeof(time_t)); + fclose(f); exit(0); } _ACEOF @@ -12930,6 +12932,7 @@ cat >>conftest.$ac_ext <<_ACEOF FILE *f=fopen("conftestval", "w"); if (!f) exit(1); fprintf(f, "%d\n", sizeof(pthread_t)); + fclose(f); exit(0); } _ACEOF From a03c85418a9e16379968af200ec732a926fb3563 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Mon, 16 Jan 2012 14:17:34 +0000 Subject: [PATCH 013/160] python: use system configured shell in makefile. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@281 978522c7-42b7-df11-88a9-00e081727c95 --- Makefile.pre.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 645076db..92893839 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -37,7 +37,7 @@ RANLIB= @RANLIB@ SVNVERSION= @SVNVERSION@ # Shell used by make (some versions default to the login shell, which is bad) -SHELL= /bin/sh +SHELL= @SHELL@ # Use this to make a link between python$(VERSION) and python in $(BINDIR) LN= @LN@ From 08dcd7f837f08d4d0361bb6b3939958ffaa74127 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Thu, 27 Dec 2012 11:49:26 +0000 Subject: [PATCH 014/160] python: fix local/bin requirements for python-tools. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@325 978522c7-42b7-df11-88a9-00e081727c95 --- Demo/cgi/cgi1.py | 2 +- Demo/cgi/cgi2.py | 2 +- Demo/cgi/cgi3.py | 2 +- Mac/scripts/zappycfiles.py | 2 +- Tools/faqwiz/faqw.py | 2 +- Tools/pybench/pybench.py | 2 +- Tools/scripts/parseentities.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Demo/cgi/cgi1.py b/Demo/cgi/cgi1.py index 9d25c7db..fa9739ab 100644 --- a/Demo/cgi/cgi1.py +++ b/Demo/cgi/cgi1.py @@ -1,4 +1,4 @@ -#!/usr/local/bin/python +#!/usr/bin/python """CGI test 1 - check server setup.""" diff --git a/Demo/cgi/cgi2.py b/Demo/cgi/cgi2.py index d956f653..8f7b0879 100644 --- a/Demo/cgi/cgi2.py +++ b/Demo/cgi/cgi2.py @@ -1,4 +1,4 @@ -#!/usr/local/bin/python +#!/usr/bin/python """CGI test 2 - basic use of cgi module.""" diff --git a/Demo/cgi/cgi3.py b/Demo/cgi/cgi3.py index a3421b5b..4db94ba6 100644 --- a/Demo/cgi/cgi3.py +++ b/Demo/cgi/cgi3.py @@ -1,4 +1,4 @@ -#!/usr/local/bin/python +#!/usr/bin/python """CGI test 3 (persistent data).""" diff --git a/Mac/scripts/zappycfiles.py b/Mac/scripts/zappycfiles.py index a8193c12..7b981f58 100644 --- a/Mac/scripts/zappycfiles.py +++ b/Mac/scripts/zappycfiles.py @@ -1,4 +1,4 @@ -#!/usr/local/bin/python +#!/usr/bin/python """Recursively zap all .pyc and .pyo files""" import os import sys diff --git a/Tools/faqwiz/faqw.py b/Tools/faqwiz/faqw.py index c6c1a6d6..1743ad75 100644 --- a/Tools/faqwiz/faqw.py +++ b/Tools/faqwiz/faqw.py @@ -1,4 +1,4 @@ -#! /usr/local/bin/python +#! /usr/bin/python """FAQ wizard bootstrap.""" diff --git a/Tools/pybench/pybench.py b/Tools/pybench/pybench.py index 83a62173..1f4debe8 100644 --- a/Tools/pybench/pybench.py +++ b/Tools/pybench/pybench.py @@ -1,4 +1,4 @@ -#!/usr/local/bin/python -O +#!/usr/bin/python -O """ A Python Benchmark Suite diff --git a/Tools/scripts/parseentities.py b/Tools/scripts/parseentities.py index cf4e17c1..63bae5b1 100644 --- a/Tools/scripts/parseentities.py +++ b/Tools/scripts/parseentities.py @@ -1,4 +1,4 @@ -#!/usr/local/bin/python +#!/usr/bin/python """ Utility for parsing HTML entity definitions available from: http://www.w3.org/ as e.g. From 52d8550c56dba582f234294bd07d36c77beabb93 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Wed, 5 Jun 2013 13:53:22 +0000 Subject: [PATCH 015/160] python: add samefile, sameopenfile, samestat to os.path module. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@348 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/os2knixpath.py | 104 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 98 insertions(+), 6 deletions(-) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index 4e85c4d4..4bde834a 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -15,6 +15,7 @@ "basename","dirname","commonprefix","getsize","getmtime", "getatime","getctime", "islink","exists","lexists","isdir","isfile", "ismount","walk","expanduser","expandvars","normpath","abspath", + "samefile","sameopenfile","samestat", "splitunc","curdir","pardir","sep","pathsep","defpath","altsep", "extsep","devnull","realpath","supports_unicode_filenames"] @@ -97,10 +98,6 @@ def dirname(p): return split(p)[0] -# alias exists to lexists -lexists = exists - - # Is a path a directory? # Is a path a mount point? Either a root (with or without drive letter) @@ -149,7 +146,102 @@ def abspath(path): path = join(os.getcwd(), path) return normpath(path) -# realpath is a no-op on systems without islink support -realpath = abspath + +# Return a canonical path (i.e. the absolute location of a file on the +# filesystem). + +def realpath(filename): + """Return the canonical path of the specified filename, eliminating any +symbolic links encountered in the path.""" + if isabs(filename): + bits = ['/'] + filename.split('/')[1:] + else: + bits = [''] + filename.split('/') + + for i in range(2, len(bits)+1): + component = join(*bits[0:i]) + # Resolve symbolic links. + if islink(component): + resolved = _resolve_link(component) + if resolved is None: + # Infinite loop -- return original component + rest of the path + return abspath(join(*([component] + bits[i:]))) + else: + newpath = join(*([resolved] + bits[i:])) + return realpath(newpath) + + return abspath(filename) + + +def _resolve_link(path): + """Internal helper function. Takes a path and follows symlinks + until we either arrive at something that isn't a symlink, or + encounter a path we've seen before (meaning that there's a loop). + """ + paths_seen = [] + while islink(path): + if path in paths_seen: + # Already seen this path, so we must have a symlink loop + return None + paths_seen.append(path) + # Resolve where the link points to + resolved = os.readlink(path) + if not isabs(resolved): + dir = dirname(path) + path = normpath(join(dir, resolved)) + else: + path = normpath(resolved) + return path + + +# Is a path a symbolic link? +# This will always return false on systems where os.lstat doesn't exist. + +def islink(path): + """Test whether a path is a symbolic link""" + try: + st = os.lstat(path) + except (os.error, AttributeError): + return False + return stat.S_ISLNK(st.st_mode) + +# Being true for dangling symbolic links is also useful. + +def lexists(path): + """Test whether a path exists. Returns True for broken symbolic links""" + try: + st = os.lstat(path) + except os.error: + return False + return True + + +# Are two filenames really pointing to the same file? + +def samefile(f1, f2): + """Test whether two pathnames reference the same actual file""" + s1 = os.stat(f1) + s2 = os.stat(f2) + return samestat(s1, s2) + + +# Are two open files really referencing the same file? +# (Not necessarily the same file descriptor!) + +def sameopenfile(fp1, fp2): + """Test whether two open file objects reference the same file""" + s1 = os.fstat(fp1) + s2 = os.fstat(fp2) + return samestat(s1, s2) + + +# Are two stat buffers (obtained from stat, fstat or lstat) +# describing the same file? + +def samestat(s1, s2): + """Test whether two stat buffers reference the same file""" + return s1.st_ino == s2.st_ino and \ + s1.st_dev == s2.st_dev + supports_unicode_filenames = False From c8e6593e07bc45ab04fe173a8109fe0e66913ad0 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 7 Mar 2014 16:27:41 +0000 Subject: [PATCH 016/160] Set eol-style to LF (required by scripts). git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@380 978522c7-42b7-df11-88a9-00e081727c95 From 917e5e7f1459640cf21111857e2bd15365f9ea46 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 13 Mar 2014 15:58:53 +0000 Subject: [PATCH 017/160] Add OS/2 version of os.path.relpath. Based on the NT version (with a bug fix related to trailing slashes). git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@381 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/os2emxpath.py | 34 ++++++++++++++++++++++++++++++++++ Lib/os2knixpath.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/Lib/os2emxpath.py b/Lib/os2emxpath.py index 1bed51d4..db883d59 100644 --- a/Lib/os2emxpath.py +++ b/Lib/os2emxpath.py @@ -157,3 +157,37 @@ def abspath(path): realpath = abspath supports_unicode_filenames = False + + +def relpath(path, start=curdir): + """Return a relative version of a path""" + + if not path: + raise ValueError("no path specified") + start_list = abspath(start).split(sep) + path_list = abspath(path).split(sep) + # Remove empty components after trailing slashes + if (start_list[-1] == ''): + start_list.pop() + if (path_list[-1] == ''): + path_list.pop() + if start_list[0].lower() != path_list[0].lower(): + unc_path, rest = splitunc(path) + unc_start, rest = splitunc(start) + if bool(unc_path) ^ bool(unc_start): + raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)" + % (path, start)) + else: + raise ValueError("path is on drive %s, start on drive %s" + % (path_list[0], start_list[0])) + # Work out how much of the filepath is shared by start and path. + for i in range(min(len(start_list), len(path_list))): + if start_list[i].lower() != path_list[i].lower(): + break + else: + i += 1 + + rel_list = [pardir] * (len(start_list)-i) + path_list[i:] + if not rel_list: + return curdir + return join(*rel_list) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index 4bde834a..93d6365e 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -245,3 +245,37 @@ def samestat(s1, s2): supports_unicode_filenames = False + + +def relpath(path, start=curdir): + """Return a relative version of a path""" + + if not path: + raise ValueError("no path specified") + start_list = abspath(start).split(sep) + path_list = abspath(path).split(sep) + # Remove empty components after trailing slashes + if (start_list[-1] == ''): + start_list.pop() + if (path_list[-1] == ''): + path_list.pop() + if start_list[0].lower() != path_list[0].lower(): + unc_path, rest = splitunc(path) + unc_start, rest = splitunc(start) + if bool(unc_path) ^ bool(unc_start): + raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)" + % (path, start)) + else: + raise ValueError("path is on drive %s, start on drive %s" + % (path_list[0], start_list[0])) + # Work out how much of the filepath is shared by start and path. + for i in range(min(len(start_list), len(path_list))): + if start_list[i].lower() != path_list[i].lower(): + break + else: + i += 1 + + rel_list = [pardir] * (len(start_list)-i) + path_list[i:] + if not rel_list: + return curdir + return join(*rel_list) From c240ebf14149ccbaa9d565ebd8b72518f27bee23 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 13 Mar 2014 20:52:20 +0000 Subject: [PATCH 018/160] Make util.change_root ignore empty new_root argument. The makefile does --root=$(DESTDIR) and this caused new_root to be "" when DESTDIR is not set. This caused setup.py to install files to the local tree instead of the desired PREFIX. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@382 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/util.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py index a9a1b5b3..9e7eb5ac 100644 --- a/Lib/distutils/util.py +++ b/Lib/distutils/util.py @@ -217,6 +217,9 @@ def change_root (new_root, pathname): Otherwise, it requires making 'pathname' relative and then joining the two, which is tricky on DOS/Windows and Mac OS. """ + if new_root is None or new_root == '': + return pathname + if os.name == 'posix': if not os.path.isabs(pathname): return os.path.join(new_root, pathname) From f4c5cb9266755f67126ff1c733da159b31eed398 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 13 Mar 2014 20:58:41 +0000 Subject: [PATCH 019/160] Restore original dynamic 'sys.prefix' detection. This in particular reverts r20 and parts of r10. These hacks are not necessary after properly defining 'sys.path' entries in 'site.py'. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@383 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/site.py | 17 ++++++++++------- Modules/getpath.c | 19 ------------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/Lib/site.py b/Lib/site.py index 4d5b8ca6..e0029a2a 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -262,8 +262,13 @@ def addsitepackages(known_paths): continue seen.append(prefix) - if sys.platform in ('os2emx', 'os2knix', 'riscos'): + if sys.platform in ('os2emx', 'riscos'): sitedirs.append(os.path.join(prefix, "Lib", "site-packages")) + elif sys.platform == 'os2knix': + sitedirs.append(os.path.join(prefix, "lib", + "python" + sys.version[:3], + "site-packages")) + sitedirs.append(os.path.join(prefix, "lib", "site-packages")) elif os.sep == '/': sitedirs.append(os.path.join(prefix, "lib", "python" + sys.version[:3], @@ -487,17 +492,15 @@ def main(): abs__file__() known_paths = removeduppaths() - if (os.name == "posix" and sys.path and - os.path.basename(sys.path[-1]) == "Modules"): + if ((os.name == "posix" or os.name == "os2") and + sys.path and os.path.basename(sys.path[-1]) == "Modules"): addbuilddir() + if (os.name == "os2"): + setBEGINLIBPATH() if ENABLE_USER_SITE is None: ENABLE_USER_SITE = check_enableusersite() known_paths = addusersitepackages(known_paths) known_paths = addsitepackages(known_paths) - if sys.platform == 'os2emx' or sys.platform == 'os2knix': - if (sys.path and os.path.basename(sys.path[-1]) == "Modules"): - addbuilddir() - setBEGINLIBPATH() setquit() setcopyright() sethelper() diff --git a/Modules/getpath.c b/Modules/getpath.c index 2acb55ca..157a9071 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -116,25 +116,10 @@ #define EXEC_PREFIX PREFIX #endif -#ifndef __EMX__ #ifndef PYTHONPATH #define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" #endif -#else -//#define PYTHONPATH "./Lib;./Lib/plat-" PLATFORM \ -// ";./Lib/lib-dynload;./Lib/site-packages" -// force unixroot -#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ - EXEC_PREFIX "/lib/python" VERSION "/lib-" PLATFORM ":" \ - EXEC_PREFIX "/lib/python" VERSION "/site-packages" ":" \ - EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ":" \ -/* now local (for building) */ \ - "./lib" ":" \ - "./lib/plat-" PLATFORM ":" \ - "./lib/site-packages" ":" \ - "./lib/lib-dynload" -#endif #ifndef LANDMARK #define LANDMARK "os.py" @@ -659,7 +644,6 @@ calculate_path(void) * If we're loading relative to the build directory, * return the compiled-in defaults instead. */ -#ifndef __KLIBC__ // YD force hardcoded build prefix if (pfound > 0) { reduce(prefix); reduce(prefix); @@ -669,10 +653,8 @@ calculate_path(void) strcpy(prefix, separator); } else -#endif strncpy(prefix, PREFIX, MAXPATHLEN); -#ifndef __KLIBC__ // YD force hardcoded build exec_prefix if (efound > 0) { reduce(exec_prefix); reduce(exec_prefix); @@ -681,7 +663,6 @@ calculate_path(void) strcpy(exec_prefix, separator); } else -#endif strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN); } From 60769816bcc640db3602675d7fea60ed4a92ee60 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 13 Mar 2014 21:00:22 +0000 Subject: [PATCH 020/160] setup: Add '/@unixroot' include/lib entries for 'os2knix' platform. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@384 978522c7-42b7-df11-88a9-00e081727c95 --- setup.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.py b/setup.py index 4f70488f..880ab4e6 100644 --- a/setup.py +++ b/setup.py @@ -384,7 +384,9 @@ def detect_modules(self): # Check for OS/2 which may have libraries in non-standard locations if platform == 'os2knix': + lib_dirs += ['/@unixroot/usr/lib'] lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep) + inc_dirs += ['/@unixroot/usr/include'] inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb) if platform in ['osf1', 'unixware7', 'openunix8']: From e369c58e436c399e23c2e9be7682b83475f965a1 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 13 Mar 2014 21:05:45 +0000 Subject: [PATCH 021/160] setup: Add more modules needed for minimal Python install. The minimal install is in particular required to run setup.py in the second build phase of Python. Prior to this fix, a working installation of Python with matching library paths (at least, lib-dynload) was required which is clearly wrong. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@385 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/Setup.dist | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Modules/Setup.dist b/Modules/Setup.dist index 57099e16..a3fce262 100644 --- a/Modules/Setup.dist +++ b/Modules/Setup.dist @@ -123,6 +123,14 @@ _codecs _codecsmodule.c # access to the builtin codecs and codec registry # builtin module avoids some bootstrapping problems and reduces overhead. zipimport zipimport.c +# The following modules are needed by locale.py which is now used by setup.py + +operator operator.c # operator.add() and similar goodies +_functools _functoolsmodule.c # Tools for working with functions and callable objects + +# access to ISO C locale support +_locale _localemodule.c # -lintl + # The rest of the modules listed in this file are all commented out by # default. Usually they can be detected and built as dynamically # loaded modules by the new setup.py script added in Python 2.1. If @@ -172,14 +180,12 @@ GLHACK=-Dclear=__GLclear #math mathmodule.c # -lm # math library functions, e.g. sin() #_struct _struct.c # binary structure packing/unpacking #time timemodule.c # -lm # time operations and variables -#operator operator.c # operator.add() and similar goodies #_weakref _weakref.c # basic weak reference support #_testcapi _testcapimodule.c # Python C API test module #_random _randommodule.c # Random number generator #_collections _collectionsmodule.c # Container types #itertools itertoolsmodule.c # Functions creating iterators for efficient looping #strop stropmodule.c # String manipulations -#_functools _functoolsmodule.c # Tools for working with functions and callable objects #_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator #_pickle _pickle.c # pickle accelerator #datetime datetimemodule.c # date/time type @@ -187,9 +193,6 @@ GLHACK=-Dclear=__GLclear #unicodedata unicodedata.c # static Unicode character database -# access to ISO C locale support -#_locale _localemodule.c # -lintl - # Modules with some UNIX dependencies -- on by default: # (If you have a really backward UNIX, select and socket may not be From f42ef6d870814a7e03b7ae98735a2e99908237b1 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Wed, 19 Mar 2014 11:50:50 +0000 Subject: [PATCH 022/160] python: Copy vendor current to 2.7.6. git-svn-id: http://svn.netlabs.org/repos/rpm/python/vendor/Python-2.7.6@389 978522c7-42b7-df11-88a9-00e081727c95 From 68432080f5db0f0a0de80f3cb759c6a547099f62 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 12:26:39 +0000 Subject: [PATCH 023/160] python: Fix build break of parser module on OS/2. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@392 978522c7-42b7-df11-88a9-00e081727c95 --- Include/node.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Include/node.h b/Include/node.h index 9f6760c2..2cde3b9c 100644 --- a/Include/node.h +++ b/Include/node.h @@ -21,7 +21,7 @@ PyAPI_FUNC(int) PyNode_AddChild(node *n, int type, char *str, int lineno, int col_offset); PyAPI_FUNC(void) PyNode_Free(node *n); #ifndef Py_LIMITED_API -Py_ssize_t _PyNode_SizeOf(node *n); +PyAPI_FUNC(Py_ssize_t) _PyNode_SizeOf(node *n); #endif /* Node access functions */ From 1c64a17f927e96c1f72f80bd20438633523cefb1 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 12:31:06 +0000 Subject: [PATCH 024/160] python: Fix merge typos. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@393 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/site.py | 4 ++-- setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Lib/site.py b/Lib/site.py index 9e173c1a..4354dd7f 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -288,10 +288,10 @@ def getsitepackages(): if sys.platform in ('os2emx', 'riscos'): sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) elif sys.platform == 'os2knix': - sitedirs.append(os.path.join(prefix, "lib", + sitepackages.append(os.path.join(prefix, "lib", "python" + sys.version[:3], "site-packages")) - sitedirs.append(os.path.join(prefix, "lib", "site-packages")) + sitepackages.append(os.path.join(prefix, "lib", "site-packages")) elif os.sep == '/': sitepackages.append(os.path.join(prefix, "lib", "python" + sys.version[:3], diff --git a/setup.py b/setup.py index c603855f..cc197cae 100644 --- a/setup.py +++ b/setup.py @@ -525,7 +525,7 @@ def detect_modules(self): inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) # Check for OS/2 which may have libraries in non-standard locations - if platform == 'os2knix': + if host_platform == 'os2knix': lib_dirs += ['/@unixroot/usr/lib'] lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep) inc_dirs += ['/@unixroot/usr/include'] From 8df119d47863dba86811df1bc961f485413341ab Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 12:39:52 +0000 Subject: [PATCH 025/160] python: Use Posix directory scheme everywhere on OS/2. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@394 978522c7-42b7-df11-88a9-00e081727c95 --- Doc/library/sysconfig.rst | 2 +- Lib/distutils/command/install.py | 10 +++--- Lib/distutils/sysconfig.py | 47 +++-------------------------- Lib/distutils/tests/test_install.py | 2 +- Lib/site.py | 11 +++---- Lib/sysconfig.py | 24 +++++++-------- Lib/test/test_sysconfig.py | 2 +- 7 files changed, 28 insertions(+), 70 deletions(-) diff --git a/Doc/library/sysconfig.rst b/Doc/library/sysconfig.rst index a745a3d9..7d2bc6cb 100644 --- a/Doc/library/sysconfig.rst +++ b/Doc/library/sysconfig.rst @@ -83,7 +83,7 @@ Python currently supports seven schemes: - *nt*: scheme for NT platforms like Windows. - *nt_user*: scheme for NT platforms, when the *user* option is used. - *os2*: scheme for OS/2 platforms. -- *os2_home*: scheme for OS/2 patforms, when the *user* option is used. +- *os2_user*: scheme for OS/2 patforms, when the *user* option is used. Each scheme is itself composed of a series of paths and each path has a unique identifier. Python currently uses eight paths: diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py index dfdf146d..2104aa5e 100644 --- a/Lib/distutils/command/install.py +++ b/Lib/distutils/command/install.py @@ -70,13 +70,13 @@ 'data' : '$userbase', }, 'os2': { - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', - 'headers': '$base/Include/$dist_name', - 'scripts': '$base/Scripts', + 'purelib': '$base/lib/python$py_version_short/site-packages', + 'platlib': '$platbase/lib/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short/$dist_name', + 'scripts': '$base/bin', 'data' : '$base', }, - 'os2_home': { + 'os2_user': { 'purelib': '$usersite', 'platlib': '$usersite', 'headers': '$userbase/include/python$py_version_short/$dist_name', diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 43f52d8c..ff2f6bb2 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -432,49 +432,10 @@ def _init_nt(): def _init_os2(): """Initialize the module as appropriate for OS/2""" - g = {} - # load the installed Makefile: - try: - filename = get_makefile_filename() - parse_makefile(filename, g) - except IOError, msg: - my_msg = "invalid Python installation: unable to open %s" % filename - if hasattr(msg, "strerror"): - my_msg = my_msg + " (%s)" % msg.strerror - - raise DistutilsPlatformError(my_msg) - - # load the installed pyconfig.h: - try: - filename = get_config_h_filename() - parse_config_h(file(filename), g) - except IOError, msg: - my_msg = "invalid Python installation: unable to open %s" % filename - if hasattr(msg, "strerror"): - my_msg = my_msg + " (%s)" % msg.strerror - - raise DistutilsPlatformError(my_msg) - - # On AIX, there are wrong paths to the linker scripts in the Makefile - # -- these paths are relative to the Python source, but when installed - # the scripts are in another directory. - if python_build: - g['LDSHARED'] = g['BLDSHARED'] - - # OS/2 module - - # set basic install directories - g['LIBDEST'] = get_python_lib(plat_specific=0, standard_lib=1) - g['BINLIBDEST'] = get_python_lib(plat_specific=1, standard_lib=1) - - # XXX hmmm.. a normal install puts include files here - g['INCLUDEPY'] = get_python_inc(plat_specific=0) - - g['SO'] = '.pyd' - g['EXE'] = ".exe" - - global _config_vars - _config_vars = g + _init_posix() + # set the python module extension to .pyd instead of .dll - + # for compatibility with previous releases + _config_vars['SO'] = '.pyd' def get_config_vars(*args): diff --git a/Lib/distutils/tests/test_install.py b/Lib/distutils/tests/test_install.py index 29961617..9d549770 100644 --- a/Lib/distutils/tests/test_install.py +++ b/Lib/distutils/tests/test_install.py @@ -95,7 +95,7 @@ def cleanup(): self.addCleanup(cleanup) - for key in ('nt_user', 'unix_user', 'os2_home'): + for key in ('nt_user', 'unix_user', 'os2_user'): self.assertIn(key, INSTALL_SCHEMES) dist = Distribution({'name': 'xx'}) diff --git a/Lib/site.py b/Lib/site.py index 4354dd7f..da9a292e 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -285,18 +285,15 @@ def getsitepackages(): continue seen.add(prefix) - if sys.platform in ('os2emx', 'riscos'): + if sys.platform in ('riscos'): sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) - elif sys.platform == 'os2knix': - sitepackages.append(os.path.join(prefix, "lib", - "python" + sys.version[:3], - "site-packages")) - sitepackages.append(os.path.join(prefix, "lib", "site-packages")) - elif os.sep == '/': + elif os.sep == '/' or os.name == 'os2': sitepackages.append(os.path.join(prefix, "lib", "python" + sys.version[:3], "site-packages")) sitepackages.append(os.path.join(prefix, "lib", "site-python")) + if os.name == 'os2': + sitepackages.append(os.path.join(prefix, "lib", "site-packages")) else: sitepackages.append(prefix) sitepackages.append(os.path.join(prefix, "lib", "site-packages")) diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index aa69351b..9ab4f457 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -37,16 +37,16 @@ 'data' : '{base}', }, 'os2': { - 'stdlib': '{base}/Lib', - 'platstdlib': '{base}/Lib', - 'purelib': '{base}/Lib/site-packages', - 'platlib': '{base}/Lib/site-packages', - 'include': '{base}/Include', - 'platinclude': '{base}/Include', - 'scripts': '{base}/Scripts', - 'data' : '{base}', + 'stdlib': '{base}/lib/python{py_version_short}', + 'platstdlib': '{platbase}/lib/python{py_version_short}', + 'purelib': '{base}/lib/python{py_version_short}/site-packages', + 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', + 'include': '{base}/include/python{py_version_short}', + 'platinclude': '{platbase}/include/python{py_version_short}', + 'scripts': '{base}/bin', + 'data': '{base}', }, - 'os2_home': { + 'os2_user': { 'stdlib': '{userbase}/lib/python{py_version_short}', 'platstdlib': '{userbase}/lib/python{py_version_short}', 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', @@ -156,7 +156,7 @@ def _expand_vars(scheme, vars): _extend_dict(vars, get_config_vars()) for key, value in _INSTALL_SCHEMES[scheme].items(): - if os.name in ('posix', 'nt'): + if os.name in ('posix', 'nt', 'os2'): value = os.path.expanduser(value) res[key] = os.path.normpath(_subst_vars(value, vars)) return res @@ -462,9 +462,9 @@ def get_config_vars(*args): _CONFIG_VARS['platbase'] = _EXEC_PREFIX _CONFIG_VARS['projectbase'] = _PROJECT_BASE - if os.name in ('nt', 'os2'): + if os.name == 'nt': _init_non_posix(_CONFIG_VARS) - if os.name == 'posix': + if os.name in ('posix', 'os2'): _init_posix(_CONFIG_VARS) # Setting 'userbase' is done below the call to the diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index 755f35f0..67a5602b 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -239,7 +239,7 @@ def test_get_config_h_filename(self): self.assertTrue(os.path.isfile(config_h), config_h) def test_get_scheme_names(self): - wanted = ('nt', 'nt_user', 'os2', 'os2_home', 'osx_framework_user', + wanted = ('nt', 'nt_user', 'os2', 'os2_user', 'osx_framework_user', 'posix_home', 'posix_prefix', 'posix_user') self.assertEqual(get_scheme_names(), wanted) From 562e5dc75bc3fd86a94714a869ce0c38ed1c6728 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 18:20:05 +0000 Subject: [PATCH 026/160] python: Fix EMXCompiler to stop polluting source tree with .obj files. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@395 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/emxccompiler.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index 68c4bded..bf02a321 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -30,6 +30,8 @@ class EMXCCompiler (UnixCCompiler): + _rc_extensions = ['.rc', '.RC'] + compiler_type = 'emx' obj_extension = ".obj" static_lib_extension = ".lib" @@ -170,30 +172,30 @@ def link (self, # -- Miscellaneous methods ----------------------------------------- - # override the object_filenames method from CCompiler to - # support rc and res-files def object_filenames (self, source_filenames, strip_dir=0, output_dir=''): + # Copied from ccompiler.py, extended to return .res as 'object'-file + # for .rc input file if output_dir is None: output_dir = '' obj_names = [] for src_name in source_filenames: - # use normcase to make sure '.rc' is really '.rc' and not '.RC' - (base, ext) = os.path.splitext (os.path.normcase(src_name)) - if ext not in (self.src_extensions + ['.rc']): + (base, ext) = os.path.splitext (src_name) + base = os.path.splitdrive(base)[1] # Chop off the drive + base = base[os.path.isabs(base):] # If abs, chop off leading / + if ext not in (self.src_extensions + self._rc_extensions): raise UnknownFileError, \ "unknown file type '%s' (from '%s')" % \ (ext, src_name) if strip_dir: base = os.path.basename (base) - if ext == '.rc': - # these need to be compiled to object files + if ext in self._rc_extensions: obj_names.append (os.path.join (output_dir, - base + self.res_extension)) + base + self.res_extension)) else: obj_names.append (os.path.join (output_dir, - base + self.obj_extension)) + base + self.obj_extension)) return obj_names # object_filenames () From de75389dd5645a7d6ff802fe2a8bfa63295a194a Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 22:02:52 +0000 Subject: [PATCH 027/160] python: Remove one minor bird-like hack and add another one. This is to keep the sources clean (ready for merging/pushing upstream). git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@397 978522c7-42b7-df11-88a9-00e081727c95 --- Makefile.pre.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 3af4e240..b575c5bc 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -624,16 +624,12 @@ Parser/tokenizer_pgen.o: $(srcdir)/Parser/tokenizer.c Parser/pgenmain.o: $(srcdir)/Include/parsetok.h $(AST_H): $(AST_ASDL) $(ASDLGEN_FILES) -ifndef BOOTSTRAPPING_PYTHON $(MKDIR_P) $(AST_H_DIR) $(ASDLGEN) -h $(AST_H_DIR) $(AST_ASDL) -endif $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES) -ifndef BOOTSTRAPPING_PYTHON $(MKDIR_P) $(AST_C_DIR) $(ASDLGEN) -c $(AST_C_DIR) $(AST_ASDL) -endif Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H) @@ -879,9 +875,11 @@ bininstall: altbininstall (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python2.pc) -rm -f $(DESTDIR)$(LIBPC)/python.pc (cd $(DESTDIR)$(LIBPC); $(LN) -s python2.pc python.pc) +ifneq ($(filter os2emx os2knix,$(MACHDEP)),) # bird-like hack! rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \ $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/$(PYTHON); \ $(INSTALL_DATA) $(LDLIBRARY) $(DLLLIBRARY) $(DESTDIR)$(LIBDIR); \ +endif # Install the interpreter with $(VERSION) affixed # This goes into $(exec_prefix) From 0f30529874aacc5685973a8659a1d85f943473db Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 22:58:02 +0000 Subject: [PATCH 028/160] python: Fix frozen input in interactive mode. Contributed by Paul Smedley. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@398 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/readline.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/readline.c b/Modules/readline.c index 0b043aee..fa8d66e5 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -943,7 +943,7 @@ setup_readline(void) /* Wrapper around GNU readline that handles signals differently. */ -#if defined(HAVE_RL_CALLBACK) && defined(HAVE_SELECT) +#if defined(HAVE_RL_CALLBACK) && defined(HAVE_SELECT) && !defined(__KLIBC__) static char *completed_input_string; static void From 6bd154f431abc7b48209d70fd568717586fa6382 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 23:04:36 +0000 Subject: [PATCH 029/160] python: No HAVE_FD_TRANSFER on OS/2. The SCM_RIGHTS message type isn't actually supported by sendmsg()/recvmsg() on OS/2. Contributed by Paul Smedley. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@399 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/_multiprocessing/multiprocessing.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/_multiprocessing/multiprocessing.c b/Modules/_multiprocessing/multiprocessing.c index 8f55af9d..9276e161 100644 --- a/Modules/_multiprocessing/multiprocessing.c +++ b/Modules/_multiprocessing/multiprocessing.c @@ -8,7 +8,7 @@ #include "multiprocessing.h" -#if (defined(CMSG_LEN) && defined(SCM_RIGHTS)) +#if (defined(CMSG_LEN) && defined(SCM_RIGHTS)) && !defined(__OS2__) #define HAVE_FD_TRANSFER 1 #else #define HAVE_FD_TRANSFER 0 @@ -92,7 +92,7 @@ ProcessingCtrlHandler(DWORD dwCtrlType) #else /* !MS_WINDOWS */ -#if defined(HAVE_FD_TRANSFER) +#if HAVE_FD_TRANSFER /* Functions for transferring file descriptors between processes. Reimplements some of the functionality of the fdcred From 91e5cd15b723dcb9d309ceea68d1a7e2b831ff21 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 23:06:54 +0000 Subject: [PATCH 030/160] python: Add OS/2 bits to configure.ac and sync with configure. Contributed by Paul Smedley. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@400 978522c7-42b7-df11-88a9-00e081727c95 --- configure | 19 +++++++++++-------- configure.ac | 25 ++++++++++++++++++++----- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/configure b/configure index d23206f5..348c18ba 100644 --- a/configure +++ b/configure @@ -5212,7 +5212,7 @@ INSTSONAME='$(LDLIBRARY)' DLLLIBRARY='' LDLIBRARYDIR='' RUNSHARED='' -CONDENSED_VERSION=`echo "${VERSION}" | tr -d .,"` +CONDENSED_VERSION='' # LINKCC is the command that links the python executable -- default is $(CC). # If CXX is set, and if it is needed to link a main function that was @@ -5397,11 +5397,12 @@ $as_echo "#define Py_ENABLE_SHARED 1" >>confdefs.h RUNSHARED=LIBPATH=`pwd`:${LIBPATH} ;; OS/2*|os2*|*emx*) - LDLIBRARY='python$(VERSION)_dll.a' - BLDLIBRARY='-L. -lpython$(VERSION)' - RUNSHARED=BEGINLIBPATH="'`pwd`;$BEGINLIBPATH'" - DLLLIBRARY='python${CONDENSED_VERSION}.dll' - ;; + LDLIBRARY='python$(VERSION)_dll.a' + BLDLIBRARY='-L. -lpython$(VERSION)' + RUNSHARED=BEGINLIBPATH="'`pwd`;$BEGINLIBPATH'" + CONDENSED_VERSION=`echo "${VERSION}" | tr -d .,"` + DLLLIBRARY='python$(CONDENSED_VERSION).dll' + ;; esac else # shared is disabled @@ -8139,7 +8140,7 @@ esac # SO is the extension of shared libraries `(including the dot!) -# -- usually .so, .sl on HP-UX, .dll on Cygwin +# -- usually .so, .sl on HP-UX, .dll on Cygwin and OS/2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking SO" >&5 $as_echo_n "checking SO... " >&6; } if test -z "$SO" @@ -8315,7 +8316,9 @@ then atheos*) LDSHARED="gcc -shared" LDCXXSHARED="g++ -shared";; - OS/2*|os2*|*emx*) LDSHARED="${CC} ${LDFLAGS} -Zdll";; + OS/2*|os2*|*emx*) + LDSHARED="${CC} ${LDFLAGS} -Zdll" + LDCXXSHARED="${CXX} ${LDFLAGS} -Zdll";; *) LDSHARED="ld";; esac fi diff --git a/configure.ac b/configure.ac index 891d5685..812a377e 100644 --- a/configure.ac +++ b/configure.ac @@ -346,6 +346,7 @@ then darwin*) MACHDEP="darwin";; atheos*) MACHDEP="atheos";; irix646) MACHDEP="irix6";; + os2*|OS/2*|emx*) MACHDEP="os2knix";; '') MACHDEP="unknown";; esac fi @@ -748,9 +749,9 @@ AC_MSG_RESULT($LIBRARY) # is blank as the main program is not linked directly against LDLIBRARY. # LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On # systems without shared libraries, LDLIBRARY is the same as LIBRARY -# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library, -# DLLLIBRARY is the shared (i.e., DLL) library. -# +# (defined in the Makefiles). On Cygwin and OS/2 LDLIBRARY is the import +# library, DLLLIBRARY is the shared (i.e., DLL) library. +# # RUNSHARED is used to run shared python without installed libraries # # INSTSONAME is the name of the shared library that will be use to install @@ -761,12 +762,14 @@ AC_SUBST(BLDLIBRARY) AC_SUBST(LDLIBRARYDIR) AC_SUBST(INSTSONAME) AC_SUBST(RUNSHARED) +AC_SUBST(CONDENSED_VERSION) LDLIBRARY="$LIBRARY" BLDLIBRARY='$(LDLIBRARY)' INSTSONAME='$(LDLIBRARY)' DLLLIBRARY='' LDLIBRARYDIR='' RUNSHARED='' +CONDENSED_VERSION='' # LINKCC is the command that links the python executable -- default is $(CC). # If CXX is set, and if it is needed to link a main function that was @@ -821,7 +824,7 @@ AC_ARG_ENABLE(shared, if test -z "$enable_shared" then case $ac_sys_system in - CYGWIN* | atheos*) + CYGWIN* | atheos* | *OS/2* | *emx* | *os2*) enable_shared="yes";; *) enable_shared="no";; @@ -925,6 +928,13 @@ if test $enable_shared = "yes"; then LDLIBRARY='libpython$(VERSION).so' RUNSHARED=LIBPATH=`pwd`:${LIBPATH} ;; + OS/2*|os2*|*emx*) + LDLIBRARY='python$(VERSION)_dll.a' + BLDLIBRARY='-L. -lpython$(VERSION)' + RUNSHARED=BEGINLIBPATH="'`pwd`;$BEGINLIBPATH'" + CONDENSED_VERSION=`echo "${VERSION}" | tr -d .,"` + DLLLIBRARY='python$(CONDENSED_VERSION).dll' + ;; esac else # shared is disabled @@ -1008,6 +1018,7 @@ if test -z "$LN" ; then case $ac_sys_system in BeOS*) LN="ln -s";; CYGWIN*) LN="ln -s";; + OS/2*|os2*|*emx*) LN="ln -s";; atheos*) LN="ln -s";; *) LN=ln;; esac @@ -1906,7 +1917,7 @@ AC_SUBST(BLDSHARED) AC_SUBST(CCSHARED) AC_SUBST(LINKFORSHARED) # SO is the extension of shared libraries `(including the dot!) -# -- usually .so, .sl on HP-UX, .dll on Cygwin +# -- usually .so, .sl on HP-UX, .dll on Cygwin and OS/2 AC_MSG_CHECKING(SO) if test -z "$SO" then @@ -1918,6 +1929,7 @@ then esac ;; CYGWIN*) SO=.dll;; + OS/2*|os2*|*emx*) SO=.dll;; *) SO=.so;; esac else @@ -2074,6 +2086,9 @@ then atheos*) LDSHARED="gcc -shared" LDCXXSHARED="g++ -shared";; + OS/2*|os2*|*emx*) + LDSHARED="${CC} ${LDFLAGS} -Zdll" + LDCXXSHARED="${CXX} ${LDFLAGS} -Zdll";; *) LDSHARED="ld";; esac fi From 346fbd1359c1c93126aef82878418867a5624517 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 21 Mar 2014 23:07:29 +0000 Subject: [PATCH 031/160] python: Fix typo in r397. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@401 978522c7-42b7-df11-88a9-00e081727c95 --- Makefile.pre.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index b575c5bc..180a547a 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -878,7 +878,7 @@ bininstall: altbininstall ifneq ($(filter os2emx os2knix,$(MACHDEP)),) # bird-like hack! rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \ $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/$(PYTHON); \ - $(INSTALL_DATA) $(LDLIBRARY) $(DLLLIBRARY) $(DESTDIR)$(LIBDIR); \ + $(INSTALL_DATA) $(LDLIBRARY) $(DLLLIBRARY) $(DESTDIR)$(LIBDIR) endif # Install the interpreter with $(VERSION) affixed From 19a0b8b1a6fb80fee5e3c28914541943732ee81d Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Sat, 22 Mar 2014 13:17:26 +0000 Subject: [PATCH 032/160] python: Fix warnings. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@402 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/_localemodule.c | 2 +- Modules/posixmodule.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 28f64455..58290f43 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -437,7 +437,7 @@ PyLocale_getdefaultlocale(PyObject* self) strcpy( encoding, ""); if (DosQueryCp (sizeof (cp), cp, &cplen) == NO_ERROR) - PyOS_snprintf(encoding, sizeof(encoding), "CP%u", cp[0]); + PyOS_snprintf(encoding, sizeof(encoding), "CP%lu", cp[0]); return Py_BuildValue("ss", locale, encoding); } diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 5fde5e32..54297d44 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -55,6 +55,7 @@ corresponding Unix manual entries for more information on calls."); #endif #if defined(PYOS_OS2) +#define OS2EMX_PLAIN_CHAR #define INCL_DOS #define INCL_DOSERRORS #define INCL_DOSPROCESS From 92b40cadfa6e69c1336765455ab6e375fb6f990b Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Sat, 22 Mar 2014 13:28:36 +0000 Subject: [PATCH 033/160] python: Remove duplicate #undef HAVE_LINK. It was probably meant to disable the 'os.link' method but: 1) with new configure it doesn't disable (configure changes it to #define HAVE_LINK 1) 2) it makes no sense to disable it once it's present in kLIBC now: in both caes you will get an exception when trying to use it; when disabled, it will be AttributeError due to the missing method and when present, it will be OSError 78 (function not implemented). The latter looks more informative to me. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@403 978522c7-42b7-df11-88a9-00e081727c95 --- pyconfig.h.in | 1 - 1 file changed, 1 deletion(-) diff --git a/pyconfig.h.in b/pyconfig.h.in index 329d050c..d2ee3594 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -1272,7 +1272,6 @@ #define PLATFORM "os2knix" #define PYOS_OS2 1 #define PYCC_GCC 1 -#undef HAVE_LINK // YD not working but available #endif #endif /*Py_PYCONFIG_H*/ From 425eb03b59a91817656d430ed84f63dcdba58ce4 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Sat, 22 Mar 2014 13:49:57 +0000 Subject: [PATCH 034/160] python: Reuse VMS random routine on OS/2 as well. OS/2 has always been using openssl random routine just as VMS does but it was defined in a separate file which is superfluous. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@404 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/posixmodule.c | 40 ---------------------------------------- Python/random.c | 8 ++++---- 2 files changed, 4 insertions(+), 44 deletions(-) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 54297d44..1e0afa5f 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -8705,7 +8705,6 @@ posix_getloadavg(PyObject *self, PyObject *noargs) } #endif -#ifndef __EMX__ PyDoc_STRVAR(posix_urandom__doc__, "urandom(n) -> str\n\n\ Return n random bytes suitable for cryptographic use."); @@ -8735,41 +8734,6 @@ posix_urandom(PyObject *self, PyObject *args) } return result; } -#else -/* Use openssl random routine */ -#include -PyDoc_STRVAR(os2_urandom__doc__, -"urandom(n) -> str\n\n\ -Return a string of n random bytes suitable for cryptographic use."); - -static PyObject* -os2_urandom(PyObject *self, PyObject *args) -{ - int howMany; - PyObject* result; - - /* Read arguments */ - if (! PyArg_ParseTuple(args, "i:urandom", &howMany)) - return NULL; - if (howMany < 0) - return PyErr_Format(PyExc_ValueError, - "negative argument not allowed"); - - /* Allocate bytes */ - result = PyString_FromStringAndSize(NULL, howMany); - if (result != NULL) { - /* Get random data */ - if (RAND_pseudo_bytes((unsigned char*) - PyString_AS_STRING(result), - howMany) < 0) { - Py_DECREF(result); - return PyErr_Format(PyExc_ValueError, - "RAND_pseudo_bytes"); - } - } - return result; -} -#endif #ifdef HAVE_SETRESUID PyDoc_STRVAR(posix_setresuid__doc__, @@ -9166,11 +9130,7 @@ static PyMethodDef posix_methods[] = { #ifdef HAVE_GETRESGID {"getresgid", posix_getresgid, METH_NOARGS, posix_getresgid__doc__}, #endif -#ifndef __EMX__ {"urandom", posix_urandom, METH_VARARGS, posix_urandom__doc__}, -#else - {"urandom", os2_urandom, METH_VARARGS, os2_urandom__doc__}, -#endif {NULL, NULL} /* Sentinel */ }; diff --git a/Python/random.c b/Python/random.c index d615923d..f8c1c43d 100644 --- a/Python/random.c +++ b/Python/random.c @@ -95,7 +95,7 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise) #endif /* MS_WINDOWS */ -#ifdef __VMS +#if defined(__VMS) || defined(__OS2__) /* Use openssl random routine */ #include static int @@ -116,7 +116,7 @@ vms_urandom(unsigned char *buffer, Py_ssize_t size, int raise) #endif /* __VMS */ -#if !defined(MS_WINDOWS) && !defined(__VMS) +#if !defined(MS_WINDOWS) && !defined(__VMS) && !defined(__OS2__) /* Read size bytes from /dev/urandom into buffer. Call Py_FatalError() on error. */ @@ -243,7 +243,7 @@ _PyOS_URandom(void *buffer, Py_ssize_t size) #ifdef MS_WINDOWS return win32_urandom((unsigned char *)buffer, size, 1); #else -# ifdef __VMS +# if defined(__VMS) || defined(__OS2__) return vms_urandom((unsigned char *)buffer, size, 1); # else return dev_urandom_python((char*)buffer, size); @@ -302,7 +302,7 @@ _PyRandom_Init(void) #ifdef MS_WINDOWS (void)win32_urandom((unsigned char *)secret, secret_size, 0); #else /* #ifdef MS_WINDOWS */ -# ifdef __VMS +# if defined(__VMS) || defined(__OS2__) vms_urandom((unsigned char *)secret, secret_size, 0); # else dev_urandom_noraise((char*)secret, secret_size); From 475e179edbf55c1c79a4ba9c54604949f596b3fc Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Tue, 10 Feb 2015 11:04:20 +0000 Subject: [PATCH 035/160] python: use unixroot path for script path replacement. Fixes ticket#114. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@529 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/command/build_scripts.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Lib/distutils/command/build_scripts.py b/Lib/distutils/command/build_scripts.py index 567df658..e9448159 100644 --- a/Lib/distutils/command/build_scripts.py +++ b/Lib/distutils/command/build_scripts.py @@ -95,8 +95,12 @@ def copy_scripts (self): if not self.dry_run: outf = open(outfile, "w") if not _sysconfig.is_python_build(): + if os.name == "os2": + executable = self.executable.replace(os.environ.get("UNIXROOT"),"/@unixroot").lower() + else: + executable = sys.executable outf.write("#!%s%s\n" % - (self.executable, + (executable, post_interp)) else: outf.write("#!%s%s\n" % From d27fb289d203652513fd5c51e27217f2ebbd3aaf Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Thu, 26 Feb 2015 16:22:48 +0000 Subject: [PATCH 036/160] python: -O3 breaks the build, at least for pentium4 march. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@560 978522c7-42b7-df11-88a9-00e081727c95 --- configure | 4 ++-- configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 348c18ba..c55b40e3 100644 --- a/configure +++ b/configure @@ -5955,11 +5955,11 @@ then # debug builds. OPT="-g -O0 -Wall $STRICT_PROTO" else - OPT="-g $WRAP -O3 -Wall $STRICT_PROTO" + OPT="-g $WRAP -O2 -Wall $STRICT_PROTO" fi ;; *) - OPT="-O3 -Wall $STRICT_PROTO" + OPT="-O2 -Wall $STRICT_PROTO" ;; esac case $ac_sys_system in diff --git a/configure.ac b/configure.ac index 812a377e..979ed876 100644 --- a/configure.ac +++ b/configure.ac @@ -1080,11 +1080,11 @@ then # debug builds. OPT="-g -O0 -Wall $STRICT_PROTO" else - OPT="-g $WRAP -O3 -Wall $STRICT_PROTO" + OPT="-g $WRAP -O2 -Wall $STRICT_PROTO" fi ;; *) - OPT="-O3 -Wall $STRICT_PROTO" + OPT="-O2 -Wall $STRICT_PROTO" ;; esac case $ac_sys_system in From f2368914275ffc462e2818798f58b26909b547e9 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Tue, 7 Apr 2015 11:38:52 +0000 Subject: [PATCH 037/160] python: build mmap module, by psmedley. clean also binaries. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@568 978522c7-42b7-df11-88a9-00e081727c95 --- Makefile.pre.in | 3 +++ setup.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 180a547a..5ae12deb 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1291,6 +1291,9 @@ pycremoval: clean: pycremoval find . -name '*.[oa]' -exec rm -f {} ';' + find . -name '*.exe' -exec rm -f {} ';' + find . -name '*.dll' -exec rm -f {} ';' + find . -name '*.pyd' -exec rm -f {} ';' find . -name '*.s[ol]' -exec rm -f {} ';' find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';' find build -name 'fficonfig.h' -exec rm -f {} ';' || true diff --git a/setup.py b/setup.py index cc197cae..1f9b1d67 100644 --- a/setup.py +++ b/setup.py @@ -671,7 +671,9 @@ def detect_modules(self): exts.append( Extension('cPickle', ['cPickle.c']) ) # Memory-mapped files (also works on Win32). - if host_platform not in ['atheos', 'os2knix']: + if host_platform in ['os2knix']: + exts.append( Extension('mmap', ['mmapmodule.c'], libraries=['mmap']) ) + elif host_platform not in ['atheos']: exts.append( Extension('mmap', ['mmapmodule.c']) ) else: missing.append('mmap') From 0ee5a04ee21f842088e17d59087792a8327c2445 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 10 Dec 2015 21:28:23 +0000 Subject: [PATCH 038/160] python: ctypes: Provide dummy _dlopen implementation. This makes mozilla's virtualenv work again in Firefox 31 and above. See #140 for details. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@602 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/ctypes/__init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py index 4e97c152..56bb4122 100644 --- a/Lib/ctypes/__init__.py +++ b/Lib/ctypes/__init__.py @@ -140,6 +140,11 @@ class WinFunctionType(_CFuncPtr): elif _os.name == "posix": from _ctypes import dlopen as _dlopen +elif _os.name == "os2": + # provide a dummy implmementation that always returns nothing (see #140) + def _dlopen(name, mode): + return + from _ctypes import sizeof, byref, addressof, alignment, resize from _ctypes import get_errno, set_errno from _ctypes import _SimpleCData From eec86bcbd543108a21e956d8d37cda139c170415 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 00:26:45 +0000 Subject: [PATCH 039/160] python: Use configured SHELL in subprocess module. Use the shell that was configured when building python whe supbropcess.Popen(shell=True) is requested instead of the hardcoded '/bin/sh' value which might be not there. Closes #141. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@603 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/popen2.py | 5 ++++- Lib/subprocess.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Lib/popen2.py b/Lib/popen2.py index 5a19732d..7c21b77a 100644 --- a/Lib/popen2.py +++ b/Lib/popen2.py @@ -12,6 +12,9 @@ warnings.warn("The popen2 module is deprecated. Use the subprocess module.", DeprecationWarning, stacklevel=2) +import sysconfig +SHELL = sysconfig.get_config_var('SHELL') or '/bin/sh' + __all__ = ["popen2", "popen3", "popen4"] try: @@ -81,7 +84,7 @@ def __del__(self): def _run_child(self, cmd): if isinstance(cmd, basestring): - cmd = ['/bin/sh', '-c', cmd] + cmd = [SHELL, '-c', cmd] os.closerange(3, MAXFD) try: os.execvp(cmd[0], cmd) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 3108537c..962ebd98 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -396,6 +396,9 @@ class Popen(args, bufsize=0, executable=None, import signal import errno +import sysconfig +SHELL = sysconfig.get_config_var('SHELL') or '/bin/sh' + # Exception classes used by this module. class CalledProcessError(Exception): """This exception is raised when a process run by check_call() or @@ -1197,7 +1200,7 @@ def _execute_child(self, args, executable, preexec_fn, close_fds, args = list(args) if shell: - args = ["/bin/sh", "-c"] + args + args = [SHELL, "-c"] + args if executable: args[0] = executable From eb67f945694edb6c2e61a9bbaa1514b1b2e69065 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 16:21:48 +0000 Subject: [PATCH 040/160] python: Fix building with no OS/2 Toolkit headers in include paths. The Toolkit is not necessary to build python with the gcc toolchain. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@604 978522c7-42b7-df11-88a9-00e081727c95 --- Python/importdl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/importdl.h b/Python/importdl.h index b4d21be6..6bbe25bd 100644 --- a/Python/importdl.h +++ b/Python/importdl.h @@ -39,8 +39,8 @@ extern PyObject *_PyImport_LoadDynamicModule(char *name, char *pathname, typedef FARPROC dl_funcptr; #else #if defined(PYOS_OS2) && !defined(PYCC_GCC) -#include -typedef int (* APIENTRY dl_funcptr)(); +#include +typedef int (* APIENTRY dl_funcptr)(void); #else typedef void (*dl_funcptr)(void); #endif From 28b28456d386e886b591fc0c29548420e3e805a4 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 16:27:58 +0000 Subject: [PATCH 041/160] python: configure: Generate correct OS/2 defs and remove pre-built configure. Please use autoreconf -fvi to gengerate the correct version of configure and pyconfig.h.in. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@605 978522c7-42b7-df11-88a9-00e081727c95 --- configure | 15924 ------------------------------------------------ configure.ac | 6 + pyconfig.h.in | 1278 ---- 3 files changed, 6 insertions(+), 17202 deletions(-) delete mode 100644 configure delete mode 100644 pyconfig.h.in diff --git a/configure b/configure deleted file mode 100644 index c55b40e3..00000000 --- a/configure +++ /dev/null @@ -1,15924 +0,0 @@ -#! /bin/sh -# From configure.ac Revision. -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for python 2.7. -# -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and -$0: http://bugs.python.org/ about your system, including -$0: any error possibly output before this message. Then -$0: install a modern shell, or manually run the script -$0: under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='python' -PACKAGE_TARNAME='python' -PACKAGE_VERSION='2.7' -PACKAGE_STRING='python 2.7' -PACKAGE_BUGREPORT='http://bugs.python.org/' -PACKAGE_URL='' - -ac_unique_file="Include/object.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='LTLIBOBJS -SRCDIRS -THREADHEADERS -UNICODE_OBJS -LIBC -LIBM -HAVE_GETHOSTBYNAME -HAVE_GETHOSTBYNAME_R -HAVE_GETHOSTBYNAME_R_3_ARG -HAVE_GETHOSTBYNAME_R_5_ARG -HAVE_GETHOSTBYNAME_R_6_ARG -LIBOBJS -TRUE -MACHDEP_OBJS -DYNLOADFILE -DLINCLDIR -THREADOBJ -LDLAST -USE_THREAD_MODULE -SIGNAL_OBJS -USE_SIGNAL_MODULE -TCLTK_LIBS -TCLTK_INCLUDES -LIBFFI_INCLUDEDIR -PKG_CONFIG -SHLIBS -CFLAGSFORSHARED -LINKFORSHARED -CCSHARED -BLDSHARED -LDCXXSHARED -LDSHARED -SO -LIBTOOL_CRUFT -OTHER_LIBTOOL_OPT -UNIVERSAL_ARCH_FLAGS -BASECFLAGS -OPT -LN -MKDIR_P -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -HAS_HG -HGBRANCH -HGTAG -HGVERSION -BASECPPFLAGS -SVNVERSION -ARFLAGS -ac_ct_AR -AR -RANLIB -GNULD -LINKCC -RUNSHARED -CONDENSED_VERSION -INSTSONAME -LDLIBRARYDIR -BLDLIBRARY -DLLLIBRARY -LDLIBRARY -LIBRARY -BUILDEXEEXT -EGREP -GREP -CPP -MULTIARCH -ac_ct_CXX -MAINCC -CXX -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -EXPORT_MACOSX_DEPLOYMENT_TARGET -CONFIGURE_MACOSX_DEPLOYMENT_TARGET -EXTRAMACHDEPPATH -EXTRAPLATDIR -SGI_ABI -_PYTHON_HOST_PLATFORM -MACHDEP -FRAMEWORKINSTALLAPPSPREFIX -FRAMEWORKUNIXTOOLSPREFIX -FRAMEWORKALTINSTALLLAST -FRAMEWORKALTINSTALLFIRST -FRAMEWORKINSTALLLAST -FRAMEWORKINSTALLFIRST -PYTHONFRAMEWORKINSTALLDIR -PYTHONFRAMEWORKPREFIX -PYTHONFRAMEWORKDIR -PYTHONFRAMEWORKIDENTIFIER -PYTHONFRAMEWORK -LIPO_32BIT_FLAGS -ARCH_RUN_32BIT -UNIVERSALSDK -CONFIG_ARGS -SOVERSION -VERSION -PYTHON_FOR_BUILD -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_universalsdk -with_universal_archs -with_framework_name -enable_framework -with_gcc -with_cxx_main -with_suffix -enable_shared -enable_profiling -with_pydebug -enable_toolbox_glue -with_libs -with_system_expat -with_system_ffi -with_tcltk_includes -with_tcltk_libs -with_dbmliborder -with_signal_module -with_dec_threads -with_threads -with_thread -with_pth -enable_ipv6 -with_doc_strings -with_tsc -with_pymalloc -with_valgrind -with_wctype_functions -with_fpectl -with_libm -with_libc -enable_big_digits -enable_unicode -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures python 2.7 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/python] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of python 2.7:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-universalsdk[=SDKDIR] - Build against Mac OS X 10.4u SDK (ppc/i386) - --enable-framework[=INSTALLDIR] - Build (MacOSX|Darwin) framework - --enable-shared disable/enable building shared python library - --enable-profiling enable C-level code profiling - --enable-toolbox-glue disable/enable MacOSX glue code for extensions - --enable-ipv6 Enable ipv6 (with ipv4) support - --disable-ipv6 Disable ipv6 support - --enable-big-digits[=BITS] - use big digits for Python longs [[BITS=30]] - --enable-unicode[=ucs[24]] - Enable Unicode strings (default is ucs2) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-universal-archs=ARCH - select architectures for universal build ("32-bit", - "64-bit", "3-way", "intel" or "all") - --with-framework-name=FRAMEWORK - specify an alternate name of the framework built - with --enable-framework - --without-gcc never use gcc - --with-cxx-main= - compile main() and link python executable with C++ - compiler - --with-suffix=.exe set executable suffix - --with-pydebug build with Py_DEBUG defined - --with-libs='lib1 ...' link against additional libs - --with-system-expat build pyexpat module using an installed expat - library - --with-system-ffi build _ctypes module using an installed ffi library - --with-tcltk-includes='-I...' - override search for Tcl and Tk include files - --with-tcltk-libs='-L...' - override search for Tcl and Tk libs - --with-dbmliborder=db1:db2:... - order to check db backends for dbm. Valid value is a - colon separated string with the backend names - `ndbm', `gdbm' and `bdb'. - --with-signal-module disable/enable signal module - --with-dec-threads use DEC Alpha/OSF1 thread-safe libraries - --with(out)-threads[=DIRECTORY] - disable/enable thread support - --with(out)-thread[=DIRECTORY] - deprecated; use --with(out)-threads - --with-pth use GNU pth threading libraries - --with(out)-doc-strings disable/enable documentation strings - --with(out)-tsc enable/disable timestamp counter profile - --with(out)-pymalloc disable/enable specialized mallocs - --with-valgrind Enable Valgrind support - --with-wctype-functions use wctype.h functions - --with-fpectl enable SIGFPE catching - --with-libm=STRING math library - --with-libc=STRING C library - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -python configure 2.7 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## -------------------------------------- ## -## Report this to http://bugs.python.org/ ## -## -------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_c_find_uintX_t LINENO BITS VAR -# ------------------------------------ -# Finds an unsigned integer type with width BITS, setting cache variable VAR -# accordingly. -ac_fn_c_find_uintX_t () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 -$as_echo_n "checking for uint$2_t... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - # Order is important - never check a type that is potentially smaller - # than half of the expected target width. - for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ - 'unsigned long long int' 'unsigned short int' 'unsigned char'; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - case $ac_type in #( - uint$2_t) : - eval "$3=yes" ;; #( - *) : - eval "$3=\$ac_type" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if eval test \"x\$"$3"\" = x"no"; then : - -else - break -fi - done -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_find_uintX_t - -# ac_fn_c_find_intX_t LINENO BITS VAR -# ----------------------------------- -# Finds a signed integer type with width BITS, setting cache variable VAR -# accordingly. -ac_fn_c_find_intX_t () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 -$as_echo_n "checking for int$2_t... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - # Order is important - never check a type that is potentially smaller - # than half of the expected target width. - for ac_type in int$2_t 'int' 'long int' \ - 'long long int' 'short int' 'signed char'; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default - enum { N = $2 / 2 - 1 }; -int -main () -{ -static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default - enum { N = $2 / 2 - 1 }; -int -main () -{ -static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) - < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - case $ac_type in #( - int$2_t) : - eval "$3=yes" ;; #( - *) : - eval "$3=\$ac_type" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if eval test \"x\$"$3"\" = x"no"; then : - -else - break -fi - done -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_find_intX_t - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 &5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES -# ---------------------------------------------------- -# Tries to find if the field MEMBER exists in type AGGR, after including -# INCLUDES, setting cache variable VAR accordingly. -ac_fn_c_check_member () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main () -{ -static $2 ac_aggr; -if (ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$4=yes" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main () -{ -static $2 ac_aggr; -if (sizeof ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$4=yes" -else - eval "$4=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_member - -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- -# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - as_decl_name=`echo $2|sed 's/ *(.*//'` - as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -#ifndef $as_decl_name -#ifdef __cplusplus - (void) $as_decl_use; -#else - (void) $as_decl_name; -#endif -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_decl -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by python $as_me 2.7, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_config_headers="$ac_config_headers pyconfig.h" - - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - - - -if test "$cross_compiling" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python interpreter for cross build" >&5 -$as_echo_n "checking for python interpreter for cross build... " >&6; } - if test -z "$PYTHON_FOR_BUILD"; then - for interp in python$PACKAGE_VERSION python2 python; do - which $interp >/dev/null 2>&1 || continue - if $interp -c 'import sys;sys.exit(not (sys.version_info[:2] >= (2,7) and sys.version_info[0] < 3))'; then - break - fi - interp= - done - if test x$interp = x; then - as_fn_error $? "python$PACKAGE_VERSION interpreter not found" "$LINENO" 5 - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5 -$as_echo "$interp" >&6; } - PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/plat-$(MACHDEP) '$interp - fi -elif test "$cross_compiling" = maybe; then - as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5 -else - PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E' -fi - - - -if test "$prefix" != "/"; then - prefix=`echo "$prefix" | sed -e 's/\/$//g'` -fi - - - - -# We don't use PACKAGE_ variables, and they cause conflicts -# with other autoconf-based packages that include Python.h -grep -v 'define PACKAGE_' confdefs.h.new -rm confdefs.h -mv confdefs.h.new confdefs.h - - -VERSION=2.7 - - -SOVERSION=1.0 - -# The later defininition of _XOPEN_SOURCE disables certain features -# on Linux, so we need _GNU_SOURCE to re-enable them (makedev, tm_zone). - -$as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - -# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables -# certain features on NetBSD, so we need _NETBSD_SOURCE to re-enable -# them. - -$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h - - -# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables -# certain features on FreeBSD, so we need __BSD_VISIBLE to re-enable -# them. - -$as_echo "#define __BSD_VISIBLE 1" >>confdefs.h - - -# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables -# u_int on Irix 5.3. Defining _BSD_TYPES brings it back. - -$as_echo "#define _BSD_TYPES 1" >>confdefs.h - - -# The later defininition of _XOPEN_SOURCE and _POSIX_C_SOURCE disables -# certain features on Mac OS X, so we need _DARWIN_C_SOURCE to re-enable -# them. - -$as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h - - - -define_xopen_source=yes - -# Arguments passed to configure. - -CONFIG_ARGS="$ac_configure_args" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-universalsdk" >&5 -$as_echo_n "checking for --enable-universalsdk... " >&6; } -# Check whether --enable-universalsdk was given. -if test "${enable_universalsdk+set}" = set; then : - enableval=$enable_universalsdk; - case $enableval in - yes) - enableval=/Developer/SDKs/MacOSX10.4u.sdk - if test ! -d "${enableval}" - then - enableval=/ - fi - ;; - esac - case $enableval in - no) - UNIVERSALSDK= - enable_universalsdk= - ;; - *) - UNIVERSALSDK=$enableval - if test ! -d "${UNIVERSALSDK}" - then - as_fn_error $? "--enable-universalsdk specifies non-existing SDK: ${UNIVERSALSDK}" "$LINENO" 5 - fi - ;; - esac - - -else - - UNIVERSALSDK= - enable_universalsdk= - -fi - -if test -n "${UNIVERSALSDK}" -then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${UNIVERSALSDK}" >&5 -$as_echo "${UNIVERSALSDK}" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - -ARCH_RUN_32BIT="" - -UNIVERSAL_ARCHS="32-bit" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-universal-archs" >&5 -$as_echo_n "checking for --with-universal-archs... " >&6; } - -# Check whether --with-universal-archs was given. -if test "${with_universal_archs+set}" = set; then : - withval=$with_universal_archs; - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -$as_echo "$withval" >&6; } - UNIVERSAL_ARCHS="$withval" - if test "${enable_universalsdk}" ; then - : - else - as_fn_error $? "--with-universal-archs without --enable-universalsdk. See Mac/README" "$LINENO" 5 - fi - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: 32-bit" >&5 -$as_echo "32-bit" >&6; } - -fi - - - - - -# Check whether --with-framework-name was given. -if test "${with_framework_name+set}" = set; then : - withval=$with_framework_name; - if test "${enable_framework}"; then - : - else - as_fn_error $? "--with-framework-name without --enable-framework. See Mac/README" "$LINENO" 5 - fi - PYTHONFRAMEWORK=${withval} - PYTHONFRAMEWORKDIR=${withval}.framework - PYTHONFRAMEWORKIDENTIFIER=org.python.`echo $withval | tr 'A-Z' 'a-z'` - -else - - PYTHONFRAMEWORK=Python - PYTHONFRAMEWORKDIR=Python.framework - PYTHONFRAMEWORKIDENTIFIER=org.python.python - -fi - -# Check whether --enable-framework was given. -if test "${enable_framework+set}" = set; then : - enableval=$enable_framework; - case $enableval in - yes) - enableval=/Library/Frameworks - esac - case $enableval in - no) - PYTHONFRAMEWORK= - PYTHONFRAMEWORKDIR=no-framework - PYTHONFRAMEWORKPREFIX= - PYTHONFRAMEWORKINSTALLDIR= - FRAMEWORKINSTALLFIRST= - FRAMEWORKINSTALLLAST= - FRAMEWORKALTINSTALLFIRST= - FRAMEWORKALTINSTALLLAST= - if test "x${prefix}" = "xNONE"; then - FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" - else - FRAMEWORKUNIXTOOLSPREFIX="${prefix}" - fi - enable_framework= - ;; - *) - PYTHONFRAMEWORKPREFIX="${enableval}" - PYTHONFRAMEWORKINSTALLDIR=$PYTHONFRAMEWORKPREFIX/$PYTHONFRAMEWORKDIR - FRAMEWORKINSTALLFIRST="frameworkinstallstructure" - FRAMEWORKALTINSTALLFIRST="frameworkinstallstructure bininstall maninstall" - FRAMEWORKINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools" - FRAMEWORKALTINSTALLLAST="frameworkinstallmaclib frameworkinstallapps frameworkaltinstallunixtools" - FRAMEWORKINSTALLAPPSPREFIX="/Applications" - - if test "x${prefix}" = "xNONE" ; then - FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" - - else - FRAMEWORKUNIXTOOLSPREFIX="${prefix}" - fi - - case "${enableval}" in - /System*) - FRAMEWORKINSTALLAPPSPREFIX="/Applications" - if test "${prefix}" = "NONE" ; then - # See below - FRAMEWORKUNIXTOOLSPREFIX="/usr" - fi - ;; - - /Library*) - FRAMEWORKINSTALLAPPSPREFIX="/Applications" - ;; - - */Library/Frameworks) - MDIR="`dirname "${enableval}"`" - MDIR="`dirname "${MDIR}"`" - FRAMEWORKINSTALLAPPSPREFIX="${MDIR}/Applications" - - if test "${prefix}" = "NONE"; then - # User hasn't specified the - # --prefix option, but wants to install - # the framework in a non-default location, - # ensure that the compatibility links get - # installed relative to that prefix as well - # instead of in /usr/local. - FRAMEWORKUNIXTOOLSPREFIX="${MDIR}" - fi - ;; - - *) - FRAMEWORKINSTALLAPPSPREFIX="/Applications" - ;; - esac - - prefix=$PYTHONFRAMEWORKINSTALLDIR/Versions/$VERSION - - # Add files for Mac specific code to the list of output - # files: - ac_config_files="$ac_config_files Mac/Makefile" - - ac_config_files="$ac_config_files Mac/PythonLauncher/Makefile" - - ac_config_files="$ac_config_files Mac/IDLE/Makefile" - - ac_config_files="$ac_config_files Mac/Resources/framework/Info.plist" - - ac_config_files="$ac_config_files Mac/Resources/app/Info.plist" - - esac - -else - - PYTHONFRAMEWORK= - PYTHONFRAMEWORKDIR=no-framework - PYTHONFRAMEWORKPREFIX= - PYTHONFRAMEWORKINSTALLDIR= - FRAMEWORKINSTALLFIRST= - FRAMEWORKINSTALLLAST= - FRAMEWORKALTINSTALLFIRST= - FRAMEWORKALTINSTALLLAST= - if test "x${prefix}" = "xNONE" ; then - FRAMEWORKUNIXTOOLSPREFIX="${ac_default_prefix}" - else - FRAMEWORKUNIXTOOLSPREFIX="${prefix}" - fi - enable_framework= - - -fi - - - - - - - - - - - - - -##AC_ARG_WITH(dyld, -## AS_HELP_STRING([--with-dyld], -## [Use (OpenStep|Rhapsody) dynamic linker])) -## -# Set name for machine-dependent library files - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking MACHDEP" >&5 -$as_echo_n "checking MACHDEP... " >&6; } -if test -z "$MACHDEP" -then - # avoid using uname for cross builds - if test "$cross_compiling" = yes; then - # ac_sys_system and ac_sys_release are only used for setting - # `define_xopen_source' in the case statement below. For the - # current supported cross builds, this macro is not adjusted. - case "$host" in - *-*-linux*) - ac_sys_system=Linux - ;; - *-*-cygwin*) - ac_sys_system=Cygwin - ;; - *) - # for now, limit cross builds to known configurations - MACHDEP="unknown" - as_fn_error $? "cross build not supported for $host" "$LINENO" 5 - esac - ac_sys_release= - else - ac_sys_system=`uname -s` - if test "$ac_sys_system" = "AIX" \ - -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then - ac_sys_release=`uname -v` - else - ac_sys_release=`uname -r` - fi - fi - ac_md_system=`echo $ac_sys_system | - tr -d '/ ' | tr '[A-Z]' '[a-z]'` - ac_md_release=`echo $ac_sys_release | - tr -d '/ ' | sed 's/^[A-Z]\.//' | sed 's/\..*//'` - MACHDEP="$ac_md_system$ac_md_release" - - case $MACHDEP in - linux*) MACHDEP="linux2";; - cygwin*) MACHDEP="cygwin";; - darwin*) MACHDEP="darwin";; - atheos*) MACHDEP="atheos";; - irix646) MACHDEP="irix6";; - os2*|OS/2*|emx*) MACHDEP="os2knix";; - '') MACHDEP="unknown";; - esac -fi - - -if test "$cross_compiling" = yes; then - case "$host" in - *-*-linux*) - case "$host_cpu" in - arm*) - _host_cpu=arm - ;; - *) - _host_cpu=$host_cpu - esac - ;; - *-*-cygwin*) - _host_cpu= - ;; - *) - # for now, limit cross builds to known configurations - MACHDEP="unknown" - as_fn_error $? "cross build not supported for $host" "$LINENO" 5 - esac - _PYTHON_HOST_PLATFORM="$MACHDEP${_host_cpu:+-$_host_cpu}" -fi - -# Some systems cannot stand _XOPEN_SOURCE being defined at all; they -# disable features if it is defined, without any means to access these -# features as extensions. For these systems, we skip the definition of -# _XOPEN_SOURCE. Before adding a system to the list to gain access to -# some feature, make sure there is no alternative way to access this -# feature. Also, when using wildcards, make sure you have verified the -# need for not defining _XOPEN_SOURCE on all systems matching the -# wildcard, and that the wildcard does not include future systems -# (which may remove their limitations). -case $ac_sys_system/$ac_sys_release in - # On OpenBSD, select(2) is not available if _XOPEN_SOURCE is defined, - # even though select is a POSIX function. Reported by J. Ribbens. - # Reconfirmed for OpenBSD 3.3 by Zachary Hamm, for 3.4 by Jason Ish. - # In addition, Stefan Krah confirms that issue #1244610 exists through - # OpenBSD 4.6, but is fixed in 4.7. - OpenBSD/2.* | OpenBSD/3.* | OpenBSD/4.[0123456]) - define_xopen_source=no - # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is - # also defined. This can be overridden by defining _BSD_SOURCE - # As this has a different meaning on Linux, only define it on OpenBSD - -$as_echo "#define _BSD_SOURCE 1" >>confdefs.h - - ;; - OpenBSD/*) - # OpenBSD undoes our definition of __BSD_VISIBLE if _XOPEN_SOURCE is - # also defined. This can be overridden by defining _BSD_SOURCE - # As this has a different meaning on Linux, only define it on OpenBSD - -$as_echo "#define _BSD_SOURCE 1" >>confdefs.h - - ;; - # Defining _XOPEN_SOURCE on NetBSD version prior to the introduction of - # _NETBSD_SOURCE disables certain features (eg. setgroups). Reported by - # Marc Recht - NetBSD/1.5 | NetBSD/1.5.* | NetBSD/1.6 | NetBSD/1.6.* | NetBSD/1.6[A-S]) - define_xopen_source=no;; - # From the perspective of Solaris, _XOPEN_SOURCE is not so much a - # request to enable features supported by the standard as a request - # to disable features not supported by the standard. The best way - # for Python to use Solaris is simply to leave _XOPEN_SOURCE out - # entirely and define __EXTENSIONS__ instead. - SunOS/*) - define_xopen_source=no;; - # On UnixWare 7, u_long is never defined with _XOPEN_SOURCE, - # but used in /usr/include/netinet/tcp.h. Reported by Tim Rice. - # Reconfirmed for 7.1.4 by Martin v. Loewis. - OpenUNIX/8.0.0| UnixWare/7.1.[0-4]) - define_xopen_source=no;; - # On OpenServer 5, u_short is never defined with _XOPEN_SOURCE, - # but used in struct sockaddr.sa_family. Reported by Tim Rice. - SCO_SV/3.2) - define_xopen_source=no;; - # On FreeBSD 4, the math functions C89 does not cover are never defined - # with _XOPEN_SOURCE and __BSD_VISIBLE does not re-enable them. - FreeBSD/4.*) - define_xopen_source=no;; - # On MacOS X 10.2, a bug in ncurses.h means that it craps out if - # _XOPEN_EXTENDED_SOURCE is defined. Apparently, this is fixed in 10.3, which - # identifies itself as Darwin/7.* - # On Mac OS X 10.4, defining _POSIX_C_SOURCE or _XOPEN_SOURCE - # disables platform specific features beyond repair. - # On Mac OS X 10.3, defining _POSIX_C_SOURCE or _XOPEN_SOURCE - # has no effect, don't bother defining them - Darwin/[6789].*) - define_xopen_source=no;; - Darwin/1[0-9].*) - define_xopen_source=no;; - # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but - # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined - # or has another value. By not (re)defining it, the defaults come in place. - AIX/4) - define_xopen_source=no;; - AIX/5) - if test `uname -r` -eq 1; then - define_xopen_source=no - fi - ;; - # On QNX 6.3.2, defining _XOPEN_SOURCE prevents netdb.h from - # defining NI_NUMERICHOST. - QNX/6.3.2) - define_xopen_source=no - ;; - -esac - -if test $define_xopen_source = yes -then - -$as_echo "#define _XOPEN_SOURCE 600" >>confdefs.h - - - # On Tru64 Unix 4.0F, defining _XOPEN_SOURCE also requires - # definition of _XOPEN_SOURCE_EXTENDED and _POSIX_C_SOURCE, or else - # several APIs are not declared. Since this is also needed in some - # cases for HP-UX, we define it globally. - -$as_echo "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h - - - -$as_echo "#define _POSIX_C_SOURCE 200112L" >>confdefs.h - - -fi - -# -# SGI compilers allow the specification of the both the ABI and the -# ISA on the command line. Depending on the values of these switches, -# different and often incompatable code will be generated. -# -# The SGI_ABI variable can be used to modify the CC and LDFLAGS and -# thus supply support for various ABI/ISA combinations. The MACHDEP -# variable is also adjusted. -# - -if test ! -z "$SGI_ABI" -then - CC="cc $SGI_ABI" - LDFLAGS="$SGI_ABI $LDFLAGS" - MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'` -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACHDEP" >&5 -$as_echo "$MACHDEP" >&6; } - -# And add extra plat-mac for darwin - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking EXTRAPLATDIR" >&5 -$as_echo_n "checking EXTRAPLATDIR... " >&6; } -if test -z "$EXTRAPLATDIR" -then - case $MACHDEP in - darwin) - EXTRAPLATDIR="\$(PLATMACDIRS)" - EXTRAMACHDEPPATH="\$(PLATMACPATH)" - ;; - *) - EXTRAPLATDIR="" - EXTRAMACHDEPPATH="" - ;; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXTRAPLATDIR" >&5 -$as_echo "$EXTRAPLATDIR" >&6; } - -# Record the configure-time value of MACOSX_DEPLOYMENT_TARGET, -# it may influence the way we can build extensions, so distutils -# needs to check it - - -CONFIGURE_MACOSX_DEPLOYMENT_TARGET= -EXPORT_MACOSX_DEPLOYMENT_TARGET='#' - -# checks for alternative programs - -# compiler flags are generated in two sets, BASECFLAGS and OPT. OPT is just -# for debug/optimization stuff. BASECFLAGS is for flags that are required -# just to get things to compile and link. Users are free to override OPT -# when running configure or make. The build should not break if they do. -# BASECFLAGS should generally not be messed with, however. - -# XXX shouldn't some/most/all of this code be merged with the stuff later -# on that fiddles with OPT and BASECFLAGS? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --without-gcc" >&5 -$as_echo_n "checking for --without-gcc... " >&6; } - -# Check whether --with-gcc was given. -if test "${with_gcc+set}" = set; then : - withval=$with_gcc; - case $withval in - no) CC=${CC:-cc} - without_gcc=yes;; - yes) CC=gcc - without_gcc=no;; - *) CC=$withval - without_gcc=$withval;; - esac -else - - case $ac_sys_system in - AIX*) CC=${CC:-xlc_r} - without_gcc=;; - BeOS*) - case $BE_HOST_CPU in - ppc) - CC=mwcc - without_gcc=yes - BASECFLAGS="$BASECFLAGS -export pragma" - OPT="$OPT -O" - LDFLAGS="$LDFLAGS -nodup" - ;; - x86) - CC=gcc - without_gcc=no - OPT="$OPT -O" - ;; - *) - as_fn_error $? "Unknown BeOS platform \"$BE_HOST_CPU\"" "$LINENO" 5 - ;; - esac - AR="\$(srcdir)/Modules/ar_beos" - RANLIB=: - ;; - *) without_gcc=no;; - esac -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $without_gcc" >&5 -$as_echo "$without_gcc" >&6; } - -# If the user switches compilers, we can't believe the cache -if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC" -then - as_fn_error $? "cached CC is different -- throw away $cache_file -(it is also a good idea to do 'make clean' before compiling)" "$LINENO" 5 -fi - -if test "$MACHDEP" = "irix6" && test "$CC" != "gcc"; then - # Normally, MIPSpro CC treats #error directives as warnings, which means - # a successful exit code is returned (0). This is a problem because IRIX - # has a bunch of system headers with this guard at the top: - # - # #ifndef __c99 - # #error This header file is to be used only for c99 mode compilations - # #else - # - # When autoconf tests for such a header, like stdint.h, this happens: - # - # configure:4619: cc -c conftest.c >&5 - # cc-1035 cc: WARNING File = /usr/include/stdint.h, Line = 5 - # #error directive: This header file is to be used only for c99 mode - # compilations - # - # #error This header file is to be used only for c99 mode compilations - # ^ - # - # configure:4619: $? = 0 - # configure:4619: result: yes - # - # Therefore, we use `-diag_error 1035` to have the compiler treat the - # warning as an error, which causes cc to return a non-zero result, - # which autoconf can interpret correctly. - CFLAGS="$CFLAGS -diag_error 1035" - # Whilst we're here, we might as well make sure CXX defaults to something - # sensible if we're not using gcc. - if test -z "$CXX"; then - CXX="CC" - fi -fi - -# If the user set CFLAGS, use this instead of the automatically -# determined setting -preset_cflags="$CFLAGS" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test ! -z "$preset_cflags" -then - CFLAGS=$preset_cflags -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-cxx-main=" >&5 -$as_echo_n "checking for --with-cxx-main=... " >&6; } - -# Check whether --with-cxx_main was given. -if test "${with_cxx_main+set}" = set; then : - withval=$with_cxx_main; - - case $withval in - no) with_cxx_main=no - MAINCC='$(CC)';; - yes) with_cxx_main=yes - MAINCC='$(CXX)';; - *) with_cxx_main=yes - MAINCC=$withval - if test -z "$CXX" - then - CXX=$withval - fi;; - esac -else - - with_cxx_main=no - MAINCC='$(CC)' - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_cxx_main" >&5 -$as_echo "$with_cxx_main" >&6; } - -preset_cxx="$CXX" -if test -z "$CXX" -then - case "$CC" in - gcc) if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}g++", so it can be a program name with args. -set dummy ${ac_tool_prefix}g++; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_CXX="$CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -CXX=$ac_cv_path_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_CXX"; then - ac_pt_CXX=$CXX - # Extract the first word of "g++", so it can be a program name with args. -set dummy g++; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_CXX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_CXX=$ac_cv_path_ac_pt_CXX -if test -n "$ac_pt_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 -$as_echo "$ac_pt_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_pt_CXX - fi -else - CXX="$ac_cv_path_CXX" -fi - ;; - cc) if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}c++", so it can be a program name with args. -set dummy ${ac_tool_prefix}c++; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_CXX="$CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -CXX=$ac_cv_path_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_CXX"; then - ac_pt_CXX=$CXX - # Extract the first word of "c++", so it can be a program name with args. -set dummy c++; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_CXX="$ac_pt_CXX" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in notfound -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_CXX="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_CXX=$ac_cv_path_ac_pt_CXX -if test -n "$ac_pt_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_CXX" >&5 -$as_echo "$ac_pt_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_CXX" = x; then - CXX="c++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_pt_CXX - fi -else - CXX="$ac_cv_path_CXX" -fi - ;; - esac - if test "$CXX" = "notfound" - then - CXX="" - fi -fi -if test -z "$CXX" -then - if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="notfound" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - if test "$CXX" = "notfound" - then - CXX="" - fi -fi -if test "$preset_cxx" != "$CXX" -then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: - - By default, distutils will build C++ extension modules with \"$CXX\". - If this is not intended, then set CXX on the configure command line. - " >&5 -$as_echo "$as_me: WARNING: - - By default, distutils will build C++ extension modules with \"$CXX\". - If this is not intended, then set CXX on the configure command line. - " >&2;} -fi - -MULTIARCH=$($CC --print-multiarch 2>/dev/null) - - - -# checks for UNIX variants that set C preprocessor variables - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi - - - if test "$MINIX" = yes; then - -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h - - -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h - - -$as_echo "#define _MINIX 1" >>confdefs.h - - fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - - - -# Check for unsupported systems -case $ac_sys_system/$ac_sys_release in -atheos*|Linux*/1*) - echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported. - echo See README for details. - exit 1;; -esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-suffix" >&5 -$as_echo_n "checking for --with-suffix... " >&6; } - -# Check whether --with-suffix was given. -if test "${with_suffix+set}" = set; then : - withval=$with_suffix; - case $withval in - no) EXEEXT=;; - yes) EXEEXT=.exe;; - *) EXEEXT=$withval;; - esac -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXEEXT" >&5 -$as_echo "$EXEEXT" >&6; } - -# Test whether we're running on a non-case-sensitive system, in which -# case we give a warning if no ext is given - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for case-insensitive build directory" >&5 -$as_echo_n "checking for case-insensitive build directory... " >&6; } -if test ! -d CaseSensitiveTestDir; then -mkdir CaseSensitiveTestDir -fi - -if test -d casesensitivetestdir -then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - BUILDEXEEXT=.exe -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - BUILDEXEEXT=$EXEEXT -fi -rmdir CaseSensitiveTestDir - -case $MACHDEP in -bsdos*) - case $CC in - gcc) CC="$CC -D_HAVE_BSDI";; - esac;; -esac - -case $ac_sys_system in -hp*|HP*) - case $CC in - cc|*/cc) CC="$CC -Ae";; - esac;; -SunOS*) - # Some functions have a prototype only with that define, e.g. confstr - -$as_echo "#define __EXTENSIONS__ 1" >>confdefs.h - - ;; -esac - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBRARY" >&5 -$as_echo_n "checking LIBRARY... " >&6; } -if test -z "$LIBRARY" -then - LIBRARY='libpython$(VERSION).a' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBRARY" >&5 -$as_echo "$LIBRARY" >&6; } - -# LDLIBRARY is the name of the library to link against (as opposed to the -# name of the library into which to insert object files). BLDLIBRARY is also -# the library to link against, usually. On Mac OS X frameworks, BLDLIBRARY -# is blank as the main program is not linked directly against LDLIBRARY. -# LDLIBRARYDIR is the path to LDLIBRARY, which is made in a subdirectory. On -# systems without shared libraries, LDLIBRARY is the same as LIBRARY -# (defined in the Makefiles). On Cygwin LDLIBRARY is the import library, -# DLLLIBRARY is the shared (i.e., DLL) library. -# -# RUNSHARED is used to run shared python without installed libraries -# -# INSTSONAME is the name of the shared library that will be use to install -# on the system - some systems like version suffix, others don't - - - - - - -LDLIBRARY="$LIBRARY" -BLDLIBRARY='$(LDLIBRARY)' -INSTSONAME='$(LDLIBRARY)' -DLLLIBRARY='' -LDLIBRARYDIR='' -RUNSHARED='' -CONDENSED_VERSION='' - -# LINKCC is the command that links the python executable -- default is $(CC). -# If CXX is set, and if it is needed to link a main function that was -# compiled with CXX, LINKCC is CXX instead. Always using CXX is undesirable: -# python might then depend on the C++ runtime -# This is altered for AIX in order to build the export list before -# linking. - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LINKCC" >&5 -$as_echo_n "checking LINKCC... " >&6; } -if test -z "$LINKCC" -then - LINKCC='$(PURIFY) $(MAINCC)' - case $ac_sys_system in - AIX*) - exp_extra="\"\"" - if test $ac_sys_release -ge 5 -o \ - $ac_sys_release -eq 4 -a `uname -r` -ge 2 ; then - exp_extra="." - fi - LINKCC="\$(srcdir)/Modules/makexp_aix Modules/python.exp $exp_extra \$(LIBRARY); $LINKCC";; - QNX*) - # qcc must be used because the other compilers do not - # support -N. - LINKCC=qcc;; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKCC" >&5 -$as_echo "$LINKCC" >&6; } - -# GNULD is set to "yes" if the GNU linker is used. If this goes wrong -# make sure we default having it set to "no": this is used by -# distutils.unixccompiler to know if it should add --enable-new-dtags -# to linker command lines, and failing to detect GNU ld simply results -# in the same bahaviour as before. - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -ac_prog=ld -if test "$GCC" = yes; then - ac_prog=`$CC -print-prog-name=ld` -fi -case `"$ac_prog" -V 2>&1 < /dev/null` in - *GNU*) - GNULD=yes;; - *) - GNULD=no;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNULD" >&5 -$as_echo "$GNULD" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-shared" >&5 -$as_echo_n "checking for --enable-shared... " >&6; } -# Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; -fi - - -if test -z "$enable_shared" -then - case $ac_sys_system in - CYGWIN* | atheos* | *OS/2* | *emx* | *os2*) - enable_shared="yes";; - *) - enable_shared="no";; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-profiling" >&5 -$as_echo_n "checking for --enable-profiling... " >&6; } -# Check whether --enable-profiling was given. -if test "${enable_profiling+set}" = set; then : - enableval=$enable_profiling; -fi - -if test "x$enable_profiling" = xyes; then - ac_save_cc="$CC" - CC="$CC -pg" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int main() { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -else - enable_profiling=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - CC="$ac_save_cc" -else - enable_profiling=no -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_profiling" >&5 -$as_echo "$enable_profiling" >&6; } - -if test "x$enable_profiling" = xyes; then - BASECFLAGS="-pg $BASECFLAGS" - LDFLAGS="-pg $LDFLAGS" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LDLIBRARY" >&5 -$as_echo_n "checking LDLIBRARY... " >&6; } - -# MacOSX framework builds need more magic. LDLIBRARY is the dynamic -# library that we build, but we do not want to link against it (we -# will find it with a -framework option). For this reason there is an -# extra variable BLDLIBRARY against which Python and the extension -# modules are linked, BLDLIBRARY. This is normally the same as -# LDLIBRARY, but empty for MacOSX framework builds. -if test "$enable_framework" -then - LDLIBRARY='$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - RUNSHARED=DYLD_FRAMEWORK_PATH="`pwd`:$DYLD_FRAMEWORK_PATH" - BLDLIBRARY='' -else - BLDLIBRARY='$(LDLIBRARY)' -fi - -# Other platforms follow -if test $enable_shared = "yes"; then - -$as_echo "#define Py_ENABLE_SHARED 1" >>confdefs.h - - case $ac_sys_system in - BeOS*) - LDLIBRARY='libpython$(VERSION).so' - ;; - CYGWIN*) - LDLIBRARY='libpython$(VERSION).dll.a' - DLLLIBRARY='libpython$(VERSION).dll' - ;; - SunOS*) - LDLIBRARY='libpython$(VERSION).so' - BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)' - RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH} - INSTSONAME="$LDLIBRARY".$SOVERSION - ;; - Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*) - LDLIBRARY='libpython$(VERSION).so' - BLDLIBRARY='-L. -lpython$(VERSION)' - RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH} - case $ac_sys_system in - FreeBSD*) - SOVERSION=`echo $SOVERSION|cut -d "." -f 1` - ;; - esac - INSTSONAME="$LDLIBRARY".$SOVERSION - ;; - hp*|HP*) - case `uname -m` in - ia64) - LDLIBRARY='libpython$(VERSION).so' - ;; - *) - LDLIBRARY='libpython$(VERSION).sl' - ;; - esac - BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)' - RUNSHARED=SHLIB_PATH=`pwd`:${SHLIB_PATH} - ;; - OSF*) - LDLIBRARY='libpython$(VERSION).so' - BLDLIBRARY='-rpath $(LIBDIR) -L. -lpython$(VERSION)' - RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH} - ;; - atheos*) - LDLIBRARY='libpython$(VERSION).so' - BLDLIBRARY='-L. -lpython$(VERSION)' - RUNSHARED=DLL_PATH=`pwd`:${DLL_PATH:-/atheos/sys/libs:/atheos/autolnk/lib} - ;; - Darwin*) - LDLIBRARY='libpython$(VERSION).dylib' - BLDLIBRARY='-L. -lpython$(VERSION)' - RUNSHARED='DYLD_LIBRARY_PATH=`pwd`:${DYLD_LIBRARY_PATH}' - ;; - AIX*) - LDLIBRARY='libpython$(VERSION).so' - RUNSHARED=LIBPATH=`pwd`:${LIBPATH} - ;; - OS/2*|os2*|*emx*) - LDLIBRARY='python$(VERSION)_dll.a' - BLDLIBRARY='-L. -lpython$(VERSION)' - RUNSHARED=BEGINLIBPATH="'`pwd`;$BEGINLIBPATH'" - CONDENSED_VERSION=`echo "${VERSION}" | tr -d .,"` - DLLLIBRARY='python$(CONDENSED_VERSION).dll' - ;; - - esac -else # shared is disabled - case $ac_sys_system in - CYGWIN*) - BLDLIBRARY='$(LIBRARY)' - LDLIBRARY='libpython$(VERSION).dll.a' - ;; - esac -fi - -if test "$cross_compiling" = yes; then - RUNSHARED= -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDLIBRARY" >&5 -$as_echo "$LDLIBRARY" >&6; } - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar aal - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar aal -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="ar" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - - -# tweak ARFLAGS only if the user didn't set it on the command line - -if test -z "$ARFLAGS" -then - ARFLAGS="rc" -fi - - -# Extract the first word of "svnversion", so it can be a program name with args. -set dummy svnversion; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_SVNVERSION+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$SVNVERSION"; then - ac_cv_prog_SVNVERSION="$SVNVERSION" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_SVNVERSION="found" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_prog_SVNVERSION" && ac_cv_prog_SVNVERSION="not-found" -fi -fi -SVNVERSION=$ac_cv_prog_SVNVERSION -if test -n "$SVNVERSION"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SVNVERSION" >&5 -$as_echo "$SVNVERSION" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test $SVNVERSION = found -then - SVNVERSION="svnversion \$(srcdir)" -else - SVNVERSION="echo Unversioned directory" -fi - - -if test "$abs_srcdir" != "$abs_builddir"; then - # If we're building out-of-tree make sure Include (in the current dir) - # gets picked up before its $srcdir counterpart in order for Python-ast.h - # and graminit.h to get picked up from the correct directory. - # (A side effect of this is that these resources will automatically be - # regenerated when building out-of-tree, regardless of whether or not - # the $srcdir counterpart is up-to-date. This is an acceptable trade - # off.) - BASECPPFLAGS="-IInclude" -else - BASECPPFLAGS="" -fi - - - - -# Extract the first word of "hg", so it can be a program name with args. -set dummy hg; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_HAS_HG+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$HAS_HG"; then - ac_cv_prog_HAS_HG="$HAS_HG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_HAS_HG="found" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_prog_HAS_HG" && ac_cv_prog_HAS_HG="not-found" -fi -fi -HAS_HG=$ac_cv_prog_HAS_HG -if test -n "$HAS_HG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAS_HG" >&5 -$as_echo "$HAS_HG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test $HAS_HG = found -then - HGVERSION="hg id -i \$(srcdir)" - HGTAG="hg id -t \$(srcdir)" - HGBRANCH="hg id -b \$(srcdir)" -else - HGVERSION="" - HGTAG="" - HGBRANCH="" -fi - -case $MACHDEP in -bsdos*|hp*|HP*) - # install -d does not work on BSDI or HP-UX - if test -z "$INSTALL" - then - INSTALL="${srcdir}/install-sh -c" - fi -esac -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - - -# Not every filesystem supports hard links - -if test -z "$LN" ; then - case $ac_sys_system in - BeOS*) LN="ln -s";; - CYGWIN*) LN="ln -s";; - atheos*) LN="ln -s";; - OS/2*|os2*|*emx*) LN="ln -s";; - *) LN=ln;; - esac -fi - -# Check for --with-pydebug -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-pydebug" >&5 -$as_echo_n "checking for --with-pydebug... " >&6; } - -# Check whether --with-pydebug was given. -if test "${with_pydebug+set}" = set; then : - withval=$with_pydebug; -if test "$withval" != no -then - -$as_echo "#define Py_DEBUG 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; }; - Py_DEBUG='true' -else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; Py_DEBUG='false' -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# XXX Shouldn't the code above that fiddles with BASECFLAGS and OPT be -# merged with this chunk of code? - -# Optimizer/debugger flags -# ------------------------ -# (The following bit of code is complicated enough - please keep things -# indented properly. Just pretend you're editing Python code. ;-) - -# There are two parallel sets of case statements below, one that checks to -# see if OPT was set and one that does BASECFLAGS setting based upon -# compiler and platform. BASECFLAGS tweaks need to be made even if the -# user set OPT. - -# tweak OPT based on compiler and platform, only if the user didn't set -# it on the command line - -if test "${OPT-unset}" = "unset" -then - case $GCC in - yes) - if test "$CC" != 'g++' ; then - STRICT_PROTO="-Wstrict-prototypes" - fi - # For gcc 4.x we need to use -fwrapv so lets check if its supported - if "$CC" -v --help 2>/dev/null |grep -- -fwrapv > /dev/null; then - WRAP="-fwrapv" - fi - - # Clang also needs -fwrapv - case $CC in - *clang*) WRAP="-fwrapv" - ;; - esac - - case $ac_cv_prog_cc_g in - yes) - if test "$Py_DEBUG" = 'true' ; then - # Optimization messes up debuggers, so turn it off for - # debug builds. - OPT="-g -O0 -Wall $STRICT_PROTO" - else - OPT="-g $WRAP -O2 -Wall $STRICT_PROTO" - fi - ;; - *) - OPT="-O2 -Wall $STRICT_PROTO" - ;; - esac - case $ac_sys_system in - SCO_SV*) OPT="$OPT -m486 -DSCO5" - ;; - esac - ;; - - *) - OPT="-O" - ;; - esac -fi - - - -# The -arch flags for universal builds on OSX -UNIVERSAL_ARCH_FLAGS= - - -# tweak BASECFLAGS based on compiler and platform -case $GCC in -yes) - # Python violates C99 rules, by casting between incompatible - # pointer types. GCC may generate bad code as a result of that, - # so use -fno-strict-aliasing if supported. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -fno-strict-aliasing" >&5 -$as_echo_n "checking whether $CC accepts -fno-strict-aliasing... " >&6; } - ac_save_cc="$CC" - CC="$CC -fno-strict-aliasing" - if ${ac_cv_no_strict_aliasing_ok+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_no_strict_aliasing_ok=yes -else - ac_cv_no_strict_aliasing_ok=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - - CC="$ac_save_cc" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_no_strict_aliasing_ok" >&5 -$as_echo "$ac_cv_no_strict_aliasing_ok" >&6; } - if test $ac_cv_no_strict_aliasing_ok = yes - then - BASECFLAGS="$BASECFLAGS -fno-strict-aliasing" - fi - - # if using gcc on alpha, use -mieee to get (near) full IEEE 754 - # support. Without this, treatment of subnormals doesn't follow - # the standard. - case $host in - alpha*) - BASECFLAGS="$BASECFLAGS -mieee" - ;; - esac - - case $ac_sys_system in - SCO_SV*) - BASECFLAGS="$BASECFLAGS -m486 -DSCO5" - ;; - # is there any other compiler on Darwin besides gcc? - Darwin*) - # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd - # used to be here, but non-Apple gcc doesn't accept them. - if test "${CC}" = gcc - then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which compiler should be used" >&5 -$as_echo_n "checking which compiler should be used... " >&6; } - case "${UNIVERSALSDK}" in - */MacOSX10.4u.sdk) - # Build using 10.4 SDK, force usage of gcc when the - # compiler is gcc, otherwise the user will get very - # confusing error messages when building on OSX 10.6 - CC=gcc-4.0 - CPP=cpp-4.0 - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } - fi - - # Calculate the right deployment target for this build. - # - cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'` - if test ${cur_target} '>' 10.2; then - cur_target=10.3 - if test ${enable_universalsdk}; then - if test "${UNIVERSAL_ARCHS}" = "all"; then - # Ensure that the default platform for a - # 4-way universal build is OSX 10.5, - # that's the first OS release where - # 4-way builds make sense. - cur_target='10.5' - - elif test "${UNIVERSAL_ARCHS}" = "3-way"; then - cur_target='10.5' - - elif test "${UNIVERSAL_ARCHS}" = "intel"; then - cur_target='10.5' - - elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then - cur_target='10.5' - fi - else - if test `/usr/bin/arch` = "i386"; then - # On Intel macs default to a deployment - # target of 10.4, that's the first OSX - # release with Intel support. - cur_target="10.4" - fi - fi - fi - CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}} - - # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the - # environment with a value that is the same as what we'll use - # in the Makefile to ensure that we'll get the same compiler - # environment during configure and build time. - MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET" - export MACOSX_DEPLOYMENT_TARGET - EXPORT_MACOSX_DEPLOYMENT_TARGET='' - - if test "${enable_universalsdk}"; then - UNIVERSAL_ARCH_FLAGS="" - if test "$UNIVERSAL_ARCHS" = "32-bit" ; then - UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386" - ARCH_RUN_32BIT="" - LIPO_32BIT_FLAGS="" - - elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then - UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64" - LIPO_32BIT_FLAGS="" - ARCH_RUN_32BIT="true" - - elif test "$UNIVERSAL_ARCHS" = "all" ; then - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64" - LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" - - elif test "$UNIVERSAL_ARCHS" = "intel" ; then - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64" - LIPO_32BIT_FLAGS="-extract i386" - ARCH_RUN_32BIT="/usr/bin/arch -i386" - - elif test "$UNIVERSAL_ARCHS" = "3-way" ; then - UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64" - LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386" - ARCH_RUN_32BIT="/usr/bin/arch -i386 -ppc" - - else - as_fn_error $? "proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way" "$LINENO" 5 - - fi - - - CFLAGS="${UNIVERSAL_ARCH_FLAGS} ${CFLAGS}" - if test "${UNIVERSALSDK}" != "/" - then - CPPFLAGS="-isysroot ${UNIVERSALSDK} ${CPPFLAGS}" - LDFLAGS="-isysroot ${UNIVERSALSDK} ${LDFLAGS}" - CFLAGS="-isysroot ${UNIVERSALSDK} ${CFLAGS}" - fi - - fi - - - ;; - OSF*) - BASECFLAGS="$BASECFLAGS -mieee" - ;; - esac - ;; - -*) - case $ac_sys_system in - OpenUNIX*|UnixWare*) - BASECFLAGS="$BASECFLAGS -K pentium,host,inline,loop_unroll,alloca " - ;; - OSF*) - BASECFLAGS="$BASECFLAGS -ieee -std" - ;; - SCO_SV*) - BASECFLAGS="$BASECFLAGS -belf -Ki486 -DSCO5" - ;; - esac - ;; -esac - -if test "$Py_DEBUG" = 'true'; then - : -else - OPT="-DNDEBUG $OPT" -fi - -if test "$ac_arch_flags" -then - BASECFLAGS="$BASECFLAGS $ac_arch_flags" -fi - -# disable check for icc since it seems to pass, but generates a warning -if test "$CC" = icc -then - ac_cv_opt_olimit_ok=no -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -OPT:Olimit=0" >&5 -$as_echo_n "checking whether $CC accepts -OPT:Olimit=0... " >&6; } -if ${ac_cv_opt_olimit_ok+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cc="$CC" -CC="$CC -OPT:Olimit=0" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_opt_olimit_ok=yes -else - ac_cv_opt_olimit_ok=no - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -CC="$ac_save_cc" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_opt_olimit_ok" >&5 -$as_echo "$ac_cv_opt_olimit_ok" >&6; } -if test $ac_cv_opt_olimit_ok = yes; then - case $ac_sys_system in - # XXX is this branch needed? On MacOSX 10.2.2 the result of the - # olimit_ok test is "no". Is it "yes" in some other Darwin-esque - # environment? - Darwin*) - ;; - # XXX thankfully this useless troublemaker of a flag has been - # eradicated in the 3.x line. For now, make sure it isn't picked - # up by any of our other platforms that use CC. - AIX*|SunOS*|HP-UX*|IRIX*) - ;; - *) - BASECFLAGS="$BASECFLAGS -OPT:Olimit=0" - ;; - esac -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Olimit 1500" >&5 -$as_echo_n "checking whether $CC accepts -Olimit 1500... " >&6; } - if ${ac_cv_olimit_ok+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cc="$CC" - CC="$CC -Olimit 1500" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_olimit_ok=yes -else - ac_cv_olimit_ok=no - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CC="$ac_save_cc" -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_olimit_ok" >&5 -$as_echo "$ac_cv_olimit_ok" >&6; } - if test $ac_cv_olimit_ok = yes; then - case $ac_sys_system in - # Issue #16534: On HP-UX ac_cv_olimit_ok=yes is a false positive. - HP-UX*) - ;; - *) - BASECFLAGS="$BASECFLAGS -Olimit 1500" - ;; - esac - fi -fi - -# Check whether GCC supports PyArg_ParseTuple format -if test "$GCC" = "yes" -then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc supports ParseTuple __format__" >&5 -$as_echo_n "checking whether gcc supports ParseTuple __format__... " >&6; } - save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -Werror -Wformat" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - void f(char*,...)__attribute((format(PyArg_ParseTuple, 1, 2))); -int -main () -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -$as_echo "#define HAVE_ATTRIBUTE_FORMAT_PARSETUPLE 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$save_CFLAGS -fi - -# On some compilers, pthreads are available without further options -# (e.g. MacOS X). On some of these systems, the compiler will not -# complain if unaccepted options are passed (e.g. gcc on Mac OS X). -# So we have to see first whether pthreads are available without -# options before we can check whether -Kpthread improves anything. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads are available without options" >&5 -$as_echo_n "checking whether pthreads are available without options... " >&6; } -if ${ac_cv_pthread_is_default+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_pthread_is_default=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void* routine(void* p){return NULL;} - -int main(){ - pthread_t p; - if(pthread_create(&p,NULL,routine,NULL)!=0) - return 1; - (void)pthread_detach(p); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - - ac_cv_pthread_is_default=yes - ac_cv_kthread=no - ac_cv_pthread=no - -else - ac_cv_pthread_is_default=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_is_default" >&5 -$as_echo "$ac_cv_pthread_is_default" >&6; } - - -if test $ac_cv_pthread_is_default = yes -then - ac_cv_kpthread=no -else -# -Kpthread, if available, provides the right #defines -# and linker options to make pthread_create available -# Some compilers won't report that they do not support -Kpthread, -# so we need to run a program to see whether it really made the -# function available. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kpthread" >&5 -$as_echo_n "checking whether $CC accepts -Kpthread... " >&6; } -if ${ac_cv_kpthread+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cc="$CC" -CC="$CC -Kpthread" -if test "$cross_compiling" = yes; then : - ac_cv_kpthread=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void* routine(void* p){return NULL;} - -int main(){ - pthread_t p; - if(pthread_create(&p,NULL,routine,NULL)!=0) - return 1; - (void)pthread_detach(p); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_kpthread=yes -else - ac_cv_kpthread=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -CC="$ac_save_cc" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kpthread" >&5 -$as_echo "$ac_cv_kpthread" >&6; } -fi - -if test $ac_cv_kpthread = no -a $ac_cv_pthread_is_default = no -then -# -Kthread, if available, provides the right #defines -# and linker options to make pthread_create available -# Some compilers won't report that they do not support -Kthread, -# so we need to run a program to see whether it really made the -# function available. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Kthread" >&5 -$as_echo_n "checking whether $CC accepts -Kthread... " >&6; } -if ${ac_cv_kthread+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cc="$CC" -CC="$CC -Kthread" -if test "$cross_compiling" = yes; then : - ac_cv_kthread=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void* routine(void* p){return NULL;} - -int main(){ - pthread_t p; - if(pthread_create(&p,NULL,routine,NULL)!=0) - return 1; - (void)pthread_detach(p); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_kthread=yes -else - ac_cv_kthread=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -CC="$ac_save_cc" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_kthread" >&5 -$as_echo "$ac_cv_kthread" >&6; } -fi - -if test $ac_cv_kthread = no -a $ac_cv_pthread_is_default = no -then -# -pthread, if available, provides the right #defines -# and linker options to make pthread_create available -# Some compilers won't report that they do not support -pthread, -# so we need to run a program to see whether it really made the -# function available. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -pthread" >&5 -$as_echo_n "checking whether $CC accepts -pthread... " >&6; } -if ${ac_cv_pthread+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cc="$CC" -CC="$CC -pthread" -if test "$cross_compiling" = yes; then : - ac_cv_pthread=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void* routine(void* p){return NULL;} - -int main(){ - pthread_t p; - if(pthread_create(&p,NULL,routine,NULL)!=0) - return 1; - (void)pthread_detach(p); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_pthread=yes -else - ac_cv_pthread=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -CC="$ac_save_cc" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread" >&5 -$as_echo "$ac_cv_pthread" >&6; } -fi - -# If we have set a CC compiler flag for thread support then -# check if it works for CXX, too. -ac_cv_cxx_thread=no -if test ! -z "$CXX" -then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX also accepts flags for thread support" >&5 -$as_echo_n "checking whether $CXX also accepts flags for thread support... " >&6; } -ac_save_cxx="$CXX" - -if test "$ac_cv_kpthread" = "yes" -then - CXX="$CXX -Kpthread" - ac_cv_cxx_thread=yes -elif test "$ac_cv_kthread" = "yes" -then - CXX="$CXX -Kthread" - ac_cv_cxx_thread=yes -elif test "$ac_cv_pthread" = "yes" -then - CXX="$CXX -pthread" - ac_cv_cxx_thread=yes -fi - -if test $ac_cv_cxx_thread = yes -then - echo 'void foo();int main(){foo();}void foo(){}' > conftest.$ac_ext - $CXX -c conftest.$ac_ext 2>&5 - if $CXX -o conftest$ac_exeext conftest.$ac_objext 2>&5 \ - && test -s conftest$ac_exeext && ./conftest$ac_exeext - then - ac_cv_cxx_thread=yes - else - ac_cv_cxx_thread=no - fi - rm -fr conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_thread" >&5 -$as_echo "$ac_cv_cxx_thread" >&6; } -fi -CXX="$ac_save_cxx" - - -# checks for header files -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_header in asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \ -fcntl.h grp.h \ -ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \ -shadow.h signal.h stdint.h stropts.h termios.h thread.h \ -unistd.h utime.h \ -sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \ -sys/lock.h sys/mkdev.h sys/modem.h \ -sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \ -sys/termio.h sys/time.h \ -sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \ -sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \ -bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if eval \${$as_ac_Header+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include <$ac_hdr> - -int -main () -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_ac_Header=yes" -else - eval "$as_ac_Header=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$as_ac_Header - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 -_ACEOF - -ac_header_dirent=$ac_hdr; break -fi - -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' dir; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_opendir=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : - break -fi -done -if ${ac_cv_search_opendir+:} false; then : - -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' x; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_opendir=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : - break -fi -done -if ${ac_cv_search_opendir+:} false; then : - -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5 -$as_echo_n "checking whether sys/types.h defines makedev... " >&6; } -if ${ac_cv_header_sys_types_h_makedev+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -return makedev(0, 0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_header_sys_types_h_makedev=yes -else - ac_cv_header_sys_types_h_makedev=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5 -$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; } - -if test $ac_cv_header_sys_types_h_makedev = no; then -ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mkdev_h" = xyes; then : - -$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h - -fi - - - - if test $ac_cv_header_sys_mkdev_h = no; then - ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then : - -$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h - -fi - - - fi -fi - - -# On Solaris, term.h requires curses.h -for ac_header in term.h -do : - ac_fn_c_check_header_compile "$LINENO" "term.h" "ac_cv_header_term_h" " -#ifdef HAVE_CURSES_H -#include -#endif - -" -if test "x$ac_cv_header_term_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_TERM_H 1 -_ACEOF - -fi - -done - - -# On Linux, netlink.h requires asm/types.h -for ac_header in linux/netlink.h -do : - ac_fn_c_check_header_compile "$LINENO" "linux/netlink.h" "ac_cv_header_linux_netlink_h" " -#ifdef HAVE_ASM_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_header_linux_netlink_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LINUX_NETLINK_H 1 -_ACEOF - -fi - -done - - -# checks for typedefs -was_it_defined=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_t in time.h" >&5 -$as_echo_n "checking for clock_t in time.h... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "clock_t" >/dev/null 2>&1; then : - was_it_defined=yes -else - - -$as_echo "#define clock_t long" >>confdefs.h - - -fi -rm -f conftest* - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $was_it_defined" >&5 -$as_echo "$was_it_defined" >&6; } - -# Check whether using makedev requires defining _OSF_SOURCE -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for makedev" >&5 -$as_echo_n "checking for makedev... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if defined(MAJOR_IN_MKDEV) -#include -#elif defined(MAJOR_IN_SYSMACROS) -#include -#else -#include -#endif -int -main () -{ - makedev(0, 0) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_has_makedev=yes -else - ac_cv_has_makedev=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_has_makedev" = "no"; then - # we didn't link, try if _OSF_SOURCE will allow us to link - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _OSF_SOURCE 1 -#include - -int -main () -{ - makedev(0, 0) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_has_makedev=yes -else - ac_cv_has_makedev=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$ac_cv_has_makedev" = "yes"; then - -$as_echo "#define _OSF_SOURCE 1" >>confdefs.h - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_has_makedev" >&5 -$as_echo "$ac_cv_has_makedev" >&6; } -if test "$ac_cv_has_makedev" = "yes"; then - -$as_echo "#define HAVE_MAKEDEV 1" >>confdefs.h - -fi - -# Enabling LFS on Solaris (2.6 to 9) with gcc 2.95 triggers a bug in -# the system headers: If _XOPEN_SOURCE and _LARGEFILE_SOURCE are -# defined, but the compiler does not support pragma redefine_extname, -# and _LARGEFILE64_SOURCE is not defined, the headers refer to 64-bit -# structures (such as rlimit64) without declaring them. As a -# work-around, disable LFS on such configurations - -use_lfs=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Solaris LFS bug" >&5 -$as_echo_n "checking Solaris LFS bug... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _LARGEFILE_SOURCE 1 -#define _FILE_OFFSET_BITS 64 -#include - -int -main () -{ -struct rlimit foo; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - sol_lfs_bug=no -else - sol_lfs_bug=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sol_lfs_bug" >&5 -$as_echo "$sol_lfs_bug" >&6; } -if test "$sol_lfs_bug" = "yes"; then - use_lfs=no -fi - -if test "$use_lfs" = "yes"; then -# Two defines needed to enable largefile support on various platforms -# These may affect some typedefs -case $ac_sys_system/$ac_sys_release in -AIX*) - -$as_echo "#define _LARGE_FILES 1" >>confdefs.h - - ;; -esac - -$as_echo "#define _LARGEFILE_SOURCE 1" >>confdefs.h - - -$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h - -fi - -# Add some code to confdefs.h so that the test for off_t works on SCO -cat >> confdefs.h <<\EOF -#if defined(SCO_DS) -#undef _OFF_T -#endif -EOF - -# Type availability checks -ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" -if test "x$ac_cv_type_mode_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define mode_t int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -if test "x$ac_cv_type_pid_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF - -fi - - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE void -_ACEOF - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then : - ac_cv_type_uid_t=yes -else - ac_cv_type_uid_t=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } -if test $ac_cv_type_uid_t = no; then - -$as_echo "#define uid_t int" >>confdefs.h - - -$as_echo "#define gid_t int" >>confdefs.h - -fi - - -# There are two separate checks for each of the exact-width integer types we -# need. First we check whether the type is available using the usual -# AC_CHECK_TYPE macro with the default includes (which includes -# and where available). We then also use the special type checks of -# the form AC_TYPE_UINT32_T, which in the case that uint32_t is not available -# directly, #define's uint32_t to be a suitable type. - -ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default" -if test "x$ac_cv_type_uint32_t" = xyes; then : - -$as_echo "#define HAVE_UINT32_T 1" >>confdefs.h - -fi - -ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" -case $ac_cv_c_uint32_t in #( - no|yes) ;; #( - *) - -$as_echo "#define _UINT32_T 1" >>confdefs.h - - -cat >>confdefs.h <<_ACEOF -#define uint32_t $ac_cv_c_uint32_t -_ACEOF -;; - esac - - -ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default" -if test "x$ac_cv_type_uint64_t" = xyes; then : - -$as_echo "#define HAVE_UINT64_T 1" >>confdefs.h - -fi - -ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" -case $ac_cv_c_uint64_t in #( - no|yes) ;; #( - *) - -$as_echo "#define _UINT64_T 1" >>confdefs.h - - -cat >>confdefs.h <<_ACEOF -#define uint64_t $ac_cv_c_uint64_t -_ACEOF -;; - esac - - -ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default" -if test "x$ac_cv_type_int32_t" = xyes; then : - -$as_echo "#define HAVE_INT32_T 1" >>confdefs.h - -fi - -ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" -case $ac_cv_c_int32_t in #( - no|yes) ;; #( - *) - -cat >>confdefs.h <<_ACEOF -#define int32_t $ac_cv_c_int32_t -_ACEOF -;; -esac - - -ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default" -if test "x$ac_cv_type_int64_t" = xyes; then : - -$as_echo "#define HAVE_INT64_T 1" >>confdefs.h - -fi - -ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" -case $ac_cv_c_int64_t in #( - no|yes) ;; #( - *) - -cat >>confdefs.h <<_ACEOF -#define int64_t $ac_cv_c_int64_t -_ACEOF -;; -esac - - -ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -if test "x$ac_cv_type_ssize_t" = xyes; then : - -$as_echo "#define HAVE_SSIZE_T 1" >>confdefs.h - -fi - - -# Sizes of various common basic types -# ANSI C requires sizeof(char) == 1, so no need to check it -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -$as_echo_n "checking size of int... " >&6; } -if ${ac_cv_sizeof_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -$as_echo "$ac_cv_sizeof_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if ${ac_cv_sizeof_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 -$as_echo_n "checking size of void *... " >&6; } -if ${ac_cv_sizeof_void_p+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_void_p" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (void *) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_void_p=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 -$as_echo "$ac_cv_sizeof_void_p" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_VOID_P $ac_cv_sizeof_void_p -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 -$as_echo_n "checking size of short... " >&6; } -if ${ac_cv_sizeof_short+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (short) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_short=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5 -$as_echo_n "checking size of float... " >&6; } -if ${ac_cv_sizeof_float+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_float" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (float) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_float=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5 -$as_echo "$ac_cv_sizeof_float" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_FLOAT $ac_cv_sizeof_float -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 -$as_echo_n "checking size of double... " >&6; } -if ${ac_cv_sizeof_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (double) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_double=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 -$as_echo "$ac_cv_sizeof_double" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_DOUBLE $ac_cv_sizeof_double -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of fpos_t" >&5 -$as_echo_n "checking size of fpos_t... " >&6; } -if ${ac_cv_sizeof_fpos_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (fpos_t))" "ac_cv_sizeof_fpos_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_fpos_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (fpos_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_fpos_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_fpos_t" >&5 -$as_echo "$ac_cv_sizeof_fpos_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_FPOS_T $ac_cv_sizeof_fpos_t -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 -$as_echo_n "checking size of size_t... " >&6; } -if ${ac_cv_sizeof_size_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_size_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (size_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_size_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 -$as_echo "$ac_cv_sizeof_size_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of pid_t" >&5 -$as_echo_n "checking size of pid_t... " >&6; } -if ${ac_cv_sizeof_pid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pid_t))" "ac_cv_sizeof_pid_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_pid_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (pid_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_pid_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pid_t" >&5 -$as_echo "$ac_cv_sizeof_pid_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_PID_T $ac_cv_sizeof_pid_t -_ACEOF - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long support" >&5 -$as_echo_n "checking for long long support... " >&6; } -have_long_long=no -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -long long x; x = (long long)0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -$as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h - - have_long_long=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_long_long" >&5 -$as_echo "$have_long_long" >&6; } -if test "$have_long_long" = yes ; then -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 -$as_echo_n "checking size of long long... " >&6; } -if ${ac_cv_sizeof_long_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long long) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_long=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 -$as_echo "$ac_cv_sizeof_long_long" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -_ACEOF - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double support" >&5 -$as_echo_n "checking for long double support... " >&6; } -have_long_double=no -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -long double x; x = (long double)0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h - - have_long_double=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_long_double" >&5 -$as_echo "$have_long_double" >&6; } -if test "$have_long_double" = yes ; then -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 -$as_echo_n "checking size of long double... " >&6; } -if ${ac_cv_sizeof_long_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long_double" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long double) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_double=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 -$as_echo "$ac_cv_sizeof_long_double" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double -_ACEOF - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _Bool support" >&5 -$as_echo_n "checking for _Bool support... " >&6; } -have_c99_bool=no -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -_Bool x; x = (_Bool)0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -$as_echo "#define HAVE_C99_BOOL 1" >>confdefs.h - - have_c99_bool=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_c99_bool" >&5 -$as_echo "$have_c99_bool" >&6; } -if test "$have_c99_bool" = yes ; then -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of _Bool" >&5 -$as_echo_n "checking size of _Bool... " >&6; } -if ${ac_cv_sizeof__Bool+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (_Bool))" "ac_cv_sizeof__Bool" "$ac_includes_default"; then : - -else - if test "$ac_cv_type__Bool" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (_Bool) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof__Bool=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof__Bool" >&5 -$as_echo "$ac_cv_sizeof__Bool" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF__BOOL $ac_cv_sizeof__Bool -_ACEOF - - -fi - -ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#ifdef HAVE_STDINT_H - #include - #endif - #ifdef HAVE_INTTYPES_H - #include - #endif -" -if test "x$ac_cv_type_uintptr_t" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_UINTPTR_T 1 -_ACEOF - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of uintptr_t" >&5 -$as_echo_n "checking size of uintptr_t... " >&6; } -if ${ac_cv_sizeof_uintptr_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (uintptr_t))" "ac_cv_sizeof_uintptr_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_uintptr_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (uintptr_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_uintptr_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_uintptr_t" >&5 -$as_echo "$ac_cv_sizeof_uintptr_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_UINTPTR_T $ac_cv_sizeof_uintptr_t -_ACEOF - - -fi - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 -$as_echo_n "checking size of off_t... " >&6; } -if ${ac_cv_sizeof_off_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif - -"; then : - -else - if test "$ac_cv_type_off_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (off_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_off_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 -$as_echo "$ac_cv_sizeof_off_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_OFF_T $ac_cv_sizeof_off_t -_ACEOF - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable large file support" >&5 -$as_echo_n "checking whether to enable large file support... " >&6; } -if test "$have_long_long" = yes -then -if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \ - "$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then - -$as_echo "#define HAVE_LARGEFILE_SUPPORT 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 -$as_echo_n "checking size of time_t... " >&6; } -if ${ac_cv_sizeof_time_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_TIME_H -#include -#endif - -"; then : - -else - if test "$ac_cv_type_time_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (time_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_time_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5 -$as_echo "$ac_cv_sizeof_time_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_TIME_T $ac_cv_sizeof_time_t -_ACEOF - - - -# if have pthread_t then define SIZEOF_PTHREAD_T -ac_save_cc="$CC" -if test "$ac_cv_kpthread" = "yes" -then CC="$CC -Kpthread" -elif test "$ac_cv_kthread" = "yes" -then CC="$CC -Kthread" -elif test "$ac_cv_pthread" = "yes" -then CC="$CC -pthread" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_t" >&5 -$as_echo_n "checking for pthread_t... " >&6; } -have_pthread_t=no -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -int -main () -{ -pthread_t x; x = *(pthread_t*)0; - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - have_pthread_t=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_pthread_t" >&5 -$as_echo "$have_pthread_t" >&6; } -if test "$have_pthread_t" = yes ; then - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of pthread_t" >&5 -$as_echo_n "checking size of pthread_t... " >&6; } -if ${ac_cv_sizeof_pthread_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pthread_t))" "ac_cv_sizeof_pthread_t" " -#ifdef HAVE_PTHREAD_H -#include -#endif - -"; then : - -else - if test "$ac_cv_type_pthread_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (pthread_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_pthread_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pthread_t" >&5 -$as_echo "$ac_cv_sizeof_pthread_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_PTHREAD_T $ac_cv_sizeof_pthread_t -_ACEOF - - -fi -CC="$ac_save_cc" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-toolbox-glue" >&5 -$as_echo_n "checking for --enable-toolbox-glue... " >&6; } -# Check whether --enable-toolbox-glue was given. -if test "${enable_toolbox_glue+set}" = set; then : - enableval=$enable_toolbox_glue; -fi - - -if test -z "$enable_toolbox_glue" -then - case $ac_sys_system/$ac_sys_release in - Darwin/*) - enable_toolbox_glue="yes";; - *) - enable_toolbox_glue="no";; - esac -fi -case "$enable_toolbox_glue" in -yes) - extra_machdep_objs="Python/mactoolboxglue.o" - extra_undefs="-u _PyMac_Error" - -$as_echo "#define USE_TOOLBOX_OBJECT_GLUE 1" >>confdefs.h - - ;; -*) - extra_machdep_objs="" - extra_undefs="" - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_toolbox_glue" >&5 -$as_echo "$enable_toolbox_glue" >&6; } - - - -case $ac_sys_system/$ac_sys_release in - Darwin/[01567]\..*) - OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000" - ;; - Darwin/*) - OTHER_LIBTOOL_OPT="" - ;; -esac - - - -case $ac_sys_system/$ac_sys_release in - Darwin/[01567]\..*) - LIBTOOL_CRUFT="-framework System -lcc_dynamic" - if test "${enable_universalsdk}"; then - : - else - LIBTOOL_CRUFT="${LIBTOOL_CRUFT} -arch_only `/usr/bin/arch`" - fi - LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; - Darwin/*) - gcc_version=`gcc -dumpversion` - if test ${gcc_version} '<' 4.0 - then - LIBTOOL_CRUFT="-lcc_dynamic" - else - LIBTOOL_CRUFT="" - fi - if test "$cross_compiling" = yes; then : - ac_osx_32bit=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - int main(int argc, char*argv[]) - { - if (sizeof(long) == 4) { - return 0; - } else { - return 1; - } - } - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_osx_32bit=yes -else - ac_osx_32bit=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - - if test "${ac_osx_32bit}" = "yes"; then - case `/usr/bin/arch` in - i386) - MACOSX_DEFAULT_ARCH="i386" - ;; - ppc) - MACOSX_DEFAULT_ARCH="ppc" - ;; - *) - as_fn_error $? "Unexpected output of 'arch' on OSX" "$LINENO" 5 - ;; - esac - else - case `/usr/bin/arch` in - i386) - MACOSX_DEFAULT_ARCH="x86_64" - ;; - ppc) - MACOSX_DEFAULT_ARCH="ppc64" - ;; - *) - as_fn_error $? "Unexpected output of 'arch' on OSX" "$LINENO" 5 - ;; - esac - - #ARCH_RUN_32BIT="true" - fi - - LIBTOOL_CRUFT=$LIBTOOL_CRUFT" -lSystem -lSystemStubs -arch_only ${MACOSX_DEFAULT_ARCH}" - LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-framework" >&5 -$as_echo_n "checking for --enable-framework... " >&6; } -if test "$enable_framework" -then - BASECFLAGS="$BASECFLAGS -fno-common -dynamic" - # -F. is needed to allow linking to the framework while - # in the build location. - -$as_echo "#define WITH_NEXT_FRAMEWORK 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - if test $enable_shared = "yes" - then - as_fn_error $? "Specifying both --enable-shared and --enable-framework is not supported, use only --enable-framework instead. See Mac/README." "$LINENO" 5 - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dyld" >&5 -$as_echo_n "checking for dyld... " >&6; } -case $ac_sys_system/$ac_sys_release in - Darwin/*) - -$as_echo "#define WITH_DYLD 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: always on for Darwin" >&5 -$as_echo "always on for Darwin" >&6; } - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; -esac - -# Set info about shared libraries. - - - - - - -# SO is the extension of shared libraries `(including the dot!) -# -- usually .so, .sl on HP-UX, .dll on Cygwin and OS/2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SO" >&5 -$as_echo_n "checking SO... " >&6; } -if test -z "$SO" -then - case $ac_sys_system in - hp*|HP*) - case `uname -m` in - ia64) SO=.so;; - *) SO=.sl;; - esac - ;; - CYGWIN*) SO=.dll;; - OS/2*|os2*|*emx*) SO=.dll;; - *) SO=.so;; - esac -else - # this might also be a termcap variable, see #610332 - echo - echo '=====================================================================' - echo '+ +' - echo '+ WARNING: You have set SO in your environment. +' - echo '+ Do you really mean to change the extension for shared libraries? +' - echo '+ Continuing in 10 seconds to let you to ponder. +' - echo '+ +' - echo '=====================================================================' - sleep 10 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SO" >&5 -$as_echo "$SO" >&6; } - - -cat >>confdefs.h <<_ACEOF -#define SHLIB_EXT "$SO" -_ACEOF - -# LDSHARED is the ld *command* used to create shared library -# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5 -# (Shared libraries in this instance are shared modules to be loaded into -# Python, as opposed to building Python itself as a shared library.) -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LDSHARED" >&5 -$as_echo_n "checking LDSHARED... " >&6; } -if test -z "$LDSHARED" -then - case $ac_sys_system/$ac_sys_release in - AIX*) - BLDSHARED="\$(srcdir)/Modules/ld_so_aix \$(CC) -bI:\$(srcdir)/Modules/python.exp" - LDSHARED="\$(BINLIBDEST)/config/ld_so_aix \$(CC) -bI:\$(BINLIBDEST)/config/python.exp" - ;; - BeOS*) - BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY" - LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY" - ;; - IRIX/5*) LDSHARED="ld -shared";; - IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";; - SunOS/5*) - if test "$GCC" = "yes" ; then - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared' - else - LDSHARED='$(CC) -G' - LDCXXSHARED='$(CXX) -G' - fi ;; - hp*|HP*) - if test "$GCC" = "yes" ; then - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared' - else - LDSHARED='ld -b' - fi ;; - OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";; - Darwin/1.3*) - LDSHARED='$(CC) -bundle' - LDCXXSHARED='$(CXX) -bundle' - if test "$enable_framework" ; then - # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - else - # No framework. Ignore undefined symbols, assuming they come from Python - LDSHARED="$LDSHARED -undefined suppress" - LDCXXSHARED="$LDCXXSHARED -undefined suppress" - fi ;; - Darwin/1.4*|Darwin/5.*|Darwin/6.*) - LDSHARED='$(CC) -bundle' - LDCXXSHARED='$(CXX) -bundle' - if test "$enable_framework" ; then - # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - else - # No framework, use the Python app as bundle-loader - BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' - LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - fi ;; - Darwin/*) - # Use -undefined dynamic_lookup whenever possible (10.3 and later). - # This allows an extension to be used in any Python - - if test ${MACOSX_DEPLOYMENT_TARGET} '>' 10.2 - then - if test "${enable_universalsdk}"; then - LDFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${LDFLAGS}" - fi - LDSHARED='$(CC) -bundle -undefined dynamic_lookup' - LDCXXSHARED='$(CXX) -bundle -undefined dynamic_lookup' - BLDSHARED="$LDSHARED" - else - LDSHARED='$(CC) -bundle' - LDCXXSHARED='$(CXX) -bundle' - if test "$enable_framework" ; then - # Link against the framework. All externals should be defined. - BLDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDSHARED="$LDSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - LDCXXSHARED="$LDCXXSHARED "'$(PYTHONFRAMEWORKPREFIX)/$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - else - # No framework, use the Python app as bundle-loader - BLDSHARED="$LDSHARED "'-bundle_loader $(BUILDPYTHON)' - LDSHARED="$LDSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - LDCXXSHARED="$LDCXXSHARED "'-bundle_loader $(BINDIR)/python$(VERSION)$(EXE)' - fi - fi - ;; - Linux*|GNU*|QNX*) - LDSHARED='$(CC) -shared' - LDCXXSHARED='$(CXX) -shared';; - BSD/OS*/4*) - LDSHARED="gcc -shared" - LDCXXSHARED="g++ -shared";; - FreeBSD*) - if [ "`$CC -dM -E - &5 -$as_echo "$LDSHARED" >&6; } -LDCXXSHARED=${LDCXXSHARED-$LDSHARED} -BLDSHARED=${BLDSHARED-$LDSHARED} -# CCSHARED are the C *flags* used to create objects to go into a shared -# library (module) -- this is only needed for a few systems -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CCSHARED" >&5 -$as_echo_n "checking CCSHARED... " >&6; } -if test -z "$CCSHARED" -then - case $ac_sys_system/$ac_sys_release in - SunOS*) if test "$GCC" = yes; - then CCSHARED="-fPIC"; - elif test `uname -p` = sparc; - then CCSHARED="-xcode=pic32"; - else CCSHARED="-Kpic"; - fi;; - hp*|HP*) if test "$GCC" = yes; - then CCSHARED="-fPIC"; - else CCSHARED="+z"; - fi;; - Linux*|GNU*) CCSHARED="-fPIC";; - BSD/OS*/4*) CCSHARED="-fpic";; - FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; - OpenUNIX*|UnixWare*) - if test "$GCC" = "yes" - then CCSHARED="-fPIC" - else CCSHARED="-KPIC" - fi;; - SCO_SV*) - if test "$GCC" = "yes" - then CCSHARED="-fPIC" - else CCSHARED="-Kpic -belf" - fi;; - IRIX*/6*) case $CC in - *gcc*) CCSHARED="-shared";; - *) CCSHARED="";; - esac;; - atheos*) CCSHARED="-fPIC";; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCSHARED" >&5 -$as_echo "$CCSHARED" >&6; } -# LINKFORSHARED are the flags passed to the $(CC) command that links -# the python executable -- this is only needed for a few systems -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LINKFORSHARED" >&5 -$as_echo_n "checking LINKFORSHARED... " >&6; } -if test -z "$LINKFORSHARED" -then - case $ac_sys_system/$ac_sys_release in - AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';; - hp*|HP*) - LINKFORSHARED="-Wl,-E -Wl,+s";; -# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; - BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";; - Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; - # -u libsys_s pulls in all symbols in libsys - Darwin/*) - # -u _PyMac_Error is needed to pull in the mac toolbox glue, - # which is - # not used by the core itself but which needs to be in the core so - # that dynamically loaded extension modules have access to it. - # -prebind is no longer used, because it actually seems to give a - # slowdown in stead of a speedup, maybe due to the large number of - # dynamic loads Python does. - - LINKFORSHARED="$extra_undefs" - if test "$enable_framework" - then - LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' - fi - LINKFORSHARED="$LINKFORSHARED";; - OpenUNIX*|UnixWare*) LINKFORSHARED="-Wl,-Bexport";; - SCO_SV*) LINKFORSHARED="-Wl,-Bexport";; - ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";; - FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) - if [ "`$CC -dM -E - &1 | grep export-dynamic >/dev/null - then - LINKFORSHARED="-Xlinker --export-dynamic" - fi;; - esac;; - CYGWIN*) - if test $enable_shared = "no" - then - LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' - fi;; - QNX*) - # -Wl,-E causes the symbols to be added to the dynamic - # symbol table so that they can be found when a module - # is loaded. -N 2048K causes the stack size to be set - # to 2048 kilobytes so that the stack doesn't overflow - # when running test_compile.py. - LINKFORSHARED='-Wl,-E -N 2048K';; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINKFORSHARED" >&5 -$as_echo "$LINKFORSHARED" >&6; } - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGSFORSHARED" >&5 -$as_echo_n "checking CFLAGSFORSHARED... " >&6; } -if test ! "$LIBRARY" = "$LDLIBRARY" -then - case $ac_sys_system in - CYGWIN*) - # Cygwin needs CCSHARED when building extension DLLs - # but not when building the interpreter DLL. - CFLAGSFORSHARED='';; - *) - CFLAGSFORSHARED='$(CCSHARED)' - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CFLAGSFORSHARED" >&5 -$as_echo "$CFLAGSFORSHARED" >&6; } - -# SHLIBS are libraries (except -lc and -lm) to link to the python shared -# library (with --enable-shared). -# For platforms on which shared libraries are not allowed to have unresolved -# symbols, this must be set to $(LIBS) (expanded by make). We do this even -# if it is not required, since it creates a dependency of the shared library -# to LIBS. This, in turn, means that applications linking the shared libpython -# don't need to link LIBS explicitly. The default should be only changed -# on systems where this approach causes problems. - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking SHLIBS" >&5 -$as_echo_n "checking SHLIBS... " >&6; } -case "$ac_sys_system" in - *) - SHLIBS='$(LIBS)';; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLIBS" >&5 -$as_echo "$SHLIBS" >&6; } - - -# checks for libraries -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDL 1 -_ACEOF - - LIBS="-ldl $LIBS" - -fi - # Dynamic linking for SunOS/Solaris and SYSV -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDLD 1 -_ACEOF - - LIBS="-ldld $LIBS" - -fi - # Dynamic linking for HP-UX - -# only check for sem_init if thread support is requested -if test "$with_threads" = "yes" -o -z "$with_threads"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sem_init" >&5 -$as_echo_n "checking for library containing sem_init... " >&6; } -if ${ac_cv_search_sem_init+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char sem_init (); -int -main () -{ -return sem_init (); - ; - return 0; -} -_ACEOF -for ac_lib in '' pthread rt posix4; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_sem_init=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_sem_init+:} false; then : - break -fi -done -if ${ac_cv_search_sem_init+:} false; then : - -else - ac_cv_search_sem_init=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sem_init" >&5 -$as_echo "$ac_cv_search_sem_init" >&6; } -ac_res=$ac_cv_search_sem_init -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - # 'Real Time' functions on Solaris - # posix4 on Solaris 2.6 - # pthread (first!) on Linux -fi - -# check if we need libintl for locale functions -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for textdomain in -lintl" >&5 -$as_echo_n "checking for textdomain in -lintl... " >&6; } -if ${ac_cv_lib_intl_textdomain+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char textdomain (); -int -main () -{ -return textdomain (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_textdomain=yes -else - ac_cv_lib_intl_textdomain=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_textdomain" >&5 -$as_echo "$ac_cv_lib_intl_textdomain" >&6; } -if test "x$ac_cv_lib_intl_textdomain" = xyes; then : - -$as_echo "#define WITH_LIBINTL 1" >>confdefs.h - -fi - - -# checks for system dependent C++ extensions support -case "$ac_sys_system" in - AIX*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for genuine AIX C++ extensions support" >&5 -$as_echo_n "checking for genuine AIX C++ extensions support... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -int -main () -{ -loadAndInit("", 0, "") - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - -$as_echo "#define AIX_GENUINE_CPLUSPLUS 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext;; - *) ;; -esac - -# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl. -# BeOS' sockets are stashed in libnet. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5 -$as_echo_n "checking for t_open in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_t_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char t_open (); -int -main () -{ -return t_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_nsl_t_open=yes -else - ac_cv_lib_nsl_t_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5 -$as_echo "$ac_cv_lib_nsl_t_open" >&6; } -if test "x$ac_cv_lib_nsl_t_open" = xyes; then : - LIBS="-lnsl $LIBS" -fi - # SVR4 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 -$as_echo_n "checking for socket in -lsocket... " >&6; } -if ${ac_cv_lib_socket_socket+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char socket (); -int -main () -{ -return socket (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_socket_socket=yes -else - ac_cv_lib_socket_socket=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 -$as_echo "$ac_cv_lib_socket_socket" >&6; } -if test "x$ac_cv_lib_socket_socket" = xyes; then : - LIBS="-lsocket $LIBS" -fi - # SVR4 sockets - -case "$ac_sys_system" in -BeOS*) -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lnet" >&5 -$as_echo_n "checking for socket in -lnet... " >&6; } -if ${ac_cv_lib_net_socket+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnet $LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char socket (); -int -main () -{ -return socket (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_net_socket=yes -else - ac_cv_lib_net_socket=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_net_socket" >&5 -$as_echo "$ac_cv_lib_net_socket" >&6; } -if test "x$ac_cv_lib_net_socket" = xyes; then : - LIBS="-lnet $LIBS" -fi - # BeOS -;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-libs" >&5 -$as_echo_n "checking for --with-libs... " >&6; } - -# Check whether --with-libs was given. -if test "${with_libs+set}" = set; then : - withval=$with_libs; -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -$as_echo "$withval" >&6; } -LIBS="$withval $LIBS" - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - - -# Check for use of the system expat library -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-system-expat" >&5 -$as_echo_n "checking for --with-system-expat... " >&6; } - -# Check whether --with-system_expat was given. -if test "${with_system_expat+set}" = set; then : - withval=$with_system_expat; -else - with_system_expat="no" -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_system_expat" >&5 -$as_echo "$with_system_expat" >&6; } - -# Check for use of the system libffi library -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-system-ffi" >&5 -$as_echo_n "checking for --with-system-ffi... " >&6; } - -# Check whether --with-system_ffi was given. -if test "${with_system_ffi+set}" = set; then : - withval=$with_system_ffi; -else - with_system_ffi="no" -fi - - -if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then - LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`" -else - LIBFFI_INCLUDEDIR="" -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_system_ffi" >&5 -$as_echo "$with_system_ffi" >&6; } - -# Check for --with-tcltk-includes=path and --with-tcltk-libs=path - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-tcltk-includes" >&5 -$as_echo_n "checking for --with-tcltk-includes... " >&6; } - -# Check whether --with-tcltk-includes was given. -if test "${with_tcltk_includes+set}" = set; then : - withval=$with_tcltk_includes; -else - with_tcltk_includes="default" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_tcltk_includes" >&5 -$as_echo "$with_tcltk_includes" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-tcltk-libs" >&5 -$as_echo_n "checking for --with-tcltk-libs... " >&6; } - -# Check whether --with-tcltk-libs was given. -if test "${with_tcltk_libs+set}" = set; then : - withval=$with_tcltk_libs; -else - with_tcltk_libs="default" -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_tcltk_libs" >&5 -$as_echo "$with_tcltk_libs" >&6; } -if test "x$with_tcltk_includes" = xdefault || test "x$with_tcltk_libs" = xdefault -then - if test "x$with_tcltk_includes" != "x$with_tcltk_libs" - then - as_fn_error $? "use both --with-tcltk-includes='...' and --with-tcltk-libs='...' or neither" "$LINENO" 5 - fi - TCLTK_INCLUDES="" - TCLTK_LIBS="" -else - TCLTK_INCLUDES="$with_tcltk_includes" - TCLTK_LIBS="$with_tcltk_libs" -fi - -# Check for --with-dbmliborder -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-dbmliborder" >&5 -$as_echo_n "checking for --with-dbmliborder... " >&6; } - -# Check whether --with-dbmliborder was given. -if test "${with_dbmliborder+set}" = set; then : - withval=$with_dbmliborder; -if test x$with_dbmliborder = xyes -then -as_fn_error $? "proper usage is --with-dbmliborder=db1:db2:..." "$LINENO" 5 -else - for db in `echo $with_dbmliborder | sed 's/:/ /g'`; do - if test x$db != xndbm && test x$db != xgdbm && test x$db != xbdb - then - as_fn_error $? "proper usage is --with-dbmliborder=db1:db2:..." "$LINENO" 5 - fi - done -fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_dbmliborder" >&5 -$as_echo "$with_dbmliborder" >&6; } - -# Determine if signalmodule should be used. - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-signal-module" >&5 -$as_echo_n "checking for --with-signal-module... " >&6; } - -# Check whether --with-signal-module was given. -if test "${with_signal_module+set}" = set; then : - withval=$with_signal_module; -fi - - -if test -z "$with_signal_module" -then with_signal_module="yes" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_signal_module" >&5 -$as_echo "$with_signal_module" >&6; } - -if test "${with_signal_module}" = "yes"; then - USE_SIGNAL_MODULE="" - SIGNAL_OBJS="" -else - USE_SIGNAL_MODULE="#" - SIGNAL_OBJS="Parser/intrcheck.o Python/sigcheck.o" -fi - -# This is used to generate Setup.config - -USE_THREAD_MODULE="" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-dec-threads" >&5 -$as_echo_n "checking for --with-dec-threads... " >&6; } - - -# Check whether --with-dec-threads was given. -if test "${with_dec_threads+set}" = set; then : - withval=$with_dec_threads; -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -$as_echo "$withval" >&6; } -LDLAST=-threads -if test "${with_thread+set}" != set; then - with_thread="$withval"; -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Templates for things AC_DEFINEd more than once. -# For a single AC_DEFINE, no template is needed. - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-threads" >&5 -$as_echo_n "checking for --with-threads... " >&6; } - -# Check whether --with-threads was given. -if test "${with_threads+set}" = set; then : - withval=$with_threads; -fi - - -# --with-thread is deprecated, but check for it anyway - -# Check whether --with-thread was given. -if test "${with_thread+set}" = set; then : - withval=$with_thread; with_threads=$with_thread -fi - - -if test -z "$with_threads" -then with_threads="yes" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_threads" >&5 -$as_echo "$with_threads" >&6; } - - -if test "$with_threads" = "no" -then - USE_THREAD_MODULE="#" -elif test "$ac_cv_pthread_is_default" = yes -then - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - # Defining _REENTRANT on system with POSIX threads should not hurt. - $as_echo "#define _REENTRANT 1" >>confdefs.h - - posix_threads=yes - THREADOBJ="Python/thread.o" -elif test "$ac_cv_kpthread" = "yes" -then - CC="$CC -Kpthread" - if test "$ac_cv_cxx_thread" = "yes"; then - CXX="$CXX -Kpthread" - fi - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - THREADOBJ="Python/thread.o" -elif test "$ac_cv_kthread" = "yes" -then - CC="$CC -Kthread" - if test "$ac_cv_cxx_thread" = "yes"; then - CXX="$CXX -Kthread" - fi - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - THREADOBJ="Python/thread.o" -elif test "$ac_cv_pthread" = "yes" -then - CC="$CC -pthread" - if test "$ac_cv_cxx_thread" = "yes"; then - CXX="$CXX -pthread" - fi - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - THREADOBJ="Python/thread.o" -else - if test ! -z "$with_threads" -a -d "$with_threads" - then LDFLAGS="$LDFLAGS -L$with_threads" - fi - if test ! -z "$withval" -a -d "$withval" - then LDFLAGS="$LDFLAGS -L$withval" - fi - - # According to the POSIX spec, a pthreads implementation must - # define _POSIX_THREADS in unistd.h. Some apparently don't - # (e.g. gnu pth with pthread emulation) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _POSIX_THREADS in unistd.h" >&5 -$as_echo_n "checking for _POSIX_THREADS in unistd.h... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef _POSIX_THREADS -yes -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - unistd_defines_pthreads=yes -else - unistd_defines_pthreads=no -fi -rm -f conftest* - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $unistd_defines_pthreads" >&5 -$as_echo "$unistd_defines_pthreads" >&6; } - - $as_echo "#define _REENTRANT 1" >>confdefs.h - - ac_fn_c_check_header_mongrel "$LINENO" "cthreads.h" "ac_cv_header_cthreads_h" "$ac_includes_default" -if test "x$ac_cv_header_cthreads_h" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - $as_echo "#define C_THREADS 1" >>confdefs.h - - -$as_echo "#define HURD_C_THREADS 1" >>confdefs.h - - LIBS="$LIBS -lthreads" - THREADOBJ="Python/thread.o" -else - - ac_fn_c_check_header_mongrel "$LINENO" "mach/cthreads.h" "ac_cv_header_mach_cthreads_h" "$ac_includes_default" -if test "x$ac_cv_header_mach_cthreads_h" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - $as_echo "#define C_THREADS 1" >>confdefs.h - - -$as_echo "#define MACH_C_THREADS 1" >>confdefs.h - - THREADOBJ="Python/thread.o" -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-pth" >&5 -$as_echo_n "checking for --with-pth... " >&6; } - -# Check whether --with-pth was given. -if test "${with_pth+set}" = set; then : - withval=$with_pth; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -$as_echo "$withval" >&6; } - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - -$as_echo "#define HAVE_PTH 1" >>confdefs.h - - LIBS="-lpth $LIBS" - THREADOBJ="Python/thread.o" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - - # Just looking for pthread_create in libpthread is not enough: - # on HP/UX, pthread.h renames pthread_create to a different symbol name. - # So we really have to include pthread.h, and then link. - _libs=$LIBS - LIBS="$LIBS -lpthread" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -$as_echo_n "checking for pthread_create in -lpthread... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -void * start_routine (void *arg) { exit (0); } -int -main () -{ - -pthread_create (NULL, NULL, start_routine, NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - THREADOBJ="Python/thread.o" -else - - LIBS=$_libs - ac_fn_c_check_func "$LINENO" "pthread_detach" "ac_cv_func_pthread_detach" -if test "x$ac_cv_func_pthread_detach" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - THREADOBJ="Python/thread.o" -else - - ac_fn_c_check_header_mongrel "$LINENO" "atheos/threads.h" "ac_cv_header_atheos_threads_h" "$ac_includes_default" -if test "x$ac_cv_header_atheos_threads_h" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - -$as_echo "#define ATHEOS_THREADS 1" >>confdefs.h - - THREADOBJ="Python/thread.o" -else - - ac_fn_c_check_header_mongrel "$LINENO" "kernel/OS.h" "ac_cv_header_kernel_OS_h" "$ac_includes_default" -if test "x$ac_cv_header_kernel_OS_h" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - -$as_echo "#define BEOS_THREADS 1" >>confdefs.h - - THREADOBJ="Python/thread.o" -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreads" >&5 -$as_echo_n "checking for pthread_create in -lpthreads... " >&6; } -if ${ac_cv_lib_pthreads_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthreads $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthreads_pthread_create=yes -else - ac_cv_lib_pthreads_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_create" >&5 -$as_echo "$ac_cv_lib_pthreads_pthread_create" >&6; } -if test "x$ac_cv_lib_pthreads_pthread_create" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - LIBS="$LIBS -lpthreads" - THREADOBJ="Python/thread.o" -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lc_r" >&5 -$as_echo_n "checking for pthread_create in -lc_r... " >&6; } -if ${ac_cv_lib_c_r_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc_r $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_c_r_pthread_create=yes -else - ac_cv_lib_c_r_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_create" >&5 -$as_echo "$ac_cv_lib_c_r_pthread_create" >&6; } -if test "x$ac_cv_lib_c_r_pthread_create" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - LIBS="$LIBS -lc_r" - THREADOBJ="Python/thread.o" -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __pthread_create_system in -lpthread" >&5 -$as_echo_n "checking for __pthread_create_system in -lpthread... " >&6; } -if ${ac_cv_lib_pthread___pthread_create_system+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char __pthread_create_system (); -int -main () -{ -return __pthread_create_system (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pthread___pthread_create_system=yes -else - ac_cv_lib_pthread___pthread_create_system=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread___pthread_create_system" >&5 -$as_echo "$ac_cv_lib_pthread___pthread_create_system" >&6; } -if test "x$ac_cv_lib_pthread___pthread_create_system" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - LIBS="$LIBS -lpthread" - THREADOBJ="Python/thread.o" -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lcma" >&5 -$as_echo_n "checking for pthread_create in -lcma... " >&6; } -if ${ac_cv_lib_cma_pthread_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcma $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int -main () -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_cma_pthread_create=yes -else - ac_cv_lib_cma_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cma_pthread_create" >&5 -$as_echo "$ac_cv_lib_cma_pthread_create" >&6; } -if test "x$ac_cv_lib_cma_pthread_create" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - posix_threads=yes - LIBS="$LIBS -lcma" - THREADOBJ="Python/thread.o" -else - - USE_THREAD_MODULE="#" -fi - - -fi - -fi - -fi - -fi - - -fi - - -fi - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi - -fi - - -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usconfig in -lmpc" >&5 -$as_echo_n "checking for usconfig in -lmpc... " >&6; } -if ${ac_cv_lib_mpc_usconfig+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmpc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char usconfig (); -int -main () -{ -return usconfig (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_mpc_usconfig=yes -else - ac_cv_lib_mpc_usconfig=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpc_usconfig" >&5 -$as_echo "$ac_cv_lib_mpc_usconfig" >&6; } -if test "x$ac_cv_lib_mpc_usconfig" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - LIBS="$LIBS -lmpc" - THREADOBJ="Python/thread.o" - USE_THREAD_MODULE="" -fi - - - if test "$posix_threads" != "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for thr_create in -lthread" >&5 -$as_echo_n "checking for thr_create in -lthread... " >&6; } -if ${ac_cv_lib_thread_thr_create+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char thr_create (); -int -main () -{ -return thr_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_thread_thr_create=yes -else - ac_cv_lib_thread_thr_create=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_thread_thr_create" >&5 -$as_echo "$ac_cv_lib_thread_thr_create" >&6; } -if test "x$ac_cv_lib_thread_thr_create" = xyes; then : - $as_echo "#define WITH_THREAD 1" >>confdefs.h - - LIBS="$LIBS -lthread" - THREADOBJ="Python/thread.o" - USE_THREAD_MODULE="" -fi - - fi - - if test "$USE_THREAD_MODULE" != "#" - then - # If the above checks didn't disable threads, (at least) OSF1 - # needs this '-threads' argument during linking. - case $ac_sys_system in - OSF1) LDLAST=-threads;; - esac - fi -fi - -if test "$posix_threads" = "yes"; then - if test "$unistd_defines_pthreads" = "no"; then - -$as_echo "#define _POSIX_THREADS 1" >>confdefs.h - - fi - - # Bug 662787: Using semaphores causes unexplicable hangs on Solaris 8. - case $ac_sys_system/$ac_sys_release in - SunOS/5.6) -$as_echo "#define HAVE_PTHREAD_DESTRUCTOR 1" >>confdefs.h - - ;; - SunOS/5.8) -$as_echo "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h - - ;; - AIX/*) -$as_echo "#define HAVE_BROKEN_POSIX_SEMAPHORES 1" >>confdefs.h - - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if PTHREAD_SCOPE_SYSTEM is supported" >&5 -$as_echo_n "checking if PTHREAD_SCOPE_SYSTEM is supported... " >&6; } - if ${ac_cv_pthread_system_supported+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_pthread_system_supported=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - void *foo(void *parm) { - return NULL; - } - main() { - pthread_attr_t attr; - pthread_t id; - if (pthread_attr_init(&attr)) exit(-1); - if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1); - if (pthread_create(&id, &attr, foo, NULL)) exit(-1); - exit(0); - } -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_pthread_system_supported=yes -else - ac_cv_pthread_system_supported=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_pthread_system_supported" >&5 -$as_echo "$ac_cv_pthread_system_supported" >&6; } - if test "$ac_cv_pthread_system_supported" = "yes"; then - -$as_echo "#define PTHREAD_SYSTEM_SCHED_SUPPORTED 1" >>confdefs.h - - fi - for ac_func in pthread_sigmask -do : - ac_fn_c_check_func "$LINENO" "pthread_sigmask" "ac_cv_func_pthread_sigmask" -if test "x$ac_cv_func_pthread_sigmask" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_SIGMASK 1 -_ACEOF - case $ac_sys_system in - CYGWIN*) - -$as_echo "#define HAVE_BROKEN_PTHREAD_SIGMASK 1" >>confdefs.h - - ;; - esac -fi -done - - for ac_func in pthread_atfork -do : - ac_fn_c_check_func "$LINENO" "pthread_atfork" "ac_cv_func_pthread_atfork" -if test "x$ac_cv_func_pthread_atfork" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PTHREAD_ATFORK 1 -_ACEOF - -fi -done - -fi - - -# Check for enable-ipv6 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if --enable-ipv6 is specified" >&5 -$as_echo_n "checking if --enable-ipv6 is specified... " >&6; } -# Check whether --enable-ipv6 was given. -if test "${enable_ipv6+set}" = set; then : - enableval=$enable_ipv6; case "$enableval" in - no) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ipv6=no - ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - $as_echo "#define ENABLE_IPV6 1" >>confdefs.h - - ipv6=yes - ;; - esac -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - /* AF_INET6 available check */ -#include -#include -int -main () -{ -int domain = AF_INET6; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ipv6=yes - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ipv6=no - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test "$ipv6" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if RFC2553 API is available" >&5 -$as_echo_n "checking if RFC2553 API is available... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -#include -int -main () -{ -struct sockaddr_in6 x; - x.sin6_scope_id; - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ipv6=yes - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ipv6=no - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -if test "$ipv6" = "yes"; then - $as_echo "#define ENABLE_IPV6 1" >>confdefs.h - -fi - -fi - - -ipv6type=unknown -ipv6lib=none -ipv6trylibc=no - -if test "$ipv6" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking ipv6 stack type" >&5 -$as_echo_n "checking ipv6 stack type... " >&6; } - for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta; - do - case $i in - inria) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef IPV6_INRIA_VERSION -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - ipv6type=$i -fi -rm -f conftest* - - ;; - kame) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef __KAME__ -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - ipv6type=$i; - ipv6lib=inet6 - ipv6libdir=/usr/local/v6/lib - ipv6trylibc=yes -fi -rm -f conftest* - - ;; - linux-glibc) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)) -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - ipv6type=$i; - ipv6trylibc=yes -fi -rm -f conftest* - - ;; - linux-inet6) - if test -d /usr/inet6; then - ipv6type=$i - ipv6lib=inet6 - ipv6libdir=/usr/inet6/lib - BASECFLAGS="-I/usr/inet6/include $BASECFLAGS" - fi - ;; - solaris) - if test -f /etc/netconfig; then - if $GREP -q tcp6 /etc/netconfig; then - ipv6type=$i - ipv6trylibc=yes - fi - fi - ;; - toshiba) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef _TOSHIBA_INET6 -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - ipv6type=$i; - ipv6lib=inet6; - ipv6libdir=/usr/local/v6/lib -fi -rm -f conftest* - - ;; - v6d) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef __V6D__ -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - ipv6type=$i; - ipv6lib=v6; - ipv6libdir=/usr/local/v6/lib; - BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS" -fi -rm -f conftest* - - ;; - zeta) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef _ZETA_MINAMI_INET6 -yes -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes" >/dev/null 2>&1; then : - ipv6type=$i; - ipv6lib=inet6; - ipv6libdir=/usr/local/v6/lib -fi -rm -f conftest* - - ;; - esac - if test "$ipv6type" != "unknown"; then - break - fi - done - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ipv6type" >&5 -$as_echo "$ipv6type" >&6; } -fi - -if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then - if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then - LIBS="-L$ipv6libdir -l$ipv6lib $LIBS" - echo "using lib$ipv6lib" - else - if test $ipv6trylibc = "yes"; then - echo "using libc" - else - echo 'Fatal: no $ipv6lib library found. cannot continue.' - echo "You need to fetch lib$ipv6lib.a from appropriate" - echo 'ipv6 kit and compile beforehand.' - exit 1 - fi - fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OSX 10.5 SDK or later" >&5 -$as_echo_n "checking for OSX 10.5 SDK or later... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -int -main () -{ -FSIORefNum fRef = 0 - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -$as_echo "#define HAVE_OSX105_SDK 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -# Check for --with-doc-strings -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-doc-strings" >&5 -$as_echo_n "checking for --with-doc-strings... " >&6; } - -# Check whether --with-doc-strings was given. -if test "${with_doc_strings+set}" = set; then : - withval=$with_doc_strings; -fi - - -if test -z "$with_doc_strings" -then with_doc_strings="yes" -fi -if test "$with_doc_strings" != "no" -then - -$as_echo "#define WITH_DOC_STRINGS 1" >>confdefs.h - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_doc_strings" >&5 -$as_echo "$with_doc_strings" >&6; } - -# Check for Python-specific malloc support -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-tsc" >&5 -$as_echo_n "checking for --with-tsc... " >&6; } - -# Check whether --with-tsc was given. -if test "${with_tsc+set}" = set; then : - withval=$with_tsc; -if test "$withval" != no -then - -$as_echo "#define WITH_TSC 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Check for Python-specific malloc support -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-pymalloc" >&5 -$as_echo_n "checking for --with-pymalloc... " >&6; } - -# Check whether --with-pymalloc was given. -if test "${with_pymalloc+set}" = set; then : - withval=$with_pymalloc; -fi - - -if test -z "$with_pymalloc" -then with_pymalloc="yes" -fi -if test "$with_pymalloc" != "no" -then - -$as_echo "#define WITH_PYMALLOC 1" >>confdefs.h - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_pymalloc" >&5 -$as_echo "$with_pymalloc" >&6; } - -# Check for Valgrind support -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-valgrind" >&5 -$as_echo_n "checking for --with-valgrind... " >&6; } - -# Check whether --with-valgrind was given. -if test "${with_valgrind+set}" = set; then : - withval=$with_valgrind; -else - with_valgrind=no -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_valgrind" >&5 -$as_echo "$with_valgrind" >&6; } -if test "$with_valgrind" != no; then - ac_fn_c_check_header_mongrel "$LINENO" "valgrind/valgrind.h" "ac_cv_header_valgrind_valgrind_h" "$ac_includes_default" -if test "x$ac_cv_header_valgrind_valgrind_h" = xyes; then : - -$as_echo "#define WITH_VALGRIND 1" >>confdefs.h - -else - as_fn_error $? "Valgrind support requested but headers not available" "$LINENO" 5 - -fi - - -fi - -# Check for --with-wctype-functions -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-wctype-functions" >&5 -$as_echo_n "checking for --with-wctype-functions... " >&6; } - -# Check whether --with-wctype-functions was given. -if test "${with_wctype_functions+set}" = set; then : - withval=$with_wctype_functions; -if test "$withval" != no -then - -$as_echo "#define WANT_WCTYPE_FUNCTIONS 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# -I${DLINCLDIR} is added to the compile rule for importdl.o - -DLINCLDIR=. - -# the dlopen() function means we might want to use dynload_shlib.o. some -# platforms, such as AIX, have dlopen(), but don't want to use it. -for ac_func in dlopen -do : - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLOPEN 1 -_ACEOF - -fi -done - - -# DYNLOADFILE specifies which dynload_*.o file we will use for dynamic -# loading of modules. - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking DYNLOADFILE" >&5 -$as_echo_n "checking DYNLOADFILE... " >&6; } -if test -z "$DYNLOADFILE" -then - case $ac_sys_system/$ac_sys_release in - AIX*) # Use dynload_shlib.c and dlopen() if we have it; otherwise dynload_aix.c - if test "$ac_cv_func_dlopen" = yes - then DYNLOADFILE="dynload_shlib.o" - else DYNLOADFILE="dynload_aix.o" - fi - ;; - BeOS*) DYNLOADFILE="dynload_beos.o";; - hp*|HP*) DYNLOADFILE="dynload_hpux.o";; - # Use dynload_next.c only on 10.2 and below, which don't have native dlopen() - Darwin/[0156]\..*) DYNLOADFILE="dynload_next.o";; - atheos*) DYNLOADFILE="dynload_atheos.o";; - *) - # use dynload_shlib.c and dlopen() if we have it; otherwise stub - # out any dynamic loading - if test "$ac_cv_func_dlopen" = yes - then DYNLOADFILE="dynload_shlib.o" - else DYNLOADFILE="dynload_stub.o" - fi - ;; - esac -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DYNLOADFILE" >&5 -$as_echo "$DYNLOADFILE" >&6; } -if test "$DYNLOADFILE" != "dynload_stub.o" -then - -$as_echo "#define HAVE_DYNAMIC_LOADING 1" >>confdefs.h - -fi - -# MACHDEP_OBJS can be set to platform-specific object files needed by Python - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking MACHDEP_OBJS" >&5 -$as_echo_n "checking MACHDEP_OBJS... " >&6; } -if test -z "$MACHDEP_OBJS" -then - MACHDEP_OBJS=$extra_machdep_objs -else - MACHDEP_OBJS="$MACHDEP_OBJS $extra_machdep_objs" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: MACHDEP_OBJS" >&5 -$as_echo "MACHDEP_OBJS" >&6; } - -# checks for library functions -for ac_func in alarm setitimer getitimer bind_textdomain_codeset chown \ - clock confstr ctermid execv fchmod fchown fork fpathconf ftime ftruncate \ - gai_strerror getgroups getlogin getloadavg getpeername getpgid getpid \ - getpriority getresuid getresgid getpwent getspnam getspent getsid getwd \ - initgroups kill killpg lchmod lchown lstat mkfifo mknod mktime \ - mremap nice pathconf pause plock poll pthread_init \ - putenv readlink realpath \ - select sem_open sem_timedwait sem_getvalue sem_unlink setegid seteuid \ - setgid \ - setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf snprintf \ - setlocale setregid setreuid setresuid setresgid \ - setsid setpgid setpgrp setuid setvbuf snprintf \ - sigaction siginterrupt sigrelse strftime \ - sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \ - truncate uname unsetenv utimes waitpid wait3 wait4 wcscoll _getpty -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -# For some functions, having a definition is not sufficient, since -# we want to take their address. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for chroot" >&5 -$as_echo_n "checking for chroot... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=chroot - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_CHROOT 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for link" >&5 -$as_echo_n "checking for link... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=link - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_LINK 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for symlink" >&5 -$as_echo_n "checking for symlink... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=symlink - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_SYMLINK 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fchdir" >&5 -$as_echo_n "checking for fchdir... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=fchdir - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_FCHDIR 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fsync" >&5 -$as_echo_n "checking for fsync... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=fsync - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_FSYNC 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fdatasync" >&5 -$as_echo_n "checking for fdatasync... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=fdatasync - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_FDATASYNC 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoll" >&5 -$as_echo_n "checking for epoll... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=epoll_create - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_EPOLL 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kqueue" >&5 -$as_echo_n "checking for kqueue... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main () -{ -int x=kqueue() - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_KQUEUE 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# On some systems (eg. FreeBSD 5), we would find a definition of the -# functions ctermid_r, setgroups in the library, but no prototype -# (e.g. because we use _XOPEN_SOURCE). See whether we can take their -# address to avoid compiler warnings and potential miscompilations -# because of the missing prototypes. - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ctermid_r" >&5 -$as_echo_n "checking for ctermid_r... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main () -{ -void* p = ctermid_r - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_CTERMID_R 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock declaration" >&5 -$as_echo_n "checking for flock declaration... " >&6; } -if ${ac_cv_flock_decl+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void* p = flock - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_flock_decl=yes -else - ac_cv_flock_decl=no - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_flock_decl" >&5 -$as_echo "$ac_cv_flock_decl" >&6; } -if test "x${ac_cv_flock_decl}" = xyes; then - for ac_func in flock -do : - ac_fn_c_check_func "$LINENO" "flock" "ac_cv_func_flock" -if test "x$ac_cv_func_flock" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FLOCK 1 -_ACEOF - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5 -$as_echo_n "checking for flock in -lbsd... " >&6; } -if ${ac_cv_lib_bsd_flock+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char flock (); -int -main () -{ -return flock (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_bsd_flock=yes -else - ac_cv_lib_bsd_flock=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_flock" >&5 -$as_echo "$ac_cv_lib_bsd_flock" >&6; } -if test "x$ac_cv_lib_bsd_flock" = xyes; then : - $as_echo "#define HAVE_FLOCK 1" >>confdefs.h - - -$as_echo "#define FLOCK_NEEDS_LIBBSD 1" >>confdefs.h - - -fi - - -fi -done - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpagesize" >&5 -$as_echo_n "checking for getpagesize... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main () -{ -void* p = getpagesize - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_GETPAGESIZE 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken unsetenv" >&5 -$as_echo_n "checking for broken unsetenv... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main () -{ -int res = unsetenv("DUMMY") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -else - -$as_echo "#define HAVE_BROKEN_UNSETENV 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -for ac_prog in true -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_TRUE+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$TRUE"; then - ac_cv_prog_TRUE="$TRUE" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_TRUE="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -TRUE=$ac_cv_prog_TRUE -if test -n "$TRUE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRUE" >&5 -$as_echo "$TRUE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$TRUE" && break -done -test -n "$TRUE" || TRUE="/bin/true" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lc" >&5 -$as_echo_n "checking for inet_aton in -lc... " >&6; } -if ${ac_cv_lib_c_inet_aton+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char inet_aton (); -int -main () -{ -return inet_aton (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_c_inet_aton=yes -else - ac_cv_lib_c_inet_aton=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_inet_aton" >&5 -$as_echo "$ac_cv_lib_c_inet_aton" >&6; } -if test "x$ac_cv_lib_c_inet_aton" = xyes; then : - $ac_cv_prog_TRUE -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lresolv" >&5 -$as_echo_n "checking for inet_aton in -lresolv... " >&6; } -if ${ac_cv_lib_resolv_inet_aton+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lresolv $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char inet_aton (); -int -main () -{ -return inet_aton (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_resolv_inet_aton=yes -else - ac_cv_lib_resolv_inet_aton=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_inet_aton" >&5 -$as_echo "$ac_cv_lib_resolv_inet_aton" >&6; } -if test "x$ac_cv_lib_resolv_inet_aton" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBRESOLV 1 -_ACEOF - - LIBS="-lresolv $LIBS" - -fi - - -fi - - -# On Tru64, chflags seems to be present, but calling it will -# exit Python -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for chflags" >&5 -$as_echo_n "checking for chflags... " >&6; } -if ${ac_cv_have_chflags+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_have_chflags=cross -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main(int argc, char*argv[]) -{ - if(chflags(argv[0], 0) != 0) - return 1; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_have_chflags=yes -else - ac_cv_have_chflags=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_chflags" >&5 -$as_echo "$ac_cv_have_chflags" >&6; } -if test "$ac_cv_have_chflags" = cross ; then - ac_fn_c_check_func "$LINENO" "chflags" "ac_cv_func_chflags" -if test "x$ac_cv_func_chflags" = xyes; then : - ac_cv_have_chflags="yes" -else - ac_cv_have_chflags="no" -fi - -fi -if test "$ac_cv_have_chflags" = yes ; then - -$as_echo "#define HAVE_CHFLAGS 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lchflags" >&5 -$as_echo_n "checking for lchflags... " >&6; } -if ${ac_cv_have_lchflags+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_have_lchflags=cross -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main(int argc, char*argv[]) -{ - if(lchflags(argv[0], 0) != 0) - return 1; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_have_lchflags=yes -else - ac_cv_have_lchflags=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_lchflags" >&5 -$as_echo "$ac_cv_have_lchflags" >&6; } -if test "$ac_cv_have_lchflags" = cross ; then - ac_fn_c_check_func "$LINENO" "lchflags" "ac_cv_func_lchflags" -if test "x$ac_cv_func_lchflags" = xyes; then : - ac_cv_have_lchflags="yes" -else - ac_cv_have_lchflags="no" -fi - -fi -if test "$ac_cv_have_lchflags" = yes ; then - -$as_echo "#define HAVE_LCHFLAGS 1" >>confdefs.h - -fi - -case $ac_sys_system/$ac_sys_release in -Darwin/*) - _CUR_CFLAGS="${CFLAGS}" - _CUR_LDFLAGS="${LDFLAGS}" - CFLAGS="${CFLAGS} -Wl,-search_paths_first" - LDFLAGS="${LDFLAGS} -Wl,-search_paths_first -L/usr/local/lib" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateCopy in -lz" >&5 -$as_echo_n "checking for inflateCopy in -lz... " >&6; } -if ${ac_cv_lib_z_inflateCopy+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char inflateCopy (); -int -main () -{ -return inflateCopy (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_z_inflateCopy=yes -else - ac_cv_lib_z_inflateCopy=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateCopy" >&5 -$as_echo "$ac_cv_lib_z_inflateCopy" >&6; } -if test "x$ac_cv_lib_z_inflateCopy" = xyes; then : - -$as_echo "#define HAVE_ZLIB_COPY 1" >>confdefs.h - -fi - - -case $ac_sys_system/$ac_sys_release in -Darwin/*) - CFLAGS="${_CUR_CFLAGS}" - LDFLAGS="${_CUR_LDFLAGS}" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for hstrerror" >&5 -$as_echo_n "checking for hstrerror... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main () -{ -void* p = hstrerror; hstrerror(0) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define HAVE_HSTRERROR 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5 -$as_echo_n "checking for inet_aton... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main () -{ -void* p = inet_aton;inet_aton(0,0) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define HAVE_INET_ATON 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_pton" >&5 -$as_echo_n "checking for inet_pton... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main () -{ -void* p = inet_pton - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_INET_PTON 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -# On some systems, setgroups is in unistd.h, on others, in grp.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for setgroups" >&5 -$as_echo_n "checking for setgroups... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef HAVE_GRP_H -#include -#endif - -int -main () -{ -void* p = setgroups - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_SETGROUPS 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -# check for openpty and forkpty - -for ac_func in openpty -do : - ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty" -if test "x$ac_cv_func_openpty" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OPENPTY 1 -_ACEOF - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5 -$as_echo_n "checking for openpty in -lutil... " >&6; } -if ${ac_cv_lib_util_openpty+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char openpty (); -int -main () -{ -return openpty (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_util_openpty=yes -else - ac_cv_lib_util_openpty=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5 -$as_echo "$ac_cv_lib_util_openpty" >&6; } -if test "x$ac_cv_lib_util_openpty" = xyes; then : - $as_echo "#define HAVE_OPENPTY 1" >>confdefs.h - LIBS="$LIBS -lutil" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lbsd" >&5 -$as_echo_n "checking for openpty in -lbsd... " >&6; } -if ${ac_cv_lib_bsd_openpty+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char openpty (); -int -main () -{ -return openpty (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_bsd_openpty=yes -else - ac_cv_lib_bsd_openpty=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_openpty" >&5 -$as_echo "$ac_cv_lib_bsd_openpty" >&6; } -if test "x$ac_cv_lib_bsd_openpty" = xyes; then : - $as_echo "#define HAVE_OPENPTY 1" >>confdefs.h - LIBS="$LIBS -lbsd" -fi - - -fi - - -fi -done - -for ac_func in forkpty -do : - ac_fn_c_check_func "$LINENO" "forkpty" "ac_cv_func_forkpty" -if test "x$ac_cv_func_forkpty" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FORKPTY 1 -_ACEOF - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lutil" >&5 -$as_echo_n "checking for forkpty in -lutil... " >&6; } -if ${ac_cv_lib_util_forkpty+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char forkpty (); -int -main () -{ -return forkpty (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_util_forkpty=yes -else - ac_cv_lib_util_forkpty=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_forkpty" >&5 -$as_echo "$ac_cv_lib_util_forkpty" >&6; } -if test "x$ac_cv_lib_util_forkpty" = xyes; then : - $as_echo "#define HAVE_FORKPTY 1" >>confdefs.h - LIBS="$LIBS -lutil" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for forkpty in -lbsd" >&5 -$as_echo_n "checking for forkpty in -lbsd... " >&6; } -if ${ac_cv_lib_bsd_forkpty+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char forkpty (); -int -main () -{ -return forkpty (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_bsd_forkpty=yes -else - ac_cv_lib_bsd_forkpty=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_forkpty" >&5 -$as_echo "$ac_cv_lib_bsd_forkpty" >&6; } -if test "x$ac_cv_lib_bsd_forkpty" = xyes; then : - $as_echo "#define HAVE_FORKPTY 1" >>confdefs.h - LIBS="$LIBS -lbsd" -fi - - -fi - - -fi -done - - -# Stuff for expat. -for ac_func in memmove -do : - ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" -if test "x$ac_cv_func_memmove" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MEMMOVE 1 -_ACEOF - -fi -done - - -# check for long file support functions -for ac_func in fseek64 fseeko fstatvfs ftell64 ftello statvfs -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" -if test "x$ac_cv_func_dup2" = xyes; then : - $as_echo "#define HAVE_DUP2 1" >>confdefs.h - -else - case " $LIBOBJS " in - *" dup2.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS dup2.$ac_objext" - ;; -esac - -fi - -ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" -if test "x$ac_cv_func_getcwd" = xyes; then : - $as_echo "#define HAVE_GETCWD 1" >>confdefs.h - -else - case " $LIBOBJS " in - *" getcwd.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS getcwd.$ac_objext" - ;; -esac - -fi - -ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" -if test "x$ac_cv_func_strdup" = xyes; then : - $as_echo "#define HAVE_STRDUP 1" >>confdefs.h - -else - case " $LIBOBJS " in - *" strdup.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS strdup.$ac_objext" - ;; -esac - -fi - - -for ac_func in getpgrp -do : - ac_fn_c_check_func "$LINENO" "getpgrp" "ac_cv_func_getpgrp" -if test "x$ac_cv_func_getpgrp" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPGRP 1 -_ACEOF - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -getpgrp(0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define GETPGRP_HAVE_ARG 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -done - -for ac_func in setpgrp -do : - ac_fn_c_check_func "$LINENO" "setpgrp" "ac_cv_func_setpgrp" -if test "x$ac_cv_func_setpgrp" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETPGRP 1 -_ACEOF - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -setpgrp(0,0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define SETPGRP_HAVE_ARG 1" >>confdefs.h - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -done - -for ac_func in gettimeofday -do : - ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" -if test "x$ac_cv_func_gettimeofday" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETTIMEOFDAY 1 -_ACEOF - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -gettimeofday((struct timeval*)0,(struct timezone*)0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - -$as_echo "#define GETTIMEOFDAY_NO_TZ 1" >>confdefs.h - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for major" >&5 -$as_echo_n "checking for major... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if defined(MAJOR_IN_MKDEV) -#include -#elif defined(MAJOR_IN_SYSMACROS) -#include -#else -#include -#endif - -int -main () -{ - - makedev(major(0),minor(0)); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - -$as_echo "#define HAVE_DEVICE_MACROS 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -# On OSF/1 V5.1, getaddrinfo is available, but a define -# for [no]getaddrinfo in netdb.h. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5 -$as_echo_n "checking for getaddrinfo... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include - -int -main () -{ -getaddrinfo(NULL, NULL, NULL, NULL); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - have_getaddrinfo=yes -else - have_getaddrinfo=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_getaddrinfo" >&5 -$as_echo "$have_getaddrinfo" >&6; } -if test $have_getaddrinfo = yes -then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking getaddrinfo bug" >&5 -$as_echo_n "checking getaddrinfo bug... " >&6; } - if ${ac_cv_buggy_getaddrinfo+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - -if test "${enable_ipv6+set}" = set; then - ac_cv_buggy_getaddrinfo="no -- configured with --(en|dis)able-ipv6" -else - ac_cv_buggy_getaddrinfo=yes -fi -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include -#include -#include - -int main() -{ - int passive, gaierr, inet4 = 0, inet6 = 0; - struct addrinfo hints, *ai, *aitop; - char straddr[INET6_ADDRSTRLEN], strport[16]; - - for (passive = 0; passive <= 1; passive++) { - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_flags = passive ? AI_PASSIVE : 0; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - if ((gaierr = getaddrinfo(NULL, "54321", &hints, &aitop)) != 0) { - (void)gai_strerror(gaierr); - goto bad; - } - for (ai = aitop; ai; ai = ai->ai_next) { - if (ai->ai_addr == NULL || - ai->ai_addrlen == 0 || - getnameinfo(ai->ai_addr, ai->ai_addrlen, - straddr, sizeof(straddr), strport, sizeof(strport), - NI_NUMERICHOST|NI_NUMERICSERV) != 0) { - goto bad; - } - switch (ai->ai_family) { - case AF_INET: - if (strcmp(strport, "54321") != 0) { - goto bad; - } - if (passive) { - if (strcmp(straddr, "0.0.0.0") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "127.0.0.1") != 0) { - goto bad; - } - } - inet4++; - break; - case AF_INET6: - if (strcmp(strport, "54321") != 0) { - goto bad; - } - if (passive) { - if (strcmp(straddr, "::") != 0) { - goto bad; - } - } else { - if (strcmp(straddr, "::1") != 0) { - goto bad; - } - } - inet6++; - break; - case AF_UNSPEC: - goto bad; - break; - default: - /* another family support? */ - break; - } - } - } - - if (!(inet4 == 0 || inet4 == 2)) - goto bad; - if (!(inet6 == 0 || inet6 == 2)) - goto bad; - - if (aitop) - freeaddrinfo(aitop); - return 0; - - bad: - if (aitop) - freeaddrinfo(aitop); - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_buggy_getaddrinfo=no -else - ac_cv_buggy_getaddrinfo=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buggy_getaddrinfo" >&5 -$as_echo "$ac_cv_buggy_getaddrinfo" >&6; } - -if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes -then - if test $ipv6 = yes - then - echo 'Fatal: You must get working getaddrinfo() function.' - echo ' or you can specify "--disable-ipv6"'. - exit 1 - fi -else - -$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h - -fi - -for ac_func in getnameinfo -do : - ac_fn_c_check_func "$LINENO" "getnameinfo" "ac_cv_func_getnameinfo" -if test "x$ac_cv_func_getnameinfo" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETNAMEINFO 1 -_ACEOF - -fi -done - - -# checks for structures -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if ${ac_cv_struct_tm+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_struct_tm=time.h -else - ac_cv_struct_tm=sys/time.h -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -$as_echo "$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h - -fi - -ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include -#include <$ac_cv_struct_tm> - -" -if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 1 -_ACEOF - - -fi - -if test "$ac_cv_member_struct_tm_tm_zone" = yes; then - -$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h - -else - ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include -" -if test "x$ac_cv_have_decl_tzname" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME $ac_have_decl -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 -$as_echo_n "checking for tzname... " >&6; } -if ${ac_cv_var_tzname+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#if !HAVE_DECL_TZNAME -extern char *tzname[]; -#endif - -int -main () -{ -return tzname[0][0]; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_var_tzname=yes -else - ac_cv_var_tzname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 -$as_echo "$ac_cv_var_tzname" >&6; } - if test $ac_cv_var_tzname = yes; then - -$as_echo "#define HAVE_TZNAME 1" >>confdefs.h - - fi -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_rdev" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_RDEV 1 -_ACEOF - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 -_ACEOF - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_flags" "ac_cv_member_struct_stat_st_flags" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_flags" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_FLAGS 1 -_ACEOF - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_gen" "ac_cv_member_struct_stat_st_gen" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_gen" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_GEN 1 -_ACEOF - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtime" "ac_cv_member_struct_stat_st_birthtime" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_birthtime" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1 -_ACEOF - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_STAT_ST_BLOCKS 1 -_ACEOF - - -$as_echo "#define HAVE_ST_BLOCKS 1" >>confdefs.h - -else - case " $LIBOBJS " in - *" fileblocks.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS fileblocks.$ac_objext" - ;; -esac - -fi - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for time.h that defines altzone" >&5 -$as_echo_n "checking for time.h that defines altzone... " >&6; } -if ${ac_cv_header_time_altzone+:} false; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -return altzone; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time_altzone=yes -else - ac_cv_header_time_altzone=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time_altzone" >&5 -$as_echo "$ac_cv_header_time_altzone" >&6; } -if test $ac_cv_header_time_altzone = yes; then - -$as_echo "#define HAVE_ALTZONE 1" >>confdefs.h - -fi - -was_it_defined=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/select.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether sys/select.h and sys/time.h may both be included... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include - -int -main () -{ -; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -$as_echo "#define SYS_SELECT_WITH_SYS_TIME 1" >>confdefs.h - - was_it_defined=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $was_it_defined" >&5 -$as_echo "$was_it_defined" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for addrinfo" >&5 -$as_echo_n "checking for addrinfo... " >&6; } -if ${ac_cv_struct_addrinfo+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -struct addrinfo a - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_struct_addrinfo=yes -else - ac_cv_struct_addrinfo=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_addrinfo" >&5 -$as_echo "$ac_cv_struct_addrinfo" >&6; } -if test $ac_cv_struct_addrinfo = yes; then - -$as_echo "#define HAVE_ADDRINFO 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sockaddr_storage" >&5 -$as_echo_n "checking for sockaddr_storage... " >&6; } -if ${ac_cv_struct_sockaddr_storage+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include -# include -int -main () -{ -struct sockaddr_storage s - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_struct_sockaddr_storage=yes -else - ac_cv_struct_sockaddr_storage=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_sockaddr_storage" >&5 -$as_echo "$ac_cv_struct_sockaddr_storage" >&6; } -if test $ac_cv_struct_sockaddr_storage = yes; then - -$as_echo "#define HAVE_SOCKADDR_STORAGE 1" >>confdefs.h - -fi - -# checks for compiler characteristics - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5 -$as_echo_n "checking whether char is unsigned... " >&6; } -if ${ac_cv_c_char_unsigned+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((char) -1) < 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_char_unsigned=no -else - ac_cv_c_char_unsigned=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5 -$as_echo "$ac_cv_c_char_unsigned" >&6; } -if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ - typedef int charset[2]; - const charset cs = { 0, 0 }; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - - -works=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 -$as_echo_n "checking for working volatile... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -volatile int x; x = 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - works=yes -else - -$as_echo "#define volatile /**/" >>confdefs.h - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $works" >&5 -$as_echo "$works" >&6; } - -works=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working signed char" >&5 -$as_echo_n "checking for working signed char... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -signed char c; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - works=yes -else - -$as_echo "#define signed /**/" >>confdefs.h - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $works" >&5 -$as_echo "$works" >&6; } - -have_prototypes=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for prototypes" >&5 -$as_echo_n "checking for prototypes... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo(int x) { return 0; } -int -main () -{ -return foo(10); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_PROTOTYPES 1" >>confdefs.h - - have_prototypes=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_prototypes" >&5 -$as_echo "$have_prototypes" >&6; } - -works=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for variable length prototypes and stdarg.h" >&5 -$as_echo_n "checking for variable length prototypes and stdarg.h... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -int foo(int x, ...) { - va_list va; - va_start(va, x); - va_arg(va, int); - va_arg(va, char *); - va_arg(va, double); - return 0; -} - -int -main () -{ -return foo(10, "", 3.14); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -$as_echo "#define HAVE_STDARG_PROTOTYPES 1" >>confdefs.h - - works=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $works" >&5 -$as_echo "$works" >&6; } - -# check for socketpair -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socketpair" >&5 -$as_echo_n "checking for socketpair... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -int -main () -{ -void *x=socketpair - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_SOCKETPAIR 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -# check if sockaddr has sa_len member -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if sockaddr has sa_len member" >&5 -$as_echo_n "checking if sockaddr has sa_len member... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -struct sockaddr x; -x.sa_len = 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -$as_echo "#define HAVE_SOCKADDR_SA_LEN 1" >>confdefs.h - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -va_list_is_array=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether va_list is an array" >&5 -$as_echo_n "checking whether va_list is an array... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef HAVE_STDARG_PROTOTYPES -#include -#else -#include -#endif - -int -main () -{ -va_list list1, list2; list1 = list2; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - - -$as_echo "#define VA_LIST_IS_ARRAY 1" >>confdefs.h - - va_list_is_array=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $va_list_is_array" >&5 -$as_echo "$va_list_is_array" >&6; } - -# sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-( - - -ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" -if test "x$ac_cv_func_gethostbyname_r" = xyes; then : - - $as_echo "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 6 args" >&5 -$as_echo_n "checking gethostbyname_r with 6 args... " >&6; } - OLD_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $MY_CPPFLAGS $MY_THREAD_CPPFLAGS $MY_CFLAGS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include - -int -main () -{ - - char *name; - struct hostent *he, *res; - char buffer[2048]; - int buflen = 2048; - int h_errnop; - - (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - $as_echo "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - -$as_echo "#define HAVE_GETHOSTBYNAME_R_6_ARG 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 5 args" >&5 -$as_echo_n "checking gethostbyname_r with 5 args... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include - -int -main () -{ - - char *name; - struct hostent *he; - char buffer[2048]; - int buflen = 2048; - int h_errnop; - - (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - $as_echo "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - -$as_echo "#define HAVE_GETHOSTBYNAME_R_5_ARG 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking gethostbyname_r with 3 args" >&5 -$as_echo_n "checking gethostbyname_r with 3 args... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -# include - -int -main () -{ - - char *name; - struct hostent *he; - struct hostent_data data; - - (void) gethostbyname_r(name, he, &data); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - $as_echo "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - -$as_echo "#define HAVE_GETHOSTBYNAME_R_3_ARG 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -else - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$OLD_CFLAGS - -else - - for ac_func in gethostbyname -do : - ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" -if test "x$ac_cv_func_gethostbyname" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETHOSTBYNAME 1 -_ACEOF - -fi -done - - -fi - - - - - - - -# checks for system services -# (none yet) - -# Linux requires this for correct f.p. operations -ac_fn_c_check_func "$LINENO" "__fpu_control" "ac_cv_func___fpu_control" -if test "x$ac_cv_func___fpu_control" = xyes; then : - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __fpu_control in -lieee" >&5 -$as_echo_n "checking for __fpu_control in -lieee... " >&6; } -if ${ac_cv_lib_ieee___fpu_control+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lieee $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char __fpu_control (); -int -main () -{ -return __fpu_control (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ieee___fpu_control=yes -else - ac_cv_lib_ieee___fpu_control=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee___fpu_control" >&5 -$as_echo "$ac_cv_lib_ieee___fpu_control" >&6; } -if test "x$ac_cv_lib_ieee___fpu_control" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBIEEE 1 -_ACEOF - - LIBS="-lieee $LIBS" - -fi - - -fi - - -# Check for --with-fpectl -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-fpectl" >&5 -$as_echo_n "checking for --with-fpectl... " >&6; } - -# Check whether --with-fpectl was given. -if test "${with_fpectl+set}" = set; then : - withval=$with_fpectl; -if test "$withval" != no -then - -$as_echo "#define WANT_SIGFPE_HANDLER 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# check for --with-libm=... - -case $ac_sys_system in -Darwin) ;; -BeOS) ;; -*) LIBM=-lm -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-libm=STRING" >&5 -$as_echo_n "checking for --with-libm=STRING... " >&6; } - -# Check whether --with-libm was given. -if test "${with_libm+set}" = set; then : - withval=$with_libm; -if test "$withval" = no -then LIBM= - { $as_echo "$as_me:${as_lineno-$LINENO}: result: force LIBM empty" >&5 -$as_echo "force LIBM empty" >&6; } -elif test "$withval" != yes -then LIBM=$withval - { $as_echo "$as_me:${as_lineno-$LINENO}: result: set LIBM=\"$withval\"" >&5 -$as_echo "set LIBM=\"$withval\"" >&6; } -else as_fn_error $? "proper usage is --with-libm=STRING" "$LINENO" 5 -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: default LIBM=\"$LIBM\"" >&5 -$as_echo "default LIBM=\"$LIBM\"" >&6; } -fi - - -# check for --with-libc=... - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-libc=STRING" >&5 -$as_echo_n "checking for --with-libc=STRING... " >&6; } - -# Check whether --with-libc was given. -if test "${with_libc+set}" = set; then : - withval=$with_libc; -if test "$withval" = no -then LIBC= - { $as_echo "$as_me:${as_lineno-$LINENO}: result: force LIBC empty" >&5 -$as_echo "force LIBC empty" >&6; } -elif test "$withval" != yes -then LIBC=$withval - { $as_echo "$as_me:${as_lineno-$LINENO}: result: set LIBC=\"$withval\"" >&5 -$as_echo "set LIBC=\"$withval\"" >&6; } -else as_fn_error $? "proper usage is --with-libc=STRING" "$LINENO" 5 -fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: default LIBC=\"$LIBC\"" >&5 -$as_echo "default LIBC=\"$LIBC\"" >&6; } -fi - - -# ************************************************** -# * Check for various properties of floating point * -# ************************************************** - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C doubles are little-endian IEEE 754 binary64" >&5 -$as_echo_n "checking whether C doubles are little-endian IEEE 754 binary64... " >&6; } -if ${ac_cv_little_endian_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - -if test "$cross_compiling" = yes; then : - ac_cv_little_endian_double=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -int main() { - double x = 9006104071832581.0; - if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0) - return 0; - else - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_little_endian_double=yes -else - ac_cv_little_endian_double=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_little_endian_double" >&5 -$as_echo "$ac_cv_little_endian_double" >&6; } -if test "$ac_cv_little_endian_double" = yes -then - -$as_echo "#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C doubles are big-endian IEEE 754 binary64" >&5 -$as_echo_n "checking whether C doubles are big-endian IEEE 754 binary64... " >&6; } -if ${ac_cv_big_endian_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - -if test "$cross_compiling" = yes; then : - ac_cv_big_endian_double=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -int main() { - double x = 9006104071832581.0; - if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0) - return 0; - else - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_big_endian_double=yes -else - ac_cv_big_endian_double=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_big_endian_double" >&5 -$as_echo "$ac_cv_big_endian_double" >&6; } -if test "$ac_cv_big_endian_double" = yes -then - -$as_echo "#define DOUBLE_IS_BIG_ENDIAN_IEEE754 1" >>confdefs.h - -fi - -# Some ARM platforms use a mixed-endian representation for doubles. -# While Python doesn't currently have full support for these platforms -# (see e.g., issue 1762561), we can at least make sure that float <-> string -# conversions work. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C doubles are ARM mixed-endian IEEE 754 binary64" >&5 -$as_echo_n "checking whether C doubles are ARM mixed-endian IEEE 754 binary64... " >&6; } -if ${ac_cv_mixed_endian_double+:} false; then : - $as_echo_n "(cached) " >&6 -else - -if test "$cross_compiling" = yes; then : - ac_cv_mixed_endian_double=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -int main() { - double x = 9006104071832581.0; - if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0) - return 0; - else - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_mixed_endian_double=yes -else - ac_cv_mixed_endian_double=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mixed_endian_double" >&5 -$as_echo "$ac_cv_mixed_endian_double" >&6; } -if test "$ac_cv_mixed_endian_double" = yes -then - -$as_echo "#define DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 1" >>confdefs.h - -fi - -# The short float repr introduced in Python 3.1 requires the -# correctly-rounded string <-> double conversion functions from -# Python/dtoa.c, which in turn require that the FPU uses 53-bit -# rounding; this is a problem on x86, where the x87 FPU has a default -# rounding precision of 64 bits. For gcc/x86, we can fix this by -# using inline assembler to get and set the x87 FPU control word. - -# This inline assembler syntax may also work for suncc and icc, -# so we try it on all platforms. - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can use gcc inline assembler to get and set x87 control word" >&5 -$as_echo_n "checking whether we can use gcc inline assembler to get and set x87 control word... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - unsigned short cw; - __asm__ __volatile__ ("fnstcw %0" : "=m" (cw)); - __asm__ __volatile__ ("fldcw %0" : : "m" (cw)); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - have_gcc_asm_for_x87=yes -else - have_gcc_asm_for_x87=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gcc_asm_for_x87" >&5 -$as_echo "$have_gcc_asm_for_x87" >&6; } -if test "$have_gcc_asm_for_x87" = yes -then - -$as_echo "#define HAVE_GCC_ASM_FOR_X87 1" >>confdefs.h - -fi - -# Detect whether system arithmetic is subject to x87-style double -# rounding issues. The result of this test has little meaning on non -# IEEE 754 platforms. On IEEE 754, test should return 1 if rounding -# mode is round-to-nearest and double rounding issues are present, and -# 0 otherwise. See http://bugs.python.org/issue2937 for more info. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x87-style double rounding" >&5 -$as_echo_n "checking for x87-style double rounding... " >&6; } -# $BASECFLAGS may affect the result -ac_save_cc="$CC" -CC="$CC $BASECFLAGS" -if test "$cross_compiling" = yes; then : - ac_cv_x87_double_rounding=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main() { - volatile double x, y, z; - /* 1./(1-2**-53) -> 1+2**-52 (correct), 1.0 (double rounding) */ - x = 0.99999999999999989; /* 1-2**-53 */ - y = 1./x; - if (y != 1.) - exit(0); - /* 1e16+2.99999 -> 1e16+2. (correct), 1e16+4. (double rounding) */ - x = 1e16; - y = 2.99999; - z = x + y; - if (z != 1e16+4.) - exit(0); - /* both tests show evidence of double rounding */ - exit(1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_x87_double_rounding=no -else - ac_cv_x87_double_rounding=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -CC="$ac_save_cc" -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_x87_double_rounding" >&5 -$as_echo "$ac_cv_x87_double_rounding" >&6; } -if test "$ac_cv_x87_double_rounding" = yes -then - -$as_echo "#define X87_DOUBLE_ROUNDING 1" >>confdefs.h - -fi - -# ************************************ -# * Check for mathematical functions * -# ************************************ - -LIBS_SAVE=$LIBS -LIBS="$LIBS $LIBM" - -# On FreeBSD 6.2, it appears that tanh(-0.) returns 0. instead of -# -0. on some architectures. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether tanh preserves the sign of zero" >&5 -$as_echo_n "checking whether tanh preserves the sign of zero... " >&6; } -if ${ac_cv_tanh_preserves_zero_sign+:} false; then : - $as_echo_n "(cached) " >&6 -else - -if test "$cross_compiling" = yes; then : - ac_cv_tanh_preserves_zero_sign=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -int main() { - /* return 0 if either negative zeros don't exist - on this platform or if negative zeros exist - and tanh(-0.) == -0. */ - if (atan2(0., -1.) == atan2(-0., -1.) || - atan2(tanh(-0.), -1.) == atan2(-0., -1.)) exit(0); - else exit(1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_tanh_preserves_zero_sign=yes -else - ac_cv_tanh_preserves_zero_sign=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tanh_preserves_zero_sign" >&5 -$as_echo "$ac_cv_tanh_preserves_zero_sign" >&6; } -if test "$ac_cv_tanh_preserves_zero_sign" = yes -then - -$as_echo "#define TANH_PRESERVES_ZERO_SIGN 1" >>confdefs.h - -fi - -for ac_func in acosh asinh atanh copysign erf erfc expm1 finite gamma -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in hypot lgamma log1p round tgamma -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -ac_fn_c_check_decl "$LINENO" "isinf" "ac_cv_have_decl_isinf" "#include -" -if test "x$ac_cv_have_decl_isinf" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_ISINF $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "isnan" "ac_cv_have_decl_isnan" "#include -" -if test "x$ac_cv_have_decl_isnan" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_ISNAN $ac_have_decl -_ACEOF -ac_fn_c_check_decl "$LINENO" "isfinite" "ac_cv_have_decl_isfinite" "#include -" -if test "x$ac_cv_have_decl_isfinite" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_ISFINITE $ac_have_decl -_ACEOF - - -LIBS=$LIBS_SAVE - -# For multiprocessing module, check that sem_open -# actually works. For FreeBSD versions <= 7.2, -# the kernel module that provides POSIX semaphores -# isn't loaded by default, so an attempt to call -# sem_open results in a 'Signal 12' error. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether POSIX semaphores are enabled" >&5 -$as_echo_n "checking whether POSIX semaphores are enabled... " >&6; } -if ${ac_cv_posix_semaphores_enabled+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_posix_semaphores_enabled=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include -#include - -int main(void) { - sem_t *a = sem_open("/autoconf", O_CREAT, S_IRUSR|S_IWUSR, 0); - if (a == SEM_FAILED) { - perror("sem_open"); - return 1; - } - sem_close(a); - sem_unlink("/autoconf"); - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_posix_semaphores_enabled=yes -else - ac_cv_posix_semaphores_enabled=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_posix_semaphores_enabled" >&5 -$as_echo "$ac_cv_posix_semaphores_enabled" >&6; } -if test $ac_cv_posix_semaphores_enabled = no -then - -$as_echo "#define POSIX_SEMAPHORES_NOT_ENABLED 1" >>confdefs.h - -fi - -# Multiprocessing check for broken sem_getvalue -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken sem_getvalue" >&5 -$as_echo_n "checking for broken sem_getvalue... " >&6; } -if ${ac_cv_broken_sem_getvalue+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_broken_sem_getvalue=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include -#include -#include - -int main(void){ - sem_t *a = sem_open("/autocftw", O_CREAT, S_IRUSR|S_IWUSR, 0); - int count; - int res; - if(a==SEM_FAILED){ - perror("sem_open"); - return 1; - - } - res = sem_getvalue(a, &count); - sem_close(a); - sem_unlink("/autocftw"); - return res==-1 ? 1 : 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_broken_sem_getvalue=no -else - ac_cv_broken_sem_getvalue=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_sem_getvalue" >&5 -$as_echo "$ac_cv_broken_sem_getvalue" >&6; } -if test $ac_cv_broken_sem_getvalue = yes -then - -$as_echo "#define HAVE_BROKEN_SEM_GETVALUE 1" >>confdefs.h - -fi - -# determine what size digit to use for Python's longs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking digit size for Python's longs" >&5 -$as_echo_n "checking digit size for Python's longs... " >&6; } -# Check whether --enable-big-digits was given. -if test "${enable_big_digits+set}" = set; then : - enableval=$enable_big_digits; case $enable_big_digits in -yes) - enable_big_digits=30 ;; -no) - enable_big_digits=15 ;; -15|30) - ;; -*) - as_fn_error $? "bad value $enable_big_digits for --enable-big-digits; value should be 15 or 30" "$LINENO" 5 ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_big_digits" >&5 -$as_echo "$enable_big_digits" >&6; } - -cat >>confdefs.h <<_ACEOF -#define PYLONG_BITS_IN_DIGIT $enable_big_digits -_ACEOF - - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no value specified" >&5 -$as_echo "no value specified" >&6; } -fi - - -# check for wchar.h -ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" -if test "x$ac_cv_header_wchar_h" = xyes; then : - - -$as_echo "#define HAVE_WCHAR_H 1" >>confdefs.h - - wchar_h="yes" - -else - wchar_h="no" - -fi - - - -# determine wchar_t size -if test "$wchar_h" = yes -then - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 -$as_echo_n "checking size of wchar_t... " >&6; } -if ${ac_cv_sizeof_wchar_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "#include -"; then : - -else - if test "$ac_cv_type_wchar_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (wchar_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_wchar_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 -$as_echo "$ac_cv_sizeof_wchar_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t -_ACEOF - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for UCS-4 tcl" >&5 -$as_echo_n "checking for UCS-4 tcl... " >&6; } -have_ucs4_tcl=no -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#if TCL_UTF_MAX != 6 -# error "NOT UCS4_TCL" -#endif -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - -$as_echo "#define HAVE_UCS4_TCL 1" >>confdefs.h - - have_ucs4_tcl=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ucs4_tcl" >&5 -$as_echo "$have_ucs4_tcl" >&6; } - -# check whether wchar_t is signed or not -if test "$wchar_h" = yes -then - # check whether wchar_t is signed or not - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wchar_t is signed" >&5 -$as_echo_n "checking whether wchar_t is signed... " >&6; } - if ${ac_cv_wchar_t_signed+:} false; then : - $as_echo_n "(cached) " >&6 -else - - if test "$cross_compiling" = yes; then : - ac_cv_wchar_t_signed=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - int main() - { - /* Success: exit code 0 */ - exit((((wchar_t) -1) < ((wchar_t) 0)) ? 0 : 1); - } - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_wchar_t_signed=yes -else - ac_cv_wchar_t_signed=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_wchar_t_signed" >&5 -$as_echo "$ac_cv_wchar_t_signed" >&6; } -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what type to use for unicode" >&5 -$as_echo_n "checking what type to use for unicode... " >&6; } -# Check whether --enable-unicode was given. -if test "${enable_unicode+set}" = set; then : - enableval=$enable_unicode; -else - enable_unicode=yes -fi - - -if test $enable_unicode = yes -then - # Without any arguments, Py_UNICODE defaults to two-byte mode - case "$have_ucs4_tcl" in - yes) enable_unicode="ucs4" - ;; - *) enable_unicode="ucs2" - ;; - esac -fi - - -case "$enable_unicode" in -ucs2) unicode_size="2" - $as_echo "#define Py_UNICODE_SIZE 2" >>confdefs.h - - ;; -ucs4) unicode_size="4" - $as_echo "#define Py_UNICODE_SIZE 4" >>confdefs.h - - ;; -no) ;; # To allow --disable-unicode -*) as_fn_error $? "invalid value for --enable-unicode. Use either ucs2 or ucs4 (lowercase)." "$LINENO" 5 ;; -esac - - - - -if test "$enable_unicode" = "no" -then - UNICODE_OBJS="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not used" >&5 -$as_echo "not used" >&6; } -else - UNICODE_OBJS="Objects/unicodeobject.o Objects/unicodectype.o" - -$as_echo "#define Py_USING_UNICODE 1" >>confdefs.h - - - # wchar_t is only usable if it maps to an unsigned type - if test "$unicode_size" = "$ac_cv_sizeof_wchar_t" \ - -a "$ac_cv_wchar_t_signed" = "no" - then - PY_UNICODE_TYPE="wchar_t" - -$as_echo "#define HAVE_USABLE_WCHAR_T 1" >>confdefs.h - - $as_echo "#define PY_UNICODE_TYPE wchar_t" >>confdefs.h - - elif test "$ac_cv_sizeof_short" = "$unicode_size" - then - PY_UNICODE_TYPE="unsigned short" - $as_echo "#define PY_UNICODE_TYPE unsigned short" >>confdefs.h - - elif test "$ac_cv_sizeof_long" = "$unicode_size" - then - PY_UNICODE_TYPE="unsigned long" - $as_echo "#define PY_UNICODE_TYPE unsigned long" >>confdefs.h - - else - PY_UNICODE_TYPE="no type found" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PY_UNICODE_TYPE" >&5 -$as_echo "$PY_UNICODE_TYPE" >&6; } -fi - -# check for endianness - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main () -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main () -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_bigendian=yes -else - ac_cv_c_bigendian=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes; then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - extern int foo; - -int -main () -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_c_bigendian=no -else - ac_cv_c_bigendian=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h -;; #( - no) - ;; #( - universal) - -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "unknown endianness - presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; - esac - - -# Check whether right shifting a negative integer extends the sign bit -# or fills with zeros (like the Cray J90, according to Tim Peters). -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether right shift extends the sign bit" >&5 -$as_echo_n "checking whether right shift extends the sign bit... " >&6; } -if ${ac_cv_rshift_extends_sign+:} false; then : - $as_echo_n "(cached) " >&6 -else - -if test "$cross_compiling" = yes; then : - ac_cv_rshift_extends_sign=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main() -{ - exit(((-1)>>3 == -1) ? 0 : 1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_rshift_extends_sign=yes -else - ac_cv_rshift_extends_sign=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rshift_extends_sign" >&5 -$as_echo "$ac_cv_rshift_extends_sign" >&6; } -if test "$ac_cv_rshift_extends_sign" = no -then - -$as_echo "#define SIGNED_RIGHT_SHIFT_ZERO_FILLS 1" >>confdefs.h - -fi - -# check for getc_unlocked and related locking functions -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getc_unlocked() and friends" >&5 -$as_echo_n "checking for getc_unlocked() and friends... " >&6; } -if ${ac_cv_have_getc_unlocked+:} false; then : - $as_echo_n "(cached) " >&6 -else - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - FILE *f = fopen("/dev/null", "r"); - flockfile(f); - getc_unlocked(f); - funlockfile(f); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_have_getc_unlocked=yes -else - ac_cv_have_getc_unlocked=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getc_unlocked" >&5 -$as_echo "$ac_cv_have_getc_unlocked" >&6; } -if test "$ac_cv_have_getc_unlocked" = yes -then - -$as_echo "#define HAVE_GETC_UNLOCKED 1" >>confdefs.h - -fi - -# check where readline lives -# save the value of LIBS so we don't actually link Python with readline -LIBS_no_readline=$LIBS - -# On some systems we need to link readline to a termcap compatible -# library. NOTE: Keep the precedence of listed libraries synchronised -# with setup.py. -py_cv_lib_readline=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link readline libs" >&5 -$as_echo_n "checking how to link readline libs... " >&6; } -for py_libtermcap in "" ncursesw ncurses curses termcap; do - if test -z "$py_libtermcap"; then - READLINE_LIBS="-lreadline" - else - READLINE_LIBS="-lreadline -l$py_libtermcap" - fi - LIBS="$READLINE_LIBS $LIBS_no_readline" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char readline (); -int -main () -{ -return readline (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - py_cv_lib_readline=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test $py_cv_lib_readline = yes; then - break - fi -done -# Uncomment this line if you want to use READINE_LIBS in Makefile or scripts -#AC_SUBST([READLINE_LIBS]) -if test $py_cv_lib_readline = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINE_LIBS" >&5 -$as_echo "$READLINE_LIBS" >&6; } - -$as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h - -fi - -# check for readline 2.1 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_callback_handler_install in -lreadline" >&5 -$as_echo_n "checking for rl_callback_handler_install in -lreadline... " >&6; } -if ${ac_cv_lib_readline_rl_callback_handler_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $READLINE_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char rl_callback_handler_install (); -int -main () -{ -return rl_callback_handler_install (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_readline_rl_callback_handler_install=yes -else - ac_cv_lib_readline_rl_callback_handler_install=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_callback_handler_install" >&5 -$as_echo "$ac_cv_lib_readline_rl_callback_handler_install" >&6; } -if test "x$ac_cv_lib_readline_rl_callback_handler_install" = xyes; then : - -$as_echo "#define HAVE_RL_CALLBACK 1" >>confdefs.h - -fi - - -# check for readline 2.2 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - have_readline=yes -else - have_readline=no - -fi -rm -f conftest.err conftest.i conftest.$ac_ext -if test $have_readline = yes -then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "extern int rl_completion_append_character;" >/dev/null 2>&1; then : - -$as_echo "#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1" >>confdefs.h - -fi -rm -f conftest* - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "extern int rl_completion_suppress_append;" >/dev/null 2>&1; then : - -$as_echo "#define HAVE_RL_COMPLETION_SUPPRESS_APPEND 1" >>confdefs.h - -fi -rm -f conftest* - -fi - -# check for readline 4.0 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_pre_input_hook in -lreadline" >&5 -$as_echo_n "checking for rl_pre_input_hook in -lreadline... " >&6; } -if ${ac_cv_lib_readline_rl_pre_input_hook+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $READLINE_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char rl_pre_input_hook (); -int -main () -{ -return rl_pre_input_hook (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_readline_rl_pre_input_hook=yes -else - ac_cv_lib_readline_rl_pre_input_hook=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_pre_input_hook" >&5 -$as_echo "$ac_cv_lib_readline_rl_pre_input_hook" >&6; } -if test "x$ac_cv_lib_readline_rl_pre_input_hook" = xyes; then : - -$as_echo "#define HAVE_RL_PRE_INPUT_HOOK 1" >>confdefs.h - -fi - - -# also in 4.0 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_completion_display_matches_hook in -lreadline" >&5 -$as_echo_n "checking for rl_completion_display_matches_hook in -lreadline... " >&6; } -if ${ac_cv_lib_readline_rl_completion_display_matches_hook+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $READLINE_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char rl_completion_display_matches_hook (); -int -main () -{ -return rl_completion_display_matches_hook (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_readline_rl_completion_display_matches_hook=yes -else - ac_cv_lib_readline_rl_completion_display_matches_hook=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_display_matches_hook" >&5 -$as_echo "$ac_cv_lib_readline_rl_completion_display_matches_hook" >&6; } -if test "x$ac_cv_lib_readline_rl_completion_display_matches_hook" = xyes; then : - -$as_echo "#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1" >>confdefs.h - -fi - - -# check for readline 4.2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rl_completion_matches in -lreadline" >&5 -$as_echo_n "checking for rl_completion_matches in -lreadline... " >&6; } -if ${ac_cv_lib_readline_rl_completion_matches+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $READLINE_LIBS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char rl_completion_matches (); -int -main () -{ -return rl_completion_matches (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_readline_rl_completion_matches=yes -else - ac_cv_lib_readline_rl_completion_matches=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_completion_matches" >&5 -$as_echo "$ac_cv_lib_readline_rl_completion_matches" >&6; } -if test "x$ac_cv_lib_readline_rl_completion_matches" = xyes; then : - -$as_echo "#define HAVE_RL_COMPLETION_MATCHES 1" >>confdefs.h - -fi - - -# also in readline 4.2 -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - have_readline=yes -else - have_readline=no - -fi -rm -f conftest.err conftest.i conftest.$ac_ext -if test $have_readline = yes -then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "extern int rl_catch_signals;" >/dev/null 2>&1; then : - -$as_echo "#define HAVE_RL_CATCH_SIGNAL 1" >>confdefs.h - -fi -rm -f conftest* - -fi - -# End of readline checks: restore LIBS -LIBS=$LIBS_no_readline - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken nice()" >&5 -$as_echo_n "checking for broken nice()... " >&6; } -if ${ac_cv_broken_nice+:} false; then : - $as_echo_n "(cached) " >&6 -else - -if test "$cross_compiling" = yes; then : - ac_cv_broken_nice=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main() -{ - int val1 = nice(1); - if (val1 != -1 && val1 == nice(2)) - exit(0); - exit(1); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_broken_nice=yes -else - ac_cv_broken_nice=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_nice" >&5 -$as_echo "$ac_cv_broken_nice" >&6; } -if test "$ac_cv_broken_nice" = yes -then - -$as_echo "#define HAVE_BROKEN_NICE 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken poll()" >&5 -$as_echo_n "checking for broken poll()... " >&6; } -if ${ac_cv_broken_poll+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_broken_poll=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int main() -{ - struct pollfd poll_struct = { 42, POLLIN|POLLPRI|POLLOUT, 0 }; - int poll_test; - - close (42); - - poll_test = poll(&poll_struct, 1, 0); - if (poll_test < 0) - return 0; - else if (poll_test == 0 && poll_struct.revents != POLLNVAL) - return 0; - else - return 1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_broken_poll=yes -else - ac_cv_broken_poll=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_broken_poll" >&5 -$as_echo "$ac_cv_broken_poll" >&6; } -if test "$ac_cv_broken_poll" = yes -then - -$as_echo "#define HAVE_BROKEN_POLL 1" >>confdefs.h - -fi - -# Before we can test tzset, we need to check if struct tm has a tm_zone -# (which is not required by ISO C or UNIX spec) and/or if we support -# tzname[] -ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include -#include <$ac_cv_struct_tm> - -" -if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 1 -_ACEOF - - -fi - -if test "$ac_cv_member_struct_tm_tm_zone" = yes; then - -$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h - -else - ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include -" -if test "x$ac_cv_have_decl_tzname" = xyes; then : - ac_have_decl=1 -else - ac_have_decl=0 -fi - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME $ac_have_decl -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 -$as_echo_n "checking for tzname... " >&6; } -if ${ac_cv_var_tzname+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#if !HAVE_DECL_TZNAME -extern char *tzname[]; -#endif - -int -main () -{ -return tzname[0][0]; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_var_tzname=yes -else - ac_cv_var_tzname=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 -$as_echo "$ac_cv_var_tzname" >&6; } - if test $ac_cv_var_tzname = yes; then - -$as_echo "#define HAVE_TZNAME 1" >>confdefs.h - - fi -fi - - -# check tzset(3) exists and works like we expect it to -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working tzset()" >&5 -$as_echo_n "checking for working tzset()... " >&6; } -if ${ac_cv_working_tzset+:} false; then : - $as_echo_n "(cached) " >&6 -else - -if test "$cross_compiling" = yes; then : - ac_cv_working_tzset=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include - -#if HAVE_TZNAME -extern char *tzname[]; -#endif - -int main() -{ - /* Note that we need to ensure that not only does tzset(3) - do 'something' with localtime, but it works as documented - in the library reference and as expected by the test suite. - This includes making sure that tzname is set properly if - tm->tm_zone does not exist since it is the alternative way - of getting timezone info. - - Red Hat 6.2 doesn't understand the southern hemisphere - after New Year's Day. - */ - - time_t groundhogday = 1044144000; /* GMT-based */ - time_t midyear = groundhogday + (365 * 24 * 3600 / 2); - - putenv("TZ=UTC+0"); - tzset(); - if (localtime(&groundhogday)->tm_hour != 0) - exit(1); -#if HAVE_TZNAME - /* For UTC, tzname[1] is sometimes "", sometimes " " */ - if (strcmp(tzname[0], "UTC") || - (tzname[1][0] != 0 && tzname[1][0] != ' ')) - exit(1); -#endif - - putenv("TZ=EST+5EDT,M4.1.0,M10.5.0"); - tzset(); - if (localtime(&groundhogday)->tm_hour != 19) - exit(1); -#if HAVE_TZNAME - if (strcmp(tzname[0], "EST") || strcmp(tzname[1], "EDT")) - exit(1); -#endif - - putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0"); - tzset(); - if (localtime(&groundhogday)->tm_hour != 11) - exit(1); -#if HAVE_TZNAME - if (strcmp(tzname[0], "AEST") || strcmp(tzname[1], "AEDT")) - exit(1); -#endif - -#if HAVE_STRUCT_TM_TM_ZONE - if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT")) - exit(1); - if (strcmp(localtime(&midyear)->tm_zone, "AEST")) - exit(1); -#endif - - exit(0); -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_working_tzset=yes -else - ac_cv_working_tzset=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_tzset" >&5 -$as_echo "$ac_cv_working_tzset" >&6; } -if test "$ac_cv_working_tzset" = yes -then - -$as_echo "#define HAVE_WORKING_TZSET 1" >>confdefs.h - -fi - -# Look for subsecond timestamps in struct stat -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tv_nsec in struct stat" >&5 -$as_echo_n "checking for tv_nsec in struct stat... " >&6; } -if ${ac_cv_stat_tv_nsec+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -struct stat st; -st.st_mtim.tv_nsec = 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_stat_tv_nsec=yes -else - ac_cv_stat_tv_nsec=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_stat_tv_nsec" >&5 -$as_echo "$ac_cv_stat_tv_nsec" >&6; } -if test "$ac_cv_stat_tv_nsec" = yes -then - -$as_echo "#define HAVE_STAT_TV_NSEC 1" >>confdefs.h - -fi - -# Look for BSD style subsecond timestamps in struct stat -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tv_nsec2 in struct stat" >&5 -$as_echo_n "checking for tv_nsec2 in struct stat... " >&6; } -if ${ac_cv_stat_tv_nsec2+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - -struct stat st; -st.st_mtimespec.tv_nsec = 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_stat_tv_nsec2=yes -else - ac_cv_stat_tv_nsec2=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_stat_tv_nsec2" >&5 -$as_echo "$ac_cv_stat_tv_nsec2" >&6; } -if test "$ac_cv_stat_tv_nsec2" = yes -then - -$as_echo "#define HAVE_STAT_TV_NSEC2 1" >>confdefs.h - -fi - -# On HP/UX 11.0, mvwdelch is a block with a return statement -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mvwdelch is an expression" >&5 -$as_echo_n "checking whether mvwdelch is an expression... " >&6; } -if ${ac_cv_mvwdelch_is_expression+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - int rtn; - rtn = mvwdelch(0,0,0); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_mvwdelch_is_expression=yes -else - ac_cv_mvwdelch_is_expression=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mvwdelch_is_expression" >&5 -$as_echo "$ac_cv_mvwdelch_is_expression" >&6; } - -if test "$ac_cv_mvwdelch_is_expression" = yes -then - -$as_echo "#define MVWDELCH_IS_EXPRESSION 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether WINDOW has _flags" >&5 -$as_echo_n "checking whether WINDOW has _flags... " >&6; } -if ${ac_cv_window_has_flags+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ - - WINDOW *w; - w->_flags = 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_window_has_flags=yes -else - ac_cv_window_has_flags=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_window_has_flags" >&5 -$as_echo "$ac_cv_window_has_flags" >&6; } - - -if test "$ac_cv_window_has_flags" = yes -then - -$as_echo "#define WINDOW_HAS_FLAGS 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_term_resized" >&5 -$as_echo_n "checking for is_term_resized... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=is_term_resized - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_CURSES_IS_TERM_RESIZED 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for resize_term" >&5 -$as_echo_n "checking for resize_term... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=resize_term - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_CURSES_RESIZE_TERM 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for resizeterm" >&5 -$as_echo_n "checking for resizeterm... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -void *x=resizeterm - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -$as_echo "#define HAVE_CURSES_RESIZETERM 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for device files" >&5 -$as_echo "$as_me: checking for device files" >&6;} - -if test "x$cross_compiling" = xyes; then - if test "${ac_cv_file__dev_ptmx+set}" != set; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/ptmx" >&5 -$as_echo_n "checking for /dev/ptmx... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not set" >&5 -$as_echo "not set" >&6; } - as_fn_error $? "set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling" "$LINENO" 5 - fi - if test "${ac_cv_file__dev_ptc+set}" != set; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5 -$as_echo_n "checking for /dev/ptc... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not set" >&5 -$as_echo "not set" >&6; } - as_fn_error $? "set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling" "$LINENO" 5 - fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/ptmx" >&5 -$as_echo_n "checking for /dev/ptmx... " >&6; } -if ${ac_cv_file__dev_ptmx+:} false; then : - $as_echo_n "(cached) " >&6 -else - test "$cross_compiling" = yes && - as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 -if test -r "/dev/ptmx"; then - ac_cv_file__dev_ptmx=yes -else - ac_cv_file__dev_ptmx=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_ptmx" >&5 -$as_echo "$ac_cv_file__dev_ptmx" >&6; } -if test "x$ac_cv_file__dev_ptmx" = xyes; then : - -fi - -if test "x$ac_cv_file__dev_ptmx" = xyes; then - -$as_echo "#define HAVE_DEV_PTMX 1" >>confdefs.h - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5 -$as_echo_n "checking for /dev/ptc... " >&6; } -if ${ac_cv_file__dev_ptc+:} false; then : - $as_echo_n "(cached) " >&6 -else - test "$cross_compiling" = yes && - as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 -if test -r "/dev/ptc"; then - ac_cv_file__dev_ptc=yes -else - ac_cv_file__dev_ptc=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_ptc" >&5 -$as_echo "$ac_cv_file__dev_ptc" >&6; } -if test "x$ac_cv_file__dev_ptc" = xyes; then : - -fi - -if test "x$ac_cv_file__dev_ptc" = xyes; then - -$as_echo "#define HAVE_DEV_PTC 1" >>confdefs.h - -fi - -if test "$have_long_long" = yes -then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for %lld and %llu printf() format support" >&5 -$as_echo_n "checking for %lld and %llu printf() format support... " >&6; } - if ${ac_cv_have_long_long_format+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_have_long_long_format="cross -- assuming no" - if test x$GCC = xyes; then - save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -Werror -Wformat" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - -int -main () -{ - - char *buffer; - sprintf(buffer, "%lld", (long long)123); - sprintf(buffer, "%lld", (long long)-123); - sprintf(buffer, "%llu", (unsigned long long)123); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_have_long_long_format=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS=$save_CFLAGS - fi -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - #include - - #ifdef HAVE_SYS_TYPES_H - #include - #endif - - int main() - { - char buffer[256]; - - if (sprintf(buffer, "%lld", (long long)123) < 0) - return 1; - if (strcmp(buffer, "123")) - return 1; - - if (sprintf(buffer, "%lld", (long long)-123) < 0) - return 1; - if (strcmp(buffer, "-123")) - return 1; - - if (sprintf(buffer, "%llu", (unsigned long long)123) < 0) - return 1; - if (strcmp(buffer, "123")) - return 1; - - return 0; - } - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_have_long_long_format=yes -else - ac_cv_have_long_long_format=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_long_long_format" >&5 -$as_echo "$ac_cv_have_long_long_format" >&6; } -fi - -if test "$ac_cv_have_long_long_format" = yes -then - -$as_echo "#define PY_FORMAT_LONG_LONG \"ll\"" >>confdefs.h - -fi - -if test $ac_sys_system = Darwin -then - LIBS="$LIBS -framework CoreFoundation" -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for %zd printf() format support" >&5 -$as_echo_n "checking for %zd printf() format support... " >&6; } -if ${ac_cv_have_size_t_format+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_have_size_t_format="cross -- assuming yes" - -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -#include - -#ifdef HAVE_SYS_TYPES_H -#include -#endif - -#ifdef HAVE_SSIZE_T -typedef ssize_t Py_ssize_t; -#elif SIZEOF_VOID_P == SIZEOF_LONG -typedef long Py_ssize_t; -#else -typedef int Py_ssize_t; -#endif - -int main() -{ - char buffer[256]; - - if(sprintf(buffer, "%zd", (size_t)123) < 0) - return 1; - - if (strcmp(buffer, "123")) - return 1; - - if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0) - return 1; - - if (strcmp(buffer, "-123")) - return 1; - - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_have_size_t_format=yes -else - ac_cv_have_size_t_format=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_size_t_format" >&5 -$as_echo "$ac_cv_have_size_t_format" >&6; } -if test "$ac_cv_have_size_t_format" != no ; then - -$as_echo "#define PY_FORMAT_SIZE_T \"z\"" >>confdefs.h - -fi - -ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_type_socklen_t" = xyes; then : - -else - -$as_echo "#define socklen_t int" >>confdefs.h - -fi - - -case $ac_sys_system in -AIX*) - -$as_echo "#define HAVE_BROKEN_PIPE_BUF 1" >>confdefs.h - ;; -esac - - - - -for h in `(cd $srcdir;echo Python/thread_*.h)` -do - THREADHEADERS="$THREADHEADERS \$(srcdir)/$h" -done - - -SRCDIRS="Parser Grammar Objects Python Modules Mac" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for build directories" >&5 -$as_echo_n "checking for build directories... " >&6; } -for dir in $SRCDIRS; do - if test ! -d $dir; then - mkdir $dir - fi -done -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } - -# generate output files -ac_config_files="$ac_config_files Makefile.pre Modules/Setup.config Misc/python.pc" - -ac_config_files="$ac_config_files Modules/ld_so_aix" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by python $as_me 2.7, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -python config.status 2.7 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "pyconfig.h") CONFIG_HEADERS="$CONFIG_HEADERS pyconfig.h" ;; - "Mac/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/Makefile" ;; - "Mac/PythonLauncher/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/PythonLauncher/Makefile" ;; - "Mac/IDLE/Makefile") CONFIG_FILES="$CONFIG_FILES Mac/IDLE/Makefile" ;; - "Mac/Resources/framework/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/framework/Info.plist" ;; - "Mac/Resources/app/Info.plist") CONFIG_FILES="$CONFIG_FILES Mac/Resources/app/Info.plist" ;; - "Makefile.pre") CONFIG_FILES="$CONFIG_FILES Makefile.pre" ;; - "Modules/Setup.config") CONFIG_FILES="$CONFIG_FILES Modules/Setup.config" ;; - "Misc/python.pc") CONFIG_FILES="$CONFIG_FILES Misc/python.pc" ;; - "Modules/ld_so_aix") CONFIG_FILES="$CONFIG_FILES Modules/ld_so_aix" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi - ;; - - - esac - - - case $ac_file$ac_mode in - "Modules/ld_so_aix":F) chmod +x Modules/ld_so_aix ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -echo "creating Modules/Setup" -if test ! -f Modules/Setup -then - cp $srcdir/Modules/Setup.dist Modules/Setup -fi - -echo "creating Modules/Setup.local" -if test ! -f Modules/Setup.local -then - echo "# Edit this file for local setup changes" >Modules/Setup.local -fi - -echo "creating Makefile" -$SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \ - -s Modules Modules/Setup.config \ - Modules/Setup.local Modules/Setup - -case $ac_sys_system in -BeOS) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: - - Support for BeOS is deprecated as of Python 2.6. - See PEP 11 for the gory details. - " >&5 -$as_echo "$as_me: WARNING: - - Support for BeOS is deprecated as of Python 2.6. - See PEP 11 for the gory details. - " >&2;} - ;; -*) ;; -esac - -mv config.c Modules diff --git a/configure.ac b/configure.ac index 979ed876..c170926c 100644 --- a/configure.ac +++ b/configure.ac @@ -4525,6 +4525,12 @@ AIX*) AC_DEFINE(HAVE_BROKEN_PIPE_BUF, 1, [Define if the system reports an invalid PIPE_BUF value.]) ;; esac +case $host_os in +os2-emx) + AC_DEFINE(PYOS_OS2, 1, [Define to 1 when building on OS/2.]) + AC_DEFINE(PYCC_GCC, 1, [Define to 1 when building on OS/2 with GCC.]) + ;; +esac AC_SUBST(THREADHEADERS) diff --git a/pyconfig.h.in b/pyconfig.h.in deleted file mode 100644 index d2ee3594..00000000 --- a/pyconfig.h.in +++ /dev/null @@ -1,1278 +0,0 @@ -/* pyconfig.h.in. Generated from configure.ac by autoheader. */ - - -#ifndef Py_PYCONFIG_H -#define Py_PYCONFIG_H - - -/* Define if building universal (internal helper macro) */ -#undef AC_APPLE_UNIVERSAL_BUILD - -/* Define for AIX if your compiler is a genuine IBM xlC/xlC_r and you want - support for AIX C++ shared extension modules. */ -#undef AIX_GENUINE_CPLUSPLUS - -/* Define this if you have AtheOS threads. */ -#undef ATHEOS_THREADS - -/* Define this if you have BeOS threads. */ -#undef BEOS_THREADS - -/* Define if you have the Mach cthreads package */ -#undef C_THREADS - -/* Define if C doubles are 64-bit IEEE 754 binary format, stored in ARM - mixed-endian order (byte order 45670123) */ -#undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 - -/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the most - significant byte first */ -#undef DOUBLE_IS_BIG_ENDIAN_IEEE754 - -/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the - least significant byte first */ -#undef DOUBLE_IS_LITTLE_ENDIAN_IEEE754 - -/* Define if --enable-ipv6 is specified */ -#undef ENABLE_IPV6 - -/* Define if flock needs to be linked with bsd library. */ -#undef FLOCK_NEEDS_LIBBSD - -/* Define if getpgrp() must be called as getpgrp(0). */ -#undef GETPGRP_HAVE_ARG - -/* Define if gettimeofday() does not have second (timezone) argument This is - the case on Motorola V4 (R40V4.2) */ -#undef GETTIMEOFDAY_NO_TZ - -/* Define to 1 if you have the `acosh' function. */ -#undef HAVE_ACOSH - -/* struct addrinfo (netdb.h) */ -#undef HAVE_ADDRINFO - -/* Define to 1 if you have the `alarm' function. */ -#undef HAVE_ALARM - -/* Define to 1 if you have the header file. */ -#undef HAVE_ALLOCA_H - -/* Define this if your time.h defines altzone. */ -#undef HAVE_ALTZONE - -/* Define to 1 if you have the `asinh' function. */ -#undef HAVE_ASINH - -/* Define to 1 if you have the header file. */ -#undef HAVE_ASM_TYPES_H - -/* Define to 1 if you have the `atanh' function. */ -#undef HAVE_ATANH - -/* Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3))) */ -#undef HAVE_ATTRIBUTE_FORMAT_PARSETUPLE - -/* Define to 1 if you have the `bind_textdomain_codeset' function. */ -#undef HAVE_BIND_TEXTDOMAIN_CODESET - -/* Define to 1 if you have the header file. */ -#undef HAVE_BLUETOOTH_BLUETOOTH_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_BLUETOOTH_H - -/* Define if nice() returns success/failure instead of the new priority. */ -#undef HAVE_BROKEN_NICE - -/* Define if the system reports an invalid PIPE_BUF value. */ -#undef HAVE_BROKEN_PIPE_BUF - -/* Define if poll() sets errno on invalid file descriptors. */ -#undef HAVE_BROKEN_POLL - -/* Define if the Posix semaphores do not work on your system */ -#undef HAVE_BROKEN_POSIX_SEMAPHORES - -/* Define if pthread_sigmask() does not work on your system. */ -#undef HAVE_BROKEN_PTHREAD_SIGMASK - -/* define to 1 if your sem_getvalue is broken. */ -#undef HAVE_BROKEN_SEM_GETVALUE - -/* Define if `unsetenv` does not return an int. */ -#undef HAVE_BROKEN_UNSETENV - -/* Define this if you have the type _Bool. */ -#undef HAVE_C99_BOOL - -/* Define to 1 if you have the 'chflags' function. */ -#undef HAVE_CHFLAGS - -/* Define to 1 if you have the `chown' function. */ -#undef HAVE_CHOWN - -/* Define if you have the 'chroot' function. */ -#undef HAVE_CHROOT - -/* Define to 1 if you have the `clock' function. */ -#undef HAVE_CLOCK - -/* Define to 1 if you have the `confstr' function. */ -#undef HAVE_CONFSTR - -/* Define to 1 if you have the header file. */ -#undef HAVE_CONIO_H - -/* Define to 1 if you have the `copysign' function. */ -#undef HAVE_COPYSIGN - -/* Define to 1 if you have the `ctermid' function. */ -#undef HAVE_CTERMID - -/* Define if you have the 'ctermid_r' function. */ -#undef HAVE_CTERMID_R - -/* Define to 1 if you have the header file. */ -#undef HAVE_CURSES_H - -/* Define if you have the 'is_term_resized' function. */ -#undef HAVE_CURSES_IS_TERM_RESIZED - -/* Define if you have the 'resizeterm' function. */ -#undef HAVE_CURSES_RESIZETERM - -/* Define if you have the 'resize_term' function. */ -#undef HAVE_CURSES_RESIZE_TERM - -/* Define to 1 if you have the declaration of `isfinite', and to 0 if you - don't. */ -#undef HAVE_DECL_ISFINITE - -/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. - */ -#undef HAVE_DECL_ISINF - -/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. - */ -#undef HAVE_DECL_ISNAN - -/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. - */ -#undef HAVE_DECL_TZNAME - -/* Define to 1 if you have the device macros. */ -#undef HAVE_DEVICE_MACROS - -/* Define to 1 if you have the /dev/ptc device file. */ -#undef HAVE_DEV_PTC - -/* Define to 1 if you have the /dev/ptmx device file. */ -#undef HAVE_DEV_PTMX - -/* Define to 1 if you have the header file. */ -#undef HAVE_DIRECT_H - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_DIRENT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the `dlopen' function. */ -#undef HAVE_DLOPEN - -/* Define to 1 if you have the `dup2' function. */ -#undef HAVE_DUP2 - -/* Defined when any dynamic module loading is enabled. */ -#undef HAVE_DYNAMIC_LOADING - -/* Define if you have the 'epoll' functions. */ -#undef HAVE_EPOLL - -/* Define to 1 if you have the `erf' function. */ -#undef HAVE_ERF - -/* Define to 1 if you have the `erfc' function. */ -#undef HAVE_ERFC - -/* Define to 1 if you have the header file. */ -#undef HAVE_ERRNO_H - -/* Define to 1 if you have the `execv' function. */ -#undef HAVE_EXECV - -/* Define to 1 if you have the `expm1' function. */ -#undef HAVE_EXPM1 - -/* Define if you have the 'fchdir' function. */ -#undef HAVE_FCHDIR - -/* Define to 1 if you have the `fchmod' function. */ -#undef HAVE_FCHMOD - -/* Define to 1 if you have the `fchown' function. */ -#undef HAVE_FCHOWN - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define if you have the 'fdatasync' function. */ -#undef HAVE_FDATASYNC - -/* Define to 1 if you have the `finite' function. */ -#undef HAVE_FINITE - -/* Define to 1 if you have the `flock' function. */ -#undef HAVE_FLOCK - -/* Define to 1 if you have the `fork' function. */ -#undef HAVE_FORK - -/* Define to 1 if you have the `forkpty' function. */ -#undef HAVE_FORKPTY - -/* Define to 1 if you have the `fpathconf' function. */ -#undef HAVE_FPATHCONF - -/* Define to 1 if you have the `fseek64' function. */ -#undef HAVE_FSEEK64 - -/* Define to 1 if you have the `fseeko' function. */ -#undef HAVE_FSEEKO - -/* Define to 1 if you have the `fstatvfs' function. */ -#undef HAVE_FSTATVFS - -/* Define if you have the 'fsync' function. */ -#undef HAVE_FSYNC - -/* Define to 1 if you have the `ftell64' function. */ -#undef HAVE_FTELL64 - -/* Define to 1 if you have the `ftello' function. */ -#undef HAVE_FTELLO - -/* Define to 1 if you have the `ftime' function. */ -#undef HAVE_FTIME - -/* Define to 1 if you have the `ftruncate' function. */ -#undef HAVE_FTRUNCATE - -/* Define to 1 if you have the `gai_strerror' function. */ -#undef HAVE_GAI_STRERROR - -/* Define to 1 if you have the `gamma' function. */ -#undef HAVE_GAMMA - -/* Define if we can use gcc inline assembler to get and set x87 control word - */ -#undef HAVE_GCC_ASM_FOR_X87 - -/* Define if you have the getaddrinfo function. */ -#undef HAVE_GETADDRINFO - -/* Define to 1 if you have the `getcwd' function. */ -#undef HAVE_GETCWD - -/* Define this if you have flockfile(), getc_unlocked(), and funlockfile() */ -#undef HAVE_GETC_UNLOCKED - -/* Define to 1 if you have the `getgroups' function. */ -#undef HAVE_GETGROUPS - -/* Define to 1 if you have the `gethostbyname' function. */ -#undef HAVE_GETHOSTBYNAME - -/* Define this if you have some version of gethostbyname_r() */ -#undef HAVE_GETHOSTBYNAME_R - -/* Define this if you have the 3-arg version of gethostbyname_r(). */ -#undef HAVE_GETHOSTBYNAME_R_3_ARG - -/* Define this if you have the 5-arg version of gethostbyname_r(). */ -#undef HAVE_GETHOSTBYNAME_R_5_ARG - -/* Define this if you have the 6-arg version of gethostbyname_r(). */ -#undef HAVE_GETHOSTBYNAME_R_6_ARG - -/* Define to 1 if you have the `getitimer' function. */ -#undef HAVE_GETITIMER - -/* Define to 1 if you have the `getloadavg' function. */ -#undef HAVE_GETLOADAVG - -/* Define to 1 if you have the `getlogin' function. */ -#undef HAVE_GETLOGIN - -/* Define to 1 if you have the `getnameinfo' function. */ -#undef HAVE_GETNAMEINFO - -/* Define if you have the 'getpagesize' function. */ -#undef HAVE_GETPAGESIZE - -/* Define to 1 if you have the `getpeername' function. */ -#undef HAVE_GETPEERNAME - -/* Define to 1 if you have the `getpgid' function. */ -#undef HAVE_GETPGID - -/* Define to 1 if you have the `getpgrp' function. */ -#undef HAVE_GETPGRP - -/* Define to 1 if you have the `getpid' function. */ -#undef HAVE_GETPID - -/* Define to 1 if you have the `getpriority' function. */ -#undef HAVE_GETPRIORITY - -/* Define to 1 if you have the `getpwent' function. */ -#undef HAVE_GETPWENT - -/* Define to 1 if you have the `getresgid' function. */ -#undef HAVE_GETRESGID - -/* Define to 1 if you have the `getresuid' function. */ -#undef HAVE_GETRESUID - -/* Define to 1 if you have the `getsid' function. */ -#undef HAVE_GETSID - -/* Define to 1 if you have the `getspent' function. */ -#undef HAVE_GETSPENT - -/* Define to 1 if you have the `getspnam' function. */ -#undef HAVE_GETSPNAM - -/* Define to 1 if you have the `gettimeofday' function. */ -#undef HAVE_GETTIMEOFDAY - -/* Define to 1 if you have the `getwd' function. */ -#undef HAVE_GETWD - -/* Define to 1 if you have the header file. */ -#undef HAVE_GRP_H - -/* Define if you have the 'hstrerror' function. */ -#undef HAVE_HSTRERROR - -/* Define to 1 if you have the `hypot' function. */ -#undef HAVE_HYPOT - -/* Define to 1 if you have the header file. */ -#undef HAVE_IEEEFP_H - -/* Define if you have the 'inet_aton' function. */ -#undef HAVE_INET_ATON - -/* Define if you have the 'inet_pton' function. */ -#undef HAVE_INET_PTON - -/* Define to 1 if you have the `initgroups' function. */ -#undef HAVE_INITGROUPS - -/* Define if your compiler provides int32_t. */ -#undef HAVE_INT32_T - -/* Define if your compiler provides int64_t. */ -#undef HAVE_INT64_T - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_IO_H - -/* Define to 1 if you have the `kill' function. */ -#undef HAVE_KILL - -/* Define to 1 if you have the `killpg' function. */ -#undef HAVE_KILLPG - -/* Define if you have the 'kqueue' functions. */ -#undef HAVE_KQUEUE - -/* Define to 1 if you have the header file. */ -#undef HAVE_LANGINFO_H - -/* Defined to enable large file support when an off_t is bigger than a long - and long long is available and at least as big as an off_t. You may need to - add some flags for configuration and compilation to enable this mode. (For - Solaris and Linux, the necessary defines are already defined.) */ -#undef HAVE_LARGEFILE_SUPPORT - -/* Define to 1 if you have the 'lchflags' function. */ -#undef HAVE_LCHFLAGS - -/* Define to 1 if you have the `lchmod' function. */ -#undef HAVE_LCHMOD - -/* Define to 1 if you have the `lchown' function. */ -#undef HAVE_LCHOWN - -/* Define to 1 if you have the `lgamma' function. */ -#undef HAVE_LGAMMA - -/* Define to 1 if you have the `dl' library (-ldl). */ -#undef HAVE_LIBDL - -/* Define to 1 if you have the `dld' library (-ldld). */ -#undef HAVE_LIBDLD - -/* Define to 1 if you have the `ieee' library (-lieee). */ -#undef HAVE_LIBIEEE - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIBINTL_H - -/* Define if you have the readline library (-lreadline). */ -#undef HAVE_LIBREADLINE - -/* Define to 1 if you have the `resolv' library (-lresolv). */ -#undef HAVE_LIBRESOLV - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIBUTIL_H - -/* Define if you have the 'link' function. */ -#undef HAVE_LINK - -/* Define to 1 if you have the header file. */ -#undef HAVE_LINUX_NETLINK_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LINUX_TIPC_H - -/* Define to 1 if you have the `log1p' function. */ -#undef HAVE_LOG1P - -/* Define this if you have the type long double. */ -#undef HAVE_LONG_DOUBLE - -/* Define this if you have the type long long. */ -#undef HAVE_LONG_LONG - -/* Define to 1 if you have the `lstat' function. */ -#undef HAVE_LSTAT - -/* Define this if you have the makedev macro. */ -#undef HAVE_MAKEDEV - -/* Define to 1 if you have the `memmove' function. */ -#undef HAVE_MEMMOVE - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `mkfifo' function. */ -#undef HAVE_MKFIFO - -/* Define to 1 if you have the `mknod' function. */ -#undef HAVE_MKNOD - -/* Define to 1 if you have the `mktime' function. */ -#undef HAVE_MKTIME - -/* Define to 1 if you have the `mremap' function. */ -#undef HAVE_MREMAP - -/* Define to 1 if you have the header file. */ -#undef HAVE_NCURSES_H - -/* Define to 1 if you have the header file, and it defines `DIR'. */ -#undef HAVE_NDIR_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_NETPACKET_PACKET_H - -/* Define to 1 if you have the `nice' function. */ -#undef HAVE_NICE - -/* Define to 1 if you have the `openpty' function. */ -#undef HAVE_OPENPTY - -/* Define if compiling using MacOS X 10.5 SDK or later. */ -#undef HAVE_OSX105_SDK - -/* Define to 1 if you have the `pathconf' function. */ -#undef HAVE_PATHCONF - -/* Define to 1 if you have the `pause' function. */ -#undef HAVE_PAUSE - -/* Define to 1 if you have the `plock' function. */ -#undef HAVE_PLOCK - -/* Define to 1 if you have the `poll' function. */ -#undef HAVE_POLL - -/* Define to 1 if you have the header file. */ -#undef HAVE_POLL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_PROCESS_H - -/* Define if your compiler supports function prototype */ -#undef HAVE_PROTOTYPES - -/* Define if you have GNU PTH threads. */ -#undef HAVE_PTH - -/* Define to 1 if you have the `pthread_atfork' function. */ -#undef HAVE_PTHREAD_ATFORK - -/* Defined for Solaris 2.6 bug in pthread header. */ -#undef HAVE_PTHREAD_DESTRUCTOR - -/* Define to 1 if you have the header file. */ -#undef HAVE_PTHREAD_H - -/* Define to 1 if you have the `pthread_init' function. */ -#undef HAVE_PTHREAD_INIT - -/* Define to 1 if you have the `pthread_sigmask' function. */ -#undef HAVE_PTHREAD_SIGMASK - -/* Define to 1 if you have the header file. */ -#undef HAVE_PTY_H - -/* Define to 1 if you have the `putenv' function. */ -#undef HAVE_PUTENV - -/* Define to 1 if you have the `readlink' function. */ -#undef HAVE_READLINK - -/* Define to 1 if you have the `realpath' function. */ -#undef HAVE_REALPATH - -/* Define if you have readline 2.1 */ -#undef HAVE_RL_CALLBACK - -/* Define if you can turn off readline's signal handling. */ -#undef HAVE_RL_CATCH_SIGNAL - -/* Define if you have readline 2.2 */ -#undef HAVE_RL_COMPLETION_APPEND_CHARACTER - -/* Define if you have readline 4.0 */ -#undef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK - -/* Define if you have readline 4.2 */ -#undef HAVE_RL_COMPLETION_MATCHES - -/* Define if you have rl_completion_suppress_append */ -#undef HAVE_RL_COMPLETION_SUPPRESS_APPEND - -/* Define if you have readline 4.0 */ -#undef HAVE_RL_PRE_INPUT_HOOK - -/* Define to 1 if you have the `round' function. */ -#undef HAVE_ROUND - -/* Define to 1 if you have the `select' function. */ -#undef HAVE_SELECT - -/* Define to 1 if you have the `sem_getvalue' function. */ -#undef HAVE_SEM_GETVALUE - -/* Define to 1 if you have the `sem_open' function. */ -#undef HAVE_SEM_OPEN - -/* Define to 1 if you have the `sem_timedwait' function. */ -#undef HAVE_SEM_TIMEDWAIT - -/* Define to 1 if you have the `sem_unlink' function. */ -#undef HAVE_SEM_UNLINK - -/* Define to 1 if you have the `setegid' function. */ -#undef HAVE_SETEGID - -/* Define to 1 if you have the `seteuid' function. */ -#undef HAVE_SETEUID - -/* Define to 1 if you have the `setgid' function. */ -#undef HAVE_SETGID - -/* Define if you have the 'setgroups' function. */ -#undef HAVE_SETGROUPS - -/* Define to 1 if you have the `setitimer' function. */ -#undef HAVE_SETITIMER - -/* Define to 1 if you have the `setlocale' function. */ -#undef HAVE_SETLOCALE - -/* Define to 1 if you have the `setpgid' function. */ -#undef HAVE_SETPGID - -/* Define to 1 if you have the `setpgrp' function. */ -#undef HAVE_SETPGRP - -/* Define to 1 if you have the `setregid' function. */ -#undef HAVE_SETREGID - -/* Define to 1 if you have the `setresgid' function. */ -#undef HAVE_SETRESGID - -/* Define to 1 if you have the `setresuid' function. */ -#undef HAVE_SETRESUID - -/* Define to 1 if you have the `setreuid' function. */ -#undef HAVE_SETREUID - -/* Define to 1 if you have the `setsid' function. */ -#undef HAVE_SETSID - -/* Define to 1 if you have the `setuid' function. */ -#undef HAVE_SETUID - -/* Define to 1 if you have the `setvbuf' function. */ -#undef HAVE_SETVBUF - -/* Define to 1 if you have the header file. */ -#undef HAVE_SHADOW_H - -/* Define to 1 if you have the `sigaction' function. */ -#undef HAVE_SIGACTION - -/* Define to 1 if you have the `siginterrupt' function. */ -#undef HAVE_SIGINTERRUPT - -/* Define to 1 if you have the header file. */ -#undef HAVE_SIGNAL_H - -/* Define to 1 if you have the `sigrelse' function. */ -#undef HAVE_SIGRELSE - -/* Define to 1 if you have the `snprintf' function. */ -#undef HAVE_SNPRINTF - -/* Define if sockaddr has sa_len member */ -#undef HAVE_SOCKADDR_SA_LEN - -/* struct sockaddr_storage (sys/socket.h) */ -#undef HAVE_SOCKADDR_STORAGE - -/* Define if you have the 'socketpair' function. */ -#undef HAVE_SOCKETPAIR - -/* Define to 1 if you have the header file. */ -#undef HAVE_SPAWN_H - -/* Define if your compiler provides ssize_t */ -#undef HAVE_SSIZE_T - -/* Define to 1 if you have the `statvfs' function. */ -#undef HAVE_STATVFS - -/* Define if you have struct stat.st_mtim.tv_nsec */ -#undef HAVE_STAT_TV_NSEC - -/* Define if you have struct stat.st_mtimensec */ -#undef HAVE_STAT_TV_NSEC2 - -/* Define if your compiler supports variable length function prototypes (e.g. - void fprintf(FILE *, char *, ...);) *and* */ -#undef HAVE_STDARG_PROTOTYPES - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the `strdup' function. */ -#undef HAVE_STRDUP - -/* Define to 1 if you have the `strftime' function. */ -#undef HAVE_STRFTIME - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STROPTS_H - -/* Define to 1 if `st_birthtime' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_BIRTHTIME - -/* Define to 1 if `st_blksize' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_BLKSIZE - -/* Define to 1 if `st_blocks' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_BLOCKS - -/* Define to 1 if `st_flags' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_FLAGS - -/* Define to 1 if `st_gen' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_GEN - -/* Define to 1 if `st_rdev' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_RDEV - -/* Define to 1 if `tm_zone' is a member of `struct tm'. */ -#undef HAVE_STRUCT_TM_TM_ZONE - -/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use - `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */ -#undef HAVE_ST_BLOCKS - -/* Define if you have the 'symlink' function. */ -#undef HAVE_SYMLINK - -/* Define to 1 if you have the `sysconf' function. */ -#undef HAVE_SYSCONF - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYSEXITS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_AUDIOIO_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_BSDTTY_H - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_SYS_DIR_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_EPOLL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_EVENT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_FILE_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_LOADAVG_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_LOCK_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_MKDEV_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_MODEM_H - -/* Define to 1 if you have the header file, and it defines `DIR'. - */ -#undef HAVE_SYS_NDIR_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_POLL_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_SELECT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_SOCKET_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STATVFS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TERMIO_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIMES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_UN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_UTSNAME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_WAIT_H - -/* Define to 1 if you have the `tcgetpgrp' function. */ -#undef HAVE_TCGETPGRP - -/* Define to 1 if you have the `tcsetpgrp' function. */ -#undef HAVE_TCSETPGRP - -/* Define to 1 if you have the `tempnam' function. */ -#undef HAVE_TEMPNAM - -/* Define to 1 if you have the header file. */ -#undef HAVE_TERMIOS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_TERM_H - -/* Define to 1 if you have the `tgamma' function. */ -#undef HAVE_TGAMMA - -/* Define to 1 if you have the header file. */ -#undef HAVE_THREAD_H - -/* Define to 1 if you have the `timegm' function. */ -#undef HAVE_TIMEGM - -/* Define to 1 if you have the `times' function. */ -#undef HAVE_TIMES - -/* Define to 1 if you have the `tmpfile' function. */ -#undef HAVE_TMPFILE - -/* Define to 1 if you have the `tmpnam' function. */ -#undef HAVE_TMPNAM - -/* Define to 1 if you have the `tmpnam_r' function. */ -#undef HAVE_TMPNAM_R - -/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use - `HAVE_STRUCT_TM_TM_ZONE' instead. */ -#undef HAVE_TM_ZONE - -/* Define to 1 if you have the `truncate' function. */ -#undef HAVE_TRUNCATE - -/* Define to 1 if you don't have `tm_zone' but do have the external array - `tzname'. */ -#undef HAVE_TZNAME - -/* Define this if you have tcl and TCL_UTF_MAX==6 */ -#undef HAVE_UCS4_TCL - -/* Define if your compiler provides uint32_t. */ -#undef HAVE_UINT32_T - -/* Define if your compiler provides uint64_t. */ -#undef HAVE_UINT64_T - -/* Define to 1 if the system has the type `uintptr_t'. */ -#undef HAVE_UINTPTR_T - -/* Define to 1 if you have the `uname' function. */ -#undef HAVE_UNAME - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if you have the `unsetenv' function. */ -#undef HAVE_UNSETENV - -/* Define if you have a useable wchar_t type defined in wchar.h; useable means - wchar_t must be an unsigned type with at least 16 bits. (see - Include/unicodeobject.h). */ -#undef HAVE_USABLE_WCHAR_T - -/* Define to 1 if you have the header file. */ -#undef HAVE_UTIL_H - -/* Define to 1 if you have the `utimes' function. */ -#undef HAVE_UTIMES - -/* Define to 1 if you have the header file. */ -#undef HAVE_UTIME_H - -/* Define to 1 if you have the `wait3' function. */ -#undef HAVE_WAIT3 - -/* Define to 1 if you have the `wait4' function. */ -#undef HAVE_WAIT4 - -/* Define to 1 if you have the `waitpid' function. */ -#undef HAVE_WAITPID - -/* Define if the compiler provides a wchar.h header file. */ -#undef HAVE_WCHAR_H - -/* Define to 1 if you have the `wcscoll' function. */ -#undef HAVE_WCSCOLL - -/* Define if tzset() actually switches the local timezone in a meaningful way. - */ -#undef HAVE_WORKING_TZSET - -/* Define if the zlib library has inflateCopy */ -#undef HAVE_ZLIB_COPY - -/* Define to 1 if you have the `_getpty' function. */ -#undef HAVE__GETPTY - -/* Define if you are using Mach cthreads directly under /include */ -#undef HURD_C_THREADS - -/* Define if you are using Mach cthreads under mach / */ -#undef MACH_C_THREADS - -/* Define to 1 if `major', `minor', and `makedev' are declared in . - */ -#undef MAJOR_IN_MKDEV - -/* Define to 1 if `major', `minor', and `makedev' are declared in - . */ -#undef MAJOR_IN_SYSMACROS - -/* Define if mvwdelch in curses.h is an expression. */ -#undef MVWDELCH_IS_EXPRESSION - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define if POSIX semaphores aren't enabled on your system */ -#undef POSIX_SEMAPHORES_NOT_ENABLED - -/* Defined if PTHREAD_SCOPE_SYSTEM supported. */ -#undef PTHREAD_SYSTEM_SCHED_SUPPORTED - -/* Define as the preferred size in bits of long digits */ -#undef PYLONG_BITS_IN_DIGIT - -/* Define to printf format modifier for long long type */ -#undef PY_FORMAT_LONG_LONG - -/* Define to printf format modifier for Py_ssize_t */ -#undef PY_FORMAT_SIZE_T - -/* Define as the integral type used for Unicode representation. */ -#undef PY_UNICODE_TYPE - -/* Define if you want to build an interpreter with many run-time checks. */ -#undef Py_DEBUG - -/* Defined if Python is built as a shared library. */ -#undef Py_ENABLE_SHARED - -/* Define as the size of the unicode type. */ -#undef Py_UNICODE_SIZE - -/* Define if you want to have a Unicode type. */ -#undef Py_USING_UNICODE - -/* assume C89 semantics that RETSIGTYPE is always void */ -#undef RETSIGTYPE - -/* Define if setpgrp() must be called as setpgrp(0, 0). */ -#undef SETPGRP_HAVE_ARG - -/* Define this to be extension of shared libraries (including the dot!). */ -#undef SHLIB_EXT - -/* Define if i>>j for signed int i does not extend the sign bit when i < 0 */ -#undef SIGNED_RIGHT_SHIFT_ZERO_FILLS - -/* The size of `double', as computed by sizeof. */ -#undef SIZEOF_DOUBLE - -/* The size of `float', as computed by sizeof. */ -#undef SIZEOF_FLOAT - -/* The size of `fpos_t', as computed by sizeof. */ -#undef SIZEOF_FPOS_T - -/* The size of `int', as computed by sizeof. */ -#undef SIZEOF_INT - -/* The size of `long', as computed by sizeof. */ -#undef SIZEOF_LONG - -/* The size of `long double', as computed by sizeof. */ -#undef SIZEOF_LONG_DOUBLE - -/* The size of `long long', as computed by sizeof. */ -#undef SIZEOF_LONG_LONG - -/* The size of `off_t', as computed by sizeof. */ -#undef SIZEOF_OFF_T - -/* The size of `pid_t', as computed by sizeof. */ -#undef SIZEOF_PID_T - -/* The size of `pthread_t', as computed by sizeof. */ -#undef SIZEOF_PTHREAD_T - -/* The size of `short', as computed by sizeof. */ -#undef SIZEOF_SHORT - -/* The size of `size_t', as computed by sizeof. */ -#undef SIZEOF_SIZE_T - -/* The size of `time_t', as computed by sizeof. */ -#undef SIZEOF_TIME_T - -/* The size of `uintptr_t', as computed by sizeof. */ -#undef SIZEOF_UINTPTR_T - -/* The size of `void *', as computed by sizeof. */ -#undef SIZEOF_VOID_P - -/* The size of `wchar_t', as computed by sizeof. */ -#undef SIZEOF_WCHAR_T - -/* The size of `_Bool', as computed by sizeof. */ -#undef SIZEOF__BOOL - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define if you can safely include both and - (which you can't on SCO ODT 3.0). */ -#undef SYS_SELECT_WITH_SYS_TIME - -/* Define if tanh(-0.) is -0., or if platform doesn't have signed zeros */ -#undef TANH_PRESERVES_ZERO_SIGN - -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - -/* Define to 1 if your declares `struct tm'. */ -#undef TM_IN_SYS_TIME - -/* Enable extensions on AIX 3, Interix. */ -#ifndef _ALL_SOURCE -# undef _ALL_SOURCE -#endif -/* Enable GNU extensions on systems that have them. */ -#ifndef _GNU_SOURCE -# undef _GNU_SOURCE -#endif -/* Enable threading extensions on Solaris. */ -#ifndef _POSIX_PTHREAD_SEMANTICS -# undef _POSIX_PTHREAD_SEMANTICS -#endif -/* Enable extensions on HP NonStop. */ -#ifndef _TANDEM_SOURCE -# undef _TANDEM_SOURCE -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ -#endif - - -/* Define if you want to use MacPython modules on MacOSX in unix-Python. */ -#undef USE_TOOLBOX_OBJECT_GLUE - -/* Define if a va_list is an array of some kind */ -#undef VA_LIST_IS_ARRAY - -/* Define if you want SIGFPE handled (see Include/pyfpe.h). */ -#undef WANT_SIGFPE_HANDLER - -/* Define if you want wctype.h functions to be used instead of the one - supplied by Python itself. (see Include/unicodectype.h). */ -#undef WANT_WCTYPE_FUNCTIONS - -/* Define if WINDOW in curses.h offers a field _flags. */ -#undef WINDOW_HAS_FLAGS - -/* Define if you want documentation strings in extension modules */ -#undef WITH_DOC_STRINGS - -/* Define if you want to use the new-style (Openstep, Rhapsody, MacOS) dynamic - linker (dyld) instead of the old-style (NextStep) dynamic linker (rld). - Dyld is necessary to support frameworks. */ -#undef WITH_DYLD - -/* Define to 1 if libintl is needed for locale functions. */ -#undef WITH_LIBINTL - -/* Define if you want to produce an OpenStep/Rhapsody framework (shared - library plus accessory files). */ -#undef WITH_NEXT_FRAMEWORK - -/* Define if you want to compile in Python-specific mallocs */ -#undef WITH_PYMALLOC - -/* Define if you want to compile in rudimentary thread support */ -#undef WITH_THREAD - -/* Define to profile with the Pentium timestamp counter */ -#undef WITH_TSC - -/* Define if you want pymalloc to be disabled when running under valgrind */ -#undef WITH_VALGRIND - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -# undef WORDS_BIGENDIAN -# endif -#endif - -/* Define if arithmetic is subject to x87-style double rounding issue */ -#undef X87_DOUBLE_ROUNDING - -/* Define on OpenBSD to activate all library features */ -#undef _BSD_SOURCE - -/* Define on Irix to enable u_int */ -#undef _BSD_TYPES - -/* Define on Darwin to activate all library features */ -#undef _DARWIN_C_SOURCE - -/* This must be set to 64 on some systems to enable large file support. */ -#undef _FILE_OFFSET_BITS - -/* Define on Linux to activate all library features */ -#undef _GNU_SOURCE - -/* This must be defined on some systems to enable large file support. */ -#undef _LARGEFILE_SOURCE - -/* This must be defined on AIX systems to enable large file support. */ -#undef _LARGE_FILES - -/* Define to 1 if on MINIX. */ -#undef _MINIX - -/* Define on NetBSD to activate all library features */ -#undef _NETBSD_SOURCE - -/* Define _OSF_SOURCE to get the makedev macro. */ -#undef _OSF_SOURCE - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to activate features from IEEE Stds 1003.1-2001 */ -#undef _POSIX_C_SOURCE - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -#undef _POSIX_SOURCE - -/* Define if you have POSIX threads, and your system does not define that. */ -#undef _POSIX_THREADS - -/* Define to force use of thread-safe errno, h_errno, and other functions */ -#undef _REENTRANT - -/* Define for Solaris 2.5.1 so the uint32_t typedef from , - , or is not used. If the typedef were allowed, the - #define below would cause a syntax error. */ -#undef _UINT32_T - -/* Define for Solaris 2.5.1 so the uint64_t typedef from , - , or is not used. If the typedef were allowed, the - #define below would cause a syntax error. */ -#undef _UINT64_T - -/* Define to the level of X/Open that your system supports */ -#undef _XOPEN_SOURCE - -/* Define to activate Unix95-and-earlier features */ -#undef _XOPEN_SOURCE_EXTENDED - -/* Define on FreeBSD to activate all library features */ -#undef __BSD_VISIBLE - -/* Define to 1 if type `char' is unsigned and you are not using gcc. */ -#ifndef __CHAR_UNSIGNED__ -# undef __CHAR_UNSIGNED__ -#endif - -/* Defined on Solaris to see additional function prototypes. */ -#undef __EXTENSIONS__ - -/* Define to 'long' if doesn't define. */ -#undef clock_t - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const - -/* Define to `int' if doesn't define. */ -#undef gid_t - -/* Define to the type of a signed integer type of width exactly 32 bits if - such a type exists and the standard includes do not define it. */ -#undef int32_t - -/* Define to the type of a signed integer type of width exactly 64 bits if - such a type exists and the standard includes do not define it. */ -#undef int64_t - -/* Define to `int' if does not define. */ -#undef mode_t - -/* Define to `long int' if does not define. */ -#undef off_t - -/* Define to `int' if does not define. */ -#undef pid_t - -/* Define to empty if the keyword does not work. */ -#undef signed - -/* Define to `unsigned int' if does not define. */ -#undef size_t - -/* Define to `int' if does not define. */ -#undef socklen_t - -/* Define to `int' if doesn't define. */ -#undef uid_t - -/* Define to the type of an unsigned integer type of width exactly 32 bits if - such a type exists and the standard includes do not define it. */ -#undef uint32_t - -/* Define to the type of an unsigned integer type of width exactly 64 bits if - such a type exists and the standard includes do not define it. */ -#undef uint64_t - -/* Define to empty if the keyword does not work. */ -#undef volatile - - -/* Define the macros needed if on a UnixWare 7.x system. */ -#if defined(__USLC__) && defined(__SCO_VERSION__) -#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ -#endif - -#if defined(__EMX__) -#define PLATFORM "os2knix" -#define PYOS_OS2 1 -#define PYCC_GCC 1 -#endif - -#endif /*Py_PYCONFIG_H*/ - From 00620b1ad7a4ca1e58eeeab6d12273b83cfe4e48 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 16:34:04 +0000 Subject: [PATCH 042/160] python: Add ignore patterns for *.pyc and generated files. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@606 978522c7-42b7-df11-88a9-00e081727c95 From 742cc89873d1695236386cc632ed39f7a5a5d8ed Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 18:20:33 +0000 Subject: [PATCH 043/160] python: Replace altsep to sep in paths returned by os.path.join. This makes the returned paths consistent and fixes failures in situations where the result is further passed to a unix shell (and similar cases). See #148 for more details. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@607 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/os2emxpath.py | 7 +++++-- Lib/os2knixpath.py | 9 ++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Lib/os2emxpath.py b/Lib/os2emxpath.py index db883d59..52e1cf0a 100644 --- a/Lib/os2emxpath.py +++ b/Lib/os2emxpath.py @@ -36,13 +36,16 @@ def normcase(s): """Normalize case of pathname. Makes all characters lowercase and all altseps into seps.""" - return s.replace('\\', '/').lower() + return s.replace(altsep, sep).lower() # Join two (or more) paths. def join(a, *p): """Join two or more pathname components, inserting sep as needed""" + + Also replace all altsep chars with sep in the returned string + to make it consistent.""" path = a for b in p: if isabs(b): @@ -51,7 +54,7 @@ def join(a, *p): path = path + b else: path = path + '/' + b - return path + return path.replace(altsep, sep) # Parse UNC paths diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index 93d6365e..c5f3373a 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -37,13 +37,16 @@ def normcase(s): """Normalize case of pathname. Makes all characters lowercase and all altseps into seps.""" - return s.replace('\\', '/').lower() + return s.replace(altsep, sep).lower() # Join two (or more) paths. def join(a, *p): - """Join two or more pathname components, inserting sep as needed""" + """Join two or more pathname components, inserting sep as needed. + + Also replaces all altsep chars with sep in the returned string + to make it consistent.""" path = a for b in p: if isabs(b): @@ -52,7 +55,7 @@ def join(a, *p): path = path + b else: path = path + '/' + b - return path + return path.replace(altsep, sep) # Parse UNC paths From 9680cede077dc90d12b1276c8c196541282d68c4 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 18:36:11 +0000 Subject: [PATCH 044/160] python: Make os.path.defpath return '$UNIXROOT/usr/bin' on OS/2 when it is set. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@608 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/os2knixpath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index c5f3373a..56394e8f 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -26,7 +26,7 @@ sep = '/' altsep = '\\' pathsep = ';' -defpath = '.;C:\\bin' +defpath = '.;' + (os.environ['UNIXROOT'] + '\\usr\\bin' if 'UNIXROOT' in os.environ else 'C:\\bin') devnull = 'nul' # Normalize the case of a pathname and map slashes to backslashes. From 8452bb866e771d6d50e8f5fa2fe356341be7918c Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 19:56:18 +0000 Subject: [PATCH 045/160] python: Fix a typo in r529. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@609 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/command/build_scripts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/distutils/command/build_scripts.py b/Lib/distutils/command/build_scripts.py index e9448159..5ce0d4b6 100644 --- a/Lib/distutils/command/build_scripts.py +++ b/Lib/distutils/command/build_scripts.py @@ -98,7 +98,7 @@ def copy_scripts (self): if os.name == "os2": executable = self.executable.replace(os.environ.get("UNIXROOT"),"/@unixroot").lower() else: - executable = sys.executable + executable = self.executable outf.write("#!%s%s\n" % (executable, post_interp)) From cacd51427252f075a67720410381ea97efc8ceef Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 21:47:58 +0000 Subject: [PATCH 046/160] python: Fix silly typo. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@610 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/os2emxpath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/os2emxpath.py b/Lib/os2emxpath.py index 52e1cf0a..cbc5bfe3 100644 --- a/Lib/os2emxpath.py +++ b/Lib/os2emxpath.py @@ -42,7 +42,7 @@ def normcase(s): # Join two (or more) paths. def join(a, *p): - """Join two or more pathname components, inserting sep as needed""" + """Join two or more pathname components, inserting sep as needed Also replace all altsep chars with sep in the returned string to make it consistent.""" From 5299c71fe543cde8c0bfe2429d815567add5d198 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 11 Dec 2015 22:23:54 +0000 Subject: [PATCH 047/160] python: Add dummy plat-os2knix directory. See README inside it for more information. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@611 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/plat-os2knix/README | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Lib/plat-os2knix/README diff --git a/Lib/plat-os2knix/README b/Lib/plat-os2knix/README new file mode 100644 index 00000000..7c236292 --- /dev/null +++ b/Lib/plat-os2knix/README @@ -0,0 +1,5 @@ +This is a dummy directory to prevent the install target from creating +it out ouf the plat-generic template which fails due to: + + a) a bug in ash that causes a crash (see http://trac.netlabs.org/ports/ticket/83) + b) plat-generic/regen not accounting for /@unixroot From b1f8c8da2f147a67f067b6926d2bd066880a988f Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Mon, 6 Jun 2016 14:48:20 +0000 Subject: [PATCH 048/160] python: generate both 8.3 and long names for pyd dynamic libraries. fixes ticket#185. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@775 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/command/build_ext.py | 5 +++-- Lib/distutils/command/install_lib.py | 2 +- Lib/distutils/emxccompiler.py | 18 ++++++++++++++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index f0a7d4ca..e08c8990 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -668,8 +668,9 @@ def get_ext_filename(self, ext_name): from distutils.sysconfig import get_config_var ext_path = string.split(ext_name, '.') # OS/2 has an 8 character module (extension) limit :-( - if os.name == "os2": - ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8] + # YD build 8.3 moved to emxcompiler.py + #if os.name == "os2": + # ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8] # extensions in debug_mode are named 'module_d.pyd' under windows so_ext = get_config_var('SO') if os.name == 'nt' and self.debug: diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py index 043e8b6e..db4107e1 100644 --- a/Lib/distutils/command/install_lib.py +++ b/Lib/distutils/command/install_lib.py @@ -112,7 +112,7 @@ def build(self): def install(self): if os.path.isdir(self.build_dir): - outfiles = self.copy_tree(self.build_dir, self.install_dir) + outfiles = self.copy_tree(self.build_dir, self.install_dir, preserve_symlinks=1) else: self.warn("'%s' does not exist -- no Python modules to install" % self.build_dir) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index bf02a321..7b6f4bca 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -106,6 +106,16 @@ def link (self, # Additional libraries libraries.extend(self.dll_libraries) + # get pyd name and extension + pyd_name8, pyd_ext = os.path.splitext( os.path.basename(output_filename)) + # if name is longer than 8.3, generate a hashed 8.3 name + if len(os.path.basename(output_filename)) > 8+1+3: + pyd_name8 = os.path.basename(output_filename)[:3] + str(reduce(lambda x,y:x+y, map(ord, output_filename)) % 65536) + + # full relative path of pyd + pyd_name = os.path.join(os.path.dirname(output_filename), + pyd_name8 + ".pyd") + # handle export symbols by creating a def-file # with executables this only works with gcc/ld as linker if ((export_symbols is not None) and @@ -129,7 +139,7 @@ def link (self, # Generate .def file contents = [ "LIBRARY %s INITINSTANCE TERMINSTANCE" % \ - os.path.splitext(os.path.basename(output_filename))[0], + pyd_name8, "DATA MULTIPLE NONSHARED", "EXPORTS"] for sym in export_symbols: @@ -156,7 +166,7 @@ def link (self, UnixCCompiler.link(self, target_desc, objects, - output_filename, + pyd_name, output_dir, libraries, library_dirs, @@ -167,6 +177,10 @@ def link (self, extra_postargs, build_temp, target_lang) + # if filename exceed 8.3, create a symlink to 8.3 pyd + if len(os.path.basename(output_filename)) > 8+1+3: + os.remove( output_filename) + os.symlink( pyd_name8 + ".pyd", output_filename) # link () From 21cb1b466ee5fde948d2dd74efb030ae5b0935b0 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Wed, 8 Jun 2016 20:36:39 +0000 Subject: [PATCH 049/160] python: remove 8.3 file name truncation, use opendir() to avoid resolving symlinks. ticket#185. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@779 978522c7-42b7-df11-88a9-00e081727c95 --- Python/import.c | 100 ++---------------------------------------------- 1 file changed, 3 insertions(+), 97 deletions(-) diff --git a/Python/import.c b/Python/import.c index 0edca04e..efdb6ae4 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1302,11 +1302,6 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf, static struct filedescr fd_builtin = {"", "", C_BUILTIN}; static struct filedescr fd_package = {"", "", PKG_DIRECTORY}; char *name; -#if defined(PYOS_OS2) - size_t saved_len; - size_t saved_namelen; - char *saved_buf = NULL; -#endif if (p_loader != NULL) *p_loader = NULL; @@ -1513,40 +1508,7 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf, } } } -#if defined(PYOS_OS2) - /* take a snapshot of the module spec for restoration - * after the 8 character DLL hackery - */ - saved_buf = strdup(buf); - saved_len = len; - saved_namelen = namelen; -#endif /* PYOS_OS2 */ for (fdp = _PyImport_Filetab; fdp->suffix != NULL; fdp++) { -#if defined(PYOS_OS2) && defined(HAVE_DYNAMIC_LOADING) - /* OS/2 limits DLLs to 8 character names (w/o - extension) - * so if the name is longer than that and its a - * dynamically loaded module we're going to try, - * truncate the name before trying - */ - if (strlen(subname) > 8) { - /* is this an attempt to load a C extension? */ - const struct filedescr *scan; - scan = _PyImport_DynLoadFiletab; - while (scan->suffix != NULL) { - if (!strcmp(scan->suffix, fdp->suffix)) - break; - else - scan++; - } - if (scan->suffix != NULL) { - /* yes, so truncate the name */ - namelen = 8; - len -= strlen(subname) - namelen; - buf[len] = '\0'; - } - } -#endif /* PYOS_OS2 */ strcpy(buf+len, fdp->suffix); if (Py_VerboseFlag > 1) PySys_WriteStderr("# trying %s\n", buf); @@ -1562,21 +1524,7 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf, fp = NULL; } } -#if defined(PYOS_OS2) - /* restore the saved snapshot */ - strcpy(buf, saved_buf); - len = saved_len; - namelen = saved_namelen; -#endif - } -#if defined(PYOS_OS2) - /* don't need/want the module name snapshot anymore */ - if (saved_buf) - { - free(saved_buf); - saved_buf = NULL; } -#endif Py_XDECREF(copy); if (fp != NULL) break; @@ -1644,7 +1592,7 @@ PyAPI_FUNC(int) _PyImport_IsScript(struct filedescr * fd) #elif defined(DJGPP) #include -#elif (defined(__MACH__) && defined(__APPLE__) || defined(__CYGWIN__)) && defined(HAVE_DIRENT_H) +#elif (defined(__MACH__) && defined(__APPLE__) || defined(__KLIBC__) || defined(__CYGWIN__)) && defined(HAVE_DIRENT_H) #include #include @@ -1704,7 +1652,8 @@ case_ok(char *buf, Py_ssize_t len, Py_ssize_t namelen, char *name) return strncmp(ffblk.ff_name, name, namelen) == 0; /* new-fangled macintosh (macosx) or Cygwin */ -#elif (defined(__MACH__) && defined(__APPLE__) || defined(__CYGWIN__)) && defined(HAVE_DIRENT_H) +/* OS/2 use opendir() because it resolves @unixroot names without resolving symlinks */ +#elif (defined(__MACH__) && defined(__APPLE__) || defined(__KLIBC__) || defined(__CYGWIN__)) && defined(HAVE_DIRENT_H) DIR *dirp; struct dirent *dp; char dirname[MAXPATHLEN + 1]; @@ -1769,49 +1718,6 @@ case_ok(char *buf, Py_ssize_t len, Py_ssize_t namelen, char *name) return 0; -/* OS/2 */ -#elif defined(__KLIBC__) - char canon[MAXPATHLEN+1]; - size_t canonlen; - char *p, *p2; - - if (Py_GETENV("PYTHONCASEOK") != NULL) - return 1; - - /* This resolves case differences and return and native OS/2 - path. Unfortunately, it'll also resolve symbolic links - while of course will screw up a bit... */ - if (!_realrealpath(buf, canon, sizeof(canon))) - return 0; - canonlen = strlen(canon); - if (canonlen < namelen) - return 0; - p = strrchr(canon, SEP); - p2 = strrchr(p ? p : canon, ALTSEP); - if (p2) - p = p2; - - return strncmp(p ? p + 1 : canon, name, namelen) == 0; - -#elif defined(PYOS_OS2) - HDIR hdir = 1; - ULONG srchcnt = 1; - FILEFINDBUF3 ffbuf; - APIRET rc; - - if (Py_GETENV("PYTHONCASEOK") != NULL) - return 1; - - rc = DosFindFirst(buf, - &hdir, - FILE_READONLY | FILE_HIDDEN | FILE_SYSTEM | FILE_DIRECTORY, - &ffbuf, sizeof(ffbuf), - &srchcnt, - FIL_STANDARD); - if (rc != NO_ERROR) - return 0; - return strncmp(ffbuf.achName, name, namelen) == 0; - /* assuming it's a case-sensitive filesystem, so there's nothing to do! */ #else return 1; From d0f3b21d451858e199fb29ca6dfb758ace095442 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Thu, 9 Jun 2016 10:36:42 +0000 Subject: [PATCH 050/160] python: fix file deletion. ticket#185. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@780 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/emxccompiler.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index 7b6f4bca..e856bcd5 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -179,7 +179,10 @@ def link (self, target_lang) # if filename exceed 8.3, create a symlink to 8.3 pyd if len(os.path.basename(output_filename)) > 8+1+3: - os.remove( output_filename) + try: + os.remove( output_filename) + except OSError: + pass os.symlink( pyd_name8 + ".pyd", output_filename) # link () From f11b41905040489ef16bc6ba5f81f18156e42c00 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Wed, 8 Feb 2017 17:40:00 +0000 Subject: [PATCH 051/160] python: remove pyconfig.h.in from ignore list. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@971 978522c7-42b7-df11-88a9-00e081727c95 From e7c7cab404dda952d778c298dda1519378268b92 Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Thu, 9 Feb 2017 16:56:27 +0000 Subject: [PATCH 052/160] python: add cx to list of std libs, improve search filter for import libs. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@977 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/distutils/emxccompiler.py | 2 +- setup.py | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index e856bcd5..e3088317 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -220,7 +220,7 @@ def object_filenames (self, # override the find_library_file method from UnixCCompiler # to deal with file naming/searching differences def find_library_file(self, dirs, lib, debug=0): - try_names = [lib + ".lib", lib + ".a", "lib" + lib + ".lib", "lib" + lib + ".a"] + try_names = [lib + ".lib", lib + ".a", "lib" + lib + ".lib", "lib" + lib + ".a", "lib" + lib + "_dll.a" ] # get EMX's default library directory search path try: diff --git a/setup.py b/setup.py index 1f9b1d67..231db1da 100644 --- a/setup.py +++ b/setup.py @@ -557,6 +557,8 @@ def detect_modules(self): # Check for MacOS X, which doesn't need libm.a at all math_libs = ['m'] + if host_platform in ['os2knix']: + math_libs.append('cx') if host_platform in ['darwin', 'beos']: math_libs = [] @@ -672,7 +674,7 @@ def detect_modules(self): # Memory-mapped files (also works on Win32). if host_platform in ['os2knix']: - exts.append( Extension('mmap', ['mmapmodule.c'], libraries=['mmap']) ) + exts.append( Extension('mmap', ['mmapmodule.c'], libraries=['cx']) ) elif host_platform not in ['atheos']: exts.append( Extension('mmap', ['mmapmodule.c']) ) else: @@ -814,7 +816,7 @@ def detect_modules(self): exts.append( Extension('_ssl', ['_ssl.c'], include_dirs = ssl_incs, library_dirs = ssl_libs, - libraries = ['ssl', 'crypto'], + libraries = ['ssl', 'crypto', 'cx'], depends = ['socketmodule.h']), ) else: missing.append('_ssl') @@ -1076,9 +1078,6 @@ class db_found(Exception): pass print "bsddb lib dir:", dblib_dir, " inc dir:", db_incdir db_incs = [db_incdir] dblibs = [dblib] - # YD add required libs - if os.name == "os2": - dblibs += ["mmap", "pthread"] # We add the runtime_library_dirs argument because the # BerkeleyDB lib we're linking against often isn't in the # system dynamic library search path. This is usually From 77f3821b9a0842462c2cdd39c891cbdf30b7322d Mon Sep 17 00:00:00 2001 From: Yuri Dario Date: Mon, 24 Apr 2017 17:53:45 +0000 Subject: [PATCH 053/160] python: remove extra quote at end of line in configure.ac. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1117 978522c7-42b7-df11-88a9-00e081727c95 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index c170926c..225beabe 100644 --- a/configure.ac +++ b/configure.ac @@ -932,7 +932,7 @@ if test $enable_shared = "yes"; then LDLIBRARY='python$(VERSION)_dll.a' BLDLIBRARY='-L. -lpython$(VERSION)' RUNSHARED=BEGINLIBPATH="'`pwd`;$BEGINLIBPATH'" - CONDENSED_VERSION=`echo "${VERSION}" | tr -d .,"` + CONDENSED_VERSION=`echo "${VERSION}" | tr -d .,` DLLLIBRARY='python$(CONDENSED_VERSION).dll' ;; From 8771f254ca63613a79b3188e18c923db6838ece1 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 26 May 2017 20:15:36 +0000 Subject: [PATCH 054/160] python: Remove excessive LDFLAGS reference on OS/2. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1150 978522c7-42b7-df11-88a9-00e081727c95 --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 225beabe..7c8da6b6 100644 --- a/configure.ac +++ b/configure.ac @@ -2087,8 +2087,8 @@ then LDSHARED="gcc -shared" LDCXXSHARED="g++ -shared";; OS/2*|os2*|*emx*) - LDSHARED="${CC} ${LDFLAGS} -Zdll" - LDCXXSHARED="${CXX} ${LDFLAGS} -Zdll";; + LDSHARED='$(CC) -Zdll' + LDCXXSHARED='$(CXX) -Zdll';; *) LDSHARED="ld";; esac fi From 55d7b76d6f6cb70fdb1655be6f3c79c66761ec9a Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 26 May 2017 20:18:42 +0000 Subject: [PATCH 055/160] python: Remove LIBCx from the list of module libraries. Partly undoes r977. LIBCx is intended as a drop-in replacement and should be passed in LDFLAGS so that every shared python module is linked against it as well as the main python DLL and launcher. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1151 978522c7-42b7-df11-88a9-00e081727c95 --- setup.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/setup.py b/setup.py index 231db1da..6ec22f20 100644 --- a/setup.py +++ b/setup.py @@ -557,8 +557,6 @@ def detect_modules(self): # Check for MacOS X, which doesn't need libm.a at all math_libs = ['m'] - if host_platform in ['os2knix']: - math_libs.append('cx') if host_platform in ['darwin', 'beos']: math_libs = [] @@ -673,9 +671,7 @@ def detect_modules(self): exts.append( Extension('cPickle', ['cPickle.c']) ) # Memory-mapped files (also works on Win32). - if host_platform in ['os2knix']: - exts.append( Extension('mmap', ['mmapmodule.c'], libraries=['cx']) ) - elif host_platform not in ['atheos']: + if host_platform not in ['atheos']: exts.append( Extension('mmap', ['mmapmodule.c']) ) else: missing.append('mmap') @@ -816,7 +812,7 @@ def detect_modules(self): exts.append( Extension('_ssl', ['_ssl.c'], include_dirs = ssl_incs, library_dirs = ssl_libs, - libraries = ['ssl', 'crypto', 'cx'], + libraries = ['ssl', 'crypto'], depends = ['socketmodule.h']), ) else: missing.append('_ssl') From 293cb3a8e3be144f8c9b71ef12cc27b30999b3e1 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 9 Nov 2017 10:02:54 +0000 Subject: [PATCH 056/160] Make sys.executable work for fancy python exe names on OS/2. Closes #277. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1251 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/getpath.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Modules/getpath.c b/Modules/getpath.c index 1dd98d43..6c0a3dc5 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -169,6 +169,7 @@ ismodule(char *filename) /* Is module -- check for .pyc/.pyo too */ } +#ifndef PYOS_OS2 static int isxfile(char *filename) /* Is executable file */ { @@ -181,6 +182,7 @@ isxfile(char *filename) /* Is executable file */ return 0; return 1; } +#endif static int @@ -423,6 +425,10 @@ calculate_path(void) #endif #endif +#ifdef PYOS_OS2 + /* This will search for prog in PATH and leave progpath empty on failure */ + _path2(prog, ".exe", progpath, MAXPATHLEN); +#else /* If there is no slash in the argv0 path, then we have to * assume python is on the user's $PATH, since there's no * other way to find a directory to start the search from. If @@ -471,6 +477,8 @@ calculate_path(void) } else progpath[0] = '\0'; +#endif /* PYOS_OS2 */ + #ifndef ALTSEP if (!IS_ABSPATH(progpath) && progpath[0] != '\0') #endif From 6974888e5a9beef62502b52b4cd5474d35cc378e Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 9 Nov 2017 22:34:12 +0000 Subject: [PATCH 057/160] python: Enable real os.spawnv* implementation on OS/2. As OS/2 uses Posix code path now, a spawnv* emulation with fork was used due to a missing define. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1253 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/posixmodule.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 1e0afa5f..012c98ef 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -141,6 +141,9 @@ corresponding Unix manual entries for more information on calls."); /* Everything needed is defined in PC/os2emx/pyconfig.h or vms/pyconfig.h */ #else /* all other compilers */ /* Unix functions that the configure script doesn't check for */ +#if defined(PYOS_OS2) +#define HAVE_SPAWNV 1 +#endif #define HAVE_EXECV 1 #define HAVE_FORK 1 #if defined(__USLC__) && defined(__SCO_VERSION__) /* SCO UDK Compiler */ From 24d2b7b6d5bbb29b2ad13020713fd6181d2d6c27 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 9 Nov 2017 23:00:15 +0000 Subject: [PATCH 058/160] python: Use spawn instead of fork in subprocess. This significantly improves performance when running many external programs. See #275 for more details. Note that this commit also makes os.pipe use pipe() instead of socketpair() and this in turn fixes #267. Note that socketpair() is still available via socket.socketpair() in Python. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1254 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/subprocess.py | 375 +++++++++++++++++++++++++++++------------- Modules/posixmodule.c | 8 - 2 files changed, 258 insertions(+), 125 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 962ebd98..c7cc9e25 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -396,6 +396,8 @@ class Popen(args, bufsize=0, executable=None, import signal import errno +os2 = (os.name == "os2") + import sysconfig SHELL = sysconfig.get_config_var('SHELL') or '/bin/sh' @@ -426,6 +428,10 @@ class STARTUPINFO: wShowWindow = 0 class pywintypes: error = IOError +elif os2: + import threading + import fcntl + import time else: import select _has_poll = hasattr(select, 'poll') @@ -660,15 +666,15 @@ def __init__(self, args, bufsize=0, executable=None, if not isinstance(bufsize, (int, long)): raise TypeError("bufsize must be an integer") - if mswindows: + if mswindows or os2: if preexec_fn is not None: raise ValueError("preexec_fn is not supported on Windows " - "platforms") - if close_fds and (stdin is not None or stdout is not None or - stderr is not None): + "and OS/2 platforms") + if not os2 and close_fds and (stdin is not None or stdout is not None or + stderr is not None): raise ValueError("close_fds is not supported on Windows " "platforms if you redirect stdin/stdout/stderr") - else: + if not mswindows: # POSIX if startupinfo is not None: raise ValueError("startupinfo is only supported on Windows " @@ -1211,104 +1217,71 @@ def _close_in_parent(fd): os.close(fd) to_close.remove(fd) - # For transferring possible exec failure from child to parent - # The first char specifies the exception type: 0 means - # OSError, 1 means some other error. - errpipe_read, errpipe_write = self.pipe_cloexec() - try: - try: - gc_was_enabled = gc.isenabled() - # Disable gc to avoid bug where gc -> file_dealloc -> - # write to stderr -> hang. http://bugs.python.org/issue1336 - gc.disable() - try: - self.pid = os.fork() - except: - if gc_was_enabled: - gc.enable() - raise - self._child_created = True - if self.pid == 0: - # Child - try: - # Close parent's pipe ends - if p2cwrite is not None: - os.close(p2cwrite) - if c2pread is not None: - os.close(c2pread) - if errread is not None: - os.close(errread) - os.close(errpipe_read) - - # When duping fds, if there arises a situation - # where one of the fds is either 0, 1 or 2, it - # is possible that it is overwritten (#12607). - if c2pwrite == 0: - c2pwrite = os.dup(c2pwrite) - if errwrite == 0 or errwrite == 1: - errwrite = os.dup(errwrite) - - # Dup fds for child - def _dup2(a, b): - # dup2() removes the CLOEXEC flag but - # we must do it ourselves if dup2() - # would be a no-op (issue #10806). - if a == b: - self._set_cloexec_flag(a, False) - elif a is not None: - os.dup2(a, b) - _dup2(p2cread, 0) - _dup2(c2pwrite, 1) - _dup2(errwrite, 2) - - # Close pipe fds. Make sure we don't close the - # same fd more than once, or standard fds. - closed = { None } - for fd in [p2cread, c2pwrite, errwrite]: - if fd not in closed and fd > 2: - os.close(fd) - closed.add(fd) - - if cwd is not None: - os.chdir(cwd) - - if preexec_fn: - preexec_fn() - - # Close all other fds, if asked for - after - # preexec_fn(), which may open FDs. - if close_fds: - self._close_fds(but=errpipe_write) - - if env is None: - os.execvp(executable, args) - else: - os.execvpe(executable, args, env) + if os2: + # We use spawn on OS/2 instead of fork because fork is very + # inefficient there (mostly due to the lack of COW page support + # in the kernel). + mode = os.P_NOWAIT + oldcwd = None + dups = [ None, None, None ] + cloexec_fds = set() - except: - exc_type, exc_value, tb = sys.exc_info() - # Save the traceback and attach it to the exception object - exc_lines = traceback.format_exception(exc_type, - exc_value, - tb) - exc_value.child_traceback = ''.join(exc_lines) - os.write(errpipe_write, pickle.dumps(exc_value)) - - # This exitcode won't be reported to applications, so it - # really doesn't matter what we return. - os._exit(255) - - # Parent - if gc_was_enabled: - gc.enable() + try: + # Change the directory if asked + if cwd is not None: + oldcwd = os.getcwd() + os.chdir(cwd) + + # Duplicate stdio if needed + if p2cread is not None: + dups[0] = os.dup(0) + os.dup2(p2cread, 0) + self._set_cloexec_flag(dups[0]) + if c2pwrite is not None: + dups[1] = os.dup(1) + os.dup2(c2pwrite, 1) + self._set_cloexec_flag(dups[1]) + if errwrite is not None: + dups[2] = os.dup(2) + os.dup2(errwrite, 2) + self._set_cloexec_flag(dups[2]) + + # Disable inheritance + if close_fds: + for i in xrange(3, MAXFD): + try: + f = fcntl.fcntl(i, fcntl.F_GETFD) + if not (f & fcntl.FD_CLOEXEC): + cloexec_fds.add(i) + self._set_cloexec_flag(i) + except: + pass + + if env is None: + pid = os.spawnvp(mode, executable, args) + else: + pid = os.spawnvpe(mode, executable, args, env) finally: - # be sure the FD is closed no matter what - os.close(errpipe_write) + # Restore inheritance + for i in cloexec_fds: + self._set_cloexec_flag(i, False) - # Wait for exec to fail or succeed; possibly raising exception - # Exception limited to 1M - data = _eintr_retry_call(os.read, errpipe_read, 1048576) - finally: + # Restore the parent stdio + for i, fd in enumerate(dups): + if fd is not None: + os.dup2(fd, i) + os.close(fd) + + # Restore the current directory + if oldcwd is not None: + os.chdir(oldcwd) + + # Child is launched. Close the parent's copy of those pipe + # handles that only the child should have open. You need + # to make sure that no handles to the write end of the + # output pipe are maintained in this process or else the + # pipe will not close when the child process exits and the + # ReadFile will hang. if p2cread is not None and p2cwrite is not None: _close_in_parent(p2cread) if c2pwrite is not None and c2pread is not None: @@ -1316,17 +1289,126 @@ def _dup2(a, b): if errwrite is not None and errread is not None: _close_in_parent(errwrite) - # be sure the FD is closed no matter what - os.close(errpipe_read) + self._child_created = True + self.pid = pid - if data != "": + else: + # For transferring possible exec failure from child to parent + # The first char specifies the exception type: 0 means + # OSError, 1 means some other error. + errpipe_read, errpipe_write = self.pipe_cloexec() try: - _eintr_retry_call(os.waitpid, self.pid, 0) - except OSError as e: - if e.errno != errno.ECHILD: - raise - child_exception = pickle.loads(data) - raise child_exception + try: + gc_was_enabled = gc.isenabled() + # Disable gc to avoid bug where gc -> file_dealloc -> + # write to stderr -> hang. http://bugs.python.org/issue1336 + gc.disable() + try: + self.pid = os.fork() + except: + if gc_was_enabled: + gc.enable() + raise + self._child_created = True + if self.pid == 0: + # Child + try: + # Close parent's pipe ends + if p2cwrite is not None: + os.close(p2cwrite) + if c2pread is not None: + os.close(c2pread) + if errread is not None: + os.close(errread) + os.close(errpipe_read) + + # When duping fds, if there arises a situation + # where one of the fds is either 0, 1 or 2, it + # is possible that it is overwritten (#12607). + if c2pwrite == 0: + c2pwrite = os.dup(c2pwrite) + if errwrite == 0 or errwrite == 1: + errwrite = os.dup(errwrite) + + # Dup fds for child + def _dup2(a, b): + # dup2() removes the CLOEXEC flag but + # we must do it ourselves if dup2() + # would be a no-op (issue #10806). + if a == b: + self._set_cloexec_flag(a, False) + elif a is not None: + os.dup2(a, b) + _dup2(p2cread, 0) + _dup2(c2pwrite, 1) + _dup2(errwrite, 2) + + # Close pipe fds. Make sure we don't close the + # same fd more than once, or standard fds. + closed = { None } + for fd in [p2cread, c2pwrite, errwrite]: + if fd not in closed and fd > 2: + os.close(fd) + closed.add(fd) + + if cwd is not None: + os.chdir(cwd) + + if preexec_fn: + preexec_fn() + + # Close all other fds, if asked for - after + # preexec_fn(), which may open FDs. + if close_fds: + self._close_fds(but=errpipe_write) + + if env is None: + os.execvp(executable, args) + else: + os.execvpe(executable, args, env) + + except: + exc_type, exc_value, tb = sys.exc_info() + # Save the traceback and attach it to the exception object + exc_lines = traceback.format_exception(exc_type, + exc_value, + tb) + exc_value.child_traceback = ''.join(exc_lines) + os.write(errpipe_write, pickle.dumps(exc_value)) + + # This exitcode won't be reported to applications, so it + # really doesn't matter what we return. + os._exit(255) + + # Parent + if gc_was_enabled: + gc.enable() + finally: + # be sure the FD is closed no matter what + os.close(errpipe_write) + + # Wait for exec to fail or succeed; possibly raising exception + # Exception limited to 1M + data = _eintr_retry_call(os.read, errpipe_read, 1048576) + finally: + if p2cread is not None and p2cwrite is not None: + _close_in_parent(p2cread) + if c2pwrite is not None and c2pread is not None: + _close_in_parent(c2pwrite) + if errwrite is not None and errread is not None: + _close_in_parent(errwrite) + + # be sure the FD is closed no matter what + os.close(errpipe_read) + + if data != "": + try: + _eintr_retry_call(os.waitpid, self.pid, 0) + except OSError as e: + if e.errno != errno.ECHILD: + raise + child_exception = pickle.loads(data) + raise child_exception def _handle_exitstatus(self, sts, _WIFSIGNALED=os.WIFSIGNALED, @@ -1392,17 +1474,58 @@ def wait(self): def _communicate(self, input): - if self.stdin: - # Flush stdio buffer. This might block, if the user has - # been writing to .stdin in an uncontrolled fashion. - self.stdin.flush() - if not input: + if os2: + def _readerthread(file, buffer): + while True: + data = _eintr_retry_call(file.read) + if data == "": + file.close() + break + buffer.append(data) + + stdout = None # Return + stderr = None # Return + + if self.stdout: + stdout = [] + stdout_thread = threading.Thread(target=_readerthread, + args=(self.stdout, stdout)) + stdout_thread.setDaemon(True) + stdout_thread.start() + + if self.stderr: + stderr = [] + stderr_thread = threading.Thread(target=_readerthread, + args=(self.stderr, stderr)) + stderr_thread.setDaemon(True) + stderr_thread.start() + + if self.stdin: + if input is not None: + try: + self.stdin.write(input) + except IOError as e: + if e.errno != errno.EPIPE: + raise self.stdin.close() - if _has_poll: - stdout, stderr = self._communicate_with_poll(input) + if self.stdout: + stdout_thread.join() + if self.stderr: + stderr_thread.join() + else: - stdout, stderr = self._communicate_with_select(input) + if self.stdin: + # Flush stdio buffer. This might block, if the user has + # been writing to .stdin in an uncontrolled fashion. + self.stdin.flush() + if not input: + self.stdin.close() + + if _has_poll: + stdout, stderr = self._communicate_with_poll(input) + else: + stdout, stderr = self._communicate_with_select(input) # All data exchanged. Translate lists into strings. if stdout is not None: @@ -1616,8 +1739,26 @@ def _demo_windows(): p.wait() +def _demo_os2(): + # + # Example 1: Simple redirection: Get current process data + # + pdata = Popen(["pstat", "/p:%s" % hex(os.getpid())[2:]], stdout=PIPE, stderr=PIPE).communicate()[0] + print "Current process data:" + print pdata + # + # Example 2: Connecting several subprocesses + # + p1 = Popen(["pstat", "/p:%s" % hex(os.getpid())[2:]], stdout=PIPE) + p2 = Popen(["grep", "\.EXE"], stdin=p1.stdout, stdout=PIPE) + print "Current .EXE:" + print p2.communicate()[0] + + if __name__ == "__main__": if mswindows: _demo_windows() + elif os2: + _demo_os2() else: _demo_posix() diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 012c98ef..24eb7300 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -4820,11 +4820,7 @@ _PyPopen(char *cmdstring, int mode, int n, int bufsize) file_count = 3; i = pipe_err = 0; while ((pipe_err == 0) && (i < file_count)) -#ifndef __KLIBC__ pipe_err = pipe((int *)&p_fd[i++]); -#else - pipe_err = socketpair(AF_UNIX, SOCK_STREAM,0,(int *)&p_fd[i++]); -#endif if (pipe_err < 0) { /* didn't get them all made - clean up and bail out */ @@ -6961,11 +6957,7 @@ posix_pipe(PyObject *self, PyObject *noargs) int fds[2]; int res; Py_BEGIN_ALLOW_THREADS -#ifndef __KLIBC__ res = pipe(fds); -#else - res = socketpair(AF_UNIX, SOCK_STREAM,0, fds); -#endif Py_END_ALLOW_THREADS if (res != 0) return posix_error(); From 6bd22c9b9a5498f622ea84652fc0e9e6c199e828 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Wed, 15 Nov 2017 21:52:06 +0000 Subject: [PATCH 059/160] python: Don't flatten case of tempdir. This is a backport of https://github.com/python/cpython/commit/6d09f09d8b4f6e45f4b96145bc75500f590de834. Needed to make Mozilla's python/mozbuild/mozbuild/test/test_base.py tests to succeed. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1255 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/tempfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/tempfile.py b/Lib/tempfile.py index c9385f04..c5c93bf8 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -188,7 +188,7 @@ def _get_default_tempdir(): for dir in dirlist: if dir != _os.curdir: - dir = _os.path.normcase(_os.path.abspath(dir)) + dir = _os.path.abspath(dir) # Try only a few names per directory. for seq in xrange(100): name = namer.next() From 135f53f1ea562e914aa93c9395a8e533f1f8416a Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Wed, 15 Nov 2017 21:55:31 +0000 Subject: [PATCH 060/160] python: Support NUMBER_OF_PROCESSORS in multitasking.cpu_count() on OS/2. NUMBER_OF_PROCESSORS is checked before sysconf('SC_NPROCESSORS_ONLN'). Needed for Mozilla's xpcshell test harness. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1256 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/multiprocessing/__init__.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Lib/multiprocessing/__init__.py b/Lib/multiprocessing/__init__.py index 2e91e8eb..f983429a 100644 --- a/Lib/multiprocessing/__init__.py +++ b/Lib/multiprocessing/__init__.py @@ -126,7 +126,14 @@ def cpu_count(): num = 0 else: try: - num = os.sysconf('SC_NPROCESSORS_ONLN') + num = 0 + if os.name == 'os2': + try: + num = int(os.environ['NUMBER_OF_PROCESSORS']) + except (ValueError, KeyError): + num = 0 + if num == 0: + num = os.sysconf('SC_NPROCESSORS_ONLN') except (ValueError, OSError, AttributeError): num = 0 From 787be439c02ef13cba74f6960afd5cdad2666e9a Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 17 Nov 2017 11:15:58 +0000 Subject: [PATCH 061/160] python: Fix handling drive letters in urllib.url2pathname and pathname2url on OS/2. It used to use Posix code path that would not recongize drive letters and treat the path as non-absolute. Fixes Mozilla's python/mozbuild/mozpack/test/test_mozjar.py. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1257 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/urllib.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Lib/urllib.py b/Lib/urllib.py index 244cb053..8c9357ed 100644 --- a/Lib/urllib.py +++ b/Lib/urllib.py @@ -49,6 +49,19 @@ from nturl2path import url2pathname, pathname2url elif os.name == 'riscos': from rourl2path import url2pathname, pathname2url +elif os.name == 'os2': + import nturl2path + def url2pathname(pathname): + """OS-specific conversion from a relative URL of the 'file' scheme + to a file system path; not recommended for general use.""" + # nturl2path only expects back slashes + return nturl2path.url2pathname(pathname.replace('/', '\\')) + + def pathname2url(pathname): + """OS-specific conversion from a file system path to a relative URL + of the 'file' scheme; not recommended for general use.""" + # nturl2path only expects back slashes + return nturl2path.pathname2url(pathname.replace('/', '\\')) else: def url2pathname(pathname): """OS-specific conversion from a relative URL of the 'file' scheme From d2b5a5945cc60232cd97ba771d4764266b108a5d Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Tue, 26 Dec 2017 21:43:44 +0000 Subject: [PATCH 062/160] python: Implement subprocess.Popen using LIBCx spawn2. Closes #280. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1281 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/subprocess.py | 89 +++++++------------ Modules/posixmodule.c | 198 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 229 insertions(+), 58 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index c7cc9e25..7b10f181 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -658,7 +658,8 @@ def __init__(self, args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, - startupinfo=None, creationflags=0): + startupinfo=None, creationflags=0, + threadsafe=None): """Create new Popen instance.""" _cleanup() @@ -682,6 +683,13 @@ def __init__(self, args, bufsize=0, executable=None, if creationflags != 0: raise ValueError("creationflags is only supported on Windows " "platforms") + if os2: + if threadsafe is None: + threadsafe = False + else: + if threadsafe is not None: + raise ValueError("threadsafe is only supported on OS/2 " + "platforms") self.stdin = None self.stdout = None @@ -712,7 +720,7 @@ def __init__(self, args, bufsize=0, executable=None, try: self._execute_child(args, executable, preexec_fn, close_fds, cwd, env, universal_newlines, - startupinfo, creationflags, shell, to_close, + startupinfo, creationflags, threadsafe, shell, to_close, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) @@ -911,7 +919,7 @@ def _find_w9xpopen(self): def _execute_child(self, args, executable, preexec_fn, close_fds, cwd, env, universal_newlines, - startupinfo, creationflags, shell, to_close, + startupinfo, creationflags, threadsafe, shell, to_close, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite): @@ -1194,7 +1202,7 @@ def _close_fds(self, but): def _execute_child(self, args, executable, preexec_fn, close_fds, cwd, env, universal_newlines, - startupinfo, creationflags, shell, to_close, + startupinfo, creationflags, threadsafe, shell, to_close, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite): @@ -1222,59 +1230,14 @@ def _close_in_parent(fd): # inefficient there (mostly due to the lack of COW page support # in the kernel). mode = os.P_NOWAIT - oldcwd = None - dups = [ None, None, None ] - cloexec_fds = set() - - try: - # Change the directory if asked - if cwd is not None: - oldcwd = os.getcwd() - os.chdir(cwd) - - # Duplicate stdio if needed - if p2cread is not None: - dups[0] = os.dup(0) - os.dup2(p2cread, 0) - self._set_cloexec_flag(dups[0]) - if c2pwrite is not None: - dups[1] = os.dup(1) - os.dup2(c2pwrite, 1) - self._set_cloexec_flag(dups[1]) - if errwrite is not None: - dups[2] = os.dup(2) - os.dup2(errwrite, 2) - self._set_cloexec_flag(dups[2]) - - # Disable inheritance - if close_fds: - for i in xrange(3, MAXFD): - try: - f = fcntl.fcntl(i, fcntl.F_GETFD) - if not (f & fcntl.FD_CLOEXEC): - cloexec_fds.add(i) - self._set_cloexec_flag(i) - except: - pass - - if env is None: - pid = os.spawnvp(mode, executable, args) - else: - pid = os.spawnvpe(mode, executable, args, env) - finally: - # Restore inheritance - for i in cloexec_fds: - self._set_cloexec_flag(i, False) - # Restore the parent stdio - for i, fd in enumerate(dups): - if fd is not None: - os.dup2(fd, i) - os.close(fd) + if close_fds: + mode |= os.P_2_NOINHERIT + if threadsafe: + mode |= os.P_2_THREADSAFE + stdfds = [ p2cread, c2pwrite, errwrite ] - # Restore the current directory - if oldcwd is not None: - os.chdir(oldcwd) + pid = os.spawn2(mode, executable, args, cwd, env, stdfds) # Child is launched. Close the parent's copy of those pipe # handles that only the child should have open. You need @@ -1479,7 +1442,12 @@ def _readerthread(file, buffer): while True: data = _eintr_retry_call(file.read) if data == "": - file.close() + try: + file.close() + except IOError as e: + # kLIBC close may fail with EBADF or even Error 0, + # ignore for now + pass break buffer.append(data) @@ -1503,11 +1471,16 @@ def _readerthread(file, buffer): if self.stdin: if input is not None: try: - self.stdin.write(input) + _eintr_retry_call(self.stdin.write, input) except IOError as e: if e.errno != errno.EPIPE: raise - self.stdin.close() + try: + self.stdin.close() + except IOError as e: + # kLIBC close may fail with EBADF or even Error 0, + # ignore for now + pass if self.stdout: stdout_thread.join() diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 24eb7300..b4576f0c 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -37,6 +37,7 @@ #if defined(__KLIBC__) #include +#include #endif #ifdef __cplusplus @@ -8804,6 +8805,197 @@ posix_getresgid (PyObject *self, PyObject *noargs) } #endif +#if defined(PYOS_OS2) +PyDoc_STRVAR(os2_spawn2__doc__, +"spawn2(mode, file, args, cwd, env, stdfds)\n\n\ +Execute the program 'name' in a new process,\n\ +search path to find the file.\n\ +\n\ + mode: mode of process creation\n\ + file: executable file name\n\ + args: tuple or list of strings\n\ + cwd: initial working directory for the new process\n\ + env: dictionary of strings mapping to strings\n\ + stdfds: tuple or list of 3 file descriptors for standard I/O"); + +static PyObject * +os2_spawn2(PyObject *self, PyObject *args) +{ + char *path, *cwd = NULL; + PyObject *argv, *env, *stdfds; + char **argvlist; + char **envlist; + PyObject *key, *val, *keys=NULL, *vals=NULL, *res=NULL; + int mode, i, pos, argc, envc, stdfdc; + Py_intptr_t spawnval; + PyObject *(*argv_getitem)(PyObject *, Py_ssize_t); + int lastarg = 0; + PyObject *(*stdfd_getitem)(PyObject *, Py_ssize_t); + int stdfdlist[3] = {0}; + + /* Note: no need in et and Py_FileSystemDefaultEncoding for path arguments + * as on OS/2 this is always the same as the default encoding. */ + if (!PyArg_ParseTuple(args, "isOzOO:spawn2", &mode, + &path, &argv, &cwd, &env, &stdfds)) + return NULL; + if (PyList_Check(argv)) { + argc = PyList_Size(argv); + argv_getitem = PyList_GetItem; + } + else if (PyTuple_Check(argv)) { + argc = PyTuple_Size(argv); + argv_getitem = PyTuple_GetItem; + } + else { + PyErr_SetString(PyExc_TypeError, + "spawn2() arg 3 must be a tuple or list"); + goto fail_0; + } + + if (env != Py_None && !PyMapping_Check(env)) { + PyErr_SetString(PyExc_TypeError, + "spawn2() arg 5 must be a mapping object"); + goto fail_0; + } + + if (PyList_Check(stdfds)) { + stdfdc = PyList_Size(stdfds); + stdfd_getitem = PyList_GetItem; + } + else if (PyTuple_Check(stdfds)) { + stdfdc = PyTuple_Size(stdfds); + stdfd_getitem = PyTuple_GetItem; + } + else if (stdfds == Py_None) { + stdfdc = -1; + } + else { + PyErr_SetString(PyExc_TypeError, + "spawn2() arg 6 must be a tuple or list or None"); + goto fail_0; + } + if (stdfdc != -1 && stdfdc != 3) { + PyErr_SetString(PyExc_TypeError, + "spawn2() arg 6 must contain 3 elements"); + goto fail_0; + } + + argvlist = PyMem_NEW(char *, argc+1); + if (argvlist == NULL) { + PyErr_NoMemory(); + goto fail_0; + } + + for (i = 0; i < argc; i++) { + if (!PyArg_Parse((*argv_getitem)(argv, i), "et", + Py_FileSystemDefaultEncoding, &argvlist[i])) + { + PyErr_SetString(PyExc_TypeError, + "spawn2() arg 3 must contain only strings"); + lastarg = i; + goto fail_1; + } + } + lastarg = argc; + argvlist[argc] = NULL; + + if (env == Py_None) { + envlist = NULL; + envc = -1; + } else { + i = PyMapping_Size(env); + if (i < 0) + goto fail_1; + envlist = PyMem_NEW(char *, i + 1); + if (envlist == NULL) { + PyErr_NoMemory(); + goto fail_1; + } + envc = 0; + keys = PyMapping_Keys(env); + vals = PyMapping_Values(env); + if (!keys || !vals) + goto fail_2; + if (!PyList_Check(keys) || !PyList_Check(vals)) { + PyErr_SetString(PyExc_TypeError, + "spawn2(): env.keys() or env.values() is not a list"); + goto fail_2; + } + + for (pos = 0; pos < i; pos++) { + char *p, *k, *v; + size_t len; + + key = PyList_GetItem(keys, pos); + val = PyList_GetItem(vals, pos); + if (!key || !val) + goto fail_2; + + if (!PyArg_Parse(key, "s", &k)) { + PyErr_SetString(PyExc_TypeError, + "spawn2() arg 5 contains a non-string key"); + goto fail_2; + } + if (!PyArg_Parse(val, "s", &v)) { + PyErr_SetString(PyExc_TypeError, + "spawn2() arg 5 contains a non-string key"); + goto fail_2; + } + len = PyString_Size(key) + PyString_Size(val) + 2; + p = PyMem_NEW(char, len); + if (p == NULL) { + PyErr_NoMemory(); + goto fail_2; + } + PyOS_snprintf(p, len, "%s=%s", k, v); + envlist[envc++] = p; + } + envlist[envc] = 0; + } + + if (stdfdc != -1) { + for (i = 0; i < stdfdc; i++) { + PyObject *elem = (*stdfd_getitem)(stdfds, i); + if (elem == Py_None) { + stdfdlist[i] = 0; + } else { + if (!PyArg_Parse(elem, "i", &stdfdlist[i])) { + PyErr_SetString(PyExc_TypeError, + "spawn2() arg 6 must contain only integers"); + goto fail_2; + } + } + } + } + + Py_BEGIN_ALLOW_THREADS + + spawnval = spawn2(mode, path, (const char * const *)argvlist, cwd, + (const char * const *)envlist, + stdfdc == -1 ? NULL : stdfdlist); + + Py_END_ALLOW_THREADS + + if (spawnval == -1) + (void) posix_error(); + else + res = Py_BuildValue("l", (long) spawnval); + + fail_2: + if (envlist) { + while (--envc >= 0) + PyMem_DEL(envlist[envc]); + PyMem_DEL(envlist); + } + fail_1: + free_string_array(argvlist, lastarg); + Py_XDECREF(vals); + Py_XDECREF(keys); + fail_0: + return res; +} +#endif /* PYOS_OS2 */ + static PyMethodDef posix_methods[] = { {"access", posix_access, METH_VARARGS, posix_access__doc__}, #ifdef HAVE_TTYNAME @@ -9126,6 +9318,9 @@ static PyMethodDef posix_methods[] = { {"getresgid", posix_getresgid, METH_NOARGS, posix_getresgid__doc__}, #endif {"urandom", posix_urandom, METH_VARARGS, posix_urandom__doc__}, +#ifdef PYOS_OS2 + {"spawn2", os2_spawn2, METH_VARARGS, os2_spawn2__doc__}, +#endif {NULL, NULL} /* Sentinel */ }; @@ -9394,6 +9589,9 @@ all_ins(PyObject *d) if (ins(d, "P_TILDE", (long)P_TILDE)) return -1; if (ins(d, "P_UNRELATED", (long)P_UNRELATED)) return -1; if (ins(d, "P_DEBUGDESC", (long)P_DEBUGDESC)) return -1; + if (ins(d, "P_2_NOINHERIT", (long)P_2_NOINHERIT)) return -1; + if (ins(d, "P_2_THREADSAFE", (long)P_2_THREADSAFE)) return -1; + if (ins(d, "P_2_MODE_MASK", (long)P_2_MODE_MASK)) return -1; #else if (ins(d, "P_WAIT", (long)_P_WAIT)) return -1; if (ins(d, "P_NOWAIT", (long)_P_NOWAIT)) return -1; From ca0a5fe071472fde9028f13fe127f80017d1ed4b Mon Sep 17 00:00:00 2001 From: Silvan Scherrer Date: Fri, 12 Jan 2018 15:43:24 +0000 Subject: [PATCH 063/160] python: add module extention, as some python scripts need that. as example deltarpm git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1291 978522c7-42b7-df11-88a9-00e081727c95 --- Python/dynload_shlib.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index 11d40c13..b15b0758 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -42,6 +42,8 @@ const struct filedescr _PyImport_DynLoadFiletab[] = { #if defined(PYOS_OS2) && defined(PYCC_GCC) {".pyd", "rb", C_EXTENSION}, {".dll", "rb", C_EXTENSION}, + {"module.pyd", "rb", C_EXTENSION}, + {"module.dll", "rb", C_EXTENSION}, #else #ifdef __VMS {".exe", "rb", C_EXTENSION}, From c17bdb066c0f339bedd608b6e1a01f36ca41ef5f Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 9 Feb 2018 21:00:18 +0000 Subject: [PATCH 064/160] python: Improve handling of BEGINLIBPATH and other pseudo-env vars. This fix avoids pollution of os.environ with unset pseudo-env vars and also adds support for temporarily enabling their action when passed in env argument to os.execve and os.spawnve calls (not thread-safe). Closes #299. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1294 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/posixmodule.c | 207 +++++++++++++++++++++++++++++++++--------- 1 file changed, 162 insertions(+), 45 deletions(-) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index b4576f0c..389cbc5a 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -576,6 +576,87 @@ _PyVerify_fd_dup2(int fd1, int fd2) #define _PyVerify_fd_dup2(A, B) (1) #endif +#if defined(PYOS_OS2) +static PyObject * +os2_error(int code); + +#define OS2_SPECIAL_ENVVAR_CNT 3 + +/* Returns a var ID if it is a special pseudo-environment variable or 0 */ +static ULONG +os2_envvar_special(const char *var) +{ + ULONG flag = 0; + if (stricmp(var, "BEGINLIBPATH") == 0) { + flag = BEGIN_LIBPATH; + } else if (stricmp(var, "ENDLIBPATH") == 0) { + flag = END_LIBPATH; +#ifdef LIBPATHSTRICT + } else if (stricmp(var, "LIBPATHSTRICT") == 0) { + flag = LIBPATHSTRICT; +#endif + } + + return flag; +} + +/* Sets and optionally gets a special pseudo-environment variable. + * Returns 0 on success or non-zero on failure (with a respective Python + * exception pending). If val is NULL, no set operation is performed. An old + * value of the variable is returned in oldval if it is not NULL. If *oldval is + * NULL on input, a buffer will be allocaed with PyMem_NEW which must be freed + * with PyMem_DEL by the caller. */ +static int +os2_putenv_special(const ULONG id, const char *val, char **oldval) +{ + APIRET rc; + + if (oldval) { + if (*oldval == NULL) { + /* OS/2 Provides a Documented Max of 1024 Chars */ + *oldval = PyMem_NEW(char, 1024); + if (*oldval == NULL) { + PyErr_NoMemory(); + return -1; + } + } + /* LIBPATHSTRICT only returns T or nothing so set the zero terminator */ + if (id == LIBPATHSTRICT) + memset(*oldval, '\0', 4); + rc = DosQueryExtLIBPATH(*oldval, id); + if (rc != NO_ERROR) { + os2_error(rc); + return -1; + } + } + + if (val) { + /* Validate input */ + if (id == LIBPATHSTRICT) { + if (val[0] != '\0' && (val[0] != 'T' || val[1] != '\0')) { + PyErr_SetString(PyExc_ValueError, + "LIBPATHSTRICT value must be T or empty"); + return -1; + } + } else { + if (strlen(val) > 1023) { + PyErr_SetString(PyExc_ValueError, + "BEGINLIBPATH/ENDLIBPATH length must not " + "exceed 1023 chars"); + return -1; + } + } + rc = DosSetExtLIBPATH(val, id); + if (rc != NO_ERROR) { + os2_error(rc); + return -1; + } + } + + return 0; +} +#endif + /* Return a dictionary corresponding to the POSIX environment table */ #if defined(WITH_NEXT_FRAMEWORK) || (defined(__APPLE__) && defined(Py_ENABLE_SHARED)) /* On Darwin/MacOSX a shared library or framework has no access to @@ -594,8 +675,12 @@ convertenviron(void) PyObject *d; char **e; #if defined(PYOS_OS2) - APIRET rc; char buffer[1024]; /* OS/2 Provides a Documented Max of 1024 Chars */ + const char *sp_envvars[OS2_SPECIAL_ENVVAR_CNT] = + { "BEGINLIBPATH", "ENDLIBPATH", "LIBPATHSTRICT" }; + ULONG sp_envids[OS2_SPECIAL_ENVVAR_CNT] = + { BEGIN_LIBPATH, END_LIBPATH, LIBPATHSTRICT }; + int i; #endif d = PyDict_New(); if (d == NULL) @@ -632,27 +717,19 @@ convertenviron(void) Py_DECREF(v); } #if defined(PYOS_OS2) - rc = DosQueryExtLIBPATH(buffer, BEGIN_LIBPATH); - if (rc == NO_ERROR) { /* (not a type, envname is NOT 'BEGIN_LIBPATH') */ - PyObject *v = PyString_FromString(buffer); - PyDict_SetItemString(d, "BEGINLIBPATH", v); - Py_DECREF(v); - } - rc = DosQueryExtLIBPATH(buffer, END_LIBPATH); - if (rc == NO_ERROR) { /* (not a typo, envname is NOT 'END_LIBPATH') */ - PyObject *v = PyString_FromString(buffer); - PyDict_SetItemString(d, "ENDLIBPATH", v); - Py_DECREF(v); - } -#ifdef LIBPATHSTRICT - buffer[0] = buffer[1] = buffer[2] = buffer[3] = '\0'; - rc = DosQueryExtLIBPATH(buffer, LIBPATHSTRICT); - if (rc == NO_ERROR) { /* (not a typo, envname is NOT 'LIBPATH_STRICT') */ - PyObject *v = PyString_FromString(buffer); - PyDict_SetItemString(d, "LIBPATHSTRICT", v); - Py_DECREF(v); + for (i = 0; i < OS2_SPECIAL_ENVVAR_CNT; ++i) { + char *val = buffer; + if (os2_putenv_special(sp_envids[i], NULL, &val)) { + PyErr_Clear(); + continue; + } + /* Do not pollute the einvironment with unset pseudo-env variables */ + if (*val) { + PyObject *v = PyString_FromString(val); + PyDict_SetItemString(d, sp_envvars[i], v); + Py_DECREF(v); + } } -#endif #endif return d; } @@ -3208,6 +3285,12 @@ posix_execve(PyObject *self, PyObject *args) Py_ssize_t i, pos, argc, envc; PyObject *(*getitem)(PyObject *, Py_ssize_t); Py_ssize_t lastarg = 0; +#if defined(PYOS_OS2) + char *sp_envvars[OS2_SPECIAL_ENVVAR_CNT] = { NULL }; + ULONG sp_envids[OS2_SPECIAL_ENVVAR_CNT] = { 0 }; + Py_ssize_t sp_envc = 0; + ULONG envid; +#endif /* execve has three arguments: (path, argv, env), where argv is a list or tuple of strings and env is a dictionary @@ -3295,9 +3378,19 @@ posix_execve(PyObject *self, PyObject *args) } #if defined(PYOS_OS2) - /* Omit Pseudo-Env Vars that Would Confuse Programs if Passed On */ - if (stricmp(k, "BEGINLIBPATH") != 0 && stricmp(k, "ENDLIBPATH") != 0 - && stricmp(k, "LIBPATHSTRICT") != 0) { + envid = os2_envvar_special(k); + if (envid) { + /* Process pseudo-env vars and omit them from the environment as + * they could coufuse programs if passed on. Note that this code is + * not thread-safe but we have no other option here. */ + sp_envids[sp_envc] = envid; + if (os2_putenv_special(envid, v, &sp_envvars[sp_envc])) { + if (sp_envvars[sp_envc]) + PyMem_DEL(sp_envvars[sp_envc]); + goto fail_2; + } + ++sp_envc; + } else { #endif len = PyString_Size(key) + PyString_Size(val) + 2; p = PyMem_NEW(char, len); @@ -3320,6 +3413,13 @@ posix_execve(PyObject *self, PyObject *args) (void) posix_error(); fail_2: +#if defined(PYOS_OS2) + while (--sp_envc >= 0) { + /* Restore the pseudo-env var's value */ + os2_putenv_special(sp_envids[sp_envc], sp_envvars[sp_envc], NULL); + PyMem_DEL(sp_envvars[sp_envc]); + } +#endif while (--envc >= 0) PyMem_DEL(envlist[envc]); PyMem_DEL(envlist); @@ -3444,6 +3544,12 @@ posix_spawnve(PyObject *self, PyObject *args) Py_intptr_t spawnval; PyObject *(*getitem)(PyObject *, Py_ssize_t); Py_ssize_t lastarg = 0; +#if defined(PYOS_OS2) + char *sp_envvars[OS2_SPECIAL_ENVVAR_CNT] = { NULL }; + ULONG sp_envids[OS2_SPECIAL_ENVVAR_CNT] = { 0 }; + Py_ssize_t sp_envc = 0; + ULONG envid; +#endif /* spawnve has four arguments: (mode, path, argv, env), where argv is a list or tuple of strings and env is a dictionary @@ -3529,6 +3635,21 @@ posix_spawnve(PyObject *self, PyObject *args) { goto fail_2; } +#if defined(PYOS_OS2) + envid = os2_envvar_special(k); + if (envid) { + /* Process pseudo-env vars and omit them from the environment as + * they could coufuse programs if passed on. Note that this code is + * not thread-safe but we have no other option here. */ + sp_envids[sp_envc] = envid; + if (os2_putenv_special(envid, v, &sp_envvars[sp_envc])) { + if (sp_envvars[sp_envc]) + PyMem_DEL(sp_envvars[sp_envc]); + goto fail_2; + } + ++sp_envc; + } else { +#endif len = PyString_Size(key) + PyString_Size(val) + 2; p = PyMem_NEW(char, len); if (p == NULL) { @@ -3537,6 +3658,9 @@ posix_spawnve(PyObject *self, PyObject *args) } PyOS_snprintf(p, len, "%s=%s", k, v); envlist[envc++] = p; +#if defined(PYOS_OS2) + } +#endif } envlist[envc] = 0; @@ -3563,6 +3687,13 @@ posix_spawnve(PyObject *self, PyObject *args) #endif fail_2: +#if defined(PYOS_OS2) + while (--sp_envc >= 0) { + /* Restore the pseudo-env var's value */ + os2_putenv_special(sp_envids[sp_envc], sp_envvars[sp_envc], NULL); + PyMem_DEL(sp_envvars[sp_envc]); + } +#endif while (--envc >= 0) PyMem_DEL(envlist[envc]); PyMem_DEL(envlist); @@ -7133,27 +7264,10 @@ posix_putenv(PyObject *self, PyObject *args) return NULL; #if defined(PYOS_OS2) - if (stricmp(s1, "BEGINLIBPATH") == 0) { - APIRET rc; - - rc = DosSetExtLIBPATH(s2, BEGIN_LIBPATH); - if (rc != NO_ERROR) - return os2_error(rc); - - } else if (stricmp(s1, "ENDLIBPATH") == 0) { - APIRET rc; - - rc = DosSetExtLIBPATH(s2, END_LIBPATH); - if (rc != NO_ERROR) - return os2_error(rc); -#ifdef LIBPATHSTRICT - } else if (stricmp(s1, "LIBPATHSTRICT") == 0) { - APIRET rc; - - rc = DosSetExtLIBPATH(s2, LIBPATHSTRICT); - if (rc != NO_ERROR) - return os2_error(rc); -#endif + int envid = os2_envvar_special(s1); + if (envid) { + if (os2_putenv_special(envid, s2, NULL)) + return NULL; /* Signal to Python that an Exception is Pending */ } else { #endif /* OS2 */ @@ -8941,6 +9055,9 @@ os2_spawn2(PyObject *self, PyObject *args) "spawn2() arg 5 contains a non-string key"); goto fail_2; } + /* Note that we don't process pseudo-env vars here as they are + * processed internally by spawn2() to guarantee thread safety + * in P_2_THREADSAFE mode. */ len = PyString_Size(key) + PyString_Size(val) + 2; p = PyMem_NEW(char, len); if (p == NULL) { From 3915c88cb53f681c55d3c73020cae38e7e6ada9b Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Wed, 18 Apr 2018 11:38:54 +0000 Subject: [PATCH 065/160] python: Expect missing BEGINLIBPATH in environment on OS/2. git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1381 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/site.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/site.py b/Lib/site.py index da9a292e..679e2a0f 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -325,7 +325,7 @@ def setBEGINLIBPATH(): """ dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload") - libpath = os.environ['BEGINLIBPATH'].split(';') + libpath = os.environ.get('BEGINLIBPATH', '').split(';') if libpath[-1]: libpath.append(dllpath) else: From 922249486470f3f107328bef417dd4610550c9f4 Mon Sep 17 00:00:00 2001 From: Silvan Scherrer Date: Fri, 21 Dec 2018 17:53:57 +0000 Subject: [PATCH 066/160] adjust getaddrinfo and friends to latest libcx git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1538 978522c7-42b7-df11-88a9-00e081727c95 --- Modules/socketmodule.h | 3 +++ configure.ac | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Modules/socketmodule.h b/Modules/socketmodule.h index 8515499b..9b555126 100644 --- a/Modules/socketmodule.h +++ b/Modules/socketmodule.h @@ -11,6 +11,9 @@ # if !(defined(__BEOS__) || defined(__CYGWIN__) || (defined(PYOS_OS2) && defined(PYCC_VACPP))) # include # endif +#ifdef __OS2__ +#include +#endif #else /* MS_WINDOWS */ # include diff --git a/configure.ac b/configure.ac index 7c8da6b6..9c62f259 100644 --- a/configure.ac +++ b/configure.ac @@ -3248,12 +3248,19 @@ then #include #include #include +#ifdef __OS2__ +#include +#endif int main() { int passive, gaierr, inet4 = 0, inet6 = 0; struct addrinfo hints, *ai, *aitop; +#ifndef __OS2__ char straddr[INET6_ADDRSTRLEN], strport[16]; +#else + char straddr[NI_MAXHOST], strport[NI_MAXSERV]; +#endif for (passive = 0; passive <= 1; passive++) { memset(&hints, 0, sizeof(hints)); @@ -3289,6 +3296,7 @@ int main() } inet4++; break; +#ifndef __OS2__ case AF_INET6: if (strcmp(strport, "54321") != 0) { goto bad; @@ -3304,6 +3312,7 @@ int main() } inet6++; break; +#endif case AF_UNSPEC: goto bad; break; @@ -3393,7 +3402,12 @@ AC_MSG_RESULT($was_it_defined) AC_MSG_CHECKING(for addrinfo) AC_CACHE_VAL(ac_cv_struct_addrinfo, -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[struct addrinfo a]])], +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + #ifdef __OS2__ + #include + #endif + ]], [[struct addrinfo a]])], [ac_cv_struct_addrinfo=yes], [ac_cv_struct_addrinfo=no])) AC_MSG_RESULT($ac_cv_struct_addrinfo) @@ -4518,6 +4532,9 @@ AC_CHECK_TYPE(socklen_t,, #ifdef HAVE_SYS_SOCKET_H #include #endif +#ifdef __OS2__ +#include +#endif ]) case $ac_sys_system in From 8d64d13249e20e1cac9af440813e3ea131376232 Mon Sep 17 00:00:00 2001 From: Silvan Scherrer Date: Fri, 21 Dec 2018 18:57:38 +0000 Subject: [PATCH 067/160] don't add a .exe extention to a symlink git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1539 978522c7-42b7-df11-88a9-00e081727c95 --- Makefile.pre.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 5ae12deb..449b0bbb 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -864,8 +864,8 @@ bininstall: altbininstall else true; \ fi (cd $(DESTDIR)$(BINDIR); $(LN) -s python2$(EXE) $(PYTHON)) - -rm -f $(DESTDIR)$(BINDIR)/python2$(EXE) - (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2$(EXE)) + -rm -f $(DESTDIR)$(BINDIR)/python2 + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2) -rm -f $(DESTDIR)$(BINDIR)/python2-config (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python2-config) -rm -f $(DESTDIR)$(BINDIR)/python-config From e75b119beab24f645b3c49cc74b59fa291c3baf2 Mon Sep 17 00:00:00 2001 From: Silvan Scherrer Date: Fri, 11 Jan 2019 16:34:21 +0000 Subject: [PATCH 068/160] prefer less over more. use text when less fails and more is used. ticket #326 git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1551 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/pydoc.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 68ba21f3..f912e660 100644 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -1351,10 +1351,10 @@ def getpager(): return lambda text: pipepager(text, os.environ['PAGER']) if os.environ.get('TERM') in ('dumb', 'emacs'): return plainpager - if sys.platform == 'win32' or sys.platform.startswith('os2'): - return lambda text: tempfilepager(plain(text), 'more <') if hasattr(os, 'system') and os.system('(less) 2>/dev/null') == 0: return lambda text: pipepager(text, 'less') + if sys.platform == 'win32' or sys.platform.startswith('os2'): + return lambda text: tempfilepager(plain(text), 'more <') import tempfile (fd, filename) = tempfile.mkstemp() @@ -1384,7 +1384,10 @@ def tempfilepager(text, cmd): """Page through text by invoking a program on a temporary file.""" import tempfile filename = tempfile.mktemp() - file = open(filename, 'w') + if sys.platform.startswith('os2'): + file = open(filename, 'wt') + else: + file = open(filename, 'w') file.write(text) file.close() try: From 2acae3e4b2059247a63457561def2b326c84ee11 Mon Sep 17 00:00:00 2001 From: Silvan Scherrer Date: Wed, 23 Jan 2019 07:28:30 +0000 Subject: [PATCH 069/160] add simplified chinese to the alias table. fixes #328 git-svn-id: http://svn.netlabs.org/repos/rpm/python/trunk@1565 978522c7-42b7-df11-88a9-00e081727c95 --- Lib/encodings/aliases.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Lib/encodings/aliases.py b/Lib/encodings/aliases.py index a54cf774..abbe36cb 100644 --- a/Lib/encodings/aliases.py +++ b/Lib/encodings/aliases.py @@ -234,7 +234,9 @@ 'gb18030_2000' : 'gb18030', # gb2312 codec + '1381' : 'gb2312', 'chinese' : 'gb2312', + 'cp1381' : 'gb2312', 'csiso58gb231280' : 'gb2312', 'euc_cn' : 'gb2312', 'euccn' : 'gb2312', @@ -244,7 +246,9 @@ 'iso_ir_58' : 'gb2312', # gbk codec + '1386' : 'gbk', '936' : 'gbk', + 'cp1386' : 'gbk', 'cp936' : 'gbk', 'ms936' : 'gbk', From 149046f7fcb1e4b36521dc7af3ffa86c0c159a4e Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Sat, 16 May 2020 15:07:30 +0400 Subject: [PATCH 070/160] distutils: Support FOO_dll.a libraries in EMX toolchain. This is needed to e.g. support new sqlite RPMs where the import library is named sqlite3_dll.a (w/o the lib prefix). Note also that the rest of the EMX toolchain (e.g. emxomfld) supports that as well. Ideally, distutils should be always kept in sync with it. --- Lib/distutils/emxccompiler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index e3088317..54820cd4 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -220,7 +220,7 @@ def object_filenames (self, # override the find_library_file method from UnixCCompiler # to deal with file naming/searching differences def find_library_file(self, dirs, lib, debug=0): - try_names = [lib + ".lib", lib + ".a", "lib" + lib + ".lib", "lib" + lib + ".a", "lib" + lib + "_dll.a" ] + try_names = [lib + ".lib", lib + ".a", lib + "_dll.a", "lib" + lib + ".lib", "lib" + lib + ".a", "lib" + lib + "_dll.a" ] # get EMX's default library directory search path try: From e06a0bd659e2b8920e1a9028218a042d3db65c19 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Sat, 16 May 2020 15:10:13 +0400 Subject: [PATCH 071/160] Properly restore BEGINLIBPATH and friends after execve/spawnve on OS/2. If BEGINLIBPATH or friends were supplied more than once, it would be restored to the previous supplied value, not to the one it had before execve/spawnve. --- Modules/posixmodule.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 389cbc5a..869748e8 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -3382,11 +3382,15 @@ posix_execve(PyObject *self, PyObject *args) if (envid) { /* Process pseudo-env vars and omit them from the environment as * they could coufuse programs if passed on. Note that this code is - * not thread-safe but we have no other option here. */ + * not thread-safe but we have no other option here. Note that we + * allow multiple overrides where the last one is actually used. */ + char **oldval = sp_envvars[sp_envc] ? NULL : &sp_envvars[sp_envc]; sp_envids[sp_envc] = envid; - if (os2_putenv_special(envid, v, &sp_envvars[sp_envc])) { - if (sp_envvars[sp_envc]) - PyMem_DEL(sp_envvars[sp_envc]); + if (os2_putenv_special(envid, v, oldval)) { + if (oldval && *oldval) { + PyMem_DEL(*oldval); + *oldval = NULL; + } goto fail_2; } ++sp_envc; @@ -3640,11 +3644,15 @@ posix_spawnve(PyObject *self, PyObject *args) if (envid) { /* Process pseudo-env vars and omit them from the environment as * they could coufuse programs if passed on. Note that this code is - * not thread-safe but we have no other option here. */ + * not thread-safe but we have no other option here. Note that we + * allow multiple overrides where the last one is actually used. */ + char **oldval = sp_envvars[sp_envc] ? NULL : &sp_envvars[sp_envc]; sp_envids[sp_envc] = envid; - if (os2_putenv_special(envid, v, &sp_envvars[sp_envc])) { - if (sp_envvars[sp_envc]) - PyMem_DEL(sp_envvars[sp_envc]); + if (os2_putenv_special(envid, v, oldval)) { + if (oldval && *oldval) { + PyMem_DEL(*oldval); + *oldval = NULL; + } goto fail_2; } ++sp_envc; From c45aae4f53cd6958085591c545c0c3e1c5c8158d Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Sat, 16 May 2020 15:14:58 +0400 Subject: [PATCH 072/160] Make sys.getfilesystemencoding() never return None on OS/2. Closes #1. --- Python/sysmodule.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 057f5f86..bb236ad6 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -262,8 +262,13 @@ sys_getfilesystemencoding(PyObject *self) { if (Py_FileSystemDefaultEncoding) return PyString_FromString(Py_FileSystemDefaultEncoding); - Py_INCREF(Py_None); - return Py_None; + /* + * There is existing code that doesn't expect sys.getfilesystemencoding + * to return None despite the docs. Even Python's own saxutils.py does + * not expect it. For this reason, return the default encoding + * explicitly. See also https://github.com/bitwiseworks/python-os2/issues/1. + */ + return PyString_FromString(PyUnicode_GetDefaultEncoding()); } PyDoc_STRVAR(getfilesystemencoding_doc, From cbcdc29918956f0fc80ea71e507a0f4a6e87c226 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 25 Mar 2021 11:42:10 +0100 Subject: [PATCH 073/160] adapt spawn2 to current implementation, fix a timegm() build break --- Modules/clinic/posixmodule.c.h | 73 +++++++++++++++++++++++++++++++++- Modules/posixmodule.c | 34 ++++++++-------- Modules/timemodule.c | 2 + 3 files changed, 91 insertions(+), 18 deletions(-) diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index 41baa455..a981598f 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -2595,6 +2595,77 @@ os_spawnve(PyObject *module, PyObject *const *args, Py_ssize_t nargs) #endif /* (defined(HAVE_SPAWNV) || defined(HAVE_WSPAWNV) || defined(HAVE_RTPSPAWN)) */ +#if defined(__OS2__) + +PyDoc_STRVAR(os_spawn2__doc__, +"spawnve($module, mode, path, argv, cwd, env, stdfds /)\n" +"--\n" +"\n" +"Execute the program specified by path in a new process.\n" +"\n" +" mode\n" +" Mode of process creation.\n" +" path\n" +" Path of executable file.\n" +" argv\n" +" Tuple or list of strings.\n" +" cwd\n" +" Initial working directory for the new process.\n" +" env\n" +" Dictionary of strings mapping to strings.\n" +" stdfds\n" +" Tuple or list of 3 file descriptors for standard I/O."); + +#define OS_SPAWN2_METHODDEF \ + {"spawn2", (PyCFunction)(void(*)(void))os_spawn2, METH_FASTCALL, os_spawn2__doc__}, + +static PyObject * +os_spawn2_impl(PyObject *module, int mode, path_t *path, PyObject *argv, + path_t *cwd, PyObject *env, PyObject *stdfds); + +static PyObject * +os_spawn2(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + int mode; + path_t path = PATH_T_INITIALIZE("spawn2", "path", 0, 0); + path_t cwd = PATH_T_INITIALIZE("spawn2", "cwd", 0, 0); + PyObject *argv; + PyObject *env; + PyObject *stdfds; + + if (!_PyArg_CheckPositional("spawn2", nargs, 6, 6)) { + goto exit; + } + if (PyFloat_Check(args[0])) { + PyErr_SetString(PyExc_TypeError, + "integer argument expected, got float" ); + goto exit; + } + mode = _PyLong_AsInt(args[0]); + if (mode == -1 && PyErr_Occurred()) { + goto exit; + } + if (!path_converter(args[1], &path)) { + goto exit; + } + argv = args[2]; + if (!path_converter(args[3], &cwd)) { + goto exit; + } + env = args[4]; + stdfds = args[5]; + return_value = os_spawn2_impl(module, mode, &path, argv, &cwd, env, stdfds); + +exit: + /* Cleanup for path */ + path_cleanup(&path); + + return return_value; +} + +#endif /* __OS2__ */ + #if defined(HAVE_FORK) PyDoc_STRVAR(os_register_at_fork__doc__, @@ -2832,7 +2903,7 @@ os_sched_getscheduler(PyObject *module, PyObject *arg) #endif /* defined(HAVE_SCHED_H) && defined(HAVE_SCHED_SETSCHEDULER) */ -#if defined(HAVE_SCHED_H) && (defined(HAVE_SCHED_SETPARAM) || defined(HAVE_SCHED_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDPARAM)) +#if (defined(HAVE_SCHED_H) || defined(__OS2__)) && (defined(HAVE_SCHED_SETPARAM) || defined(HAVE_SCHED_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDULER) || defined(POSIX_SPAWN_SETSCHEDPARAM)) PyDoc_STRVAR(os_sched_param__doc__, "sched_param(sched_priority)\n" diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 41cd5b48..501c9159 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -5675,7 +5675,7 @@ parse_envlist(PyObject* env, Py_ssize_t *envc_ptr) { Py_ssize_t i, pos, envc; PyObject *keys=NULL, *vals=NULL; - PyObject *key, *val, *key2, *val2, *keyval; + PyObject *key, *val, *key2, *val2, *keyval=NULL; EXECV_CHAR **envlist; #ifdef __OS2__ ULONG envid; @@ -6762,7 +6762,7 @@ os.spawn2 Mode of process creation. path: path_t Path of executable file. - args: object + argv: object Tuple or list of strings. cwd: path_t Initial working directory for the new process. @@ -6777,26 +6777,20 @@ using LIBCx spawn2 API. [clinic start generated code]*/ static PyObject * -os_spawn2_impl(PyObject *self, PyObject *args) +os_spawn2_impl(PyObject *module, int mode, path_t *path, PyObject *argv, + path_t *cwd, PyObject *env, PyObject *stdfds) /*[clinic end generated code: output=xxx input=xxx]*/ { - char *path, *cwd = NULL; - PyObject *argv, *env, *stdfds; - char **argvlist; - char **envlist; + EXECV_CHAR **argvlist; + EXECV_CHAR **envlist; PyObject *key, *val, *keys=NULL, *vals=NULL, *res=NULL; - int mode, i, pos, argc, envc, stdfdc; + Py_ssize_t pos, argc, i, envc, stdfdc; Py_intptr_t spawnval; PyObject *(*argv_getitem)(PyObject *, Py_ssize_t); - int lastarg = 0; + Py_ssize_t lastarg = 0; PyObject *(*stdfd_getitem)(PyObject *, Py_ssize_t); int stdfdlist[3] = {0}; - /* Note: no need in et and Py_FileSystemDefaultEncoding for path arguments - * as on OS/2 this is always the same as the default encoding. */ - if (!PyArg_ParseTuple(args, "isOzOO:spawn2", &mode, - &path, &argv, &cwd, &env, &stdfds)) - return NULL; if (PyList_Check(argv)) { argc = PyList_Size(argv); argv_getitem = PyList_GetItem; @@ -6903,7 +6897,7 @@ os_spawn2_impl(PyObject *self, PyObject *args) /* Note that we don't process pseudo-env vars here as they are * processed internally by spawn2() to guarantee thread safety * in P_2_THREADSAFE mode. */ - len = PyString_Size(key) + PyString_Size(val) + 2; + len = PyBytes_GET_SIZE(key) + PyBytes_GET_SIZE(val) + 2; p = PyMem_NEW(char, len); if (p == NULL) { PyErr_NoMemory(); @@ -6930,9 +6924,13 @@ os_spawn2_impl(PyObject *self, PyObject *args) } } + if (PySys_Audit("os.spawn2", "iOOOO", mode, path->object, argv, cwd->object, env) < 0) { + goto fail_2; + } + Py_BEGIN_ALLOW_THREADS - spawnval = spawn2(mode, path, (const char * const *)argvlist, cwd, + spawnval = spawn2(mode, path->narrow, (const char * const *)argvlist, cwd->narrow, (const char * const *)envlist, stdfdc == -1 ? NULL : stdfdlist); @@ -7101,7 +7099,7 @@ os_fork_impl(PyObject *module) #endif /* HAVE_FORK */ -#ifdef HAVE_SCHED_H +#if defined(HAVE_SCHED_H) || defined(__OS2__) #ifdef HAVE_SCHED_GET_PRIORITY_MAX /*[clinic input] os.sched_get_priority_max @@ -7361,6 +7359,7 @@ os_sched_rr_get_interval_impl(PyObject *module, pid_t pid) #endif /* HAVE_SCHED_RR_GET_INTERVAL */ +#ifndef __OS2__ /*[clinic input] os.sched_yield @@ -7375,6 +7374,7 @@ os_sched_yield_impl(PyObject *module) return posix_error(); Py_RETURN_NONE; } +#endif #ifdef HAVE_SCHED_SETAFFINITY /* The minimum number of CPUs allocated in a cpu_set_t */ diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 80eab30c..338b22b2 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -488,7 +488,9 @@ time_gmtime(PyObject *self, PyObject *args) } #ifndef HAVE_TIMEGM +#ifndef __OS2__ static time_t +#endif timegm(struct tm *p) { /* XXX: the following implementation will not work for tm_year < 1970. From 7427bf239e95a80d87d2c093bea513545f581a72 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 25 Mar 2021 11:42:47 +0100 Subject: [PATCH 074/160] ignore some more files --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 80dcf34b..ea54670f 100644 --- a/.gitignore +++ b/.gitignore @@ -124,3 +124,9 @@ Tools/ssl/win32 # Ignore ./python binary on Unix but still look into ./Python/ directory. /python !/Python/ + +# ignore regenerated files +aclocal.m4 +configure +pyconfig.h.in +pyconfig.h.in~ \ No newline at end of file From 040ed640813711dc8de494d8e09c19d24fef7e79 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 26 Mar 2021 13:52:38 +0100 Subject: [PATCH 075/160] fix codepage issues --- Lib/_bootlocale.py | 2 +- Modules/_localemodule.c | 2 +- Python/initconfig.c | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Lib/_bootlocale.py b/Lib/_bootlocale.py index 3273a3b4..54e84ed3 100644 --- a/Lib/_bootlocale.py +++ b/Lib/_bootlocale.py @@ -7,7 +7,7 @@ import sys import _locale -if sys.platform.startswith("win"): +if sys.platform.startswith("win") or sys.platform.startswith("os2"): def getpreferredencoding(do_setlocale=True): if sys.flags.utf8_mode: return 'UTF-8' diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index c440f44d..660a34bb 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -475,7 +475,7 @@ PyLocale_getdefaultlocale(PyObject* self) strcpy( encoding, ""); if (DosQueryCp (sizeof (cp), cp, &cplen) == NO_ERROR) - PyOS_snprintf(encoding, sizeof(encoding), "CP%lu", cp[0]); + PyOS_snprintf(encoding, sizeof(encoding), "cp%lu", cp[0]); return Py_BuildValue("ss", locale, encoding); } diff --git a/Python/initconfig.c b/Python/initconfig.c index 3caed385..75bd19fa 100644 --- a/Python/initconfig.c +++ b/Python/initconfig.c @@ -24,6 +24,12 @@ # endif #endif +#if defined(__OS2__) +#define INCL_DOS +#define INCL_DOSERRORS +#include +#endif + #ifndef PLATLIBDIR # error "PLATLIBDIR macro must be defined" #endif @@ -1513,6 +1519,15 @@ config_get_locale_encoding(PyConfig *config, wchar_t **locale_encoding) return PyConfig_SetBytesString(config, locale_encoding, encoding); #elif defined(_Py_FORCE_UTF8_LOCALE) return PyConfig_SetString(config, locale_encoding, L"utf-8"); +#elif defined(__OS2__) + char encoding[100]; + ULONG cp[3]; + ULONG cplen; + + strcpy( encoding, ""); + if (DosQueryCp (sizeof (cp), cp, &cplen) == NO_ERROR) + PyOS_snprintf(encoding, sizeof(encoding), "cp%lu", cp[0]); + return PyConfig_SetBytesString(config, locale_encoding, encoding); #else const char *encoding = nl_langinfo(CODESET); if (!encoding || encoding[0] == '\0') { From 0c0b8c043dd15094f039312ec93b555df754f968 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 26 Mar 2021 13:54:28 +0100 Subject: [PATCH 076/160] add new functions like in nt --- Lib/importlib/_bootstrap_external.py | 6 +- Lib/os2knixpath.py | 72 +- Python/importlib_external.h | 5296 +++++++++++++------------- 3 files changed, 2719 insertions(+), 2655 deletions(-) diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 25a3f8c0..a4ba09f6 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -20,7 +20,7 @@ # anything specified at the class level. # Bootstrap-related code ###################################################### -_CASE_INSENSITIVE_PLATFORMS_STR_KEY = 'win', +_CASE_INSENSITIVE_PLATFORMS_STR_KEY = 'win', 'os2knix' _CASE_INSENSITIVE_PLATFORMS_BYTES_KEY = 'cygwin', 'darwin' _CASE_INSENSITIVE_PLATFORMS = (_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY + _CASE_INSENSITIVE_PLATFORMS_STR_KEY) @@ -1587,7 +1587,7 @@ def _setup(_bootstrap_module): self_module = sys.modules[__name__] # Directly load the os module (needed during bootstrap). - os_details = ('posix', ['/']), ('nt', ['\\', '/']) + os_details = ('posix', ['/']), ('nt', ['\\', '/']), ('os2', ['/', '\\']) for builtin_os, path_separators in os_details: # Assumption made in _path_join() assert all(len(sep) == 1 for sep in path_separators) @@ -1602,7 +1602,7 @@ def _setup(_bootstrap_module): except ImportError: continue else: - raise ImportError('importlib requires posix or nt') + raise ImportError('importlib requires posix or nt or os2') setattr(self_module, '_os', os_module) setattr(self_module, 'path_sep', path_sep) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index 943bbcea..79341bc0 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -9,15 +9,15 @@ import stat from genericpath import * from ntpath import (expanduser, expandvars, isabs, islink, splitdrive, - splitext, split, walk) + splitext, split) __all__ = ["normcase","isabs","join","splitdrive","split","splitext", "basename","dirname","commonprefix","getsize","getmtime", "getatime","getctime", "islink","exists","lexists","isdir","isfile", - "ismount","walk","expanduser","expandvars","normpath","abspath", - "samefile","sameopenfile","samestat", - "splitunc","curdir","pardir","sep","pathsep","defpath","altsep", - "extsep","devnull","realpath","supports_unicode_filenames"] + "ismount","expanduser","expandvars","normpath","abspath", + "curdir","pardir","sep","pathsep","defpath","altsep", + "extsep","devnull","realpath","supports_unicode_filenames","relpath", + "samefile","sameopenfile","samestat", "commonpath", "splitunc"] # strings representing various path-related bits and pieces curdir = '.' @@ -282,3 +282,65 @@ def relpath(path, start=curdir): if not rel_list: return curdir return join(*rel_list) + +# Return the longest common sub-path of the sequence of paths given as input. +# The function is case-insensitive and 'separator-insensitive', i.e. if the +# only difference between two paths is the use of '\' versus '/' as separator, +# they are deemed to be equal. +# +# However, the returned path will have the standard '\' separator (even if the +# given paths had the alternative '/' separator) and will have the case of the +# first path given in the sequence. Additionally, any trailing separator is +# stripped from the returned path. + +def commonpath(paths): + """Given a sequence of path names, returns the longest common sub-path.""" + + if not paths: + raise ValueError('commonpath() arg is an empty sequence') + + paths = tuple(map(os.fspath, paths)) + if isinstance(paths[0], bytes): + sep = b'\\' + altsep = b'/' + curdir = b'.' + else: + sep = '\\' + altsep = '/' + curdir = '.' + + try: + drivesplits = [splitdrive(p.replace(altsep, sep).lower()) for p in paths] + split_paths = [p.split(sep) for d, p in drivesplits] + + try: + isabs, = set(p[:1] == sep for d, p in drivesplits) + except ValueError: + raise ValueError("Can't mix absolute and relative paths") from None + + # Check that all drive letters or UNC paths match. The check is made only + # now otherwise type errors for mixing strings and bytes would not be + # caught. + if len(set(d for d, p in drivesplits)) != 1: + raise ValueError("Paths don't have the same drive") + + drive, path = splitdrive(paths[0].replace(altsep, sep)) + common = path.split(sep) + common = [c for c in common if c and c != curdir] + + split_paths = [[c for c in s if c and c != curdir] for s in split_paths] + s1 = min(split_paths) + s2 = max(split_paths) + for i, c in enumerate(s1): + if c != s2[i]: + common = common[:i] + break + else: + common = common[:len(s1)] + + prefix = drive + sep if isabs else drive + return prefix + sep.join(common) + except (TypeError, AttributeError): + genericpath._check_arg_types('commonpath', *paths) + raise + diff --git a/Python/importlib_external.h b/Python/importlib_external.h index a8d5d9aa..dbd01caa 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -58,2677 +58,2679 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 116,108,105,98,32,97,115,32,116,104,101,32,112,117,98,108, 105,99,45,102,97,99,105,110,103,32,118,101,114,115,105,111, 110,32,111,102,32,116,104,105,115,32,109,111,100,117,108,101, - 46,10,10,41,1,218,3,119,105,110,41,2,90,6,99,121, - 103,119,105,110,90,6,100,97,114,119,105,110,99,0,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,3,0,0,0,115,60,0,0,0,116,0,106,1,160,2, - 116,3,161,1,114,48,116,0,106,1,160,2,116,4,161,1, - 114,30,100,1,137,0,110,4,100,2,137,0,135,0,102,1, - 100,3,100,4,132,8,125,0,110,8,100,5,100,4,132,0, - 125,0,124,0,83,0,41,6,78,90,12,80,89,84,72,79, - 78,67,65,83,69,79,75,115,12,0,0,0,80,89,84,72, - 79,78,67,65,83,69,79,75,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,19,0,0, - 0,115,20,0,0,0,116,0,106,1,106,2,12,0,111,18, - 136,0,116,3,106,4,118,0,83,0,41,1,122,94,84,114, - 117,101,32,105,102,32,102,105,108,101,110,97,109,101,115,32, - 109,117,115,116,32,98,101,32,99,104,101,99,107,101,100,32, - 99,97,115,101,45,105,110,115,101,110,115,105,116,105,118,101, - 108,121,32,97,110,100,32,105,103,110,111,114,101,32,101,110, - 118,105,114,111,110,109,101,110,116,32,102,108,97,103,115,32, - 97,114,101,32,110,111,116,32,115,101,116,46,41,5,218,3, - 115,121,115,218,5,102,108,97,103,115,218,18,105,103,110,111, - 114,101,95,101,110,118,105,114,111,110,109,101,110,116,218,3, - 95,111,115,90,7,101,110,118,105,114,111,110,169,0,169,1, - 218,3,107,101,121,114,5,0,0,0,250,38,60,102,114,111, - 122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98, - 111,111,116,115,116,114,97,112,95,101,120,116,101,114,110,97, - 108,62,218,11,95,114,101,108,97,120,95,99,97,115,101,36, - 0,0,0,115,2,0,0,0,0,2,122,37,95,109,97,107, - 101,95,114,101,108,97,120,95,99,97,115,101,46,60,108,111, - 99,97,108,115,62,46,95,114,101,108,97,120,95,99,97,115, - 101,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,83,0,0,0,115,4,0,0,0,100, - 1,83,0,41,2,122,53,84,114,117,101,32,105,102,32,102, + 46,10,10,41,2,218,3,119,105,110,90,7,111,115,50,107, + 110,105,120,41,2,90,6,99,121,103,119,105,110,90,6,100, + 97,114,119,105,110,99,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,3,0,0,0,3,0,0,0,115,60, + 0,0,0,116,0,106,1,160,2,116,3,161,1,114,48,116, + 0,106,1,160,2,116,4,161,1,114,30,100,1,137,0,110, + 4,100,2,137,0,135,0,102,1,100,3,100,4,132,8,125, + 0,110,8,100,5,100,4,132,0,125,0,124,0,83,0,41, + 6,78,90,12,80,89,84,72,79,78,67,65,83,69,79,75, + 115,12,0,0,0,80,89,84,72,79,78,67,65,83,69,79, + 75,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,19,0,0,0,115,20,0,0,0,116, + 0,106,1,106,2,12,0,111,18,136,0,116,3,106,4,118, + 0,83,0,41,1,122,94,84,114,117,101,32,105,102,32,102, 105,108,101,110,97,109,101,115,32,109,117,115,116,32,98,101, 32,99,104,101,99,107,101,100,32,99,97,115,101,45,105,110, - 115,101,110,115,105,116,105,118,101,108,121,46,70,114,5,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,8,0,0,0,114,9,0,0,0,40,0,0,0,115, - 2,0,0,0,0,2,41,5,114,1,0,0,0,218,8,112, - 108,97,116,102,111,114,109,218,10,115,116,97,114,116,115,119, - 105,116,104,218,27,95,67,65,83,69,95,73,78,83,69,78, - 83,73,84,73,86,69,95,80,76,65,84,70,79,82,77,83, - 218,35,95,67,65,83,69,95,73,78,83,69,78,83,73,84, - 73,86,69,95,80,76,65,84,70,79,82,77,83,95,83,84, - 82,95,75,69,89,41,1,114,9,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,8,0,0,0,218,16,95,109,97, - 107,101,95,114,101,108,97,120,95,99,97,115,101,29,0,0, - 0,115,14,0,0,0,0,1,12,1,12,1,6,2,4,2, - 14,4,8,3,114,14,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,4,0,0,0,67,0, - 0,0,115,20,0,0,0,116,0,124,0,131,1,100,1,64, - 0,160,1,100,2,100,3,161,2,83,0,41,4,122,42,67, - 111,110,118,101,114,116,32,97,32,51,50,45,98,105,116,32, - 105,110,116,101,103,101,114,32,116,111,32,108,105,116,116,108, - 101,45,101,110,100,105,97,110,46,236,3,0,0,0,255,127, - 255,127,3,0,233,4,0,0,0,218,6,108,105,116,116,108, - 101,41,2,218,3,105,110,116,218,8,116,111,95,98,121,116, - 101,115,41,1,218,1,120,114,5,0,0,0,114,5,0,0, - 0,114,8,0,0,0,218,12,95,112,97,99,107,95,117,105, - 110,116,51,50,46,0,0,0,115,2,0,0,0,0,2,114, - 21,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,4,0,0,0,67,0,0,0,115,28,0, - 0,0,116,0,124,0,131,1,100,1,107,2,115,16,74,0, - 130,1,116,1,160,2,124,0,100,2,161,2,83,0,41,3, - 122,47,67,111,110,118,101,114,116,32,52,32,98,121,116,101, - 115,32,105,110,32,108,105,116,116,108,101,45,101,110,100,105, - 97,110,32,116,111,32,97,110,32,105,110,116,101,103,101,114, - 46,114,16,0,0,0,114,17,0,0,0,169,3,218,3,108, - 101,110,114,18,0,0,0,218,10,102,114,111,109,95,98,121, - 116,101,115,169,1,218,4,100,97,116,97,114,5,0,0,0, - 114,5,0,0,0,114,8,0,0,0,218,14,95,117,110,112, - 97,99,107,95,117,105,110,116,51,50,51,0,0,0,115,4, - 0,0,0,0,2,16,1,114,27,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0, - 0,67,0,0,0,115,28,0,0,0,116,0,124,0,131,1, - 100,1,107,2,115,16,74,0,130,1,116,1,160,2,124,0, - 100,2,161,2,83,0,41,3,122,47,67,111,110,118,101,114, - 116,32,50,32,98,121,116,101,115,32,105,110,32,108,105,116, - 116,108,101,45,101,110,100,105,97,110,32,116,111,32,97,110, - 32,105,110,116,101,103,101,114,46,233,2,0,0,0,114,17, - 0,0,0,114,22,0,0,0,114,25,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,8,0,0,0,218,14,95,117, - 110,112,97,99,107,95,117,105,110,116,49,54,56,0,0,0, - 115,4,0,0,0,0,2,16,1,114,29,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, - 0,0,0,71,0,0,0,115,20,0,0,0,116,0,160,1, - 100,1,100,2,132,0,124,0,68,0,131,1,161,1,83,0, - 41,3,122,31,82,101,112,108,97,99,101,109,101,110,116,32, - 102,111,114,32,111,115,46,112,97,116,104,46,106,111,105,110, - 40,41,46,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,5,0,0,0,83,0,0,0,115,26,0,0, - 0,103,0,124,0,93,18,125,1,124,1,114,4,124,1,160, - 0,116,1,161,1,145,2,113,4,83,0,114,5,0,0,0, - 41,2,218,6,114,115,116,114,105,112,218,15,112,97,116,104, - 95,115,101,112,97,114,97,116,111,114,115,41,2,218,2,46, - 48,218,4,112,97,114,116,114,5,0,0,0,114,5,0,0, - 0,114,8,0,0,0,218,10,60,108,105,115,116,99,111,109, - 112,62,64,0,0,0,115,4,0,0,0,6,1,6,255,122, - 30,95,112,97,116,104,95,106,111,105,110,46,60,108,111,99, - 97,108,115,62,46,60,108,105,115,116,99,111,109,112,62,41, - 2,218,8,112,97,116,104,95,115,101,112,218,4,106,111,105, - 110,41,1,218,10,112,97,116,104,95,112,97,114,116,115,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,10, - 95,112,97,116,104,95,106,111,105,110,62,0,0,0,115,6, - 0,0,0,0,2,10,1,2,255,114,38,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5, - 0,0,0,67,0,0,0,115,96,0,0,0,116,0,116,1, - 131,1,100,1,107,2,114,36,124,0,160,2,116,3,161,1, - 92,3,125,1,125,2,125,3,124,1,124,3,102,2,83,0, - 116,4,124,0,131,1,68,0,93,42,125,4,124,4,116,1, - 118,0,114,44,124,0,106,5,124,4,100,1,100,2,141,2, - 92,2,125,1,125,3,124,1,124,3,102,2,2,0,1,0, - 83,0,113,44,100,3,124,0,102,2,83,0,41,4,122,32, - 82,101,112,108,97,99,101,109,101,110,116,32,102,111,114,32, - 111,115,46,112,97,116,104,46,115,112,108,105,116,40,41,46, - 233,1,0,0,0,41,1,90,8,109,97,120,115,112,108,105, - 116,218,0,41,6,114,23,0,0,0,114,31,0,0,0,218, - 10,114,112,97,114,116,105,116,105,111,110,114,35,0,0,0, - 218,8,114,101,118,101,114,115,101,100,218,6,114,115,112,108, - 105,116,41,5,218,4,112,97,116,104,90,5,102,114,111,110, - 116,218,1,95,218,4,116,97,105,108,114,20,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,11, - 95,112,97,116,104,95,115,112,108,105,116,68,0,0,0,115, - 16,0,0,0,0,2,12,1,16,1,8,1,12,1,8,1, - 18,1,14,1,114,47,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, - 0,0,115,10,0,0,0,116,0,160,1,124,0,161,1,83, - 0,41,1,122,126,83,116,97,116,32,116,104,101,32,112,97, - 116,104,46,10,10,32,32,32,32,77,97,100,101,32,97,32, - 115,101,112,97,114,97,116,101,32,102,117,110,99,116,105,111, - 110,32,116,111,32,109,97,107,101,32,105,116,32,101,97,115, - 105,101,114,32,116,111,32,111,118,101,114,114,105,100,101,32, - 105,110,32,101,120,112,101,114,105,109,101,110,116,115,10,32, - 32,32,32,40,101,46,103,46,32,99,97,99,104,101,32,115, - 116,97,116,32,114,101,115,117,108,116,115,41,46,10,10,32, - 32,32,32,41,2,114,4,0,0,0,90,4,115,116,97,116, - 169,1,114,44,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,8,0,0,0,218,10,95,112,97,116,104,95,115,116, - 97,116,80,0,0,0,115,2,0,0,0,0,7,114,49,0, - 0,0,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,8,0,0,0,67,0,0,0,115,48,0,0,0, - 122,12,116,0,124,0,131,1,125,2,87,0,110,20,4,0, - 116,1,121,32,1,0,1,0,1,0,89,0,100,1,83,0, - 48,0,124,2,106,2,100,2,64,0,124,1,107,2,83,0, - 41,3,122,49,84,101,115,116,32,119,104,101,116,104,101,114, - 32,116,104,101,32,112,97,116,104,32,105,115,32,116,104,101, - 32,115,112,101,99,105,102,105,101,100,32,109,111,100,101,32, - 116,121,112,101,46,70,105,0,240,0,0,41,3,114,49,0, - 0,0,218,7,79,83,69,114,114,111,114,218,7,115,116,95, - 109,111,100,101,41,3,114,44,0,0,0,218,4,109,111,100, - 101,90,9,115,116,97,116,95,105,110,102,111,114,5,0,0, - 0,114,5,0,0,0,114,8,0,0,0,218,18,95,112,97, - 116,104,95,105,115,95,109,111,100,101,95,116,121,112,101,90, - 0,0,0,115,10,0,0,0,0,2,2,1,12,1,12,1, - 8,1,114,53,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, - 115,10,0,0,0,116,0,124,0,100,1,131,2,83,0,41, - 2,122,31,82,101,112,108,97,99,101,109,101,110,116,32,102, - 111,114,32,111,115,46,112,97,116,104,46,105,115,102,105,108, - 101,46,105,0,128,0,0,41,1,114,53,0,0,0,114,48, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, - 0,0,218,12,95,112,97,116,104,95,105,115,102,105,108,101, - 99,0,0,0,115,2,0,0,0,0,2,114,54,0,0,0, + 115,101,110,115,105,116,105,118,101,108,121,32,97,110,100,32, + 105,103,110,111,114,101,32,101,110,118,105,114,111,110,109,101, + 110,116,32,102,108,97,103,115,32,97,114,101,32,110,111,116, + 32,115,101,116,46,41,5,218,3,115,121,115,218,5,102,108, + 97,103,115,218,18,105,103,110,111,114,101,95,101,110,118,105, + 114,111,110,109,101,110,116,218,3,95,111,115,90,7,101,110, + 118,105,114,111,110,169,0,169,1,218,3,107,101,121,114,5, + 0,0,0,250,38,60,102,114,111,122,101,110,32,105,109,112, + 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, + 112,95,101,120,116,101,114,110,97,108,62,218,11,95,114,101, + 108,97,120,95,99,97,115,101,36,0,0,0,115,2,0,0, + 0,0,2,122,37,95,109,97,107,101,95,114,101,108,97,120, + 95,99,97,115,101,46,60,108,111,99,97,108,115,62,46,95, + 114,101,108,97,120,95,99,97,115,101,99,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,83, + 0,0,0,115,4,0,0,0,100,1,83,0,41,2,122,53, + 84,114,117,101,32,105,102,32,102,105,108,101,110,97,109,101, + 115,32,109,117,115,116,32,98,101,32,99,104,101,99,107,101, + 100,32,99,97,115,101,45,105,110,115,101,110,115,105,116,105, + 118,101,108,121,46,70,114,5,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,114, + 9,0,0,0,40,0,0,0,115,2,0,0,0,0,2,41, + 5,114,1,0,0,0,218,8,112,108,97,116,102,111,114,109, + 218,10,115,116,97,114,116,115,119,105,116,104,218,27,95,67, + 65,83,69,95,73,78,83,69,78,83,73,84,73,86,69,95, + 80,76,65,84,70,79,82,77,83,218,35,95,67,65,83,69, + 95,73,78,83,69,78,83,73,84,73,86,69,95,80,76,65, + 84,70,79,82,77,83,95,83,84,82,95,75,69,89,41,1, + 114,9,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 8,0,0,0,218,16,95,109,97,107,101,95,114,101,108,97, + 120,95,99,97,115,101,29,0,0,0,115,14,0,0,0,0, + 1,12,1,12,1,6,2,4,2,14,4,8,3,114,14,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,4,0,0,0,67,0,0,0,115,20,0,0,0, + 116,0,124,0,131,1,100,1,64,0,160,1,100,2,100,3, + 161,2,83,0,41,4,122,42,67,111,110,118,101,114,116,32, + 97,32,51,50,45,98,105,116,32,105,110,116,101,103,101,114, + 32,116,111,32,108,105,116,116,108,101,45,101,110,100,105,97, + 110,46,236,3,0,0,0,255,127,255,127,3,0,233,4,0, + 0,0,218,6,108,105,116,116,108,101,41,2,218,3,105,110, + 116,218,8,116,111,95,98,121,116,101,115,41,1,218,1,120, + 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,218, + 12,95,112,97,99,107,95,117,105,110,116,51,50,46,0,0, + 0,115,2,0,0,0,0,2,114,21,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0, + 0,0,67,0,0,0,115,28,0,0,0,116,0,124,0,131, + 1,100,1,107,2,115,16,74,0,130,1,116,1,160,2,124, + 0,100,2,161,2,83,0,41,3,122,47,67,111,110,118,101, + 114,116,32,52,32,98,121,116,101,115,32,105,110,32,108,105, + 116,116,108,101,45,101,110,100,105,97,110,32,116,111,32,97, + 110,32,105,110,116,101,103,101,114,46,114,16,0,0,0,114, + 17,0,0,0,169,3,218,3,108,101,110,114,18,0,0,0, + 218,10,102,114,111,109,95,98,121,116,101,115,169,1,218,4, + 100,97,116,97,114,5,0,0,0,114,5,0,0,0,114,8, + 0,0,0,218,14,95,117,110,112,97,99,107,95,117,105,110, + 116,51,50,51,0,0,0,115,4,0,0,0,0,2,16,1, + 114,27,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,4,0,0,0,67,0,0,0,115,28, + 0,0,0,116,0,124,0,131,1,100,1,107,2,115,16,74, + 0,130,1,116,1,160,2,124,0,100,2,161,2,83,0,41, + 3,122,47,67,111,110,118,101,114,116,32,50,32,98,121,116, + 101,115,32,105,110,32,108,105,116,116,108,101,45,101,110,100, + 105,97,110,32,116,111,32,97,110,32,105,110,116,101,103,101, + 114,46,233,2,0,0,0,114,17,0,0,0,114,22,0,0, + 0,114,25,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,8,0,0,0,218,14,95,117,110,112,97,99,107,95,117, + 105,110,116,49,54,56,0,0,0,115,4,0,0,0,0,2, + 16,1,114,29,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,4,0,0,0,71,0,0,0, + 115,20,0,0,0,116,0,160,1,100,1,100,2,132,0,124, + 0,68,0,131,1,161,1,83,0,41,3,122,31,82,101,112, + 108,97,99,101,109,101,110,116,32,102,111,114,32,111,115,46, + 112,97,116,104,46,106,111,105,110,40,41,46,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0, + 0,83,0,0,0,115,26,0,0,0,103,0,124,0,93,18, + 125,1,124,1,114,4,124,1,160,0,116,1,161,1,145,2, + 113,4,83,0,114,5,0,0,0,41,2,218,6,114,115,116, + 114,105,112,218,15,112,97,116,104,95,115,101,112,97,114,97, + 116,111,114,115,41,2,218,2,46,48,218,4,112,97,114,116, + 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,218, + 10,60,108,105,115,116,99,111,109,112,62,64,0,0,0,115, + 4,0,0,0,6,1,6,255,122,30,95,112,97,116,104,95, + 106,111,105,110,46,60,108,111,99,97,108,115,62,46,60,108, + 105,115,116,99,111,109,112,62,41,2,218,8,112,97,116,104, + 95,115,101,112,218,4,106,111,105,110,41,1,218,10,112,97, + 116,104,95,112,97,114,116,115,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,218,10,95,112,97,116,104,95,106, + 111,105,110,62,0,0,0,115,6,0,0,0,0,2,10,1, + 2,255,114,38,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,0, + 115,96,0,0,0,116,0,116,1,131,1,100,1,107,2,114, + 36,124,0,160,2,116,3,161,1,92,3,125,1,125,2,125, + 3,124,1,124,3,102,2,83,0,116,4,124,0,131,1,68, + 0,93,42,125,4,124,4,116,1,118,0,114,44,124,0,106, + 5,124,4,100,1,100,2,141,2,92,2,125,1,125,3,124, + 1,124,3,102,2,2,0,1,0,83,0,113,44,100,3,124, + 0,102,2,83,0,41,4,122,32,82,101,112,108,97,99,101, + 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, + 46,115,112,108,105,116,40,41,46,233,1,0,0,0,41,1, + 90,8,109,97,120,115,112,108,105,116,218,0,41,6,114,23, + 0,0,0,114,31,0,0,0,218,10,114,112,97,114,116,105, + 116,105,111,110,114,35,0,0,0,218,8,114,101,118,101,114, + 115,101,100,218,6,114,115,112,108,105,116,41,5,218,4,112, + 97,116,104,90,5,102,114,111,110,116,218,1,95,218,4,116, + 97,105,108,114,20,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,218,11,95,112,97,116,104,95,115, + 112,108,105,116,68,0,0,0,115,16,0,0,0,0,2,12, + 1,16,1,8,1,12,1,8,1,18,1,14,1,114,47,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,10,0,0,0, + 116,0,160,1,124,0,161,1,83,0,41,1,122,126,83,116, + 97,116,32,116,104,101,32,112,97,116,104,46,10,10,32,32, + 32,32,77,97,100,101,32,97,32,115,101,112,97,114,97,116, + 101,32,102,117,110,99,116,105,111,110,32,116,111,32,109,97, + 107,101,32,105,116,32,101,97,115,105,101,114,32,116,111,32, + 111,118,101,114,114,105,100,101,32,105,110,32,101,120,112,101, + 114,105,109,101,110,116,115,10,32,32,32,32,40,101,46,103, + 46,32,99,97,99,104,101,32,115,116,97,116,32,114,101,115, + 117,108,116,115,41,46,10,10,32,32,32,32,41,2,114,4, + 0,0,0,90,4,115,116,97,116,169,1,114,44,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,218, + 10,95,112,97,116,104,95,115,116,97,116,80,0,0,0,115, + 2,0,0,0,0,7,114,49,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, + 67,0,0,0,115,48,0,0,0,122,12,116,0,124,0,131, + 1,125,2,87,0,110,20,4,0,116,1,121,32,1,0,1, + 0,1,0,89,0,100,1,83,0,48,0,124,2,106,2,100, + 2,64,0,124,1,107,2,83,0,41,3,122,49,84,101,115, + 116,32,119,104,101,116,104,101,114,32,116,104,101,32,112,97, + 116,104,32,105,115,32,116,104,101,32,115,112,101,99,105,102, + 105,101,100,32,109,111,100,101,32,116,121,112,101,46,70,105, + 0,240,0,0,41,3,114,49,0,0,0,218,7,79,83,69, + 114,114,111,114,218,7,115,116,95,109,111,100,101,41,3,114, + 44,0,0,0,218,4,109,111,100,101,90,9,115,116,97,116, + 95,105,110,102,111,114,5,0,0,0,114,5,0,0,0,114, + 8,0,0,0,218,18,95,112,97,116,104,95,105,115,95,109, + 111,100,101,95,116,121,112,101,90,0,0,0,115,10,0,0, + 0,0,2,2,1,12,1,12,1,8,1,114,53,0,0,0, 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,22,0,0,0,124,0, - 115,12,116,0,160,1,161,0,125,0,116,2,124,0,100,1, - 131,2,83,0,41,2,122,30,82,101,112,108,97,99,101,109, - 101,110,116,32,102,111,114,32,111,115,46,112,97,116,104,46, - 105,115,100,105,114,46,105,0,64,0,0,41,3,114,4,0, - 0,0,218,6,103,101,116,99,119,100,114,53,0,0,0,114, - 48,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,218,11,95,112,97,116,104,95,105,115,100,105,114, - 104,0,0,0,115,6,0,0,0,0,2,4,1,8,1,114, - 56,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,3,0,0,0,67,0,0,0,115,26,0, - 0,0,124,0,160,0,116,1,161,1,112,24,124,0,100,1, - 100,2,133,2,25,0,116,2,118,0,83,0,41,3,122,142, - 82,101,112,108,97,99,101,109,101,110,116,32,102,111,114,32, - 111,115,46,112,97,116,104,46,105,115,97,98,115,46,10,10, - 32,32,32,32,67,111,110,115,105,100,101,114,115,32,97,32, - 87,105,110,100,111,119,115,32,100,114,105,118,101,45,114,101, - 108,97,116,105,118,101,32,112,97,116,104,32,40,110,111,32, - 100,114,105,118,101,44,32,98,117,116,32,115,116,97,114,116, - 115,32,119,105,116,104,32,115,108,97,115,104,41,32,116,111, - 10,32,32,32,32,115,116,105,108,108,32,98,101,32,34,97, - 98,115,111,108,117,116,101,34,46,10,32,32,32,32,114,39, - 0,0,0,233,3,0,0,0,41,3,114,11,0,0,0,114, - 31,0,0,0,218,20,95,112,97,116,104,115,101,112,115,95, - 119,105,116,104,95,99,111,108,111,110,114,48,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,11, - 95,112,97,116,104,95,105,115,97,98,115,111,0,0,0,115, - 2,0,0,0,0,6,114,59,0,0,0,233,182,1,0,0, - 99,3,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,11,0,0,0,67,0,0,0,115,178,0,0,0,100,1, - 160,0,124,0,116,1,124,0,131,1,161,2,125,3,116,2, - 160,3,124,3,116,2,106,4,116,2,106,5,66,0,116,2, - 106,6,66,0,124,2,100,2,64,0,161,3,125,4,122,70, - 116,7,160,8,124,4,100,3,161,2,143,26,125,5,124,5, - 160,9,124,1,161,1,1,0,87,0,100,4,4,0,4,0, - 131,3,1,0,110,16,49,0,115,94,48,0,1,0,1,0, - 1,0,89,0,1,0,116,2,160,10,124,3,124,0,161,2, - 1,0,87,0,110,54,4,0,116,11,121,172,1,0,1,0, - 1,0,122,14,116,2,160,12,124,3,161,1,1,0,87,0, - 110,18,4,0,116,11,121,164,1,0,1,0,1,0,89,0, - 110,2,48,0,130,0,89,0,110,2,48,0,100,4,83,0, - 41,5,122,162,66,101,115,116,45,101,102,102,111,114,116,32, - 102,117,110,99,116,105,111,110,32,116,111,32,119,114,105,116, - 101,32,100,97,116,97,32,116,111,32,97,32,112,97,116,104, - 32,97,116,111,109,105,99,97,108,108,121,46,10,32,32,32, - 32,66,101,32,112,114,101,112,97,114,101,100,32,116,111,32, - 104,97,110,100,108,101,32,97,32,70,105,108,101,69,120,105, - 115,116,115,69,114,114,111,114,32,105,102,32,99,111,110,99, - 117,114,114,101,110,116,32,119,114,105,116,105,110,103,32,111, - 102,32,116,104,101,10,32,32,32,32,116,101,109,112,111,114, - 97,114,121,32,102,105,108,101,32,105,115,32,97,116,116,101, - 109,112,116,101,100,46,250,5,123,125,46,123,125,114,60,0, - 0,0,90,2,119,98,78,41,13,218,6,102,111,114,109,97, - 116,218,2,105,100,114,4,0,0,0,90,4,111,112,101,110, - 90,6,79,95,69,88,67,76,90,7,79,95,67,82,69,65, - 84,90,8,79,95,87,82,79,78,76,89,218,3,95,105,111, - 218,6,70,105,108,101,73,79,218,5,119,114,105,116,101,218, - 7,114,101,112,108,97,99,101,114,50,0,0,0,90,6,117, - 110,108,105,110,107,41,6,114,44,0,0,0,114,26,0,0, - 0,114,52,0,0,0,90,8,112,97,116,104,95,116,109,112, - 90,2,102,100,218,4,102,105,108,101,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,218,13,95,119,114,105,116, - 101,95,97,116,111,109,105,99,120,0,0,0,115,28,0,0, - 0,0,5,16,1,6,1,22,255,4,2,2,3,14,1,40, - 1,16,1,12,1,2,1,14,1,12,1,6,1,114,69,0, - 0,0,105,97,13,0,0,114,28,0,0,0,114,17,0,0, - 0,115,2,0,0,0,13,10,90,11,95,95,112,121,99,97, - 99,104,101,95,95,122,4,111,112,116,45,122,3,46,112,121, - 122,4,46,112,121,99,78,41,1,218,12,111,112,116,105,109, - 105,122,97,116,105,111,110,99,2,0,0,0,0,0,0,0, - 1,0,0,0,12,0,0,0,5,0,0,0,67,0,0,0, - 115,88,1,0,0,124,1,100,1,117,1,114,52,116,0,160, - 1,100,2,116,2,161,2,1,0,124,2,100,1,117,1,114, - 40,100,3,125,3,116,3,124,3,131,1,130,1,124,1,114, - 48,100,4,110,2,100,5,125,2,116,4,160,5,124,0,161, - 1,125,0,116,6,124,0,131,1,92,2,125,4,125,5,124, - 5,160,7,100,6,161,1,92,3,125,6,125,7,125,8,116, - 8,106,9,106,10,125,9,124,9,100,1,117,0,114,114,116, - 11,100,7,131,1,130,1,100,4,160,12,124,6,114,126,124, - 6,110,2,124,8,124,7,124,9,103,3,161,1,125,10,124, - 2,100,1,117,0,114,172,116,8,106,13,106,14,100,8,107, - 2,114,164,100,4,125,2,110,8,116,8,106,13,106,14,125, - 2,116,15,124,2,131,1,125,2,124,2,100,4,107,3,114, - 224,124,2,160,16,161,0,115,210,116,17,100,9,160,18,124, - 2,161,1,131,1,130,1,100,10,160,18,124,10,116,19,124, - 2,161,3,125,10,124,10,116,20,100,8,25,0,23,0,125, - 11,116,8,106,21,100,1,117,1,144,1,114,76,116,22,124, - 4,131,1,144,1,115,16,116,23,116,4,160,24,161,0,124, - 4,131,2,125,4,124,4,100,5,25,0,100,11,107,2,144, - 1,114,56,124,4,100,8,25,0,116,25,118,1,144,1,114, - 56,124,4,100,12,100,1,133,2,25,0,125,4,116,23,116, - 8,106,21,124,4,160,26,116,25,161,1,124,11,131,3,83, - 0,116,23,124,4,116,27,124,11,131,3,83,0,41,13,97, - 254,2,0,0,71,105,118,101,110,32,116,104,101,32,112,97, - 116,104,32,116,111,32,97,32,46,112,121,32,102,105,108,101, - 44,32,114,101,116,117,114,110,32,116,104,101,32,112,97,116, - 104,32,116,111,32,105,116,115,32,46,112,121,99,32,102,105, - 108,101,46,10,10,32,32,32,32,84,104,101,32,46,112,121, - 32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,110, - 101,101,100,32,116,111,32,101,120,105,115,116,59,32,116,104, - 105,115,32,115,105,109,112,108,121,32,114,101,116,117,114,110, - 115,32,116,104,101,32,112,97,116,104,32,116,111,32,116,104, - 101,10,32,32,32,32,46,112,121,99,32,102,105,108,101,32, - 99,97,108,99,117,108,97,116,101,100,32,97,115,32,105,102, - 32,116,104,101,32,46,112,121,32,102,105,108,101,32,119,101, - 114,101,32,105,109,112,111,114,116,101,100,46,10,10,32,32, - 32,32,84,104,101,32,39,111,112,116,105,109,105,122,97,116, - 105,111,110,39,32,112,97,114,97,109,101,116,101,114,32,99, - 111,110,116,114,111,108,115,32,116,104,101,32,112,114,101,115, - 117,109,101,100,32,111,112,116,105,109,105,122,97,116,105,111, - 110,32,108,101,118,101,108,32,111,102,10,32,32,32,32,116, - 104,101,32,98,121,116,101,99,111,100,101,32,102,105,108,101, - 46,32,73,102,32,39,111,112,116,105,109,105,122,97,116,105, - 111,110,39,32,105,115,32,110,111,116,32,78,111,110,101,44, - 32,116,104,101,32,115,116,114,105,110,103,32,114,101,112,114, - 101,115,101,110,116,97,116,105,111,110,10,32,32,32,32,111, - 102,32,116,104,101,32,97,114,103,117,109,101,110,116,32,105, - 115,32,116,97,107,101,110,32,97,110,100,32,118,101,114,105, - 102,105,101,100,32,116,111,32,98,101,32,97,108,112,104,97, - 110,117,109,101,114,105,99,32,40,101,108,115,101,32,86,97, - 108,117,101,69,114,114,111,114,10,32,32,32,32,105,115,32, - 114,97,105,115,101,100,41,46,10,10,32,32,32,32,84,104, + 0,3,0,0,0,67,0,0,0,115,10,0,0,0,116,0, + 124,0,100,1,131,2,83,0,41,2,122,31,82,101,112,108, + 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, + 97,116,104,46,105,115,102,105,108,101,46,105,0,128,0,0, + 41,1,114,53,0,0,0,114,48,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,8,0,0,0,218,12,95,112,97, + 116,104,95,105,115,102,105,108,101,99,0,0,0,115,2,0, + 0,0,0,2,114,54,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, + 0,0,115,22,0,0,0,124,0,115,12,116,0,160,1,161, + 0,125,0,116,2,124,0,100,1,131,2,83,0,41,2,122, + 30,82,101,112,108,97,99,101,109,101,110,116,32,102,111,114, + 32,111,115,46,112,97,116,104,46,105,115,100,105,114,46,105, + 0,64,0,0,41,3,114,4,0,0,0,218,6,103,101,116, + 99,119,100,114,53,0,0,0,114,48,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,218,11,95,112, + 97,116,104,95,105,115,100,105,114,104,0,0,0,115,6,0, + 0,0,0,2,4,1,8,1,114,56,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,26,0,0,0,124,0,160,0,116, + 1,161,1,112,24,124,0,100,1,100,2,133,2,25,0,116, + 2,118,0,83,0,41,3,122,142,82,101,112,108,97,99,101, + 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, + 46,105,115,97,98,115,46,10,10,32,32,32,32,67,111,110, + 115,105,100,101,114,115,32,97,32,87,105,110,100,111,119,115, + 32,100,114,105,118,101,45,114,101,108,97,116,105,118,101,32, + 112,97,116,104,32,40,110,111,32,100,114,105,118,101,44,32, + 98,117,116,32,115,116,97,114,116,115,32,119,105,116,104,32, + 115,108,97,115,104,41,32,116,111,10,32,32,32,32,115,116, + 105,108,108,32,98,101,32,34,97,98,115,111,108,117,116,101, + 34,46,10,32,32,32,32,114,39,0,0,0,233,3,0,0, + 0,41,3,114,11,0,0,0,114,31,0,0,0,218,20,95, + 112,97,116,104,115,101,112,115,95,119,105,116,104,95,99,111, + 108,111,110,114,48,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,218,11,95,112,97,116,104,95,105, + 115,97,98,115,111,0,0,0,115,2,0,0,0,0,6,114, + 59,0,0,0,233,182,1,0,0,99,3,0,0,0,0,0, + 0,0,0,0,0,0,6,0,0,0,11,0,0,0,67,0, + 0,0,115,178,0,0,0,100,1,160,0,124,0,116,1,124, + 0,131,1,161,2,125,3,116,2,160,3,124,3,116,2,106, + 4,116,2,106,5,66,0,116,2,106,6,66,0,124,2,100, + 2,64,0,161,3,125,4,122,70,116,7,160,8,124,4,100, + 3,161,2,143,26,125,5,124,5,160,9,124,1,161,1,1, + 0,87,0,100,4,4,0,4,0,131,3,1,0,110,16,49, + 0,115,94,48,0,1,0,1,0,1,0,89,0,1,0,116, + 2,160,10,124,3,124,0,161,2,1,0,87,0,110,54,4, + 0,116,11,121,172,1,0,1,0,1,0,122,14,116,2,160, + 12,124,3,161,1,1,0,87,0,110,18,4,0,116,11,121, + 164,1,0,1,0,1,0,89,0,110,2,48,0,130,0,89, + 0,110,2,48,0,100,4,83,0,41,5,122,162,66,101,115, + 116,45,101,102,102,111,114,116,32,102,117,110,99,116,105,111, + 110,32,116,111,32,119,114,105,116,101,32,100,97,116,97,32, + 116,111,32,97,32,112,97,116,104,32,97,116,111,109,105,99, + 97,108,108,121,46,10,32,32,32,32,66,101,32,112,114,101, + 112,97,114,101,100,32,116,111,32,104,97,110,100,108,101,32, + 97,32,70,105,108,101,69,120,105,115,116,115,69,114,114,111, + 114,32,105,102,32,99,111,110,99,117,114,114,101,110,116,32, + 119,114,105,116,105,110,103,32,111,102,32,116,104,101,10,32, + 32,32,32,116,101,109,112,111,114,97,114,121,32,102,105,108, + 101,32,105,115,32,97,116,116,101,109,112,116,101,100,46,250, + 5,123,125,46,123,125,114,60,0,0,0,90,2,119,98,78, + 41,13,218,6,102,111,114,109,97,116,218,2,105,100,114,4, + 0,0,0,90,4,111,112,101,110,90,6,79,95,69,88,67, + 76,90,7,79,95,67,82,69,65,84,90,8,79,95,87,82, + 79,78,76,89,218,3,95,105,111,218,6,70,105,108,101,73, + 79,218,5,119,114,105,116,101,218,7,114,101,112,108,97,99, + 101,114,50,0,0,0,90,6,117,110,108,105,110,107,41,6, + 114,44,0,0,0,114,26,0,0,0,114,52,0,0,0,90, + 8,112,97,116,104,95,116,109,112,90,2,102,100,218,4,102, + 105,108,101,114,5,0,0,0,114,5,0,0,0,114,8,0, + 0,0,218,13,95,119,114,105,116,101,95,97,116,111,109,105, + 99,120,0,0,0,115,28,0,0,0,0,5,16,1,6,1, + 22,255,4,2,2,3,14,1,40,1,16,1,12,1,2,1, + 14,1,12,1,6,1,114,69,0,0,0,105,97,13,0,0, + 114,28,0,0,0,114,17,0,0,0,115,2,0,0,0,13, + 10,90,11,95,95,112,121,99,97,99,104,101,95,95,122,4, + 111,112,116,45,122,3,46,112,121,122,4,46,112,121,99,78, + 41,1,218,12,111,112,116,105,109,105,122,97,116,105,111,110, + 99,2,0,0,0,0,0,0,0,1,0,0,0,12,0,0, + 0,5,0,0,0,67,0,0,0,115,88,1,0,0,124,1, + 100,1,117,1,114,52,116,0,160,1,100,2,116,2,161,2, + 1,0,124,2,100,1,117,1,114,40,100,3,125,3,116,3, + 124,3,131,1,130,1,124,1,114,48,100,4,110,2,100,5, + 125,2,116,4,160,5,124,0,161,1,125,0,116,6,124,0, + 131,1,92,2,125,4,125,5,124,5,160,7,100,6,161,1, + 92,3,125,6,125,7,125,8,116,8,106,9,106,10,125,9, + 124,9,100,1,117,0,114,114,116,11,100,7,131,1,130,1, + 100,4,160,12,124,6,114,126,124,6,110,2,124,8,124,7, + 124,9,103,3,161,1,125,10,124,2,100,1,117,0,114,172, + 116,8,106,13,106,14,100,8,107,2,114,164,100,4,125,2, + 110,8,116,8,106,13,106,14,125,2,116,15,124,2,131,1, + 125,2,124,2,100,4,107,3,114,224,124,2,160,16,161,0, + 115,210,116,17,100,9,160,18,124,2,161,1,131,1,130,1, + 100,10,160,18,124,10,116,19,124,2,161,3,125,10,124,10, + 116,20,100,8,25,0,23,0,125,11,116,8,106,21,100,1, + 117,1,144,1,114,76,116,22,124,4,131,1,144,1,115,16, + 116,23,116,4,160,24,161,0,124,4,131,2,125,4,124,4, + 100,5,25,0,100,11,107,2,144,1,114,56,124,4,100,8, + 25,0,116,25,118,1,144,1,114,56,124,4,100,12,100,1, + 133,2,25,0,125,4,116,23,116,8,106,21,124,4,160,26, + 116,25,161,1,124,11,131,3,83,0,116,23,124,4,116,27, + 124,11,131,3,83,0,41,13,97,254,2,0,0,71,105,118, + 101,110,32,116,104,101,32,112,97,116,104,32,116,111,32,97, + 32,46,112,121,32,102,105,108,101,44,32,114,101,116,117,114, + 110,32,116,104,101,32,112,97,116,104,32,116,111,32,105,116, + 115,32,46,112,121,99,32,102,105,108,101,46,10,10,32,32, + 32,32,84,104,101,32,46,112,121,32,102,105,108,101,32,100, + 111,101,115,32,110,111,116,32,110,101,101,100,32,116,111,32, + 101,120,105,115,116,59,32,116,104,105,115,32,115,105,109,112, + 108,121,32,114,101,116,117,114,110,115,32,116,104,101,32,112, + 97,116,104,32,116,111,32,116,104,101,10,32,32,32,32,46, + 112,121,99,32,102,105,108,101,32,99,97,108,99,117,108,97, + 116,101,100,32,97,115,32,105,102,32,116,104,101,32,46,112, + 121,32,102,105,108,101,32,119,101,114,101,32,105,109,112,111, + 114,116,101,100,46,10,10,32,32,32,32,84,104,101,32,39, + 111,112,116,105,109,105,122,97,116,105,111,110,39,32,112,97, + 114,97,109,101,116,101,114,32,99,111,110,116,114,111,108,115, + 32,116,104,101,32,112,114,101,115,117,109,101,100,32,111,112, + 116,105,109,105,122,97,116,105,111,110,32,108,101,118,101,108, + 32,111,102,10,32,32,32,32,116,104,101,32,98,121,116,101, + 99,111,100,101,32,102,105,108,101,46,32,73,102,32,39,111, + 112,116,105,109,105,122,97,116,105,111,110,39,32,105,115,32, + 110,111,116,32,78,111,110,101,44,32,116,104,101,32,115,116, + 114,105,110,103,32,114,101,112,114,101,115,101,110,116,97,116, + 105,111,110,10,32,32,32,32,111,102,32,116,104,101,32,97, + 114,103,117,109,101,110,116,32,105,115,32,116,97,107,101,110, + 32,97,110,100,32,118,101,114,105,102,105,101,100,32,116,111, + 32,98,101,32,97,108,112,104,97,110,117,109,101,114,105,99, + 32,40,101,108,115,101,32,86,97,108,117,101,69,114,114,111, + 114,10,32,32,32,32,105,115,32,114,97,105,115,101,100,41, + 46,10,10,32,32,32,32,84,104,101,32,100,101,98,117,103, + 95,111,118,101,114,114,105,100,101,32,112,97,114,97,109,101, + 116,101,114,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,46,32,73,102,32,100,101,98,117,103,95,111,118,101,114, + 114,105,100,101,32,105,115,32,110,111,116,32,78,111,110,101, + 44,10,32,32,32,32,97,32,84,114,117,101,32,118,97,108, + 117,101,32,105,115,32,116,104,101,32,115,97,109,101,32,97, + 115,32,115,101,116,116,105,110,103,32,39,111,112,116,105,109, + 105,122,97,116,105,111,110,39,32,116,111,32,116,104,101,32, + 101,109,112,116,121,32,115,116,114,105,110,103,10,32,32,32, + 32,119,104,105,108,101,32,97,32,70,97,108,115,101,32,118, + 97,108,117,101,32,105,115,32,101,113,117,105,118,97,108,101, + 110,116,32,116,111,32,115,101,116,116,105,110,103,32,39,111, + 112,116,105,109,105,122,97,116,105,111,110,39,32,116,111,32, + 39,49,39,46,10,10,32,32,32,32,73,102,32,115,121,115, + 46,105,109,112,108,101,109,101,110,116,97,116,105,111,110,46, + 99,97,99,104,101,95,116,97,103,32,105,115,32,78,111,110, + 101,32,116,104,101,110,32,78,111,116,73,109,112,108,101,109, + 101,110,116,101,100,69,114,114,111,114,32,105,115,32,114,97, + 105,115,101,100,46,10,10,32,32,32,32,78,122,70,116,104, 101,32,100,101,98,117,103,95,111,118,101,114,114,105,100,101, 32,112,97,114,97,109,101,116,101,114,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,46,32,73,102,32,100,101,98, - 117,103,95,111,118,101,114,114,105,100,101,32,105,115,32,110, - 111,116,32,78,111,110,101,44,10,32,32,32,32,97,32,84, - 114,117,101,32,118,97,108,117,101,32,105,115,32,116,104,101, - 32,115,97,109,101,32,97,115,32,115,101,116,116,105,110,103, - 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, - 116,111,32,116,104,101,32,101,109,112,116,121,32,115,116,114, - 105,110,103,10,32,32,32,32,119,104,105,108,101,32,97,32, - 70,97,108,115,101,32,118,97,108,117,101,32,105,115,32,101, - 113,117,105,118,97,108,101,110,116,32,116,111,32,115,101,116, - 116,105,110,103,32,39,111,112,116,105,109,105,122,97,116,105, - 111,110,39,32,116,111,32,39,49,39,46,10,10,32,32,32, - 32,73,102,32,115,121,115,46,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,46,99,97,99,104,101,95,116,97,103, - 32,105,115,32,78,111,110,101,32,116,104,101,110,32,78,111, - 116,73,109,112,108,101,109,101,110,116,101,100,69,114,114,111, - 114,32,105,115,32,114,97,105,115,101,100,46,10,10,32,32, - 32,32,78,122,70,116,104,101,32,100,101,98,117,103,95,111, - 118,101,114,114,105,100,101,32,112,97,114,97,109,101,116,101, - 114,32,105,115,32,100,101,112,114,101,99,97,116,101,100,59, - 32,117,115,101,32,39,111,112,116,105,109,105,122,97,116,105, - 111,110,39,32,105,110,115,116,101,97,100,122,50,100,101,98, - 117,103,95,111,118,101,114,114,105,100,101,32,111,114,32,111, - 112,116,105,109,105,122,97,116,105,111,110,32,109,117,115,116, - 32,98,101,32,115,101,116,32,116,111,32,78,111,110,101,114, - 40,0,0,0,114,39,0,0,0,218,1,46,250,36,115,121, - 115,46,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 46,99,97,99,104,101,95,116,97,103,32,105,115,32,78,111, - 110,101,233,0,0,0,0,122,24,123,33,114,125,32,105,115, - 32,110,111,116,32,97,108,112,104,97,110,117,109,101,114,105, - 99,122,7,123,125,46,123,125,123,125,250,1,58,114,28,0, - 0,0,41,28,218,9,95,119,97,114,110,105,110,103,115,218, - 4,119,97,114,110,218,18,68,101,112,114,101,99,97,116,105, - 111,110,87,97,114,110,105,110,103,218,9,84,121,112,101,69, - 114,114,111,114,114,4,0,0,0,218,6,102,115,112,97,116, - 104,114,47,0,0,0,114,41,0,0,0,114,1,0,0,0, - 218,14,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 218,9,99,97,99,104,101,95,116,97,103,218,19,78,111,116, - 73,109,112,108,101,109,101,110,116,101,100,69,114,114,111,114, - 114,36,0,0,0,114,2,0,0,0,218,8,111,112,116,105, - 109,105,122,101,218,3,115,116,114,218,7,105,115,97,108,110, - 117,109,218,10,86,97,108,117,101,69,114,114,111,114,114,62, - 0,0,0,218,4,95,79,80,84,218,17,66,89,84,69,67, - 79,68,69,95,83,85,70,70,73,88,69,83,218,14,112,121, - 99,97,99,104,101,95,112,114,101,102,105,120,114,59,0,0, - 0,114,38,0,0,0,114,55,0,0,0,114,31,0,0,0, - 218,6,108,115,116,114,105,112,218,8,95,80,89,67,65,67, - 72,69,41,12,114,44,0,0,0,90,14,100,101,98,117,103, - 95,111,118,101,114,114,105,100,101,114,70,0,0,0,218,7, - 109,101,115,115,97,103,101,218,4,104,101,97,100,114,46,0, - 0,0,90,4,98,97,115,101,218,3,115,101,112,218,4,114, - 101,115,116,90,3,116,97,103,90,15,97,108,109,111,115,116, - 95,102,105,108,101,110,97,109,101,218,8,102,105,108,101,110, - 97,109,101,114,5,0,0,0,114,5,0,0,0,114,8,0, - 0,0,218,17,99,97,99,104,101,95,102,114,111,109,95,115, - 111,117,114,99,101,45,1,0,0,115,72,0,0,0,0,18, - 8,1,6,1,2,255,4,2,8,1,4,1,8,1,12,1, - 10,1,12,1,16,1,8,1,8,1,8,1,24,1,8,1, - 12,1,6,2,8,1,8,1,8,1,8,1,14,1,14,1, - 12,1,12,9,10,1,14,5,28,1,12,4,2,1,4,1, - 8,1,2,253,4,5,114,97,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,10,0,0,0,5,0,0,0, - 67,0,0,0,115,46,1,0,0,116,0,106,1,106,2,100, - 1,117,0,114,20,116,3,100,2,131,1,130,1,116,4,160, - 5,124,0,161,1,125,0,116,6,124,0,131,1,92,2,125, - 1,125,2,100,3,125,3,116,0,106,7,100,1,117,1,114, - 102,116,0,106,7,160,8,116,9,161,1,125,4,124,1,160, - 10,124,4,116,11,23,0,161,1,114,102,124,1,116,12,124, - 4,131,1,100,1,133,2,25,0,125,1,100,4,125,3,124, - 3,115,144,116,6,124,1,131,1,92,2,125,1,125,5,124, - 5,116,13,107,3,114,144,116,14,116,13,155,0,100,5,124, - 0,155,2,157,3,131,1,130,1,124,2,160,15,100,6,161, - 1,125,6,124,6,100,7,118,1,114,178,116,14,100,8,124, - 2,155,2,157,2,131,1,130,1,110,92,124,6,100,9,107, - 2,144,1,114,14,124,2,160,16,100,6,100,10,161,2,100, - 11,25,0,125,7,124,7,160,10,116,17,161,1,115,228,116, - 14,100,12,116,17,155,2,157,2,131,1,130,1,124,7,116, - 12,116,17,131,1,100,1,133,2,25,0,125,8,124,8,160, - 18,161,0,144,1,115,14,116,14,100,13,124,7,155,2,100, - 14,157,3,131,1,130,1,124,2,160,19,100,6,161,1,100, - 15,25,0,125,9,116,20,124,1,124,9,116,21,100,15,25, - 0,23,0,131,2,83,0,41,16,97,110,1,0,0,71,105, - 118,101,110,32,116,104,101,32,112,97,116,104,32,116,111,32, - 97,32,46,112,121,99,46,32,102,105,108,101,44,32,114,101, - 116,117,114,110,32,116,104,101,32,112,97,116,104,32,116,111, - 32,105,116,115,32,46,112,121,32,102,105,108,101,46,10,10, - 32,32,32,32,84,104,101,32,46,112,121,99,32,102,105,108, - 101,32,100,111,101,115,32,110,111,116,32,110,101,101,100,32, - 116,111,32,101,120,105,115,116,59,32,116,104,105,115,32,115, - 105,109,112,108,121,32,114,101,116,117,114,110,115,32,116,104, - 101,32,112,97,116,104,32,116,111,10,32,32,32,32,116,104, - 101,32,46,112,121,32,102,105,108,101,32,99,97,108,99,117, - 108,97,116,101,100,32,116,111,32,99,111,114,114,101,115,112, - 111,110,100,32,116,111,32,116,104,101,32,46,112,121,99,32, - 102,105,108,101,46,32,32,73,102,32,112,97,116,104,32,100, - 111,101,115,10,32,32,32,32,110,111,116,32,99,111,110,102, - 111,114,109,32,116,111,32,80,69,80,32,51,49,52,55,47, - 52,56,56,32,102,111,114,109,97,116,44,32,86,97,108,117, - 101,69,114,114,111,114,32,119,105,108,108,32,98,101,32,114, - 97,105,115,101,100,46,32,73,102,10,32,32,32,32,115,121, - 115,46,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 46,99,97,99,104,101,95,116,97,103,32,105,115,32,78,111, - 110,101,32,116,104,101,110,32,78,111,116,73,109,112,108,101, - 109,101,110,116,101,100,69,114,114,111,114,32,105,115,32,114, - 97,105,115,101,100,46,10,10,32,32,32,32,78,114,72,0, - 0,0,70,84,122,31,32,110,111,116,32,98,111,116,116,111, - 109,45,108,101,118,101,108,32,100,105,114,101,99,116,111,114, - 121,32,105,110,32,114,71,0,0,0,62,2,0,0,0,114, - 28,0,0,0,114,57,0,0,0,122,29,101,120,112,101,99, - 116,101,100,32,111,110,108,121,32,50,32,111,114,32,51,32, - 100,111,116,115,32,105,110,32,114,57,0,0,0,114,28,0, - 0,0,233,254,255,255,255,122,53,111,112,116,105,109,105,122, - 97,116,105,111,110,32,112,111,114,116,105,111,110,32,111,102, - 32,102,105,108,101,110,97,109,101,32,100,111,101,115,32,110, - 111,116,32,115,116,97,114,116,32,119,105,116,104,32,122,19, - 111,112,116,105,109,105,122,97,116,105,111,110,32,108,101,118, - 101,108,32,122,29,32,105,115,32,110,111,116,32,97,110,32, - 97,108,112,104,97,110,117,109,101,114,105,99,32,118,97,108, - 117,101,114,73,0,0,0,41,22,114,1,0,0,0,114,80, - 0,0,0,114,81,0,0,0,114,82,0,0,0,114,4,0, - 0,0,114,79,0,0,0,114,47,0,0,0,114,89,0,0, - 0,114,30,0,0,0,114,31,0,0,0,114,11,0,0,0, - 114,35,0,0,0,114,23,0,0,0,114,91,0,0,0,114, - 86,0,0,0,218,5,99,111,117,110,116,114,43,0,0,0, - 114,87,0,0,0,114,85,0,0,0,218,9,112,97,114,116, - 105,116,105,111,110,114,38,0,0,0,218,15,83,79,85,82, - 67,69,95,83,85,70,70,73,88,69,83,41,10,114,44,0, - 0,0,114,93,0,0,0,90,16,112,121,99,97,99,104,101, - 95,102,105,108,101,110,97,109,101,90,23,102,111,117,110,100, - 95,105,110,95,112,121,99,97,99,104,101,95,112,114,101,102, - 105,120,90,13,115,116,114,105,112,112,101,100,95,112,97,116, - 104,90,7,112,121,99,97,99,104,101,90,9,100,111,116,95, - 99,111,117,110,116,114,70,0,0,0,90,9,111,112,116,95, - 108,101,118,101,108,90,13,98,97,115,101,95,102,105,108,101, - 110,97,109,101,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,218,17,115,111,117,114,99,101,95,102,114,111,109, - 95,99,97,99,104,101,116,1,0,0,115,60,0,0,0,0, - 9,12,1,8,1,10,1,12,1,4,1,10,1,12,1,14, - 1,16,1,4,1,4,1,12,1,8,1,8,1,2,255,8, - 2,10,1,8,1,16,1,10,1,16,1,10,1,4,1,2, - 255,8,2,16,1,10,1,16,2,14,1,114,102,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,9,0,0,0,67,0,0,0,115,124,0,0,0,116,0, - 124,0,131,1,100,1,107,2,114,16,100,2,83,0,124,0, - 160,1,100,3,161,1,92,3,125,1,125,2,125,3,124,1, - 114,56,124,3,160,2,161,0,100,4,100,5,133,2,25,0, - 100,6,107,3,114,60,124,0,83,0,122,12,116,3,124,0, - 131,1,125,4,87,0,110,34,4,0,116,4,116,5,102,2, - 121,106,1,0,1,0,1,0,124,0,100,2,100,5,133,2, - 25,0,125,4,89,0,110,2,48,0,116,6,124,4,131,1, - 114,120,124,4,83,0,124,0,83,0,41,7,122,188,67,111, - 110,118,101,114,116,32,97,32,98,121,116,101,99,111,100,101, - 32,102,105,108,101,32,112,97,116,104,32,116,111,32,97,32, - 115,111,117,114,99,101,32,112,97,116,104,32,40,105,102,32, - 112,111,115,115,105,98,108,101,41,46,10,10,32,32,32,32, - 84,104,105,115,32,102,117,110,99,116,105,111,110,32,101,120, - 105,115,116,115,32,112,117,114,101,108,121,32,102,111,114,32, - 98,97,99,107,119,97,114,100,115,45,99,111,109,112,97,116, - 105,98,105,108,105,116,121,32,102,111,114,10,32,32,32,32, - 80,121,73,109,112,111,114,116,95,69,120,101,99,67,111,100, - 101,77,111,100,117,108,101,87,105,116,104,70,105,108,101,110, - 97,109,101,115,40,41,32,105,110,32,116,104,101,32,67,32, - 65,80,73,46,10,10,32,32,32,32,114,73,0,0,0,78, - 114,71,0,0,0,233,253,255,255,255,233,255,255,255,255,90, - 2,112,121,41,7,114,23,0,0,0,114,41,0,0,0,218, - 5,108,111,119,101,114,114,102,0,0,0,114,82,0,0,0, - 114,86,0,0,0,114,54,0,0,0,41,5,218,13,98,121, - 116,101,99,111,100,101,95,112,97,116,104,114,95,0,0,0, - 114,45,0,0,0,90,9,101,120,116,101,110,115,105,111,110, - 218,11,115,111,117,114,99,101,95,112,97,116,104,114,5,0, - 0,0,114,5,0,0,0,114,8,0,0,0,218,15,95,103, - 101,116,95,115,111,117,114,99,101,102,105,108,101,156,1,0, - 0,115,20,0,0,0,0,7,12,1,4,1,16,1,24,1, - 4,1,2,1,12,1,16,1,18,1,114,108,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 8,0,0,0,67,0,0,0,115,72,0,0,0,124,0,160, - 0,116,1,116,2,131,1,161,1,114,46,122,10,116,3,124, - 0,131,1,87,0,83,0,4,0,116,4,121,42,1,0,1, - 0,1,0,89,0,113,68,48,0,110,22,124,0,160,0,116, - 1,116,5,131,1,161,1,114,64,124,0,83,0,100,0,83, - 0,100,0,83,0,169,1,78,41,6,218,8,101,110,100,115, - 119,105,116,104,218,5,116,117,112,108,101,114,101,0,0,0, - 114,97,0,0,0,114,82,0,0,0,114,88,0,0,0,41, - 1,114,96,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,218,11,95,103,101,116,95,99,97,99,104, - 101,100,175,1,0,0,115,16,0,0,0,0,1,14,1,2, - 1,10,1,12,1,8,1,14,1,4,2,114,112,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,8,0,0,0,67,0,0,0,115,50,0,0,0,122,14, - 116,0,124,0,131,1,106,1,125,1,87,0,110,22,4,0, - 116,2,121,36,1,0,1,0,1,0,100,1,125,1,89,0, - 110,2,48,0,124,1,100,2,79,0,125,1,124,1,83,0, - 41,3,122,51,67,97,108,99,117,108,97,116,101,32,116,104, - 101,32,109,111,100,101,32,112,101,114,109,105,115,115,105,111, - 110,115,32,102,111,114,32,97,32,98,121,116,101,99,111,100, - 101,32,102,105,108,101,46,114,60,0,0,0,233,128,0,0, - 0,41,3,114,49,0,0,0,114,51,0,0,0,114,50,0, - 0,0,41,2,114,44,0,0,0,114,52,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,8,0,0,0,218,10,95, - 99,97,108,99,95,109,111,100,101,187,1,0,0,115,12,0, - 0,0,0,2,2,1,14,1,12,1,10,3,8,1,114,114, + 112,114,101,99,97,116,101,100,59,32,117,115,101,32,39,111, + 112,116,105,109,105,122,97,116,105,111,110,39,32,105,110,115, + 116,101,97,100,122,50,100,101,98,117,103,95,111,118,101,114, + 114,105,100,101,32,111,114,32,111,112,116,105,109,105,122,97, + 116,105,111,110,32,109,117,115,116,32,98,101,32,115,101,116, + 32,116,111,32,78,111,110,101,114,40,0,0,0,114,39,0, + 0,0,218,1,46,250,36,115,121,115,46,105,109,112,108,101, + 109,101,110,116,97,116,105,111,110,46,99,97,99,104,101,95, + 116,97,103,32,105,115,32,78,111,110,101,233,0,0,0,0, + 122,24,123,33,114,125,32,105,115,32,110,111,116,32,97,108, + 112,104,97,110,117,109,101,114,105,99,122,7,123,125,46,123, + 125,123,125,250,1,58,114,28,0,0,0,41,28,218,9,95, + 119,97,114,110,105,110,103,115,218,4,119,97,114,110,218,18, + 68,101,112,114,101,99,97,116,105,111,110,87,97,114,110,105, + 110,103,218,9,84,121,112,101,69,114,114,111,114,114,4,0, + 0,0,218,6,102,115,112,97,116,104,114,47,0,0,0,114, + 41,0,0,0,114,1,0,0,0,218,14,105,109,112,108,101, + 109,101,110,116,97,116,105,111,110,218,9,99,97,99,104,101, + 95,116,97,103,218,19,78,111,116,73,109,112,108,101,109,101, + 110,116,101,100,69,114,114,111,114,114,36,0,0,0,114,2, + 0,0,0,218,8,111,112,116,105,109,105,122,101,218,3,115, + 116,114,218,7,105,115,97,108,110,117,109,218,10,86,97,108, + 117,101,69,114,114,111,114,114,62,0,0,0,218,4,95,79, + 80,84,218,17,66,89,84,69,67,79,68,69,95,83,85,70, + 70,73,88,69,83,218,14,112,121,99,97,99,104,101,95,112, + 114,101,102,105,120,114,59,0,0,0,114,38,0,0,0,114, + 55,0,0,0,114,31,0,0,0,218,6,108,115,116,114,105, + 112,218,8,95,80,89,67,65,67,72,69,41,12,114,44,0, + 0,0,90,14,100,101,98,117,103,95,111,118,101,114,114,105, + 100,101,114,70,0,0,0,218,7,109,101,115,115,97,103,101, + 218,4,104,101,97,100,114,46,0,0,0,90,4,98,97,115, + 101,218,3,115,101,112,218,4,114,101,115,116,90,3,116,97, + 103,90,15,97,108,109,111,115,116,95,102,105,108,101,110,97, + 109,101,218,8,102,105,108,101,110,97,109,101,114,5,0,0, + 0,114,5,0,0,0,114,8,0,0,0,218,17,99,97,99, + 104,101,95,102,114,111,109,95,115,111,117,114,99,101,45,1, + 0,0,115,72,0,0,0,0,18,8,1,6,1,2,255,4, + 2,8,1,4,1,8,1,12,1,10,1,12,1,16,1,8, + 1,8,1,8,1,24,1,8,1,12,1,6,2,8,1,8, + 1,8,1,8,1,14,1,14,1,12,1,12,9,10,1,14, + 5,28,1,12,4,2,1,4,1,8,1,2,253,4,5,114, + 97,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,10,0,0,0,5,0,0,0,67,0,0,0,115,46,1, + 0,0,116,0,106,1,106,2,100,1,117,0,114,20,116,3, + 100,2,131,1,130,1,116,4,160,5,124,0,161,1,125,0, + 116,6,124,0,131,1,92,2,125,1,125,2,100,3,125,3, + 116,0,106,7,100,1,117,1,114,102,116,0,106,7,160,8, + 116,9,161,1,125,4,124,1,160,10,124,4,116,11,23,0, + 161,1,114,102,124,1,116,12,124,4,131,1,100,1,133,2, + 25,0,125,1,100,4,125,3,124,3,115,144,116,6,124,1, + 131,1,92,2,125,1,125,5,124,5,116,13,107,3,114,144, + 116,14,116,13,155,0,100,5,124,0,155,2,157,3,131,1, + 130,1,124,2,160,15,100,6,161,1,125,6,124,6,100,7, + 118,1,114,178,116,14,100,8,124,2,155,2,157,2,131,1, + 130,1,110,92,124,6,100,9,107,2,144,1,114,14,124,2, + 160,16,100,6,100,10,161,2,100,11,25,0,125,7,124,7, + 160,10,116,17,161,1,115,228,116,14,100,12,116,17,155,2, + 157,2,131,1,130,1,124,7,116,12,116,17,131,1,100,1, + 133,2,25,0,125,8,124,8,160,18,161,0,144,1,115,14, + 116,14,100,13,124,7,155,2,100,14,157,3,131,1,130,1, + 124,2,160,19,100,6,161,1,100,15,25,0,125,9,116,20, + 124,1,124,9,116,21,100,15,25,0,23,0,131,2,83,0, + 41,16,97,110,1,0,0,71,105,118,101,110,32,116,104,101, + 32,112,97,116,104,32,116,111,32,97,32,46,112,121,99,46, + 32,102,105,108,101,44,32,114,101,116,117,114,110,32,116,104, + 101,32,112,97,116,104,32,116,111,32,105,116,115,32,46,112, + 121,32,102,105,108,101,46,10,10,32,32,32,32,84,104,101, + 32,46,112,121,99,32,102,105,108,101,32,100,111,101,115,32, + 110,111,116,32,110,101,101,100,32,116,111,32,101,120,105,115, + 116,59,32,116,104,105,115,32,115,105,109,112,108,121,32,114, + 101,116,117,114,110,115,32,116,104,101,32,112,97,116,104,32, + 116,111,10,32,32,32,32,116,104,101,32,46,112,121,32,102, + 105,108,101,32,99,97,108,99,117,108,97,116,101,100,32,116, + 111,32,99,111,114,114,101,115,112,111,110,100,32,116,111,32, + 116,104,101,32,46,112,121,99,32,102,105,108,101,46,32,32, + 73,102,32,112,97,116,104,32,100,111,101,115,10,32,32,32, + 32,110,111,116,32,99,111,110,102,111,114,109,32,116,111,32, + 80,69,80,32,51,49,52,55,47,52,56,56,32,102,111,114, + 109,97,116,44,32,86,97,108,117,101,69,114,114,111,114,32, + 119,105,108,108,32,98,101,32,114,97,105,115,101,100,46,32, + 73,102,10,32,32,32,32,115,121,115,46,105,109,112,108,101, + 109,101,110,116,97,116,105,111,110,46,99,97,99,104,101,95, + 116,97,103,32,105,115,32,78,111,110,101,32,116,104,101,110, + 32,78,111,116,73,109,112,108,101,109,101,110,116,101,100,69, + 114,114,111,114,32,105,115,32,114,97,105,115,101,100,46,10, + 10,32,32,32,32,78,114,72,0,0,0,70,84,122,31,32, + 110,111,116,32,98,111,116,116,111,109,45,108,101,118,101,108, + 32,100,105,114,101,99,116,111,114,121,32,105,110,32,114,71, + 0,0,0,62,2,0,0,0,114,28,0,0,0,114,57,0, + 0,0,122,29,101,120,112,101,99,116,101,100,32,111,110,108, + 121,32,50,32,111,114,32,51,32,100,111,116,115,32,105,110, + 32,114,57,0,0,0,114,28,0,0,0,233,254,255,255,255, + 122,53,111,112,116,105,109,105,122,97,116,105,111,110,32,112, + 111,114,116,105,111,110,32,111,102,32,102,105,108,101,110,97, + 109,101,32,100,111,101,115,32,110,111,116,32,115,116,97,114, + 116,32,119,105,116,104,32,122,19,111,112,116,105,109,105,122, + 97,116,105,111,110,32,108,101,118,101,108,32,122,29,32,105, + 115,32,110,111,116,32,97,110,32,97,108,112,104,97,110,117, + 109,101,114,105,99,32,118,97,108,117,101,114,73,0,0,0, + 41,22,114,1,0,0,0,114,80,0,0,0,114,81,0,0, + 0,114,82,0,0,0,114,4,0,0,0,114,79,0,0,0, + 114,47,0,0,0,114,89,0,0,0,114,30,0,0,0,114, + 31,0,0,0,114,11,0,0,0,114,35,0,0,0,114,23, + 0,0,0,114,91,0,0,0,114,86,0,0,0,218,5,99, + 111,117,110,116,114,43,0,0,0,114,87,0,0,0,114,85, + 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,38, + 0,0,0,218,15,83,79,85,82,67,69,95,83,85,70,70, + 73,88,69,83,41,10,114,44,0,0,0,114,93,0,0,0, + 90,16,112,121,99,97,99,104,101,95,102,105,108,101,110,97, + 109,101,90,23,102,111,117,110,100,95,105,110,95,112,121,99, + 97,99,104,101,95,112,114,101,102,105,120,90,13,115,116,114, + 105,112,112,101,100,95,112,97,116,104,90,7,112,121,99,97, + 99,104,101,90,9,100,111,116,95,99,111,117,110,116,114,70, + 0,0,0,90,9,111,112,116,95,108,101,118,101,108,90,13, + 98,97,115,101,95,102,105,108,101,110,97,109,101,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,218,17,115,111, + 117,114,99,101,95,102,114,111,109,95,99,97,99,104,101,116, + 1,0,0,115,60,0,0,0,0,9,12,1,8,1,10,1, + 12,1,4,1,10,1,12,1,14,1,16,1,4,1,4,1, + 12,1,8,1,8,1,2,255,8,2,10,1,8,1,16,1, + 10,1,16,1,10,1,4,1,2,255,8,2,16,1,10,1, + 16,2,14,1,114,102,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,5,0,0,0,9,0,0,0,67,0, + 0,0,115,124,0,0,0,116,0,124,0,131,1,100,1,107, + 2,114,16,100,2,83,0,124,0,160,1,100,3,161,1,92, + 3,125,1,125,2,125,3,124,1,114,56,124,3,160,2,161, + 0,100,4,100,5,133,2,25,0,100,6,107,3,114,60,124, + 0,83,0,122,12,116,3,124,0,131,1,125,4,87,0,110, + 34,4,0,116,4,116,5,102,2,121,106,1,0,1,0,1, + 0,124,0,100,2,100,5,133,2,25,0,125,4,89,0,110, + 2,48,0,116,6,124,4,131,1,114,120,124,4,83,0,124, + 0,83,0,41,7,122,188,67,111,110,118,101,114,116,32,97, + 32,98,121,116,101,99,111,100,101,32,102,105,108,101,32,112, + 97,116,104,32,116,111,32,97,32,115,111,117,114,99,101,32, + 112,97,116,104,32,40,105,102,32,112,111,115,115,105,98,108, + 101,41,46,10,10,32,32,32,32,84,104,105,115,32,102,117, + 110,99,116,105,111,110,32,101,120,105,115,116,115,32,112,117, + 114,101,108,121,32,102,111,114,32,98,97,99,107,119,97,114, + 100,115,45,99,111,109,112,97,116,105,98,105,108,105,116,121, + 32,102,111,114,10,32,32,32,32,80,121,73,109,112,111,114, + 116,95,69,120,101,99,67,111,100,101,77,111,100,117,108,101, + 87,105,116,104,70,105,108,101,110,97,109,101,115,40,41,32, + 105,110,32,116,104,101,32,67,32,65,80,73,46,10,10,32, + 32,32,32,114,73,0,0,0,78,114,71,0,0,0,233,253, + 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,23, + 0,0,0,114,41,0,0,0,218,5,108,111,119,101,114,114, + 102,0,0,0,114,82,0,0,0,114,86,0,0,0,114,54, + 0,0,0,41,5,218,13,98,121,116,101,99,111,100,101,95, + 112,97,116,104,114,95,0,0,0,114,45,0,0,0,90,9, + 101,120,116,101,110,115,105,111,110,218,11,115,111,117,114,99, + 101,95,112,97,116,104,114,5,0,0,0,114,5,0,0,0, + 114,8,0,0,0,218,15,95,103,101,116,95,115,111,117,114, + 99,101,102,105,108,101,156,1,0,0,115,20,0,0,0,0, + 7,12,1,4,1,16,1,24,1,4,1,2,1,12,1,16, + 1,18,1,114,108,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,0, + 0,115,72,0,0,0,124,0,160,0,116,1,116,2,131,1, + 161,1,114,46,122,10,116,3,124,0,131,1,87,0,83,0, + 4,0,116,4,121,42,1,0,1,0,1,0,89,0,113,68, + 48,0,110,22,124,0,160,0,116,1,116,5,131,1,161,1, + 114,64,124,0,83,0,100,0,83,0,100,0,83,0,169,1, + 78,41,6,218,8,101,110,100,115,119,105,116,104,218,5,116, + 117,112,108,101,114,101,0,0,0,114,97,0,0,0,114,82, + 0,0,0,114,88,0,0,0,41,1,114,96,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,11, + 95,103,101,116,95,99,97,99,104,101,100,175,1,0,0,115, + 16,0,0,0,0,1,14,1,2,1,10,1,12,1,8,1, + 14,1,4,2,114,112,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,8,0,0,0,67,0, + 0,0,115,50,0,0,0,122,14,116,0,124,0,131,1,106, + 1,125,1,87,0,110,22,4,0,116,2,121,36,1,0,1, + 0,1,0,100,1,125,1,89,0,110,2,48,0,124,1,100, + 2,79,0,125,1,124,1,83,0,41,3,122,51,67,97,108, + 99,117,108,97,116,101,32,116,104,101,32,109,111,100,101,32, + 112,101,114,109,105,115,115,105,111,110,115,32,102,111,114,32, + 97,32,98,121,116,101,99,111,100,101,32,102,105,108,101,46, + 114,60,0,0,0,233,128,0,0,0,41,3,114,49,0,0, + 0,114,51,0,0,0,114,50,0,0,0,41,2,114,44,0, + 0,0,114,52,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,8,0,0,0,218,10,95,99,97,108,99,95,109,111, + 100,101,187,1,0,0,115,12,0,0,0,0,2,2,1,14, + 1,12,1,10,3,8,1,114,114,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,8,0,0, + 0,3,0,0,0,115,66,0,0,0,100,6,135,0,102,1, + 100,2,100,3,132,9,125,1,122,10,116,0,106,1,125,2, + 87,0,110,26,4,0,116,2,121,50,1,0,1,0,1,0, + 100,4,100,5,132,0,125,2,89,0,110,2,48,0,124,2, + 124,1,136,0,131,2,1,0,124,1,83,0,41,7,122,252, + 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114, + 105,102,121,32,116,104,97,116,32,116,104,101,32,109,111,100, + 117,108,101,32,98,101,105,110,103,32,114,101,113,117,101,115, + 116,101,100,32,109,97,116,99,104,101,115,32,116,104,101,32, + 111,110,101,32,116,104,101,10,32,32,32,32,108,111,97,100, + 101,114,32,99,97,110,32,104,97,110,100,108,101,46,10,10, + 32,32,32,32,84,104,101,32,102,105,114,115,116,32,97,114, + 103,117,109,101,110,116,32,40,115,101,108,102,41,32,109,117, + 115,116,32,100,101,102,105,110,101,32,95,110,97,109,101,32, + 119,104,105,99,104,32,116,104,101,32,115,101,99,111,110,100, + 32,97,114,103,117,109,101,110,116,32,105,115,10,32,32,32, + 32,99,111,109,112,97,114,101,100,32,97,103,97,105,110,115, + 116,46,32,73,102,32,116,104,101,32,99,111,109,112,97,114, + 105,115,111,110,32,102,97,105,108,115,32,116,104,101,110,32, + 73,109,112,111,114,116,69,114,114,111,114,32,105,115,32,114, + 97,105,115,101,100,46,10,10,32,32,32,32,78,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0, + 0,0,31,0,0,0,115,72,0,0,0,124,1,100,0,117, + 0,114,16,124,0,106,0,125,1,110,32,124,0,106,0,124, + 1,107,3,114,48,116,1,100,1,124,0,106,0,124,1,102, + 2,22,0,124,1,100,2,141,2,130,1,136,0,124,0,124, + 1,103,2,124,2,162,1,82,0,105,0,124,3,164,1,142, + 1,83,0,41,3,78,122,30,108,111,97,100,101,114,32,102, + 111,114,32,37,115,32,99,97,110,110,111,116,32,104,97,110, + 100,108,101,32,37,115,169,1,218,4,110,97,109,101,41,2, + 114,116,0,0,0,218,11,73,109,112,111,114,116,69,114,114, + 111,114,41,4,218,4,115,101,108,102,114,116,0,0,0,218, + 4,97,114,103,115,218,6,107,119,97,114,103,115,169,1,218, + 6,109,101,116,104,111,100,114,5,0,0,0,114,8,0,0, + 0,218,19,95,99,104,101,99,107,95,110,97,109,101,95,119, + 114,97,112,112,101,114,207,1,0,0,115,18,0,0,0,0, + 1,8,1,8,1,10,1,4,1,8,255,2,1,2,255,6, + 2,122,40,95,99,104,101,99,107,95,110,97,109,101,46,60, + 108,111,99,97,108,115,62,46,95,99,104,101,99,107,95,110, + 97,109,101,95,119,114,97,112,112,101,114,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,7,0,0,0, + 83,0,0,0,115,56,0,0,0,100,1,68,0,93,32,125, + 2,116,0,124,1,124,2,131,2,114,4,116,1,124,0,124, + 2,116,2,124,1,124,2,131,2,131,3,1,0,113,4,124, + 0,106,3,160,4,124,1,106,3,161,1,1,0,100,0,83, + 0,41,2,78,41,4,218,10,95,95,109,111,100,117,108,101, + 95,95,218,8,95,95,110,97,109,101,95,95,218,12,95,95, + 113,117,97,108,110,97,109,101,95,95,218,7,95,95,100,111, + 99,95,95,41,5,218,7,104,97,115,97,116,116,114,218,7, + 115,101,116,97,116,116,114,218,7,103,101,116,97,116,116,114, + 218,8,95,95,100,105,99,116,95,95,218,6,117,112,100,97, + 116,101,41,3,90,3,110,101,119,90,3,111,108,100,114,67, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, + 0,0,218,5,95,119,114,97,112,218,1,0,0,115,8,0, + 0,0,0,1,8,1,10,1,20,1,122,26,95,99,104,101, + 99,107,95,110,97,109,101,46,60,108,111,99,97,108,115,62, + 46,95,119,114,97,112,41,1,78,41,3,218,10,95,98,111, + 111,116,115,116,114,97,112,114,133,0,0,0,218,9,78,97, + 109,101,69,114,114,111,114,41,3,114,122,0,0,0,114,123, + 0,0,0,114,133,0,0,0,114,5,0,0,0,114,121,0, + 0,0,114,8,0,0,0,218,11,95,99,104,101,99,107,95, + 110,97,109,101,199,1,0,0,115,14,0,0,0,0,8,14, + 7,2,1,10,1,12,2,14,5,10,1,114,136,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,6,0,0,0,67,0,0,0,115,60,0,0,0,124,0, + 160,0,124,1,161,1,92,2,125,2,125,3,124,2,100,1, + 117,0,114,56,116,1,124,3,131,1,114,56,100,2,125,4, + 116,2,160,3,124,4,160,4,124,3,100,3,25,0,161,1, + 116,5,161,2,1,0,124,2,83,0,41,4,122,155,84,114, + 121,32,116,111,32,102,105,110,100,32,97,32,108,111,97,100, + 101,114,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,32,98,121,32,100, + 101,108,101,103,97,116,105,110,103,32,116,111,10,32,32,32, + 32,115,101,108,102,46,102,105,110,100,95,108,111,97,100,101, + 114,40,41,46,10,10,32,32,32,32,84,104,105,115,32,109, + 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,32,105,110,32,102,97,118,111,114,32,111,102,32, + 102,105,110,100,101,114,46,102,105,110,100,95,115,112,101,99, + 40,41,46,10,10,32,32,32,32,78,122,44,78,111,116,32, + 105,109,112,111,114,116,105,110,103,32,100,105,114,101,99,116, + 111,114,121,32,123,125,58,32,109,105,115,115,105,110,103,32, + 95,95,105,110,105,116,95,95,114,73,0,0,0,41,6,218, + 11,102,105,110,100,95,108,111,97,100,101,114,114,23,0,0, + 0,114,75,0,0,0,114,76,0,0,0,114,62,0,0,0, + 218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,41, + 5,114,118,0,0,0,218,8,102,117,108,108,110,97,109,101, + 218,6,108,111,97,100,101,114,218,8,112,111,114,116,105,111, + 110,115,218,3,109,115,103,114,5,0,0,0,114,5,0,0, + 0,114,8,0,0,0,218,17,95,102,105,110,100,95,109,111, + 100,117,108,101,95,115,104,105,109,227,1,0,0,115,10,0, + 0,0,0,10,14,1,16,1,4,1,22,1,114,143,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,6,0, + 0,0,4,0,0,0,67,0,0,0,115,166,0,0,0,124, + 0,100,1,100,2,133,2,25,0,125,3,124,3,116,0,107, + 3,114,64,100,3,124,1,155,2,100,4,124,3,155,2,157, + 4,125,4,116,1,160,2,100,5,124,4,161,2,1,0,116, + 3,124,4,102,1,105,0,124,2,164,1,142,1,130,1,116, + 4,124,0,131,1,100,6,107,0,114,106,100,7,124,1,155, + 2,157,2,125,4,116,1,160,2,100,5,124,4,161,2,1, + 0,116,5,124,4,131,1,130,1,116,6,124,0,100,2,100, + 8,133,2,25,0,131,1,125,5,124,5,100,9,64,0,114, + 162,100,10,124,5,155,2,100,11,124,1,155,2,157,4,125, + 4,116,3,124,4,102,1,105,0,124,2,164,1,142,1,130, + 1,124,5,83,0,41,12,97,84,2,0,0,80,101,114,102, + 111,114,109,32,98,97,115,105,99,32,118,97,108,105,100,105, + 116,121,32,99,104,101,99,107,105,110,103,32,111,102,32,97, + 32,112,121,99,32,104,101,97,100,101,114,32,97,110,100,32, + 114,101,116,117,114,110,32,116,104,101,32,102,108,97,103,115, + 32,102,105,101,108,100,44,10,32,32,32,32,119,104,105,99, + 104,32,100,101,116,101,114,109,105,110,101,115,32,104,111,119, + 32,116,104,101,32,112,121,99,32,115,104,111,117,108,100,32, + 98,101,32,102,117,114,116,104,101,114,32,118,97,108,105,100, + 97,116,101,100,32,97,103,97,105,110,115,116,32,116,104,101, + 32,115,111,117,114,99,101,46,10,10,32,32,32,32,42,100, + 97,116,97,42,32,105,115,32,116,104,101,32,99,111,110,116, + 101,110,116,115,32,111,102,32,116,104,101,32,112,121,99,32, + 102,105,108,101,46,32,40,79,110,108,121,32,116,104,101,32, + 102,105,114,115,116,32,49,54,32,98,121,116,101,115,32,97, + 114,101,10,32,32,32,32,114,101,113,117,105,114,101,100,44, + 32,116,104,111,117,103,104,46,41,10,10,32,32,32,32,42, + 110,97,109,101,42,32,105,115,32,116,104,101,32,110,97,109, + 101,32,111,102,32,116,104,101,32,109,111,100,117,108,101,32, + 98,101,105,110,103,32,105,109,112,111,114,116,101,100,46,32, + 73,116,32,105,115,32,117,115,101,100,32,102,111,114,32,108, + 111,103,103,105,110,103,46,10,10,32,32,32,32,42,101,120, + 99,95,100,101,116,97,105,108,115,42,32,105,115,32,97,32, + 100,105,99,116,105,111,110,97,114,121,32,112,97,115,115,101, + 100,32,116,111,32,73,109,112,111,114,116,69,114,114,111,114, + 32,105,102,32,105,116,32,114,97,105,115,101,100,32,102,111, + 114,10,32,32,32,32,105,109,112,114,111,118,101,100,32,100, + 101,98,117,103,103,105,110,103,46,10,10,32,32,32,32,73, + 109,112,111,114,116,69,114,114,111,114,32,105,115,32,114,97, + 105,115,101,100,32,119,104,101,110,32,116,104,101,32,109,97, + 103,105,99,32,110,117,109,98,101,114,32,105,115,32,105,110, + 99,111,114,114,101,99,116,32,111,114,32,119,104,101,110,32, + 116,104,101,32,102,108,97,103,115,10,32,32,32,32,102,105, + 101,108,100,32,105,115,32,105,110,118,97,108,105,100,46,32, + 69,79,70,69,114,114,111,114,32,105,115,32,114,97,105,115, + 101,100,32,119,104,101,110,32,116,104,101,32,100,97,116,97, + 32,105,115,32,102,111,117,110,100,32,116,111,32,98,101,32, + 116,114,117,110,99,97,116,101,100,46,10,10,32,32,32,32, + 78,114,16,0,0,0,122,20,98,97,100,32,109,97,103,105, + 99,32,110,117,109,98,101,114,32,105,110,32,122,2,58,32, + 250,2,123,125,233,16,0,0,0,122,40,114,101,97,99,104, + 101,100,32,69,79,70,32,119,104,105,108,101,32,114,101,97, + 100,105,110,103,32,112,121,99,32,104,101,97,100,101,114,32, + 111,102,32,233,8,0,0,0,233,252,255,255,255,122,14,105, + 110,118,97,108,105,100,32,102,108,97,103,115,32,122,4,32, + 105,110,32,41,7,218,12,77,65,71,73,67,95,78,85,77, + 66,69,82,114,134,0,0,0,218,16,95,118,101,114,98,111, + 115,101,95,109,101,115,115,97,103,101,114,117,0,0,0,114, + 23,0,0,0,218,8,69,79,70,69,114,114,111,114,114,27, + 0,0,0,41,6,114,26,0,0,0,114,116,0,0,0,218, + 11,101,120,99,95,100,101,116,97,105,108,115,90,5,109,97, + 103,105,99,114,92,0,0,0,114,2,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,218,13,95,99, + 108,97,115,115,105,102,121,95,112,121,99,244,1,0,0,115, + 28,0,0,0,0,16,12,1,8,1,16,1,12,1,16,1, + 12,1,10,1,12,1,8,1,16,2,8,1,16,1,16,1, + 114,152,0,0,0,99,5,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,4,0,0,0,67,0,0,0,115,120, + 0,0,0,116,0,124,0,100,1,100,2,133,2,25,0,131, + 1,124,1,100,3,64,0,107,3,114,62,100,4,124,3,155, + 2,157,2,125,5,116,1,160,2,100,5,124,5,161,2,1, + 0,116,3,124,5,102,1,105,0,124,4,164,1,142,1,130, + 1,124,2,100,6,117,1,114,116,116,0,124,0,100,2,100, + 7,133,2,25,0,131,1,124,2,100,3,64,0,107,3,114, + 116,116,3,100,4,124,3,155,2,157,2,102,1,105,0,124, + 4,164,1,142,1,130,1,100,6,83,0,41,8,97,7,2, + 0,0,86,97,108,105,100,97,116,101,32,97,32,112,121,99, + 32,97,103,97,105,110,115,116,32,116,104,101,32,115,111,117, + 114,99,101,32,108,97,115,116,45,109,111,100,105,102,105,101, + 100,32,116,105,109,101,46,10,10,32,32,32,32,42,100,97, + 116,97,42,32,105,115,32,116,104,101,32,99,111,110,116,101, + 110,116,115,32,111,102,32,116,104,101,32,112,121,99,32,102, + 105,108,101,46,32,40,79,110,108,121,32,116,104,101,32,102, + 105,114,115,116,32,49,54,32,98,121,116,101,115,32,97,114, + 101,10,32,32,32,32,114,101,113,117,105,114,101,100,46,41, + 10,10,32,32,32,32,42,115,111,117,114,99,101,95,109,116, + 105,109,101,42,32,105,115,32,116,104,101,32,108,97,115,116, + 32,109,111,100,105,102,105,101,100,32,116,105,109,101,115,116, + 97,109,112,32,111,102,32,116,104,101,32,115,111,117,114,99, + 101,32,102,105,108,101,46,10,10,32,32,32,32,42,115,111, + 117,114,99,101,95,115,105,122,101,42,32,105,115,32,78,111, + 110,101,32,111,114,32,116,104,101,32,115,105,122,101,32,111, + 102,32,116,104,101,32,115,111,117,114,99,101,32,102,105,108, + 101,32,105,110,32,98,121,116,101,115,46,10,10,32,32,32, + 32,42,110,97,109,101,42,32,105,115,32,116,104,101,32,110, + 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, + 101,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, + 46,32,73,116,32,105,115,32,117,115,101,100,32,102,111,114, + 32,108,111,103,103,105,110,103,46,10,10,32,32,32,32,42, + 101,120,99,95,100,101,116,97,105,108,115,42,32,105,115,32, + 97,32,100,105,99,116,105,111,110,97,114,121,32,112,97,115, + 115,101,100,32,116,111,32,73,109,112,111,114,116,69,114,114, + 111,114,32,105,102,32,105,116,32,114,97,105,115,101,100,32, + 102,111,114,10,32,32,32,32,105,109,112,114,111,118,101,100, + 32,100,101,98,117,103,103,105,110,103,46,10,10,32,32,32, + 32,65,110,32,73,109,112,111,114,116,69,114,114,111,114,32, + 105,115,32,114,97,105,115,101,100,32,105,102,32,116,104,101, + 32,98,121,116,101,99,111,100,101,32,105,115,32,115,116,97, + 108,101,46,10,10,32,32,32,32,114,146,0,0,0,233,12, + 0,0,0,114,15,0,0,0,122,22,98,121,116,101,99,111, + 100,101,32,105,115,32,115,116,97,108,101,32,102,111,114,32, + 114,144,0,0,0,78,114,145,0,0,0,41,4,114,27,0, + 0,0,114,134,0,0,0,114,149,0,0,0,114,117,0,0, + 0,41,6,114,26,0,0,0,218,12,115,111,117,114,99,101, + 95,109,116,105,109,101,218,11,115,111,117,114,99,101,95,115, + 105,122,101,114,116,0,0,0,114,151,0,0,0,114,92,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,8,0,0, + 0,218,23,95,118,97,108,105,100,97,116,101,95,116,105,109, + 101,115,116,97,109,112,95,112,121,99,21,2,0,0,115,16, + 0,0,0,0,19,24,1,10,1,12,1,16,1,8,1,22, + 255,2,2,114,156,0,0,0,99,4,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,0, + 0,115,42,0,0,0,124,0,100,1,100,2,133,2,25,0, + 124,1,107,3,114,38,116,0,100,3,124,2,155,2,157,2, + 102,1,105,0,124,3,164,1,142,1,130,1,100,4,83,0, + 41,5,97,243,1,0,0,86,97,108,105,100,97,116,101,32, + 97,32,104,97,115,104,45,98,97,115,101,100,32,112,121,99, + 32,98,121,32,99,104,101,99,107,105,110,103,32,116,104,101, + 32,114,101,97,108,32,115,111,117,114,99,101,32,104,97,115, + 104,32,97,103,97,105,110,115,116,32,116,104,101,32,111,110, + 101,32,105,110,10,32,32,32,32,116,104,101,32,112,121,99, + 32,104,101,97,100,101,114,46,10,10,32,32,32,32,42,100, + 97,116,97,42,32,105,115,32,116,104,101,32,99,111,110,116, + 101,110,116,115,32,111,102,32,116,104,101,32,112,121,99,32, + 102,105,108,101,46,32,40,79,110,108,121,32,116,104,101,32, + 102,105,114,115,116,32,49,54,32,98,121,116,101,115,32,97, + 114,101,10,32,32,32,32,114,101,113,117,105,114,101,100,46, + 41,10,10,32,32,32,32,42,115,111,117,114,99,101,95,104, + 97,115,104,42,32,105,115,32,116,104,101,32,105,109,112,111, + 114,116,108,105,98,46,117,116,105,108,46,115,111,117,114,99, + 101,95,104,97,115,104,40,41,32,111,102,32,116,104,101,32, + 115,111,117,114,99,101,32,102,105,108,101,46,10,10,32,32, + 32,32,42,110,97,109,101,42,32,105,115,32,116,104,101,32, + 110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,117, + 108,101,32,98,101,105,110,103,32,105,109,112,111,114,116,101, + 100,46,32,73,116,32,105,115,32,117,115,101,100,32,102,111, + 114,32,108,111,103,103,105,110,103,46,10,10,32,32,32,32, + 42,101,120,99,95,100,101,116,97,105,108,115,42,32,105,115, + 32,97,32,100,105,99,116,105,111,110,97,114,121,32,112,97, + 115,115,101,100,32,116,111,32,73,109,112,111,114,116,69,114, + 114,111,114,32,105,102,32,105,116,32,114,97,105,115,101,100, + 32,102,111,114,10,32,32,32,32,105,109,112,114,111,118,101, + 100,32,100,101,98,117,103,103,105,110,103,46,10,10,32,32, + 32,32,65,110,32,73,109,112,111,114,116,69,114,114,111,114, + 32,105,115,32,114,97,105,115,101,100,32,105,102,32,116,104, + 101,32,98,121,116,101,99,111,100,101,32,105,115,32,115,116, + 97,108,101,46,10,10,32,32,32,32,114,146,0,0,0,114, + 145,0,0,0,122,46,104,97,115,104,32,105,110,32,98,121, + 116,101,99,111,100,101,32,100,111,101,115,110,39,116,32,109, + 97,116,99,104,32,104,97,115,104,32,111,102,32,115,111,117, + 114,99,101,32,78,41,1,114,117,0,0,0,41,4,114,26, + 0,0,0,218,11,115,111,117,114,99,101,95,104,97,115,104, + 114,116,0,0,0,114,151,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,8,0,0,0,218,18,95,118,97,108,105, + 100,97,116,101,95,104,97,115,104,95,112,121,99,49,2,0, + 0,115,12,0,0,0,0,17,16,1,2,1,8,255,4,2, + 2,254,114,158,0,0,0,99,4,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,0, + 115,80,0,0,0,116,0,160,1,124,0,161,1,125,4,116, + 2,124,4,116,3,131,2,114,56,116,4,160,5,100,1,124, + 2,161,2,1,0,124,3,100,2,117,1,114,52,116,6,160, + 7,124,4,124,3,161,2,1,0,124,4,83,0,116,8,100, + 3,160,9,124,2,161,1,124,1,124,2,100,4,141,3,130, + 1,100,2,83,0,41,5,122,35,67,111,109,112,105,108,101, + 32,98,121,116,101,99,111,100,101,32,97,115,32,102,111,117, + 110,100,32,105,110,32,97,32,112,121,99,46,122,21,99,111, + 100,101,32,111,98,106,101,99,116,32,102,114,111,109,32,123, + 33,114,125,78,122,23,78,111,110,45,99,111,100,101,32,111, + 98,106,101,99,116,32,105,110,32,123,33,114,125,169,2,114, + 116,0,0,0,114,44,0,0,0,41,10,218,7,109,97,114, + 115,104,97,108,90,5,108,111,97,100,115,218,10,105,115,105, + 110,115,116,97,110,99,101,218,10,95,99,111,100,101,95,116, + 121,112,101,114,134,0,0,0,114,149,0,0,0,218,4,95, + 105,109,112,90,16,95,102,105,120,95,99,111,95,102,105,108, + 101,110,97,109,101,114,117,0,0,0,114,62,0,0,0,41, + 5,114,26,0,0,0,114,116,0,0,0,114,106,0,0,0, + 114,107,0,0,0,218,4,99,111,100,101,114,5,0,0,0, + 114,5,0,0,0,114,8,0,0,0,218,17,95,99,111,109, + 112,105,108,101,95,98,121,116,101,99,111,100,101,73,2,0, + 0,115,18,0,0,0,0,2,10,1,10,1,12,1,8,1, + 12,1,4,2,10,1,4,255,114,165,0,0,0,114,73,0, + 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,5,0,0,0,67,0,0,0,115,70,0,0,0, + 116,0,116,1,131,1,125,3,124,3,160,2,116,3,100,1, + 131,1,161,1,1,0,124,3,160,2,116,3,124,1,131,1, + 161,1,1,0,124,3,160,2,116,3,124,2,131,1,161,1, + 1,0,124,3,160,2,116,4,160,5,124,0,161,1,161,1, + 1,0,124,3,83,0,41,2,122,43,80,114,111,100,117,99, + 101,32,116,104,101,32,100,97,116,97,32,102,111,114,32,97, + 32,116,105,109,101,115,116,97,109,112,45,98,97,115,101,100, + 32,112,121,99,46,114,73,0,0,0,41,6,218,9,98,121, + 116,101,97,114,114,97,121,114,148,0,0,0,218,6,101,120, + 116,101,110,100,114,21,0,0,0,114,160,0,0,0,218,5, + 100,117,109,112,115,41,4,114,164,0,0,0,218,5,109,116, + 105,109,101,114,155,0,0,0,114,26,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,218,22,95,99, + 111,100,101,95,116,111,95,116,105,109,101,115,116,97,109,112, + 95,112,121,99,86,2,0,0,115,12,0,0,0,0,2,8, + 1,14,1,14,1,14,1,16,1,114,170,0,0,0,84,99, + 3,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 5,0,0,0,67,0,0,0,115,80,0,0,0,116,0,116, + 1,131,1,125,3,100,1,124,2,100,1,62,0,66,0,125, + 4,124,3,160,2,116,3,124,4,131,1,161,1,1,0,116, + 4,124,1,131,1,100,2,107,2,115,50,74,0,130,1,124, + 3,160,2,124,1,161,1,1,0,124,3,160,2,116,5,160, + 6,124,0,161,1,161,1,1,0,124,3,83,0,41,3,122, + 38,80,114,111,100,117,99,101,32,116,104,101,32,100,97,116, + 97,32,102,111,114,32,97,32,104,97,115,104,45,98,97,115, + 101,100,32,112,121,99,46,114,39,0,0,0,114,146,0,0, + 0,41,7,114,166,0,0,0,114,148,0,0,0,114,167,0, + 0,0,114,21,0,0,0,114,23,0,0,0,114,160,0,0, + 0,114,168,0,0,0,41,5,114,164,0,0,0,114,157,0, + 0,0,90,7,99,104,101,99,107,101,100,114,26,0,0,0, + 114,2,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 8,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104, + 97,115,104,95,112,121,99,96,2,0,0,115,14,0,0,0, + 0,2,8,1,12,1,14,1,16,1,10,1,16,1,114,171, 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,8,0,0,0,3,0,0,0,115,66,0,0, - 0,100,6,135,0,102,1,100,2,100,3,132,9,125,1,122, - 10,116,0,106,1,125,2,87,0,110,26,4,0,116,2,121, - 50,1,0,1,0,1,0,100,4,100,5,132,0,125,2,89, - 0,110,2,48,0,124,2,124,1,136,0,131,2,1,0,124, - 1,83,0,41,7,122,252,68,101,99,111,114,97,116,111,114, - 32,116,111,32,118,101,114,105,102,121,32,116,104,97,116,32, - 116,104,101,32,109,111,100,117,108,101,32,98,101,105,110,103, - 32,114,101,113,117,101,115,116,101,100,32,109,97,116,99,104, - 101,115,32,116,104,101,32,111,110,101,32,116,104,101,10,32, - 32,32,32,108,111,97,100,101,114,32,99,97,110,32,104,97, - 110,100,108,101,46,10,10,32,32,32,32,84,104,101,32,102, - 105,114,115,116,32,97,114,103,117,109,101,110,116,32,40,115, - 101,108,102,41,32,109,117,115,116,32,100,101,102,105,110,101, - 32,95,110,97,109,101,32,119,104,105,99,104,32,116,104,101, - 32,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116, - 32,105,115,10,32,32,32,32,99,111,109,112,97,114,101,100, - 32,97,103,97,105,110,115,116,46,32,73,102,32,116,104,101, - 32,99,111,109,112,97,114,105,115,111,110,32,102,97,105,108, - 115,32,116,104,101,110,32,73,109,112,111,114,116,69,114,114, - 111,114,32,105,115,32,114,97,105,115,101,100,46,10,10,32, - 32,32,32,78,99,2,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,4,0,0,0,31,0,0,0,115,72,0, - 0,0,124,1,100,0,117,0,114,16,124,0,106,0,125,1, - 110,32,124,0,106,0,124,1,107,3,114,48,116,1,100,1, - 124,0,106,0,124,1,102,2,22,0,124,1,100,2,141,2, - 130,1,136,0,124,0,124,1,103,2,124,2,162,1,82,0, - 105,0,124,3,164,1,142,1,83,0,41,3,78,122,30,108, - 111,97,100,101,114,32,102,111,114,32,37,115,32,99,97,110, - 110,111,116,32,104,97,110,100,108,101,32,37,115,169,1,218, - 4,110,97,109,101,41,2,114,116,0,0,0,218,11,73,109, - 112,111,114,116,69,114,114,111,114,41,4,218,4,115,101,108, - 102,114,116,0,0,0,218,4,97,114,103,115,218,6,107,119, - 97,114,103,115,169,1,218,6,109,101,116,104,111,100,114,5, - 0,0,0,114,8,0,0,0,218,19,95,99,104,101,99,107, - 95,110,97,109,101,95,119,114,97,112,112,101,114,207,1,0, - 0,115,18,0,0,0,0,1,8,1,8,1,10,1,4,1, - 8,255,2,1,2,255,6,2,122,40,95,99,104,101,99,107, - 95,110,97,109,101,46,60,108,111,99,97,108,115,62,46,95, - 99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,112, - 101,114,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,7,0,0,0,83,0,0,0,115,56,0,0,0, - 100,1,68,0,93,32,125,2,116,0,124,1,124,2,131,2, - 114,4,116,1,124,0,124,2,116,2,124,1,124,2,131,2, - 131,3,1,0,113,4,124,0,106,3,160,4,124,1,106,3, - 161,1,1,0,100,0,83,0,41,2,78,41,4,218,10,95, - 95,109,111,100,117,108,101,95,95,218,8,95,95,110,97,109, - 101,95,95,218,12,95,95,113,117,97,108,110,97,109,101,95, - 95,218,7,95,95,100,111,99,95,95,41,5,218,7,104,97, - 115,97,116,116,114,218,7,115,101,116,97,116,116,114,218,7, - 103,101,116,97,116,116,114,218,8,95,95,100,105,99,116,95, - 95,218,6,117,112,100,97,116,101,41,3,90,3,110,101,119, - 90,3,111,108,100,114,67,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,218,5,95,119,114,97,112, - 218,1,0,0,115,8,0,0,0,0,1,8,1,10,1,20, - 1,122,26,95,99,104,101,99,107,95,110,97,109,101,46,60, - 108,111,99,97,108,115,62,46,95,119,114,97,112,41,1,78, - 41,3,218,10,95,98,111,111,116,115,116,114,97,112,114,133, - 0,0,0,218,9,78,97,109,101,69,114,114,111,114,41,3, - 114,122,0,0,0,114,123,0,0,0,114,133,0,0,0,114, - 5,0,0,0,114,121,0,0,0,114,8,0,0,0,218,11, - 95,99,104,101,99,107,95,110,97,109,101,199,1,0,0,115, - 14,0,0,0,0,8,14,7,2,1,10,1,12,2,14,5, - 10,1,114,136,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,5,0,0,0,6,0,0,0,67,0,0,0, - 115,60,0,0,0,124,0,160,0,124,1,161,1,92,2,125, - 2,125,3,124,2,100,1,117,0,114,56,116,1,124,3,131, - 1,114,56,100,2,125,4,116,2,160,3,124,4,160,4,124, - 3,100,3,25,0,161,1,116,5,161,2,1,0,124,2,83, - 0,41,4,122,155,84,114,121,32,116,111,32,102,105,110,100, - 32,97,32,108,111,97,100,101,114,32,102,111,114,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,32,98,121,32,100,101,108,101,103,97,116,105,110,103, - 32,116,111,10,32,32,32,32,115,101,108,102,46,102,105,110, - 100,95,108,111,97,100,101,114,40,41,46,10,10,32,32,32, - 32,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,32,105,110,32,102,97, - 118,111,114,32,111,102,32,102,105,110,100,101,114,46,102,105, - 110,100,95,115,112,101,99,40,41,46,10,10,32,32,32,32, - 78,122,44,78,111,116,32,105,109,112,111,114,116,105,110,103, - 32,100,105,114,101,99,116,111,114,121,32,123,125,58,32,109, - 105,115,115,105,110,103,32,95,95,105,110,105,116,95,95,114, - 73,0,0,0,41,6,218,11,102,105,110,100,95,108,111,97, - 100,101,114,114,23,0,0,0,114,75,0,0,0,114,76,0, - 0,0,114,62,0,0,0,218,13,73,109,112,111,114,116,87, - 97,114,110,105,110,103,41,5,114,118,0,0,0,218,8,102, - 117,108,108,110,97,109,101,218,6,108,111,97,100,101,114,218, - 8,112,111,114,116,105,111,110,115,218,3,109,115,103,114,5, - 0,0,0,114,5,0,0,0,114,8,0,0,0,218,17,95, - 102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,109, - 227,1,0,0,115,10,0,0,0,0,10,14,1,16,1,4, - 1,22,1,114,143,0,0,0,99,3,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0, - 0,115,166,0,0,0,124,0,100,1,100,2,133,2,25,0, - 125,3,124,3,116,0,107,3,114,64,100,3,124,1,155,2, - 100,4,124,3,155,2,157,4,125,4,116,1,160,2,100,5, - 124,4,161,2,1,0,116,3,124,4,102,1,105,0,124,2, - 164,1,142,1,130,1,116,4,124,0,131,1,100,6,107,0, - 114,106,100,7,124,1,155,2,157,2,125,4,116,1,160,2, - 100,5,124,4,161,2,1,0,116,5,124,4,131,1,130,1, - 116,6,124,0,100,2,100,8,133,2,25,0,131,1,125,5, - 124,5,100,9,64,0,114,162,100,10,124,5,155,2,100,11, - 124,1,155,2,157,4,125,4,116,3,124,4,102,1,105,0, - 124,2,164,1,142,1,130,1,124,5,83,0,41,12,97,84, - 2,0,0,80,101,114,102,111,114,109,32,98,97,115,105,99, - 32,118,97,108,105,100,105,116,121,32,99,104,101,99,107,105, - 110,103,32,111,102,32,97,32,112,121,99,32,104,101,97,100, - 101,114,32,97,110,100,32,114,101,116,117,114,110,32,116,104, - 101,32,102,108,97,103,115,32,102,105,101,108,100,44,10,32, - 32,32,32,119,104,105,99,104,32,100,101,116,101,114,109,105, - 110,101,115,32,104,111,119,32,116,104,101,32,112,121,99,32, - 115,104,111,117,108,100,32,98,101,32,102,117,114,116,104,101, - 114,32,118,97,108,105,100,97,116,101,100,32,97,103,97,105, - 110,115,116,32,116,104,101,32,115,111,117,114,99,101,46,10, - 10,32,32,32,32,42,100,97,116,97,42,32,105,115,32,116, - 104,101,32,99,111,110,116,101,110,116,115,32,111,102,32,116, - 104,101,32,112,121,99,32,102,105,108,101,46,32,40,79,110, - 108,121,32,116,104,101,32,102,105,114,115,116,32,49,54,32, - 98,121,116,101,115,32,97,114,101,10,32,32,32,32,114,101, - 113,117,105,114,101,100,44,32,116,104,111,117,103,104,46,41, - 10,10,32,32,32,32,42,110,97,109,101,42,32,105,115,32, - 116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,32, - 109,111,100,117,108,101,32,98,101,105,110,103,32,105,109,112, - 111,114,116,101,100,46,32,73,116,32,105,115,32,117,115,101, - 100,32,102,111,114,32,108,111,103,103,105,110,103,46,10,10, - 32,32,32,32,42,101,120,99,95,100,101,116,97,105,108,115, - 42,32,105,115,32,97,32,100,105,99,116,105,111,110,97,114, - 121,32,112,97,115,115,101,100,32,116,111,32,73,109,112,111, - 114,116,69,114,114,111,114,32,105,102,32,105,116,32,114,97, - 105,115,101,100,32,102,111,114,10,32,32,32,32,105,109,112, - 114,111,118,101,100,32,100,101,98,117,103,103,105,110,103,46, - 10,10,32,32,32,32,73,109,112,111,114,116,69,114,114,111, - 114,32,105,115,32,114,97,105,115,101,100,32,119,104,101,110, - 32,116,104,101,32,109,97,103,105,99,32,110,117,109,98,101, - 114,32,105,115,32,105,110,99,111,114,114,101,99,116,32,111, - 114,32,119,104,101,110,32,116,104,101,32,102,108,97,103,115, - 10,32,32,32,32,102,105,101,108,100,32,105,115,32,105,110, - 118,97,108,105,100,46,32,69,79,70,69,114,114,111,114,32, - 105,115,32,114,97,105,115,101,100,32,119,104,101,110,32,116, - 104,101,32,100,97,116,97,32,105,115,32,102,111,117,110,100, - 32,116,111,32,98,101,32,116,114,117,110,99,97,116,101,100, - 46,10,10,32,32,32,32,78,114,16,0,0,0,122,20,98, - 97,100,32,109,97,103,105,99,32,110,117,109,98,101,114,32, - 105,110,32,122,2,58,32,250,2,123,125,233,16,0,0,0, - 122,40,114,101,97,99,104,101,100,32,69,79,70,32,119,104, - 105,108,101,32,114,101,97,100,105,110,103,32,112,121,99,32, - 104,101,97,100,101,114,32,111,102,32,233,8,0,0,0,233, - 252,255,255,255,122,14,105,110,118,97,108,105,100,32,102,108, - 97,103,115,32,122,4,32,105,110,32,41,7,218,12,77,65, - 71,73,67,95,78,85,77,66,69,82,114,134,0,0,0,218, - 16,95,118,101,114,98,111,115,101,95,109,101,115,115,97,103, - 101,114,117,0,0,0,114,23,0,0,0,218,8,69,79,70, - 69,114,114,111,114,114,27,0,0,0,41,6,114,26,0,0, - 0,114,116,0,0,0,218,11,101,120,99,95,100,101,116,97, - 105,108,115,90,5,109,97,103,105,99,114,92,0,0,0,114, - 2,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,218,13,95,99,108,97,115,115,105,102,121,95,112, - 121,99,244,1,0,0,115,28,0,0,0,0,16,12,1,8, - 1,16,1,12,1,16,1,12,1,10,1,12,1,8,1,16, - 2,8,1,16,1,16,1,114,152,0,0,0,99,5,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0, - 0,67,0,0,0,115,120,0,0,0,116,0,124,0,100,1, - 100,2,133,2,25,0,131,1,124,1,100,3,64,0,107,3, - 114,62,100,4,124,3,155,2,157,2,125,5,116,1,160,2, - 100,5,124,5,161,2,1,0,116,3,124,5,102,1,105,0, - 124,4,164,1,142,1,130,1,124,2,100,6,117,1,114,116, - 116,0,124,0,100,2,100,7,133,2,25,0,131,1,124,2, - 100,3,64,0,107,3,114,116,116,3,100,4,124,3,155,2, - 157,2,102,1,105,0,124,4,164,1,142,1,130,1,100,6, - 83,0,41,8,97,7,2,0,0,86,97,108,105,100,97,116, - 101,32,97,32,112,121,99,32,97,103,97,105,110,115,116,32, - 116,104,101,32,115,111,117,114,99,101,32,108,97,115,116,45, - 109,111,100,105,102,105,101,100,32,116,105,109,101,46,10,10, - 32,32,32,32,42,100,97,116,97,42,32,105,115,32,116,104, - 101,32,99,111,110,116,101,110,116,115,32,111,102,32,116,104, - 101,32,112,121,99,32,102,105,108,101,46,32,40,79,110,108, - 121,32,116,104,101,32,102,105,114,115,116,32,49,54,32,98, - 121,116,101,115,32,97,114,101,10,32,32,32,32,114,101,113, - 117,105,114,101,100,46,41,10,10,32,32,32,32,42,115,111, - 117,114,99,101,95,109,116,105,109,101,42,32,105,115,32,116, - 104,101,32,108,97,115,116,32,109,111,100,105,102,105,101,100, - 32,116,105,109,101,115,116,97,109,112,32,111,102,32,116,104, - 101,32,115,111,117,114,99,101,32,102,105,108,101,46,10,10, - 32,32,32,32,42,115,111,117,114,99,101,95,115,105,122,101, - 42,32,105,115,32,78,111,110,101,32,111,114,32,116,104,101, - 32,115,105,122,101,32,111,102,32,116,104,101,32,115,111,117, - 114,99,101,32,102,105,108,101,32,105,110,32,98,121,116,101, - 115,46,10,10,32,32,32,32,42,110,97,109,101,42,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,32,109,111,100,117,108,101,32,98,101,105,110,103,32,105, - 109,112,111,114,116,101,100,46,32,73,116,32,105,115,32,117, - 115,101,100,32,102,111,114,32,108,111,103,103,105,110,103,46, - 10,10,32,32,32,32,42,101,120,99,95,100,101,116,97,105, - 108,115,42,32,105,115,32,97,32,100,105,99,116,105,111,110, - 97,114,121,32,112,97,115,115,101,100,32,116,111,32,73,109, - 112,111,114,116,69,114,114,111,114,32,105,102,32,105,116,32, - 114,97,105,115,101,100,32,102,111,114,10,32,32,32,32,105, - 109,112,114,111,118,101,100,32,100,101,98,117,103,103,105,110, - 103,46,10,10,32,32,32,32,65,110,32,73,109,112,111,114, - 116,69,114,114,111,114,32,105,115,32,114,97,105,115,101,100, - 32,105,102,32,116,104,101,32,98,121,116,101,99,111,100,101, - 32,105,115,32,115,116,97,108,101,46,10,10,32,32,32,32, - 114,146,0,0,0,233,12,0,0,0,114,15,0,0,0,122, - 22,98,121,116,101,99,111,100,101,32,105,115,32,115,116,97, - 108,101,32,102,111,114,32,114,144,0,0,0,78,114,145,0, - 0,0,41,4,114,27,0,0,0,114,134,0,0,0,114,149, - 0,0,0,114,117,0,0,0,41,6,114,26,0,0,0,218, - 12,115,111,117,114,99,101,95,109,116,105,109,101,218,11,115, - 111,117,114,99,101,95,115,105,122,101,114,116,0,0,0,114, - 151,0,0,0,114,92,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,8,0,0,0,218,23,95,118,97,108,105,100, - 97,116,101,95,116,105,109,101,115,116,97,109,112,95,112,121, - 99,21,2,0,0,115,16,0,0,0,0,19,24,1,10,1, - 12,1,16,1,8,1,22,255,2,2,114,156,0,0,0,99, - 4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 4,0,0,0,67,0,0,0,115,42,0,0,0,124,0,100, - 1,100,2,133,2,25,0,124,1,107,3,114,38,116,0,100, - 3,124,2,155,2,157,2,102,1,105,0,124,3,164,1,142, - 1,130,1,100,4,83,0,41,5,97,243,1,0,0,86,97, - 108,105,100,97,116,101,32,97,32,104,97,115,104,45,98,97, - 115,101,100,32,112,121,99,32,98,121,32,99,104,101,99,107, - 105,110,103,32,116,104,101,32,114,101,97,108,32,115,111,117, - 114,99,101,32,104,97,115,104,32,97,103,97,105,110,115,116, - 32,116,104,101,32,111,110,101,32,105,110,10,32,32,32,32, - 116,104,101,32,112,121,99,32,104,101,97,100,101,114,46,10, - 10,32,32,32,32,42,100,97,116,97,42,32,105,115,32,116, - 104,101,32,99,111,110,116,101,110,116,115,32,111,102,32,116, - 104,101,32,112,121,99,32,102,105,108,101,46,32,40,79,110, - 108,121,32,116,104,101,32,102,105,114,115,116,32,49,54,32, - 98,121,116,101,115,32,97,114,101,10,32,32,32,32,114,101, - 113,117,105,114,101,100,46,41,10,10,32,32,32,32,42,115, - 111,117,114,99,101,95,104,97,115,104,42,32,105,115,32,116, - 104,101,32,105,109,112,111,114,116,108,105,98,46,117,116,105, - 108,46,115,111,117,114,99,101,95,104,97,115,104,40,41,32, - 111,102,32,116,104,101,32,115,111,117,114,99,101,32,102,105, - 108,101,46,10,10,32,32,32,32,42,110,97,109,101,42,32, - 105,115,32,116,104,101,32,110,97,109,101,32,111,102,32,116, - 104,101,32,109,111,100,117,108,101,32,98,101,105,110,103,32, - 105,109,112,111,114,116,101,100,46,32,73,116,32,105,115,32, - 117,115,101,100,32,102,111,114,32,108,111,103,103,105,110,103, - 46,10,10,32,32,32,32,42,101,120,99,95,100,101,116,97, - 105,108,115,42,32,105,115,32,97,32,100,105,99,116,105,111, - 110,97,114,121,32,112,97,115,115,101,100,32,116,111,32,73, - 109,112,111,114,116,69,114,114,111,114,32,105,102,32,105,116, - 32,114,97,105,115,101,100,32,102,111,114,10,32,32,32,32, - 105,109,112,114,111,118,101,100,32,100,101,98,117,103,103,105, - 110,103,46,10,10,32,32,32,32,65,110,32,73,109,112,111, - 114,116,69,114,114,111,114,32,105,115,32,114,97,105,115,101, - 100,32,105,102,32,116,104,101,32,98,121,116,101,99,111,100, - 101,32,105,115,32,115,116,97,108,101,46,10,10,32,32,32, - 32,114,146,0,0,0,114,145,0,0,0,122,46,104,97,115, - 104,32,105,110,32,98,121,116,101,99,111,100,101,32,100,111, - 101,115,110,39,116,32,109,97,116,99,104,32,104,97,115,104, - 32,111,102,32,115,111,117,114,99,101,32,78,41,1,114,117, - 0,0,0,41,4,114,26,0,0,0,218,11,115,111,117,114, - 99,101,95,104,97,115,104,114,116,0,0,0,114,151,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, - 218,18,95,118,97,108,105,100,97,116,101,95,104,97,115,104, - 95,112,121,99,49,2,0,0,115,12,0,0,0,0,17,16, - 1,2,1,8,255,4,2,2,254,114,158,0,0,0,99,4, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5, - 0,0,0,67,0,0,0,115,80,0,0,0,116,0,160,1, - 124,0,161,1,125,4,116,2,124,4,116,3,131,2,114,56, - 116,4,160,5,100,1,124,2,161,2,1,0,124,3,100,2, - 117,1,114,52,116,6,160,7,124,4,124,3,161,2,1,0, - 124,4,83,0,116,8,100,3,160,9,124,2,161,1,124,1, - 124,2,100,4,141,3,130,1,100,2,83,0,41,5,122,35, - 67,111,109,112,105,108,101,32,98,121,116,101,99,111,100,101, - 32,97,115,32,102,111,117,110,100,32,105,110,32,97,32,112, - 121,99,46,122,21,99,111,100,101,32,111,98,106,101,99,116, - 32,102,114,111,109,32,123,33,114,125,78,122,23,78,111,110, - 45,99,111,100,101,32,111,98,106,101,99,116,32,105,110,32, - 123,33,114,125,169,2,114,116,0,0,0,114,44,0,0,0, - 41,10,218,7,109,97,114,115,104,97,108,90,5,108,111,97, - 100,115,218,10,105,115,105,110,115,116,97,110,99,101,218,10, - 95,99,111,100,101,95,116,121,112,101,114,134,0,0,0,114, - 149,0,0,0,218,4,95,105,109,112,90,16,95,102,105,120, - 95,99,111,95,102,105,108,101,110,97,109,101,114,117,0,0, - 0,114,62,0,0,0,41,5,114,26,0,0,0,114,116,0, - 0,0,114,106,0,0,0,114,107,0,0,0,218,4,99,111, - 100,101,114,5,0,0,0,114,5,0,0,0,114,8,0,0, - 0,218,17,95,99,111,109,112,105,108,101,95,98,121,116,101, - 99,111,100,101,73,2,0,0,115,18,0,0,0,0,2,10, - 1,10,1,12,1,8,1,12,1,4,2,10,1,4,255,114, - 165,0,0,0,114,73,0,0,0,99,3,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,5,0,0,0,67,0, - 0,0,115,70,0,0,0,116,0,116,1,131,1,125,3,124, - 3,160,2,116,3,100,1,131,1,161,1,1,0,124,3,160, - 2,116,3,124,1,131,1,161,1,1,0,124,3,160,2,116, - 3,124,2,131,1,161,1,1,0,124,3,160,2,116,4,160, - 5,124,0,161,1,161,1,1,0,124,3,83,0,41,2,122, - 43,80,114,111,100,117,99,101,32,116,104,101,32,100,97,116, - 97,32,102,111,114,32,97,32,116,105,109,101,115,116,97,109, - 112,45,98,97,115,101,100,32,112,121,99,46,114,73,0,0, - 0,41,6,218,9,98,121,116,101,97,114,114,97,121,114,148, - 0,0,0,218,6,101,120,116,101,110,100,114,21,0,0,0, - 114,160,0,0,0,218,5,100,117,109,112,115,41,4,114,164, - 0,0,0,218,5,109,116,105,109,101,114,155,0,0,0,114, - 26,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,218,22,95,99,111,100,101,95,116,111,95,116,105, - 109,101,115,116,97,109,112,95,112,121,99,86,2,0,0,115, - 12,0,0,0,0,2,8,1,14,1,14,1,14,1,16,1, - 114,170,0,0,0,84,99,3,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115, - 80,0,0,0,116,0,116,1,131,1,125,3,100,1,124,2, - 100,1,62,0,66,0,125,4,124,3,160,2,116,3,124,4, - 131,1,161,1,1,0,116,4,124,1,131,1,100,2,107,2, - 115,50,74,0,130,1,124,3,160,2,124,1,161,1,1,0, - 124,3,160,2,116,5,160,6,124,0,161,1,161,1,1,0, - 124,3,83,0,41,3,122,38,80,114,111,100,117,99,101,32, - 116,104,101,32,100,97,116,97,32,102,111,114,32,97,32,104, - 97,115,104,45,98,97,115,101,100,32,112,121,99,46,114,39, - 0,0,0,114,146,0,0,0,41,7,114,166,0,0,0,114, - 148,0,0,0,114,167,0,0,0,114,21,0,0,0,114,23, - 0,0,0,114,160,0,0,0,114,168,0,0,0,41,5,114, - 164,0,0,0,114,157,0,0,0,90,7,99,104,101,99,107, - 101,100,114,26,0,0,0,114,2,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,8,0,0,0,218,17,95,99,111, - 100,101,95,116,111,95,104,97,115,104,95,112,121,99,96,2, - 0,0,115,14,0,0,0,0,2,8,1,12,1,14,1,16, - 1,10,1,16,1,114,171,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,6,0,0,0,67, - 0,0,0,115,62,0,0,0,100,1,100,2,108,0,125,1, - 116,1,160,2,124,0,161,1,106,3,125,2,124,1,160,4, - 124,2,161,1,125,3,116,1,160,5,100,2,100,3,161,2, - 125,4,124,4,160,6,124,0,160,6,124,3,100,1,25,0, - 161,1,161,1,83,0,41,4,122,121,68,101,99,111,100,101, - 32,98,121,116,101,115,32,114,101,112,114,101,115,101,110,116, - 105,110,103,32,115,111,117,114,99,101,32,99,111,100,101,32, - 97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,115, - 116,114,105,110,103,46,10,10,32,32,32,32,85,110,105,118, - 101,114,115,97,108,32,110,101,119,108,105,110,101,32,115,117, - 112,112,111,114,116,32,105,115,32,117,115,101,100,32,105,110, - 32,116,104,101,32,100,101,99,111,100,105,110,103,46,10,32, - 32,32,32,114,73,0,0,0,78,84,41,7,218,8,116,111, - 107,101,110,105,122,101,114,64,0,0,0,90,7,66,121,116, - 101,115,73,79,90,8,114,101,97,100,108,105,110,101,90,15, - 100,101,116,101,99,116,95,101,110,99,111,100,105,110,103,90, - 25,73,110,99,114,101,109,101,110,116,97,108,78,101,119,108, - 105,110,101,68,101,99,111,100,101,114,218,6,100,101,99,111, - 100,101,41,5,218,12,115,111,117,114,99,101,95,98,121,116, - 101,115,114,172,0,0,0,90,21,115,111,117,114,99,101,95, - 98,121,116,101,115,95,114,101,97,100,108,105,110,101,218,8, - 101,110,99,111,100,105,110,103,90,15,110,101,119,108,105,110, - 101,95,100,101,99,111,100,101,114,114,5,0,0,0,114,5, - 0,0,0,114,8,0,0,0,218,13,100,101,99,111,100,101, - 95,115,111,117,114,99,101,107,2,0,0,115,10,0,0,0, - 0,5,8,1,12,1,10,1,12,1,114,176,0,0,0,169, - 2,114,140,0,0,0,218,26,115,117,98,109,111,100,117,108, - 101,95,115,101,97,114,99,104,95,108,111,99,97,116,105,111, - 110,115,99,2,0,0,0,0,0,0,0,2,0,0,0,9, - 0,0,0,8,0,0,0,67,0,0,0,115,12,1,0,0, - 124,1,100,1,117,0,114,58,100,2,125,1,116,0,124,2, - 100,3,131,2,114,68,122,14,124,2,160,1,124,0,161,1, - 125,1,87,0,113,68,4,0,116,2,121,54,1,0,1,0, - 1,0,89,0,113,68,48,0,110,10,116,3,160,4,124,1, - 161,1,125,1,116,5,106,6,124,0,124,2,124,1,100,4, - 141,3,125,4,100,5,124,4,95,7,124,2,100,1,117,0, - 114,152,116,8,131,0,68,0,93,42,92,2,125,5,125,6, - 124,1,160,9,116,10,124,6,131,1,161,1,114,104,124,5, - 124,0,124,1,131,2,125,2,124,2,124,4,95,11,1,0, - 113,152,113,104,100,1,83,0,124,3,116,12,117,0,114,216, - 116,0,124,2,100,6,131,2,114,222,122,14,124,2,160,13, - 124,0,161,1,125,7,87,0,110,18,4,0,116,2,121,202, - 1,0,1,0,1,0,89,0,113,222,48,0,124,7,114,222, - 103,0,124,4,95,14,110,6,124,3,124,4,95,14,124,4, - 106,14,103,0,107,2,144,1,114,8,124,1,144,1,114,8, - 116,15,124,1,131,1,100,7,25,0,125,8,124,4,106,14, - 160,16,124,8,161,1,1,0,124,4,83,0,41,8,97,61, - 1,0,0,82,101,116,117,114,110,32,97,32,109,111,100,117, - 108,101,32,115,112,101,99,32,98,97,115,101,100,32,111,110, - 32,97,32,102,105,108,101,32,108,111,99,97,116,105,111,110, - 46,10,10,32,32,32,32,84,111,32,105,110,100,105,99,97, - 116,101,32,116,104,97,116,32,116,104,101,32,109,111,100,117, - 108,101,32,105,115,32,97,32,112,97,99,107,97,103,101,44, - 32,115,101,116,10,32,32,32,32,115,117,98,109,111,100,117, - 108,101,95,115,101,97,114,99,104,95,108,111,99,97,116,105, - 111,110,115,32,116,111,32,97,32,108,105,115,116,32,111,102, - 32,100,105,114,101,99,116,111,114,121,32,112,97,116,104,115, - 46,32,32,65,110,10,32,32,32,32,101,109,112,116,121,32, - 108,105,115,116,32,105,115,32,115,117,102,102,105,99,105,101, - 110,116,44,32,116,104,111,117,103,104,32,105,116,115,32,110, - 111,116,32,111,116,104,101,114,119,105,115,101,32,117,115,101, - 102,117,108,32,116,111,32,116,104,101,10,32,32,32,32,105, - 109,112,111,114,116,32,115,121,115,116,101,109,46,10,10,32, - 32,32,32,84,104,101,32,108,111,97,100,101,114,32,109,117, - 115,116,32,116,97,107,101,32,97,32,115,112,101,99,32,97, - 115,32,105,116,115,32,111,110,108,121,32,95,95,105,110,105, - 116,95,95,40,41,32,97,114,103,46,10,10,32,32,32,32, - 78,122,9,60,117,110,107,110,111,119,110,62,218,12,103,101, - 116,95,102,105,108,101,110,97,109,101,169,1,218,6,111,114, - 105,103,105,110,84,218,10,105,115,95,112,97,99,107,97,103, - 101,114,73,0,0,0,41,17,114,128,0,0,0,114,179,0, - 0,0,114,117,0,0,0,114,4,0,0,0,114,79,0,0, - 0,114,134,0,0,0,218,10,77,111,100,117,108,101,83,112, - 101,99,90,13,95,115,101,116,95,102,105,108,101,97,116,116, - 114,218,27,95,103,101,116,95,115,117,112,112,111,114,116,101, - 100,95,102,105,108,101,95,108,111,97,100,101,114,115,114,110, - 0,0,0,114,111,0,0,0,114,140,0,0,0,218,9,95, - 80,79,80,85,76,65,84,69,114,182,0,0,0,114,178,0, - 0,0,114,47,0,0,0,218,6,97,112,112,101,110,100,41, - 9,114,116,0,0,0,90,8,108,111,99,97,116,105,111,110, - 114,140,0,0,0,114,178,0,0,0,218,4,115,112,101,99, - 218,12,108,111,97,100,101,114,95,99,108,97,115,115,218,8, - 115,117,102,102,105,120,101,115,114,182,0,0,0,90,7,100, - 105,114,110,97,109,101,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,218,23,115,112,101,99,95,102,114,111,109, - 95,102,105,108,101,95,108,111,99,97,116,105,111,110,124,2, - 0,0,115,62,0,0,0,0,12,8,4,4,1,10,2,2, - 1,14,1,12,1,8,2,10,8,16,1,6,3,8,1,14, - 1,14,1,10,1,6,1,6,2,4,3,8,2,10,1,2, - 1,14,1,12,1,6,2,4,1,8,2,6,1,12,1,6, - 1,12,1,12,2,114,190,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, - 0,0,0,115,80,0,0,0,101,0,90,1,100,0,90,2, - 100,1,90,3,100,2,90,4,100,3,90,5,100,4,90,6, - 101,7,100,5,100,6,132,0,131,1,90,8,101,7,100,7, - 100,8,132,0,131,1,90,9,101,7,100,14,100,10,100,11, - 132,1,131,1,90,10,101,7,100,15,100,12,100,13,132,1, - 131,1,90,11,100,9,83,0,41,16,218,21,87,105,110,100, - 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101, - 114,122,62,77,101,116,97,32,112,97,116,104,32,102,105,110, - 100,101,114,32,102,111,114,32,109,111,100,117,108,101,115,32, - 100,101,99,108,97,114,101,100,32,105,110,32,116,104,101,32, - 87,105,110,100,111,119,115,32,114,101,103,105,115,116,114,121, - 46,122,59,83,111,102,116,119,97,114,101,92,80,121,116,104, - 111,110,92,80,121,116,104,111,110,67,111,114,101,92,123,115, - 121,115,95,118,101,114,115,105,111,110,125,92,77,111,100,117, - 108,101,115,92,123,102,117,108,108,110,97,109,101,125,122,65, - 83,111,102,116,119,97,114,101,92,80,121,116,104,111,110,92, - 80,121,116,104,111,110,67,111,114,101,92,123,115,121,115,95, - 118,101,114,115,105,111,110,125,92,77,111,100,117,108,101,115, - 92,123,102,117,108,108,110,97,109,101,125,92,68,101,98,117, - 103,70,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,8,0,0,0,67,0,0,0,115,54,0,0,0, - 122,16,116,0,160,1,116,0,106,2,124,1,161,2,87,0, - 83,0,4,0,116,3,121,48,1,0,1,0,1,0,116,0, - 160,1,116,0,106,4,124,1,161,2,6,0,89,0,83,0, - 48,0,100,0,83,0,114,109,0,0,0,41,5,218,6,119, - 105,110,114,101,103,90,7,79,112,101,110,75,101,121,90,17, - 72,75,69,89,95,67,85,82,82,69,78,84,95,85,83,69, - 82,114,50,0,0,0,90,18,72,75,69,89,95,76,79,67, - 65,76,95,77,65,67,72,73,78,69,41,2,218,3,99,108, - 115,114,7,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,218,14,95,111,112,101,110,95,114,101,103, - 105,115,116,114,121,204,2,0,0,115,8,0,0,0,0,2, - 2,1,16,1,12,1,122,36,87,105,110,100,111,119,115,82, - 101,103,105,115,116,114,121,70,105,110,100,101,114,46,95,111, - 112,101,110,95,114,101,103,105,115,116,114,121,99,2,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0, - 0,67,0,0,0,115,132,0,0,0,124,0,106,0,114,14, - 124,0,106,1,125,2,110,6,124,0,106,2,125,2,124,2, - 106,3,124,1,100,1,116,4,106,5,100,0,100,2,133,2, - 25,0,22,0,100,3,141,2,125,3,122,58,124,0,160,6, - 124,3,161,1,143,28,125,4,116,7,160,8,124,4,100,4, - 161,2,125,5,87,0,100,0,4,0,4,0,131,3,1,0, - 110,16,49,0,115,94,48,0,1,0,1,0,1,0,89,0, - 1,0,87,0,110,20,4,0,116,9,121,126,1,0,1,0, - 1,0,89,0,100,0,83,0,48,0,124,5,83,0,41,5, - 78,122,5,37,100,46,37,100,114,28,0,0,0,41,2,114, - 139,0,0,0,90,11,115,121,115,95,118,101,114,115,105,111, - 110,114,40,0,0,0,41,10,218,11,68,69,66,85,71,95, - 66,85,73,76,68,218,18,82,69,71,73,83,84,82,89,95, - 75,69,89,95,68,69,66,85,71,218,12,82,69,71,73,83, - 84,82,89,95,75,69,89,114,62,0,0,0,114,1,0,0, - 0,218,12,118,101,114,115,105,111,110,95,105,110,102,111,114, - 194,0,0,0,114,192,0,0,0,90,10,81,117,101,114,121, - 86,97,108,117,101,114,50,0,0,0,41,6,114,193,0,0, - 0,114,139,0,0,0,90,12,114,101,103,105,115,116,114,121, - 95,107,101,121,114,7,0,0,0,90,4,104,107,101,121,218, - 8,102,105,108,101,112,97,116,104,114,5,0,0,0,114,5, - 0,0,0,114,8,0,0,0,218,16,95,115,101,97,114,99, - 104,95,114,101,103,105,115,116,114,121,211,2,0,0,115,24, - 0,0,0,0,2,6,1,8,2,6,1,6,1,16,255,6, - 2,2,1,12,1,46,1,12,1,8,1,122,38,87,105,110, - 100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100, - 101,114,46,95,115,101,97,114,99,104,95,114,101,103,105,115, - 116,114,121,78,99,4,0,0,0,0,0,0,0,0,0,0, - 0,8,0,0,0,8,0,0,0,67,0,0,0,115,120,0, - 0,0,124,0,160,0,124,1,161,1,125,4,124,4,100,0, - 117,0,114,22,100,0,83,0,122,12,116,1,124,4,131,1, - 1,0,87,0,110,20,4,0,116,2,121,54,1,0,1,0, - 1,0,89,0,100,0,83,0,48,0,116,3,131,0,68,0, - 93,52,92,2,125,5,125,6,124,4,160,4,116,5,124,6, - 131,1,161,1,114,62,116,6,106,7,124,1,124,5,124,1, - 124,4,131,2,124,4,100,1,141,3,125,7,124,7,2,0, - 1,0,83,0,113,62,100,0,83,0,41,2,78,114,180,0, - 0,0,41,8,114,200,0,0,0,114,49,0,0,0,114,50, - 0,0,0,114,184,0,0,0,114,110,0,0,0,114,111,0, - 0,0,114,134,0,0,0,218,16,115,112,101,99,95,102,114, - 111,109,95,108,111,97,100,101,114,41,8,114,193,0,0,0, - 114,139,0,0,0,114,44,0,0,0,218,6,116,97,114,103, - 101,116,114,199,0,0,0,114,140,0,0,0,114,189,0,0, - 0,114,187,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,218,9,102,105,110,100,95,115,112,101,99, - 226,2,0,0,115,28,0,0,0,0,2,10,1,8,1,4, - 1,2,1,12,1,12,1,8,1,14,1,14,1,6,1,8, - 1,2,254,6,3,122,31,87,105,110,100,111,119,115,82,101, - 103,105,115,116,114,121,70,105,110,100,101,114,46,102,105,110, - 100,95,115,112,101,99,99,3,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,4,0,0,0,67,0,0,0,115, - 34,0,0,0,124,0,160,0,124,1,124,2,161,2,125,3, - 124,3,100,1,117,1,114,26,124,3,106,1,83,0,100,1, - 83,0,100,1,83,0,41,2,122,108,70,105,110,100,32,109, - 111,100,117,108,101,32,110,97,109,101,100,32,105,110,32,116, - 104,101,32,114,101,103,105,115,116,114,121,46,10,10,32,32, - 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, - 32,32,85,115,101,32,101,120,101,99,95,109,111,100,117,108, - 101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, - 32,32,32,32,32,32,78,169,2,114,203,0,0,0,114,140, - 0,0,0,169,4,114,193,0,0,0,114,139,0,0,0,114, - 44,0,0,0,114,187,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,8,0,0,0,218,11,102,105,110,100,95,109, - 111,100,117,108,101,242,2,0,0,115,8,0,0,0,0,7, - 12,1,8,1,6,2,122,33,87,105,110,100,111,119,115,82, - 101,103,105,115,116,114,121,70,105,110,100,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,41,2,78,78,41,1,78, - 41,12,114,125,0,0,0,114,124,0,0,0,114,126,0,0, - 0,114,127,0,0,0,114,197,0,0,0,114,196,0,0,0, - 114,195,0,0,0,218,11,99,108,97,115,115,109,101,116,104, - 111,100,114,194,0,0,0,114,200,0,0,0,114,203,0,0, - 0,114,206,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,8,0,0,0,114,191,0,0,0,192, - 2,0,0,115,28,0,0,0,8,2,4,3,2,255,2,4, - 2,255,2,3,4,2,2,1,10,6,2,1,10,14,2,1, - 12,15,2,1,114,191,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, - 0,0,115,48,0,0,0,101,0,90,1,100,0,90,2,100, - 1,90,3,100,2,100,3,132,0,90,4,100,4,100,5,132, - 0,90,5,100,6,100,7,132,0,90,6,100,8,100,9,132, - 0,90,7,100,10,83,0,41,11,218,13,95,76,111,97,100, - 101,114,66,97,115,105,99,115,122,83,66,97,115,101,32,99, - 108,97,115,115,32,111,102,32,99,111,109,109,111,110,32,99, - 111,100,101,32,110,101,101,100,101,100,32,98,121,32,98,111, - 116,104,32,83,111,117,114,99,101,76,111,97,100,101,114,32, - 97,110,100,10,32,32,32,32,83,111,117,114,99,101,108,101, - 115,115,70,105,108,101,76,111,97,100,101,114,46,99,2,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0, - 0,0,67,0,0,0,115,64,0,0,0,116,0,124,0,160, - 1,124,1,161,1,131,1,100,1,25,0,125,2,124,2,160, - 2,100,2,100,1,161,2,100,3,25,0,125,3,124,1,160, - 3,100,2,161,1,100,4,25,0,125,4,124,3,100,5,107, - 2,111,62,124,4,100,5,107,3,83,0,41,6,122,141,67, + 5,0,0,0,6,0,0,0,67,0,0,0,115,62,0,0, + 0,100,1,100,2,108,0,125,1,116,1,160,2,124,0,161, + 1,106,3,125,2,124,1,160,4,124,2,161,1,125,3,116, + 1,160,5,100,2,100,3,161,2,125,4,124,4,160,6,124, + 0,160,6,124,3,100,1,25,0,161,1,161,1,83,0,41, + 4,122,121,68,101,99,111,100,101,32,98,121,116,101,115,32, + 114,101,112,114,101,115,101,110,116,105,110,103,32,115,111,117, + 114,99,101,32,99,111,100,101,32,97,110,100,32,114,101,116, + 117,114,110,32,116,104,101,32,115,116,114,105,110,103,46,10, + 10,32,32,32,32,85,110,105,118,101,114,115,97,108,32,110, + 101,119,108,105,110,101,32,115,117,112,112,111,114,116,32,105, + 115,32,117,115,101,100,32,105,110,32,116,104,101,32,100,101, + 99,111,100,105,110,103,46,10,32,32,32,32,114,73,0,0, + 0,78,84,41,7,218,8,116,111,107,101,110,105,122,101,114, + 64,0,0,0,90,7,66,121,116,101,115,73,79,90,8,114, + 101,97,100,108,105,110,101,90,15,100,101,116,101,99,116,95, + 101,110,99,111,100,105,110,103,90,25,73,110,99,114,101,109, + 101,110,116,97,108,78,101,119,108,105,110,101,68,101,99,111, + 100,101,114,218,6,100,101,99,111,100,101,41,5,218,12,115, + 111,117,114,99,101,95,98,121,116,101,115,114,172,0,0,0, + 90,21,115,111,117,114,99,101,95,98,121,116,101,115,95,114, + 101,97,100,108,105,110,101,218,8,101,110,99,111,100,105,110, + 103,90,15,110,101,119,108,105,110,101,95,100,101,99,111,100, + 101,114,114,5,0,0,0,114,5,0,0,0,114,8,0,0, + 0,218,13,100,101,99,111,100,101,95,115,111,117,114,99,101, + 107,2,0,0,115,10,0,0,0,0,5,8,1,12,1,10, + 1,12,1,114,176,0,0,0,169,2,114,140,0,0,0,218, + 26,115,117,98,109,111,100,117,108,101,95,115,101,97,114,99, + 104,95,108,111,99,97,116,105,111,110,115,99,2,0,0,0, + 0,0,0,0,2,0,0,0,9,0,0,0,8,0,0,0, + 67,0,0,0,115,12,1,0,0,124,1,100,1,117,0,114, + 58,100,2,125,1,116,0,124,2,100,3,131,2,114,68,122, + 14,124,2,160,1,124,0,161,1,125,1,87,0,113,68,4, + 0,116,2,121,54,1,0,1,0,1,0,89,0,113,68,48, + 0,110,10,116,3,160,4,124,1,161,1,125,1,116,5,106, + 6,124,0,124,2,124,1,100,4,141,3,125,4,100,5,124, + 4,95,7,124,2,100,1,117,0,114,152,116,8,131,0,68, + 0,93,42,92,2,125,5,125,6,124,1,160,9,116,10,124, + 6,131,1,161,1,114,104,124,5,124,0,124,1,131,2,125, + 2,124,2,124,4,95,11,1,0,113,152,113,104,100,1,83, + 0,124,3,116,12,117,0,114,216,116,0,124,2,100,6,131, + 2,114,222,122,14,124,2,160,13,124,0,161,1,125,7,87, + 0,110,18,4,0,116,2,121,202,1,0,1,0,1,0,89, + 0,113,222,48,0,124,7,114,222,103,0,124,4,95,14,110, + 6,124,3,124,4,95,14,124,4,106,14,103,0,107,2,144, + 1,114,8,124,1,144,1,114,8,116,15,124,1,131,1,100, + 7,25,0,125,8,124,4,106,14,160,16,124,8,161,1,1, + 0,124,4,83,0,41,8,97,61,1,0,0,82,101,116,117, + 114,110,32,97,32,109,111,100,117,108,101,32,115,112,101,99, + 32,98,97,115,101,100,32,111,110,32,97,32,102,105,108,101, + 32,108,111,99,97,116,105,111,110,46,10,10,32,32,32,32, + 84,111,32,105,110,100,105,99,97,116,101,32,116,104,97,116, + 32,116,104,101,32,109,111,100,117,108,101,32,105,115,32,97, + 32,112,97,99,107,97,103,101,44,32,115,101,116,10,32,32, + 32,32,115,117,98,109,111,100,117,108,101,95,115,101,97,114, + 99,104,95,108,111,99,97,116,105,111,110,115,32,116,111,32, + 97,32,108,105,115,116,32,111,102,32,100,105,114,101,99,116, + 111,114,121,32,112,97,116,104,115,46,32,32,65,110,10,32, + 32,32,32,101,109,112,116,121,32,108,105,115,116,32,105,115, + 32,115,117,102,102,105,99,105,101,110,116,44,32,116,104,111, + 117,103,104,32,105,116,115,32,110,111,116,32,111,116,104,101, + 114,119,105,115,101,32,117,115,101,102,117,108,32,116,111,32, + 116,104,101,10,32,32,32,32,105,109,112,111,114,116,32,115, + 121,115,116,101,109,46,10,10,32,32,32,32,84,104,101,32, + 108,111,97,100,101,114,32,109,117,115,116,32,116,97,107,101, + 32,97,32,115,112,101,99,32,97,115,32,105,116,115,32,111, + 110,108,121,32,95,95,105,110,105,116,95,95,40,41,32,97, + 114,103,46,10,10,32,32,32,32,78,122,9,60,117,110,107, + 110,111,119,110,62,218,12,103,101,116,95,102,105,108,101,110, + 97,109,101,169,1,218,6,111,114,105,103,105,110,84,218,10, + 105,115,95,112,97,99,107,97,103,101,114,73,0,0,0,41, + 17,114,128,0,0,0,114,179,0,0,0,114,117,0,0,0, + 114,4,0,0,0,114,79,0,0,0,114,134,0,0,0,218, + 10,77,111,100,117,108,101,83,112,101,99,90,13,95,115,101, + 116,95,102,105,108,101,97,116,116,114,218,27,95,103,101,116, + 95,115,117,112,112,111,114,116,101,100,95,102,105,108,101,95, + 108,111,97,100,101,114,115,114,110,0,0,0,114,111,0,0, + 0,114,140,0,0,0,218,9,95,80,79,80,85,76,65,84, + 69,114,182,0,0,0,114,178,0,0,0,114,47,0,0,0, + 218,6,97,112,112,101,110,100,41,9,114,116,0,0,0,90, + 8,108,111,99,97,116,105,111,110,114,140,0,0,0,114,178, + 0,0,0,218,4,115,112,101,99,218,12,108,111,97,100,101, + 114,95,99,108,97,115,115,218,8,115,117,102,102,105,120,101, + 115,114,182,0,0,0,90,7,100,105,114,110,97,109,101,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,23, + 115,112,101,99,95,102,114,111,109,95,102,105,108,101,95,108, + 111,99,97,116,105,111,110,124,2,0,0,115,62,0,0,0, + 0,12,8,4,4,1,10,2,2,1,14,1,12,1,8,2, + 10,8,16,1,6,3,8,1,14,1,14,1,10,1,6,1, + 6,2,4,3,8,2,10,1,2,1,14,1,12,1,6,2, + 4,1,8,2,6,1,12,1,6,1,12,1,12,2,114,190, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,64,0,0,0,115,80,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,90, + 4,100,3,90,5,100,4,90,6,101,7,100,5,100,6,132, + 0,131,1,90,8,101,7,100,7,100,8,132,0,131,1,90, + 9,101,7,100,14,100,10,100,11,132,1,131,1,90,10,101, + 7,100,15,100,12,100,13,132,1,131,1,90,11,100,9,83, + 0,41,16,218,21,87,105,110,100,111,119,115,82,101,103,105, + 115,116,114,121,70,105,110,100,101,114,122,62,77,101,116,97, + 32,112,97,116,104,32,102,105,110,100,101,114,32,102,111,114, + 32,109,111,100,117,108,101,115,32,100,101,99,108,97,114,101, + 100,32,105,110,32,116,104,101,32,87,105,110,100,111,119,115, + 32,114,101,103,105,115,116,114,121,46,122,59,83,111,102,116, + 119,97,114,101,92,80,121,116,104,111,110,92,80,121,116,104, + 111,110,67,111,114,101,92,123,115,121,115,95,118,101,114,115, + 105,111,110,125,92,77,111,100,117,108,101,115,92,123,102,117, + 108,108,110,97,109,101,125,122,65,83,111,102,116,119,97,114, + 101,92,80,121,116,104,111,110,92,80,121,116,104,111,110,67, + 111,114,101,92,123,115,121,115,95,118,101,114,115,105,111,110, + 125,92,77,111,100,117,108,101,115,92,123,102,117,108,108,110, + 97,109,101,125,92,68,101,98,117,103,70,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,8,0,0,0, + 67,0,0,0,115,54,0,0,0,122,16,116,0,160,1,116, + 0,106,2,124,1,161,2,87,0,83,0,4,0,116,3,121, + 48,1,0,1,0,1,0,116,0,160,1,116,0,106,4,124, + 1,161,2,6,0,89,0,83,0,48,0,100,0,83,0,114, + 109,0,0,0,41,5,218,6,119,105,110,114,101,103,90,7, + 79,112,101,110,75,101,121,90,17,72,75,69,89,95,67,85, + 82,82,69,78,84,95,85,83,69,82,114,50,0,0,0,90, + 18,72,75,69,89,95,76,79,67,65,76,95,77,65,67,72, + 73,78,69,41,2,218,3,99,108,115,114,7,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,14, + 95,111,112,101,110,95,114,101,103,105,115,116,114,121,204,2, + 0,0,115,8,0,0,0,0,2,2,1,16,1,12,1,122, + 36,87,105,110,100,111,119,115,82,101,103,105,115,116,114,121, + 70,105,110,100,101,114,46,95,111,112,101,110,95,114,101,103, + 105,115,116,114,121,99,2,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,132, + 0,0,0,124,0,106,0,114,14,124,0,106,1,125,2,110, + 6,124,0,106,2,125,2,124,2,106,3,124,1,100,1,116, + 4,106,5,100,0,100,2,133,2,25,0,22,0,100,3,141, + 2,125,3,122,58,124,0,160,6,124,3,161,1,143,28,125, + 4,116,7,160,8,124,4,100,4,161,2,125,5,87,0,100, + 0,4,0,4,0,131,3,1,0,110,16,49,0,115,94,48, + 0,1,0,1,0,1,0,89,0,1,0,87,0,110,20,4, + 0,116,9,121,126,1,0,1,0,1,0,89,0,100,0,83, + 0,48,0,124,5,83,0,41,5,78,122,5,37,100,46,37, + 100,114,28,0,0,0,41,2,114,139,0,0,0,90,11,115, + 121,115,95,118,101,114,115,105,111,110,114,40,0,0,0,41, + 10,218,11,68,69,66,85,71,95,66,85,73,76,68,218,18, + 82,69,71,73,83,84,82,89,95,75,69,89,95,68,69,66, + 85,71,218,12,82,69,71,73,83,84,82,89,95,75,69,89, + 114,62,0,0,0,114,1,0,0,0,218,12,118,101,114,115, + 105,111,110,95,105,110,102,111,114,194,0,0,0,114,192,0, + 0,0,90,10,81,117,101,114,121,86,97,108,117,101,114,50, + 0,0,0,41,6,114,193,0,0,0,114,139,0,0,0,90, + 12,114,101,103,105,115,116,114,121,95,107,101,121,114,7,0, + 0,0,90,4,104,107,101,121,218,8,102,105,108,101,112,97, + 116,104,114,5,0,0,0,114,5,0,0,0,114,8,0,0, + 0,218,16,95,115,101,97,114,99,104,95,114,101,103,105,115, + 116,114,121,211,2,0,0,115,24,0,0,0,0,2,6,1, + 8,2,6,1,6,1,16,255,6,2,2,1,12,1,46,1, + 12,1,8,1,122,38,87,105,110,100,111,119,115,82,101,103, + 105,115,116,114,121,70,105,110,100,101,114,46,95,115,101,97, + 114,99,104,95,114,101,103,105,115,116,114,121,78,99,4,0, + 0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0, + 0,0,67,0,0,0,115,120,0,0,0,124,0,160,0,124, + 1,161,1,125,4,124,4,100,0,117,0,114,22,100,0,83, + 0,122,12,116,1,124,4,131,1,1,0,87,0,110,20,4, + 0,116,2,121,54,1,0,1,0,1,0,89,0,100,0,83, + 0,48,0,116,3,131,0,68,0,93,52,92,2,125,5,125, + 6,124,4,160,4,116,5,124,6,131,1,161,1,114,62,116, + 6,106,7,124,1,124,5,124,1,124,4,131,2,124,4,100, + 1,141,3,125,7,124,7,2,0,1,0,83,0,113,62,100, + 0,83,0,41,2,78,114,180,0,0,0,41,8,114,200,0, + 0,0,114,49,0,0,0,114,50,0,0,0,114,184,0,0, + 0,114,110,0,0,0,114,111,0,0,0,114,134,0,0,0, + 218,16,115,112,101,99,95,102,114,111,109,95,108,111,97,100, + 101,114,41,8,114,193,0,0,0,114,139,0,0,0,114,44, + 0,0,0,218,6,116,97,114,103,101,116,114,199,0,0,0, + 114,140,0,0,0,114,189,0,0,0,114,187,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,9, + 102,105,110,100,95,115,112,101,99,226,2,0,0,115,28,0, + 0,0,0,2,10,1,8,1,4,1,2,1,12,1,12,1, + 8,1,14,1,14,1,6,1,8,1,2,254,6,3,122,31, + 87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70, + 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 4,0,0,0,67,0,0,0,115,34,0,0,0,124,0,160, + 0,124,1,124,2,161,2,125,3,124,3,100,1,117,1,114, + 26,124,3,106,1,83,0,100,1,83,0,100,1,83,0,41, + 2,122,108,70,105,110,100,32,109,111,100,117,108,101,32,110, + 97,109,101,100,32,105,110,32,116,104,101,32,114,101,103,105, + 115,116,114,121,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, + 116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,78, + 169,2,114,203,0,0,0,114,140,0,0,0,169,4,114,193, + 0,0,0,114,139,0,0,0,114,44,0,0,0,114,187,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,8,0,0, + 0,218,11,102,105,110,100,95,109,111,100,117,108,101,242,2, + 0,0,115,8,0,0,0,0,7,12,1,8,1,6,2,122, + 33,87,105,110,100,111,119,115,82,101,103,105,115,116,114,121, + 70,105,110,100,101,114,46,102,105,110,100,95,109,111,100,117, + 108,101,41,2,78,78,41,1,78,41,12,114,125,0,0,0, + 114,124,0,0,0,114,126,0,0,0,114,127,0,0,0,114, + 197,0,0,0,114,196,0,0,0,114,195,0,0,0,218,11, + 99,108,97,115,115,109,101,116,104,111,100,114,194,0,0,0, + 114,200,0,0,0,114,203,0,0,0,114,206,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, + 0,0,0,114,191,0,0,0,192,2,0,0,115,28,0,0, + 0,8,2,4,3,2,255,2,4,2,255,2,3,4,2,2, + 1,10,6,2,1,10,14,2,1,12,15,2,1,114,191,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,64,0,0,0,115,48,0,0,0, + 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,3, + 132,0,90,4,100,4,100,5,132,0,90,5,100,6,100,7, + 132,0,90,6,100,8,100,9,132,0,90,7,100,10,83,0, + 41,11,218,13,95,76,111,97,100,101,114,66,97,115,105,99, + 115,122,83,66,97,115,101,32,99,108,97,115,115,32,111,102, + 32,99,111,109,109,111,110,32,99,111,100,101,32,110,101,101, + 100,101,100,32,98,121,32,98,111,116,104,32,83,111,117,114, + 99,101,76,111,97,100,101,114,32,97,110,100,10,32,32,32, + 32,83,111,117,114,99,101,108,101,115,115,70,105,108,101,76, + 111,97,100,101,114,46,99,2,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,4,0,0,0,67,0,0,0,115, + 64,0,0,0,116,0,124,0,160,1,124,1,161,1,131,1, + 100,1,25,0,125,2,124,2,160,2,100,2,100,1,161,2, + 100,3,25,0,125,3,124,1,160,3,100,2,161,1,100,4, + 25,0,125,4,124,3,100,5,107,2,111,62,124,4,100,5, + 107,3,83,0,41,6,122,141,67,111,110,99,114,101,116,101, + 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32, + 111,102,32,73,110,115,112,101,99,116,76,111,97,100,101,114, + 46,105,115,95,112,97,99,107,97,103,101,32,98,121,32,99, + 104,101,99,107,105,110,103,32,105,102,10,32,32,32,32,32, + 32,32,32,116,104,101,32,112,97,116,104,32,114,101,116,117, + 114,110,101,100,32,98,121,32,103,101,116,95,102,105,108,101, + 110,97,109,101,32,104,97,115,32,97,32,102,105,108,101,110, + 97,109,101,32,111,102,32,39,95,95,105,110,105,116,95,95, + 46,112,121,39,46,114,39,0,0,0,114,71,0,0,0,114, + 73,0,0,0,114,28,0,0,0,218,8,95,95,105,110,105, + 116,95,95,41,4,114,47,0,0,0,114,179,0,0,0,114, + 43,0,0,0,114,41,0,0,0,41,5,114,118,0,0,0, + 114,139,0,0,0,114,96,0,0,0,90,13,102,105,108,101, + 110,97,109,101,95,98,97,115,101,90,9,116,97,105,108,95, + 110,97,109,101,114,5,0,0,0,114,5,0,0,0,114,8, + 0,0,0,114,182,0,0,0,5,3,0,0,115,8,0,0, + 0,0,3,18,1,16,1,14,1,122,24,95,76,111,97,100, + 101,114,66,97,115,105,99,115,46,105,115,95,112,97,99,107, + 97,103,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,83,0,169,2,122,42,85,115,101,32,100,101,102, + 97,117,108,116,32,115,101,109,97,110,116,105,99,115,32,102, + 111,114,32,109,111,100,117,108,101,32,99,114,101,97,116,105, + 111,110,46,78,114,5,0,0,0,169,2,114,118,0,0,0, + 114,187,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 8,0,0,0,218,13,99,114,101,97,116,101,95,109,111,100, + 117,108,101,13,3,0,0,115,2,0,0,0,0,1,122,27, + 95,76,111,97,100,101,114,66,97,115,105,99,115,46,99,114, + 101,97,116,101,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0, + 67,0,0,0,115,56,0,0,0,124,0,160,0,124,1,106, + 1,161,1,125,2,124,2,100,1,117,0,114,36,116,2,100, + 2,160,3,124,1,106,1,161,1,131,1,130,1,116,4,160, + 5,116,6,124,2,124,1,106,7,161,3,1,0,100,1,83, + 0,41,3,122,19,69,120,101,99,117,116,101,32,116,104,101, + 32,109,111,100,117,108,101,46,78,122,52,99,97,110,110,111, + 116,32,108,111,97,100,32,109,111,100,117,108,101,32,123,33, + 114,125,32,119,104,101,110,32,103,101,116,95,99,111,100,101, + 40,41,32,114,101,116,117,114,110,115,32,78,111,110,101,41, + 8,218,8,103,101,116,95,99,111,100,101,114,125,0,0,0, + 114,117,0,0,0,114,62,0,0,0,114,134,0,0,0,218, + 25,95,99,97,108,108,95,119,105,116,104,95,102,114,97,109, + 101,115,95,114,101,109,111,118,101,100,218,4,101,120,101,99, + 114,131,0,0,0,41,3,114,118,0,0,0,218,6,109,111, + 100,117,108,101,114,164,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,8,0,0,0,218,11,101,120,101,99,95,109, + 111,100,117,108,101,16,3,0,0,115,12,0,0,0,0,2, + 12,1,8,1,6,1,4,255,6,2,122,25,95,76,111,97, + 100,101,114,66,97,115,105,99,115,46,101,120,101,99,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,12, + 0,0,0,116,0,160,1,124,0,124,1,161,2,83,0,41, + 1,122,26,84,104,105,115,32,109,111,100,117,108,101,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,46,41,2,114, + 134,0,0,0,218,17,95,108,111,97,100,95,109,111,100,117, + 108,101,95,115,104,105,109,169,2,114,118,0,0,0,114,139, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, + 0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,24, + 3,0,0,115,2,0,0,0,0,2,122,25,95,76,111,97, + 100,101,114,66,97,115,105,99,115,46,108,111,97,100,95,109, + 111,100,117,108,101,78,41,8,114,125,0,0,0,114,124,0, + 0,0,114,126,0,0,0,114,127,0,0,0,114,182,0,0, + 0,114,212,0,0,0,114,217,0,0,0,114,220,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 8,0,0,0,114,208,0,0,0,0,3,0,0,115,10,0, + 0,0,8,2,4,3,8,8,8,3,8,8,114,208,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,64,0,0,0,115,74,0,0,0,101, + 0,90,1,100,0,90,2,100,1,100,2,132,0,90,3,100, + 3,100,4,132,0,90,4,100,5,100,6,132,0,90,5,100, + 7,100,8,132,0,90,6,100,9,100,10,132,0,90,7,100, + 11,100,12,156,1,100,13,100,14,132,2,90,8,100,15,100, + 16,132,0,90,9,100,17,83,0,41,18,218,12,83,111,117, + 114,99,101,76,111,97,100,101,114,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, + 0,0,115,8,0,0,0,116,0,130,1,100,1,83,0,41, + 2,122,165,79,112,116,105,111,110,97,108,32,109,101,116,104, + 111,100,32,116,104,97,116,32,114,101,116,117,114,110,115,32, + 116,104,101,32,109,111,100,105,102,105,99,97,116,105,111,110, + 32,116,105,109,101,32,40,97,110,32,105,110,116,41,32,102, + 111,114,32,116,104,101,10,32,32,32,32,32,32,32,32,115, + 112,101,99,105,102,105,101,100,32,112,97,116,104,32,40,97, + 32,115,116,114,41,46,10,10,32,32,32,32,32,32,32,32, + 82,97,105,115,101,115,32,79,83,69,114,114,111,114,32,119, + 104,101,110,32,116,104,101,32,112,97,116,104,32,99,97,110, + 110,111,116,32,98,101,32,104,97,110,100,108,101,100,46,10, + 32,32,32,32,32,32,32,32,78,41,1,114,50,0,0,0, + 169,2,114,118,0,0,0,114,44,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,8,0,0,0,218,10,112,97,116, + 104,95,109,116,105,109,101,31,3,0,0,115,2,0,0,0, + 0,6,122,23,83,111,117,114,99,101,76,111,97,100,101,114, + 46,112,97,116,104,95,109,116,105,109,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 67,0,0,0,115,14,0,0,0,100,1,124,0,160,0,124, + 1,161,1,105,1,83,0,41,2,97,158,1,0,0,79,112, + 116,105,111,110,97,108,32,109,101,116,104,111,100,32,114,101, + 116,117,114,110,105,110,103,32,97,32,109,101,116,97,100,97, + 116,97,32,100,105,99,116,32,102,111,114,32,116,104,101,32, + 115,112,101,99,105,102,105,101,100,10,32,32,32,32,32,32, + 32,32,112,97,116,104,32,40,97,32,115,116,114,41,46,10, + 10,32,32,32,32,32,32,32,32,80,111,115,115,105,98,108, + 101,32,107,101,121,115,58,10,32,32,32,32,32,32,32,32, + 45,32,39,109,116,105,109,101,39,32,40,109,97,110,100,97, + 116,111,114,121,41,32,105,115,32,116,104,101,32,110,117,109, + 101,114,105,99,32,116,105,109,101,115,116,97,109,112,32,111, + 102,32,108,97,115,116,32,115,111,117,114,99,101,10,32,32, + 32,32,32,32,32,32,32,32,99,111,100,101,32,109,111,100, + 105,102,105,99,97,116,105,111,110,59,10,32,32,32,32,32, + 32,32,32,45,32,39,115,105,122,101,39,32,40,111,112,116, + 105,111,110,97,108,41,32,105,115,32,116,104,101,32,115,105, + 122,101,32,105,110,32,98,121,116,101,115,32,111,102,32,116, + 104,101,32,115,111,117,114,99,101,32,99,111,100,101,46,10, + 10,32,32,32,32,32,32,32,32,73,109,112,108,101,109,101, + 110,116,105,110,103,32,116,104,105,115,32,109,101,116,104,111, + 100,32,97,108,108,111,119,115,32,116,104,101,32,108,111,97, + 100,101,114,32,116,111,32,114,101,97,100,32,98,121,116,101, + 99,111,100,101,32,102,105,108,101,115,46,10,32,32,32,32, + 32,32,32,32,82,97,105,115,101,115,32,79,83,69,114,114, + 111,114,32,119,104,101,110,32,116,104,101,32,112,97,116,104, + 32,99,97,110,110,111,116,32,98,101,32,104,97,110,100,108, + 101,100,46,10,32,32,32,32,32,32,32,32,114,169,0,0, + 0,41,1,114,223,0,0,0,114,222,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,218,10,112,97, + 116,104,95,115,116,97,116,115,39,3,0,0,115,2,0,0, + 0,0,12,122,23,83,111,117,114,99,101,76,111,97,100,101, + 114,46,112,97,116,104,95,115,116,97,116,115,99,4,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0, + 0,67,0,0,0,115,12,0,0,0,124,0,160,0,124,2, + 124,3,161,2,83,0,41,1,122,228,79,112,116,105,111,110, + 97,108,32,109,101,116,104,111,100,32,119,104,105,99,104,32, + 119,114,105,116,101,115,32,100,97,116,97,32,40,98,121,116, + 101,115,41,32,116,111,32,97,32,102,105,108,101,32,112,97, + 116,104,32,40,97,32,115,116,114,41,46,10,10,32,32,32, + 32,32,32,32,32,73,109,112,108,101,109,101,110,116,105,110, + 103,32,116,104,105,115,32,109,101,116,104,111,100,32,97,108, + 108,111,119,115,32,102,111,114,32,116,104,101,32,119,114,105, + 116,105,110,103,32,111,102,32,98,121,116,101,99,111,100,101, + 32,102,105,108,101,115,46,10,10,32,32,32,32,32,32,32, + 32,84,104,101,32,115,111,117,114,99,101,32,112,97,116,104, + 32,105,115,32,110,101,101,100,101,100,32,105,110,32,111,114, + 100,101,114,32,116,111,32,99,111,114,114,101,99,116,108,121, + 32,116,114,97,110,115,102,101,114,32,112,101,114,109,105,115, + 115,105,111,110,115,10,32,32,32,32,32,32,32,32,41,1, + 218,8,115,101,116,95,100,97,116,97,41,4,114,118,0,0, + 0,114,107,0,0,0,90,10,99,97,99,104,101,95,112,97, + 116,104,114,26,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,8,0,0,0,218,15,95,99,97,99,104,101,95,98, + 121,116,101,99,111,100,101,53,3,0,0,115,2,0,0,0, + 0,8,122,28,83,111,117,114,99,101,76,111,97,100,101,114, + 46,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101, + 99,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, + 83,0,41,2,122,150,79,112,116,105,111,110,97,108,32,109, + 101,116,104,111,100,32,119,104,105,99,104,32,119,114,105,116, + 101,115,32,100,97,116,97,32,40,98,121,116,101,115,41,32, + 116,111,32,97,32,102,105,108,101,32,112,97,116,104,32,40, + 97,32,115,116,114,41,46,10,10,32,32,32,32,32,32,32, + 32,73,109,112,108,101,109,101,110,116,105,110,103,32,116,104, + 105,115,32,109,101,116,104,111,100,32,97,108,108,111,119,115, + 32,102,111,114,32,116,104,101,32,119,114,105,116,105,110,103, + 32,111,102,32,98,121,116,101,99,111,100,101,32,102,105,108, + 101,115,46,10,32,32,32,32,32,32,32,32,78,114,5,0, + 0,0,41,3,114,118,0,0,0,114,44,0,0,0,114,26, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, + 0,0,114,225,0,0,0,63,3,0,0,115,2,0,0,0, + 0,1,122,21,83,111,117,114,99,101,76,111,97,100,101,114, + 46,115,101,116,95,100,97,116,97,99,2,0,0,0,0,0, + 0,0,0,0,0,0,5,0,0,0,10,0,0,0,67,0, + 0,0,115,84,0,0,0,124,0,160,0,124,1,161,1,125, + 2,122,14,124,0,160,1,124,2,161,1,125,3,87,0,110, + 50,4,0,116,2,121,74,1,0,125,4,1,0,122,26,116, + 3,100,1,124,1,100,2,141,2,124,4,130,2,87,0,89, + 0,100,3,125,4,126,4,110,10,100,3,125,4,126,4,48, + 0,48,0,116,4,124,3,131,1,83,0,41,4,122,52,67, 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, - 116,76,111,97,100,101,114,46,105,115,95,112,97,99,107,97, - 103,101,32,98,121,32,99,104,101,99,107,105,110,103,32,105, - 102,10,32,32,32,32,32,32,32,32,116,104,101,32,112,97, - 116,104,32,114,101,116,117,114,110,101,100,32,98,121,32,103, - 101,116,95,102,105,108,101,110,97,109,101,32,104,97,115,32, - 97,32,102,105,108,101,110,97,109,101,32,111,102,32,39,95, - 95,105,110,105,116,95,95,46,112,121,39,46,114,39,0,0, - 0,114,71,0,0,0,114,73,0,0,0,114,28,0,0,0, - 218,8,95,95,105,110,105,116,95,95,41,4,114,47,0,0, - 0,114,179,0,0,0,114,43,0,0,0,114,41,0,0,0, - 41,5,114,118,0,0,0,114,139,0,0,0,114,96,0,0, - 0,90,13,102,105,108,101,110,97,109,101,95,98,97,115,101, - 90,9,116,97,105,108,95,110,97,109,101,114,5,0,0,0, - 114,5,0,0,0,114,8,0,0,0,114,182,0,0,0,5, - 3,0,0,115,8,0,0,0,0,3,18,1,16,1,14,1, - 122,24,95,76,111,97,100,101,114,66,97,115,105,99,115,46, - 105,115,95,112,97,99,107,97,103,101,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, - 0,0,0,115,4,0,0,0,100,1,83,0,169,2,122,42, - 85,115,101,32,100,101,102,97,117,108,116,32,115,101,109,97, - 110,116,105,99,115,32,102,111,114,32,109,111,100,117,108,101, - 32,99,114,101,97,116,105,111,110,46,78,114,5,0,0,0, - 169,2,114,118,0,0,0,114,187,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,8,0,0,0,218,13,99,114,101, - 97,116,101,95,109,111,100,117,108,101,13,3,0,0,115,2, - 0,0,0,0,1,122,27,95,76,111,97,100,101,114,66,97, - 115,105,99,115,46,99,114,101,97,116,101,95,109,111,100,117, - 108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,5,0,0,0,67,0,0,0,115,56,0,0,0, - 124,0,160,0,124,1,106,1,161,1,125,2,124,2,100,1, - 117,0,114,36,116,2,100,2,160,3,124,1,106,1,161,1, - 131,1,130,1,116,4,160,5,116,6,124,2,124,1,106,7, - 161,3,1,0,100,1,83,0,41,3,122,19,69,120,101,99, - 117,116,101,32,116,104,101,32,109,111,100,117,108,101,46,78, - 122,52,99,97,110,110,111,116,32,108,111,97,100,32,109,111, - 100,117,108,101,32,123,33,114,125,32,119,104,101,110,32,103, - 101,116,95,99,111,100,101,40,41,32,114,101,116,117,114,110, - 115,32,78,111,110,101,41,8,218,8,103,101,116,95,99,111, - 100,101,114,125,0,0,0,114,117,0,0,0,114,62,0,0, - 0,114,134,0,0,0,218,25,95,99,97,108,108,95,119,105, - 116,104,95,102,114,97,109,101,115,95,114,101,109,111,118,101, - 100,218,4,101,120,101,99,114,131,0,0,0,41,3,114,118, - 0,0,0,218,6,109,111,100,117,108,101,114,164,0,0,0, + 116,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114, + 99,101,46,122,39,115,111,117,114,99,101,32,110,111,116,32, + 97,118,97,105,108,97,98,108,101,32,116,104,114,111,117,103, + 104,32,103,101,116,95,100,97,116,97,40,41,114,115,0,0, + 0,78,41,5,114,179,0,0,0,218,8,103,101,116,95,100, + 97,116,97,114,50,0,0,0,114,117,0,0,0,114,176,0, + 0,0,41,5,114,118,0,0,0,114,139,0,0,0,114,44, + 0,0,0,114,174,0,0,0,218,3,101,120,99,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,218,10,103,101, + 116,95,115,111,117,114,99,101,70,3,0,0,115,20,0,0, + 0,0,2,10,1,2,1,14,1,14,1,4,1,2,255,4, + 1,2,255,24,2,122,23,83,111,117,114,99,101,76,111,97, + 100,101,114,46,103,101,116,95,115,111,117,114,99,101,114,104, + 0,0,0,41,1,218,9,95,111,112,116,105,109,105,122,101, + 99,3,0,0,0,0,0,0,0,1,0,0,0,4,0,0, + 0,8,0,0,0,67,0,0,0,115,22,0,0,0,116,0, + 106,1,116,2,124,1,124,2,100,1,100,2,124,3,100,3, + 141,6,83,0,41,4,122,130,82,101,116,117,114,110,32,116, + 104,101,32,99,111,100,101,32,111,98,106,101,99,116,32,99, + 111,109,112,105,108,101,100,32,102,114,111,109,32,115,111,117, + 114,99,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 101,32,39,100,97,116,97,39,32,97,114,103,117,109,101,110, + 116,32,99,97,110,32,98,101,32,97,110,121,32,111,98,106, + 101,99,116,32,116,121,112,101,32,116,104,97,116,32,99,111, + 109,112,105,108,101,40,41,32,115,117,112,112,111,114,116,115, + 46,10,32,32,32,32,32,32,32,32,114,215,0,0,0,84, + 41,2,218,12,100,111,110,116,95,105,110,104,101,114,105,116, + 114,83,0,0,0,41,3,114,134,0,0,0,114,214,0,0, + 0,218,7,99,111,109,112,105,108,101,41,4,114,118,0,0, + 0,114,26,0,0,0,114,44,0,0,0,114,230,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,218, - 11,101,120,101,99,95,109,111,100,117,108,101,16,3,0,0, - 115,12,0,0,0,0,2,12,1,8,1,6,1,4,255,6, - 2,122,25,95,76,111,97,100,101,114,66,97,115,105,99,115, - 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,67,0,0,0,115,12,0,0,0,116,0,160,1,124,0, - 124,1,161,2,83,0,41,1,122,26,84,104,105,115,32,109, - 111,100,117,108,101,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,46,41,2,114,134,0,0,0,218,17,95,108,111, - 97,100,95,109,111,100,117,108,101,95,115,104,105,109,169,2, - 114,118,0,0,0,114,139,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,218,11,108,111,97,100,95, - 109,111,100,117,108,101,24,3,0,0,115,2,0,0,0,0, - 2,122,25,95,76,111,97,100,101,114,66,97,115,105,99,115, - 46,108,111,97,100,95,109,111,100,117,108,101,78,41,8,114, - 125,0,0,0,114,124,0,0,0,114,126,0,0,0,114,127, - 0,0,0,114,182,0,0,0,114,212,0,0,0,114,217,0, - 0,0,114,220,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,8,0,0,0,114,208,0,0,0, - 0,3,0,0,115,10,0,0,0,8,2,4,3,8,8,8, - 3,8,8,114,208,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0, - 0,115,74,0,0,0,101,0,90,1,100,0,90,2,100,1, - 100,2,132,0,90,3,100,3,100,4,132,0,90,4,100,5, - 100,6,132,0,90,5,100,7,100,8,132,0,90,6,100,9, - 100,10,132,0,90,7,100,11,100,12,156,1,100,13,100,14, - 132,2,90,8,100,15,100,16,132,0,90,9,100,17,83,0, - 41,18,218,12,83,111,117,114,99,101,76,111,97,100,101,114, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,1,0,0,0,67,0,0,0,115,8,0,0,0,116,0, - 130,1,100,1,83,0,41,2,122,165,79,112,116,105,111,110, - 97,108,32,109,101,116,104,111,100,32,116,104,97,116,32,114, - 101,116,117,114,110,115,32,116,104,101,32,109,111,100,105,102, - 105,99,97,116,105,111,110,32,116,105,109,101,32,40,97,110, - 32,105,110,116,41,32,102,111,114,32,116,104,101,10,32,32, - 32,32,32,32,32,32,115,112,101,99,105,102,105,101,100,32, - 112,97,116,104,32,40,97,32,115,116,114,41,46,10,10,32, - 32,32,32,32,32,32,32,82,97,105,115,101,115,32,79,83, - 69,114,114,111,114,32,119,104,101,110,32,116,104,101,32,112, - 97,116,104,32,99,97,110,110,111,116,32,98,101,32,104,97, - 110,100,108,101,100,46,10,32,32,32,32,32,32,32,32,78, - 41,1,114,50,0,0,0,169,2,114,118,0,0,0,114,44, + 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,80, + 3,0,0,115,6,0,0,0,0,5,12,1,4,255,122,27, + 83,111,117,114,99,101,76,111,97,100,101,114,46,115,111,117, + 114,99,101,95,116,111,95,99,111,100,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,15,0,0,0,9,0,0,0, + 67,0,0,0,115,24,2,0,0,124,0,160,0,124,1,161, + 1,125,2,100,1,125,3,100,1,125,4,100,1,125,5,100, + 2,125,6,100,3,125,7,122,12,116,1,124,2,131,1,125, + 8,87,0,110,24,4,0,116,2,121,66,1,0,1,0,1, + 0,100,1,125,8,89,0,144,1,110,42,48,0,122,14,124, + 0,160,3,124,2,161,1,125,9,87,0,110,20,4,0,116, + 4,121,102,1,0,1,0,1,0,89,0,144,1,110,6,48, + 0,116,5,124,9,100,4,25,0,131,1,125,3,122,14,124, + 0,160,6,124,8,161,1,125,10,87,0,110,18,4,0,116, + 4,121,148,1,0,1,0,1,0,89,0,110,216,48,0,124, + 1,124,8,100,5,156,2,125,11,122,148,116,7,124,10,124, + 1,124,11,131,3,125,12,116,8,124,10,131,1,100,6,100, + 1,133,2,25,0,125,13,124,12,100,7,64,0,100,8,107, + 3,125,6,124,6,144,1,114,30,124,12,100,9,64,0,100, + 8,107,3,125,7,116,9,106,10,100,10,107,3,144,1,114, + 50,124,7,115,248,116,9,106,10,100,11,107,2,144,1,114, + 50,124,0,160,6,124,2,161,1,125,4,116,9,160,11,116, + 12,124,4,161,2,125,5,116,13,124,10,124,5,124,1,124, + 11,131,4,1,0,110,20,116,14,124,10,124,3,124,9,100, + 12,25,0,124,1,124,11,131,5,1,0,87,0,110,24,4, + 0,116,15,116,16,102,2,144,1,121,76,1,0,1,0,1, + 0,89,0,110,32,48,0,116,17,160,18,100,13,124,8,124, + 2,161,3,1,0,116,19,124,13,124,1,124,8,124,2,100, + 14,141,4,83,0,124,4,100,1,117,0,144,1,114,128,124, + 0,160,6,124,2,161,1,125,4,124,0,160,20,124,4,124, + 2,161,2,125,14,116,17,160,18,100,15,124,2,161,2,1, + 0,116,21,106,22,144,2,115,20,124,8,100,1,117,1,144, + 2,114,20,124,3,100,1,117,1,144,2,114,20,124,6,144, + 1,114,220,124,5,100,1,117,0,144,1,114,206,116,9,160, + 11,124,4,161,1,125,5,116,23,124,14,124,5,124,7,131, + 3,125,10,110,16,116,24,124,14,124,3,116,25,124,4,131, + 1,131,3,125,10,122,18,124,0,160,26,124,2,124,8,124, + 10,161,3,1,0,87,0,110,20,4,0,116,2,144,2,121, + 18,1,0,1,0,1,0,89,0,110,2,48,0,124,14,83, + 0,41,16,122,190,67,111,110,99,114,101,116,101,32,105,109, + 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32, + 73,110,115,112,101,99,116,76,111,97,100,101,114,46,103,101, + 116,95,99,111,100,101,46,10,10,32,32,32,32,32,32,32, + 32,82,101,97,100,105,110,103,32,111,102,32,98,121,116,101, + 99,111,100,101,32,114,101,113,117,105,114,101,115,32,112,97, + 116,104,95,115,116,97,116,115,32,116,111,32,98,101,32,105, + 109,112,108,101,109,101,110,116,101,100,46,32,84,111,32,119, + 114,105,116,101,10,32,32,32,32,32,32,32,32,98,121,116, + 101,99,111,100,101,44,32,115,101,116,95,100,97,116,97,32, + 109,117,115,116,32,97,108,115,111,32,98,101,32,105,109,112, + 108,101,109,101,110,116,101,100,46,10,10,32,32,32,32,32, + 32,32,32,78,70,84,114,169,0,0,0,114,159,0,0,0, + 114,145,0,0,0,114,39,0,0,0,114,73,0,0,0,114, + 28,0,0,0,90,5,110,101,118,101,114,90,6,97,108,119, + 97,121,115,218,4,115,105,122,101,122,13,123,125,32,109,97, + 116,99,104,101,115,32,123,125,41,3,114,116,0,0,0,114, + 106,0,0,0,114,107,0,0,0,122,19,99,111,100,101,32, + 111,98,106,101,99,116,32,102,114,111,109,32,123,125,41,27, + 114,179,0,0,0,114,97,0,0,0,114,82,0,0,0,114, + 224,0,0,0,114,50,0,0,0,114,18,0,0,0,114,227, + 0,0,0,114,152,0,0,0,218,10,109,101,109,111,114,121, + 118,105,101,119,114,163,0,0,0,90,21,99,104,101,99,107, + 95,104,97,115,104,95,98,97,115,101,100,95,112,121,99,115, + 114,157,0,0,0,218,17,95,82,65,87,95,77,65,71,73, + 67,95,78,85,77,66,69,82,114,158,0,0,0,114,156,0, + 0,0,114,117,0,0,0,114,150,0,0,0,114,134,0,0, + 0,114,149,0,0,0,114,165,0,0,0,114,233,0,0,0, + 114,1,0,0,0,218,19,100,111,110,116,95,119,114,105,116, + 101,95,98,121,116,101,99,111,100,101,114,171,0,0,0,114, + 170,0,0,0,114,23,0,0,0,114,226,0,0,0,41,15, + 114,118,0,0,0,114,139,0,0,0,114,107,0,0,0,114, + 154,0,0,0,114,174,0,0,0,114,157,0,0,0,90,10, + 104,97,115,104,95,98,97,115,101,100,90,12,99,104,101,99, + 107,95,115,111,117,114,99,101,114,106,0,0,0,218,2,115, + 116,114,26,0,0,0,114,151,0,0,0,114,2,0,0,0, + 90,10,98,121,116,101,115,95,100,97,116,97,90,11,99,111, + 100,101,95,111,98,106,101,99,116,114,5,0,0,0,114,5, + 0,0,0,114,8,0,0,0,114,213,0,0,0,88,3,0, + 0,115,152,0,0,0,0,7,10,1,4,1,4,1,4,1, + 4,1,4,1,2,1,12,1,12,1,12,2,2,1,14,1, + 12,1,8,2,12,1,2,1,14,1,12,1,6,3,2,1, + 2,254,6,4,2,1,12,1,16,1,12,1,6,1,12,1, + 12,1,2,255,2,2,8,254,4,3,10,1,4,1,2,1, + 2,254,4,4,8,1,2,255,6,3,2,1,2,1,2,1, + 6,1,2,1,2,251,8,7,18,1,6,2,8,1,2,255, + 4,2,6,1,2,1,2,254,6,3,10,1,10,1,12,1, + 12,1,18,1,6,255,4,2,6,1,10,1,10,1,14,2, + 6,1,6,255,4,2,2,1,18,1,14,1,6,1,122,21, + 83,111,117,114,99,101,76,111,97,100,101,114,46,103,101,116, + 95,99,111,100,101,78,41,10,114,125,0,0,0,114,124,0, + 0,0,114,126,0,0,0,114,223,0,0,0,114,224,0,0, + 0,114,226,0,0,0,114,225,0,0,0,114,229,0,0,0, + 114,233,0,0,0,114,213,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,221, + 0,0,0,29,3,0,0,115,14,0,0,0,8,2,8,8, + 8,14,8,10,8,7,8,10,14,8,114,221,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,0,0,0,0,115,124,0,0,0,101,0,90, + 1,100,0,90,2,100,1,90,3,100,2,100,3,132,0,90, + 4,100,4,100,5,132,0,90,5,100,6,100,7,132,0,90, + 6,101,7,135,0,102,1,100,8,100,9,132,8,131,1,90, + 8,101,7,100,10,100,11,132,0,131,1,90,9,100,12,100, + 13,132,0,90,10,101,7,100,14,100,15,132,0,131,1,90, + 11,100,16,100,17,132,0,90,12,100,18,100,19,132,0,90, + 13,100,20,100,21,132,0,90,14,100,22,100,23,132,0,90, + 15,135,0,4,0,90,16,83,0,41,24,218,10,70,105,108, + 101,76,111,97,100,101,114,122,103,66,97,115,101,32,102,105, + 108,101,32,108,111,97,100,101,114,32,99,108,97,115,115,32, + 119,104,105,99,104,32,105,109,112,108,101,109,101,110,116,115, + 32,116,104,101,32,108,111,97,100,101,114,32,112,114,111,116, + 111,99,111,108,32,109,101,116,104,111,100,115,32,116,104,97, + 116,10,32,32,32,32,114,101,113,117,105,114,101,32,102,105, + 108,101,32,115,121,115,116,101,109,32,117,115,97,103,101,46, + 99,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,2,0,0,0,67,0,0,0,115,16,0,0,0,124,1, + 124,0,95,0,124,2,124,0,95,1,100,1,83,0,41,2, + 122,75,67,97,99,104,101,32,116,104,101,32,109,111,100,117, + 108,101,32,110,97,109,101,32,97,110,100,32,116,104,101,32, + 112,97,116,104,32,116,111,32,116,104,101,32,102,105,108,101, + 32,102,111,117,110,100,32,98,121,32,116,104,101,10,32,32, + 32,32,32,32,32,32,102,105,110,100,101,114,46,78,114,159, + 0,0,0,41,3,114,118,0,0,0,114,139,0,0,0,114, + 44,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, + 0,0,0,114,209,0,0,0,178,3,0,0,115,4,0,0, + 0,0,3,6,1,122,19,70,105,108,101,76,111,97,100,101, + 114,46,95,95,105,110,105,116,95,95,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,67, + 0,0,0,115,24,0,0,0,124,0,106,0,124,1,106,0, + 107,2,111,22,124,0,106,1,124,1,106,1,107,2,83,0, + 114,109,0,0,0,169,2,218,9,95,95,99,108,97,115,115, + 95,95,114,131,0,0,0,169,2,114,118,0,0,0,90,5, + 111,116,104,101,114,114,5,0,0,0,114,5,0,0,0,114, + 8,0,0,0,218,6,95,95,101,113,95,95,184,3,0,0, + 115,6,0,0,0,0,1,12,1,10,255,122,17,70,105,108, + 101,76,111,97,100,101,114,46,95,95,101,113,95,95,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, + 0,0,0,67,0,0,0,115,20,0,0,0,116,0,124,0, + 106,1,131,1,116,0,124,0,106,2,131,1,65,0,83,0, + 114,109,0,0,0,169,3,218,4,104,97,115,104,114,116,0, + 0,0,114,44,0,0,0,169,1,114,118,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,8,0,0,0,218,8,95, + 95,104,97,115,104,95,95,188,3,0,0,115,2,0,0,0, + 0,1,122,19,70,105,108,101,76,111,97,100,101,114,46,95, + 95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0, + 115,16,0,0,0,116,0,116,1,124,0,131,2,160,2,124, + 1,161,1,83,0,41,1,122,100,76,111,97,100,32,97,32, + 109,111,100,117,108,101,32,102,114,111,109,32,97,32,102,105, + 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, + 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,85,115,101,32,101,120,101, + 99,95,109,111,100,117,108,101,40,41,32,105,110,115,116,101, + 97,100,46,10,10,32,32,32,32,32,32,32,32,41,3,218, + 5,115,117,112,101,114,114,239,0,0,0,114,220,0,0,0, + 114,219,0,0,0,169,1,114,241,0,0,0,114,5,0,0, + 0,114,8,0,0,0,114,220,0,0,0,191,3,0,0,115, + 2,0,0,0,0,10,122,22,70,105,108,101,76,111,97,100, + 101,114,46,108,111,97,100,95,109,111,100,117,108,101,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, + 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0, + 83,0,169,1,122,58,82,101,116,117,114,110,32,116,104,101, + 32,112,97,116,104,32,116,111,32,116,104,101,32,115,111,117, + 114,99,101,32,102,105,108,101,32,97,115,32,102,111,117,110, + 100,32,98,121,32,116,104,101,32,102,105,110,100,101,114,46, + 114,48,0,0,0,114,219,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,8,0,0,0,114,179,0,0,0,203,3, + 0,0,115,2,0,0,0,0,3,122,23,70,105,108,101,76, + 111,97,100,101,114,46,103,101,116,95,102,105,108,101,110,97, + 109,101,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,8,0,0,0,67,0,0,0,115,126,0,0,0, + 116,0,124,0,116,1,116,2,102,2,131,2,114,70,116,3, + 160,4,116,5,124,1,131,1,161,1,143,24,125,2,124,2, + 160,6,161,0,87,0,2,0,100,1,4,0,4,0,131,3, + 1,0,83,0,49,0,115,58,48,0,1,0,1,0,1,0, + 89,0,1,0,110,52,116,3,160,7,124,1,100,2,161,2, + 143,24,125,2,124,2,160,6,161,0,87,0,2,0,100,1, + 4,0,4,0,131,3,1,0,83,0,49,0,115,112,48,0, + 1,0,1,0,1,0,89,0,1,0,100,1,83,0,41,3, + 122,39,82,101,116,117,114,110,32,116,104,101,32,100,97,116, + 97,32,102,114,111,109,32,112,97,116,104,32,97,115,32,114, + 97,119,32,98,121,116,101,115,46,78,218,1,114,41,8,114, + 161,0,0,0,114,221,0,0,0,218,19,69,120,116,101,110, + 115,105,111,110,70,105,108,101,76,111,97,100,101,114,114,64, + 0,0,0,90,9,111,112,101,110,95,99,111,100,101,114,84, + 0,0,0,90,4,114,101,97,100,114,65,0,0,0,41,3, + 114,118,0,0,0,114,44,0,0,0,114,68,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,227, + 0,0,0,208,3,0,0,115,10,0,0,0,0,2,14,1, + 16,1,40,2,14,1,122,19,70,105,108,101,76,111,97,100, + 101,114,46,103,101,116,95,100,97,116,97,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,18,0,0,0,124,0,160,0,124,1,161, + 1,114,14,124,0,83,0,100,0,83,0,114,109,0,0,0, + 41,1,114,182,0,0,0,169,2,114,118,0,0,0,114,216, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, - 0,0,218,10,112,97,116,104,95,109,116,105,109,101,31,3, - 0,0,115,2,0,0,0,0,6,122,23,83,111,117,114,99, - 101,76,111,97,100,101,114,46,112,97,116,104,95,109,116,105, - 109,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,4,0,0,0,67,0,0,0,115,14,0,0,0, - 100,1,124,0,160,0,124,1,161,1,105,1,83,0,41,2, - 97,158,1,0,0,79,112,116,105,111,110,97,108,32,109,101, - 116,104,111,100,32,114,101,116,117,114,110,105,110,103,32,97, - 32,109,101,116,97,100,97,116,97,32,100,105,99,116,32,102, - 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 10,32,32,32,32,32,32,32,32,112,97,116,104,32,40,97, - 32,115,116,114,41,46,10,10,32,32,32,32,32,32,32,32, - 80,111,115,115,105,98,108,101,32,107,101,121,115,58,10,32, - 32,32,32,32,32,32,32,45,32,39,109,116,105,109,101,39, - 32,40,109,97,110,100,97,116,111,114,121,41,32,105,115,32, - 116,104,101,32,110,117,109,101,114,105,99,32,116,105,109,101, - 115,116,97,109,112,32,111,102,32,108,97,115,116,32,115,111, - 117,114,99,101,10,32,32,32,32,32,32,32,32,32,32,99, - 111,100,101,32,109,111,100,105,102,105,99,97,116,105,111,110, - 59,10,32,32,32,32,32,32,32,32,45,32,39,115,105,122, - 101,39,32,40,111,112,116,105,111,110,97,108,41,32,105,115, - 32,116,104,101,32,115,105,122,101,32,105,110,32,98,121,116, - 101,115,32,111,102,32,116,104,101,32,115,111,117,114,99,101, - 32,99,111,100,101,46,10,10,32,32,32,32,32,32,32,32, - 73,109,112,108,101,109,101,110,116,105,110,103,32,116,104,105, - 115,32,109,101,116,104,111,100,32,97,108,108,111,119,115,32, - 116,104,101,32,108,111,97,100,101,114,32,116,111,32,114,101, - 97,100,32,98,121,116,101,99,111,100,101,32,102,105,108,101, - 115,46,10,32,32,32,32,32,32,32,32,82,97,105,115,101, - 115,32,79,83,69,114,114,111,114,32,119,104,101,110,32,116, - 104,101,32,112,97,116,104,32,99,97,110,110,111,116,32,98, - 101,32,104,97,110,100,108,101,100,46,10,32,32,32,32,32, - 32,32,32,114,169,0,0,0,41,1,114,223,0,0,0,114, - 222,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,218,10,112,97,116,104,95,115,116,97,116,115,39, - 3,0,0,115,2,0,0,0,0,12,122,23,83,111,117,114, - 99,101,76,111,97,100,101,114,46,112,97,116,104,95,115,116, - 97,116,115,99,4,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,4,0,0,0,67,0,0,0,115,12,0,0, - 0,124,0,160,0,124,2,124,3,161,2,83,0,41,1,122, - 228,79,112,116,105,111,110,97,108,32,109,101,116,104,111,100, - 32,119,104,105,99,104,32,119,114,105,116,101,115,32,100,97, - 116,97,32,40,98,121,116,101,115,41,32,116,111,32,97,32, - 102,105,108,101,32,112,97,116,104,32,40,97,32,115,116,114, - 41,46,10,10,32,32,32,32,32,32,32,32,73,109,112,108, - 101,109,101,110,116,105,110,103,32,116,104,105,115,32,109,101, - 116,104,111,100,32,97,108,108,111,119,115,32,102,111,114,32, - 116,104,101,32,119,114,105,116,105,110,103,32,111,102,32,98, - 121,116,101,99,111,100,101,32,102,105,108,101,115,46,10,10, - 32,32,32,32,32,32,32,32,84,104,101,32,115,111,117,114, - 99,101,32,112,97,116,104,32,105,115,32,110,101,101,100,101, - 100,32,105,110,32,111,114,100,101,114,32,116,111,32,99,111, - 114,114,101,99,116,108,121,32,116,114,97,110,115,102,101,114, - 32,112,101,114,109,105,115,115,105,111,110,115,10,32,32,32, - 32,32,32,32,32,41,1,218,8,115,101,116,95,100,97,116, - 97,41,4,114,118,0,0,0,114,107,0,0,0,90,10,99, - 97,99,104,101,95,112,97,116,104,114,26,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,8,0,0,0,218,15,95, - 99,97,99,104,101,95,98,121,116,101,99,111,100,101,53,3, - 0,0,115,2,0,0,0,0,8,122,28,83,111,117,114,99, - 101,76,111,97,100,101,114,46,95,99,97,99,104,101,95,98, - 121,116,101,99,111,100,101,99,3,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,1,0,0,0,67,0,0,0, - 115,4,0,0,0,100,1,83,0,41,2,122,150,79,112,116, - 105,111,110,97,108,32,109,101,116,104,111,100,32,119,104,105, - 99,104,32,119,114,105,116,101,115,32,100,97,116,97,32,40, - 98,121,116,101,115,41,32,116,111,32,97,32,102,105,108,101, - 32,112,97,116,104,32,40,97,32,115,116,114,41,46,10,10, - 32,32,32,32,32,32,32,32,73,109,112,108,101,109,101,110, - 116,105,110,103,32,116,104,105,115,32,109,101,116,104,111,100, - 32,97,108,108,111,119,115,32,102,111,114,32,116,104,101,32, - 119,114,105,116,105,110,103,32,111,102,32,98,121,116,101,99, - 111,100,101,32,102,105,108,101,115,46,10,32,32,32,32,32, - 32,32,32,78,114,5,0,0,0,41,3,114,118,0,0,0, - 114,44,0,0,0,114,26,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,114,225,0,0,0,63,3, - 0,0,115,2,0,0,0,0,1,122,21,83,111,117,114,99, - 101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,97, - 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,10,0,0,0,67,0,0,0,115,84,0,0,0,124,0, - 160,0,124,1,161,1,125,2,122,14,124,0,160,1,124,2, - 161,1,125,3,87,0,110,50,4,0,116,2,121,74,1,0, - 125,4,1,0,122,26,116,3,100,1,124,1,100,2,141,2, - 124,4,130,2,87,0,89,0,100,3,125,4,126,4,110,10, - 100,3,125,4,126,4,48,0,48,0,116,4,124,3,131,1, - 83,0,41,4,122,52,67,111,110,99,114,101,116,101,32,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102, - 32,73,110,115,112,101,99,116,76,111,97,100,101,114,46,103, - 101,116,95,115,111,117,114,99,101,46,122,39,115,111,117,114, - 99,101,32,110,111,116,32,97,118,97,105,108,97,98,108,101, - 32,116,104,114,111,117,103,104,32,103,101,116,95,100,97,116, - 97,40,41,114,115,0,0,0,78,41,5,114,179,0,0,0, - 218,8,103,101,116,95,100,97,116,97,114,50,0,0,0,114, - 117,0,0,0,114,176,0,0,0,41,5,114,118,0,0,0, - 114,139,0,0,0,114,44,0,0,0,114,174,0,0,0,218, - 3,101,120,99,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,70, - 3,0,0,115,20,0,0,0,0,2,10,1,2,1,14,1, - 14,1,4,1,2,255,4,1,2,255,24,2,122,23,83,111, - 117,114,99,101,76,111,97,100,101,114,46,103,101,116,95,115, - 111,117,114,99,101,114,104,0,0,0,41,1,218,9,95,111, - 112,116,105,109,105,122,101,99,3,0,0,0,0,0,0,0, - 1,0,0,0,4,0,0,0,8,0,0,0,67,0,0,0, - 115,22,0,0,0,116,0,106,1,116,2,124,1,124,2,100, - 1,100,2,124,3,100,3,141,6,83,0,41,4,122,130,82, - 101,116,117,114,110,32,116,104,101,32,99,111,100,101,32,111, - 98,106,101,99,116,32,99,111,109,112,105,108,101,100,32,102, - 114,111,109,32,115,111,117,114,99,101,46,10,10,32,32,32, - 32,32,32,32,32,84,104,101,32,39,100,97,116,97,39,32, - 97,114,103,117,109,101,110,116,32,99,97,110,32,98,101,32, - 97,110,121,32,111,98,106,101,99,116,32,116,121,112,101,32, - 116,104,97,116,32,99,111,109,112,105,108,101,40,41,32,115, - 117,112,112,111,114,116,115,46,10,32,32,32,32,32,32,32, - 32,114,215,0,0,0,84,41,2,218,12,100,111,110,116,95, - 105,110,104,101,114,105,116,114,83,0,0,0,41,3,114,134, - 0,0,0,114,214,0,0,0,218,7,99,111,109,112,105,108, - 101,41,4,114,118,0,0,0,114,26,0,0,0,114,44,0, - 0,0,114,230,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,8,0,0,0,218,14,115,111,117,114,99,101,95,116, - 111,95,99,111,100,101,80,3,0,0,115,6,0,0,0,0, - 5,12,1,4,255,122,27,83,111,117,114,99,101,76,111,97, - 100,101,114,46,115,111,117,114,99,101,95,116,111,95,99,111, - 100,101,99,2,0,0,0,0,0,0,0,0,0,0,0,15, - 0,0,0,9,0,0,0,67,0,0,0,115,24,2,0,0, - 124,0,160,0,124,1,161,1,125,2,100,1,125,3,100,1, - 125,4,100,1,125,5,100,2,125,6,100,3,125,7,122,12, - 116,1,124,2,131,1,125,8,87,0,110,24,4,0,116,2, - 121,66,1,0,1,0,1,0,100,1,125,8,89,0,144,1, - 110,42,48,0,122,14,124,0,160,3,124,2,161,1,125,9, - 87,0,110,20,4,0,116,4,121,102,1,0,1,0,1,0, - 89,0,144,1,110,6,48,0,116,5,124,9,100,4,25,0, - 131,1,125,3,122,14,124,0,160,6,124,8,161,1,125,10, - 87,0,110,18,4,0,116,4,121,148,1,0,1,0,1,0, - 89,0,110,216,48,0,124,1,124,8,100,5,156,2,125,11, - 122,148,116,7,124,10,124,1,124,11,131,3,125,12,116,8, - 124,10,131,1,100,6,100,1,133,2,25,0,125,13,124,12, - 100,7,64,0,100,8,107,3,125,6,124,6,144,1,114,30, - 124,12,100,9,64,0,100,8,107,3,125,7,116,9,106,10, - 100,10,107,3,144,1,114,50,124,7,115,248,116,9,106,10, - 100,11,107,2,144,1,114,50,124,0,160,6,124,2,161,1, - 125,4,116,9,160,11,116,12,124,4,161,2,125,5,116,13, - 124,10,124,5,124,1,124,11,131,4,1,0,110,20,116,14, - 124,10,124,3,124,9,100,12,25,0,124,1,124,11,131,5, - 1,0,87,0,110,24,4,0,116,15,116,16,102,2,144,1, - 121,76,1,0,1,0,1,0,89,0,110,32,48,0,116,17, - 160,18,100,13,124,8,124,2,161,3,1,0,116,19,124,13, - 124,1,124,8,124,2,100,14,141,4,83,0,124,4,100,1, - 117,0,144,1,114,128,124,0,160,6,124,2,161,1,125,4, - 124,0,160,20,124,4,124,2,161,2,125,14,116,17,160,18, - 100,15,124,2,161,2,1,0,116,21,106,22,144,2,115,20, - 124,8,100,1,117,1,144,2,114,20,124,3,100,1,117,1, - 144,2,114,20,124,6,144,1,114,220,124,5,100,1,117,0, - 144,1,114,206,116,9,160,11,124,4,161,1,125,5,116,23, - 124,14,124,5,124,7,131,3,125,10,110,16,116,24,124,14, - 124,3,116,25,124,4,131,1,131,3,125,10,122,18,124,0, - 160,26,124,2,124,8,124,10,161,3,1,0,87,0,110,20, - 4,0,116,2,144,2,121,18,1,0,1,0,1,0,89,0, - 110,2,48,0,124,14,83,0,41,16,122,190,67,111,110,99, - 114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116, - 105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,111, - 97,100,101,114,46,103,101,116,95,99,111,100,101,46,10,10, - 32,32,32,32,32,32,32,32,82,101,97,100,105,110,103,32, - 111,102,32,98,121,116,101,99,111,100,101,32,114,101,113,117, - 105,114,101,115,32,112,97,116,104,95,115,116,97,116,115,32, - 116,111,32,98,101,32,105,109,112,108,101,109,101,110,116,101, - 100,46,32,84,111,32,119,114,105,116,101,10,32,32,32,32, - 32,32,32,32,98,121,116,101,99,111,100,101,44,32,115,101, - 116,95,100,97,116,97,32,109,117,115,116,32,97,108,115,111, - 32,98,101,32,105,109,112,108,101,109,101,110,116,101,100,46, - 10,10,32,32,32,32,32,32,32,32,78,70,84,114,169,0, - 0,0,114,159,0,0,0,114,145,0,0,0,114,39,0,0, - 0,114,73,0,0,0,114,28,0,0,0,90,5,110,101,118, - 101,114,90,6,97,108,119,97,121,115,218,4,115,105,122,101, - 122,13,123,125,32,109,97,116,99,104,101,115,32,123,125,41, - 3,114,116,0,0,0,114,106,0,0,0,114,107,0,0,0, - 122,19,99,111,100,101,32,111,98,106,101,99,116,32,102,114, - 111,109,32,123,125,41,27,114,179,0,0,0,114,97,0,0, - 0,114,82,0,0,0,114,224,0,0,0,114,50,0,0,0, - 114,18,0,0,0,114,227,0,0,0,114,152,0,0,0,218, - 10,109,101,109,111,114,121,118,105,101,119,114,163,0,0,0, - 90,21,99,104,101,99,107,95,104,97,115,104,95,98,97,115, - 101,100,95,112,121,99,115,114,157,0,0,0,218,17,95,82, - 65,87,95,77,65,71,73,67,95,78,85,77,66,69,82,114, - 158,0,0,0,114,156,0,0,0,114,117,0,0,0,114,150, - 0,0,0,114,134,0,0,0,114,149,0,0,0,114,165,0, - 0,0,114,233,0,0,0,114,1,0,0,0,218,19,100,111, - 110,116,95,119,114,105,116,101,95,98,121,116,101,99,111,100, - 101,114,171,0,0,0,114,170,0,0,0,114,23,0,0,0, - 114,226,0,0,0,41,15,114,118,0,0,0,114,139,0,0, - 0,114,107,0,0,0,114,154,0,0,0,114,174,0,0,0, - 114,157,0,0,0,90,10,104,97,115,104,95,98,97,115,101, - 100,90,12,99,104,101,99,107,95,115,111,117,114,99,101,114, - 106,0,0,0,218,2,115,116,114,26,0,0,0,114,151,0, - 0,0,114,2,0,0,0,90,10,98,121,116,101,115,95,100, - 97,116,97,90,11,99,111,100,101,95,111,98,106,101,99,116, + 0,0,218,19,103,101,116,95,114,101,115,111,117,114,99,101, + 95,114,101,97,100,101,114,219,3,0,0,115,6,0,0,0, + 0,2,10,1,4,1,122,30,70,105,108,101,76,111,97,100, + 101,114,46,103,101,116,95,114,101,115,111,117,114,99,101,95, + 114,101,97,100,101,114,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,4,0,0,0,67,0,0,0,115, + 32,0,0,0,116,0,116,1,124,0,106,2,131,1,100,1, + 25,0,124,1,131,2,125,2,116,3,160,4,124,2,100,2, + 161,2,83,0,41,3,78,114,73,0,0,0,114,251,0,0, + 0,41,5,114,38,0,0,0,114,47,0,0,0,114,44,0, + 0,0,114,64,0,0,0,114,65,0,0,0,169,3,114,118, + 0,0,0,90,8,114,101,115,111,117,114,99,101,114,44,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,8,0,0, + 0,218,13,111,112,101,110,95,114,101,115,111,117,114,99,101, + 225,3,0,0,115,4,0,0,0,0,1,20,1,122,24,70, + 105,108,101,76,111,97,100,101,114,46,111,112,101,110,95,114, + 101,115,111,117,114,99,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, + 115,38,0,0,0,124,0,160,0,124,1,161,1,115,14,116, + 1,130,1,116,2,116,3,124,0,106,4,131,1,100,1,25, + 0,124,1,131,2,125,2,124,2,83,0,169,2,78,114,73, + 0,0,0,41,5,218,11,105,115,95,114,101,115,111,117,114, + 99,101,218,17,70,105,108,101,78,111,116,70,111,117,110,100, + 69,114,114,111,114,114,38,0,0,0,114,47,0,0,0,114, + 44,0,0,0,114,255,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,8,0,0,0,218,13,114,101,115,111,117,114, + 99,101,95,112,97,116,104,229,3,0,0,115,8,0,0,0, + 0,1,10,1,4,1,20,1,122,24,70,105,108,101,76,111, + 97,100,101,114,46,114,101,115,111,117,114,99,101,95,112,97, + 116,104,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,67,0,0,0,115,40,0,0,0, + 116,0,124,1,118,0,114,12,100,1,83,0,116,1,116,2, + 124,0,106,3,131,1,100,2,25,0,124,1,131,2,125,2, + 116,4,124,2,131,1,83,0,41,3,78,70,114,73,0,0, + 0,41,5,114,35,0,0,0,114,38,0,0,0,114,47,0, + 0,0,114,44,0,0,0,114,54,0,0,0,169,3,114,118, + 0,0,0,114,116,0,0,0,114,44,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,114,2,1,0, + 0,235,3,0,0,115,8,0,0,0,0,1,8,1,4,1, + 20,1,122,22,70,105,108,101,76,111,97,100,101,114,46,105, + 115,95,114,101,115,111,117,114,99,101,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,67, + 0,0,0,115,24,0,0,0,116,0,116,1,160,2,116,3, + 124,0,106,4,131,1,100,1,25,0,161,1,131,1,83,0, + 114,1,1,0,0,41,5,218,4,105,116,101,114,114,4,0, + 0,0,218,7,108,105,115,116,100,105,114,114,47,0,0,0, + 114,44,0,0,0,114,246,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,8,0,0,0,218,8,99,111,110,116,101, + 110,116,115,241,3,0,0,115,2,0,0,0,0,1,122,19, + 70,105,108,101,76,111,97,100,101,114,46,99,111,110,116,101, + 110,116,115,41,17,114,125,0,0,0,114,124,0,0,0,114, + 126,0,0,0,114,127,0,0,0,114,209,0,0,0,114,243, + 0,0,0,114,247,0,0,0,114,136,0,0,0,114,220,0, + 0,0,114,179,0,0,0,114,227,0,0,0,114,254,0,0, + 0,114,0,1,0,0,114,4,1,0,0,114,2,1,0,0, + 114,8,1,0,0,90,13,95,95,99,108,97,115,115,99,101, + 108,108,95,95,114,5,0,0,0,114,5,0,0,0,114,249, + 0,0,0,114,8,0,0,0,114,239,0,0,0,173,3,0, + 0,115,30,0,0,0,8,2,4,3,8,6,8,4,8,3, + 2,1,14,11,2,1,10,4,8,11,2,1,10,5,8,4, + 8,6,8,6,114,239,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0, + 0,0,115,46,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,100,3,132,0,90,4,100,4,100,5,132, + 0,90,5,100,6,100,7,156,1,100,8,100,9,132,2,90, + 6,100,10,83,0,41,11,218,16,83,111,117,114,99,101,70, + 105,108,101,76,111,97,100,101,114,122,62,67,111,110,99,114, + 101,116,101,32,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,32,111,102,32,83,111,117,114,99,101,76,111,97,100, + 101,114,32,117,115,105,110,103,32,116,104,101,32,102,105,108, + 101,32,115,121,115,116,101,109,46,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, + 0,0,115,22,0,0,0,116,0,124,1,131,1,125,2,124, + 2,106,1,124,2,106,2,100,1,156,2,83,0,41,2,122, + 33,82,101,116,117,114,110,32,116,104,101,32,109,101,116,97, + 100,97,116,97,32,102,111,114,32,116,104,101,32,112,97,116, + 104,46,41,2,114,169,0,0,0,114,234,0,0,0,41,3, + 114,49,0,0,0,218,8,115,116,95,109,116,105,109,101,90, + 7,115,116,95,115,105,122,101,41,3,114,118,0,0,0,114, + 44,0,0,0,114,238,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,8,0,0,0,114,224,0,0,0,249,3,0, + 0,115,4,0,0,0,0,2,8,1,122,27,83,111,117,114, + 99,101,70,105,108,101,76,111,97,100,101,114,46,112,97,116, + 104,95,115,116,97,116,115,99,4,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,0, + 115,24,0,0,0,116,0,124,1,131,1,125,4,124,0,106, + 1,124,2,124,3,124,4,100,1,141,3,83,0,41,2,78, + 169,1,218,5,95,109,111,100,101,41,2,114,114,0,0,0, + 114,225,0,0,0,41,5,114,118,0,0,0,114,107,0,0, + 0,114,106,0,0,0,114,26,0,0,0,114,52,0,0,0, 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,114, - 213,0,0,0,88,3,0,0,115,152,0,0,0,0,7,10, - 1,4,1,4,1,4,1,4,1,4,1,2,1,12,1,12, - 1,12,2,2,1,14,1,12,1,8,2,12,1,2,1,14, - 1,12,1,6,3,2,1,2,254,6,4,2,1,12,1,16, - 1,12,1,6,1,12,1,12,1,2,255,2,2,8,254,4, - 3,10,1,4,1,2,1,2,254,4,4,8,1,2,255,6, - 3,2,1,2,1,2,1,6,1,2,1,2,251,8,7,18, - 1,6,2,8,1,2,255,4,2,6,1,2,1,2,254,6, - 3,10,1,10,1,12,1,12,1,18,1,6,255,4,2,6, - 1,10,1,10,1,14,2,6,1,6,255,4,2,2,1,18, - 1,14,1,6,1,122,21,83,111,117,114,99,101,76,111,97, - 100,101,114,46,103,101,116,95,99,111,100,101,78,41,10,114, - 125,0,0,0,114,124,0,0,0,114,126,0,0,0,114,223, - 0,0,0,114,224,0,0,0,114,226,0,0,0,114,225,0, - 0,0,114,229,0,0,0,114,233,0,0,0,114,213,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,114,221,0,0,0,29,3,0,0,115,14, - 0,0,0,8,2,8,8,8,14,8,10,8,7,8,10,14, - 8,114,221,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,115, - 124,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5, - 100,6,100,7,132,0,90,6,101,7,135,0,102,1,100,8, - 100,9,132,8,131,1,90,8,101,7,100,10,100,11,132,0, - 131,1,90,9,100,12,100,13,132,0,90,10,101,7,100,14, - 100,15,132,0,131,1,90,11,100,16,100,17,132,0,90,12, - 100,18,100,19,132,0,90,13,100,20,100,21,132,0,90,14, - 100,22,100,23,132,0,90,15,135,0,4,0,90,16,83,0, - 41,24,218,10,70,105,108,101,76,111,97,100,101,114,122,103, - 66,97,115,101,32,102,105,108,101,32,108,111,97,100,101,114, - 32,99,108,97,115,115,32,119,104,105,99,104,32,105,109,112, - 108,101,109,101,110,116,115,32,116,104,101,32,108,111,97,100, - 101,114,32,112,114,111,116,111,99,111,108,32,109,101,116,104, - 111,100,115,32,116,104,97,116,10,32,32,32,32,114,101,113, - 117,105,114,101,32,102,105,108,101,32,115,121,115,116,101,109, - 32,117,115,97,103,101,46,99,3,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,2,0,0,0,67,0,0,0, - 115,16,0,0,0,124,1,124,0,95,0,124,2,124,0,95, - 1,100,1,83,0,41,2,122,75,67,97,99,104,101,32,116, - 104,101,32,109,111,100,117,108,101,32,110,97,109,101,32,97, - 110,100,32,116,104,101,32,112,97,116,104,32,116,111,32,116, - 104,101,32,102,105,108,101,32,102,111,117,110,100,32,98,121, - 32,116,104,101,10,32,32,32,32,32,32,32,32,102,105,110, - 100,101,114,46,78,114,159,0,0,0,41,3,114,118,0,0, - 0,114,139,0,0,0,114,44,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,8,0,0,0,114,209,0,0,0,178, - 3,0,0,115,4,0,0,0,0,3,6,1,122,19,70,105, - 108,101,76,111,97,100,101,114,46,95,95,105,110,105,116,95, - 95,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,2,0,0,0,67,0,0,0,115,24,0,0,0,124, - 0,106,0,124,1,106,0,107,2,111,22,124,0,106,1,124, - 1,106,1,107,2,83,0,114,109,0,0,0,169,2,218,9, - 95,95,99,108,97,115,115,95,95,114,131,0,0,0,169,2, - 114,118,0,0,0,90,5,111,116,104,101,114,114,5,0,0, - 0,114,5,0,0,0,114,8,0,0,0,218,6,95,95,101, - 113,95,95,184,3,0,0,115,6,0,0,0,0,1,12,1, - 10,255,122,17,70,105,108,101,76,111,97,100,101,114,46,95, - 95,101,113,95,95,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,20, - 0,0,0,116,0,124,0,106,1,131,1,116,0,124,0,106, - 2,131,1,65,0,83,0,114,109,0,0,0,169,3,218,4, - 104,97,115,104,114,116,0,0,0,114,44,0,0,0,169,1, - 114,118,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 8,0,0,0,218,8,95,95,104,97,115,104,95,95,188,3, - 0,0,115,2,0,0,0,0,1,122,19,70,105,108,101,76, - 111,97,100,101,114,46,95,95,104,97,115,104,95,95,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, - 0,0,0,3,0,0,0,115,16,0,0,0,116,0,116,1, - 124,0,131,2,160,2,124,1,161,1,83,0,41,1,122,100, - 76,111,97,100,32,97,32,109,111,100,117,108,101,32,102,114, - 111,109,32,97,32,102,105,108,101,46,10,10,32,32,32,32, - 32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, - 85,115,101,32,101,120,101,99,95,109,111,100,117,108,101,40, - 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, - 32,32,32,32,41,3,218,5,115,117,112,101,114,114,239,0, - 0,0,114,220,0,0,0,114,219,0,0,0,169,1,114,241, - 0,0,0,114,5,0,0,0,114,8,0,0,0,114,220,0, - 0,0,191,3,0,0,115,2,0,0,0,0,10,122,22,70, - 105,108,101,76,111,97,100,101,114,46,108,111,97,100,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,6, - 0,0,0,124,0,106,0,83,0,169,1,122,58,82,101,116, - 117,114,110,32,116,104,101,32,112,97,116,104,32,116,111,32, - 116,104,101,32,115,111,117,114,99,101,32,102,105,108,101,32, - 97,115,32,102,111,117,110,100,32,98,121,32,116,104,101,32, - 102,105,110,100,101,114,46,114,48,0,0,0,114,219,0,0, + 226,0,0,0,254,3,0,0,115,4,0,0,0,0,2,8, + 1,122,32,83,111,117,114,99,101,70,105,108,101,76,111,97, + 100,101,114,46,95,99,97,99,104,101,95,98,121,116,101,99, + 111,100,101,114,60,0,0,0,114,11,1,0,0,99,3,0, + 0,0,0,0,0,0,1,0,0,0,9,0,0,0,11,0, + 0,0,67,0,0,0,115,252,0,0,0,116,0,124,1,131, + 1,92,2,125,4,125,5,103,0,125,6,124,4,114,52,116, + 1,124,4,131,1,115,52,116,0,124,4,131,1,92,2,125, + 4,125,7,124,6,160,2,124,7,161,1,1,0,113,16,116, + 3,124,6,131,1,68,0,93,104,125,7,116,4,124,4,124, + 7,131,2,125,4,122,14,116,5,160,6,124,4,161,1,1, + 0,87,0,113,60,4,0,116,7,121,110,1,0,1,0,1, + 0,89,0,113,60,89,0,113,60,4,0,116,8,121,162,1, + 0,125,8,1,0,122,30,116,9,160,10,100,1,124,4,124, + 8,161,3,1,0,87,0,89,0,100,2,125,8,126,8,1, + 0,100,2,83,0,100,2,125,8,126,8,48,0,48,0,113, + 60,122,28,116,11,124,1,124,2,124,3,131,3,1,0,116, + 9,160,10,100,3,124,1,161,2,1,0,87,0,110,52,4, + 0,116,8,144,0,121,246,1,0,125,8,1,0,122,26,116, + 9,160,10,100,1,124,1,124,8,161,3,1,0,87,0,89, + 0,100,2,125,8,126,8,110,10,100,2,125,8,126,8,48, + 0,48,0,100,2,83,0,41,4,122,27,87,114,105,116,101, + 32,98,121,116,101,115,32,100,97,116,97,32,116,111,32,97, + 32,102,105,108,101,46,122,27,99,111,117,108,100,32,110,111, + 116,32,99,114,101,97,116,101,32,123,33,114,125,58,32,123, + 33,114,125,78,122,12,99,114,101,97,116,101,100,32,123,33, + 114,125,41,12,114,47,0,0,0,114,56,0,0,0,114,186, + 0,0,0,114,42,0,0,0,114,38,0,0,0,114,4,0, + 0,0,90,5,109,107,100,105,114,218,15,70,105,108,101,69, + 120,105,115,116,115,69,114,114,111,114,114,50,0,0,0,114, + 134,0,0,0,114,149,0,0,0,114,69,0,0,0,41,9, + 114,118,0,0,0,114,44,0,0,0,114,26,0,0,0,114, + 12,1,0,0,218,6,112,97,114,101,110,116,114,96,0,0, + 0,114,37,0,0,0,114,33,0,0,0,114,228,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,114, + 225,0,0,0,3,4,0,0,115,46,0,0,0,0,2,12, + 1,4,2,12,1,12,1,12,2,12,1,10,1,2,1,14, + 1,12,2,8,1,14,3,6,1,4,255,4,2,28,1,2, + 1,12,1,16,1,16,2,8,1,2,255,122,25,83,111,117, + 114,99,101,70,105,108,101,76,111,97,100,101,114,46,115,101, + 116,95,100,97,116,97,78,41,7,114,125,0,0,0,114,124, + 0,0,0,114,126,0,0,0,114,127,0,0,0,114,224,0, + 0,0,114,226,0,0,0,114,225,0,0,0,114,5,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, - 114,179,0,0,0,203,3,0,0,115,2,0,0,0,0,3, - 122,23,70,105,108,101,76,111,97,100,101,114,46,103,101,116, - 95,102,105,108,101,110,97,109,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, - 0,0,115,126,0,0,0,116,0,124,0,116,1,116,2,102, - 2,131,2,114,70,116,3,160,4,116,5,124,1,131,1,161, - 1,143,24,125,2,124,2,160,6,161,0,87,0,2,0,100, - 1,4,0,4,0,131,3,1,0,83,0,49,0,115,58,48, - 0,1,0,1,0,1,0,89,0,1,0,110,52,116,3,160, - 7,124,1,100,2,161,2,143,24,125,2,124,2,160,6,161, - 0,87,0,2,0,100,1,4,0,4,0,131,3,1,0,83, - 0,49,0,115,112,48,0,1,0,1,0,1,0,89,0,1, - 0,100,1,83,0,41,3,122,39,82,101,116,117,114,110,32, - 116,104,101,32,100,97,116,97,32,102,114,111,109,32,112,97, - 116,104,32,97,115,32,114,97,119,32,98,121,116,101,115,46, - 78,218,1,114,41,8,114,161,0,0,0,114,221,0,0,0, - 218,19,69,120,116,101,110,115,105,111,110,70,105,108,101,76, - 111,97,100,101,114,114,64,0,0,0,90,9,111,112,101,110, - 95,99,111,100,101,114,84,0,0,0,90,4,114,101,97,100, - 114,65,0,0,0,41,3,114,118,0,0,0,114,44,0,0, - 0,114,68,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,114,227,0,0,0,208,3,0,0,115,10, - 0,0,0,0,2,14,1,16,1,40,2,14,1,122,19,70, - 105,108,101,76,111,97,100,101,114,46,103,101,116,95,100,97, - 116,97,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,3,0,0,0,67,0,0,0,115,18,0,0,0, - 124,0,160,0,124,1,161,1,114,14,124,0,83,0,100,0, - 83,0,114,109,0,0,0,41,1,114,182,0,0,0,169,2, - 114,118,0,0,0,114,216,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,218,19,103,101,116,95,114, - 101,115,111,117,114,99,101,95,114,101,97,100,101,114,219,3, - 0,0,115,6,0,0,0,0,2,10,1,4,1,122,30,70, - 105,108,101,76,111,97,100,101,114,46,103,101,116,95,114,101, - 115,111,117,114,99,101,95,114,101,97,100,101,114,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, - 0,0,67,0,0,0,115,32,0,0,0,116,0,116,1,124, - 0,106,2,131,1,100,1,25,0,124,1,131,2,125,2,116, - 3,160,4,124,2,100,2,161,2,83,0,41,3,78,114,73, - 0,0,0,114,251,0,0,0,41,5,114,38,0,0,0,114, - 47,0,0,0,114,44,0,0,0,114,64,0,0,0,114,65, - 0,0,0,169,3,114,118,0,0,0,90,8,114,101,115,111, - 117,114,99,101,114,44,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,8,0,0,0,218,13,111,112,101,110,95,114, - 101,115,111,117,114,99,101,225,3,0,0,115,4,0,0,0, - 0,1,20,1,122,24,70,105,108,101,76,111,97,100,101,114, - 46,111,112,101,110,95,114,101,115,111,117,114,99,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,67,0,0,0,115,38,0,0,0,124,0,160,0, - 124,1,161,1,115,14,116,1,130,1,116,2,116,3,124,0, - 106,4,131,1,100,1,25,0,124,1,131,2,125,2,124,2, - 83,0,169,2,78,114,73,0,0,0,41,5,218,11,105,115, - 95,114,101,115,111,117,114,99,101,218,17,70,105,108,101,78, - 111,116,70,111,117,110,100,69,114,114,111,114,114,38,0,0, - 0,114,47,0,0,0,114,44,0,0,0,114,255,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,218, - 13,114,101,115,111,117,114,99,101,95,112,97,116,104,229,3, - 0,0,115,8,0,0,0,0,1,10,1,4,1,20,1,122, - 24,70,105,108,101,76,111,97,100,101,114,46,114,101,115,111, - 117,114,99,101,95,112,97,116,104,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, - 0,0,115,40,0,0,0,116,0,124,1,118,0,114,12,100, - 1,83,0,116,1,116,2,124,0,106,3,131,1,100,2,25, - 0,124,1,131,2,125,2,116,4,124,2,131,1,83,0,41, - 3,78,70,114,73,0,0,0,41,5,114,35,0,0,0,114, - 38,0,0,0,114,47,0,0,0,114,44,0,0,0,114,54, - 0,0,0,169,3,114,118,0,0,0,114,116,0,0,0,114, - 44,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,114,2,1,0,0,235,3,0,0,115,8,0,0, - 0,0,1,8,1,4,1,20,1,122,22,70,105,108,101,76, - 111,97,100,101,114,46,105,115,95,114,101,115,111,117,114,99, - 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,5,0,0,0,67,0,0,0,115,24,0,0,0,116, - 0,116,1,160,2,116,3,124,0,106,4,131,1,100,1,25, - 0,161,1,131,1,83,0,114,1,1,0,0,41,5,218,4, - 105,116,101,114,114,4,0,0,0,218,7,108,105,115,116,100, - 105,114,114,47,0,0,0,114,44,0,0,0,114,246,0,0, + 114,9,1,0,0,245,3,0,0,115,8,0,0,0,8,2, + 4,2,8,5,8,5,114,9,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 64,0,0,0,115,32,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, + 5,132,0,90,5,100,6,83,0,41,7,218,20,83,111,117, + 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101, + 114,122,45,76,111,97,100,101,114,32,119,104,105,99,104,32, + 104,97,110,100,108,101,115,32,115,111,117,114,99,101,108,101, + 115,115,32,102,105,108,101,32,105,109,112,111,114,116,115,46, + 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,5,0,0,0,67,0,0,0,115,68,0,0,0,124,0, + 160,0,124,1,161,1,125,2,124,0,160,1,124,2,161,1, + 125,3,124,1,124,2,100,1,156,2,125,4,116,2,124,3, + 124,1,124,4,131,3,1,0,116,3,116,4,124,3,131,1, + 100,2,100,0,133,2,25,0,124,1,124,2,100,3,141,3, + 83,0,41,4,78,114,159,0,0,0,114,145,0,0,0,41, + 2,114,116,0,0,0,114,106,0,0,0,41,5,114,179,0, + 0,0,114,227,0,0,0,114,152,0,0,0,114,165,0,0, + 0,114,235,0,0,0,41,5,114,118,0,0,0,114,139,0, + 0,0,114,44,0,0,0,114,26,0,0,0,114,151,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, - 218,8,99,111,110,116,101,110,116,115,241,3,0,0,115,2, - 0,0,0,0,1,122,19,70,105,108,101,76,111,97,100,101, - 114,46,99,111,110,116,101,110,116,115,41,17,114,125,0,0, + 114,213,0,0,0,38,4,0,0,115,22,0,0,0,0,1, + 10,1,10,4,2,1,2,254,6,4,12,1,2,1,14,1, + 2,1,2,253,122,29,83,111,117,114,99,101,108,101,115,115, + 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,99, + 111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,83,0,41,2,122,39,82,101,116,117,114,110,32, + 78,111,110,101,32,97,115,32,116,104,101,114,101,32,105,115, + 32,110,111,32,115,111,117,114,99,101,32,99,111,100,101,46, + 78,114,5,0,0,0,114,219,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,8,0,0,0,114,229,0,0,0,54, + 4,0,0,115,2,0,0,0,0,2,122,31,83,111,117,114, + 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, + 46,103,101,116,95,115,111,117,114,99,101,78,41,6,114,125, + 0,0,0,114,124,0,0,0,114,126,0,0,0,114,127,0, + 0,0,114,213,0,0,0,114,229,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, + 114,15,1,0,0,34,4,0,0,115,6,0,0,0,8,2, + 4,2,8,16,114,15,1,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0, + 0,0,115,92,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,100,3,132,0,90,4,100,4,100,5,132, + 0,90,5,100,6,100,7,132,0,90,6,100,8,100,9,132, + 0,90,7,100,10,100,11,132,0,90,8,100,12,100,13,132, + 0,90,9,100,14,100,15,132,0,90,10,100,16,100,17,132, + 0,90,11,101,12,100,18,100,19,132,0,131,1,90,13,100, + 20,83,0,41,21,114,252,0,0,0,122,93,76,111,97,100, + 101,114,32,102,111,114,32,101,120,116,101,110,115,105,111,110, + 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,84, + 104,101,32,99,111,110,115,116,114,117,99,116,111,114,32,105, + 115,32,100,101,115,105,103,110,101,100,32,116,111,32,119,111, + 114,107,32,119,105,116,104,32,70,105,108,101,70,105,110,100, + 101,114,46,10,10,32,32,32,32,99,3,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0, + 0,0,115,16,0,0,0,124,1,124,0,95,0,124,2,124, + 0,95,1,100,0,83,0,114,109,0,0,0,114,159,0,0, + 0,114,5,1,0,0,114,5,0,0,0,114,5,0,0,0, + 114,8,0,0,0,114,209,0,0,0,71,4,0,0,115,4, + 0,0,0,0,1,6,1,122,28,69,120,116,101,110,115,105, + 111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,105, + 110,105,116,95,95,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,24, + 0,0,0,124,0,106,0,124,1,106,0,107,2,111,22,124, + 0,106,1,124,1,106,1,107,2,83,0,114,109,0,0,0, + 114,240,0,0,0,114,242,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,8,0,0,0,114,243,0,0,0,75,4, + 0,0,115,6,0,0,0,0,1,12,1,10,255,122,26,69, + 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, + 101,114,46,95,95,101,113,95,95,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, + 0,0,115,20,0,0,0,116,0,124,0,106,1,131,1,116, + 0,124,0,106,2,131,1,65,0,83,0,114,109,0,0,0, + 114,244,0,0,0,114,246,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,8,0,0,0,114,247,0,0,0,79,4, + 0,0,115,2,0,0,0,0,1,122,28,69,120,116,101,110, + 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,95, + 95,104,97,115,104,95,95,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,5,0,0,0,67,0,0,0, + 115,36,0,0,0,116,0,160,1,116,2,106,3,124,1,161, + 2,125,2,116,0,160,4,100,1,124,1,106,5,124,0,106, + 6,161,3,1,0,124,2,83,0,41,2,122,38,67,114,101, + 97,116,101,32,97,110,32,117,110,105,116,105,97,108,105,122, + 101,100,32,101,120,116,101,110,115,105,111,110,32,109,111,100, + 117,108,101,122,38,101,120,116,101,110,115,105,111,110,32,109, + 111,100,117,108,101,32,123,33,114,125,32,108,111,97,100,101, + 100,32,102,114,111,109,32,123,33,114,125,41,7,114,134,0, + 0,0,114,214,0,0,0,114,163,0,0,0,90,14,99,114, + 101,97,116,101,95,100,121,110,97,109,105,99,114,149,0,0, + 0,114,116,0,0,0,114,44,0,0,0,41,3,114,118,0, + 0,0,114,187,0,0,0,114,216,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,8,0,0,0,114,212,0,0,0, + 82,4,0,0,115,14,0,0,0,0,2,4,1,6,255,4, + 2,6,1,8,255,4,2,122,33,69,120,116,101,110,115,105, + 111,110,70,105,108,101,76,111,97,100,101,114,46,99,114,101, + 97,116,101,95,109,111,100,117,108,101,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,67, + 0,0,0,115,36,0,0,0,116,0,160,1,116,2,106,3, + 124,1,161,2,1,0,116,0,160,4,100,1,124,0,106,5, + 124,0,106,6,161,3,1,0,100,2,83,0,41,3,122,30, + 73,110,105,116,105,97,108,105,122,101,32,97,110,32,101,120, + 116,101,110,115,105,111,110,32,109,111,100,117,108,101,122,40, + 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, + 32,123,33,114,125,32,101,120,101,99,117,116,101,100,32,102, + 114,111,109,32,123,33,114,125,78,41,7,114,134,0,0,0, + 114,214,0,0,0,114,163,0,0,0,90,12,101,120,101,99, + 95,100,121,110,97,109,105,99,114,149,0,0,0,114,116,0, + 0,0,114,44,0,0,0,114,253,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,8,0,0,0,114,217,0,0,0, + 90,4,0,0,115,8,0,0,0,0,2,14,1,6,1,8, + 255,122,31,69,120,116,101,110,115,105,111,110,70,105,108,101, + 76,111,97,100,101,114,46,101,120,101,99,95,109,111,100,117, + 108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,4,0,0,0,3,0,0,0,115,36,0,0,0, + 116,0,124,0,106,1,131,1,100,1,25,0,137,0,116,2, + 135,0,102,1,100,2,100,3,132,8,116,3,68,0,131,1, + 131,1,83,0,41,4,122,49,82,101,116,117,114,110,32,84, + 114,117,101,32,105,102,32,116,104,101,32,101,120,116,101,110, + 115,105,111,110,32,109,111,100,117,108,101,32,105,115,32,97, + 32,112,97,99,107,97,103,101,46,114,39,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,51,0,0,0,115,26,0,0,0,124,0,93,18, + 125,1,136,0,100,0,124,1,23,0,107,2,86,0,1,0, + 113,2,100,1,83,0,41,2,114,209,0,0,0,78,114,5, + 0,0,0,169,2,114,32,0,0,0,218,6,115,117,102,102, + 105,120,169,1,90,9,102,105,108,101,95,110,97,109,101,114, + 5,0,0,0,114,8,0,0,0,218,9,60,103,101,110,101, + 120,112,114,62,99,4,0,0,115,4,0,0,0,4,1,2, + 255,122,49,69,120,116,101,110,115,105,111,110,70,105,108,101, + 76,111,97,100,101,114,46,105,115,95,112,97,99,107,97,103, + 101,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101, + 120,112,114,62,41,4,114,47,0,0,0,114,44,0,0,0, + 218,3,97,110,121,218,18,69,88,84,69,78,83,73,79,78, + 95,83,85,70,70,73,88,69,83,114,219,0,0,0,114,5, + 0,0,0,114,18,1,0,0,114,8,0,0,0,114,182,0, + 0,0,96,4,0,0,115,8,0,0,0,0,2,14,1,12, + 1,2,255,122,30,69,120,116,101,110,115,105,111,110,70,105, + 108,101,76,111,97,100,101,114,46,105,115,95,112,97,99,107, + 97,103,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,83,0,41,2,122,63,82,101,116,117,114,110,32, + 78,111,110,101,32,97,115,32,97,110,32,101,120,116,101,110, + 115,105,111,110,32,109,111,100,117,108,101,32,99,97,110,110, + 111,116,32,99,114,101,97,116,101,32,97,32,99,111,100,101, + 32,111,98,106,101,99,116,46,78,114,5,0,0,0,114,219, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, + 0,0,114,213,0,0,0,102,4,0,0,115,2,0,0,0, + 0,2,122,28,69,120,116,101,110,115,105,111,110,70,105,108, + 101,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, + 83,0,41,2,122,53,82,101,116,117,114,110,32,78,111,110, + 101,32,97,115,32,101,120,116,101,110,115,105,111,110,32,109, + 111,100,117,108,101,115,32,104,97,118,101,32,110,111,32,115, + 111,117,114,99,101,32,99,111,100,101,46,78,114,5,0,0, + 0,114,219,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,8,0,0,0,114,229,0,0,0,106,4,0,0,115,2, + 0,0,0,0,2,122,30,69,120,116,101,110,115,105,111,110, + 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,115, + 111,117,114,99,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,6, + 0,0,0,124,0,106,0,83,0,114,250,0,0,0,114,48, + 0,0,0,114,219,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,114,179,0,0,0,110,4,0,0, + 115,2,0,0,0,0,3,122,32,69,120,116,101,110,115,105, + 111,110,70,105,108,101,76,111,97,100,101,114,46,103,101,116, + 95,102,105,108,101,110,97,109,101,78,41,14,114,125,0,0, 0,114,124,0,0,0,114,126,0,0,0,114,127,0,0,0, 114,209,0,0,0,114,243,0,0,0,114,247,0,0,0,114, - 136,0,0,0,114,220,0,0,0,114,179,0,0,0,114,227, - 0,0,0,114,254,0,0,0,114,0,1,0,0,114,4,1, - 0,0,114,2,1,0,0,114,8,1,0,0,90,13,95,95, - 99,108,97,115,115,99,101,108,108,95,95,114,5,0,0,0, - 114,5,0,0,0,114,249,0,0,0,114,8,0,0,0,114, - 239,0,0,0,173,3,0,0,115,30,0,0,0,8,2,4, - 3,8,6,8,4,8,3,2,1,14,11,2,1,10,4,8, - 11,2,1,10,5,8,4,8,6,8,6,114,239,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,64,0,0,0,115,46,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, - 90,4,100,4,100,5,132,0,90,5,100,6,100,7,156,1, - 100,8,100,9,132,2,90,6,100,10,83,0,41,11,218,16, - 83,111,117,114,99,101,70,105,108,101,76,111,97,100,101,114, - 122,62,67,111,110,99,114,101,116,101,32,105,109,112,108,101, - 109,101,110,116,97,116,105,111,110,32,111,102,32,83,111,117, - 114,99,101,76,111,97,100,101,114,32,117,115,105,110,103,32, - 116,104,101,32,102,105,108,101,32,115,121,115,116,101,109,46, - 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,67,0,0,0,115,22,0,0,0,116,0, - 124,1,131,1,125,2,124,2,106,1,124,2,106,2,100,1, - 156,2,83,0,41,2,122,33,82,101,116,117,114,110,32,116, - 104,101,32,109,101,116,97,100,97,116,97,32,102,111,114,32, - 116,104,101,32,112,97,116,104,46,41,2,114,169,0,0,0, - 114,234,0,0,0,41,3,114,49,0,0,0,218,8,115,116, - 95,109,116,105,109,101,90,7,115,116,95,115,105,122,101,41, - 3,114,118,0,0,0,114,44,0,0,0,114,238,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,114, - 224,0,0,0,249,3,0,0,115,4,0,0,0,0,2,8, - 1,122,27,83,111,117,114,99,101,70,105,108,101,76,111,97, - 100,101,114,46,112,97,116,104,95,115,116,97,116,115,99,4, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5, - 0,0,0,67,0,0,0,115,24,0,0,0,116,0,124,1, - 131,1,125,4,124,0,106,1,124,2,124,3,124,4,100,1, - 141,3,83,0,41,2,78,169,1,218,5,95,109,111,100,101, - 41,2,114,114,0,0,0,114,225,0,0,0,41,5,114,118, - 0,0,0,114,107,0,0,0,114,106,0,0,0,114,26,0, - 0,0,114,52,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,8,0,0,0,114,226,0,0,0,254,3,0,0,115, - 4,0,0,0,0,2,8,1,122,32,83,111,117,114,99,101, - 70,105,108,101,76,111,97,100,101,114,46,95,99,97,99,104, - 101,95,98,121,116,101,99,111,100,101,114,60,0,0,0,114, - 11,1,0,0,99,3,0,0,0,0,0,0,0,1,0,0, - 0,9,0,0,0,11,0,0,0,67,0,0,0,115,252,0, - 0,0,116,0,124,1,131,1,92,2,125,4,125,5,103,0, - 125,6,124,4,114,52,116,1,124,4,131,1,115,52,116,0, - 124,4,131,1,92,2,125,4,125,7,124,6,160,2,124,7, - 161,1,1,0,113,16,116,3,124,6,131,1,68,0,93,104, - 125,7,116,4,124,4,124,7,131,2,125,4,122,14,116,5, - 160,6,124,4,161,1,1,0,87,0,113,60,4,0,116,7, - 121,110,1,0,1,0,1,0,89,0,113,60,89,0,113,60, - 4,0,116,8,121,162,1,0,125,8,1,0,122,30,116,9, - 160,10,100,1,124,4,124,8,161,3,1,0,87,0,89,0, - 100,2,125,8,126,8,1,0,100,2,83,0,100,2,125,8, - 126,8,48,0,48,0,113,60,122,28,116,11,124,1,124,2, - 124,3,131,3,1,0,116,9,160,10,100,3,124,1,161,2, - 1,0,87,0,110,52,4,0,116,8,144,0,121,246,1,0, - 125,8,1,0,122,26,116,9,160,10,100,1,124,1,124,8, - 161,3,1,0,87,0,89,0,100,2,125,8,126,8,110,10, - 100,2,125,8,126,8,48,0,48,0,100,2,83,0,41,4, - 122,27,87,114,105,116,101,32,98,121,116,101,115,32,100,97, - 116,97,32,116,111,32,97,32,102,105,108,101,46,122,27,99, - 111,117,108,100,32,110,111,116,32,99,114,101,97,116,101,32, - 123,33,114,125,58,32,123,33,114,125,78,122,12,99,114,101, - 97,116,101,100,32,123,33,114,125,41,12,114,47,0,0,0, - 114,56,0,0,0,114,186,0,0,0,114,42,0,0,0,114, - 38,0,0,0,114,4,0,0,0,90,5,109,107,100,105,114, - 218,15,70,105,108,101,69,120,105,115,116,115,69,114,114,111, - 114,114,50,0,0,0,114,134,0,0,0,114,149,0,0,0, - 114,69,0,0,0,41,9,114,118,0,0,0,114,44,0,0, - 0,114,26,0,0,0,114,12,1,0,0,218,6,112,97,114, - 101,110,116,114,96,0,0,0,114,37,0,0,0,114,33,0, - 0,0,114,228,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,8,0,0,0,114,225,0,0,0,3,4,0,0,115, - 46,0,0,0,0,2,12,1,4,2,12,1,12,1,12,2, - 12,1,10,1,2,1,14,1,12,2,8,1,14,3,6,1, - 4,255,4,2,28,1,2,1,12,1,16,1,16,2,8,1, - 2,255,122,25,83,111,117,114,99,101,70,105,108,101,76,111, - 97,100,101,114,46,115,101,116,95,100,97,116,97,78,41,7, - 114,125,0,0,0,114,124,0,0,0,114,126,0,0,0,114, - 127,0,0,0,114,224,0,0,0,114,226,0,0,0,114,225, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,8,0,0,0,114,9,1,0,0,245,3,0,0, - 115,8,0,0,0,8,2,4,2,8,5,8,5,114,9,1, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,64,0,0,0,115,32,0,0,0, - 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,3, - 132,0,90,4,100,4,100,5,132,0,90,5,100,6,83,0, - 41,7,218,20,83,111,117,114,99,101,108,101,115,115,70,105, - 108,101,76,111,97,100,101,114,122,45,76,111,97,100,101,114, - 32,119,104,105,99,104,32,104,97,110,100,108,101,115,32,115, - 111,117,114,99,101,108,101,115,115,32,102,105,108,101,32,105, - 109,112,111,114,116,115,46,99,2,0,0,0,0,0,0,0, - 0,0,0,0,5,0,0,0,5,0,0,0,67,0,0,0, - 115,68,0,0,0,124,0,160,0,124,1,161,1,125,2,124, - 0,160,1,124,2,161,1,125,3,124,1,124,2,100,1,156, - 2,125,4,116,2,124,3,124,1,124,4,131,3,1,0,116, - 3,116,4,124,3,131,1,100,2,100,0,133,2,25,0,124, - 1,124,2,100,3,141,3,83,0,41,4,78,114,159,0,0, - 0,114,145,0,0,0,41,2,114,116,0,0,0,114,106,0, - 0,0,41,5,114,179,0,0,0,114,227,0,0,0,114,152, - 0,0,0,114,165,0,0,0,114,235,0,0,0,41,5,114, - 118,0,0,0,114,139,0,0,0,114,44,0,0,0,114,26, - 0,0,0,114,151,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,8,0,0,0,114,213,0,0,0,38,4,0,0, - 115,22,0,0,0,0,1,10,1,10,4,2,1,2,254,6, - 4,12,1,2,1,14,1,2,1,2,253,122,29,83,111,117, - 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101, - 114,46,103,101,116,95,99,111,100,101,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, - 0,0,0,115,4,0,0,0,100,1,83,0,41,2,122,39, - 82,101,116,117,114,110,32,78,111,110,101,32,97,115,32,116, - 104,101,114,101,32,105,115,32,110,111,32,115,111,117,114,99, - 101,32,99,111,100,101,46,78,114,5,0,0,0,114,219,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,8,0,0, - 0,114,229,0,0,0,54,4,0,0,115,2,0,0,0,0, - 2,122,31,83,111,117,114,99,101,108,101,115,115,70,105,108, - 101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114, - 99,101,78,41,6,114,125,0,0,0,114,124,0,0,0,114, - 126,0,0,0,114,127,0,0,0,114,213,0,0,0,114,229, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,8,0,0,0,114,15,1,0,0,34,4,0,0, - 115,6,0,0,0,8,2,4,2,8,16,114,15,1,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,64,0,0,0,115,92,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, - 90,4,100,4,100,5,132,0,90,5,100,6,100,7,132,0, - 90,6,100,8,100,9,132,0,90,7,100,10,100,11,132,0, - 90,8,100,12,100,13,132,0,90,9,100,14,100,15,132,0, - 90,10,100,16,100,17,132,0,90,11,101,12,100,18,100,19, - 132,0,131,1,90,13,100,20,83,0,41,21,114,252,0,0, - 0,122,93,76,111,97,100,101,114,32,102,111,114,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,115,46, - 10,10,32,32,32,32,84,104,101,32,99,111,110,115,116,114, - 117,99,116,111,114,32,105,115,32,100,101,115,105,103,110,101, - 100,32,116,111,32,119,111,114,107,32,119,105,116,104,32,70, - 105,108,101,70,105,110,100,101,114,46,10,10,32,32,32,32, - 99,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,2,0,0,0,67,0,0,0,115,16,0,0,0,124,1, - 124,0,95,0,124,2,124,0,95,1,100,0,83,0,114,109, - 0,0,0,114,159,0,0,0,114,5,1,0,0,114,5,0, - 0,0,114,5,0,0,0,114,8,0,0,0,114,209,0,0, - 0,71,4,0,0,115,4,0,0,0,0,1,6,1,122,28, - 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, - 100,101,114,46,95,95,105,110,105,116,95,95,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0, - 0,67,0,0,0,115,24,0,0,0,124,0,106,0,124,1, - 106,0,107,2,111,22,124,0,106,1,124,1,106,1,107,2, - 83,0,114,109,0,0,0,114,240,0,0,0,114,242,0,0, + 212,0,0,0,114,217,0,0,0,114,182,0,0,0,114,213, + 0,0,0,114,229,0,0,0,114,136,0,0,0,114,179,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,8,0,0,0,114,252,0,0,0,63,4,0,0,115, + 22,0,0,0,8,2,4,6,8,4,8,4,8,3,8,8, + 8,6,8,6,8,4,8,4,2,1,114,252,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,64,0,0,0,115,104,0,0,0,101,0,90, + 1,100,0,90,2,100,1,90,3,100,2,100,3,132,0,90, + 4,100,4,100,5,132,0,90,5,100,6,100,7,132,0,90, + 6,100,8,100,9,132,0,90,7,100,10,100,11,132,0,90, + 8,100,12,100,13,132,0,90,9,100,14,100,15,132,0,90, + 10,100,16,100,17,132,0,90,11,100,18,100,19,132,0,90, + 12,100,20,100,21,132,0,90,13,100,22,100,23,132,0,90, + 14,100,24,83,0,41,25,218,14,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,97,38,1,0,0,82,101,112,114, + 101,115,101,110,116,115,32,97,32,110,97,109,101,115,112,97, + 99,101,32,112,97,99,107,97,103,101,39,115,32,112,97,116, + 104,46,32,32,73,116,32,117,115,101,115,32,116,104,101,32, + 109,111,100,117,108,101,32,110,97,109,101,10,32,32,32,32, + 116,111,32,102,105,110,100,32,105,116,115,32,112,97,114,101, + 110,116,32,109,111,100,117,108,101,44,32,97,110,100,32,102, + 114,111,109,32,116,104,101,114,101,32,105,116,32,108,111,111, + 107,115,32,117,112,32,116,104,101,32,112,97,114,101,110,116, + 39,115,10,32,32,32,32,95,95,112,97,116,104,95,95,46, + 32,32,87,104,101,110,32,116,104,105,115,32,99,104,97,110, + 103,101,115,44,32,116,104,101,32,109,111,100,117,108,101,39, + 115,32,111,119,110,32,112,97,116,104,32,105,115,32,114,101, + 99,111,109,112,117,116,101,100,44,10,32,32,32,32,117,115, + 105,110,103,32,112,97,116,104,95,102,105,110,100,101,114,46, + 32,32,70,111,114,32,116,111,112,45,108,101,118,101,108,32, + 109,111,100,117,108,101,115,44,32,116,104,101,32,112,97,114, + 101,110,116,32,109,111,100,117,108,101,39,115,32,112,97,116, + 104,10,32,32,32,32,105,115,32,115,121,115,46,112,97,116, + 104,46,99,4,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,3,0,0,0,67,0,0,0,115,36,0,0,0, + 124,1,124,0,95,0,124,2,124,0,95,1,116,2,124,0, + 160,3,161,0,131,1,124,0,95,4,124,3,124,0,95,5, + 100,0,83,0,114,109,0,0,0,41,6,218,5,95,110,97, + 109,101,218,5,95,112,97,116,104,114,111,0,0,0,218,16, + 95,103,101,116,95,112,97,114,101,110,116,95,112,97,116,104, + 218,17,95,108,97,115,116,95,112,97,114,101,110,116,95,112, + 97,116,104,218,12,95,112,97,116,104,95,102,105,110,100,101, + 114,169,4,114,118,0,0,0,114,116,0,0,0,114,44,0, + 0,0,90,11,112,97,116,104,95,102,105,110,100,101,114,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,209, + 0,0,0,123,4,0,0,115,8,0,0,0,0,1,6,1, + 6,1,14,1,122,23,95,78,97,109,101,115,112,97,99,101, + 80,97,116,104,46,95,95,105,110,105,116,95,95,99,1,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0, + 0,0,67,0,0,0,115,38,0,0,0,124,0,106,0,160, + 1,100,1,161,1,92,3,125,1,125,2,125,3,124,2,100, + 2,107,2,114,30,100,3,83,0,124,1,100,4,102,2,83, + 0,41,5,122,62,82,101,116,117,114,110,115,32,97,32,116, + 117,112,108,101,32,111,102,32,40,112,97,114,101,110,116,45, + 109,111,100,117,108,101,45,110,97,109,101,44,32,112,97,114, + 101,110,116,45,112,97,116,104,45,97,116,116,114,45,110,97, + 109,101,41,114,71,0,0,0,114,40,0,0,0,41,2,114, + 1,0,0,0,114,44,0,0,0,90,8,95,95,112,97,116, + 104,95,95,41,2,114,23,1,0,0,114,41,0,0,0,41, + 4,114,118,0,0,0,114,14,1,0,0,218,3,100,111,116, + 90,2,109,101,114,5,0,0,0,114,5,0,0,0,114,8, + 0,0,0,218,23,95,102,105,110,100,95,112,97,114,101,110, + 116,95,112,97,116,104,95,110,97,109,101,115,129,4,0,0, + 115,8,0,0,0,0,2,18,1,8,2,4,3,122,38,95, + 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,102, + 105,110,100,95,112,97,114,101,110,116,95,112,97,116,104,95, + 110,97,109,101,115,99,1,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,28, + 0,0,0,124,0,160,0,161,0,92,2,125,1,125,2,116, + 1,116,2,106,3,124,1,25,0,124,2,131,2,83,0,114, + 109,0,0,0,41,4,114,30,1,0,0,114,130,0,0,0, + 114,1,0,0,0,218,7,109,111,100,117,108,101,115,41,3, + 114,118,0,0,0,90,18,112,97,114,101,110,116,95,109,111, + 100,117,108,101,95,110,97,109,101,90,14,112,97,116,104,95, + 97,116,116,114,95,110,97,109,101,114,5,0,0,0,114,5, + 0,0,0,114,8,0,0,0,114,25,1,0,0,139,4,0, + 0,115,4,0,0,0,0,1,12,1,122,31,95,78,97,109, + 101,115,112,97,99,101,80,97,116,104,46,95,103,101,116,95, + 112,97,114,101,110,116,95,112,97,116,104,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0, + 67,0,0,0,115,80,0,0,0,116,0,124,0,160,1,161, + 0,131,1,125,1,124,1,124,0,106,2,107,3,114,74,124, + 0,160,3,124,0,106,4,124,1,161,2,125,2,124,2,100, + 0,117,1,114,68,124,2,106,5,100,0,117,0,114,68,124, + 2,106,6,114,68,124,2,106,6,124,0,95,7,124,1,124, + 0,95,2,124,0,106,7,83,0,114,109,0,0,0,41,8, + 114,111,0,0,0,114,25,1,0,0,114,26,1,0,0,114, + 27,1,0,0,114,23,1,0,0,114,140,0,0,0,114,178, + 0,0,0,114,24,1,0,0,41,3,114,118,0,0,0,90, + 11,112,97,114,101,110,116,95,112,97,116,104,114,187,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, - 114,243,0,0,0,75,4,0,0,115,6,0,0,0,0,1, - 12,1,10,255,122,26,69,120,116,101,110,115,105,111,110,70, - 105,108,101,76,111,97,100,101,114,46,95,95,101,113,95,95, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,20,0,0,0,116,0, - 124,0,106,1,131,1,116,0,124,0,106,2,131,1,65,0, - 83,0,114,109,0,0,0,114,244,0,0,0,114,246,0,0, + 218,12,95,114,101,99,97,108,99,117,108,97,116,101,143,4, + 0,0,115,16,0,0,0,0,2,12,1,10,1,14,3,18, + 1,6,1,8,1,6,1,122,27,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,46,95,114,101,99,97,108,99,117, + 108,97,116,101,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,12,0, + 0,0,116,0,124,0,160,1,161,0,131,1,83,0,114,109, + 0,0,0,41,2,114,6,1,0,0,114,32,1,0,0,114, + 246,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, + 0,0,0,218,8,95,95,105,116,101,114,95,95,156,4,0, + 0,115,2,0,0,0,0,1,122,23,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,46,95,95,105,116,101,114,95, + 95,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,2,0,0,0,67,0,0,0,115,12,0,0,0,124, + 0,160,0,161,0,124,1,25,0,83,0,114,109,0,0,0, + 169,1,114,32,1,0,0,41,2,114,118,0,0,0,218,5, + 105,110,100,101,120,114,5,0,0,0,114,5,0,0,0,114, + 8,0,0,0,218,11,95,95,103,101,116,105,116,101,109,95, + 95,159,4,0,0,115,2,0,0,0,0,1,122,26,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,103, + 101,116,105,116,101,109,95,95,99,3,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, + 0,115,14,0,0,0,124,2,124,0,106,0,124,1,60,0, + 100,0,83,0,114,109,0,0,0,41,1,114,24,1,0,0, + 41,3,114,118,0,0,0,114,35,1,0,0,114,44,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, - 114,247,0,0,0,79,4,0,0,115,2,0,0,0,0,1, - 122,28,69,120,116,101,110,115,105,111,110,70,105,108,101,76, - 111,97,100,101,114,46,95,95,104,97,115,104,95,95,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5, - 0,0,0,67,0,0,0,115,36,0,0,0,116,0,160,1, - 116,2,106,3,124,1,161,2,125,2,116,0,160,4,100,1, - 124,1,106,5,124,0,106,6,161,3,1,0,124,2,83,0, - 41,2,122,38,67,114,101,97,116,101,32,97,110,32,117,110, - 105,116,105,97,108,105,122,101,100,32,101,120,116,101,110,115, - 105,111,110,32,109,111,100,117,108,101,122,38,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,108,101,32,123,33,114, - 125,32,108,111,97,100,101,100,32,102,114,111,109,32,123,33, - 114,125,41,7,114,134,0,0,0,114,214,0,0,0,114,163, - 0,0,0,90,14,99,114,101,97,116,101,95,100,121,110,97, - 109,105,99,114,149,0,0,0,114,116,0,0,0,114,44,0, - 0,0,41,3,114,118,0,0,0,114,187,0,0,0,114,216, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, - 0,0,114,212,0,0,0,82,4,0,0,115,14,0,0,0, - 0,2,4,1,6,255,4,2,6,1,8,255,4,2,122,33, - 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, - 100,101,114,46,99,114,101,97,116,101,95,109,111,100,117,108, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,5,0,0,0,67,0,0,0,115,36,0,0,0,116, - 0,160,1,116,2,106,3,124,1,161,2,1,0,116,0,160, - 4,100,1,124,0,106,5,124,0,106,6,161,3,1,0,100, - 2,83,0,41,3,122,30,73,110,105,116,105,97,108,105,122, - 101,32,97,110,32,101,120,116,101,110,115,105,111,110,32,109, - 111,100,117,108,101,122,40,101,120,116,101,110,115,105,111,110, - 32,109,111,100,117,108,101,32,123,33,114,125,32,101,120,101, - 99,117,116,101,100,32,102,114,111,109,32,123,33,114,125,78, - 41,7,114,134,0,0,0,114,214,0,0,0,114,163,0,0, - 0,90,12,101,120,101,99,95,100,121,110,97,109,105,99,114, - 149,0,0,0,114,116,0,0,0,114,44,0,0,0,114,253, + 218,11,95,95,115,101,116,105,116,101,109,95,95,162,4,0, + 0,115,2,0,0,0,0,1,122,26,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,46,95,95,115,101,116,105,116, + 101,109,95,95,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,12,0, + 0,0,116,0,124,0,160,1,161,0,131,1,83,0,114,109, + 0,0,0,41,2,114,23,0,0,0,114,32,1,0,0,114, + 246,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, + 0,0,0,218,7,95,95,108,101,110,95,95,165,4,0,0, + 115,2,0,0,0,0,1,122,22,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,46,95,95,108,101,110,95,95,99, + 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,67,0,0,0,115,12,0,0,0,100,1,160, + 0,124,0,106,1,161,1,83,0,41,2,78,122,20,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,40,123,33,114, + 125,41,41,2,114,62,0,0,0,114,24,1,0,0,114,246, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, - 0,0,114,217,0,0,0,90,4,0,0,115,8,0,0,0, - 0,2,14,1,6,1,8,255,122,31,69,120,116,101,110,115, - 105,111,110,70,105,108,101,76,111,97,100,101,114,46,101,120, - 101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,4,0,0,0,3,0, - 0,0,115,36,0,0,0,116,0,124,0,106,1,131,1,100, - 1,25,0,137,0,116,2,135,0,102,1,100,2,100,3,132, - 8,116,3,68,0,131,1,131,1,83,0,41,4,122,49,82, - 101,116,117,114,110,32,84,114,117,101,32,105,102,32,116,104, - 101,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117, - 108,101,32,105,115,32,97,32,112,97,99,107,97,103,101,46, - 114,39,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,51,0,0,0,115,26, - 0,0,0,124,0,93,18,125,1,136,0,100,0,124,1,23, - 0,107,2,86,0,1,0,113,2,100,1,83,0,41,2,114, - 209,0,0,0,78,114,5,0,0,0,169,2,114,32,0,0, - 0,218,6,115,117,102,102,105,120,169,1,90,9,102,105,108, - 101,95,110,97,109,101,114,5,0,0,0,114,8,0,0,0, - 218,9,60,103,101,110,101,120,112,114,62,99,4,0,0,115, - 4,0,0,0,4,1,2,255,122,49,69,120,116,101,110,115, - 105,111,110,70,105,108,101,76,111,97,100,101,114,46,105,115, - 95,112,97,99,107,97,103,101,46,60,108,111,99,97,108,115, - 62,46,60,103,101,110,101,120,112,114,62,41,4,114,47,0, - 0,0,114,44,0,0,0,218,3,97,110,121,218,18,69,88, - 84,69,78,83,73,79,78,95,83,85,70,70,73,88,69,83, - 114,219,0,0,0,114,5,0,0,0,114,18,1,0,0,114, - 8,0,0,0,114,182,0,0,0,96,4,0,0,115,8,0, - 0,0,0,2,14,1,12,1,2,255,122,30,69,120,116,101, - 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,46, - 105,115,95,112,97,99,107,97,103,101,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, - 0,0,0,115,4,0,0,0,100,1,83,0,41,2,122,63, - 82,101,116,117,114,110,32,78,111,110,101,32,97,115,32,97, - 110,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117, - 108,101,32,99,97,110,110,111,116,32,99,114,101,97,116,101, - 32,97,32,99,111,100,101,32,111,98,106,101,99,116,46,78, - 114,5,0,0,0,114,219,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,114,213,0,0,0,102,4, - 0,0,115,2,0,0,0,0,2,122,28,69,120,116,101,110, - 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,103, - 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, - 115,4,0,0,0,100,1,83,0,41,2,122,53,82,101,116, - 117,114,110,32,78,111,110,101,32,97,115,32,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,108,101,115,32,104,97, - 118,101,32,110,111,32,115,111,117,114,99,101,32,99,111,100, - 101,46,78,114,5,0,0,0,114,219,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,8,0,0,0,114,229,0,0, - 0,106,4,0,0,115,2,0,0,0,0,2,122,30,69,120, - 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, - 114,46,103,101,116,95,115,111,117,114,99,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, - 0,67,0,0,0,115,6,0,0,0,124,0,106,0,83,0, - 114,250,0,0,0,114,48,0,0,0,114,219,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,179, - 0,0,0,110,4,0,0,115,2,0,0,0,0,3,122,32, - 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, - 100,101,114,46,103,101,116,95,102,105,108,101,110,97,109,101, - 78,41,14,114,125,0,0,0,114,124,0,0,0,114,126,0, - 0,0,114,127,0,0,0,114,209,0,0,0,114,243,0,0, - 0,114,247,0,0,0,114,212,0,0,0,114,217,0,0,0, - 114,182,0,0,0,114,213,0,0,0,114,229,0,0,0,114, - 136,0,0,0,114,179,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,8,0,0,0,114,252,0, - 0,0,63,4,0,0,115,22,0,0,0,8,2,4,6,8, - 4,8,4,8,3,8,8,8,6,8,6,8,4,8,4,2, - 1,114,252,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115, - 104,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5, - 100,6,100,7,132,0,90,6,100,8,100,9,132,0,90,7, - 100,10,100,11,132,0,90,8,100,12,100,13,132,0,90,9, - 100,14,100,15,132,0,90,10,100,16,100,17,132,0,90,11, - 100,18,100,19,132,0,90,12,100,20,100,21,132,0,90,13, - 100,22,100,23,132,0,90,14,100,24,83,0,41,25,218,14, - 95,78,97,109,101,115,112,97,99,101,80,97,116,104,97,38, - 1,0,0,82,101,112,114,101,115,101,110,116,115,32,97,32, - 110,97,109,101,115,112,97,99,101,32,112,97,99,107,97,103, - 101,39,115,32,112,97,116,104,46,32,32,73,116,32,117,115, - 101,115,32,116,104,101,32,109,111,100,117,108,101,32,110,97, - 109,101,10,32,32,32,32,116,111,32,102,105,110,100,32,105, - 116,115,32,112,97,114,101,110,116,32,109,111,100,117,108,101, - 44,32,97,110,100,32,102,114,111,109,32,116,104,101,114,101, - 32,105,116,32,108,111,111,107,115,32,117,112,32,116,104,101, - 32,112,97,114,101,110,116,39,115,10,32,32,32,32,95,95, - 112,97,116,104,95,95,46,32,32,87,104,101,110,32,116,104, - 105,115,32,99,104,97,110,103,101,115,44,32,116,104,101,32, - 109,111,100,117,108,101,39,115,32,111,119,110,32,112,97,116, - 104,32,105,115,32,114,101,99,111,109,112,117,116,101,100,44, - 10,32,32,32,32,117,115,105,110,103,32,112,97,116,104,95, - 102,105,110,100,101,114,46,32,32,70,111,114,32,116,111,112, - 45,108,101,118,101,108,32,109,111,100,117,108,101,115,44,32, - 116,104,101,32,112,97,114,101,110,116,32,109,111,100,117,108, - 101,39,115,32,112,97,116,104,10,32,32,32,32,105,115,32, - 115,121,115,46,112,97,116,104,46,99,4,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,0, - 0,0,115,36,0,0,0,124,1,124,0,95,0,124,2,124, - 0,95,1,116,2,124,0,160,3,161,0,131,1,124,0,95, - 4,124,3,124,0,95,5,100,0,83,0,114,109,0,0,0, - 41,6,218,5,95,110,97,109,101,218,5,95,112,97,116,104, - 114,111,0,0,0,218,16,95,103,101,116,95,112,97,114,101, - 110,116,95,112,97,116,104,218,17,95,108,97,115,116,95,112, - 97,114,101,110,116,95,112,97,116,104,218,12,95,112,97,116, - 104,95,102,105,110,100,101,114,169,4,114,118,0,0,0,114, - 116,0,0,0,114,44,0,0,0,90,11,112,97,116,104,95, - 102,105,110,100,101,114,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,114,209,0,0,0,123,4,0,0,115,8, - 0,0,0,0,1,6,1,6,1,14,1,122,23,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,105,110, - 105,116,95,95,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,3,0,0,0,67,0,0,0,115,38,0, - 0,0,124,0,106,0,160,1,100,1,161,1,92,3,125,1, - 125,2,125,3,124,2,100,2,107,2,114,30,100,3,83,0, - 124,1,100,4,102,2,83,0,41,5,122,62,82,101,116,117, - 114,110,115,32,97,32,116,117,112,108,101,32,111,102,32,40, - 112,97,114,101,110,116,45,109,111,100,117,108,101,45,110,97, - 109,101,44,32,112,97,114,101,110,116,45,112,97,116,104,45, - 97,116,116,114,45,110,97,109,101,41,114,71,0,0,0,114, - 40,0,0,0,41,2,114,1,0,0,0,114,44,0,0,0, - 90,8,95,95,112,97,116,104,95,95,41,2,114,23,1,0, - 0,114,41,0,0,0,41,4,114,118,0,0,0,114,14,1, - 0,0,218,3,100,111,116,90,2,109,101,114,5,0,0,0, - 114,5,0,0,0,114,8,0,0,0,218,23,95,102,105,110, - 100,95,112,97,114,101,110,116,95,112,97,116,104,95,110,97, - 109,101,115,129,4,0,0,115,8,0,0,0,0,2,18,1, - 8,2,4,3,122,38,95,78,97,109,101,115,112,97,99,101, - 80,97,116,104,46,95,102,105,110,100,95,112,97,114,101,110, - 116,95,112,97,116,104,95,110,97,109,101,115,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, - 0,67,0,0,0,115,28,0,0,0,124,0,160,0,161,0, - 92,2,125,1,125,2,116,1,116,2,106,3,124,1,25,0, - 124,2,131,2,83,0,114,109,0,0,0,41,4,114,30,1, - 0,0,114,130,0,0,0,114,1,0,0,0,218,7,109,111, - 100,117,108,101,115,41,3,114,118,0,0,0,90,18,112,97, - 114,101,110,116,95,109,111,100,117,108,101,95,110,97,109,101, - 90,14,112,97,116,104,95,97,116,116,114,95,110,97,109,101, - 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,114, - 25,1,0,0,139,4,0,0,115,4,0,0,0,0,1,12, - 1,122,31,95,78,97,109,101,115,112,97,99,101,80,97,116, - 104,46,95,103,101,116,95,112,97,114,101,110,116,95,112,97, - 116,104,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,4,0,0,0,67,0,0,0,115,80,0,0,0, - 116,0,124,0,160,1,161,0,131,1,125,1,124,1,124,0, - 106,2,107,3,114,74,124,0,160,3,124,0,106,4,124,1, - 161,2,125,2,124,2,100,0,117,1,114,68,124,2,106,5, - 100,0,117,0,114,68,124,2,106,6,114,68,124,2,106,6, - 124,0,95,7,124,1,124,0,95,2,124,0,106,7,83,0, - 114,109,0,0,0,41,8,114,111,0,0,0,114,25,1,0, - 0,114,26,1,0,0,114,27,1,0,0,114,23,1,0,0, - 114,140,0,0,0,114,178,0,0,0,114,24,1,0,0,41, - 3,114,118,0,0,0,90,11,112,97,114,101,110,116,95,112, - 97,116,104,114,187,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,8,0,0,0,218,12,95,114,101,99,97,108,99, - 117,108,97,116,101,143,4,0,0,115,16,0,0,0,0,2, - 12,1,10,1,14,3,18,1,6,1,8,1,6,1,122,27, - 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, - 114,101,99,97,108,99,117,108,97,116,101,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,12,0,0,0,116,0,124,0,160,1,161, - 0,131,1,83,0,114,109,0,0,0,41,2,114,6,1,0, - 0,114,32,1,0,0,114,246,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,8,0,0,0,218,8,95,95,105,116, - 101,114,95,95,156,4,0,0,115,2,0,0,0,0,1,122, - 23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, - 95,95,105,116,101,114,95,95,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0, - 0,115,12,0,0,0,124,0,160,0,161,0,124,1,25,0, - 83,0,114,109,0,0,0,169,1,114,32,1,0,0,41,2, - 114,118,0,0,0,218,5,105,110,100,101,120,114,5,0,0, - 0,114,5,0,0,0,114,8,0,0,0,218,11,95,95,103, - 101,116,105,116,101,109,95,95,159,4,0,0,115,2,0,0, - 0,0,1,122,26,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,46,95,95,103,101,116,105,116,101,109,95,95,99, - 3,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,67,0,0,0,115,14,0,0,0,124,2,124, - 0,106,0,124,1,60,0,100,0,83,0,114,109,0,0,0, - 41,1,114,24,1,0,0,41,3,114,118,0,0,0,114,35, - 1,0,0,114,44,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,8,0,0,0,218,11,95,95,115,101,116,105,116, - 101,109,95,95,162,4,0,0,115,2,0,0,0,0,1,122, - 26,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, - 95,95,115,101,116,105,116,101,109,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,12,0,0,0,116,0,124,0,160,1,161, - 0,131,1,83,0,114,109,0,0,0,41,2,114,23,0,0, - 0,114,32,1,0,0,114,246,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,8,0,0,0,218,7,95,95,108,101, - 110,95,95,165,4,0,0,115,2,0,0,0,0,1,122,22, - 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, - 95,108,101,110,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 12,0,0,0,100,1,160,0,124,0,106,1,161,1,83,0, - 41,2,78,122,20,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,40,123,33,114,125,41,41,2,114,62,0,0,0, - 114,24,1,0,0,114,246,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,218,8,95,95,114,101,112, - 114,95,95,168,4,0,0,115,2,0,0,0,0,1,122,23, - 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, - 95,114,101,112,114,95,95,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, - 115,12,0,0,0,124,1,124,0,160,0,161,0,118,0,83, - 0,114,109,0,0,0,114,34,1,0,0,169,2,114,118,0, - 0,0,218,4,105,116,101,109,114,5,0,0,0,114,5,0, - 0,0,114,8,0,0,0,218,12,95,95,99,111,110,116,97, - 105,110,115,95,95,171,4,0,0,115,2,0,0,0,0,1, - 122,27,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 46,95,95,99,111,110,116,97,105,110,115,95,95,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, - 0,0,67,0,0,0,115,16,0,0,0,124,0,106,0,160, - 1,124,1,161,1,1,0,100,0,83,0,114,109,0,0,0, - 41,2,114,24,1,0,0,114,186,0,0,0,114,40,1,0, - 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, - 114,186,0,0,0,174,4,0,0,115,2,0,0,0,0,1, - 122,21,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 46,97,112,112,101,110,100,78,41,15,114,125,0,0,0,114, - 124,0,0,0,114,126,0,0,0,114,127,0,0,0,114,209, - 0,0,0,114,30,1,0,0,114,25,1,0,0,114,32,1, - 0,0,114,33,1,0,0,114,36,1,0,0,114,37,1,0, - 0,114,38,1,0,0,114,39,1,0,0,114,42,1,0,0, - 114,186,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,114,22,1,0,0,116,4, - 0,0,115,24,0,0,0,8,1,4,6,8,6,8,10,8, - 4,8,13,8,3,8,3,8,3,8,3,8,3,8,3,114, - 22,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,64,0,0,0,115,80,0, - 0,0,101,0,90,1,100,0,90,2,100,1,100,2,132,0, - 90,3,101,4,100,3,100,4,132,0,131,1,90,5,100,5, - 100,6,132,0,90,6,100,7,100,8,132,0,90,7,100,9, - 100,10,132,0,90,8,100,11,100,12,132,0,90,9,100,13, - 100,14,132,0,90,10,100,15,100,16,132,0,90,11,100,17, - 83,0,41,18,218,16,95,78,97,109,101,115,112,97,99,101, - 76,111,97,100,101,114,99,4,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,4,0,0,0,67,0,0,0,115, - 18,0,0,0,116,0,124,1,124,2,124,3,131,3,124,0, - 95,1,100,0,83,0,114,109,0,0,0,41,2,114,22,1, - 0,0,114,24,1,0,0,114,28,1,0,0,114,5,0,0, - 0,114,5,0,0,0,114,8,0,0,0,114,209,0,0,0, - 180,4,0,0,115,2,0,0,0,0,1,122,25,95,78,97, - 109,101,115,112,97,99,101,76,111,97,100,101,114,46,95,95, - 105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,0, + 0,0,218,8,95,95,114,101,112,114,95,95,168,4,0,0, + 115,2,0,0,0,0,1,122,23,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,46,95,95,114,101,112,114,95,95, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,3,0,0,0,67,0,0,0,115,12,0,0,0,124,1, + 124,0,160,0,161,0,118,0,83,0,114,109,0,0,0,114, + 34,1,0,0,169,2,114,118,0,0,0,218,4,105,116,101, + 109,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, + 218,12,95,95,99,111,110,116,97,105,110,115,95,95,171,4, + 0,0,115,2,0,0,0,0,1,122,27,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,95,95,99,111,110,116, + 97,105,110,115,95,95,99,2,0,0,0,0,0,0,0,0, 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, - 12,0,0,0,100,1,160,0,124,1,106,1,161,1,83,0, - 41,2,122,115,82,101,116,117,114,110,32,114,101,112,114,32, - 102,111,114,32,116,104,101,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,32,32,32,32,84,104,101,32,109,101,116, - 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,46,32,32,84,104,101,32,105,109,112,111,114,116,32,109, - 97,99,104,105,110,101,114,121,32,100,111,101,115,32,116,104, - 101,32,106,111,98,32,105,116,115,101,108,102,46,10,10,32, - 32,32,32,32,32,32,32,122,25,60,109,111,100,117,108,101, - 32,123,33,114,125,32,40,110,97,109,101,115,112,97,99,101, - 41,62,41,2,114,62,0,0,0,114,125,0,0,0,41,2, - 114,193,0,0,0,114,216,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,218,11,109,111,100,117,108, - 101,95,114,101,112,114,183,4,0,0,115,2,0,0,0,0, - 7,122,28,95,78,97,109,101,115,112,97,99,101,76,111,97, - 100,101,114,46,109,111,100,117,108,101,95,114,101,112,114,99, + 16,0,0,0,124,0,106,0,160,1,124,1,161,1,1,0, + 100,0,83,0,114,109,0,0,0,41,2,114,24,1,0,0, + 114,186,0,0,0,114,40,1,0,0,114,5,0,0,0,114, + 5,0,0,0,114,8,0,0,0,114,186,0,0,0,174,4, + 0,0,115,2,0,0,0,0,1,122,21,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,97,112,112,101,110,100, + 78,41,15,114,125,0,0,0,114,124,0,0,0,114,126,0, + 0,0,114,127,0,0,0,114,209,0,0,0,114,30,1,0, + 0,114,25,1,0,0,114,32,1,0,0,114,33,1,0,0, + 114,36,1,0,0,114,37,1,0,0,114,38,1,0,0,114, + 39,1,0,0,114,42,1,0,0,114,186,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, + 0,0,114,22,1,0,0,116,4,0,0,115,24,0,0,0, + 8,1,4,6,8,6,8,10,8,4,8,13,8,3,8,3, + 8,3,8,3,8,3,8,3,114,22,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,64,0,0,0,115,80,0,0,0,101,0,90,1,100, + 0,90,2,100,1,100,2,132,0,90,3,101,4,100,3,100, + 4,132,0,131,1,90,5,100,5,100,6,132,0,90,6,100, + 7,100,8,132,0,90,7,100,9,100,10,132,0,90,8,100, + 11,100,12,132,0,90,9,100,13,100,14,132,0,90,10,100, + 15,100,16,132,0,90,11,100,17,83,0,41,18,218,16,95, + 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,99, + 4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 4,0,0,0,67,0,0,0,115,18,0,0,0,116,0,124, + 1,124,2,124,3,131,3,124,0,95,1,100,0,83,0,114, + 109,0,0,0,41,2,114,22,1,0,0,114,24,1,0,0, + 114,28,1,0,0,114,5,0,0,0,114,5,0,0,0,114, + 8,0,0,0,114,209,0,0,0,180,4,0,0,115,2,0, + 0,0,0,1,122,25,95,78,97,109,101,115,112,97,99,101, + 76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,99, 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83, - 0,41,2,78,84,114,5,0,0,0,114,219,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,182, - 0,0,0,192,4,0,0,115,2,0,0,0,0,1,122,27, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,78, - 114,40,0,0,0,114,5,0,0,0,114,219,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,229, - 0,0,0,195,4,0,0,115,2,0,0,0,0,1,122,27, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0, - 67,0,0,0,115,16,0,0,0,116,0,100,1,100,2,100, - 3,100,4,100,5,141,4,83,0,41,6,78,114,40,0,0, - 0,122,8,60,115,116,114,105,110,103,62,114,215,0,0,0, - 84,41,1,114,231,0,0,0,41,1,114,232,0,0,0,114, - 219,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,114,213,0,0,0,198,4,0,0,115,2,0,0, - 0,0,1,122,25,95,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,46,103,101,116,95,99,111,100,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, - 0,0,0,67,0,0,0,115,4,0,0,0,100,1,83,0, - 114,210,0,0,0,114,5,0,0,0,114,211,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,212, - 0,0,0,201,4,0,0,115,2,0,0,0,0,1,122,30, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, - 0,0,0,67,0,0,0,115,4,0,0,0,100,0,83,0, - 114,109,0,0,0,114,5,0,0,0,114,253,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,217, - 0,0,0,204,4,0,0,115,2,0,0,0,0,1,122,28, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,67,0,0,0,115,26,0,0,0,116,0,160,1,100,1, - 124,0,106,2,161,2,1,0,116,0,160,3,124,0,124,1, - 161,2,83,0,41,2,122,98,76,111,97,100,32,97,32,110, - 97,109,101,115,112,97,99,101,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109, - 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,46,32,32,85,115,101,32,101,120,101,99,95,109, - 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,46, - 10,10,32,32,32,32,32,32,32,32,122,38,110,97,109,101, - 115,112,97,99,101,32,109,111,100,117,108,101,32,108,111,97, - 100,101,100,32,119,105,116,104,32,112,97,116,104,32,123,33, - 114,125,41,4,114,134,0,0,0,114,149,0,0,0,114,24, - 1,0,0,114,218,0,0,0,114,219,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,8,0,0,0,114,220,0,0, - 0,207,4,0,0,115,8,0,0,0,0,7,6,1,4,255, - 4,2,122,28,95,78,97,109,101,115,112,97,99,101,76,111, - 97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,101, - 78,41,12,114,125,0,0,0,114,124,0,0,0,114,126,0, - 0,0,114,209,0,0,0,114,207,0,0,0,114,44,1,0, - 0,114,182,0,0,0,114,229,0,0,0,114,213,0,0,0, - 114,212,0,0,0,114,217,0,0,0,114,220,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,114,43,1,0,0,179,4,0,0,115,18,0,0, - 0,8,1,8,3,2,1,10,8,8,3,8,3,8,3,8, - 3,8,3,114,43,1,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,118,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,101,4,100,2,100,3,132,0,131,1,90,5,101,4, - 100,4,100,5,132,0,131,1,90,6,101,4,100,6,100,7, - 132,0,131,1,90,7,101,4,100,8,100,9,132,0,131,1, - 90,8,101,4,100,19,100,11,100,12,132,1,131,1,90,9, - 101,4,100,20,100,13,100,14,132,1,131,1,90,10,101,4, - 100,21,100,15,100,16,132,1,131,1,90,11,101,4,100,17, - 100,18,132,0,131,1,90,12,100,10,83,0,41,22,218,10, - 80,97,116,104,70,105,110,100,101,114,122,62,77,101,116,97, - 32,112,97,116,104,32,102,105,110,100,101,114,32,102,111,114, - 32,115,121,115,46,112,97,116,104,32,97,110,100,32,112,97, - 99,107,97,103,101,32,95,95,112,97,116,104,95,95,32,97, - 116,116,114,105,98,117,116,101,115,46,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,67, - 0,0,0,115,64,0,0,0,116,0,116,1,106,2,160,3, - 161,0,131,1,68,0,93,44,92,2,125,1,125,2,124,2, - 100,1,117,0,114,40,116,1,106,2,124,1,61,0,113,14, - 116,4,124,2,100,2,131,2,114,14,124,2,160,5,161,0, - 1,0,113,14,100,1,83,0,41,3,122,125,67,97,108,108, - 32,116,104,101,32,105,110,118,97,108,105,100,97,116,101,95, - 99,97,99,104,101,115,40,41,32,109,101,116,104,111,100,32, - 111,110,32,97,108,108,32,112,97,116,104,32,101,110,116,114, - 121,32,102,105,110,100,101,114,115,10,32,32,32,32,32,32, - 32,32,115,116,111,114,101,100,32,105,110,32,115,121,115,46, - 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97, - 99,104,101,115,32,40,119,104,101,114,101,32,105,109,112,108, - 101,109,101,110,116,101,100,41,46,78,218,17,105,110,118,97, - 108,105,100,97,116,101,95,99,97,99,104,101,115,41,6,218, - 4,108,105,115,116,114,1,0,0,0,218,19,112,97,116,104, - 95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,218, - 5,105,116,101,109,115,114,128,0,0,0,114,46,1,0,0, - 41,3,114,193,0,0,0,114,116,0,0,0,218,6,102,105, - 110,100,101,114,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,114,46,1,0,0,225,4,0,0,115,10,0,0, - 0,0,4,22,1,8,1,10,1,10,1,122,28,80,97,116, - 104,70,105,110,100,101,114,46,105,110,118,97,108,105,100,97, - 116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,9,0,0,0,67,0, - 0,0,115,82,0,0,0,116,0,106,1,100,1,117,1,114, - 28,116,0,106,1,115,28,116,2,160,3,100,2,116,4,161, - 2,1,0,116,0,106,1,68,0,93,42,125,2,122,14,124, - 2,124,1,131,1,87,0,2,0,1,0,83,0,4,0,116, - 5,121,74,1,0,1,0,1,0,89,0,113,34,89,0,113, - 34,48,0,113,34,100,1,83,0,41,3,122,46,83,101,97, - 114,99,104,32,115,121,115,46,112,97,116,104,95,104,111,111, - 107,115,32,102,111,114,32,97,32,102,105,110,100,101,114,32, - 102,111,114,32,39,112,97,116,104,39,46,78,122,23,115,121, - 115,46,112,97,116,104,95,104,111,111,107,115,32,105,115,32, - 101,109,112,116,121,41,6,114,1,0,0,0,218,10,112,97, - 116,104,95,104,111,111,107,115,114,75,0,0,0,114,76,0, - 0,0,114,138,0,0,0,114,117,0,0,0,41,3,114,193, - 0,0,0,114,44,0,0,0,90,4,104,111,111,107,114,5, - 0,0,0,114,5,0,0,0,114,8,0,0,0,218,11,95, - 112,97,116,104,95,104,111,111,107,115,235,4,0,0,115,16, - 0,0,0,0,3,16,1,12,1,10,1,2,1,14,1,12, - 1,12,2,122,22,80,97,116,104,70,105,110,100,101,114,46, - 95,112,97,116,104,95,104,111,111,107,115,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, - 67,0,0,0,115,100,0,0,0,124,1,100,1,107,2,114, - 42,122,12,116,0,160,1,161,0,125,1,87,0,110,20,4, - 0,116,2,121,40,1,0,1,0,1,0,89,0,100,2,83, - 0,48,0,122,14,116,3,106,4,124,1,25,0,125,2,87, - 0,110,38,4,0,116,5,121,94,1,0,1,0,1,0,124, - 0,160,6,124,1,161,1,125,2,124,2,116,3,106,4,124, - 1,60,0,89,0,110,2,48,0,124,2,83,0,41,3,122, - 210,71,101,116,32,116,104,101,32,102,105,110,100,101,114,32, - 102,111,114,32,116,104,101,32,112,97,116,104,32,101,110,116, - 114,121,32,102,114,111,109,32,115,121,115,46,112,97,116,104, - 95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,46, - 10,10,32,32,32,32,32,32,32,32,73,102,32,116,104,101, - 32,112,97,116,104,32,101,110,116,114,121,32,105,115,32,110, - 111,116,32,105,110,32,116,104,101,32,99,97,99,104,101,44, - 32,102,105,110,100,32,116,104,101,32,97,112,112,114,111,112, - 114,105,97,116,101,32,102,105,110,100,101,114,10,32,32,32, - 32,32,32,32,32,97,110,100,32,99,97,99,104,101,32,105, - 116,46,32,73,102,32,110,111,32,102,105,110,100,101,114,32, - 105,115,32,97,118,97,105,108,97,98,108,101,44,32,115,116, - 111,114,101,32,78,111,110,101,46,10,10,32,32,32,32,32, - 32,32,32,114,40,0,0,0,78,41,7,114,4,0,0,0, - 114,55,0,0,0,114,3,1,0,0,114,1,0,0,0,114, - 48,1,0,0,218,8,75,101,121,69,114,114,111,114,114,52, - 1,0,0,41,3,114,193,0,0,0,114,44,0,0,0,114, - 50,1,0,0,114,5,0,0,0,114,5,0,0,0,114,8, - 0,0,0,218,20,95,112,97,116,104,95,105,109,112,111,114, - 116,101,114,95,99,97,99,104,101,248,4,0,0,115,22,0, - 0,0,0,8,8,1,2,1,12,1,12,3,8,1,2,1, - 14,1,12,1,10,1,16,1,122,31,80,97,116,104,70,105, - 110,100,101,114,46,95,112,97,116,104,95,105,109,112,111,114, - 116,101,114,95,99,97,99,104,101,99,3,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,4,0,0,0,67,0, - 0,0,115,82,0,0,0,116,0,124,2,100,1,131,2,114, - 26,124,2,160,1,124,1,161,1,92,2,125,3,125,4,110, - 14,124,2,160,2,124,1,161,1,125,3,103,0,125,4,124, - 3,100,0,117,1,114,60,116,3,160,4,124,1,124,3,161, - 2,83,0,116,3,160,5,124,1,100,0,161,2,125,5,124, - 4,124,5,95,6,124,5,83,0,41,2,78,114,137,0,0, - 0,41,7,114,128,0,0,0,114,137,0,0,0,114,206,0, - 0,0,114,134,0,0,0,114,201,0,0,0,114,183,0,0, - 0,114,178,0,0,0,41,6,114,193,0,0,0,114,139,0, - 0,0,114,50,1,0,0,114,140,0,0,0,114,141,0,0, - 0,114,187,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,218,16,95,108,101,103,97,99,121,95,103, - 101,116,95,115,112,101,99,14,5,0,0,115,18,0,0,0, - 0,4,10,1,16,2,10,1,4,1,8,1,12,1,12,1, - 6,1,122,27,80,97,116,104,70,105,110,100,101,114,46,95, - 108,101,103,97,99,121,95,103,101,116,95,115,112,101,99,78, - 99,4,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,5,0,0,0,67,0,0,0,115,166,0,0,0,103,0, - 125,4,124,2,68,0,93,134,125,5,116,0,124,5,116,1, - 116,2,102,2,131,2,115,28,113,8,124,0,160,3,124,5, - 161,1,125,6,124,6,100,1,117,1,114,8,116,4,124,6, - 100,2,131,2,114,70,124,6,160,5,124,1,124,3,161,2, - 125,7,110,12,124,0,160,6,124,1,124,6,161,2,125,7, - 124,7,100,1,117,0,114,92,113,8,124,7,106,7,100,1, - 117,1,114,110,124,7,2,0,1,0,83,0,124,7,106,8, - 125,8,124,8,100,1,117,0,114,132,116,9,100,3,131,1, - 130,1,124,4,160,10,124,8,161,1,1,0,113,8,116,11, - 160,12,124,1,100,1,161,2,125,7,124,4,124,7,95,8, - 124,7,83,0,41,4,122,63,70,105,110,100,32,116,104,101, - 32,108,111,97,100,101,114,32,111,114,32,110,97,109,101,115, - 112,97,99,101,95,112,97,116,104,32,102,111,114,32,116,104, - 105,115,32,109,111,100,117,108,101,47,112,97,99,107,97,103, - 101,32,110,97,109,101,46,78,114,203,0,0,0,122,19,115, - 112,101,99,32,109,105,115,115,105,110,103,32,108,111,97,100, - 101,114,41,13,114,161,0,0,0,114,84,0,0,0,218,5, - 98,121,116,101,115,114,54,1,0,0,114,128,0,0,0,114, - 203,0,0,0,114,55,1,0,0,114,140,0,0,0,114,178, - 0,0,0,114,117,0,0,0,114,167,0,0,0,114,134,0, - 0,0,114,183,0,0,0,41,9,114,193,0,0,0,114,139, - 0,0,0,114,44,0,0,0,114,202,0,0,0,218,14,110, - 97,109,101,115,112,97,99,101,95,112,97,116,104,90,5,101, - 110,116,114,121,114,50,1,0,0,114,187,0,0,0,114,141, + 3,0,0,0,67,0,0,0,115,12,0,0,0,100,1,160, + 0,124,1,106,1,161,1,83,0,41,2,122,115,82,101,116, + 117,114,110,32,114,101,112,114,32,102,111,114,32,116,104,101, + 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, + 32,32,84,104,101,32,109,101,116,104,111,100,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,46,32,32,84,104,101, + 32,105,109,112,111,114,116,32,109,97,99,104,105,110,101,114, + 121,32,100,111,101,115,32,116,104,101,32,106,111,98,32,105, + 116,115,101,108,102,46,10,10,32,32,32,32,32,32,32,32, + 122,25,60,109,111,100,117,108,101,32,123,33,114,125,32,40, + 110,97,109,101,115,112,97,99,101,41,62,41,2,114,62,0, + 0,0,114,125,0,0,0,41,2,114,193,0,0,0,114,216, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, - 0,0,218,9,95,103,101,116,95,115,112,101,99,29,5,0, - 0,115,40,0,0,0,0,5,4,1,8,1,14,1,2,1, - 10,1,8,1,10,1,14,2,12,1,8,1,2,1,10,1, - 8,1,6,1,8,1,8,5,12,2,12,1,6,1,122,20, - 80,97,116,104,70,105,110,100,101,114,46,95,103,101,116,95, - 115,112,101,99,99,4,0,0,0,0,0,0,0,0,0,0, - 0,6,0,0,0,5,0,0,0,67,0,0,0,115,100,0, - 0,0,124,2,100,1,117,0,114,14,116,0,106,1,125,2, - 124,0,160,2,124,1,124,2,124,3,161,3,125,4,124,4, - 100,1,117,0,114,40,100,1,83,0,124,4,106,3,100,1, - 117,0,114,92,124,4,106,4,125,5,124,5,114,86,100,1, - 124,4,95,5,116,6,124,1,124,5,124,0,106,2,131,3, - 124,4,95,4,124,4,83,0,100,1,83,0,110,4,124,4, - 83,0,100,1,83,0,41,2,122,141,84,114,121,32,116,111, - 32,102,105,110,100,32,97,32,115,112,101,99,32,102,111,114, - 32,39,102,117,108,108,110,97,109,101,39,32,111,110,32,115, - 121,115,46,112,97,116,104,32,111,114,32,39,112,97,116,104, - 39,46,10,10,32,32,32,32,32,32,32,32,84,104,101,32, - 115,101,97,114,99,104,32,105,115,32,98,97,115,101,100,32, - 111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107, - 115,32,97,110,100,32,115,121,115,46,112,97,116,104,95,105, - 109,112,111,114,116,101,114,95,99,97,99,104,101,46,10,32, - 32,32,32,32,32,32,32,78,41,7,114,1,0,0,0,114, - 44,0,0,0,114,58,1,0,0,114,140,0,0,0,114,178, - 0,0,0,114,181,0,0,0,114,22,1,0,0,41,6,114, - 193,0,0,0,114,139,0,0,0,114,44,0,0,0,114,202, - 0,0,0,114,187,0,0,0,114,57,1,0,0,114,5,0, - 0,0,114,5,0,0,0,114,8,0,0,0,114,203,0,0, - 0,61,5,0,0,115,26,0,0,0,0,6,8,1,6,1, - 14,1,8,1,4,1,10,1,6,1,4,3,6,1,16,1, - 4,2,6,2,122,20,80,97,116,104,70,105,110,100,101,114, - 46,102,105,110,100,95,115,112,101,99,99,3,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, - 0,0,0,115,30,0,0,0,124,0,160,0,124,1,124,2, - 161,2,125,3,124,3,100,1,117,0,114,24,100,1,83,0, - 124,3,106,1,83,0,41,2,122,170,102,105,110,100,32,116, - 104,101,32,109,111,100,117,108,101,32,111,110,32,115,121,115, - 46,112,97,116,104,32,111,114,32,39,112,97,116,104,39,32, - 98,97,115,101,100,32,111,110,32,115,121,115,46,112,97,116, - 104,95,104,111,111,107,115,32,97,110,100,10,32,32,32,32, - 32,32,32,32,115,121,115,46,112,97,116,104,95,105,109,112, - 111,114,116,101,114,95,99,97,99,104,101,46,10,10,32,32, - 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, - 32,32,85,115,101,32,102,105,110,100,95,115,112,101,99,40, - 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, - 32,32,32,32,78,114,204,0,0,0,114,205,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,206, - 0,0,0,85,5,0,0,115,8,0,0,0,0,8,12,1, - 8,1,4,1,122,22,80,97,116,104,70,105,110,100,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0, - 0,79,0,0,0,115,28,0,0,0,100,1,100,2,108,0, - 109,1,125,3,1,0,124,3,106,2,124,1,105,0,124,2, - 164,1,142,1,83,0,41,3,97,32,1,0,0,10,32,32, - 32,32,32,32,32,32,70,105,110,100,32,100,105,115,116,114, - 105,98,117,116,105,111,110,115,46,10,10,32,32,32,32,32, - 32,32,32,82,101,116,117,114,110,32,97,110,32,105,116,101, - 114,97,98,108,101,32,111,102,32,97,108,108,32,68,105,115, - 116,114,105,98,117,116,105,111,110,32,105,110,115,116,97,110, - 99,101,115,32,99,97,112,97,98,108,101,32,111,102,10,32, - 32,32,32,32,32,32,32,108,111,97,100,105,110,103,32,116, - 104,101,32,109,101,116,97,100,97,116,97,32,102,111,114,32, - 112,97,99,107,97,103,101,115,32,109,97,116,99,104,105,110, - 103,32,96,96,99,111,110,116,101,120,116,46,110,97,109,101, - 96,96,10,32,32,32,32,32,32,32,32,40,111,114,32,97, - 108,108,32,110,97,109,101,115,32,105,102,32,96,96,78,111, - 110,101,96,96,32,105,110,100,105,99,97,116,101,100,41,32, - 97,108,111,110,103,32,116,104,101,32,112,97,116,104,115,32, - 105,110,32,116,104,101,32,108,105,115,116,10,32,32,32,32, - 32,32,32,32,111,102,32,100,105,114,101,99,116,111,114,105, - 101,115,32,96,96,99,111,110,116,101,120,116,46,112,97,116, - 104,96,96,46,10,32,32,32,32,32,32,32,32,114,73,0, - 0,0,41,1,218,18,77,101,116,97,100,97,116,97,80,97, - 116,104,70,105,110,100,101,114,41,3,90,18,105,109,112,111, - 114,116,108,105,98,46,109,101,116,97,100,97,116,97,114,59, - 1,0,0,218,18,102,105,110,100,95,100,105,115,116,114,105, - 98,117,116,105,111,110,115,41,4,114,193,0,0,0,114,119, - 0,0,0,114,120,0,0,0,114,59,1,0,0,114,5,0, - 0,0,114,5,0,0,0,114,8,0,0,0,114,60,1,0, - 0,98,5,0,0,115,4,0,0,0,0,10,12,1,122,29, - 80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95, - 100,105,115,116,114,105,98,117,116,105,111,110,115,41,1,78, - 41,2,78,78,41,1,78,41,13,114,125,0,0,0,114,124, - 0,0,0,114,126,0,0,0,114,127,0,0,0,114,207,0, - 0,0,114,46,1,0,0,114,52,1,0,0,114,54,1,0, - 0,114,55,1,0,0,114,58,1,0,0,114,203,0,0,0, - 114,206,0,0,0,114,60,1,0,0,114,5,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,45, - 1,0,0,221,4,0,0,115,34,0,0,0,8,2,4,2, - 2,1,10,9,2,1,10,12,2,1,10,21,2,1,10,14, - 2,1,12,31,2,1,12,23,2,1,12,12,2,1,114,45, - 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,64,0,0,0,115,90,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, - 3,132,0,90,4,100,4,100,5,132,0,90,5,101,6,90, - 7,100,6,100,7,132,0,90,8,100,8,100,9,132,0,90, - 9,100,19,100,11,100,12,132,1,90,10,100,13,100,14,132, - 0,90,11,101,12,100,15,100,16,132,0,131,1,90,13,100, - 17,100,18,132,0,90,14,100,10,83,0,41,20,218,10,70, - 105,108,101,70,105,110,100,101,114,122,172,70,105,108,101,45, - 98,97,115,101,100,32,102,105,110,100,101,114,46,10,10,32, - 32,32,32,73,110,116,101,114,97,99,116,105,111,110,115,32, - 119,105,116,104,32,116,104,101,32,102,105,108,101,32,115,121, - 115,116,101,109,32,97,114,101,32,99,97,99,104,101,100,32, - 102,111,114,32,112,101,114,102,111,114,109,97,110,99,101,44, - 32,98,101,105,110,103,10,32,32,32,32,114,101,102,114,101, - 115,104,101,100,32,119,104,101,110,32,116,104,101,32,100,105, - 114,101,99,116,111,114,121,32,116,104,101,32,102,105,110,100, - 101,114,32,105,115,32,104,97,110,100,108,105,110,103,32,104, - 97,115,32,98,101,101,110,32,109,111,100,105,102,105,101,100, - 46,10,10,32,32,32,32,99,2,0,0,0,0,0,0,0, - 0,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0, - 115,84,0,0,0,103,0,125,3,124,2,68,0,93,32,92, - 2,137,0,125,4,124,3,160,0,135,0,102,1,100,1,100, - 2,132,8,124,4,68,0,131,1,161,1,1,0,113,8,124, - 3,124,0,95,1,124,1,112,54,100,3,124,0,95,2,100, - 4,124,0,95,3,116,4,131,0,124,0,95,5,116,4,131, - 0,124,0,95,6,100,5,83,0,41,6,122,154,73,110,105, - 116,105,97,108,105,122,101,32,119,105,116,104,32,116,104,101, - 32,112,97,116,104,32,116,111,32,115,101,97,114,99,104,32, - 111,110,32,97,110,100,32,97,32,118,97,114,105,97,98,108, - 101,32,110,117,109,98,101,114,32,111,102,10,32,32,32,32, - 32,32,32,32,50,45,116,117,112,108,101,115,32,99,111,110, - 116,97,105,110,105,110,103,32,116,104,101,32,108,111,97,100, - 101,114,32,97,110,100,32,116,104,101,32,102,105,108,101,32, - 115,117,102,102,105,120,101,115,32,116,104,101,32,108,111,97, - 100,101,114,10,32,32,32,32,32,32,32,32,114,101,99,111, - 103,110,105,122,101,115,46,99,1,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,3,0,0,0,51,0,0,0, - 115,22,0,0,0,124,0,93,14,125,1,124,1,136,0,102, - 2,86,0,1,0,113,2,100,0,83,0,114,109,0,0,0, - 114,5,0,0,0,114,16,1,0,0,169,1,114,140,0,0, - 0,114,5,0,0,0,114,8,0,0,0,114,19,1,0,0, - 127,5,0,0,243,0,0,0,0,122,38,70,105,108,101,70, - 105,110,100,101,114,46,95,95,105,110,105,116,95,95,46,60, - 108,111,99,97,108,115,62,46,60,103,101,110,101,120,112,114, - 62,114,71,0,0,0,114,104,0,0,0,78,41,7,114,167, - 0,0,0,218,8,95,108,111,97,100,101,114,115,114,44,0, - 0,0,218,11,95,112,97,116,104,95,109,116,105,109,101,218, - 3,115,101,116,218,11,95,112,97,116,104,95,99,97,99,104, - 101,218,19,95,114,101,108,97,120,101,100,95,112,97,116,104, - 95,99,97,99,104,101,41,5,114,118,0,0,0,114,44,0, - 0,0,218,14,108,111,97,100,101,114,95,100,101,116,97,105, - 108,115,90,7,108,111,97,100,101,114,115,114,189,0,0,0, - 114,5,0,0,0,114,62,1,0,0,114,8,0,0,0,114, - 209,0,0,0,121,5,0,0,115,16,0,0,0,0,4,4, - 1,12,1,26,1,6,2,10,1,6,1,8,1,122,19,70, - 105,108,101,70,105,110,100,101,114,46,95,95,105,110,105,116, - 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,2,0,0,0,67,0,0,0,115,10,0,0,0, - 100,1,124,0,95,0,100,2,83,0,41,3,122,31,73,110, - 118,97,108,105,100,97,116,101,32,116,104,101,32,100,105,114, - 101,99,116,111,114,121,32,109,116,105,109,101,46,114,104,0, - 0,0,78,41,1,114,65,1,0,0,114,246,0,0,0,114, - 5,0,0,0,114,5,0,0,0,114,8,0,0,0,114,46, - 1,0,0,135,5,0,0,115,2,0,0,0,0,2,122,28, - 70,105,108,101,70,105,110,100,101,114,46,105,110,118,97,108, - 105,100,97,116,101,95,99,97,99,104,101,115,99,2,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, - 0,67,0,0,0,115,42,0,0,0,124,0,160,0,124,1, - 161,1,125,2,124,2,100,1,117,0,114,26,100,1,103,0, - 102,2,83,0,124,2,106,1,124,2,106,2,112,38,103,0, - 102,2,83,0,41,2,122,197,84,114,121,32,116,111,32,102, - 105,110,100,32,97,32,108,111,97,100,101,114,32,102,111,114, - 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, - 111,100,117,108,101,44,32,111,114,32,116,104,101,32,110,97, - 109,101,115,112,97,99,101,10,32,32,32,32,32,32,32,32, - 112,97,99,107,97,103,101,32,112,111,114,116,105,111,110,115, - 46,32,82,101,116,117,114,110,115,32,40,108,111,97,100,101, - 114,44,32,108,105,115,116,45,111,102,45,112,111,114,116,105, - 111,110,115,41,46,10,10,32,32,32,32,32,32,32,32,84, + 0,0,218,11,109,111,100,117,108,101,95,114,101,112,114,183, + 4,0,0,115,2,0,0,0,0,7,122,28,95,78,97,109, + 101,115,112,97,99,101,76,111,97,100,101,114,46,109,111,100, + 117,108,101,95,114,101,112,114,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, + 0,115,4,0,0,0,100,1,83,0,41,2,78,84,114,5, + 0,0,0,114,219,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,114,182,0,0,0,192,4,0,0, + 115,2,0,0,0,0,1,122,27,95,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,105,115,95,112,97,99, + 107,97,103,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, + 0,0,100,1,83,0,41,2,78,114,40,0,0,0,114,5, + 0,0,0,114,219,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,114,229,0,0,0,195,4,0,0, + 115,2,0,0,0,0,1,122,27,95,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,103,101,116,95,115,111, + 117,114,99,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,6,0,0,0,67,0,0,0,115,16,0, + 0,0,116,0,100,1,100,2,100,3,100,4,100,5,141,4, + 83,0,41,6,78,114,40,0,0,0,122,8,60,115,116,114, + 105,110,103,62,114,215,0,0,0,84,41,1,114,231,0,0, + 0,41,1,114,232,0,0,0,114,219,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,114,213,0,0, + 0,198,4,0,0,115,2,0,0,0,0,1,122,25,95,78, + 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,103, + 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, + 115,4,0,0,0,100,1,83,0,114,210,0,0,0,114,5, + 0,0,0,114,211,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,114,212,0,0,0,201,4,0,0, + 115,2,0,0,0,0,1,122,30,95,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,99,114,101,97,116,101, + 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, + 115,4,0,0,0,100,0,83,0,114,109,0,0,0,114,5, + 0,0,0,114,253,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,114,217,0,0,0,204,4,0,0, + 115,2,0,0,0,0,1,122,28,95,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,101,120,101,99,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,26, + 0,0,0,116,0,160,1,100,1,124,0,106,2,161,2,1, + 0,116,0,160,3,124,0,124,1,161,2,83,0,41,2,122, + 98,76,111,97,100,32,97,32,110,97,109,101,115,112,97,99, + 101,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,85, + 115,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,32, + 32,32,32,122,38,110,97,109,101,115,112,97,99,101,32,109, + 111,100,117,108,101,32,108,111,97,100,101,100,32,119,105,116, + 104,32,112,97,116,104,32,123,33,114,125,41,4,114,134,0, + 0,0,114,149,0,0,0,114,24,1,0,0,114,218,0,0, + 0,114,219,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,8,0,0,0,114,220,0,0,0,207,4,0,0,115,8, + 0,0,0,0,7,6,1,4,255,4,2,122,28,95,78,97, + 109,101,115,112,97,99,101,76,111,97,100,101,114,46,108,111, + 97,100,95,109,111,100,117,108,101,78,41,12,114,125,0,0, + 0,114,124,0,0,0,114,126,0,0,0,114,209,0,0,0, + 114,207,0,0,0,114,44,1,0,0,114,182,0,0,0,114, + 229,0,0,0,114,213,0,0,0,114,212,0,0,0,114,217, + 0,0,0,114,220,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,114,43,1,0, + 0,179,4,0,0,115,18,0,0,0,8,1,8,3,2,1, + 10,8,8,3,8,3,8,3,8,3,8,3,114,43,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,64,0,0,0,115,118,0,0,0,101, + 0,90,1,100,0,90,2,100,1,90,3,101,4,100,2,100, + 3,132,0,131,1,90,5,101,4,100,4,100,5,132,0,131, + 1,90,6,101,4,100,6,100,7,132,0,131,1,90,7,101, + 4,100,8,100,9,132,0,131,1,90,8,101,4,100,19,100, + 11,100,12,132,1,131,1,90,9,101,4,100,20,100,13,100, + 14,132,1,131,1,90,10,101,4,100,21,100,15,100,16,132, + 1,131,1,90,11,101,4,100,17,100,18,132,0,131,1,90, + 12,100,10,83,0,41,22,218,10,80,97,116,104,70,105,110, + 100,101,114,122,62,77,101,116,97,32,112,97,116,104,32,102, + 105,110,100,101,114,32,102,111,114,32,115,121,115,46,112,97, + 116,104,32,97,110,100,32,112,97,99,107,97,103,101,32,95, + 95,112,97,116,104,95,95,32,97,116,116,114,105,98,117,116, + 101,115,46,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,4,0,0,0,67,0,0,0,115,64,0,0, + 0,116,0,116,1,106,2,160,3,161,0,131,1,68,0,93, + 44,92,2,125,1,125,2,124,2,100,1,117,0,114,40,116, + 1,106,2,124,1,61,0,113,14,116,4,124,2,100,2,131, + 2,114,14,124,2,160,5,161,0,1,0,113,14,100,1,83, + 0,41,3,122,125,67,97,108,108,32,116,104,101,32,105,110, + 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,40, + 41,32,109,101,116,104,111,100,32,111,110,32,97,108,108,32, + 112,97,116,104,32,101,110,116,114,121,32,102,105,110,100,101, + 114,115,10,32,32,32,32,32,32,32,32,115,116,111,114,101, + 100,32,105,110,32,115,121,115,46,112,97,116,104,95,105,109, + 112,111,114,116,101,114,95,99,97,99,104,101,115,32,40,119, + 104,101,114,101,32,105,109,112,108,101,109,101,110,116,101,100, + 41,46,78,218,17,105,110,118,97,108,105,100,97,116,101,95, + 99,97,99,104,101,115,41,6,218,4,108,105,115,116,114,1, + 0,0,0,218,19,112,97,116,104,95,105,109,112,111,114,116, + 101,114,95,99,97,99,104,101,218,5,105,116,101,109,115,114, + 128,0,0,0,114,46,1,0,0,41,3,114,193,0,0,0, + 114,116,0,0,0,218,6,102,105,110,100,101,114,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,114,46,1,0, + 0,225,4,0,0,115,10,0,0,0,0,4,22,1,8,1, + 10,1,10,1,122,28,80,97,116,104,70,105,110,100,101,114, + 46,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, + 101,115,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,9,0,0,0,67,0,0,0,115,82,0,0,0, + 116,0,106,1,100,1,117,1,114,28,116,0,106,1,115,28, + 116,2,160,3,100,2,116,4,161,2,1,0,116,0,106,1, + 68,0,93,42,125,2,122,14,124,2,124,1,131,1,87,0, + 2,0,1,0,83,0,4,0,116,5,121,74,1,0,1,0, + 1,0,89,0,113,34,89,0,113,34,48,0,113,34,100,1, + 83,0,41,3,122,46,83,101,97,114,99,104,32,115,121,115, + 46,112,97,116,104,95,104,111,111,107,115,32,102,111,114,32, + 97,32,102,105,110,100,101,114,32,102,111,114,32,39,112,97, + 116,104,39,46,78,122,23,115,121,115,46,112,97,116,104,95, + 104,111,111,107,115,32,105,115,32,101,109,112,116,121,41,6, + 114,1,0,0,0,218,10,112,97,116,104,95,104,111,111,107, + 115,114,75,0,0,0,114,76,0,0,0,114,138,0,0,0, + 114,117,0,0,0,41,3,114,193,0,0,0,114,44,0,0, + 0,90,4,104,111,111,107,114,5,0,0,0,114,5,0,0, + 0,114,8,0,0,0,218,11,95,112,97,116,104,95,104,111, + 111,107,115,235,4,0,0,115,16,0,0,0,0,3,16,1, + 12,1,10,1,2,1,14,1,12,1,12,2,122,22,80,97, + 116,104,70,105,110,100,101,114,46,95,112,97,116,104,95,104, + 111,111,107,115,99,2,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,8,0,0,0,67,0,0,0,115,100,0, + 0,0,124,1,100,1,107,2,114,42,122,12,116,0,160,1, + 161,0,125,1,87,0,110,20,4,0,116,2,121,40,1,0, + 1,0,1,0,89,0,100,2,83,0,48,0,122,14,116,3, + 106,4,124,1,25,0,125,2,87,0,110,38,4,0,116,5, + 121,94,1,0,1,0,1,0,124,0,160,6,124,1,161,1, + 125,2,124,2,116,3,106,4,124,1,60,0,89,0,110,2, + 48,0,124,2,83,0,41,3,122,210,71,101,116,32,116,104, + 101,32,102,105,110,100,101,114,32,102,111,114,32,116,104,101, + 32,112,97,116,104,32,101,110,116,114,121,32,102,114,111,109, + 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, + 101,114,95,99,97,99,104,101,46,10,10,32,32,32,32,32, + 32,32,32,73,102,32,116,104,101,32,112,97,116,104,32,101, + 110,116,114,121,32,105,115,32,110,111,116,32,105,110,32,116, + 104,101,32,99,97,99,104,101,44,32,102,105,110,100,32,116, + 104,101,32,97,112,112,114,111,112,114,105,97,116,101,32,102, + 105,110,100,101,114,10,32,32,32,32,32,32,32,32,97,110, + 100,32,99,97,99,104,101,32,105,116,46,32,73,102,32,110, + 111,32,102,105,110,100,101,114,32,105,115,32,97,118,97,105, + 108,97,98,108,101,44,32,115,116,111,114,101,32,78,111,110, + 101,46,10,10,32,32,32,32,32,32,32,32,114,40,0,0, + 0,78,41,7,114,4,0,0,0,114,55,0,0,0,114,3, + 1,0,0,114,1,0,0,0,114,48,1,0,0,218,8,75, + 101,121,69,114,114,111,114,114,52,1,0,0,41,3,114,193, + 0,0,0,114,44,0,0,0,114,50,1,0,0,114,5,0, + 0,0,114,5,0,0,0,114,8,0,0,0,218,20,95,112, + 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, + 104,101,248,4,0,0,115,22,0,0,0,0,8,8,1,2, + 1,12,1,12,3,8,1,2,1,14,1,12,1,10,1,16, + 1,122,31,80,97,116,104,70,105,110,100,101,114,46,95,112, + 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, + 104,101,99,3,0,0,0,0,0,0,0,0,0,0,0,6, + 0,0,0,4,0,0,0,67,0,0,0,115,82,0,0,0, + 116,0,124,2,100,1,131,2,114,26,124,2,160,1,124,1, + 161,1,92,2,125,3,125,4,110,14,124,2,160,2,124,1, + 161,1,125,3,103,0,125,4,124,3,100,0,117,1,114,60, + 116,3,160,4,124,1,124,3,161,2,83,0,116,3,160,5, + 124,1,100,0,161,2,125,5,124,4,124,5,95,6,124,5, + 83,0,41,2,78,114,137,0,0,0,41,7,114,128,0,0, + 0,114,137,0,0,0,114,206,0,0,0,114,134,0,0,0, + 114,201,0,0,0,114,183,0,0,0,114,178,0,0,0,41, + 6,114,193,0,0,0,114,139,0,0,0,114,50,1,0,0, + 114,140,0,0,0,114,141,0,0,0,114,187,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,16, + 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, + 14,5,0,0,115,18,0,0,0,0,4,10,1,16,2,10, + 1,4,1,8,1,12,1,12,1,6,1,122,27,80,97,116, + 104,70,105,110,100,101,114,46,95,108,101,103,97,99,121,95, + 103,101,116,95,115,112,101,99,78,99,4,0,0,0,0,0, + 0,0,0,0,0,0,9,0,0,0,5,0,0,0,67,0, + 0,0,115,166,0,0,0,103,0,125,4,124,2,68,0,93, + 134,125,5,116,0,124,5,116,1,116,2,102,2,131,2,115, + 28,113,8,124,0,160,3,124,5,161,1,125,6,124,6,100, + 1,117,1,114,8,116,4,124,6,100,2,131,2,114,70,124, + 6,160,5,124,1,124,3,161,2,125,7,110,12,124,0,160, + 6,124,1,124,6,161,2,125,7,124,7,100,1,117,0,114, + 92,113,8,124,7,106,7,100,1,117,1,114,110,124,7,2, + 0,1,0,83,0,124,7,106,8,125,8,124,8,100,1,117, + 0,114,132,116,9,100,3,131,1,130,1,124,4,160,10,124, + 8,161,1,1,0,113,8,116,11,160,12,124,1,100,1,161, + 2,125,7,124,4,124,7,95,8,124,7,83,0,41,4,122, + 63,70,105,110,100,32,116,104,101,32,108,111,97,100,101,114, + 32,111,114,32,110,97,109,101,115,112,97,99,101,95,112,97, + 116,104,32,102,111,114,32,116,104,105,115,32,109,111,100,117, + 108,101,47,112,97,99,107,97,103,101,32,110,97,109,101,46, + 78,114,203,0,0,0,122,19,115,112,101,99,32,109,105,115, + 115,105,110,103,32,108,111,97,100,101,114,41,13,114,161,0, + 0,0,114,84,0,0,0,218,5,98,121,116,101,115,114,54, + 1,0,0,114,128,0,0,0,114,203,0,0,0,114,55,1, + 0,0,114,140,0,0,0,114,178,0,0,0,114,117,0,0, + 0,114,167,0,0,0,114,134,0,0,0,114,183,0,0,0, + 41,9,114,193,0,0,0,114,139,0,0,0,114,44,0,0, + 0,114,202,0,0,0,218,14,110,97,109,101,115,112,97,99, + 101,95,112,97,116,104,90,5,101,110,116,114,121,114,50,1, + 0,0,114,187,0,0,0,114,141,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,8,0,0,0,218,9,95,103,101, + 116,95,115,112,101,99,29,5,0,0,115,40,0,0,0,0, + 5,4,1,8,1,14,1,2,1,10,1,8,1,10,1,14, + 2,12,1,8,1,2,1,10,1,8,1,6,1,8,1,8, + 5,12,2,12,1,6,1,122,20,80,97,116,104,70,105,110, + 100,101,114,46,95,103,101,116,95,115,112,101,99,99,4,0, + 0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0, + 0,0,67,0,0,0,115,100,0,0,0,124,2,100,1,117, + 0,114,14,116,0,106,1,125,2,124,0,160,2,124,1,124, + 2,124,3,161,3,125,4,124,4,100,1,117,0,114,40,100, + 1,83,0,124,4,106,3,100,1,117,0,114,92,124,4,106, + 4,125,5,124,5,114,86,100,1,124,4,95,5,116,6,124, + 1,124,5,124,0,106,2,131,3,124,4,95,4,124,4,83, + 0,100,1,83,0,110,4,124,4,83,0,100,1,83,0,41, + 2,122,141,84,114,121,32,116,111,32,102,105,110,100,32,97, + 32,115,112,101,99,32,102,111,114,32,39,102,117,108,108,110, + 97,109,101,39,32,111,110,32,115,121,115,46,112,97,116,104, + 32,111,114,32,39,112,97,116,104,39,46,10,10,32,32,32, + 32,32,32,32,32,84,104,101,32,115,101,97,114,99,104,32, + 105,115,32,98,97,115,101,100,32,111,110,32,115,121,115,46, + 112,97,116,104,95,104,111,111,107,115,32,97,110,100,32,115, + 121,115,46,112,97,116,104,95,105,109,112,111,114,116,101,114, + 95,99,97,99,104,101,46,10,32,32,32,32,32,32,32,32, + 78,41,7,114,1,0,0,0,114,44,0,0,0,114,58,1, + 0,0,114,140,0,0,0,114,178,0,0,0,114,181,0,0, + 0,114,22,1,0,0,41,6,114,193,0,0,0,114,139,0, + 0,0,114,44,0,0,0,114,202,0,0,0,114,187,0,0, + 0,114,57,1,0,0,114,5,0,0,0,114,5,0,0,0, + 114,8,0,0,0,114,203,0,0,0,61,5,0,0,115,26, + 0,0,0,0,6,8,1,6,1,14,1,8,1,4,1,10, + 1,6,1,4,3,6,1,16,1,4,2,6,2,122,20,80, + 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,115, + 112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,4,0,0,0,67,0,0,0,115,30,0,0, + 0,124,0,160,0,124,1,124,2,161,2,125,3,124,3,100, + 1,117,0,114,24,100,1,83,0,124,3,106,1,83,0,41, + 2,122,170,102,105,110,100,32,116,104,101,32,109,111,100,117, + 108,101,32,111,110,32,115,121,115,46,112,97,116,104,32,111, + 114,32,39,112,97,116,104,39,32,98,97,115,101,100,32,111, + 110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,115, + 32,97,110,100,10,32,32,32,32,32,32,32,32,115,121,115, + 46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, + 97,99,104,101,46,10,10,32,32,32,32,32,32,32,32,84, 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,102, 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, - 97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,3, - 114,203,0,0,0,114,140,0,0,0,114,178,0,0,0,41, - 3,114,118,0,0,0,114,139,0,0,0,114,187,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,114, - 137,0,0,0,141,5,0,0,115,8,0,0,0,0,7,10, - 1,8,1,8,1,122,22,70,105,108,101,70,105,110,100,101, - 114,46,102,105,110,100,95,108,111,97,100,101,114,99,6,0, - 0,0,0,0,0,0,0,0,0,0,7,0,0,0,6,0, - 0,0,67,0,0,0,115,26,0,0,0,124,1,124,2,124, - 3,131,2,125,6,116,0,124,2,124,3,124,6,124,4,100, - 1,141,4,83,0,41,2,78,114,177,0,0,0,41,1,114, - 190,0,0,0,41,7,114,118,0,0,0,114,188,0,0,0, - 114,139,0,0,0,114,44,0,0,0,90,4,115,109,115,108, - 114,202,0,0,0,114,140,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,8,0,0,0,114,58,1,0,0,153,5, - 0,0,115,8,0,0,0,0,1,10,1,8,1,2,255,122, - 20,70,105,108,101,70,105,110,100,101,114,46,95,103,101,116, - 95,115,112,101,99,78,99,3,0,0,0,0,0,0,0,0, - 0,0,0,14,0,0,0,8,0,0,0,67,0,0,0,115, - 96,1,0,0,100,1,125,3,124,1,160,0,100,2,161,1, - 100,3,25,0,125,4,122,24,116,1,124,0,106,2,112,34, - 116,3,160,4,161,0,131,1,106,5,125,5,87,0,110,22, - 4,0,116,6,121,64,1,0,1,0,1,0,100,4,125,5, - 89,0,110,2,48,0,124,5,124,0,106,7,107,3,114,90, - 124,0,160,8,161,0,1,0,124,5,124,0,95,7,116,9, - 131,0,114,112,124,0,106,10,125,6,124,4,160,11,161,0, - 125,7,110,10,124,0,106,12,125,6,124,4,125,7,124,7, - 124,6,118,0,114,216,116,13,124,0,106,2,124,4,131,2, - 125,8,124,0,106,14,68,0,93,58,92,2,125,9,125,10, - 100,5,124,9,23,0,125,11,116,13,124,8,124,11,131,2, - 125,12,116,15,124,12,131,1,114,148,124,0,160,16,124,10, - 124,1,124,12,124,8,103,1,124,2,161,5,2,0,1,0, - 83,0,113,148,116,17,124,8,131,1,125,3,124,0,106,14, - 68,0,93,82,92,2,125,9,125,10,116,13,124,0,106,2, - 124,4,124,9,23,0,131,2,125,12,116,18,106,19,100,6, - 124,12,100,3,100,7,141,3,1,0,124,7,124,9,23,0, - 124,6,118,0,114,222,116,15,124,12,131,1,114,222,124,0, - 160,16,124,10,124,1,124,12,100,8,124,2,161,5,2,0, - 1,0,83,0,113,222,124,3,144,1,114,92,116,18,160,19, - 100,9,124,8,161,2,1,0,116,18,160,20,124,1,100,8, - 161,2,125,13,124,8,103,1,124,13,95,21,124,13,83,0, - 100,8,83,0,41,10,122,111,84,114,121,32,116,111,32,102, - 105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,115,32,116,104,101,32,109,97,116,99,104,105, - 110,103,32,115,112,101,99,44,32,111,114,32,78,111,110,101, - 32,105,102,32,110,111,116,32,102,111,117,110,100,46,10,32, - 32,32,32,32,32,32,32,70,114,71,0,0,0,114,28,0, - 0,0,114,104,0,0,0,114,209,0,0,0,122,9,116,114, - 121,105,110,103,32,123,125,41,1,90,9,118,101,114,98,111, - 115,105,116,121,78,122,25,112,111,115,115,105,98,108,101,32, - 110,97,109,101,115,112,97,99,101,32,102,111,114,32,123,125, - 41,22,114,41,0,0,0,114,49,0,0,0,114,44,0,0, - 0,114,4,0,0,0,114,55,0,0,0,114,10,1,0,0, - 114,50,0,0,0,114,65,1,0,0,218,11,95,102,105,108, - 108,95,99,97,99,104,101,114,9,0,0,0,114,68,1,0, - 0,114,105,0,0,0,114,67,1,0,0,114,38,0,0,0, - 114,64,1,0,0,114,54,0,0,0,114,58,1,0,0,114, - 56,0,0,0,114,134,0,0,0,114,149,0,0,0,114,183, - 0,0,0,114,178,0,0,0,41,14,114,118,0,0,0,114, - 139,0,0,0,114,202,0,0,0,90,12,105,115,95,110,97, - 109,101,115,112,97,99,101,90,11,116,97,105,108,95,109,111, - 100,117,108,101,114,169,0,0,0,90,5,99,97,99,104,101, - 90,12,99,97,99,104,101,95,109,111,100,117,108,101,90,9, - 98,97,115,101,95,112,97,116,104,114,17,1,0,0,114,188, - 0,0,0,90,13,105,110,105,116,95,102,105,108,101,110,97, - 109,101,90,9,102,117,108,108,95,112,97,116,104,114,187,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,8,0,0, - 0,114,203,0,0,0,158,5,0,0,115,72,0,0,0,0, - 5,4,1,14,1,2,1,24,1,12,1,10,1,10,1,8, - 1,6,2,6,1,6,1,10,2,6,1,4,2,8,1,12, - 1,14,1,8,1,10,1,8,1,26,4,8,2,14,1,16, - 1,16,1,12,1,8,1,10,1,4,255,10,2,6,1,12, - 1,12,1,8,1,4,1,122,20,70,105,108,101,70,105,110, - 100,101,114,46,102,105,110,100,95,115,112,101,99,99,1,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,10,0, - 0,0,67,0,0,0,115,188,0,0,0,124,0,106,0,125, - 1,122,22,116,1,160,2,124,1,112,22,116,1,160,3,161, - 0,161,1,125,2,87,0,110,28,4,0,116,4,116,5,116, - 6,102,3,121,56,1,0,1,0,1,0,103,0,125,2,89, - 0,110,2,48,0,116,7,106,8,160,9,100,1,161,1,115, - 82,116,10,124,2,131,1,124,0,95,11,110,74,116,10,131, - 0,125,3,124,2,68,0,93,56,125,4,124,4,160,12,100, - 2,161,1,92,3,125,5,125,6,125,7,124,6,114,134,100, - 3,160,13,124,5,124,7,160,14,161,0,161,2,125,8,110, - 4,124,5,125,8,124,3,160,15,124,8,161,1,1,0,113, - 92,124,3,124,0,95,11,116,7,106,8,160,9,116,16,161, - 1,114,184,100,4,100,5,132,0,124,2,68,0,131,1,124, - 0,95,17,100,6,83,0,41,7,122,68,70,105,108,108,32, - 116,104,101,32,99,97,99,104,101,32,111,102,32,112,111,116, - 101,110,116,105,97,108,32,109,111,100,117,108,101,115,32,97, - 110,100,32,112,97,99,107,97,103,101,115,32,102,111,114,32, - 116,104,105,115,32,100,105,114,101,99,116,111,114,121,46,114, - 0,0,0,0,114,71,0,0,0,114,61,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,83,0,0,0,115,20,0,0,0,104,0,124,0, - 93,12,125,1,124,1,160,0,161,0,146,2,113,4,83,0, - 114,5,0,0,0,41,1,114,105,0,0,0,41,2,114,32, - 0,0,0,90,2,102,110,114,5,0,0,0,114,5,0,0, - 0,114,8,0,0,0,218,9,60,115,101,116,99,111,109,112, - 62,235,5,0,0,114,63,1,0,0,122,41,70,105,108,101, - 70,105,110,100,101,114,46,95,102,105,108,108,95,99,97,99, - 104,101,46,60,108,111,99,97,108,115,62,46,60,115,101,116, - 99,111,109,112,62,78,41,18,114,44,0,0,0,114,4,0, - 0,0,114,7,1,0,0,114,55,0,0,0,114,3,1,0, - 0,218,15,80,101,114,109,105,115,115,105,111,110,69,114,114, - 111,114,218,18,78,111,116,65,68,105,114,101,99,116,111,114, - 121,69,114,114,111,114,114,1,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,66,1,0,0,114,67,1,0,0,114, - 100,0,0,0,114,62,0,0,0,114,105,0,0,0,218,3, - 97,100,100,114,12,0,0,0,114,68,1,0,0,41,9,114, - 118,0,0,0,114,44,0,0,0,114,8,1,0,0,90,21, - 108,111,119,101,114,95,115,117,102,102,105,120,95,99,111,110, - 116,101,110,116,115,114,41,1,0,0,114,116,0,0,0,114, - 29,1,0,0,114,17,1,0,0,90,8,110,101,119,95,110, - 97,109,101,114,5,0,0,0,114,5,0,0,0,114,8,0, - 0,0,114,70,1,0,0,206,5,0,0,115,34,0,0,0, - 0,2,6,1,2,1,22,1,18,3,10,3,12,1,12,7, - 6,1,8,1,16,1,4,1,18,2,4,1,12,1,6,1, - 12,1,122,22,70,105,108,101,70,105,110,100,101,114,46,95, - 102,105,108,108,95,99,97,99,104,101,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,7, - 0,0,0,115,18,0,0,0,135,0,135,1,102,2,100,1, - 100,2,132,8,125,2,124,2,83,0,41,3,97,20,1,0, - 0,65,32,99,108,97,115,115,32,109,101,116,104,111,100,32, - 119,104,105,99,104,32,114,101,116,117,114,110,115,32,97,32, - 99,108,111,115,117,114,101,32,116,111,32,117,115,101,32,111, - 110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,10, - 32,32,32,32,32,32,32,32,119,104,105,99,104,32,119,105, - 108,108,32,114,101,116,117,114,110,32,97,110,32,105,110,115, - 116,97,110,99,101,32,117,115,105,110,103,32,116,104,101,32, - 115,112,101,99,105,102,105,101,100,32,108,111,97,100,101,114, - 115,32,97,110,100,32,116,104,101,32,112,97,116,104,10,32, - 32,32,32,32,32,32,32,99,97,108,108,101,100,32,111,110, - 32,116,104,101,32,99,108,111,115,117,114,101,46,10,10,32, - 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97, - 116,104,32,99,97,108,108,101,100,32,111,110,32,116,104,101, - 32,99,108,111,115,117,114,101,32,105,115,32,110,111,116,32, - 97,32,100,105,114,101,99,116,111,114,121,44,32,73,109,112, - 111,114,116,69,114,114,111,114,32,105,115,10,32,32,32,32, - 32,32,32,32,114,97,105,115,101,100,46,10,10,32,32,32, - 32,32,32,32,32,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,4,0,0,0,19,0,0,0,115,36, - 0,0,0,116,0,124,0,131,1,115,20,116,1,100,1,124, - 0,100,2,141,2,130,1,136,0,124,0,103,1,136,1,162, - 1,82,0,142,0,83,0,41,3,122,45,80,97,116,104,32, - 104,111,111,107,32,102,111,114,32,105,109,112,111,114,116,108, - 105,98,46,109,97,99,104,105,110,101,114,121,46,70,105,108, - 101,70,105,110,100,101,114,46,122,30,111,110,108,121,32,100, - 105,114,101,99,116,111,114,105,101,115,32,97,114,101,32,115, - 117,112,112,111,114,116,101,100,114,48,0,0,0,41,2,114, - 56,0,0,0,114,117,0,0,0,114,48,0,0,0,169,2, - 114,193,0,0,0,114,69,1,0,0,114,5,0,0,0,114, - 8,0,0,0,218,24,112,97,116,104,95,104,111,111,107,95, - 102,111,114,95,70,105,108,101,70,105,110,100,101,114,247,5, - 0,0,115,6,0,0,0,0,2,8,1,12,1,122,54,70, - 105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,104, - 111,111,107,46,60,108,111,99,97,108,115,62,46,112,97,116, - 104,95,104,111,111,107,95,102,111,114,95,70,105,108,101,70, - 105,110,100,101,114,114,5,0,0,0,41,3,114,193,0,0, - 0,114,69,1,0,0,114,76,1,0,0,114,5,0,0,0, - 114,75,1,0,0,114,8,0,0,0,218,9,112,97,116,104, - 95,104,111,111,107,237,5,0,0,115,4,0,0,0,0,10, - 14,6,122,20,70,105,108,101,70,105,110,100,101,114,46,112, - 97,116,104,95,104,111,111,107,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,12,0,0,0,100,1,160,0,124,0,106,1,161,1, - 83,0,41,2,78,122,16,70,105,108,101,70,105,110,100,101, - 114,40,123,33,114,125,41,41,2,114,62,0,0,0,114,44, - 0,0,0,114,246,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,8,0,0,0,114,39,1,0,0,255,5,0,0, - 115,2,0,0,0,0,1,122,19,70,105,108,101,70,105,110, - 100,101,114,46,95,95,114,101,112,114,95,95,41,1,78,41, - 15,114,125,0,0,0,114,124,0,0,0,114,126,0,0,0, - 114,127,0,0,0,114,209,0,0,0,114,46,1,0,0,114, - 143,0,0,0,114,206,0,0,0,114,137,0,0,0,114,58, - 1,0,0,114,203,0,0,0,114,70,1,0,0,114,207,0, - 0,0,114,77,1,0,0,114,39,1,0,0,114,5,0,0, - 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, - 114,61,1,0,0,112,5,0,0,115,22,0,0,0,8,2, - 4,7,8,14,8,4,4,2,8,12,8,5,10,48,8,31, - 2,1,10,17,114,61,1,0,0,99,4,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,8,0,0,0,67,0, - 0,0,115,144,0,0,0,124,0,160,0,100,1,161,1,125, - 4,124,0,160,0,100,2,161,1,125,5,124,4,115,66,124, - 5,114,36,124,5,106,1,125,4,110,30,124,2,124,3,107, - 2,114,56,116,2,124,1,124,2,131,2,125,4,110,10,116, - 3,124,1,124,2,131,2,125,4,124,5,115,84,116,4,124, - 1,124,2,124,4,100,3,141,3,125,5,122,36,124,5,124, - 0,100,2,60,0,124,4,124,0,100,1,60,0,124,2,124, - 0,100,4,60,0,124,3,124,0,100,5,60,0,87,0,110, - 18,4,0,116,5,121,138,1,0,1,0,1,0,89,0,110, - 2,48,0,100,0,83,0,41,6,78,218,10,95,95,108,111, - 97,100,101,114,95,95,218,8,95,95,115,112,101,99,95,95, - 114,62,1,0,0,90,8,95,95,102,105,108,101,95,95,90, - 10,95,95,99,97,99,104,101,100,95,95,41,6,218,3,103, - 101,116,114,140,0,0,0,114,15,1,0,0,114,9,1,0, - 0,114,190,0,0,0,218,9,69,120,99,101,112,116,105,111, - 110,41,6,90,2,110,115,114,116,0,0,0,90,8,112,97, - 116,104,110,97,109,101,90,9,99,112,97,116,104,110,97,109, - 101,114,140,0,0,0,114,187,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,8,0,0,0,218,14,95,102,105,120, - 95,117,112,95,109,111,100,117,108,101,5,6,0,0,115,34, - 0,0,0,0,2,10,1,10,1,4,1,4,1,8,1,8, - 1,12,2,10,1,4,1,14,1,2,1,8,1,8,1,8, - 1,12,1,12,2,114,82,1,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, - 0,0,0,115,38,0,0,0,116,0,116,1,160,2,161,0, - 102,2,125,0,116,3,116,4,102,2,125,1,116,5,116,6, - 102,2,125,2,124,0,124,1,124,2,103,3,83,0,41,1, - 122,95,82,101,116,117,114,110,115,32,97,32,108,105,115,116, - 32,111,102,32,102,105,108,101,45,98,97,115,101,100,32,109, - 111,100,117,108,101,32,108,111,97,100,101,114,115,46,10,10, - 32,32,32,32,69,97,99,104,32,105,116,101,109,32,105,115, - 32,97,32,116,117,112,108,101,32,40,108,111,97,100,101,114, - 44,32,115,117,102,102,105,120,101,115,41,46,10,32,32,32, - 32,41,7,114,252,0,0,0,114,163,0,0,0,218,18,101, - 120,116,101,110,115,105,111,110,95,115,117,102,102,105,120,101, - 115,114,9,1,0,0,114,101,0,0,0,114,15,1,0,0, - 114,88,0,0,0,41,3,90,10,101,120,116,101,110,115,105, - 111,110,115,90,6,115,111,117,114,99,101,90,8,98,121,116, - 101,99,111,100,101,114,5,0,0,0,114,5,0,0,0,114, - 8,0,0,0,114,184,0,0,0,28,6,0,0,115,8,0, - 0,0,0,5,12,1,8,1,8,1,114,184,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, - 9,0,0,0,67,0,0,0,115,132,1,0,0,124,0,97, - 0,116,0,106,1,97,1,116,0,106,2,97,2,116,1,106, - 3,116,4,25,0,125,1,100,1,100,2,103,1,102,2,100, - 3,100,4,100,2,103,2,102,2,102,2,125,2,124,2,68, - 0,93,108,92,2,125,3,125,4,116,5,100,5,100,6,132, - 0,124,4,68,0,131,1,131,1,115,82,74,0,130,1,124, - 4,100,7,25,0,125,5,124,3,116,1,106,3,118,0,114, - 116,116,1,106,3,124,3,25,0,125,6,1,0,113,170,113, - 52,122,20,116,0,160,6,124,3,161,1,125,6,87,0,1, - 0,113,170,87,0,113,52,4,0,116,7,121,158,1,0,1, - 0,1,0,89,0,113,52,89,0,113,52,48,0,113,52,116, - 7,100,8,131,1,130,1,116,8,124,1,100,9,124,6,131, - 3,1,0,116,8,124,1,100,10,124,5,131,3,1,0,116, - 8,124,1,100,11,100,12,160,9,124,4,161,1,131,3,1, - 0,116,8,124,1,100,13,100,14,100,15,132,0,124,4,68, - 0,131,1,131,3,1,0,103,0,100,16,162,1,125,7,124, - 3,100,3,107,2,144,1,114,6,124,7,160,10,100,17,161, - 1,1,0,124,7,68,0,93,52,125,8,124,8,116,1,106, - 3,118,1,144,1,114,38,116,0,160,6,124,8,161,1,125, - 9,110,10,116,1,106,3,124,8,25,0,125,9,116,8,124, - 1,124,8,124,9,131,3,1,0,144,1,113,10,116,8,124, - 1,100,18,116,11,131,0,131,3,1,0,116,12,160,13,116, - 2,160,14,161,0,161,1,1,0,124,3,100,3,107,2,144, - 1,114,128,116,15,160,10,100,19,161,1,1,0,100,20,116, - 12,118,0,144,1,114,128,100,21,116,16,95,17,100,22,83, - 0,41,23,122,205,83,101,116,117,112,32,116,104,101,32,112, - 97,116,104,45,98,97,115,101,100,32,105,109,112,111,114,116, - 101,114,115,32,102,111,114,32,105,109,112,111,114,116,108,105, - 98,32,98,121,32,105,109,112,111,114,116,105,110,103,32,110, - 101,101,100,101,100,10,32,32,32,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,32,97,110,100,32,105, - 110,106,101,99,116,105,110,103,32,116,104,101,109,32,105,110, - 116,111,32,116,104,101,32,103,108,111,98,97,108,32,110,97, - 109,101,115,112,97,99,101,46,10,10,32,32,32,32,79,116, - 104,101,114,32,99,111,109,112,111,110,101,110,116,115,32,97, - 114,101,32,101,120,116,114,97,99,116,101,100,32,102,114,111, - 109,32,116,104,101,32,99,111,114,101,32,98,111,111,116,115, - 116,114,97,112,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,90,5,112,111,115,105,120,250,1,47,90,2,110,116, - 250,1,92,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,115,0,0,0,115,26,0,0, - 0,124,0,93,18,125,1,116,0,124,1,131,1,100,0,107, - 2,86,0,1,0,113,2,100,1,83,0,41,2,114,39,0, - 0,0,78,41,1,114,23,0,0,0,41,2,114,32,0,0, - 0,114,94,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,114,19,1,0,0,57,6,0,0,114,63, - 1,0,0,122,25,95,115,101,116,117,112,46,60,108,111,99, - 97,108,115,62,46,60,103,101,110,101,120,112,114,62,114,73, - 0,0,0,122,30,105,109,112,111,114,116,108,105,98,32,114, - 101,113,117,105,114,101,115,32,112,111,115,105,120,32,111,114, - 32,110,116,114,4,0,0,0,114,35,0,0,0,114,31,0, - 0,0,114,40,0,0,0,114,58,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,83,0,0,0,115,22,0,0,0,104,0,124,0,93,14, - 125,1,100,0,124,1,155,0,157,2,146,2,113,4,83,0, - 41,1,114,74,0,0,0,114,5,0,0,0,41,2,114,32, - 0,0,0,218,1,115,114,5,0,0,0,114,5,0,0,0, - 114,8,0,0,0,114,71,1,0,0,74,6,0,0,114,63, - 1,0,0,122,25,95,115,101,116,117,112,46,60,108,111,99, - 97,108,115,62,46,60,115,101,116,99,111,109,112,62,41,3, - 114,64,0,0,0,114,75,0,0,0,114,160,0,0,0,114, - 192,0,0,0,114,9,0,0,0,122,4,46,112,121,119,122, - 6,95,100,46,112,121,100,84,78,41,18,114,134,0,0,0, - 114,1,0,0,0,114,163,0,0,0,114,31,1,0,0,114, - 125,0,0,0,218,3,97,108,108,90,18,95,98,117,105,108, - 116,105,110,95,102,114,111,109,95,110,97,109,101,114,117,0, - 0,0,114,129,0,0,0,114,36,0,0,0,114,186,0,0, - 0,114,14,0,0,0,114,21,1,0,0,114,167,0,0,0, - 114,83,1,0,0,114,101,0,0,0,114,191,0,0,0,114, - 195,0,0,0,41,10,218,17,95,98,111,111,116,115,116,114, - 97,112,95,109,111,100,117,108,101,90,11,115,101,108,102,95, - 109,111,100,117,108,101,90,10,111,115,95,100,101,116,97,105, - 108,115,90,10,98,117,105,108,116,105,110,95,111,115,114,31, - 0,0,0,114,35,0,0,0,90,9,111,115,95,109,111,100, - 117,108,101,90,13,98,117,105,108,116,105,110,95,110,97,109, - 101,115,90,12,98,117,105,108,116,105,110,95,110,97,109,101, - 90,14,98,117,105,108,116,105,110,95,109,111,100,117,108,101, + 97,100,46,10,10,32,32,32,32,32,32,32,32,78,114,204, + 0,0,0,114,205,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,114,206,0,0,0,85,5,0,0, + 115,8,0,0,0,0,8,12,1,8,1,4,1,122,22,80, + 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,109, + 111,100,117,108,101,99,1,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,4,0,0,0,79,0,0,0,115,28, + 0,0,0,100,1,100,2,108,0,109,1,125,3,1,0,124, + 3,106,2,124,1,105,0,124,2,164,1,142,1,83,0,41, + 3,97,32,1,0,0,10,32,32,32,32,32,32,32,32,70, + 105,110,100,32,100,105,115,116,114,105,98,117,116,105,111,110, + 115,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117, + 114,110,32,97,110,32,105,116,101,114,97,98,108,101,32,111, + 102,32,97,108,108,32,68,105,115,116,114,105,98,117,116,105, + 111,110,32,105,110,115,116,97,110,99,101,115,32,99,97,112, + 97,98,108,101,32,111,102,10,32,32,32,32,32,32,32,32, + 108,111,97,100,105,110,103,32,116,104,101,32,109,101,116,97, + 100,97,116,97,32,102,111,114,32,112,97,99,107,97,103,101, + 115,32,109,97,116,99,104,105,110,103,32,96,96,99,111,110, + 116,101,120,116,46,110,97,109,101,96,96,10,32,32,32,32, + 32,32,32,32,40,111,114,32,97,108,108,32,110,97,109,101, + 115,32,105,102,32,96,96,78,111,110,101,96,96,32,105,110, + 100,105,99,97,116,101,100,41,32,97,108,111,110,103,32,116, + 104,101,32,112,97,116,104,115,32,105,110,32,116,104,101,32, + 108,105,115,116,10,32,32,32,32,32,32,32,32,111,102,32, + 100,105,114,101,99,116,111,114,105,101,115,32,96,96,99,111, + 110,116,101,120,116,46,112,97,116,104,96,96,46,10,32,32, + 32,32,32,32,32,32,114,73,0,0,0,41,1,218,18,77, + 101,116,97,100,97,116,97,80,97,116,104,70,105,110,100,101, + 114,41,3,90,18,105,109,112,111,114,116,108,105,98,46,109, + 101,116,97,100,97,116,97,114,59,1,0,0,218,18,102,105, + 110,100,95,100,105,115,116,114,105,98,117,116,105,111,110,115, + 41,4,114,193,0,0,0,114,119,0,0,0,114,120,0,0, + 0,114,59,1,0,0,114,5,0,0,0,114,5,0,0,0, + 114,8,0,0,0,114,60,1,0,0,98,5,0,0,115,4, + 0,0,0,0,10,12,1,122,29,80,97,116,104,70,105,110, + 100,101,114,46,102,105,110,100,95,100,105,115,116,114,105,98, + 117,116,105,111,110,115,41,1,78,41,2,78,78,41,1,78, + 41,13,114,125,0,0,0,114,124,0,0,0,114,126,0,0, + 0,114,127,0,0,0,114,207,0,0,0,114,46,1,0,0, + 114,52,1,0,0,114,54,1,0,0,114,55,1,0,0,114, + 58,1,0,0,114,203,0,0,0,114,206,0,0,0,114,60, + 1,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,114,45,1,0,0,221,4,0,0, + 115,34,0,0,0,8,2,4,2,2,1,10,9,2,1,10, + 12,2,1,10,21,2,1,10,14,2,1,12,31,2,1,12, + 23,2,1,12,12,2,1,114,45,1,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,64,0,0,0,115,90,0,0,0,101,0,90,1,100,0, + 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4, + 100,5,132,0,90,5,101,6,90,7,100,6,100,7,132,0, + 90,8,100,8,100,9,132,0,90,9,100,19,100,11,100,12, + 132,1,90,10,100,13,100,14,132,0,90,11,101,12,100,15, + 100,16,132,0,131,1,90,13,100,17,100,18,132,0,90,14, + 100,10,83,0,41,20,218,10,70,105,108,101,70,105,110,100, + 101,114,122,172,70,105,108,101,45,98,97,115,101,100,32,102, + 105,110,100,101,114,46,10,10,32,32,32,32,73,110,116,101, + 114,97,99,116,105,111,110,115,32,119,105,116,104,32,116,104, + 101,32,102,105,108,101,32,115,121,115,116,101,109,32,97,114, + 101,32,99,97,99,104,101,100,32,102,111,114,32,112,101,114, + 102,111,114,109,97,110,99,101,44,32,98,101,105,110,103,10, + 32,32,32,32,114,101,102,114,101,115,104,101,100,32,119,104, + 101,110,32,116,104,101,32,100,105,114,101,99,116,111,114,121, + 32,116,104,101,32,102,105,110,100,101,114,32,105,115,32,104, + 97,110,100,108,105,110,103,32,104,97,115,32,98,101,101,110, + 32,109,111,100,105,102,105,101,100,46,10,10,32,32,32,32, + 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,6,0,0,0,7,0,0,0,115,84,0,0,0,103,0, + 125,3,124,2,68,0,93,32,92,2,137,0,125,4,124,3, + 160,0,135,0,102,1,100,1,100,2,132,8,124,4,68,0, + 131,1,161,1,1,0,113,8,124,3,124,0,95,1,124,1, + 112,54,100,3,124,0,95,2,100,4,124,0,95,3,116,4, + 131,0,124,0,95,5,116,4,131,0,124,0,95,6,100,5, + 83,0,41,6,122,154,73,110,105,116,105,97,108,105,122,101, + 32,119,105,116,104,32,116,104,101,32,112,97,116,104,32,116, + 111,32,115,101,97,114,99,104,32,111,110,32,97,110,100,32, + 97,32,118,97,114,105,97,98,108,101,32,110,117,109,98,101, + 114,32,111,102,10,32,32,32,32,32,32,32,32,50,45,116, + 117,112,108,101,115,32,99,111,110,116,97,105,110,105,110,103, + 32,116,104,101,32,108,111,97,100,101,114,32,97,110,100,32, + 116,104,101,32,102,105,108,101,32,115,117,102,102,105,120,101, + 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, + 32,32,32,32,32,114,101,99,111,103,110,105,122,101,115,46, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,3,0,0,0,51,0,0,0,115,22,0,0,0,124,0, + 93,14,125,1,124,1,136,0,102,2,86,0,1,0,113,2, + 100,0,83,0,114,109,0,0,0,114,5,0,0,0,114,16, + 1,0,0,169,1,114,140,0,0,0,114,5,0,0,0,114, + 8,0,0,0,114,19,1,0,0,127,5,0,0,243,0,0, + 0,0,122,38,70,105,108,101,70,105,110,100,101,114,46,95, + 95,105,110,105,116,95,95,46,60,108,111,99,97,108,115,62, + 46,60,103,101,110,101,120,112,114,62,114,71,0,0,0,114, + 104,0,0,0,78,41,7,114,167,0,0,0,218,8,95,108, + 111,97,100,101,114,115,114,44,0,0,0,218,11,95,112,97, + 116,104,95,109,116,105,109,101,218,3,115,101,116,218,11,95, + 112,97,116,104,95,99,97,99,104,101,218,19,95,114,101,108, + 97,120,101,100,95,112,97,116,104,95,99,97,99,104,101,41, + 5,114,118,0,0,0,114,44,0,0,0,218,14,108,111,97, + 100,101,114,95,100,101,116,97,105,108,115,90,7,108,111,97, + 100,101,114,115,114,189,0,0,0,114,5,0,0,0,114,62, + 1,0,0,114,8,0,0,0,114,209,0,0,0,121,5,0, + 0,115,16,0,0,0,0,4,4,1,12,1,26,1,6,2, + 10,1,6,1,8,1,122,19,70,105,108,101,70,105,110,100, + 101,114,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, + 67,0,0,0,115,10,0,0,0,100,1,124,0,95,0,100, + 2,83,0,41,3,122,31,73,110,118,97,108,105,100,97,116, + 101,32,116,104,101,32,100,105,114,101,99,116,111,114,121,32, + 109,116,105,109,101,46,114,104,0,0,0,78,41,1,114,65, + 1,0,0,114,246,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,114,46,1,0,0,135,5,0,0, + 115,2,0,0,0,0,2,122,28,70,105,108,101,70,105,110, + 100,101,114,46,105,110,118,97,108,105,100,97,116,101,95,99, + 97,99,104,101,115,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,42, + 0,0,0,124,0,160,0,124,1,161,1,125,2,124,2,100, + 1,117,0,114,26,100,1,103,0,102,2,83,0,124,2,106, + 1,124,2,106,2,112,38,103,0,102,2,83,0,41,2,122, + 197,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108, + 111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,44,32, + 111,114,32,116,104,101,32,110,97,109,101,115,112,97,99,101, + 10,32,32,32,32,32,32,32,32,112,97,99,107,97,103,101, + 32,112,111,114,116,105,111,110,115,46,32,82,101,116,117,114, + 110,115,32,40,108,111,97,100,101,114,44,32,108,105,115,116, + 45,111,102,45,112,111,114,116,105,111,110,115,41,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116, + 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, + 32,32,32,32,32,32,78,41,3,114,203,0,0,0,114,140, + 0,0,0,114,178,0,0,0,41,3,114,118,0,0,0,114, + 139,0,0,0,114,187,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,8,0,0,0,114,137,0,0,0,141,5,0, + 0,115,8,0,0,0,0,7,10,1,8,1,8,1,122,22, + 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, + 108,111,97,100,101,114,99,6,0,0,0,0,0,0,0,0, + 0,0,0,7,0,0,0,6,0,0,0,67,0,0,0,115, + 26,0,0,0,124,1,124,2,124,3,131,2,125,6,116,0, + 124,2,124,3,124,6,124,4,100,1,141,4,83,0,41,2, + 78,114,177,0,0,0,41,1,114,190,0,0,0,41,7,114, + 118,0,0,0,114,188,0,0,0,114,139,0,0,0,114,44, + 0,0,0,90,4,115,109,115,108,114,202,0,0,0,114,140, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,8,0, + 0,0,114,58,1,0,0,153,5,0,0,115,8,0,0,0, + 0,1,10,1,8,1,2,255,122,20,70,105,108,101,70,105, + 110,100,101,114,46,95,103,101,116,95,115,112,101,99,78,99, + 3,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0, + 8,0,0,0,67,0,0,0,115,96,1,0,0,100,1,125, + 3,124,1,160,0,100,2,161,1,100,3,25,0,125,4,122, + 24,116,1,124,0,106,2,112,34,116,3,160,4,161,0,131, + 1,106,5,125,5,87,0,110,22,4,0,116,6,121,64,1, + 0,1,0,1,0,100,4,125,5,89,0,110,2,48,0,124, + 5,124,0,106,7,107,3,114,90,124,0,160,8,161,0,1, + 0,124,5,124,0,95,7,116,9,131,0,114,112,124,0,106, + 10,125,6,124,4,160,11,161,0,125,7,110,10,124,0,106, + 12,125,6,124,4,125,7,124,7,124,6,118,0,114,216,116, + 13,124,0,106,2,124,4,131,2,125,8,124,0,106,14,68, + 0,93,58,92,2,125,9,125,10,100,5,124,9,23,0,125, + 11,116,13,124,8,124,11,131,2,125,12,116,15,124,12,131, + 1,114,148,124,0,160,16,124,10,124,1,124,12,124,8,103, + 1,124,2,161,5,2,0,1,0,83,0,113,148,116,17,124, + 8,131,1,125,3,124,0,106,14,68,0,93,82,92,2,125, + 9,125,10,116,13,124,0,106,2,124,4,124,9,23,0,131, + 2,125,12,116,18,106,19,100,6,124,12,100,3,100,7,141, + 3,1,0,124,7,124,9,23,0,124,6,118,0,114,222,116, + 15,124,12,131,1,114,222,124,0,160,16,124,10,124,1,124, + 12,100,8,124,2,161,5,2,0,1,0,83,0,113,222,124, + 3,144,1,114,92,116,18,160,19,100,9,124,8,161,2,1, + 0,116,18,160,20,124,1,100,8,161,2,125,13,124,8,103, + 1,124,13,95,21,124,13,83,0,100,8,83,0,41,10,122, + 111,84,114,121,32,116,111,32,102,105,110,100,32,97,32,115, + 112,101,99,32,102,111,114,32,116,104,101,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,32,32,32,32,82,101,116,117,114,110,115,32,116, + 104,101,32,109,97,116,99,104,105,110,103,32,115,112,101,99, + 44,32,111,114,32,78,111,110,101,32,105,102,32,110,111,116, + 32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,32, + 70,114,71,0,0,0,114,28,0,0,0,114,104,0,0,0, + 114,209,0,0,0,122,9,116,114,121,105,110,103,32,123,125, + 41,1,90,9,118,101,114,98,111,115,105,116,121,78,122,25, + 112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,97, + 99,101,32,102,111,114,32,123,125,41,22,114,41,0,0,0, + 114,49,0,0,0,114,44,0,0,0,114,4,0,0,0,114, + 55,0,0,0,114,10,1,0,0,114,50,0,0,0,114,65, + 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101, + 114,9,0,0,0,114,68,1,0,0,114,105,0,0,0,114, + 67,1,0,0,114,38,0,0,0,114,64,1,0,0,114,54, + 0,0,0,114,58,1,0,0,114,56,0,0,0,114,134,0, + 0,0,114,149,0,0,0,114,183,0,0,0,114,178,0,0, + 0,41,14,114,118,0,0,0,114,139,0,0,0,114,202,0, + 0,0,90,12,105,115,95,110,97,109,101,115,112,97,99,101, + 90,11,116,97,105,108,95,109,111,100,117,108,101,114,169,0, + 0,0,90,5,99,97,99,104,101,90,12,99,97,99,104,101, + 95,109,111,100,117,108,101,90,9,98,97,115,101,95,112,97, + 116,104,114,17,1,0,0,114,188,0,0,0,90,13,105,110, + 105,116,95,102,105,108,101,110,97,109,101,90,9,102,117,108, + 108,95,112,97,116,104,114,187,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,8,0,0,0,114,203,0,0,0,158, + 5,0,0,115,72,0,0,0,0,5,4,1,14,1,2,1, + 24,1,12,1,10,1,10,1,8,1,6,2,6,1,6,1, + 10,2,6,1,4,2,8,1,12,1,14,1,8,1,10,1, + 8,1,26,4,8,2,14,1,16,1,16,1,12,1,8,1, + 10,1,4,255,10,2,6,1,12,1,12,1,8,1,4,1, + 122,20,70,105,108,101,70,105,110,100,101,114,46,102,105,110, + 100,95,115,112,101,99,99,1,0,0,0,0,0,0,0,0, + 0,0,0,9,0,0,0,10,0,0,0,67,0,0,0,115, + 188,0,0,0,124,0,106,0,125,1,122,22,116,1,160,2, + 124,1,112,22,116,1,160,3,161,0,161,1,125,2,87,0, + 110,28,4,0,116,4,116,5,116,6,102,3,121,56,1,0, + 1,0,1,0,103,0,125,2,89,0,110,2,48,0,116,7, + 106,8,160,9,100,1,161,1,115,82,116,10,124,2,131,1, + 124,0,95,11,110,74,116,10,131,0,125,3,124,2,68,0, + 93,56,125,4,124,4,160,12,100,2,161,1,92,3,125,5, + 125,6,125,7,124,6,114,134,100,3,160,13,124,5,124,7, + 160,14,161,0,161,2,125,8,110,4,124,5,125,8,124,3, + 160,15,124,8,161,1,1,0,113,92,124,3,124,0,95,11, + 116,7,106,8,160,9,116,16,161,1,114,184,100,4,100,5, + 132,0,124,2,68,0,131,1,124,0,95,17,100,6,83,0, + 41,7,122,68,70,105,108,108,32,116,104,101,32,99,97,99, + 104,101,32,111,102,32,112,111,116,101,110,116,105,97,108,32, + 109,111,100,117,108,101,115,32,97,110,100,32,112,97,99,107, + 97,103,101,115,32,102,111,114,32,116,104,105,115,32,100,105, + 114,101,99,116,111,114,121,46,114,0,0,0,0,114,71,0, + 0,0,114,61,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,4,0,0,0,83,0,0,0, + 115,20,0,0,0,104,0,124,0,93,12,125,1,124,1,160, + 0,161,0,146,2,113,4,83,0,114,5,0,0,0,41,1, + 114,105,0,0,0,41,2,114,32,0,0,0,90,2,102,110, 114,5,0,0,0,114,5,0,0,0,114,8,0,0,0,218, - 6,95,115,101,116,117,112,39,6,0,0,115,70,0,0,0, - 0,8,4,1,6,1,6,2,10,3,22,1,12,2,22,1, - 8,1,10,1,10,1,6,2,2,1,10,1,10,1,12,1, - 12,2,8,2,12,1,12,1,18,1,22,3,8,1,10,1, - 10,1,8,1,12,1,12,2,10,1,16,3,14,1,14,1, - 10,1,10,1,10,1,114,89,1,0,0,99,1,0,0,0, + 9,60,115,101,116,99,111,109,112,62,235,5,0,0,114,63, + 1,0,0,122,41,70,105,108,101,70,105,110,100,101,114,46, + 95,102,105,108,108,95,99,97,99,104,101,46,60,108,111,99, + 97,108,115,62,46,60,115,101,116,99,111,109,112,62,78,41, + 18,114,44,0,0,0,114,4,0,0,0,114,7,1,0,0, + 114,55,0,0,0,114,3,1,0,0,218,15,80,101,114,109, + 105,115,115,105,111,110,69,114,114,111,114,218,18,78,111,116, + 65,68,105,114,101,99,116,111,114,121,69,114,114,111,114,114, + 1,0,0,0,114,10,0,0,0,114,11,0,0,0,114,66, + 1,0,0,114,67,1,0,0,114,100,0,0,0,114,62,0, + 0,0,114,105,0,0,0,218,3,97,100,100,114,12,0,0, + 0,114,68,1,0,0,41,9,114,118,0,0,0,114,44,0, + 0,0,114,8,1,0,0,90,21,108,111,119,101,114,95,115, + 117,102,102,105,120,95,99,111,110,116,101,110,116,115,114,41, + 1,0,0,114,116,0,0,0,114,29,1,0,0,114,17,1, + 0,0,90,8,110,101,119,95,110,97,109,101,114,5,0,0, + 0,114,5,0,0,0,114,8,0,0,0,114,70,1,0,0, + 206,5,0,0,115,34,0,0,0,0,2,6,1,2,1,22, + 1,18,3,10,3,12,1,12,7,6,1,8,1,16,1,4, + 1,18,2,4,1,12,1,6,1,12,1,122,22,70,105,108, + 101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97, + 99,104,101,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,7,0,0,0,115,18,0,0, + 0,135,0,135,1,102,2,100,1,100,2,132,8,125,2,124, + 2,83,0,41,3,97,20,1,0,0,65,32,99,108,97,115, + 115,32,109,101,116,104,111,100,32,119,104,105,99,104,32,114, + 101,116,117,114,110,115,32,97,32,99,108,111,115,117,114,101, + 32,116,111,32,117,115,101,32,111,110,32,115,121,115,46,112, + 97,116,104,95,104,111,111,107,10,32,32,32,32,32,32,32, + 32,119,104,105,99,104,32,119,105,108,108,32,114,101,116,117, + 114,110,32,97,110,32,105,110,115,116,97,110,99,101,32,117, + 115,105,110,103,32,116,104,101,32,115,112,101,99,105,102,105, + 101,100,32,108,111,97,100,101,114,115,32,97,110,100,32,116, + 104,101,32,112,97,116,104,10,32,32,32,32,32,32,32,32, + 99,97,108,108,101,100,32,111,110,32,116,104,101,32,99,108, + 111,115,117,114,101,46,10,10,32,32,32,32,32,32,32,32, + 73,102,32,116,104,101,32,112,97,116,104,32,99,97,108,108, + 101,100,32,111,110,32,116,104,101,32,99,108,111,115,117,114, + 101,32,105,115,32,110,111,116,32,97,32,100,105,114,101,99, + 116,111,114,121,44,32,73,109,112,111,114,116,69,114,114,111, + 114,32,105,115,10,32,32,32,32,32,32,32,32,114,97,105, + 115,101,100,46,10,10,32,32,32,32,32,32,32,32,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, + 0,0,0,19,0,0,0,115,36,0,0,0,116,0,124,0, + 131,1,115,20,116,1,100,1,124,0,100,2,141,2,130,1, + 136,0,124,0,103,1,136,1,162,1,82,0,142,0,83,0, + 41,3,122,45,80,97,116,104,32,104,111,111,107,32,102,111, + 114,32,105,109,112,111,114,116,108,105,98,46,109,97,99,104, + 105,110,101,114,121,46,70,105,108,101,70,105,110,100,101,114, + 46,122,30,111,110,108,121,32,100,105,114,101,99,116,111,114, + 105,101,115,32,97,114,101,32,115,117,112,112,111,114,116,101, + 100,114,48,0,0,0,41,2,114,56,0,0,0,114,117,0, + 0,0,114,48,0,0,0,169,2,114,193,0,0,0,114,69, + 1,0,0,114,5,0,0,0,114,8,0,0,0,218,24,112, + 97,116,104,95,104,111,111,107,95,102,111,114,95,70,105,108, + 101,70,105,110,100,101,114,247,5,0,0,115,6,0,0,0, + 0,2,8,1,12,1,122,54,70,105,108,101,70,105,110,100, + 101,114,46,112,97,116,104,95,104,111,111,107,46,60,108,111, + 99,97,108,115,62,46,112,97,116,104,95,104,111,111,107,95, + 102,111,114,95,70,105,108,101,70,105,110,100,101,114,114,5, + 0,0,0,41,3,114,193,0,0,0,114,69,1,0,0,114, + 76,1,0,0,114,5,0,0,0,114,75,1,0,0,114,8, + 0,0,0,218,9,112,97,116,104,95,104,111,111,107,237,5, + 0,0,115,4,0,0,0,0,10,14,6,122,20,70,105,108, + 101,70,105,110,100,101,114,46,112,97,116,104,95,104,111,111, + 107,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,3,0,0,0,67,0,0,0,115,12,0,0,0,100, + 1,160,0,124,0,106,1,161,1,83,0,41,2,78,122,16, + 70,105,108,101,70,105,110,100,101,114,40,123,33,114,125,41, + 41,2,114,62,0,0,0,114,44,0,0,0,114,246,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,8,0,0,0, + 114,39,1,0,0,255,5,0,0,115,2,0,0,0,0,1, + 122,19,70,105,108,101,70,105,110,100,101,114,46,95,95,114, + 101,112,114,95,95,41,1,78,41,15,114,125,0,0,0,114, + 124,0,0,0,114,126,0,0,0,114,127,0,0,0,114,209, + 0,0,0,114,46,1,0,0,114,143,0,0,0,114,206,0, + 0,0,114,137,0,0,0,114,58,1,0,0,114,203,0,0, + 0,114,70,1,0,0,114,207,0,0,0,114,77,1,0,0, + 114,39,1,0,0,114,5,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,8,0,0,0,114,61,1,0,0,112,5, + 0,0,115,22,0,0,0,8,2,4,7,8,14,8,4,4, + 2,8,12,8,5,10,48,8,31,2,1,10,17,114,61,1, + 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,6, + 0,0,0,8,0,0,0,67,0,0,0,115,144,0,0,0, + 124,0,160,0,100,1,161,1,125,4,124,0,160,0,100,2, + 161,1,125,5,124,4,115,66,124,5,114,36,124,5,106,1, + 125,4,110,30,124,2,124,3,107,2,114,56,116,2,124,1, + 124,2,131,2,125,4,110,10,116,3,124,1,124,2,131,2, + 125,4,124,5,115,84,116,4,124,1,124,2,124,4,100,3, + 141,3,125,5,122,36,124,5,124,0,100,2,60,0,124,4, + 124,0,100,1,60,0,124,2,124,0,100,4,60,0,124,3, + 124,0,100,5,60,0,87,0,110,18,4,0,116,5,121,138, + 1,0,1,0,1,0,89,0,110,2,48,0,100,0,83,0, + 41,6,78,218,10,95,95,108,111,97,100,101,114,95,95,218, + 8,95,95,115,112,101,99,95,95,114,62,1,0,0,90,8, + 95,95,102,105,108,101,95,95,90,10,95,95,99,97,99,104, + 101,100,95,95,41,6,218,3,103,101,116,114,140,0,0,0, + 114,15,1,0,0,114,9,1,0,0,114,190,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,41,6,90,2,110,115, + 114,116,0,0,0,90,8,112,97,116,104,110,97,109,101,90, + 9,99,112,97,116,104,110,97,109,101,114,140,0,0,0,114, + 187,0,0,0,114,5,0,0,0,114,5,0,0,0,114,8, + 0,0,0,218,14,95,102,105,120,95,117,112,95,109,111,100, + 117,108,101,5,6,0,0,115,34,0,0,0,0,2,10,1, + 10,1,4,1,4,1,8,1,8,1,12,2,10,1,4,1, + 14,1,2,1,8,1,8,1,8,1,12,1,12,2,114,82, + 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,67,0,0,0,115,38,0,0, + 0,116,0,116,1,160,2,161,0,102,2,125,0,116,3,116, + 4,102,2,125,1,116,5,116,6,102,2,125,2,124,0,124, + 1,124,2,103,3,83,0,41,1,122,95,82,101,116,117,114, + 110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,108, + 101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,108, + 111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,99, + 104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,108, + 101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,105, + 120,101,115,41,46,10,32,32,32,32,41,7,114,252,0,0, + 0,114,163,0,0,0,218,18,101,120,116,101,110,115,105,111, + 110,95,115,117,102,102,105,120,101,115,114,9,1,0,0,114, + 101,0,0,0,114,15,1,0,0,114,88,0,0,0,41,3, + 90,10,101,120,116,101,110,115,105,111,110,115,90,6,115,111, + 117,114,99,101,90,8,98,121,116,101,99,111,100,101,114,5, + 0,0,0,114,5,0,0,0,114,8,0,0,0,114,184,0, + 0,0,28,6,0,0,115,8,0,0,0,0,5,12,1,8, + 1,8,1,114,184,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,10,0,0,0,9,0,0,0,67,0,0, + 0,115,142,1,0,0,124,0,97,0,116,0,106,1,97,1, + 116,0,106,2,97,2,116,1,106,3,116,4,25,0,125,1, + 100,1,100,2,103,1,102,2,100,3,100,4,100,2,103,2, + 102,2,100,5,100,2,100,4,103,2,102,2,102,3,125,2, + 124,2,68,0,93,108,92,2,125,3,125,4,116,5,100,6, + 100,7,132,0,124,4,68,0,131,1,131,1,115,92,74,0, + 130,1,124,4,100,8,25,0,125,5,124,3,116,1,106,3, + 118,0,114,126,116,1,106,3,124,3,25,0,125,6,1,0, + 113,180,113,62,122,20,116,0,160,6,124,3,161,1,125,6, + 87,0,1,0,113,180,87,0,113,62,4,0,116,7,121,168, + 1,0,1,0,1,0,89,0,113,62,89,0,113,62,48,0, + 113,62,116,7,100,9,131,1,130,1,116,8,124,1,100,10, + 124,6,131,3,1,0,116,8,124,1,100,11,124,5,131,3, + 1,0,116,8,124,1,100,12,100,13,160,9,124,4,161,1, + 131,3,1,0,116,8,124,1,100,14,100,15,100,16,132,0, + 124,4,68,0,131,1,131,3,1,0,103,0,100,17,162,1, + 125,7,124,3,100,3,107,2,144,1,114,16,124,7,160,10, + 100,18,161,1,1,0,124,7,68,0,93,52,125,8,124,8, + 116,1,106,3,118,1,144,1,114,48,116,0,160,6,124,8, + 161,1,125,9,110,10,116,1,106,3,124,8,25,0,125,9, + 116,8,124,1,124,8,124,9,131,3,1,0,144,1,113,20, + 116,8,124,1,100,19,116,11,131,0,131,3,1,0,116,12, + 160,13,116,2,160,14,161,0,161,1,1,0,124,3,100,3, + 107,2,144,1,114,138,116,15,160,10,100,20,161,1,1,0, + 100,21,116,12,118,0,144,1,114,138,100,22,116,16,95,17, + 100,23,83,0,41,24,122,205,83,101,116,117,112,32,116,104, + 101,32,112,97,116,104,45,98,97,115,101,100,32,105,109,112, + 111,114,116,101,114,115,32,102,111,114,32,105,109,112,111,114, + 116,108,105,98,32,98,121,32,105,109,112,111,114,116,105,110, + 103,32,110,101,101,100,101,100,10,32,32,32,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,115,32,97,110, + 100,32,105,110,106,101,99,116,105,110,103,32,116,104,101,109, + 32,105,110,116,111,32,116,104,101,32,103,108,111,98,97,108, + 32,110,97,109,101,115,112,97,99,101,46,10,10,32,32,32, + 32,79,116,104,101,114,32,99,111,109,112,111,110,101,110,116, + 115,32,97,114,101,32,101,120,116,114,97,99,116,101,100,32, + 102,114,111,109,32,116,104,101,32,99,111,114,101,32,98,111, + 111,116,115,116,114,97,112,32,109,111,100,117,108,101,46,10, + 10,32,32,32,32,90,5,112,111,115,105,120,250,1,47,90, + 2,110,116,250,1,92,90,3,111,115,50,99,1,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 115,0,0,0,115,26,0,0,0,124,0,93,18,125,1,116, + 0,124,1,131,1,100,0,107,2,86,0,1,0,113,2,100, + 1,83,0,41,2,114,39,0,0,0,78,41,1,114,23,0, + 0,0,41,2,114,32,0,0,0,114,94,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,8,0,0,0,114,19,1, + 0,0,57,6,0,0,114,63,1,0,0,122,25,95,115,101, + 116,117,112,46,60,108,111,99,97,108,115,62,46,60,103,101, + 110,101,120,112,114,62,114,73,0,0,0,122,37,105,109,112, + 111,114,116,108,105,98,32,114,101,113,117,105,114,101,115,32, + 112,111,115,105,120,32,111,114,32,110,116,32,111,114,32,111, + 115,50,114,4,0,0,0,114,35,0,0,0,114,31,0,0, + 0,114,40,0,0,0,114,58,0,0,0,99,1,0,0,0, 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, - 67,0,0,0,115,50,0,0,0,116,0,124,0,131,1,1, - 0,116,1,131,0,125,1,116,2,106,3,160,4,116,5,106, - 6,124,1,142,0,103,1,161,1,1,0,116,2,106,7,160, - 8,116,9,161,1,1,0,100,1,83,0,41,2,122,41,73, - 110,115,116,97,108,108,32,116,104,101,32,112,97,116,104,45, - 98,97,115,101,100,32,105,109,112,111,114,116,32,99,111,109, - 112,111,110,101,110,116,115,46,78,41,10,114,89,1,0,0, - 114,184,0,0,0,114,1,0,0,0,114,51,1,0,0,114, - 167,0,0,0,114,61,1,0,0,114,77,1,0,0,218,9, - 109,101,116,97,95,112,97,116,104,114,186,0,0,0,114,45, - 1,0,0,41,2,114,88,1,0,0,90,17,115,117,112,112, - 111,114,116,101,100,95,108,111,97,100,101,114,115,114,5,0, - 0,0,114,5,0,0,0,114,8,0,0,0,218,8,95,105, - 110,115,116,97,108,108,96,6,0,0,115,8,0,0,0,0, - 2,8,1,6,1,20,1,114,91,1,0,0,41,1,114,60, - 0,0,0,41,1,78,41,3,78,78,78,41,2,114,73,0, - 0,0,114,73,0,0,0,41,1,84,41,1,78,41,1,78, - 41,63,114,127,0,0,0,114,13,0,0,0,90,37,95,67, - 65,83,69,95,73,78,83,69,78,83,73,84,73,86,69,95, - 80,76,65,84,70,79,82,77,83,95,66,89,84,69,83,95, - 75,69,89,114,12,0,0,0,114,14,0,0,0,114,21,0, - 0,0,114,27,0,0,0,114,29,0,0,0,114,38,0,0, - 0,114,47,0,0,0,114,49,0,0,0,114,53,0,0,0, - 114,54,0,0,0,114,56,0,0,0,114,59,0,0,0,114, - 69,0,0,0,218,4,116,121,112,101,218,8,95,95,99,111, - 100,101,95,95,114,162,0,0,0,114,19,0,0,0,114,148, - 0,0,0,114,18,0,0,0,114,24,0,0,0,114,236,0, - 0,0,114,91,0,0,0,114,87,0,0,0,114,101,0,0, - 0,114,88,0,0,0,90,23,68,69,66,85,71,95,66,89, - 84,69,67,79,68,69,95,83,85,70,70,73,88,69,83,90, - 27,79,80,84,73,77,73,90,69,68,95,66,89,84,69,67, - 79,68,69,95,83,85,70,70,73,88,69,83,114,97,0,0, - 0,114,102,0,0,0,114,108,0,0,0,114,112,0,0,0, - 114,114,0,0,0,114,136,0,0,0,114,143,0,0,0,114, - 152,0,0,0,114,156,0,0,0,114,158,0,0,0,114,165, - 0,0,0,114,170,0,0,0,114,171,0,0,0,114,176,0, - 0,0,218,6,111,98,106,101,99,116,114,185,0,0,0,114, - 190,0,0,0,114,191,0,0,0,114,208,0,0,0,114,221, - 0,0,0,114,239,0,0,0,114,9,1,0,0,114,15,1, - 0,0,114,21,1,0,0,114,252,0,0,0,114,22,1,0, - 0,114,43,1,0,0,114,45,1,0,0,114,61,1,0,0, - 114,82,1,0,0,114,184,0,0,0,114,89,1,0,0,114, - 91,1,0,0,114,5,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,8,0,0,0,218,8,60,109,111,100,117,108, - 101,62,1,0,0,0,115,126,0,0,0,4,22,4,1,4, - 1,2,1,2,255,4,4,8,17,8,5,8,5,8,6,8, - 6,8,12,8,10,8,9,8,5,8,7,8,9,10,22,10, - 127,0,20,16,1,12,2,4,1,4,2,6,2,6,2,8, - 2,16,71,8,40,8,19,8,12,8,12,8,28,8,17,8, - 33,8,28,8,24,10,13,10,10,10,11,8,14,6,3,4, - 1,2,255,12,68,14,64,14,29,16,127,0,17,14,72,18, - 45,18,26,4,3,18,53,14,63,14,42,14,127,0,20,14, - 127,0,22,10,23,8,11,8,57, + 83,0,0,0,115,22,0,0,0,104,0,124,0,93,14,125, + 1,100,0,124,1,155,0,157,2,146,2,113,4,83,0,41, + 1,114,74,0,0,0,114,5,0,0,0,41,2,114,32,0, + 0,0,218,1,115,114,5,0,0,0,114,5,0,0,0,114, + 8,0,0,0,114,71,1,0,0,74,6,0,0,114,63,1, + 0,0,122,25,95,115,101,116,117,112,46,60,108,111,99,97, + 108,115,62,46,60,115,101,116,99,111,109,112,62,41,3,114, + 64,0,0,0,114,75,0,0,0,114,160,0,0,0,114,192, + 0,0,0,114,9,0,0,0,122,4,46,112,121,119,122,6, + 95,100,46,112,121,100,84,78,41,18,114,134,0,0,0,114, + 1,0,0,0,114,163,0,0,0,114,31,1,0,0,114,125, + 0,0,0,218,3,97,108,108,90,18,95,98,117,105,108,116, + 105,110,95,102,114,111,109,95,110,97,109,101,114,117,0,0, + 0,114,129,0,0,0,114,36,0,0,0,114,186,0,0,0, + 114,14,0,0,0,114,21,1,0,0,114,167,0,0,0,114, + 83,1,0,0,114,101,0,0,0,114,191,0,0,0,114,195, + 0,0,0,41,10,218,17,95,98,111,111,116,115,116,114,97, + 112,95,109,111,100,117,108,101,90,11,115,101,108,102,95,109, + 111,100,117,108,101,90,10,111,115,95,100,101,116,97,105,108, + 115,90,10,98,117,105,108,116,105,110,95,111,115,114,31,0, + 0,0,114,35,0,0,0,90,9,111,115,95,109,111,100,117, + 108,101,90,13,98,117,105,108,116,105,110,95,110,97,109,101, + 115,90,12,98,117,105,108,116,105,110,95,110,97,109,101,90, + 14,98,117,105,108,116,105,110,95,109,111,100,117,108,101,114, + 5,0,0,0,114,5,0,0,0,114,8,0,0,0,218,6, + 95,115,101,116,117,112,39,6,0,0,115,70,0,0,0,0, + 8,4,1,6,1,6,2,10,3,32,1,12,2,22,1,8, + 1,10,1,10,1,6,2,2,1,10,1,10,1,12,1,12, + 2,8,2,12,1,12,1,18,1,22,3,8,1,10,1,10, + 1,8,1,12,1,12,2,10,1,16,3,14,1,14,1,10, + 1,10,1,10,1,114,89,1,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67, + 0,0,0,115,50,0,0,0,116,0,124,0,131,1,1,0, + 116,1,131,0,125,1,116,2,106,3,160,4,116,5,106,6, + 124,1,142,0,103,1,161,1,1,0,116,2,106,7,160,8, + 116,9,161,1,1,0,100,1,83,0,41,2,122,41,73,110, + 115,116,97,108,108,32,116,104,101,32,112,97,116,104,45,98, + 97,115,101,100,32,105,109,112,111,114,116,32,99,111,109,112, + 111,110,101,110,116,115,46,78,41,10,114,89,1,0,0,114, + 184,0,0,0,114,1,0,0,0,114,51,1,0,0,114,167, + 0,0,0,114,61,1,0,0,114,77,1,0,0,218,9,109, + 101,116,97,95,112,97,116,104,114,186,0,0,0,114,45,1, + 0,0,41,2,114,88,1,0,0,90,17,115,117,112,112,111, + 114,116,101,100,95,108,111,97,100,101,114,115,114,5,0,0, + 0,114,5,0,0,0,114,8,0,0,0,218,8,95,105,110, + 115,116,97,108,108,96,6,0,0,115,8,0,0,0,0,2, + 8,1,6,1,20,1,114,91,1,0,0,41,1,114,60,0, + 0,0,41,1,78,41,3,78,78,78,41,2,114,73,0,0, + 0,114,73,0,0,0,41,1,84,41,1,78,41,1,78,41, + 63,114,127,0,0,0,114,13,0,0,0,90,37,95,67,65, + 83,69,95,73,78,83,69,78,83,73,84,73,86,69,95,80, + 76,65,84,70,79,82,77,83,95,66,89,84,69,83,95,75, + 69,89,114,12,0,0,0,114,14,0,0,0,114,21,0,0, + 0,114,27,0,0,0,114,29,0,0,0,114,38,0,0,0, + 114,47,0,0,0,114,49,0,0,0,114,53,0,0,0,114, + 54,0,0,0,114,56,0,0,0,114,59,0,0,0,114,69, + 0,0,0,218,4,116,121,112,101,218,8,95,95,99,111,100, + 101,95,95,114,162,0,0,0,114,19,0,0,0,114,148,0, + 0,0,114,18,0,0,0,114,24,0,0,0,114,236,0,0, + 0,114,91,0,0,0,114,87,0,0,0,114,101,0,0,0, + 114,88,0,0,0,90,23,68,69,66,85,71,95,66,89,84, + 69,67,79,68,69,95,83,85,70,70,73,88,69,83,90,27, + 79,80,84,73,77,73,90,69,68,95,66,89,84,69,67,79, + 68,69,95,83,85,70,70,73,88,69,83,114,97,0,0,0, + 114,102,0,0,0,114,108,0,0,0,114,112,0,0,0,114, + 114,0,0,0,114,136,0,0,0,114,143,0,0,0,114,152, + 0,0,0,114,156,0,0,0,114,158,0,0,0,114,165,0, + 0,0,114,170,0,0,0,114,171,0,0,0,114,176,0,0, + 0,218,6,111,98,106,101,99,116,114,185,0,0,0,114,190, + 0,0,0,114,191,0,0,0,114,208,0,0,0,114,221,0, + 0,0,114,239,0,0,0,114,9,1,0,0,114,15,1,0, + 0,114,21,1,0,0,114,252,0,0,0,114,22,1,0,0, + 114,43,1,0,0,114,45,1,0,0,114,61,1,0,0,114, + 82,1,0,0,114,184,0,0,0,114,89,1,0,0,114,91, + 1,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, + 0,0,114,8,0,0,0,218,8,60,109,111,100,117,108,101, + 62,1,0,0,0,115,126,0,0,0,4,22,4,1,4,1, + 2,1,2,255,4,4,8,17,8,5,8,5,8,6,8,6, + 8,12,8,10,8,9,8,5,8,7,8,9,10,22,10,127, + 0,20,16,1,12,2,4,1,4,2,6,2,6,2,8,2, + 16,71,8,40,8,19,8,12,8,12,8,28,8,17,8,33, + 8,28,8,24,10,13,10,10,10,11,8,14,6,3,4,1, + 2,255,12,68,14,64,14,29,16,127,0,17,14,72,18,45, + 18,26,4,3,18,53,14,63,14,42,14,127,0,20,14,127, + 0,22,10,23,8,11,8,57, }; From 5cd89c324ac6934e2b11c071e126d393ea9f8540 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 26 Mar 2021 13:55:22 +0100 Subject: [PATCH 077/160] make sure freeze_importlib doesn't get built everytime --- Makefile.pre.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index f0ba8d75..257f7ae2 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -737,11 +737,11 @@ Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile -Programs/_freeze_importlib: Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) +Programs/_freeze_importlib$(EXE): Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) .PHONY: regen-importlib -regen-importlib: Programs/_freeze_importlib +regen-importlib: Programs/_freeze_importlib$(EXE) # Regenerate Python/importlib_external.h # from Lib/importlib/_bootstrap_external.py using _freeze_importlib ./Programs/_freeze_importlib importlib._bootstrap_external \ From 32b937011d49dd34d65c7c77ee334a4f6ec26287 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 26 Mar 2021 14:34:34 +0100 Subject: [PATCH 078/160] fixe some merge issues --- Lib/distutils/ccompiler.py | 2 ++ Lib/distutils/command/install.py | 2 +- Lib/subprocess.py | 4 ++-- setup.py | 8 ++++---- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py index 166eb328..312e3167 100644 --- a/Lib/distutils/ccompiler.py +++ b/Lib/distutils/ccompiler.py @@ -970,6 +970,8 @@ def get_default_compiler(osname=None, platform=None): "Mingw32 port of GNU C Compiler for Win32"), 'bcpp': ('bcppcompiler', 'BCPPCompiler', "Borland C++ Compiler"), + 'emx': ('emxccompiler', 'EMXCCompiler', + "Port of GNU C Compiler for OS/2"), } def show_compilers(): diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py index 3e7e81f1..85d8f984 100644 --- a/Lib/distutils/command/install.py +++ b/Lib/distutils/command/install.py @@ -26,7 +26,7 @@ 'scripts': '$base/Scripts', 'data' : '$base', } -OS2_SCHEME { +OS2_SCHEME = { 'purelib': '$base/lib/python$py_version_short/site-packages', 'platlib': '$base/lib/python$py_version_short/site-packages', 'headers': '$base/include/python$py_version_short/$dist_name', diff --git a/Lib/subprocess.py b/Lib/subprocess.py index e7604efe..1a58cf5a 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -222,7 +222,7 @@ def __repr__(self): return "%s(%d)" % (self.__class__.__name__, int(self)) __del__ = Close -else if not _os2: +elif not _os2: # When select or poll has indicated that the file is writable, # we can write up to _PIPE_BUF bytes without risk of blocking. # POSIX defines PIPE_BUF as >= 512. @@ -2056,7 +2056,7 @@ def _readerthread(file, buffer): self._save_input(input) if self._input: - input_view = memoryview(self._input) + input_view = memoryview(self._input) with _PopenSelector() as selector: if self.stdin and input: diff --git a/setup.py b/setup.py index 86192cea..9f9aee0e 100644 --- a/setup.py +++ b/setup.py @@ -775,10 +775,10 @@ def init_inc_lib_dirs(self): # Check for OS/2 which may have libraries in non-standard locations if OS2: - lib_dirs += ['/@unixroot/usr/lib'] - lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep) - inc_dirs += ['/@unixroot/usr/include'] - inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) + self.lib_dirs += ['/@unixroot/usr/lib'] + self.lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep) + self.inc_dirs += ['/@unixroot/usr/include'] + self.inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb) if HOST_PLATFORM in ['osf1', 'unixware7', 'openunix8']: self.lib_dirs += ['/usr/ccs/lib'] From 347f3537df4e1ea9b88283c6bc62c480fa248a52 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 26 Mar 2021 14:35:11 +0100 Subject: [PATCH 079/160] adapt emxcompiler to python3 --- Lib/distutils/emxccompiler.py | 60 +++++++++++++++-------------------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index 54820cd4..f6eb43f6 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -74,14 +74,14 @@ def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): # gcc requires '.rc' compiled to binary ('.res') files !!! try: self.spawn(["rc", "-r", src]) - except DistutilsExecError, msg: - raise CompileError, msg + except DistutilsExecError as msg: + raise CompileError(msg) else: # for other files use the C-compiler try: self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + extra_postargs) - except DistutilsExecError, msg: - raise CompileError, msg + except DistutilsExecError as msg: + raise CompileError(msg) def link (self, target_desc, @@ -202,9 +202,8 @@ def object_filenames (self, base = os.path.splitdrive(base)[1] # Chop off the drive base = base[os.path.isabs(base):] # If abs, chop off leading / if ext not in (self.src_extensions + self._rc_extensions): - raise UnknownFileError, \ - "unknown file type '%s' (from '%s')" % \ - (ext, src_name) + raise UnknownFileError("unknown file type '%s' (from '%s')" % \ + (ext, src_name)) if strip_dir: base = os.path.basename (base) if ext in self._rc_extensions: @@ -251,15 +250,16 @@ def find_library_file(self, dirs, lib, debug=0): def check_config_h(): - """Check if the current Python installation (specifically, pyconfig.h) - appears amenable to building extensions with GCC. Returns a tuple - (status, details), where 'status' is one of the following constants: - CONFIG_H_OK - all is well, go ahead and compile - CONFIG_H_NOTOK - doesn't look good - CONFIG_H_UNCERTAIN - not sure -- unable to read pyconfig.h + """Check if the current Python installation appears amenable to building + extensions with GCC. + + Returns a tuple (status, details), where 'status' is one of the following + constants: + + - CONFIG_H_OK: all is well, go ahead and compile + - CONFIG_H_NOTOK: doesn't look good + - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h + 'details' is a human-readable string explaining the situation. Note there are two ways to conclude "OK": either 'sys.version' contains @@ -271,36 +271,26 @@ def check_config_h(): # "pyconfig.h" check -- should probably be renamed... from distutils import sysconfig - import string # if sys.version contains GCC then python was compiled with # GCC, and the pyconfig.h file should be OK - if string.find(sys.version,"GCC") >= 0: + if "GCC" in sys.version: return (CONFIG_H_OK, "sys.version mentions 'GCC'") + # let's see if __GNUC__ is mentioned in python.h fn = sysconfig.get_config_h_filename() try: - # It would probably better to read single lines to search. - # But we do this only once, and it is fast enough - f = open(fn) + config_h = open(fn) try: - s = f.read() + if "__GNUC__" in config_h.read(): + return CONFIG_H_OK, "'%s' mentions '__GNUC__'" % fn + else: + return CONFIG_H_NOTOK, "'%s' does not mention '__GNUC__'" % fn finally: - f.close() - - except IOError, exc: - # if we can't read this file, we cannot say it is wrong - # the compiler will complain later about this file as missing + config_h.close() + except OSError as exc: return (CONFIG_H_UNCERTAIN, "couldn't read '%s': %s" % (fn, exc.strerror)) - else: - # "pyconfig.h" contains an "#ifdef __GNUC__" or something similar - if string.find(s,"__GNUC__") >= 0: - return (CONFIG_H_OK, "'%s' mentions '__GNUC__'" % fn) - else: - return (CONFIG_H_NOTOK, "'%s' does not mention '__GNUC__'" % fn) - - def get_versions(): """ Try to find out the versions of gcc and ld. If not possible it returns None for it. From f3f0baf98c77b5d8349fb49290a206b9e695d25a Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 30 Mar 2021 20:17:01 +0100 Subject: [PATCH 080/160] fix find_executable --- Lib/distutils/spawn.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/distutils/spawn.py b/Lib/distutils/spawn.py index 0d1bd039..e818e55c 100644 --- a/Lib/distutils/spawn.py +++ b/Lib/distutils/spawn.py @@ -95,7 +95,7 @@ def find_executable(executable, path=None): os.environ['PATH']. Returns the complete filename or None if not found. """ _, ext = os.path.splitext(executable) - if (sys.platform == 'win32') and (ext != '.exe'): + if (sys.platform == 'win32' or sys.platform.startswith('os2')) and (ext != '.exe'): executable = executable + '.exe' if os.path.isfile(executable): From 4b4ffbefcb5f6d4c0c503d1ad8d7d1bfbaf21fff Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 30 Mar 2021 20:17:51 +0100 Subject: [PATCH 081/160] adjust some bits according to cygwinccompiler --- Lib/distutils/emxccompiler.py | 129 +++++++++++++++++----------------- 1 file changed, 64 insertions(+), 65 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index f6eb43f6..8372542f 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -1,7 +1,7 @@ """distutils.emxccompiler Provides the EMXCCompiler class, a subclass of UnixCCompiler that -handles the EMX port of the GNU C compiler to OS/2. +handles the libc port of the GNU C compiler to OS/2. """ # issues: @@ -10,41 +10,47 @@ # We put export_symbols in a def-file, as though the DLL can have # an arbitrary length name, but truncate the output filename. # -# * only use OMF objects and use LINK386 as the linker (-Zomf) +# * only use OMF objects and use -Zomf for the linker # # * always build for multithreading (-Zmt) as the accompanying OS/2 port # of Python is only distributed with threads enabled. # # tested configurations: # -# * EMX gcc 2.81/EMX 0.9d fix03 +# * gcc version 9.2.0 20190812 (OS/2 RPM build 9.2.0-5.oc00) (GCC) -__revision__ = "$Id$" -import os,sys,copy +import os +import sys +import copy +# something is wrong with subprocess.py !!!!! fix it +# from subprocess import Popen, PIPE +import re + from distutils.ccompiler import gen_preprocess_options, gen_lib_options from distutils.unixccompiler import UnixCCompiler from distutils.file_util import write_file -from distutils.errors import DistutilsExecError, CompileError, UnknownFileError +from distutils.errors import (DistutilsExecError, CCompilerError, + CompileError, UnknownFileError) +from distutils.version import StrictVersion +from distutils.spawn import find_executable from distutils import log class EMXCCompiler (UnixCCompiler): + """ Handles the libc port of the GNU C compiler to OS/2. + """ _rc_extensions = ['.rc', '.RC'] - compiler_type = 'emx' - obj_extension = ".obj" - static_lib_extension = ".lib" + obj_extension = ".o" + static_lib_extension = ".a" shared_lib_extension = ".dll" static_lib_format = "%s%s" shared_lib_format = "%s%s" res_extension = ".res" # compiled resource file exe_extension = ".exe" - def __init__ (self, - verbose=0, - dry_run=0, - force=0): + def __init__(self, verbose=0, dry_run=0, force=0): UnixCCompiler.__init__ (self, verbose, dry_run, force) @@ -53,11 +59,12 @@ def __init__ (self, (status, details)) if status is not CONFIG_H_OK: self.warn( - "Python's pyconfig.h doesn't seem to support your compiler. " + - ("Reason: %s." % details) + - "Compiling may fail because of undefined preprocessor macros.") + "Python's pyconfig.h doesn't seem to support your compiler. " + "Reason: %s. " + "Compiling may fail because of undefined preprocessor macros." + % details) - (self.gcc_version, self.ld_version) = \ + self.gcc_version, self.ld_version = \ get_versions() self.debug_print(self.compiler_type + ": gcc %s, ld %s\n" % (self.gcc_version, @@ -65,11 +72,14 @@ def __init__ (self, # want the gcc library statically linked (so that we don't have # to distribute a version dependent on the compiler we have) - self.dll_libraries=["gcc"] + # self.dll_libraries=["gcc"] + # was removed by the python 3.9 update, as I doupt it makes sense + self.dll_libraries=[] # __init__ () def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + if ext == '.rc': # gcc requires '.rc' compiled to binary ('.res') files !!! try: @@ -83,21 +93,11 @@ def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): except DistutilsExecError as msg: raise CompileError(msg) - def link (self, - target_desc, - objects, - output_filename, - output_dir=None, - libraries=None, - library_dirs=None, - runtime_library_dirs=None, - export_symbols=None, - debug=0, - extra_preargs=None, - extra_postargs=None, - build_temp=None, - target_lang=None): - + def link(self, target_desc, objects, output_filename, output_dir=None, + libraries=None, library_dirs=None, runtime_library_dirs=None, + export_symbols=None, debug=0, extra_preargs=None, + extra_postargs=None, build_temp=None, target_lang=None): + """Link the objects.""" # use separate copies, so we can modify the lists extra_preargs = copy.copy(extra_preargs or []) libraries = copy.copy(libraries or []) @@ -137,6 +137,7 @@ def link (self, def_file = os.path.join(temp_dir, dll_name + ".def") # Generate .def file + # open !!!! add a bldlevel contents = [ "LIBRARY %s INITINSTANCE TERMINSTANCE" % \ pyd_name8, @@ -148,6 +149,7 @@ def link (self, "writing %s" % def_file) # next add options for def-file and to creating import libraries + # for gcc/ld the def-file is specified as any other object files objects.append(def_file) @@ -163,20 +165,14 @@ def link (self, if not debug: extra_preargs.append("-s") - UnixCCompiler.link(self, - target_desc, - objects, - pyd_name, - output_dir, - libraries, - library_dirs, + UnixCCompiler.link(self, target_desc, objects, pyd_name, + output_dir, libraries, library_dirs, runtime_library_dirs, None, # export_symbols, we do this in our def-file - debug, - extra_preargs, - extra_postargs, - build_temp, + debug, extra_preargs, extra_postargs, build_temp, target_lang) + + # open!!! create _dll.a lib eventually # if filename exceed 8.3, create a symlink to 8.3 pyd if len(os.path.basename(output_filename)) > 8+1+3: try: @@ -189,28 +185,27 @@ def link (self, # -- Miscellaneous methods ----------------------------------------- - def object_filenames (self, - source_filenames, - strip_dir=0, - output_dir=''): - # Copied from ccompiler.py, extended to return .res as 'object'-file - # for .rc input file - if output_dir is None: output_dir = '' + def object_filenames(self, source_filenames, strip_dir=0, output_dir=''): + """Adds supports for rc and res files.""" + if output_dir is None: + output_dir = '' obj_names = [] for src_name in source_filenames: - (base, ext) = os.path.splitext (src_name) + base, ext = os.path.splitext(src_name) base = os.path.splitdrive(base)[1] # Chop off the drive base = base[os.path.isabs(base):] # If abs, chop off leading / + log.info("trace %s %s %s" % (base, ext, output_dir)) if ext not in (self.src_extensions + self._rc_extensions): raise UnknownFileError("unknown file type '%s' (from '%s')" % \ (ext, src_name)) if strip_dir: base = os.path.basename (base) if ext in self._rc_extensions: - obj_names.append (os.path.join (output_dir, + # these need to be compiled to object files + obj_names.append (os.path.join(output_dir, base + self.res_extension)) else: - obj_names.append (os.path.join (output_dir, + obj_names.append (os.path.join(output_dir, base + self.obj_extension)) return obj_names @@ -249,7 +244,6 @@ def find_library_file(self, dirs, lib, debug=0): CONFIG_H_UNCERTAIN = "uncertain" def check_config_h(): - """Check if the current Python installation appears amenable to building extensions with GCC. @@ -271,10 +265,11 @@ def check_config_h(): # "pyconfig.h" check -- should probably be renamed... from distutils import sysconfig + # if sys.version contains GCC then python was compiled with # GCC, and the pyconfig.h file should be OK if "GCC" in sys.version: - return (CONFIG_H_OK, "sys.version mentions 'GCC'") + return CONFIG_H_OK, "sys.version mentions 'GCC'" # let's see if __GNUC__ is mentioned in python.h fn = sysconfig.get_config_h_filename() @@ -291,29 +286,33 @@ def check_config_h(): return (CONFIG_H_UNCERTAIN, "couldn't read '%s': %s" % (fn, exc.strerror)) +RE_VERSION = re.compile(br'(\d+\.\d+(\.\d+)*)') + def get_versions(): """ Try to find out the versions of gcc and ld. - If not possible it returns None for it. + If gcc is not found, or the output does not match + `RE_VERSION`, returns None. """ - from distutils.version import StrictVersion - from distutils.spawn import find_executable - import re + + # EMX ld has no way of reporting version number, and we use GCC + # anyway - so we can link OMF DLLs + ld_version = None gcc_exe = find_executable('gcc') if gcc_exe: - out = os.popen(gcc_exe + ' -dumpversion','r') + gcc_version = None + return(gcc_version, ld_version) + # something is wrong with subprocess.py !!!!! fix it + # out = Popen(gcc_exe + ' -dumpversion', shell=True, stdout=PIPE).stdout try: out_string = out.read() finally: out.close() - result = re.search('(\d+\.\d+\.\d+)',out_string) + result = RE_VERSION.search(out_string) if result: gcc_version = StrictVersion(result.group(1)) else: gcc_version = None else: gcc_version = None - # EMX ld has no way of reporting version number, and we use GCC - # anyway - so we can link OMF DLLs - ld_version = None return (gcc_version, ld_version) From 98de90665a0110930c2f76e0a05997ada0e6ad17 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 30 Mar 2021 20:35:22 +0100 Subject: [PATCH 082/160] add python lib as well when linking --- Lib/distutils/command/build_ext.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 1a9bd120..1d0b0751 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -740,6 +740,8 @@ def get_libraries(self, ext): link_libpython = True elif sys.platform == 'cygwin': link_libpython = True + elif sys.platform.startswith('os2'): + link_libpython = True elif '_PYTHON_HOST_PLATFORM' in os.environ: # We are cross-compiling for one of the relevant platforms if get_config_var('ANDROID_API_LEVEL') != 0: From 8a67c30eed6e702842cb6bc23c13a082a21bbf47 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 30 Mar 2021 21:22:05 +0100 Subject: [PATCH 083/160] remove not needed functions, so no need of submodule; fix import for reduce() --- Lib/distutils/emxccompiler.py | 43 ++--------------------------------- 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index 8372542f..1af19a83 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -23,11 +23,8 @@ import os import sys import copy -# something is wrong with subprocess.py !!!!! fix it -# from subprocess import Popen, PIPE import re -from distutils.ccompiler import gen_preprocess_options, gen_lib_options from distutils.unixccompiler import UnixCCompiler from distutils.file_util import write_file from distutils.errors import (DistutilsExecError, CCompilerError, @@ -35,6 +32,7 @@ from distutils.version import StrictVersion from distutils.spawn import find_executable from distutils import log +from functools import reduce class EMXCCompiler (UnixCCompiler): """ Handles the libc port of the GNU C compiler to OS/2. @@ -64,16 +62,10 @@ def __init__(self, verbose=0, dry_run=0, force=0): "Compiling may fail because of undefined preprocessor macros." % details) - self.gcc_version, self.ld_version = \ - get_versions() - self.debug_print(self.compiler_type + ": gcc %s, ld %s\n" % - (self.gcc_version, - self.ld_version) ) - # want the gcc library statically linked (so that we don't have # to distribute a version dependent on the compiler we have) # self.dll_libraries=["gcc"] - # was removed by the python 3.9 update, as I doupt it makes sense + # was removed by the python 3.9 update, as I doubt it makes sense self.dll_libraries=[] # __init__ () @@ -194,7 +186,6 @@ def object_filenames(self, source_filenames, strip_dir=0, output_dir=''): base, ext = os.path.splitext(src_name) base = os.path.splitdrive(base)[1] # Chop off the drive base = base[os.path.isabs(base):] # If abs, chop off leading / - log.info("trace %s %s %s" % (base, ext, output_dir)) if ext not in (self.src_extensions + self._rc_extensions): raise UnknownFileError("unknown file type '%s' (from '%s')" % \ (ext, src_name)) @@ -286,33 +277,3 @@ def check_config_h(): return (CONFIG_H_UNCERTAIN, "couldn't read '%s': %s" % (fn, exc.strerror)) -RE_VERSION = re.compile(br'(\d+\.\d+(\.\d+)*)') - -def get_versions(): - """ Try to find out the versions of gcc and ld. - If gcc is not found, or the output does not match - `RE_VERSION`, returns None. - """ - - # EMX ld has no way of reporting version number, and we use GCC - # anyway - so we can link OMF DLLs - ld_version = None - - gcc_exe = find_executable('gcc') - if gcc_exe: - gcc_version = None - return(gcc_version, ld_version) - # something is wrong with subprocess.py !!!!! fix it - # out = Popen(gcc_exe + ' -dumpversion', shell=True, stdout=PIPE).stdout - try: - out_string = out.read() - finally: - out.close() - result = RE_VERSION.search(out_string) - if result: - gcc_version = StrictVersion(result.group(1)) - else: - gcc_version = None - else: - gcc_version = None - return (gcc_version, ld_version) From a375260cc651d7fc12dd758b1e4c4f995feaf61e Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 31 Mar 2021 12:37:51 +0100 Subject: [PATCH 084/160] don't use fixed values for extension. get them from python instead --- Lib/distutils/emxccompiler.py | 8 ++++---- Lib/distutils/sysconfig.py | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index 1af19a83..e1a7720f 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -19,7 +19,6 @@ # # * gcc version 9.2.0 20190812 (OS/2 RPM build 9.2.0-5.oc00) (GCC) - import os import sys import copy @@ -33,6 +32,7 @@ from distutils.spawn import find_executable from distutils import log from functools import reduce +from distutils.sysconfig import get_config_vars class EMXCCompiler (UnixCCompiler): """ Handles the libc port of the GNU C compiler to OS/2. @@ -42,7 +42,7 @@ class EMXCCompiler (UnixCCompiler): compiler_type = 'emx' obj_extension = ".o" static_lib_extension = ".a" - shared_lib_extension = ".dll" + shared_lib_extension = get_config_vars().get('EXT_SUFFIX') static_lib_format = "%s%s" shared_lib_format = "%s%s" res_extension = ".res" # compiled resource file @@ -106,7 +106,7 @@ def link(self, target_desc, objects, output_filename, output_dir=None, # full relative path of pyd pyd_name = os.path.join(os.path.dirname(output_filename), - pyd_name8 + ".pyd") + pyd_name8 + self.shared_lib_extension) # handle export symbols by creating a def-file # with executables this only works with gcc/ld as linker @@ -171,7 +171,7 @@ def link(self, target_desc, objects, output_filename, output_dir=None, os.remove( output_filename) except OSError: pass - os.symlink( pyd_name8 + ".pyd", output_filename) + os.symlink( pyd_name8 + self.shared_lib_extension, output_filename) # link () diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 2ae2fc6b..9357e549 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -497,7 +497,8 @@ def _init_os2(): _init_posix() # set the python module extension to .pyd instead of .dll - # for compatibility with previous releases - _config_vars['EXT_SUFFIX'] = '.pyd' + global _config_vars + _config_vars['EXT_SUFFIX'] = _imp.extension_suffixes()[0] def get_config_vars(*args): From ed62c123613b21d97ad6293a923fb575e2f4cb65 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 31 Mar 2021 12:38:38 +0100 Subject: [PATCH 085/160] follow the same init scheme like in distutils/sysconfig.py --- Lib/sysconfig.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index 7a15275e..53083e10 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -462,6 +462,14 @@ def _init_non_posix(vars): vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) +def _init_os2(vars): + """Initialize the module as appropriate for OS/2""" + import _imp + _init_posix(vars) + # set the python module extension to .pyd instead of .dll - + # for compatibility with previous releases + vars['EXT_SUFFIX'] = _imp.extension_suffixes()[0] + # # public APIs # @@ -579,7 +587,9 @@ def get_config_vars(*args): if os.name == 'nt': _init_non_posix(_CONFIG_VARS) _CONFIG_VARS['TZPATH'] = '' - if os.name == 'posix' or os.name == 'os2': + if os.name == 'os2': + _init_os2(_CONFIG_VARS) + if os.name == 'posix': _init_posix(_CONFIG_VARS) # For backward compatibility, see issue19555 SO = _CONFIG_VARS.get('EXT_SUFFIX') From fb6085e62f86fe0b0d794bab6df5d926c4e9d564 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 31 Mar 2021 12:39:20 +0100 Subject: [PATCH 086/160] add the old pyd scheme as well --- Python/dynload_shlib.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index 4ec37146..f5e9db18 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -39,6 +39,7 @@ const char *_PyImport_DynLoadFiletab[] = { ".dll", #elif defined(__OS2__) ".dll", + ".pyd", #else /* !__CYGWIN__ */ "." SOABI ".so", #ifdef ALT_SOABI From c5a2b2a243dc5f6c241f36eb56611f5735a37795 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 31 Mar 2021 13:05:17 +0100 Subject: [PATCH 087/160] disable the use of mmap --- configure.ac | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index d19e98cb..0eaed48c 100644 --- a/configure.ac +++ b/configure.ac @@ -3702,7 +3702,7 @@ AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \ getgrouplist getgroups getlogin getloadavg getpeername getpgid getpid \ getpriority getresuid getresgid getpwent getpwnam_r getpwuid_r getspnam getspent getsid getwd \ if_nameindex \ - initgroups kill killpg lchown lockf linkat lstat lutimes mmap \ + initgroups kill killpg lchown lockf linkat lstat lutimes \ memrchr mbrtowc mkdirat mkfifo \ madvise mkfifoat mknod mknodat mktime mremap nice openat pathconf pause pipe2 plock poll \ posix_fallocate posix_fadvise posix_spawn posix_spawnp pread preadv preadv2 \ @@ -3726,6 +3726,11 @@ if test "$MACHDEP" != linux; then AC_CHECK_FUNCS(lchmod) fi +# Force mmap off for OS/2. +if test "$MACHDEP" != os2knix; then + AC_CHECK_FUNCS(mmap) +fi + AC_CHECK_DECL(dirfd, AC_DEFINE(HAVE_DIRFD, 1, Define if you have the 'dirfd' function or macro.), , From 1f7d964f0bec272c044de83adecd82f0762007ea Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 31 Mar 2021 15:37:01 +0100 Subject: [PATCH 088/160] init cwd if Object is None --- Modules/clinic/posixmodule.c.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index a981598f..da15bb0d 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -2629,7 +2629,7 @@ os_spawn2(PyObject *module, PyObject *const *args, Py_ssize_t nargs) PyObject *return_value = NULL; int mode; path_t path = PATH_T_INITIALIZE("spawn2", "path", 0, 0); - path_t cwd = PATH_T_INITIALIZE("spawn2", "cwd", 0, 0); + path_t cwd = PATH_T_INITIALIZE("spawn2", "cwd", 1, 0); PyObject *argv; PyObject *env; PyObject *stdfds; @@ -2660,6 +2660,7 @@ os_spawn2(PyObject *module, PyObject *const *args, Py_ssize_t nargs) exit: /* Cleanup for path */ path_cleanup(&path); + path_cleanup(&cwd); return return_value; } From 1525648b0fcc88198c6ccb555857b106b207c118 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 31 Mar 2021 15:38:17 +0100 Subject: [PATCH 089/160] adapt redirection to python3 version --- Lib/subprocess.py | 9 +++------ Modules/posixmodule.c | 10 +++++++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 1a58cf5a..0b8f73a4 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -1729,12 +1729,9 @@ def _execute_child(self, args, executable, preexec_fn, close_fds, # output pipe are maintained in this process or else the # pipe will not close when the child process exits and the # ReadFile will hang. - if p2cread is not None and p2cwrite is not None: - _close_in_parent(p2cread) - if c2pwrite is not None and c2pread is not None: - _close_in_parent(c2pwrite) - if errwrite is not None and errread is not None: - _close_in_parent(errwrite) + self._close_pipe_fds(p2cread, p2cwrite, + c2pread, c2pwrite, + errread, errwrite) self._child_created = True self.pid = pid diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 501c9159..ef767cb4 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -6784,7 +6784,7 @@ os_spawn2_impl(PyObject *module, int mode, path_t *path, PyObject *argv, EXECV_CHAR **argvlist; EXECV_CHAR **envlist; PyObject *key, *val, *keys=NULL, *vals=NULL, *res=NULL; - Py_ssize_t pos, argc, i, envc, stdfdc; + Py_ssize_t pos, argc, i, envc, stdfdc, stdfdc_none; Py_intptr_t spawnval; PyObject *(*argv_getitem)(PyObject *, Py_ssize_t); Py_ssize_t lastarg = 0; @@ -6909,7 +6909,9 @@ os_spawn2_impl(PyObject *module, int mode, path_t *path, PyObject *argv, envlist[envc] = 0; } + // create a stdfd list. if (stdfdc != -1) { + stdfdc_none = 0; for (i = 0; i < stdfdc; i++) { PyObject *elem = (*stdfd_getitem)(stdfds, i); if (elem == Py_None) { @@ -6921,8 +6923,14 @@ os_spawn2_impl(PyObject *module, int mode, path_t *path, PyObject *argv, goto fail_2; } } + if (stdfdlist[i] == -1) + stdfdc_none++; } } + // the stdfdlist entries can all be -1, which means no redirecting done + // our spwan2 can't handle that, so take that into account here + if (stdfdc == stdfdc_none) + stdfdc = -1; if (PySys_Audit("os.spawn2", "iOOOO", mode, path->object, argv, cwd->object, env) < 0) { goto fail_2; From 8b2dd10e758e6aac6d6d2b391fe3a81fe7e76960 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 31 Mar 2021 16:13:29 +0100 Subject: [PATCH 090/160] use DosAllocMemory like proposed in pull request #2 --- Objects/obmalloc.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c index eb34f10b..97d5e1c3 100644 --- a/Objects/obmalloc.c +++ b/Objects/obmalloc.c @@ -66,6 +66,9 @@ static void _PyMem_SetupDebugHooksDomain(PyMemAllocatorDomain domain); #ifdef MS_WINDOWS # include +#elif defined(__OS2__) +# define INCL_BASE +# include #elif defined(HAVE_MMAP) # include # ifdef MAP_ANONYMOUS @@ -142,6 +145,23 @@ _PyObject_ArenaVirtualFree(void *ctx, void *ptr, size_t size) VirtualFree(ptr, 0, MEM_RELEASE); } +#elif defined(__OS2__) +static void * +_PyObject_ArenaVirtualAlloc(void *ctx, size_t size) +{ + PVOID ptr; + APIRET arc = DosAllocMem(&ptr, size, PAG_COMMIT | PAG_READ | PAG_WRITE | OBJ_ANY); + if (arc) + arc = DosAllocMem(&ptr, size, PAG_COMMIT | PAG_READ | PAG_WRITE); + return arc ? NULL : ptr; +} + +static void +_PyObject_ArenaVirtualFree(void *ctx, void *ptr, size_t size) +{ + DosFreeMem(ptr); +} + #elif defined(ARENAS_USE_MMAP) static void * _PyObject_ArenaMmap(void *ctx, size_t size) @@ -434,6 +454,8 @@ _PyMem_GetCurrentAllocatorName(void) static PyObjectArenaAllocator _PyObject_Arena = {NULL, #ifdef MS_WINDOWS _PyObject_ArenaVirtualAlloc, _PyObject_ArenaVirtualFree +#elif defined(__OS2__) + _PyObject_ArenaVirtualAlloc, _PyObject_ArenaVirtualFree #elif defined(ARENAS_USE_MMAP) _PyObject_ArenaMmap, _PyObject_ArenaMunmap #else From efaa7114b19fc0d976b838dd3d3a3a8236097f2f Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 9 Apr 2021 09:48:32 +0100 Subject: [PATCH 091/160] add a bldlevel to the generated dll --- Lib/distutils/ccompiler.py | 9 +++++ Lib/distutils/command/build_ext.py | 2 ++ Lib/distutils/emxccompiler.py | 54 +++++++++++++++++------------- 3 files changed, 41 insertions(+), 24 deletions(-) diff --git a/Lib/distutils/ccompiler.py b/Lib/distutils/ccompiler.py index 312e3167..f259dded 100644 --- a/Lib/distutils/ccompiler.py +++ b/Lib/distutils/ccompiler.py @@ -115,6 +115,9 @@ def __init__(self, verbose=0, dry_run=0, force=0): # named library files) to include on any link self.objects = [] + if sys.platform.startswith('os2'): + self.version = None + for key in self.executables.keys(): self.set_executable(key, self.executables[key]) @@ -301,6 +304,12 @@ def set_link_objects(self, objects): """ self.objects = objects[:] + if sys.platform.startswith('os2'): + def set_link_version(self, version): + """Set the version, so we can create a nice bldlevel string in the + linking stage + """ + self.version = version # -- Private utility methods -------------------------------------- # (here for the convenience of subclasses) diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py index 1d0b0751..48c7b678 100644 --- a/Lib/distutils/command/build_ext.py +++ b/Lib/distutils/command/build_ext.py @@ -335,6 +335,8 @@ def run(self): self.compiler.set_runtime_library_dirs(self.rpath) if self.link_objects is not None: self.compiler.set_link_objects(self.link_objects) + if sys.platform.startswith('os2'): + self.compiler.set_link_version(self.distribution.get_version()) # Now actually compile and link everything. self.build_extensions() diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index e1a7720f..dd6d1ca0 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -6,14 +6,7 @@ # issues: # -# * OS/2 insists that DLLs can have names no longer than 8 characters -# We put export_symbols in a def-file, as though the DLL can have -# an arbitrary length name, but truncate the output filename. -# -# * only use OMF objects and use -Zomf for the linker -# -# * always build for multithreading (-Zmt) as the accompanying OS/2 port -# of Python is only distributed with threads enabled. +# * none so far # # tested configurations: # @@ -33,6 +26,7 @@ from distutils import log from functools import reduce from distutils.sysconfig import get_config_vars +from datetime import datetime class EMXCCompiler (UnixCCompiler): """ Handles the libc port of the GNU C compiler to OS/2. @@ -98,15 +92,17 @@ def link(self, target_desc, objects, output_filename, output_dir=None, # Additional libraries libraries.extend(self.dll_libraries) - # get pyd name and extension - pyd_name8, pyd_ext = os.path.splitext( os.path.basename(output_filename)) + # get dll/pyd name and extension + dll_name, dll_extension = os.path.splitext( os.path.basename(output_filename)) # if name is longer than 8.3, generate a hashed 8.3 name - if len(os.path.basename(output_filename)) > 8+1+3: - pyd_name8 = os.path.basename(output_filename)[:3] + str(reduce(lambda x,y:x+y, map(ord, output_filename)) % 65536) + if len(dll_name) > 8+1+3: + dll_name8 = os.path.basename(output_filename)[:3] + str(reduce(lambda x,y:x+y, map(ord, output_filename)) % 65536) + else: + dll_name8 = dll_name - # full relative path of pyd - pyd_name = os.path.join(os.path.dirname(output_filename), - pyd_name8 + self.shared_lib_extension) + # full relative path of dll/pyd + dll_namefull = os.path.join(os.path.dirname(output_filename), + dll_name8 + self.shared_lib_extension) # handle export symbols by creating a def-file # with executables this only works with gcc/ld as linker @@ -121,20 +117,30 @@ def link(self, target_desc, objects, output_filename, output_dir=None, # object files are, build_temp doesn't help much # where are the object files temp_dir = os.path.dirname(objects[0]) - # name of dll to give the helper files the same base name - (dll_name, dll_extension) = os.path.splitext( - os.path.basename(output_filename)) # generate the filenames for these files def_file = os.path.join(temp_dir, dll_name + ".def") + # prepare some needed values for the buildlevel + vendor = os.getenv('VENDOR') + if not vendor: + vendor = "python build system" + now = datetime.now() + date_time = now.strftime("%d %b %Y %H:%M:%S") + version = self.version + if not version: + version = "0.0" + (osname, host, release, osversion, machine) = os.uname() + # Generate .def file - # open !!!! add a bldlevel contents = [ "LIBRARY %s INITINSTANCE TERMINSTANCE" % \ - pyd_name8, + dll_name8, + "DESCRIPTION \"@#%s:%s#@##1## %s %s::::0::@@%s\"" % \ + (vendor, version, date_time, host, dll_name), "DATA MULTIPLE NONSHARED", "EXPORTS"] + for sym in export_symbols: contents.append(' "_%s"' % sym) self.execute(write_file, (def_file, contents), @@ -157,7 +163,7 @@ def link(self, target_desc, objects, output_filename, output_dir=None, if not debug: extra_preargs.append("-s") - UnixCCompiler.link(self, target_desc, objects, pyd_name, + UnixCCompiler.link(self, target_desc, objects, dll_namefull, output_dir, libraries, library_dirs, runtime_library_dirs, None, # export_symbols, we do this in our def-file @@ -165,13 +171,13 @@ def link(self, target_desc, objects, output_filename, output_dir=None, target_lang) # open!!! create _dll.a lib eventually - # if filename exceed 8.3, create a symlink to 8.3 pyd - if len(os.path.basename(output_filename)) > 8+1+3: + # if filename exceed 8.3, create a symlink to 8.3 dll/pyd + if len(dll_name) > 8+1+3: try: os.remove( output_filename) except OSError: pass - os.symlink( pyd_name8 + self.shared_lib_extension, output_filename) + os.symlink( dll_name8 + self.shared_lib_extension, output_filename) # link () From 9b99847215117bbe53128b8ef3efb1806786e05e Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 9 Apr 2021 10:40:53 +0100 Subject: [PATCH 092/160] add a bldlevel to the main dll as well --- Makefile.pre.in | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 257f7ae2..cee13660 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -696,11 +696,21 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK) $(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources -ifneq ($(filter os2emx os2knix,$(MACHDEP)),) # bird hack! -$(DLLLIBRARY) $(LDLIBRARY): $(LIBRARY_OBJS) +ifneq ($(filter os2emx os2knix,$(MACHDEP)),) +VENDOR ?=community +DLLBASENAME = $(basename $(DLLLIBRARY)) +BUILD_INFO=\#\#1\#\# $(shell date +'%d %b %Y %H:%M:%S') $(shell uname -n) +BUILDLEVEL_INFO=@\#$(VENDOR):$(VERSION)\#@$(BUILD_INFO)::::0::@@$(DLLBASENAME) + +$(DLLLIBRARY) $(LDLIBRARY): $(LIBRARY_OBJS) python$(LDVERSION).def $(LDSHARED) -o $(DLLLIBRARY) $^ $(LIBS) $(MODLIBS) $(SYSLIBS) emximp -o $(LDLIBRARY) $(DLLLIBRARY) +python$(LDVERSION).def: + echo "LIBRARY $(DLLBASENAME) INITINSTANCE TERMINSTANCE" >$@ + echo "DESCRIPTION \"$(BUILDLEVEL_INFO)\"" >>$@ + echo "DATA MULTIPLE" >>$@ + else # CYGWIN # This rule builds the Cygwin Python DLL and import library if configured # for a shared core library; otherwise, this rule is a noop. From 51404d7e1534c5752c564a8b1a67adbb63de47e1 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 13 Apr 2021 12:08:58 +0100 Subject: [PATCH 093/160] fix tzpath --- configure.ac | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/configure.ac b/configure.ac index 0eaed48c..2c1a153d 100644 --- a/configure.ac +++ b/configure.ac @@ -3003,7 +3003,14 @@ validate_tzpath() { fi } +case $ac_sys_system in + *OS/2* | *emx* | *os2*) + TZPATH="/@unixroot/usr/share/zoneinfo;/@unixroot/usr/lib/zoneinfo;/@unixroot/usr/share/lib/zoneinfo;/@unixroot/etc/zoneinfo" + ;; + *) TZPATH="/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo" + ;; + esac AC_MSG_CHECKING(for --with-tzpath) AC_ARG_WITH(tzpath, AS_HELP_STRING([--with-tzpath=] From 80eea52917119cb1378817d7bc0e4131bb4fab40 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 13 Apr 2021 14:36:15 +0100 Subject: [PATCH 094/160] while boostraping datetime is not available, so check that; fix a 8.3 dll name glitch --- Lib/distutils/emxccompiler.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index dd6d1ca0..5f472f58 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -26,7 +26,12 @@ from distutils import log from functools import reduce from distutils.sysconfig import get_config_vars -from datetime import datetime + +try: + from datetime import datetime + BOOTSTRAP = False +except ImportError: + BOOTSTRAP = True class EMXCCompiler (UnixCCompiler): """ Handles the libc port of the GNU C compiler to OS/2. @@ -94,8 +99,8 @@ def link(self, target_desc, objects, output_filename, output_dir=None, # get dll/pyd name and extension dll_name, dll_extension = os.path.splitext( os.path.basename(output_filename)) - # if name is longer than 8.3, generate a hashed 8.3 name - if len(dll_name) > 8+1+3: + # if name is longer than 8 char, generate a hashed 8 char name + if len(dll_name) > 8: dll_name8 = os.path.basename(output_filename)[:3] + str(reduce(lambda x,y:x+y, map(ord, output_filename)) % 65536) else: dll_name8 = dll_name @@ -125,8 +130,11 @@ def link(self, target_desc, objects, output_filename, output_dir=None, vendor = os.getenv('VENDOR') if not vendor: vendor = "python build system" - now = datetime.now() - date_time = now.strftime("%d %b %Y %H:%M:%S") + if not BOOTSTRAP: + now = datetime.now() + date_time = now.strftime("%d %b %Y %H:%M:%S") + else: + date_time = os.getenv("BOOTSTRAP_TIME") version = self.version if not version: version = "0.0" @@ -170,9 +178,8 @@ def link(self, target_desc, objects, output_filename, output_dir=None, debug, extra_preargs, extra_postargs, build_temp, target_lang) - # open!!! create _dll.a lib eventually - # if filename exceed 8.3, create a symlink to 8.3 dll/pyd - if len(dll_name) > 8+1+3: + # if filename exceed 8 char, create a symlink to the 8 char dll/pyd + if len(dll_name) > 8: try: os.remove( output_filename) except OSError: From 8356335400c8a4c46953295c2b97dac8570051b1 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 13 Apr 2021 15:56:34 +0100 Subject: [PATCH 095/160] disable DoaAllocMem for now, as it crashes in the bootstrap phase --- Objects/obmalloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c index 97d5e1c3..fe8c043c 100644 --- a/Objects/obmalloc.c +++ b/Objects/obmalloc.c @@ -145,7 +145,7 @@ _PyObject_ArenaVirtualFree(void *ctx, void *ptr, size_t size) VirtualFree(ptr, 0, MEM_RELEASE); } -#elif defined(__OS2__) +#elif defined(__OS2__x) static void * _PyObject_ArenaVirtualAlloc(void *ctx, size_t size) { @@ -454,7 +454,7 @@ _PyMem_GetCurrentAllocatorName(void) static PyObjectArenaAllocator _PyObject_Arena = {NULL, #ifdef MS_WINDOWS _PyObject_ArenaVirtualAlloc, _PyObject_ArenaVirtualFree -#elif defined(__OS2__) +#elif defined(__OS2__x) _PyObject_ArenaVirtualAlloc, _PyObject_ArenaVirtualFree #elif defined(ARENAS_USE_MMAP) _PyObject_ArenaMmap, _PyObject_ArenaMunmap From 71edddcf25530b179e0b0b05f0a9db8fbe81c8e6 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 14 Apr 2021 15:20:11 +0100 Subject: [PATCH 096/160] disable a OSError, as we lack the functionality --- Lib/concurrent/futures/process.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py index 90bc98bf..6f40b59c 100644 --- a/Lib/concurrent/futures/process.py +++ b/Lib/concurrent/futures/process.py @@ -532,6 +532,8 @@ def _check_system_limits(): if _system_limited: raise NotImplementedError(_system_limited) _system_limits_checked = True + if os.name == 'os2': + return try: nsems_max = os.sysconf("SC_SEM_NSEMS_MAX") except (AttributeError, ValueError): From 25f42bc5ecc394009ddcaafbe57c0f31c3d3ab92 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 14 Apr 2021 15:21:04 +0100 Subject: [PATCH 097/160] fix a mergeconflict --- Lib/tempfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/tempfile.py b/Lib/tempfile.py index 4f1fec87..92fcb029 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -549,7 +549,7 @@ def NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None, _os.close(fd) raise -if _os.name != 'posix' or _sys.platform == 'cygwin' or _sys.platform == 'os2emx' or _sys.platform == 'os2knix':: +if _os.name != 'posix' or _sys.platform == 'cygwin' or _sys.platform == 'os2emx' or _sys.platform == 'os2knix': # On non-POSIX and Cygwin systems, assume that we cannot unlink a file # while it is open. TemporaryFile = NamedTemporaryFile From cfb9586089eb7045f7c6d04ed00d2b103a54e7b9 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 14 Apr 2021 15:22:21 +0100 Subject: [PATCH 098/160] enable change_root --- Lib/distutils/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py index 5021c339..c89357b6 100644 --- a/Lib/distutils/util.py +++ b/Lib/distutils/util.py @@ -143,7 +143,7 @@ def change_root (new_root, pathname): if new_root is None or new_root == '': return pathname - if os.name == 'posix': + if os.name == 'posix' or os.name == 'os2': if not os.path.isabs(pathname): return os.path.join(new_root, pathname) else: From 69716be19cf1d2f18235a0ba56e22d7bdd26a179 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 14 Apr 2021 15:24:05 +0100 Subject: [PATCH 099/160] change some bits in multiprocessing, not buildable as of yet --- Modules/_multiprocessing/multiprocessing.c | 2 +- Modules/_multiprocessing/multiprocessing.h | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Modules/_multiprocessing/multiprocessing.c b/Modules/_multiprocessing/multiprocessing.c index 806e6383..200f3d50 100644 --- a/Modules/_multiprocessing/multiprocessing.c +++ b/Modules/_multiprocessing/multiprocessing.c @@ -128,7 +128,7 @@ static PyMethodDef module_methods[] = { {"recv", multiprocessing_recv, METH_VARARGS, ""}, {"send", multiprocessing_send, METH_VARARGS, ""}, #endif -#if !defined(POSIX_SEMAPHORES_NOT_ENABLED) && !defined(__ANDROID__) +#if !defined(POSIX_SEMAPHORES_NOT_ENABLED) && !defined(__ANDROID__) || defined(__OS2__) {"sem_unlink", _PyMp_sem_unlink, METH_VARARGS, ""}, #endif {NULL} diff --git a/Modules/_multiprocessing/multiprocessing.h b/Modules/_multiprocessing/multiprocessing.h index 557ecee1..ca377374 100644 --- a/Modules/_multiprocessing/multiprocessing.h +++ b/Modules/_multiprocessing/multiprocessing.h @@ -23,14 +23,10 @@ # define SEM_VALUE_MAX LONG_MAX #else # include /* O_CREAT and O_EXCL */ -# ifndef __OS2__ -# if defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED) +# if defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED) || defined(__OS2__) # include typedef sem_t *SEM_HANDLE; # endif -# else -# define SEM_HANDLE HANDLE -#endif #endif /* From 2c2475ea21a6af8c5f9f59c07cdd05613c5cec20 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 14 Apr 2021 17:19:05 +0100 Subject: [PATCH 100/160] fix location of dll files and some cosmetic changes --- Makefile.pre.in | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index cee13660..a9033a82 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1327,7 +1327,8 @@ altbininstall: $(BUILDPYTHON) @FRAMEWORKPYTHONW@ fi if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \ if test -n "$(DLLLIBRARY)" ; then \ - $(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \ + $(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(LIBDIR); \ + $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR); \ else \ $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \ if test $(LDLIBRARY) != $(INSTSONAME); then \ @@ -1833,9 +1834,6 @@ TAGS:: pycremoval: -find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';' -find $(srcdir) -name '*.py[co]' -exec rm -f {} ';' - -find . -name '*.exe' -exec rm -f {} ';' - -find . -name '*.dll' -exec rm -f {} ';' - -find . -name '*.pyd' -exec rm -f {} ';' rmtestturds: -rm -f *BAD *GOOD *SKIPPED @@ -1855,6 +1853,9 @@ clean-retain-profile: pycremoval find . -name '*.s[ol]' -exec rm -f {} ';' find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';' find . -name '*.lst' -exec rm -f {} ';' + find . -name '*.exe' -exec rm -f {} ';' + find . -name '*.dll' -exec rm -f {} ';' + find . -name '*.pyd' -exec rm -f {} ';' find build -name 'fficonfig.h' -exec rm -f {} ';' || true find build -name '*.py' -exec rm -f {} ';' || true find build -name '*.py[co]' -exec rm -f {} ';' || true From f8422e535e31d66c99e8c07ef1903679599fe259 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 14 Apr 2021 17:20:17 +0100 Subject: [PATCH 101/160] add semaphore.c as well for us, even not working for now --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9f9aee0e..aca0a717 100644 --- a/setup.py +++ b/setup.py @@ -1746,7 +1746,7 @@ def detect_multibytecodecs(self): def detect_multiprocessing(self): # Richard Oudkerk's multiprocessing module - if MS_WINDOWS: + if MS_WINDOWS or OS2: multiprocessing_srcs = ['_multiprocessing/multiprocessing.c', '_multiprocessing/semaphore.c'] From 70b504a96b282b7ae44789cdfc8da064df25852f Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 30 Apr 2021 16:06:16 +0100 Subject: [PATCH 102/160] search with .exe appended as well --- Modules/getpath.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Modules/getpath.c b/Modules/getpath.c index 89b9f865..0973727a 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -915,6 +915,14 @@ calculate_which(const wchar_t *path_env, wchar_t *program_name, *abs_path_p = abs_path; return _PyStatus_OK(); } + +#ifdef __OS2__ // search with .exe as well + add_exe_suffix(&abs_path); + if (isxfile(abs_path)) { + *abs_path_p = abs_path; + return _PyStatus_OK(); + } +#endif PyMem_RawFree(abs_path); if (!delim) { From b476c5daf3756c1b730d87efcb4fae38e6729bf7 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 30 Apr 2021 16:40:44 +0100 Subject: [PATCH 103/160] use old non callack way for readline, as the select on stdin/stdout is not working for us --- Modules/readline.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Modules/readline.c b/Modules/readline.c index 1e74f997..3e42cc1d 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -8,6 +8,9 @@ #include "Python.h" #include #include +#ifdef __OS2__ +#include +#endif #include #include @@ -1182,6 +1185,7 @@ setup_readline(readlinestate *mod_state) /* Wrapper around GNU readline that handles signals differently. */ static char *completed_input_string; +#ifndef __OS2__ static void rlhandler(char *text) { @@ -1255,6 +1259,42 @@ readline_until_enter_or_signal(const char *prompt, int *signal) return completed_input_string; } +#else +/* Interrupt handler */ + +static jmp_buf jbuf; + +/* ARGSUSED */ +static void +onintr(int sig) +{ + longjmp(jbuf, 1); +} + + +static char * +readline_until_enter_or_signal(const char *prompt, int *signal) +{ + PyOS_sighandler_t old_inthandler; + + *signal = 0; + + old_inthandler = PyOS_setsig(SIGINT, onintr); + if (setjmp(jbuf)) { +#ifdef HAVE_SIGRELSE + /* This seems necessary on SunOS 4.1 (Rasmus Hahn) */ + sigrelse(SIGINT); +#endif + PyOS_setsig(SIGINT, old_inthandler); + *signal = 1; + return NULL; + } + completed_input_string = readline(prompt); + PyOS_setsig(SIGINT, old_inthandler); + + return completed_input_string; +} +#endif static char * call_readline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt) From 377ba06667e254385adcb8d16b62f782ac9e9f61 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 30 Apr 2021 17:20:14 +0100 Subject: [PATCH 104/160] use _dlopen as on posix and not a dummy implementation --- Lib/ctypes/__init__.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py index 15e7cbd3..75c620f3 100644 --- a/Lib/ctypes/__init__.py +++ b/Lib/ctypes/__init__.py @@ -132,14 +132,9 @@ class WinFunctionType(_CFuncPtr): if WINFUNCTYPE.__doc__: WINFUNCTYPE.__doc__ = CFUNCTYPE.__doc__.replace("CFUNCTYPE", "WINFUNCTYPE") -elif _os.name == "posix": +elif _os.name == "posix" or _os.name == "os2": from _ctypes import dlopen as _dlopen -elif _os.name == "os2": - # provide a dummy implmementation that always returns nothing (see #140) - def _dlopen(name, mode): - return - from _ctypes import sizeof, byref, addressof, alignment, resize from _ctypes import get_errno, set_errno from _ctypes import _SimpleCData From 44cbfbd16688868c6c3aeffff2ebf5b91c33b575 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 4 May 2021 08:48:22 +0100 Subject: [PATCH 105/160] adjust _readthread to win version to have it properly working --- Lib/subprocess.py | 93 +++++++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 44 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 0b8f73a4..a1307f9e 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -1969,56 +1969,61 @@ def _wait(self, timeout): return self.returncode + if _os2: + # _readerthread and also the os2 part in _communicate is + # borrowed from the winows implementation, so try to be in sync + def _readerthread(self, fh, buffer): + buffer.append(fh.read()) + try: + fh.close() + except IOError as e: + # kLIBC close may fail with EBADF or even Error 0, + # ignore for now + pass + def _communicate(self, input, endtime, orig_timeout): if _os2: - def _readerthread(file, buffer): - while True: - data = _eintr_retry_call(file.read) - if data == "": - try: - file.close() - except IOError as e: - # kLIBC close may fail with EBADF or even Error 0, - # ignore for now - pass - break - buffer.append(data) - - stdout = None # Return - stderr = None # Return - - if self.stdout: - stdout = [] - stdout_thread = threading.Thread(target=_readerthread, - args=(self.stdout, stdout)) - stdout_thread.setDaemon(True) - stdout_thread.start() - - if self.stderr: - stderr = [] - stderr_thread = threading.Thread(target=_readerthread, - args=(self.stderr, stderr)) - stderr_thread.setDaemon(True) - stderr_thread.start() + # Start reader threads feeding into a list hanging off of this + # object, unless they've already been started. + if self.stdout and not hasattr(self, "_stdout_buff"): + self._stdout_buff = [] + self.stdout_thread = threading.Thread(target=self._readerthread, + args=(self.stdout, self._stdout_buff)) + self.stdout_thread.daemon = True + self.stdout_thread.start() + + if self.stderr and not hasattr(self, "_stderr_buff"): + self._stderr_buff = [] + self.stderr_thread = threading.Thread(target=self._readerthread, + args=(self.stderr, self._stderr_buff)) + self.stderr_thread.daemon = True + self.stderr_thread.start() if self.stdin: - if input is not None: - try: - _eintr_retry_call(self.stdin.write, input) - except IOError as e: - if e.errno != errno.EPIPE: - raise - try: - self.stdin.close() - except IOError as e: - # kLIBC close may fail with EBADF or even Error 0, - # ignore for now - pass - + self._stdin_write(input) + + # Wait for the reader threads, or time out. If we time out, the + # threads remain reading and the fds left open in case the user + # calls communicate again. + if self.stdout is not None: + self.stdout_thread.join(self._remaining_time(endtime)) + if self.stdout_thread.is_alive(): + raise TimeoutExpired(self.args, orig_timeout) + if self.stderr is not None: + self.stderr_thread.join(self._remaining_time(endtime)) + if self.stderr_thread.is_alive(): + raise TimeoutExpired(self.args, orig_timeout) + + # Collect the output from and close both pipes, now that we know + # both have been read successfully. + stdout = None + stderr = None if self.stdout: - stdout_thread.join() + stdout = self._stdout_buff + self.stdout.close() if self.stderr: - stderr_thread.join() + stderr = self._stderr_buff + self.stderr.close() else: if self.stdin and not self._communication_started: From e6b723983cbd3641480b6261bc4e4718b0ae3036 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Mon, 10 May 2021 13:46:06 +0100 Subject: [PATCH 106/160] remove regenerated file --- aclocal.m4 | 360 ----------------------------------------------------- 1 file changed, 360 deletions(-) delete mode 100644 aclocal.m4 diff --git a/aclocal.m4 b/aclocal.m4 deleted file mode 100644 index b5f9cb0e..00000000 --- a/aclocal.m4 +++ /dev/null @@ -1,360 +0,0 @@ -# generated automatically by aclocal 1.16.2 -*- Autoconf -*- - -# Copyright (C) 1996-2020 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 11 (pkg-config-0.29.1) - -dnl Copyright © 2004 Scott James Remnant . -dnl Copyright © 2012-2015 Dan Nicholson -dnl -dnl This program is free software; you can redistribute it and/or modify -dnl it under the terms of the GNU General Public License as published by -dnl the Free Software Foundation; either version 2 of the License, or -dnl (at your option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -dnl General Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License -dnl along with this program; if not, write to the Free Software -dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -dnl 02111-1307, USA. -dnl -dnl As a special exception to the GNU General Public License, if you -dnl distribute this file as part of a program that contains a -dnl configuration script generated by Autoconf, you may include it under -dnl the same distribution terms that you use for the rest of that -dnl program. - -dnl PKG_PREREQ(MIN-VERSION) -dnl ----------------------- -dnl Since: 0.29 -dnl -dnl Verify that the version of the pkg-config macros are at least -dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's -dnl installed version of pkg-config, this checks the developer's version -dnl of pkg.m4 when generating configure. -dnl -dnl To ensure that this macro is defined, also add: -dnl m4_ifndef([PKG_PREREQ], -dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) -dnl -dnl See the "Since" comment for each macro you use to see what version -dnl of the macros you require. -m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) -m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, - [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) -])dnl PKG_PREREQ - -dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) -dnl ---------------------------------- -dnl Since: 0.16 -dnl -dnl Search for the pkg-config tool and set the PKG_CONFIG variable to -dnl first found in the path. Checks that the version of pkg-config found -dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is -dnl used since that's the first version where most current features of -dnl pkg-config existed. -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -])dnl PKG_PROG_PKG_CONFIG - -dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -dnl ------------------------------------------------------------------- -dnl Since: 0.18 -dnl -dnl Check to see whether a particular set of modules exists. Similar to -dnl PKG_CHECK_MODULES(), but does not set variables or print errors. -dnl -dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -dnl only at the first occurence in configure.ac, so if the first place -dnl it's called might be skipped (such as if it is within an "if", you -dnl have to call PKG_CHECK_EXISTS manually -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - -dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -dnl --------------------------------------------- -dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting -dnl pkg_failed based on the result. -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes ], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])dnl _PKG_CONFIG - -dnl _PKG_SHORT_ERRORS_SUPPORTED -dnl --------------------------- -dnl Internal check to see if pkg-config supports short errors. -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])dnl _PKG_SHORT_ERRORS_SUPPORTED - - -dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -dnl [ACTION-IF-NOT-FOUND]) -dnl -------------------------------------------------------------- -dnl Since: 0.4.0 -dnl -dnl Note that if there is a possibility the first call to -dnl PKG_CHECK_MODULES might not happen, you should be sure to include an -dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $1]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])dnl PKG_CHECK_MODULES - - -dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -dnl [ACTION-IF-NOT-FOUND]) -dnl --------------------------------------------------------------------- -dnl Since: 0.29 -dnl -dnl Checks for existence of MODULES and gathers its build flags with -dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags -dnl and VARIABLE-PREFIX_LIBS from --libs. -dnl -dnl Note that if there is a possibility the first call to -dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to -dnl include an explicit call to PKG_PROG_PKG_CONFIG in your -dnl configure.ac. -AC_DEFUN([PKG_CHECK_MODULES_STATIC], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -_save_PKG_CONFIG=$PKG_CONFIG -PKG_CONFIG="$PKG_CONFIG --static" -PKG_CHECK_MODULES($@) -PKG_CONFIG=$_save_PKG_CONFIG[]dnl -])dnl PKG_CHECK_MODULES_STATIC - - -dnl PKG_INSTALLDIR([DIRECTORY]) -dnl ------------------------- -dnl Since: 0.27 -dnl -dnl Substitutes the variable pkgconfigdir as the location where a module -dnl should install pkg-config .pc files. By default the directory is -dnl $libdir/pkgconfig, but the default can be changed by passing -dnl DIRECTORY. The user can override through the --with-pkgconfigdir -dnl parameter. -AC_DEFUN([PKG_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([pkgconfigdir], - [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, - [with_pkgconfigdir=]pkg_default) -AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -])dnl PKG_INSTALLDIR - - -dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) -dnl -------------------------------- -dnl Since: 0.27 -dnl -dnl Substitutes the variable noarch_pkgconfigdir as the location where a -dnl module should install arch-independent pkg-config .pc files. By -dnl default the directory is $datadir/pkgconfig, but the default can be -dnl changed by passing DIRECTORY. The user can override through the -dnl --with-noarch-pkgconfigdir parameter. -AC_DEFUN([PKG_NOARCH_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([noarch-pkgconfigdir], - [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, - [with_noarch_pkgconfigdir=]pkg_default) -AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -])dnl PKG_NOARCH_INSTALLDIR - - -dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, -dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -dnl ------------------------------------------- -dnl Since: 0.28 -dnl -dnl Retrieves the value of the pkg-config variable for the given module. -AC_DEFUN([PKG_CHECK_VAR], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl - -_PKG_CONFIG([$1], [variable="][$3]["], [$2]) -AS_VAR_COPY([$1], [pkg_cv_][$1]) - -AS_VAR_IF([$1], [""], [$5], [$4])dnl -])dnl PKG_CHECK_VAR - -dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], -dnl [DESCRIPTION], [DEFAULT]) -dnl ------------------------------------------ -dnl -dnl Prepare a "--with-" configure option using the lowercase -dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and -dnl PKG_CHECK_MODULES in a single macro. -AC_DEFUN([PKG_WITH_MODULES], -[ -m4_pushdef([with_arg], m4_tolower([$1])) - -m4_pushdef([description], - [m4_default([$5], [build with ]with_arg[ support])]) - -m4_pushdef([def_arg], [m4_default([$6], [auto])]) -m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) -m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) - -m4_case(def_arg, - [yes],[m4_pushdef([with_without], [--without-]with_arg)], - [m4_pushdef([with_without],[--with-]with_arg)]) - -AC_ARG_WITH(with_arg, - AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, - [AS_TR_SH([with_]with_arg)=def_arg]) - -AS_CASE([$AS_TR_SH([with_]with_arg)], - [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], - [auto],[PKG_CHECK_MODULES([$1],[$2], - [m4_n([def_action_if_found]) $3], - [m4_n([def_action_if_not_found]) $4])]) - -m4_popdef([with_arg]) -m4_popdef([description]) -m4_popdef([def_arg]) - -])dnl PKG_WITH_MODULES - -dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [DESCRIPTION], [DEFAULT]) -dnl ----------------------------------------------- -dnl -dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES -dnl check._[VARIABLE-PREFIX] is exported as make variable. -AC_DEFUN([PKG_HAVE_WITH_MODULES], -[ -PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) - -AM_CONDITIONAL([HAVE_][$1], - [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) -])dnl PKG_HAVE_WITH_MODULES - -dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [DESCRIPTION], [DEFAULT]) -dnl ------------------------------------------------------ -dnl -dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after -dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make -dnl and preprocessor variable. -AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], -[ -PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) - -AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], - [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) -])dnl PKG_HAVE_DEFINE_WITH_MODULES - -m4_include([m4/ax_c_float_words_bigendian.m4]) -m4_include([m4/ax_check_openssl.m4]) From c0e41953bd264f2c352ba9187d474d18aacbb7c3 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 11 May 2021 19:12:01 +0100 Subject: [PATCH 107/160] adjust _bootstrap_external to 3.9.5 and use some old iaabs implementation. import new generated importlib_external.h --- Lib/importlib/_bootstrap_external.py | 12 + Python/importlib_external.h | 5673 +++++++++++++------------- 2 files changed, 2861 insertions(+), 2824 deletions(-) diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 46d1c444..779f14be 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -28,15 +28,20 @@ _MS_WINDOWS = (sys.platform == 'win32') +_OS2 = (sys.platform == 'os2knix') if _MS_WINDOWS: import nt as _os import winreg +elif _OS2: + import os2 as _os else: import posix as _os if _MS_WINDOWS: path_separators = ['\\', '/'] +elif _OS2: + path_separators = ['/', '\\'] else: path_separators = ['/'] # Assumption made in _path_join() @@ -170,7 +175,14 @@ def _path_isabs(path): return False root = _os._path_splitroot(path)[0].replace('/', '\\') return len(root) > 1 and (root.startswith('\\\\') or root.endswith('\\')) +elif _OS2: + def _path_isabs(path): + """Replacement for os.path.isabs. + Considers a OS2 drive-relative path (no drive, but starts with slash) to + still be "absolute". + """ + return path.startswith(path_separators) or path[1:3] in _pathseps_with_colon else: def _path_isabs(path): """Replacement for os.path.isabs.""" diff --git a/Python/importlib_external.h b/Python/importlib_external.h index c47eead1..4f2acad1 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1,2824 +1,2849 @@ -/* Auto-generated by Programs/_freeze_importlib.c */ -const unsigned char _Py_M__importlib_bootstrap_external[] = { - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,64,0,0,0,115,224,2,0,0,100,0, - 90,0,100,1,100,2,108,1,97,1,100,1,100,2,108,2, - 90,2,100,1,100,2,108,3,97,3,100,1,100,2,108,4, - 90,4,100,1,100,2,108,5,90,5,116,3,106,6,100,3, - 107,2,90,7,101,7,114,76,100,1,100,2,108,8,90,9, - 100,1,100,2,108,10,90,10,110,8,100,1,100,2,108,11, - 90,9,101,7,114,98,100,4,100,5,103,2,90,12,110,6, - 100,5,103,1,90,12,101,13,100,6,100,7,132,0,101,12, - 68,0,131,1,131,1,115,126,74,0,130,1,101,12,100,1, - 25,0,90,14,101,15,101,12,131,1,90,16,100,8,160,17, - 101,12,161,1,90,12,100,9,100,10,132,0,101,12,68,0, - 131,1,90,18,100,11,90,19,100,12,90,20,101,20,101,19, - 23,0,90,21,100,13,100,14,132,0,90,22,100,15,100,16, - 132,0,90,23,100,17,100,18,132,0,90,24,100,19,100,20, - 132,0,90,25,101,7,114,228,100,21,100,22,132,0,90,26, - 110,8,100,23,100,22,132,0,90,26,100,24,100,25,132,0, - 90,27,100,26,100,27,132,0,90,28,100,28,100,29,132,0, - 90,29,100,30,100,31,132,0,90,30,100,32,100,33,132,0, - 90,31,101,7,144,1,114,36,100,34,100,35,132,0,90,32, - 110,8,100,36,100,35,132,0,90,32,100,111,100,38,100,39, - 132,1,90,33,101,34,101,33,106,35,131,1,90,36,100,40, - 160,37,100,41,100,42,161,2,100,43,23,0,90,38,101,39, - 160,40,101,38,100,42,161,2,90,41,100,44,90,42,100,45, - 90,43,100,46,103,1,90,44,100,47,103,1,90,45,101,45, - 4,0,90,46,90,47,100,112,100,2,100,48,156,1,100,49, - 100,50,132,3,90,48,100,51,100,52,132,0,90,49,100,53, - 100,54,132,0,90,50,100,55,100,56,132,0,90,51,100,57, - 100,58,132,0,90,52,100,59,100,60,132,0,90,53,100,61, - 100,62,132,0,90,54,100,63,100,64,132,0,90,55,100,65, - 100,66,132,0,90,56,100,67,100,68,132,0,90,57,100,113, - 100,69,100,70,132,1,90,58,100,114,100,71,100,72,132,1, - 90,59,100,115,100,74,100,75,132,1,90,60,100,76,100,77, - 132,0,90,61,101,62,131,0,90,63,100,116,100,2,101,63, - 100,78,156,2,100,79,100,80,132,3,90,64,71,0,100,81, - 100,82,132,0,100,82,131,2,90,65,71,0,100,83,100,84, - 132,0,100,84,131,2,90,66,71,0,100,85,100,86,132,0, - 100,86,101,66,131,3,90,67,71,0,100,87,100,88,132,0, - 100,88,131,2,90,68,71,0,100,89,100,90,132,0,100,90, - 101,68,101,67,131,4,90,69,71,0,100,91,100,92,132,0, - 100,92,101,68,101,66,131,4,90,70,103,0,90,71,71,0, - 100,93,100,94,132,0,100,94,101,68,101,66,131,4,90,72, - 71,0,100,95,100,96,132,0,100,96,131,2,90,73,71,0, - 100,97,100,98,132,0,100,98,131,2,90,74,71,0,100,99, - 100,100,132,0,100,100,131,2,90,75,71,0,100,101,100,102, - 132,0,100,102,131,2,90,76,100,117,100,103,100,104,132,1, - 90,77,100,105,100,106,132,0,90,78,100,107,100,108,132,0, - 90,79,100,109,100,110,132,0,90,80,100,2,83,0,41,118, - 97,94,1,0,0,67,111,114,101,32,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,32,111,102,32,112,97,116,104, - 45,98,97,115,101,100,32,105,109,112,111,114,116,46,10,10, - 84,104,105,115,32,109,111,100,117,108,101,32,105,115,32,78, - 79,84,32,109,101,97,110,116,32,116,111,32,98,101,32,100, - 105,114,101,99,116,108,121,32,105,109,112,111,114,116,101,100, - 33,32,73,116,32,104,97,115,32,98,101,101,110,32,100,101, - 115,105,103,110,101,100,32,115,117,99,104,10,116,104,97,116, - 32,105,116,32,99,97,110,32,98,101,32,98,111,111,116,115, - 116,114,97,112,112,101,100,32,105,110,116,111,32,80,121,116, - 104,111,110,32,97,115,32,116,104,101,32,105,109,112,108,101, - 109,101,110,116,97,116,105,111,110,32,111,102,32,105,109,112, - 111,114,116,46,32,65,115,10,115,117,99,104,32,105,116,32, - 114,101,113,117,105,114,101,115,32,116,104,101,32,105,110,106, - 101,99,116,105,111,110,32,111,102,32,115,112,101,99,105,102, - 105,99,32,109,111,100,117,108,101,115,32,97,110,100,32,97, - 116,116,114,105,98,117,116,101,115,32,105,110,32,111,114,100, - 101,114,32,116,111,10,119,111,114,107,46,32,79,110,101,32, - 115,104,111,117,108,100,32,117,115,101,32,105,109,112,111,114, - 116,108,105,98,32,97,115,32,116,104,101,32,112,117,98,108, - 105,99,45,102,97,99,105,110,103,32,118,101,114,115,105,111, - 110,32,111,102,32,116,104,105,115,32,109,111,100,117,108,101, - 46,10,10,233,0,0,0,0,78,90,5,119,105,110,51,50, - 250,1,92,250,1,47,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,3,0,0,0,99,0,0,0,115, - 26,0,0,0,124,0,93,18,125,1,116,0,124,1,131,1, - 100,0,107,2,86,0,1,0,113,2,100,1,83,0,169,2, - 233,1,0,0,0,78,169,1,218,3,108,101,110,169,2,218, - 2,46,48,218,3,115,101,112,169,0,114,10,0,0,0,250, - 38,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,95,101,120, - 116,101,114,110,97,108,62,218,9,60,103,101,110,101,120,112, - 114,62,43,0,0,0,243,0,0,0,0,114,12,0,0,0, - 218,0,99,1,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,4,0,0,0,67,0,0,0,115,22,0,0,0, - 104,0,124,0,93,14,125,1,100,0,124,1,155,0,157,2, - 146,2,113,4,83,0,169,1,250,1,58,114,10,0,0,0, - 169,2,114,8,0,0,0,218,1,115,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,9,60,115,101,116,99, - 111,109,112,62,47,0,0,0,114,13,0,0,0,114,19,0, - 0,0,41,1,218,3,119,105,110,41,2,90,6,99,121,103, - 119,105,110,90,6,100,97,114,119,105,110,99,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 3,0,0,0,115,60,0,0,0,116,0,106,1,160,2,116, - 3,161,1,114,48,116,0,106,1,160,2,116,4,161,1,114, - 30,100,1,137,0,110,4,100,2,137,0,135,0,102,1,100, - 3,100,4,132,8,125,0,110,8,100,5,100,4,132,0,125, - 0,124,0,83,0,41,6,78,90,12,80,89,84,72,79,78, - 67,65,83,69,79,75,115,12,0,0,0,80,89,84,72,79, - 78,67,65,83,69,79,75,99,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,19,0,0,0, - 115,20,0,0,0,116,0,106,1,106,2,12,0,111,18,136, - 0,116,3,106,4,118,0,83,0,41,1,122,94,84,114,117, - 101,32,105,102,32,102,105,108,101,110,97,109,101,115,32,109, - 117,115,116,32,98,101,32,99,104,101,99,107,101,100,32,99, - 97,115,101,45,105,110,115,101,110,115,105,116,105,118,101,108, - 121,32,97,110,100,32,105,103,110,111,114,101,32,101,110,118, - 105,114,111,110,109,101,110,116,32,102,108,97,103,115,32,97, - 114,101,32,110,111,116,32,115,101,116,46,41,5,218,3,115, - 121,115,218,5,102,108,97,103,115,218,18,105,103,110,111,114, - 101,95,101,110,118,105,114,111,110,109,101,110,116,218,3,95, - 111,115,90,7,101,110,118,105,114,111,110,114,10,0,0,0, - 169,1,218,3,107,101,121,114,10,0,0,0,114,11,0,0, - 0,218,11,95,114,101,108,97,120,95,99,97,115,101,64,0, - 0,0,115,2,0,0,0,0,2,122,37,95,109,97,107,101, - 95,114,101,108,97,120,95,99,97,115,101,46,60,108,111,99, - 97,108,115,62,46,95,114,101,108,97,120,95,99,97,115,101, - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,83,0,0,0,115,4,0,0,0,100,1, - 83,0,41,2,122,53,84,114,117,101,32,105,102,32,102,105, - 108,101,110,97,109,101,115,32,109,117,115,116,32,98,101,32, - 99,104,101,99,107,101,100,32,99,97,115,101,45,105,110,115, - 101,110,115,105,116,105,118,101,108,121,46,70,114,10,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,27,0,0,0,68,0,0,0,115,2, - 0,0,0,0,2,41,5,114,21,0,0,0,218,8,112,108, - 97,116,102,111,114,109,218,10,115,116,97,114,116,115,119,105, - 116,104,218,27,95,67,65,83,69,95,73,78,83,69,78,83, - 73,84,73,86,69,95,80,76,65,84,70,79,82,77,83,218, - 35,95,67,65,83,69,95,73,78,83,69,78,83,73,84,73, - 86,69,95,80,76,65,84,70,79,82,77,83,95,83,84,82, - 95,75,69,89,41,1,114,27,0,0,0,114,10,0,0,0, - 114,25,0,0,0,114,11,0,0,0,218,16,95,109,97,107, - 101,95,114,101,108,97,120,95,99,97,115,101,57,0,0,0, - 115,14,0,0,0,0,1,12,1,12,1,6,2,4,2,14, - 4,8,3,114,32,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0, - 0,115,20,0,0,0,116,0,124,0,131,1,100,1,64,0, - 160,1,100,2,100,3,161,2,83,0,41,4,122,42,67,111, - 110,118,101,114,116,32,97,32,51,50,45,98,105,116,32,105, - 110,116,101,103,101,114,32,116,111,32,108,105,116,116,108,101, - 45,101,110,100,105,97,110,46,236,3,0,0,0,255,127,255, - 127,3,0,233,4,0,0,0,218,6,108,105,116,116,108,101, - 41,2,218,3,105,110,116,218,8,116,111,95,98,121,116,101, - 115,41,1,218,1,120,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,12,95,112,97,99,107,95,117,105,110, - 116,51,50,74,0,0,0,115,2,0,0,0,0,2,114,39, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0, - 0,116,0,124,0,131,1,100,1,107,2,115,16,74,0,130, - 1,116,1,160,2,124,0,100,2,161,2,83,0,41,3,122, - 47,67,111,110,118,101,114,116,32,52,32,98,121,116,101,115, - 32,105,110,32,108,105,116,116,108,101,45,101,110,100,105,97, - 110,32,116,111,32,97,110,32,105,110,116,101,103,101,114,46, - 114,34,0,0,0,114,35,0,0,0,169,3,114,6,0,0, - 0,114,36,0,0,0,218,10,102,114,111,109,95,98,121,116, - 101,115,169,1,218,4,100,97,116,97,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,14,95,117,110,112,97, - 99,107,95,117,105,110,116,51,50,79,0,0,0,115,4,0, - 0,0,0,2,16,1,114,44,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 67,0,0,0,115,28,0,0,0,116,0,124,0,131,1,100, - 1,107,2,115,16,74,0,130,1,116,1,160,2,124,0,100, - 2,161,2,83,0,41,3,122,47,67,111,110,118,101,114,116, - 32,50,32,98,121,116,101,115,32,105,110,32,108,105,116,116, - 108,101,45,101,110,100,105,97,110,32,116,111,32,97,110,32, - 105,110,116,101,103,101,114,46,233,2,0,0,0,114,35,0, - 0,0,114,40,0,0,0,114,42,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,14,95,117,110, - 112,97,99,107,95,117,105,110,116,49,54,84,0,0,0,115, - 4,0,0,0,0,2,16,1,114,46,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,4,0, - 0,0,71,0,0,0,115,228,0,0,0,124,0,115,8,100, - 1,83,0,116,0,124,0,131,1,100,2,107,2,114,28,124, - 0,100,3,25,0,83,0,100,1,125,1,103,0,125,2,116, - 1,116,2,106,3,124,0,131,2,68,0,93,122,92,2,125, - 3,125,4,124,3,160,4,116,5,161,1,115,76,124,3,160, - 6,116,5,161,1,114,102,124,3,160,7,116,8,161,1,112, - 88,124,1,125,1,116,9,124,4,23,0,103,1,125,2,113, - 48,124,3,160,6,100,4,161,1,114,152,124,1,160,10,161, - 0,124,3,160,10,161,0,107,3,114,140,124,3,125,1,124, - 4,103,1,125,2,113,170,124,2,160,11,124,4,161,1,1, - 0,113,48,124,3,112,158,124,1,125,1,124,2,160,11,124, - 4,161,1,1,0,113,48,100,5,100,6,132,0,124,2,68, - 0,131,1,125,2,116,0,124,2,131,1,100,2,107,2,114, - 214,124,2,100,3,25,0,115,214,124,1,116,9,23,0,83, - 0,124,1,116,9,160,12,124,2,161,1,23,0,83,0,41, - 7,250,31,82,101,112,108,97,99,101,109,101,110,116,32,102, - 111,114,32,111,115,46,112,97,116,104,46,106,111,105,110,40, - 41,46,114,14,0,0,0,114,4,0,0,0,114,0,0,0, - 0,114,16,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,5,0,0,0,83,0,0,0,115, - 26,0,0,0,103,0,124,0,93,18,125,1,124,1,114,4, - 124,1,160,0,116,1,161,1,145,2,113,4,83,0,114,10, - 0,0,0,169,2,218,6,114,115,116,114,105,112,218,15,112, - 97,116,104,95,115,101,112,97,114,97,116,111,114,115,169,2, - 114,8,0,0,0,218,1,112,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,10,60,108,105,115,116,99,111, - 109,112,62,114,0,0,0,114,13,0,0,0,250,30,95,112, - 97,116,104,95,106,111,105,110,46,60,108,111,99,97,108,115, - 62,46,60,108,105,115,116,99,111,109,112,62,41,13,114,6, - 0,0,0,218,3,109,97,112,114,24,0,0,0,218,15,95, - 112,97,116,104,95,115,112,108,105,116,114,111,111,116,114,29, - 0,0,0,218,14,112,97,116,104,95,115,101,112,95,116,117, - 112,108,101,218,8,101,110,100,115,119,105,116,104,114,49,0, - 0,0,114,50,0,0,0,218,8,112,97,116,104,95,115,101, - 112,218,8,99,97,115,101,102,111,108,100,218,6,97,112,112, - 101,110,100,218,4,106,111,105,110,41,5,218,10,112,97,116, - 104,95,112,97,114,116,115,218,4,114,111,111,116,218,4,112, - 97,116,104,90,8,110,101,119,95,114,111,111,116,218,4,116, - 97,105,108,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,10,95,112,97,116,104,95,106,111,105,110,91,0, - 0,0,115,42,0,0,0,0,2,4,1,4,1,12,1,8, - 1,4,1,4,1,20,1,20,1,14,1,12,1,10,1,16, - 3,4,1,8,2,12,2,8,1,12,1,14,1,20,2,8, - 1,114,67,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,4,0,0,0,71,0,0,0,115, - 20,0,0,0,116,0,160,1,100,1,100,2,132,0,124,0, - 68,0,131,1,161,1,83,0,41,3,114,47,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 5,0,0,0,83,0,0,0,115,26,0,0,0,103,0,124, - 0,93,18,125,1,124,1,114,4,124,1,160,0,116,1,161, - 1,145,2,113,4,83,0,114,10,0,0,0,114,48,0,0, - 0,41,2,114,8,0,0,0,218,4,112,97,114,116,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,53,0, - 0,0,123,0,0,0,115,4,0,0,0,6,1,6,255,114, - 54,0,0,0,41,2,114,59,0,0,0,114,62,0,0,0, - 41,1,114,63,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,67,0,0,0,121,0,0,0,115, - 6,0,0,0,0,2,10,1,2,255,99,1,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,3, - 0,0,0,115,66,0,0,0,116,0,135,0,102,1,100,1, - 100,2,132,8,116,1,68,0,131,1,131,1,125,1,124,1, - 100,3,107,0,114,38,100,4,136,0,102,2,83,0,136,0, - 100,5,124,1,133,2,25,0,136,0,124,1,100,6,23,0, - 100,5,133,2,25,0,102,2,83,0,41,7,122,32,82,101, - 112,108,97,99,101,109,101,110,116,32,102,111,114,32,111,115, - 46,112,97,116,104,46,115,112,108,105,116,40,41,46,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,51,0,0,0,115,24,0,0,0,124,0,93,16, - 125,1,136,0,160,0,124,1,161,1,86,0,1,0,113,2, - 100,0,83,0,169,1,78,41,1,218,5,114,102,105,110,100, - 114,51,0,0,0,169,1,114,65,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,12,0,0,0,129,0,0,0,114, - 13,0,0,0,122,30,95,112,97,116,104,95,115,112,108,105, - 116,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101, - 120,112,114,62,114,0,0,0,0,114,14,0,0,0,78,114, - 4,0,0,0,41,2,218,3,109,97,120,114,50,0,0,0, - 41,2,114,65,0,0,0,218,1,105,114,10,0,0,0,114, - 71,0,0,0,114,11,0,0,0,218,11,95,112,97,116,104, - 95,115,112,108,105,116,127,0,0,0,115,8,0,0,0,0, - 2,22,1,8,1,8,1,114,74,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,67,0,0,0,115,10,0,0,0,116,0,160,1,124,0, - 161,1,83,0,41,1,122,126,83,116,97,116,32,116,104,101, - 32,112,97,116,104,46,10,10,32,32,32,32,77,97,100,101, - 32,97,32,115,101,112,97,114,97,116,101,32,102,117,110,99, - 116,105,111,110,32,116,111,32,109,97,107,101,32,105,116,32, - 101,97,115,105,101,114,32,116,111,32,111,118,101,114,114,105, - 100,101,32,105,110,32,101,120,112,101,114,105,109,101,110,116, - 115,10,32,32,32,32,40,101,46,103,46,32,99,97,99,104, - 101,32,115,116,97,116,32,114,101,115,117,108,116,115,41,46, - 10,10,32,32,32,32,41,2,114,24,0,0,0,90,4,115, - 116,97,116,114,71,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,10,95,112,97,116,104,95,115, - 116,97,116,135,0,0,0,115,2,0,0,0,0,7,114,75, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,8,0,0,0,67,0,0,0,115,48,0,0, - 0,122,12,116,0,124,0,131,1,125,2,87,0,110,20,4, - 0,116,1,121,32,1,0,1,0,1,0,89,0,100,1,83, - 0,48,0,124,2,106,2,100,2,64,0,124,1,107,2,83, - 0,41,3,122,49,84,101,115,116,32,119,104,101,116,104,101, - 114,32,116,104,101,32,112,97,116,104,32,105,115,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,101, - 32,116,121,112,101,46,70,105,0,240,0,0,41,3,114,75, - 0,0,0,218,7,79,83,69,114,114,111,114,218,7,115,116, - 95,109,111,100,101,41,3,114,65,0,0,0,218,4,109,111, - 100,101,90,9,115,116,97,116,95,105,110,102,111,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,18,95,112, - 97,116,104,95,105,115,95,109,111,100,101,95,116,121,112,101, - 145,0,0,0,115,10,0,0,0,0,2,2,1,12,1,12, - 1,8,1,114,79,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,10,0,0,0,116,0,124,0,100,1,131,2,83,0, - 41,2,122,31,82,101,112,108,97,99,101,109,101,110,116,32, - 102,111,114,32,111,115,46,112,97,116,104,46,105,115,102,105, - 108,101,46,105,0,128,0,0,41,1,114,79,0,0,0,114, - 71,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,12,95,112,97,116,104,95,105,115,102,105,108, - 101,154,0,0,0,115,2,0,0,0,0,2,114,80,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,3,0,0,0,67,0,0,0,115,22,0,0,0,124, - 0,115,12,116,0,160,1,161,0,125,0,116,2,124,0,100, - 1,131,2,83,0,41,2,122,30,82,101,112,108,97,99,101, - 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, - 46,105,115,100,105,114,46,105,0,64,0,0,41,3,114,24, - 0,0,0,218,6,103,101,116,99,119,100,114,79,0,0,0, - 114,71,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,11,95,112,97,116,104,95,105,115,100,105, - 114,159,0,0,0,115,6,0,0,0,0,2,4,1,8,1, - 114,82,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,62, - 0,0,0,124,0,115,8,100,1,83,0,116,0,160,1,124, - 0,161,1,100,2,25,0,160,2,100,3,100,4,161,2,125, - 1,116,3,124,1,131,1,100,5,107,4,111,60,124,1,160, - 4,100,6,161,1,112,60,124,1,160,5,100,4,161,1,83, - 0,41,7,250,30,82,101,112,108,97,99,101,109,101,110,116, - 32,102,111,114,32,111,115,46,112,97,116,104,46,105,115,97, - 98,115,46,70,114,0,0,0,0,114,2,0,0,0,114,1, - 0,0,0,114,4,0,0,0,122,2,92,92,41,6,114,24, - 0,0,0,114,56,0,0,0,218,7,114,101,112,108,97,99, - 101,114,6,0,0,0,114,29,0,0,0,114,58,0,0,0, - 41,2,114,65,0,0,0,114,64,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,11,95,112,97, - 116,104,95,105,115,97,98,115,167,0,0,0,115,8,0,0, - 0,0,2,4,1,4,1,22,1,114,85,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, - 0,0,0,67,0,0,0,115,10,0,0,0,124,0,160,0, - 116,1,161,1,83,0,41,1,114,83,0,0,0,41,2,114, - 29,0,0,0,114,50,0,0,0,114,71,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,85,0, - 0,0,175,0,0,0,115,2,0,0,0,0,2,233,182,1, - 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,6, - 0,0,0,11,0,0,0,67,0,0,0,115,178,0,0,0, - 100,1,160,0,124,0,116,1,124,0,131,1,161,2,125,3, - 116,2,160,3,124,3,116,2,106,4,116,2,106,5,66,0, - 116,2,106,6,66,0,124,2,100,2,64,0,161,3,125,4, - 122,70,116,7,160,8,124,4,100,3,161,2,143,26,125,5, - 124,5,160,9,124,1,161,1,1,0,87,0,100,4,4,0, - 4,0,131,3,1,0,110,16,49,0,115,94,48,0,1,0, - 1,0,1,0,89,0,1,0,116,2,160,10,124,3,124,0, - 161,2,1,0,87,0,110,54,4,0,116,11,121,172,1,0, - 1,0,1,0,122,14,116,2,160,12,124,3,161,1,1,0, - 87,0,110,18,4,0,116,11,121,164,1,0,1,0,1,0, - 89,0,110,2,48,0,130,0,89,0,110,2,48,0,100,4, - 83,0,41,5,122,162,66,101,115,116,45,101,102,102,111,114, - 116,32,102,117,110,99,116,105,111,110,32,116,111,32,119,114, - 105,116,101,32,100,97,116,97,32,116,111,32,97,32,112,97, - 116,104,32,97,116,111,109,105,99,97,108,108,121,46,10,32, - 32,32,32,66,101,32,112,114,101,112,97,114,101,100,32,116, - 111,32,104,97,110,100,108,101,32,97,32,70,105,108,101,69, - 120,105,115,116,115,69,114,114,111,114,32,105,102,32,99,111, - 110,99,117,114,114,101,110,116,32,119,114,105,116,105,110,103, - 32,111,102,32,116,104,101,10,32,32,32,32,116,101,109,112, - 111,114,97,114,121,32,102,105,108,101,32,105,115,32,97,116, - 116,101,109,112,116,101,100,46,250,5,123,125,46,123,125,114, - 86,0,0,0,90,2,119,98,78,41,13,218,6,102,111,114, - 109,97,116,218,2,105,100,114,24,0,0,0,90,4,111,112, - 101,110,90,6,79,95,69,88,67,76,90,7,79,95,67,82, - 69,65,84,90,8,79,95,87,82,79,78,76,89,218,3,95, - 105,111,218,6,70,105,108,101,73,79,218,5,119,114,105,116, - 101,114,84,0,0,0,114,76,0,0,0,90,6,117,110,108, - 105,110,107,41,6,114,65,0,0,0,114,43,0,0,0,114, - 78,0,0,0,90,8,112,97,116,104,95,116,109,112,90,2, - 102,100,218,4,102,105,108,101,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,13,95,119,114,105,116,101,95, - 97,116,111,109,105,99,180,0,0,0,115,28,0,0,0,0, - 5,16,1,6,1,22,255,4,2,2,3,14,1,40,1,16, - 1,12,1,2,1,14,1,12,1,6,1,114,94,0,0,0, - 105,97,13,0,0,114,45,0,0,0,114,35,0,0,0,115, - 2,0,0,0,13,10,90,11,95,95,112,121,99,97,99,104, - 101,95,95,122,4,111,112,116,45,122,3,46,112,121,122,4, - 46,112,121,99,41,1,218,12,111,112,116,105,109,105,122,97, - 116,105,111,110,99,2,0,0,0,0,0,0,0,1,0,0, - 0,12,0,0,0,5,0,0,0,67,0,0,0,115,88,1, - 0,0,124,1,100,1,117,1,114,52,116,0,160,1,100,2, - 116,2,161,2,1,0,124,2,100,1,117,1,114,40,100,3, - 125,3,116,3,124,3,131,1,130,1,124,1,114,48,100,4, - 110,2,100,5,125,2,116,4,160,5,124,0,161,1,125,0, - 116,6,124,0,131,1,92,2,125,4,125,5,124,5,160,7, - 100,6,161,1,92,3,125,6,125,7,125,8,116,8,106,9, - 106,10,125,9,124,9,100,1,117,0,114,114,116,11,100,7, - 131,1,130,1,100,4,160,12,124,6,114,126,124,6,110,2, - 124,8,124,7,124,9,103,3,161,1,125,10,124,2,100,1, - 117,0,114,172,116,8,106,13,106,14,100,8,107,2,114,164, - 100,4,125,2,110,8,116,8,106,13,106,14,125,2,116,15, - 124,2,131,1,125,2,124,2,100,4,107,3,114,224,124,2, - 160,16,161,0,115,210,116,17,100,9,160,18,124,2,161,1, - 131,1,130,1,100,10,160,18,124,10,116,19,124,2,161,3, - 125,10,124,10,116,20,100,8,25,0,23,0,125,11,116,8, - 106,21,100,1,117,1,144,1,114,76,116,22,124,4,131,1, - 144,1,115,16,116,23,116,4,160,24,161,0,124,4,131,2, - 125,4,124,4,100,5,25,0,100,11,107,2,144,1,114,56, - 124,4,100,8,25,0,116,25,118,1,144,1,114,56,124,4, - 100,12,100,1,133,2,25,0,125,4,116,23,116,8,106,21, - 124,4,160,26,116,25,161,1,124,11,131,3,83,0,116,23, - 124,4,116,27,124,11,131,3,83,0,41,13,97,254,2,0, - 0,71,105,118,101,110,32,116,104,101,32,112,97,116,104,32, - 116,111,32,97,32,46,112,121,32,102,105,108,101,44,32,114, - 101,116,117,114,110,32,116,104,101,32,112,97,116,104,32,116, - 111,32,105,116,115,32,46,112,121,99,32,102,105,108,101,46, - 10,10,32,32,32,32,84,104,101,32,46,112,121,32,102,105, - 108,101,32,100,111,101,115,32,110,111,116,32,110,101,101,100, - 32,116,111,32,101,120,105,115,116,59,32,116,104,105,115,32, - 115,105,109,112,108,121,32,114,101,116,117,114,110,115,32,116, - 104,101,32,112,97,116,104,32,116,111,32,116,104,101,10,32, - 32,32,32,46,112,121,99,32,102,105,108,101,32,99,97,108, - 99,117,108,97,116,101,100,32,97,115,32,105,102,32,116,104, - 101,32,46,112,121,32,102,105,108,101,32,119,101,114,101,32, - 105,109,112,111,114,116,101,100,46,10,10,32,32,32,32,84, - 104,101,32,39,111,112,116,105,109,105,122,97,116,105,111,110, - 39,32,112,97,114,97,109,101,116,101,114,32,99,111,110,116, - 114,111,108,115,32,116,104,101,32,112,114,101,115,117,109,101, - 100,32,111,112,116,105,109,105,122,97,116,105,111,110,32,108, - 101,118,101,108,32,111,102,10,32,32,32,32,116,104,101,32, - 98,121,116,101,99,111,100,101,32,102,105,108,101,46,32,73, - 102,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, - 32,105,115,32,110,111,116,32,78,111,110,101,44,32,116,104, - 101,32,115,116,114,105,110,103,32,114,101,112,114,101,115,101, - 110,116,97,116,105,111,110,10,32,32,32,32,111,102,32,116, - 104,101,32,97,114,103,117,109,101,110,116,32,105,115,32,116, - 97,107,101,110,32,97,110,100,32,118,101,114,105,102,105,101, - 100,32,116,111,32,98,101,32,97,108,112,104,97,110,117,109, - 101,114,105,99,32,40,101,108,115,101,32,86,97,108,117,101, - 69,114,114,111,114,10,32,32,32,32,105,115,32,114,97,105, - 115,101,100,41,46,10,10,32,32,32,32,84,104,101,32,100, - 101,98,117,103,95,111,118,101,114,114,105,100,101,32,112,97, - 114,97,109,101,116,101,114,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,46,32,73,102,32,100,101,98,117,103,95, - 111,118,101,114,114,105,100,101,32,105,115,32,110,111,116,32, - 78,111,110,101,44,10,32,32,32,32,97,32,84,114,117,101, - 32,118,97,108,117,101,32,105,115,32,116,104,101,32,115,97, - 109,101,32,97,115,32,115,101,116,116,105,110,103,32,39,111, - 112,116,105,109,105,122,97,116,105,111,110,39,32,116,111,32, - 116,104,101,32,101,109,112,116,121,32,115,116,114,105,110,103, - 10,32,32,32,32,119,104,105,108,101,32,97,32,70,97,108, - 115,101,32,118,97,108,117,101,32,105,115,32,101,113,117,105, - 118,97,108,101,110,116,32,116,111,32,115,101,116,116,105,110, - 103,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, - 32,116,111,32,39,49,39,46,10,10,32,32,32,32,73,102, - 32,115,121,115,46,105,109,112,108,101,109,101,110,116,97,116, - 105,111,110,46,99,97,99,104,101,95,116,97,103,32,105,115, - 32,78,111,110,101,32,116,104,101,110,32,78,111,116,73,109, - 112,108,101,109,101,110,116,101,100,69,114,114,111,114,32,105, - 115,32,114,97,105,115,101,100,46,10,10,32,32,32,32,78, - 122,70,116,104,101,32,100,101,98,117,103,95,111,118,101,114, - 114,105,100,101,32,112,97,114,97,109,101,116,101,114,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,59,32,117,115, - 101,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, - 32,105,110,115,116,101,97,100,122,50,100,101,98,117,103,95, - 111,118,101,114,114,105,100,101,32,111,114,32,111,112,116,105, - 109,105,122,97,116,105,111,110,32,109,117,115,116,32,98,101, - 32,115,101,116,32,116,111,32,78,111,110,101,114,14,0,0, - 0,114,4,0,0,0,218,1,46,250,36,115,121,115,46,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,46,99,97, - 99,104,101,95,116,97,103,32,105,115,32,78,111,110,101,114, - 0,0,0,0,122,24,123,33,114,125,32,105,115,32,110,111, - 116,32,97,108,112,104,97,110,117,109,101,114,105,99,122,7, - 123,125,46,123,125,123,125,114,16,0,0,0,114,45,0,0, - 0,41,28,218,9,95,119,97,114,110,105,110,103,115,218,4, - 119,97,114,110,218,18,68,101,112,114,101,99,97,116,105,111, - 110,87,97,114,110,105,110,103,218,9,84,121,112,101,69,114, - 114,111,114,114,24,0,0,0,218,6,102,115,112,97,116,104, - 114,74,0,0,0,218,10,114,112,97,114,116,105,116,105,111, - 110,114,21,0,0,0,218,14,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,218,9,99,97,99,104,101,95,116,97, - 103,218,19,78,111,116,73,109,112,108,101,109,101,110,116,101, - 100,69,114,114,111,114,114,62,0,0,0,114,22,0,0,0, - 218,8,111,112,116,105,109,105,122,101,218,3,115,116,114,218, - 7,105,115,97,108,110,117,109,218,10,86,97,108,117,101,69, - 114,114,111,114,114,88,0,0,0,218,4,95,79,80,84,218, - 17,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88, - 69,83,218,14,112,121,99,97,99,104,101,95,112,114,101,102, - 105,120,114,85,0,0,0,114,67,0,0,0,114,81,0,0, - 0,114,50,0,0,0,218,6,108,115,116,114,105,112,218,8, - 95,80,89,67,65,67,72,69,41,12,114,65,0,0,0,90, - 14,100,101,98,117,103,95,111,118,101,114,114,105,100,101,114, - 95,0,0,0,218,7,109,101,115,115,97,103,101,218,4,104, - 101,97,100,114,66,0,0,0,90,4,98,97,115,101,114,9, - 0,0,0,218,4,114,101,115,116,90,3,116,97,103,90,15, - 97,108,109,111,115,116,95,102,105,108,101,110,97,109,101,218, - 8,102,105,108,101,110,97,109,101,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,218,17,99,97,99,104,101,95, - 102,114,111,109,95,115,111,117,114,99,101,105,1,0,0,115, - 72,0,0,0,0,18,8,1,6,1,2,255,4,2,8,1, - 4,1,8,1,12,1,10,1,12,1,16,1,8,1,8,1, - 8,1,24,1,8,1,12,1,6,2,8,1,8,1,8,1, - 8,1,14,1,14,1,12,1,12,9,10,1,14,5,28,1, - 12,4,2,1,4,1,8,1,2,253,4,5,114,120,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,10,0, - 0,0,5,0,0,0,67,0,0,0,115,46,1,0,0,116, - 0,106,1,106,2,100,1,117,0,114,20,116,3,100,2,131, - 1,130,1,116,4,160,5,124,0,161,1,125,0,116,6,124, - 0,131,1,92,2,125,1,125,2,100,3,125,3,116,0,106, - 7,100,1,117,1,114,102,116,0,106,7,160,8,116,9,161, - 1,125,4,124,1,160,10,124,4,116,11,23,0,161,1,114, - 102,124,1,116,12,124,4,131,1,100,1,133,2,25,0,125, - 1,100,4,125,3,124,3,115,144,116,6,124,1,131,1,92, - 2,125,1,125,5,124,5,116,13,107,3,114,144,116,14,116, - 13,155,0,100,5,124,0,155,2,157,3,131,1,130,1,124, - 2,160,15,100,6,161,1,125,6,124,6,100,7,118,1,114, - 178,116,14,100,8,124,2,155,2,157,2,131,1,130,1,110, - 92,124,6,100,9,107,2,144,1,114,14,124,2,160,16,100, - 6,100,10,161,2,100,11,25,0,125,7,124,7,160,10,116, - 17,161,1,115,228,116,14,100,12,116,17,155,2,157,2,131, - 1,130,1,124,7,116,12,116,17,131,1,100,1,133,2,25, - 0,125,8,124,8,160,18,161,0,144,1,115,14,116,14,100, - 13,124,7,155,2,100,14,157,3,131,1,130,1,124,2,160, - 19,100,6,161,1,100,15,25,0,125,9,116,20,124,1,124, - 9,116,21,100,15,25,0,23,0,131,2,83,0,41,16,97, - 110,1,0,0,71,105,118,101,110,32,116,104,101,32,112,97, - 116,104,32,116,111,32,97,32,46,112,121,99,46,32,102,105, - 108,101,44,32,114,101,116,117,114,110,32,116,104,101,32,112, - 97,116,104,32,116,111,32,105,116,115,32,46,112,121,32,102, - 105,108,101,46,10,10,32,32,32,32,84,104,101,32,46,112, - 121,99,32,102,105,108,101,32,100,111,101,115,32,110,111,116, - 32,110,101,101,100,32,116,111,32,101,120,105,115,116,59,32, - 116,104,105,115,32,115,105,109,112,108,121,32,114,101,116,117, - 114,110,115,32,116,104,101,32,112,97,116,104,32,116,111,10, - 32,32,32,32,116,104,101,32,46,112,121,32,102,105,108,101, - 32,99,97,108,99,117,108,97,116,101,100,32,116,111,32,99, - 111,114,114,101,115,112,111,110,100,32,116,111,32,116,104,101, - 32,46,112,121,99,32,102,105,108,101,46,32,32,73,102,32, - 112,97,116,104,32,100,111,101,115,10,32,32,32,32,110,111, - 116,32,99,111,110,102,111,114,109,32,116,111,32,80,69,80, - 32,51,49,52,55,47,52,56,56,32,102,111,114,109,97,116, - 44,32,86,97,108,117,101,69,114,114,111,114,32,119,105,108, - 108,32,98,101,32,114,97,105,115,101,100,46,32,73,102,10, - 32,32,32,32,115,121,115,46,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,46,99,97,99,104,101,95,116,97,103, - 32,105,115,32,78,111,110,101,32,116,104,101,110,32,78,111, - 116,73,109,112,108,101,109,101,110,116,101,100,69,114,114,111, - 114,32,105,115,32,114,97,105,115,101,100,46,10,10,32,32, - 32,32,78,114,97,0,0,0,70,84,122,31,32,110,111,116, - 32,98,111,116,116,111,109,45,108,101,118,101,108,32,100,105, - 114,101,99,116,111,114,121,32,105,110,32,114,96,0,0,0, - 62,2,0,0,0,114,45,0,0,0,233,3,0,0,0,122, - 29,101,120,112,101,99,116,101,100,32,111,110,108,121,32,50, - 32,111,114,32,51,32,100,111,116,115,32,105,110,32,114,121, - 0,0,0,114,45,0,0,0,233,254,255,255,255,122,53,111, - 112,116,105,109,105,122,97,116,105,111,110,32,112,111,114,116, - 105,111,110,32,111,102,32,102,105,108,101,110,97,109,101,32, - 100,111,101,115,32,110,111,116,32,115,116,97,114,116,32,119, - 105,116,104,32,122,19,111,112,116,105,109,105,122,97,116,105, - 111,110,32,108,101,118,101,108,32,122,29,32,105,115,32,110, - 111,116,32,97,110,32,97,108,112,104,97,110,117,109,101,114, - 105,99,32,118,97,108,117,101,114,0,0,0,0,41,22,114, - 21,0,0,0,114,104,0,0,0,114,105,0,0,0,114,106, - 0,0,0,114,24,0,0,0,114,102,0,0,0,114,74,0, - 0,0,114,113,0,0,0,114,49,0,0,0,114,50,0,0, - 0,114,29,0,0,0,114,59,0,0,0,114,6,0,0,0, - 114,115,0,0,0,114,110,0,0,0,218,5,99,111,117,110, - 116,218,6,114,115,112,108,105,116,114,111,0,0,0,114,109, - 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,67, - 0,0,0,218,15,83,79,85,82,67,69,95,83,85,70,70, - 73,88,69,83,41,10,114,65,0,0,0,114,117,0,0,0, - 90,16,112,121,99,97,99,104,101,95,102,105,108,101,110,97, - 109,101,90,23,102,111,117,110,100,95,105,110,95,112,121,99, - 97,99,104,101,95,112,114,101,102,105,120,90,13,115,116,114, - 105,112,112,101,100,95,112,97,116,104,90,7,112,121,99,97, - 99,104,101,90,9,100,111,116,95,99,111,117,110,116,114,95, - 0,0,0,90,9,111,112,116,95,108,101,118,101,108,90,13, - 98,97,115,101,95,102,105,108,101,110,97,109,101,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,17,115,111, - 117,114,99,101,95,102,114,111,109,95,99,97,99,104,101,176, - 1,0,0,115,60,0,0,0,0,9,12,1,8,1,10,1, - 12,1,4,1,10,1,12,1,14,1,16,1,4,1,4,1, - 12,1,8,1,8,1,2,255,8,2,10,1,8,1,16,1, - 10,1,16,1,10,1,4,1,2,255,8,2,16,1,10,1, - 16,2,14,1,114,127,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,9,0,0,0,67,0, - 0,0,115,124,0,0,0,116,0,124,0,131,1,100,1,107, - 2,114,16,100,2,83,0,124,0,160,1,100,3,161,1,92, - 3,125,1,125,2,125,3,124,1,114,56,124,3,160,2,161, - 0,100,4,100,5,133,2,25,0,100,6,107,3,114,60,124, - 0,83,0,122,12,116,3,124,0,131,1,125,4,87,0,110, - 34,4,0,116,4,116,5,102,2,121,106,1,0,1,0,1, - 0,124,0,100,2,100,5,133,2,25,0,125,4,89,0,110, - 2,48,0,116,6,124,4,131,1,114,120,124,4,83,0,124, - 0,83,0,41,7,122,188,67,111,110,118,101,114,116,32,97, - 32,98,121,116,101,99,111,100,101,32,102,105,108,101,32,112, - 97,116,104,32,116,111,32,97,32,115,111,117,114,99,101,32, - 112,97,116,104,32,40,105,102,32,112,111,115,115,105,98,108, - 101,41,46,10,10,32,32,32,32,84,104,105,115,32,102,117, - 110,99,116,105,111,110,32,101,120,105,115,116,115,32,112,117, - 114,101,108,121,32,102,111,114,32,98,97,99,107,119,97,114, - 100,115,45,99,111,109,112,97,116,105,98,105,108,105,116,121, - 32,102,111,114,10,32,32,32,32,80,121,73,109,112,111,114, - 116,95,69,120,101,99,67,111,100,101,77,111,100,117,108,101, - 87,105,116,104,70,105,108,101,110,97,109,101,115,40,41,32, - 105,110,32,116,104,101,32,67,32,65,80,73,46,10,10,32, - 32,32,32,114,0,0,0,0,78,114,96,0,0,0,233,253, - 255,255,255,233,255,255,255,255,90,2,112,121,41,7,114,6, - 0,0,0,114,103,0,0,0,218,5,108,111,119,101,114,114, - 127,0,0,0,114,106,0,0,0,114,110,0,0,0,114,80, - 0,0,0,41,5,218,13,98,121,116,101,99,111,100,101,95, - 112,97,116,104,114,118,0,0,0,218,1,95,90,9,101,120, - 116,101,110,115,105,111,110,218,11,115,111,117,114,99,101,95, - 112,97,116,104,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,15,95,103,101,116,95,115,111,117,114,99,101, - 102,105,108,101,216,1,0,0,115,20,0,0,0,0,7,12, - 1,4,1,16,1,24,1,4,1,2,1,12,1,16,1,18, - 1,114,134,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,8,0,0,0,67,0,0,0,115, - 72,0,0,0,124,0,160,0,116,1,116,2,131,1,161,1, - 114,46,122,10,116,3,124,0,131,1,87,0,83,0,4,0, - 116,4,121,42,1,0,1,0,1,0,89,0,113,68,48,0, - 110,22,124,0,160,0,116,1,116,5,131,1,161,1,114,64, - 124,0,83,0,100,0,83,0,100,0,83,0,114,69,0,0, - 0,41,6,114,58,0,0,0,218,5,116,117,112,108,101,114, - 126,0,0,0,114,120,0,0,0,114,106,0,0,0,114,112, - 0,0,0,41,1,114,119,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,11,95,103,101,116,95, - 99,97,99,104,101,100,235,1,0,0,115,16,0,0,0,0, - 1,14,1,2,1,10,1,12,1,8,1,14,1,4,2,114, - 136,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,8,0,0,0,67,0,0,0,115,50,0, - 0,0,122,14,116,0,124,0,131,1,106,1,125,1,87,0, - 110,22,4,0,116,2,121,36,1,0,1,0,1,0,100,1, - 125,1,89,0,110,2,48,0,124,1,100,2,79,0,125,1, - 124,1,83,0,41,3,122,51,67,97,108,99,117,108,97,116, - 101,32,116,104,101,32,109,111,100,101,32,112,101,114,109,105, - 115,115,105,111,110,115,32,102,111,114,32,97,32,98,121,116, - 101,99,111,100,101,32,102,105,108,101,46,114,86,0,0,0, - 233,128,0,0,0,41,3,114,75,0,0,0,114,77,0,0, - 0,114,76,0,0,0,41,2,114,65,0,0,0,114,78,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,10,95,99,97,108,99,95,109,111,100,101,247,1,0, - 0,115,12,0,0,0,0,2,2,1,14,1,12,1,10,3, - 8,1,114,138,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,8,0,0,0,3,0,0,0, - 115,66,0,0,0,100,6,135,0,102,1,100,2,100,3,132, - 9,125,1,122,10,116,0,106,1,125,2,87,0,110,26,4, - 0,116,2,121,50,1,0,1,0,1,0,100,4,100,5,132, - 0,125,2,89,0,110,2,48,0,124,2,124,1,136,0,131, - 2,1,0,124,1,83,0,41,7,122,252,68,101,99,111,114, - 97,116,111,114,32,116,111,32,118,101,114,105,102,121,32,116, - 104,97,116,32,116,104,101,32,109,111,100,117,108,101,32,98, - 101,105,110,103,32,114,101,113,117,101,115,116,101,100,32,109, - 97,116,99,104,101,115,32,116,104,101,32,111,110,101,32,116, - 104,101,10,32,32,32,32,108,111,97,100,101,114,32,99,97, - 110,32,104,97,110,100,108,101,46,10,10,32,32,32,32,84, - 104,101,32,102,105,114,115,116,32,97,114,103,117,109,101,110, - 116,32,40,115,101,108,102,41,32,109,117,115,116,32,100,101, - 102,105,110,101,32,95,110,97,109,101,32,119,104,105,99,104, - 32,116,104,101,32,115,101,99,111,110,100,32,97,114,103,117, - 109,101,110,116,32,105,115,10,32,32,32,32,99,111,109,112, - 97,114,101,100,32,97,103,97,105,110,115,116,46,32,73,102, - 32,116,104,101,32,99,111,109,112,97,114,105,115,111,110,32, - 102,97,105,108,115,32,116,104,101,110,32,73,109,112,111,114, - 116,69,114,114,111,114,32,105,115,32,114,97,105,115,101,100, - 46,10,10,32,32,32,32,78,99,2,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,4,0,0,0,31,0,0, - 0,115,72,0,0,0,124,1,100,0,117,0,114,16,124,0, - 106,0,125,1,110,32,124,0,106,0,124,1,107,3,114,48, - 116,1,100,1,124,0,106,0,124,1,102,2,22,0,124,1, - 100,2,141,2,130,1,136,0,124,0,124,1,103,2,124,2, - 162,1,82,0,105,0,124,3,164,1,142,1,83,0,41,3, - 78,122,30,108,111,97,100,101,114,32,102,111,114,32,37,115, - 32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,37, - 115,169,1,218,4,110,97,109,101,41,2,114,140,0,0,0, - 218,11,73,109,112,111,114,116,69,114,114,111,114,41,4,218, - 4,115,101,108,102,114,140,0,0,0,218,4,97,114,103,115, - 218,6,107,119,97,114,103,115,169,1,218,6,109,101,116,104, - 111,100,114,10,0,0,0,114,11,0,0,0,218,19,95,99, - 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, - 114,11,2,0,0,115,18,0,0,0,0,1,8,1,8,1, - 10,1,4,1,8,255,2,1,2,255,6,2,122,40,95,99, - 104,101,99,107,95,110,97,109,101,46,60,108,111,99,97,108, - 115,62,46,95,99,104,101,99,107,95,110,97,109,101,95,119, - 114,97,112,112,101,114,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,7,0,0,0,83,0,0,0,115, - 56,0,0,0,100,1,68,0,93,32,125,2,116,0,124,1, - 124,2,131,2,114,4,116,1,124,0,124,2,116,2,124,1, - 124,2,131,2,131,3,1,0,113,4,124,0,106,3,160,4, - 124,1,106,3,161,1,1,0,100,0,83,0,41,2,78,41, - 4,218,10,95,95,109,111,100,117,108,101,95,95,218,8,95, - 95,110,97,109,101,95,95,218,12,95,95,113,117,97,108,110, - 97,109,101,95,95,218,7,95,95,100,111,99,95,95,41,5, - 218,7,104,97,115,97,116,116,114,218,7,115,101,116,97,116, - 116,114,218,7,103,101,116,97,116,116,114,218,8,95,95,100, - 105,99,116,95,95,218,6,117,112,100,97,116,101,41,3,90, - 3,110,101,119,90,3,111,108,100,114,84,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,218,5,95, - 119,114,97,112,22,2,0,0,115,8,0,0,0,0,1,8, - 1,10,1,20,1,122,26,95,99,104,101,99,107,95,110,97, - 109,101,46,60,108,111,99,97,108,115,62,46,95,119,114,97, - 112,41,1,78,41,3,218,10,95,98,111,111,116,115,116,114, - 97,112,114,157,0,0,0,218,9,78,97,109,101,69,114,114, - 111,114,41,3,114,146,0,0,0,114,147,0,0,0,114,157, - 0,0,0,114,10,0,0,0,114,145,0,0,0,114,11,0, - 0,0,218,11,95,99,104,101,99,107,95,110,97,109,101,3, - 2,0,0,115,14,0,0,0,0,8,14,7,2,1,10,1, - 12,2,14,5,10,1,114,160,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, - 67,0,0,0,115,60,0,0,0,124,0,160,0,124,1,161, - 1,92,2,125,2,125,3,124,2,100,1,117,0,114,56,116, - 1,124,3,131,1,114,56,100,2,125,4,116,2,160,3,124, - 4,160,4,124,3,100,3,25,0,161,1,116,5,161,2,1, - 0,124,2,83,0,41,4,122,155,84,114,121,32,116,111,32, - 102,105,110,100,32,97,32,108,111,97,100,101,114,32,102,111, - 114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, - 109,111,100,117,108,101,32,98,121,32,100,101,108,101,103,97, - 116,105,110,103,32,116,111,10,32,32,32,32,115,101,108,102, - 46,102,105,110,100,95,108,111,97,100,101,114,40,41,46,10, - 10,32,32,32,32,84,104,105,115,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,32,105, - 110,32,102,97,118,111,114,32,111,102,32,102,105,110,100,101, - 114,46,102,105,110,100,95,115,112,101,99,40,41,46,10,10, - 32,32,32,32,78,122,44,78,111,116,32,105,109,112,111,114, - 116,105,110,103,32,100,105,114,101,99,116,111,114,121,32,123, - 125,58,32,109,105,115,115,105,110,103,32,95,95,105,110,105, - 116,95,95,114,0,0,0,0,41,6,218,11,102,105,110,100, - 95,108,111,97,100,101,114,114,6,0,0,0,114,98,0,0, - 0,114,99,0,0,0,114,88,0,0,0,218,13,73,109,112, - 111,114,116,87,97,114,110,105,110,103,41,5,114,142,0,0, - 0,218,8,102,117,108,108,110,97,109,101,218,6,108,111,97, - 100,101,114,218,8,112,111,114,116,105,111,110,115,218,3,109, - 115,103,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,17,95,102,105,110,100,95,109,111,100,117,108,101,95, - 115,104,105,109,31,2,0,0,115,10,0,0,0,0,10,14, - 1,16,1,4,1,22,1,114,167,0,0,0,99,3,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0, - 0,67,0,0,0,115,166,0,0,0,124,0,100,1,100,2, - 133,2,25,0,125,3,124,3,116,0,107,3,114,64,100,3, - 124,1,155,2,100,4,124,3,155,2,157,4,125,4,116,1, - 160,2,100,5,124,4,161,2,1,0,116,3,124,4,102,1, - 105,0,124,2,164,1,142,1,130,1,116,4,124,0,131,1, - 100,6,107,0,114,106,100,7,124,1,155,2,157,2,125,4, - 116,1,160,2,100,5,124,4,161,2,1,0,116,5,124,4, - 131,1,130,1,116,6,124,0,100,2,100,8,133,2,25,0, - 131,1,125,5,124,5,100,9,64,0,114,162,100,10,124,5, - 155,2,100,11,124,1,155,2,157,4,125,4,116,3,124,4, - 102,1,105,0,124,2,164,1,142,1,130,1,124,5,83,0, - 41,12,97,84,2,0,0,80,101,114,102,111,114,109,32,98, - 97,115,105,99,32,118,97,108,105,100,105,116,121,32,99,104, - 101,99,107,105,110,103,32,111,102,32,97,32,112,121,99,32, - 104,101,97,100,101,114,32,97,110,100,32,114,101,116,117,114, - 110,32,116,104,101,32,102,108,97,103,115,32,102,105,101,108, - 100,44,10,32,32,32,32,119,104,105,99,104,32,100,101,116, - 101,114,109,105,110,101,115,32,104,111,119,32,116,104,101,32, - 112,121,99,32,115,104,111,117,108,100,32,98,101,32,102,117, - 114,116,104,101,114,32,118,97,108,105,100,97,116,101,100,32, - 97,103,97,105,110,115,116,32,116,104,101,32,115,111,117,114, - 99,101,46,10,10,32,32,32,32,42,100,97,116,97,42,32, - 105,115,32,116,104,101,32,99,111,110,116,101,110,116,115,32, - 111,102,32,116,104,101,32,112,121,99,32,102,105,108,101,46, - 32,40,79,110,108,121,32,116,104,101,32,102,105,114,115,116, - 32,49,54,32,98,121,116,101,115,32,97,114,101,10,32,32, - 32,32,114,101,113,117,105,114,101,100,44,32,116,104,111,117, - 103,104,46,41,10,10,32,32,32,32,42,110,97,109,101,42, - 32,105,115,32,116,104,101,32,110,97,109,101,32,111,102,32, - 116,104,101,32,109,111,100,117,108,101,32,98,101,105,110,103, - 32,105,109,112,111,114,116,101,100,46,32,73,116,32,105,115, - 32,117,115,101,100,32,102,111,114,32,108,111,103,103,105,110, - 103,46,10,10,32,32,32,32,42,101,120,99,95,100,101,116, - 97,105,108,115,42,32,105,115,32,97,32,100,105,99,116,105, - 111,110,97,114,121,32,112,97,115,115,101,100,32,116,111,32, - 73,109,112,111,114,116,69,114,114,111,114,32,105,102,32,105, - 116,32,114,97,105,115,101,100,32,102,111,114,10,32,32,32, - 32,105,109,112,114,111,118,101,100,32,100,101,98,117,103,103, - 105,110,103,46,10,10,32,32,32,32,73,109,112,111,114,116, - 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,32, - 119,104,101,110,32,116,104,101,32,109,97,103,105,99,32,110, - 117,109,98,101,114,32,105,115,32,105,110,99,111,114,114,101, - 99,116,32,111,114,32,119,104,101,110,32,116,104,101,32,102, - 108,97,103,115,10,32,32,32,32,102,105,101,108,100,32,105, - 115,32,105,110,118,97,108,105,100,46,32,69,79,70,69,114, - 114,111,114,32,105,115,32,114,97,105,115,101,100,32,119,104, - 101,110,32,116,104,101,32,100,97,116,97,32,105,115,32,102, - 111,117,110,100,32,116,111,32,98,101,32,116,114,117,110,99, - 97,116,101,100,46,10,10,32,32,32,32,78,114,34,0,0, - 0,122,20,98,97,100,32,109,97,103,105,99,32,110,117,109, - 98,101,114,32,105,110,32,122,2,58,32,250,2,123,125,233, - 16,0,0,0,122,40,114,101,97,99,104,101,100,32,69,79, - 70,32,119,104,105,108,101,32,114,101,97,100,105,110,103,32, - 112,121,99,32,104,101,97,100,101,114,32,111,102,32,233,8, - 0,0,0,233,252,255,255,255,122,14,105,110,118,97,108,105, - 100,32,102,108,97,103,115,32,122,4,32,105,110,32,41,7, - 218,12,77,65,71,73,67,95,78,85,77,66,69,82,114,158, - 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, - 115,115,97,103,101,114,141,0,0,0,114,6,0,0,0,218, - 8,69,79,70,69,114,114,111,114,114,44,0,0,0,41,6, - 114,43,0,0,0,114,140,0,0,0,218,11,101,120,99,95, - 100,101,116,97,105,108,115,90,5,109,97,103,105,99,114,116, - 0,0,0,114,22,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,13,95,99,108,97,115,115,105, - 102,121,95,112,121,99,48,2,0,0,115,28,0,0,0,0, - 16,12,1,8,1,16,1,12,1,16,1,12,1,10,1,12, - 1,8,1,16,2,8,1,16,1,16,1,114,176,0,0,0, - 99,5,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,4,0,0,0,67,0,0,0,115,120,0,0,0,116,0, - 124,0,100,1,100,2,133,2,25,0,131,1,124,1,100,3, - 64,0,107,3,114,62,100,4,124,3,155,2,157,2,125,5, - 116,1,160,2,100,5,124,5,161,2,1,0,116,3,124,5, - 102,1,105,0,124,4,164,1,142,1,130,1,124,2,100,6, - 117,1,114,116,116,0,124,0,100,2,100,7,133,2,25,0, - 131,1,124,2,100,3,64,0,107,3,114,116,116,3,100,4, - 124,3,155,2,157,2,102,1,105,0,124,4,164,1,142,1, - 130,1,100,6,83,0,41,8,97,7,2,0,0,86,97,108, - 105,100,97,116,101,32,97,32,112,121,99,32,97,103,97,105, - 110,115,116,32,116,104,101,32,115,111,117,114,99,101,32,108, - 97,115,116,45,109,111,100,105,102,105,101,100,32,116,105,109, - 101,46,10,10,32,32,32,32,42,100,97,116,97,42,32,105, - 115,32,116,104,101,32,99,111,110,116,101,110,116,115,32,111, - 102,32,116,104,101,32,112,121,99,32,102,105,108,101,46,32, - 40,79,110,108,121,32,116,104,101,32,102,105,114,115,116,32, - 49,54,32,98,121,116,101,115,32,97,114,101,10,32,32,32, - 32,114,101,113,117,105,114,101,100,46,41,10,10,32,32,32, - 32,42,115,111,117,114,99,101,95,109,116,105,109,101,42,32, - 105,115,32,116,104,101,32,108,97,115,116,32,109,111,100,105, - 102,105,101,100,32,116,105,109,101,115,116,97,109,112,32,111, - 102,32,116,104,101,32,115,111,117,114,99,101,32,102,105,108, - 101,46,10,10,32,32,32,32,42,115,111,117,114,99,101,95, - 115,105,122,101,42,32,105,115,32,78,111,110,101,32,111,114, - 32,116,104,101,32,115,105,122,101,32,111,102,32,116,104,101, - 32,115,111,117,114,99,101,32,102,105,108,101,32,105,110,32, - 98,121,116,101,115,46,10,10,32,32,32,32,42,110,97,109, - 101,42,32,105,115,32,116,104,101,32,110,97,109,101,32,111, - 102,32,116,104,101,32,109,111,100,117,108,101,32,98,101,105, - 110,103,32,105,109,112,111,114,116,101,100,46,32,73,116,32, - 105,115,32,117,115,101,100,32,102,111,114,32,108,111,103,103, - 105,110,103,46,10,10,32,32,32,32,42,101,120,99,95,100, - 101,116,97,105,108,115,42,32,105,115,32,97,32,100,105,99, - 116,105,111,110,97,114,121,32,112,97,115,115,101,100,32,116, - 111,32,73,109,112,111,114,116,69,114,114,111,114,32,105,102, - 32,105,116,32,114,97,105,115,101,100,32,102,111,114,10,32, - 32,32,32,105,109,112,114,111,118,101,100,32,100,101,98,117, - 103,103,105,110,103,46,10,10,32,32,32,32,65,110,32,73, - 109,112,111,114,116,69,114,114,111,114,32,105,115,32,114,97, - 105,115,101,100,32,105,102,32,116,104,101,32,98,121,116,101, - 99,111,100,101,32,105,115,32,115,116,97,108,101,46,10,10, - 32,32,32,32,114,170,0,0,0,233,12,0,0,0,114,33, - 0,0,0,122,22,98,121,116,101,99,111,100,101,32,105,115, - 32,115,116,97,108,101,32,102,111,114,32,114,168,0,0,0, - 78,114,169,0,0,0,41,4,114,44,0,0,0,114,158,0, - 0,0,114,173,0,0,0,114,141,0,0,0,41,6,114,43, - 0,0,0,218,12,115,111,117,114,99,101,95,109,116,105,109, - 101,218,11,115,111,117,114,99,101,95,115,105,122,101,114,140, - 0,0,0,114,175,0,0,0,114,116,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,23,95,118, - 97,108,105,100,97,116,101,95,116,105,109,101,115,116,97,109, - 112,95,112,121,99,81,2,0,0,115,16,0,0,0,0,19, - 24,1,10,1,12,1,16,1,8,1,22,255,2,2,114,180, - 0,0,0,99,4,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,4,0,0,0,67,0,0,0,115,42,0,0, - 0,124,0,100,1,100,2,133,2,25,0,124,1,107,3,114, - 38,116,0,100,3,124,2,155,2,157,2,102,1,105,0,124, - 3,164,1,142,1,130,1,100,4,83,0,41,5,97,243,1, - 0,0,86,97,108,105,100,97,116,101,32,97,32,104,97,115, - 104,45,98,97,115,101,100,32,112,121,99,32,98,121,32,99, - 104,101,99,107,105,110,103,32,116,104,101,32,114,101,97,108, - 32,115,111,117,114,99,101,32,104,97,115,104,32,97,103,97, - 105,110,115,116,32,116,104,101,32,111,110,101,32,105,110,10, - 32,32,32,32,116,104,101,32,112,121,99,32,104,101,97,100, - 101,114,46,10,10,32,32,32,32,42,100,97,116,97,42,32, - 105,115,32,116,104,101,32,99,111,110,116,101,110,116,115,32, - 111,102,32,116,104,101,32,112,121,99,32,102,105,108,101,46, - 32,40,79,110,108,121,32,116,104,101,32,102,105,114,115,116, - 32,49,54,32,98,121,116,101,115,32,97,114,101,10,32,32, - 32,32,114,101,113,117,105,114,101,100,46,41,10,10,32,32, - 32,32,42,115,111,117,114,99,101,95,104,97,115,104,42,32, - 105,115,32,116,104,101,32,105,109,112,111,114,116,108,105,98, - 46,117,116,105,108,46,115,111,117,114,99,101,95,104,97,115, - 104,40,41,32,111,102,32,116,104,101,32,115,111,117,114,99, - 101,32,102,105,108,101,46,10,10,32,32,32,32,42,110,97, - 109,101,42,32,105,115,32,116,104,101,32,110,97,109,101,32, - 111,102,32,116,104,101,32,109,111,100,117,108,101,32,98,101, - 105,110,103,32,105,109,112,111,114,116,101,100,46,32,73,116, - 32,105,115,32,117,115,101,100,32,102,111,114,32,108,111,103, - 103,105,110,103,46,10,10,32,32,32,32,42,101,120,99,95, - 100,101,116,97,105,108,115,42,32,105,115,32,97,32,100,105, - 99,116,105,111,110,97,114,121,32,112,97,115,115,101,100,32, - 116,111,32,73,109,112,111,114,116,69,114,114,111,114,32,105, - 102,32,105,116,32,114,97,105,115,101,100,32,102,111,114,10, - 32,32,32,32,105,109,112,114,111,118,101,100,32,100,101,98, - 117,103,103,105,110,103,46,10,10,32,32,32,32,65,110,32, - 73,109,112,111,114,116,69,114,114,111,114,32,105,115,32,114, - 97,105,115,101,100,32,105,102,32,116,104,101,32,98,121,116, - 101,99,111,100,101,32,105,115,32,115,116,97,108,101,46,10, - 10,32,32,32,32,114,170,0,0,0,114,169,0,0,0,122, - 46,104,97,115,104,32,105,110,32,98,121,116,101,99,111,100, - 101,32,100,111,101,115,110,39,116,32,109,97,116,99,104,32, - 104,97,115,104,32,111,102,32,115,111,117,114,99,101,32,78, - 41,1,114,141,0,0,0,41,4,114,43,0,0,0,218,11, - 115,111,117,114,99,101,95,104,97,115,104,114,140,0,0,0, - 114,175,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,18,95,118,97,108,105,100,97,116,101,95, - 104,97,115,104,95,112,121,99,109,2,0,0,115,12,0,0, - 0,0,17,16,1,2,1,8,255,4,2,2,254,114,182,0, - 0,0,99,4,0,0,0,0,0,0,0,0,0,0,0,5, - 0,0,0,5,0,0,0,67,0,0,0,115,80,0,0,0, - 116,0,160,1,124,0,161,1,125,4,116,2,124,4,116,3, - 131,2,114,56,116,4,160,5,100,1,124,2,161,2,1,0, - 124,3,100,2,117,1,114,52,116,6,160,7,124,4,124,3, - 161,2,1,0,124,4,83,0,116,8,100,3,160,9,124,2, - 161,1,124,1,124,2,100,4,141,3,130,1,100,2,83,0, - 41,5,122,35,67,111,109,112,105,108,101,32,98,121,116,101, - 99,111,100,101,32,97,115,32,102,111,117,110,100,32,105,110, - 32,97,32,112,121,99,46,122,21,99,111,100,101,32,111,98, - 106,101,99,116,32,102,114,111,109,32,123,33,114,125,78,122, - 23,78,111,110,45,99,111,100,101,32,111,98,106,101,99,116, - 32,105,110,32,123,33,114,125,169,2,114,140,0,0,0,114, - 65,0,0,0,41,10,218,7,109,97,114,115,104,97,108,90, - 5,108,111,97,100,115,218,10,105,115,105,110,115,116,97,110, - 99,101,218,10,95,99,111,100,101,95,116,121,112,101,114,158, - 0,0,0,114,173,0,0,0,218,4,95,105,109,112,90,16, - 95,102,105,120,95,99,111,95,102,105,108,101,110,97,109,101, - 114,141,0,0,0,114,88,0,0,0,41,5,114,43,0,0, - 0,114,140,0,0,0,114,131,0,0,0,114,133,0,0,0, - 218,4,99,111,100,101,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,17,95,99,111,109,112,105,108,101,95, - 98,121,116,101,99,111,100,101,133,2,0,0,115,18,0,0, - 0,0,2,10,1,10,1,12,1,8,1,12,1,4,2,10, - 1,4,255,114,189,0,0,0,99,3,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,5,0,0,0,67,0,0, - 0,115,70,0,0,0,116,0,116,1,131,1,125,3,124,3, - 160,2,116,3,100,1,131,1,161,1,1,0,124,3,160,2, - 116,3,124,1,131,1,161,1,1,0,124,3,160,2,116,3, - 124,2,131,1,161,1,1,0,124,3,160,2,116,4,160,5, - 124,0,161,1,161,1,1,0,124,3,83,0,41,2,122,43, - 80,114,111,100,117,99,101,32,116,104,101,32,100,97,116,97, - 32,102,111,114,32,97,32,116,105,109,101,115,116,97,109,112, - 45,98,97,115,101,100,32,112,121,99,46,114,0,0,0,0, - 41,6,218,9,98,121,116,101,97,114,114,97,121,114,172,0, - 0,0,218,6,101,120,116,101,110,100,114,39,0,0,0,114, - 184,0,0,0,218,5,100,117,109,112,115,41,4,114,188,0, - 0,0,218,5,109,116,105,109,101,114,179,0,0,0,114,43, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,22,95,99,111,100,101,95,116,111,95,116,105,109, - 101,115,116,97,109,112,95,112,121,99,146,2,0,0,115,12, - 0,0,0,0,2,8,1,14,1,14,1,14,1,16,1,114, - 194,0,0,0,84,99,3,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,5,0,0,0,67,0,0,0,115,80, - 0,0,0,116,0,116,1,131,1,125,3,100,1,124,2,100, - 1,62,0,66,0,125,4,124,3,160,2,116,3,124,4,131, - 1,161,1,1,0,116,4,124,1,131,1,100,2,107,2,115, - 50,74,0,130,1,124,3,160,2,124,1,161,1,1,0,124, - 3,160,2,116,5,160,6,124,0,161,1,161,1,1,0,124, - 3,83,0,41,3,122,38,80,114,111,100,117,99,101,32,116, - 104,101,32,100,97,116,97,32,102,111,114,32,97,32,104,97, - 115,104,45,98,97,115,101,100,32,112,121,99,46,114,4,0, - 0,0,114,170,0,0,0,41,7,114,190,0,0,0,114,172, - 0,0,0,114,191,0,0,0,114,39,0,0,0,114,6,0, - 0,0,114,184,0,0,0,114,192,0,0,0,41,5,114,188, - 0,0,0,114,181,0,0,0,90,7,99,104,101,99,107,101, - 100,114,43,0,0,0,114,22,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,17,95,99,111,100, - 101,95,116,111,95,104,97,115,104,95,112,121,99,156,2,0, - 0,115,14,0,0,0,0,2,8,1,12,1,14,1,16,1, - 10,1,16,1,114,195,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,6,0,0,0,67,0, - 0,0,115,62,0,0,0,100,1,100,2,108,0,125,1,116, - 1,160,2,124,0,161,1,106,3,125,2,124,1,160,4,124, - 2,161,1,125,3,116,1,160,5,100,2,100,3,161,2,125, - 4,124,4,160,6,124,0,160,6,124,3,100,1,25,0,161, - 1,161,1,83,0,41,4,122,121,68,101,99,111,100,101,32, - 98,121,116,101,115,32,114,101,112,114,101,115,101,110,116,105, - 110,103,32,115,111,117,114,99,101,32,99,111,100,101,32,97, - 110,100,32,114,101,116,117,114,110,32,116,104,101,32,115,116, - 114,105,110,103,46,10,10,32,32,32,32,85,110,105,118,101, - 114,115,97,108,32,110,101,119,108,105,110,101,32,115,117,112, - 112,111,114,116,32,105,115,32,117,115,101,100,32,105,110,32, - 116,104,101,32,100,101,99,111,100,105,110,103,46,10,32,32, - 32,32,114,0,0,0,0,78,84,41,7,218,8,116,111,107, - 101,110,105,122,101,114,90,0,0,0,90,7,66,121,116,101, - 115,73,79,90,8,114,101,97,100,108,105,110,101,90,15,100, - 101,116,101,99,116,95,101,110,99,111,100,105,110,103,90,25, - 73,110,99,114,101,109,101,110,116,97,108,78,101,119,108,105, - 110,101,68,101,99,111,100,101,114,218,6,100,101,99,111,100, - 101,41,5,218,12,115,111,117,114,99,101,95,98,121,116,101, - 115,114,196,0,0,0,90,21,115,111,117,114,99,101,95,98, - 121,116,101,115,95,114,101,97,100,108,105,110,101,218,8,101, - 110,99,111,100,105,110,103,90,15,110,101,119,108,105,110,101, - 95,100,101,99,111,100,101,114,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,13,100,101,99,111,100,101,95, - 115,111,117,114,99,101,167,2,0,0,115,10,0,0,0,0, - 5,8,1,12,1,10,1,12,1,114,200,0,0,0,169,2, - 114,164,0,0,0,218,26,115,117,98,109,111,100,117,108,101, - 95,115,101,97,114,99,104,95,108,111,99,97,116,105,111,110, - 115,99,2,0,0,0,0,0,0,0,2,0,0,0,9,0, - 0,0,8,0,0,0,67,0,0,0,115,64,1,0,0,124, - 1,100,1,117,0,114,58,100,2,125,1,116,0,124,2,100, - 3,131,2,114,114,122,14,124,2,160,1,124,0,161,1,125, - 1,87,0,113,114,4,0,116,2,121,54,1,0,1,0,1, - 0,89,0,113,114,48,0,110,56,116,3,160,4,124,1,161, - 1,125,1,116,5,124,1,131,1,115,114,122,18,116,6,116, - 3,160,7,161,0,124,1,131,2,125,1,87,0,110,18,4, - 0,116,8,121,112,1,0,1,0,1,0,89,0,110,2,48, - 0,116,9,106,10,124,0,124,2,124,1,100,4,141,3,125, - 4,100,5,124,4,95,11,124,2,100,1,117,0,114,198,116, - 12,131,0,68,0,93,42,92,2,125,5,125,6,124,1,160, - 13,116,14,124,6,131,1,161,1,114,150,124,5,124,0,124, - 1,131,2,125,2,124,2,124,4,95,15,1,0,113,198,113, - 150,100,1,83,0,124,3,116,16,117,0,144,1,114,12,116, - 0,124,2,100,6,131,2,144,1,114,18,122,14,124,2,160, - 17,124,0,161,1,125,7,87,0,110,18,4,0,116,2,121, - 252,1,0,1,0,1,0,89,0,110,14,48,0,124,7,144, - 1,114,18,103,0,124,4,95,18,110,6,124,3,124,4,95, - 18,124,4,106,18,103,0,107,2,144,1,114,60,124,1,144, - 1,114,60,116,19,124,1,131,1,100,7,25,0,125,8,124, - 4,106,18,160,20,124,8,161,1,1,0,124,4,83,0,41, - 8,97,61,1,0,0,82,101,116,117,114,110,32,97,32,109, - 111,100,117,108,101,32,115,112,101,99,32,98,97,115,101,100, - 32,111,110,32,97,32,102,105,108,101,32,108,111,99,97,116, - 105,111,110,46,10,10,32,32,32,32,84,111,32,105,110,100, - 105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,109, - 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97, - 103,101,44,32,115,101,116,10,32,32,32,32,115,117,98,109, - 111,100,117,108,101,95,115,101,97,114,99,104,95,108,111,99, - 97,116,105,111,110,115,32,116,111,32,97,32,108,105,115,116, - 32,111,102,32,100,105,114,101,99,116,111,114,121,32,112,97, - 116,104,115,46,32,32,65,110,10,32,32,32,32,101,109,112, - 116,121,32,108,105,115,116,32,105,115,32,115,117,102,102,105, - 99,105,101,110,116,44,32,116,104,111,117,103,104,32,105,116, - 115,32,110,111,116,32,111,116,104,101,114,119,105,115,101,32, - 117,115,101,102,117,108,32,116,111,32,116,104,101,10,32,32, - 32,32,105,109,112,111,114,116,32,115,121,115,116,101,109,46, - 10,10,32,32,32,32,84,104,101,32,108,111,97,100,101,114, - 32,109,117,115,116,32,116,97,107,101,32,97,32,115,112,101, - 99,32,97,115,32,105,116,115,32,111,110,108,121,32,95,95, - 105,110,105,116,95,95,40,41,32,97,114,103,46,10,10,32, - 32,32,32,78,122,9,60,117,110,107,110,111,119,110,62,218, - 12,103,101,116,95,102,105,108,101,110,97,109,101,169,1,218, - 6,111,114,105,103,105,110,84,218,10,105,115,95,112,97,99, - 107,97,103,101,114,0,0,0,0,41,21,114,152,0,0,0, - 114,203,0,0,0,114,141,0,0,0,114,24,0,0,0,114, - 102,0,0,0,114,85,0,0,0,114,67,0,0,0,114,81, - 0,0,0,114,76,0,0,0,114,158,0,0,0,218,10,77, - 111,100,117,108,101,83,112,101,99,90,13,95,115,101,116,95, - 102,105,108,101,97,116,116,114,218,27,95,103,101,116,95,115, - 117,112,112,111,114,116,101,100,95,102,105,108,101,95,108,111, - 97,100,101,114,115,114,58,0,0,0,114,135,0,0,0,114, - 164,0,0,0,218,9,95,80,79,80,85,76,65,84,69,114, - 206,0,0,0,114,202,0,0,0,114,74,0,0,0,114,61, - 0,0,0,41,9,114,140,0,0,0,90,8,108,111,99,97, - 116,105,111,110,114,164,0,0,0,114,202,0,0,0,218,4, - 115,112,101,99,218,12,108,111,97,100,101,114,95,99,108,97, - 115,115,218,8,115,117,102,102,105,120,101,115,114,206,0,0, - 0,90,7,100,105,114,110,97,109,101,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,23,115,112,101,99,95, - 102,114,111,109,95,102,105,108,101,95,108,111,99,97,116,105, - 111,110,184,2,0,0,115,72,0,0,0,0,12,8,4,4, - 1,10,2,2,1,14,1,12,1,8,2,10,1,8,1,2, - 1,18,1,12,1,6,8,16,1,6,3,8,1,14,1,14, - 1,10,1,6,1,6,2,4,3,10,2,12,1,2,1,14, - 1,12,1,6,2,6,1,8,2,6,1,12,1,6,1,12, - 1,12,2,114,213,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,80,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,90,4,100,3,90,5,100,4,90,6,101,7, - 100,5,100,6,132,0,131,1,90,8,101,7,100,7,100,8, - 132,0,131,1,90,9,101,7,100,14,100,10,100,11,132,1, - 131,1,90,10,101,7,100,15,100,12,100,13,132,1,131,1, - 90,11,100,9,83,0,41,16,218,21,87,105,110,100,111,119, - 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,122, - 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, - 114,32,102,111,114,32,109,111,100,117,108,101,115,32,100,101, - 99,108,97,114,101,100,32,105,110,32,116,104,101,32,87,105, - 110,100,111,119,115,32,114,101,103,105,115,116,114,121,46,122, - 59,83,111,102,116,119,97,114,101,92,80,121,116,104,111,110, - 92,80,121,116,104,111,110,67,111,114,101,92,123,115,121,115, - 95,118,101,114,115,105,111,110,125,92,77,111,100,117,108,101, - 115,92,123,102,117,108,108,110,97,109,101,125,122,65,83,111, - 102,116,119,97,114,101,92,80,121,116,104,111,110,92,80,121, - 116,104,111,110,67,111,114,101,92,123,115,121,115,95,118,101, - 114,115,105,111,110,125,92,77,111,100,117,108,101,115,92,123, - 102,117,108,108,110,97,109,101,125,92,68,101,98,117,103,70, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,8,0,0,0,67,0,0,0,115,54,0,0,0,122,16, - 116,0,160,1,116,0,106,2,124,1,161,2,87,0,83,0, - 4,0,116,3,121,48,1,0,1,0,1,0,116,0,160,1, - 116,0,106,4,124,1,161,2,6,0,89,0,83,0,48,0, - 100,0,83,0,114,69,0,0,0,41,5,218,6,119,105,110, - 114,101,103,90,7,79,112,101,110,75,101,121,90,17,72,75, - 69,89,95,67,85,82,82,69,78,84,95,85,83,69,82,114, - 76,0,0,0,90,18,72,75,69,89,95,76,79,67,65,76, - 95,77,65,67,72,73,78,69,41,2,218,3,99,108,115,114, - 26,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,14,95,111,112,101,110,95,114,101,103,105,115, - 116,114,121,13,3,0,0,115,8,0,0,0,0,2,2,1, - 16,1,12,1,122,36,87,105,110,100,111,119,115,82,101,103, - 105,115,116,114,121,70,105,110,100,101,114,46,95,111,112,101, - 110,95,114,101,103,105,115,116,114,121,99,2,0,0,0,0, - 0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,67, - 0,0,0,115,132,0,0,0,124,0,106,0,114,14,124,0, - 106,1,125,2,110,6,124,0,106,2,125,2,124,2,106,3, - 124,1,100,1,116,4,106,5,100,0,100,2,133,2,25,0, - 22,0,100,3,141,2,125,3,122,58,124,0,160,6,124,3, - 161,1,143,28,125,4,116,7,160,8,124,4,100,4,161,2, - 125,5,87,0,100,0,4,0,4,0,131,3,1,0,110,16, - 49,0,115,94,48,0,1,0,1,0,1,0,89,0,1,0, - 87,0,110,20,4,0,116,9,121,126,1,0,1,0,1,0, - 89,0,100,0,83,0,48,0,124,5,83,0,41,5,78,122, - 5,37,100,46,37,100,114,45,0,0,0,41,2,114,163,0, - 0,0,90,11,115,121,115,95,118,101,114,115,105,111,110,114, - 14,0,0,0,41,10,218,11,68,69,66,85,71,95,66,85, - 73,76,68,218,18,82,69,71,73,83,84,82,89,95,75,69, - 89,95,68,69,66,85,71,218,12,82,69,71,73,83,84,82, - 89,95,75,69,89,114,88,0,0,0,114,21,0,0,0,218, - 12,118,101,114,115,105,111,110,95,105,110,102,111,114,217,0, - 0,0,114,215,0,0,0,90,10,81,117,101,114,121,86,97, - 108,117,101,114,76,0,0,0,41,6,114,216,0,0,0,114, - 163,0,0,0,90,12,114,101,103,105,115,116,114,121,95,107, - 101,121,114,26,0,0,0,90,4,104,107,101,121,218,8,102, - 105,108,101,112,97,116,104,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,16,95,115,101,97,114,99,104,95, - 114,101,103,105,115,116,114,121,20,3,0,0,115,24,0,0, - 0,0,2,6,1,8,2,6,1,6,1,16,255,6,2,2, - 1,12,1,46,1,12,1,8,1,122,38,87,105,110,100,111, - 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, - 46,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114, - 121,78,99,4,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,8,0,0,0,67,0,0,0,115,120,0,0,0, - 124,0,160,0,124,1,161,1,125,4,124,4,100,0,117,0, - 114,22,100,0,83,0,122,12,116,1,124,4,131,1,1,0, - 87,0,110,20,4,0,116,2,121,54,1,0,1,0,1,0, - 89,0,100,0,83,0,48,0,116,3,131,0,68,0,93,52, - 92,2,125,5,125,6,124,4,160,4,116,5,124,6,131,1, - 161,1,114,62,116,6,106,7,124,1,124,5,124,1,124,4, - 131,2,124,4,100,1,141,3,125,7,124,7,2,0,1,0, - 83,0,113,62,100,0,83,0,41,2,78,114,204,0,0,0, - 41,8,114,223,0,0,0,114,75,0,0,0,114,76,0,0, - 0,114,208,0,0,0,114,58,0,0,0,114,135,0,0,0, - 114,158,0,0,0,218,16,115,112,101,99,95,102,114,111,109, - 95,108,111,97,100,101,114,41,8,114,216,0,0,0,114,163, - 0,0,0,114,65,0,0,0,218,6,116,97,114,103,101,116, - 114,222,0,0,0,114,164,0,0,0,114,212,0,0,0,114, - 210,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,9,102,105,110,100,95,115,112,101,99,35,3, - 0,0,115,28,0,0,0,0,2,10,1,8,1,4,1,2, - 1,12,1,12,1,8,1,14,1,14,1,6,1,8,1,2, - 254,6,3,122,31,87,105,110,100,111,119,115,82,101,103,105, - 115,116,114,121,70,105,110,100,101,114,46,102,105,110,100,95, - 115,112,101,99,99,3,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,4,0,0,0,67,0,0,0,115,34,0, - 0,0,124,0,160,0,124,1,124,2,161,2,125,3,124,3, - 100,1,117,1,114,26,124,3,106,1,83,0,100,1,83,0, - 100,1,83,0,41,2,122,108,70,105,110,100,32,109,111,100, - 117,108,101,32,110,97,109,101,100,32,105,110,32,116,104,101, - 32,114,101,103,105,115,116,114,121,46,10,10,32,32,32,32, - 32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, - 85,115,101,32,101,120,101,99,95,109,111,100,117,108,101,40, - 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, - 32,32,32,32,78,169,2,114,226,0,0,0,114,164,0,0, - 0,169,4,114,216,0,0,0,114,163,0,0,0,114,65,0, - 0,0,114,210,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,11,102,105,110,100,95,109,111,100, - 117,108,101,51,3,0,0,115,8,0,0,0,0,7,12,1, - 8,1,6,2,122,33,87,105,110,100,111,119,115,82,101,103, - 105,115,116,114,121,70,105,110,100,101,114,46,102,105,110,100, - 95,109,111,100,117,108,101,41,2,78,78,41,1,78,41,12, - 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, - 151,0,0,0,114,220,0,0,0,114,219,0,0,0,114,218, - 0,0,0,218,11,99,108,97,115,115,109,101,116,104,111,100, - 114,217,0,0,0,114,223,0,0,0,114,226,0,0,0,114, - 229,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,214,0,0,0,1,3,0, - 0,115,28,0,0,0,8,2,4,3,2,255,2,4,2,255, - 2,3,4,2,2,1,10,6,2,1,10,14,2,1,12,15, - 2,1,114,214,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0, - 115,48,0,0,0,101,0,90,1,100,0,90,2,100,1,90, - 3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,90, - 5,100,6,100,7,132,0,90,6,100,8,100,9,132,0,90, - 7,100,10,83,0,41,11,218,13,95,76,111,97,100,101,114, - 66,97,115,105,99,115,122,83,66,97,115,101,32,99,108,97, - 115,115,32,111,102,32,99,111,109,109,111,110,32,99,111,100, - 101,32,110,101,101,100,101,100,32,98,121,32,98,111,116,104, - 32,83,111,117,114,99,101,76,111,97,100,101,114,32,97,110, - 100,10,32,32,32,32,83,111,117,114,99,101,108,101,115,115, - 70,105,108,101,76,111,97,100,101,114,46,99,2,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0, - 67,0,0,0,115,64,0,0,0,116,0,124,0,160,1,124, - 1,161,1,131,1,100,1,25,0,125,2,124,2,160,2,100, - 2,100,1,161,2,100,3,25,0,125,3,124,1,160,3,100, - 2,161,1,100,4,25,0,125,4,124,3,100,5,107,2,111, - 62,124,4,100,5,107,3,83,0,41,6,122,141,67,111,110, - 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97, - 116,105,111,110,32,111,102,32,73,110,115,112,101,99,116,76, - 111,97,100,101,114,46,105,115,95,112,97,99,107,97,103,101, - 32,98,121,32,99,104,101,99,107,105,110,103,32,105,102,10, - 32,32,32,32,32,32,32,32,116,104,101,32,112,97,116,104, - 32,114,101,116,117,114,110,101,100,32,98,121,32,103,101,116, - 95,102,105,108,101,110,97,109,101,32,104,97,115,32,97,32, - 102,105,108,101,110,97,109,101,32,111,102,32,39,95,95,105, - 110,105,116,95,95,46,112,121,39,46,114,4,0,0,0,114, - 96,0,0,0,114,0,0,0,0,114,45,0,0,0,218,8, - 95,95,105,110,105,116,95,95,41,4,114,74,0,0,0,114, - 203,0,0,0,114,124,0,0,0,114,103,0,0,0,41,5, - 114,142,0,0,0,114,163,0,0,0,114,119,0,0,0,90, - 13,102,105,108,101,110,97,109,101,95,98,97,115,101,90,9, - 116,97,105,108,95,110,97,109,101,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,206,0,0,0,70,3,0, - 0,115,8,0,0,0,0,3,18,1,16,1,14,1,122,24, - 95,76,111,97,100,101,114,66,97,115,105,99,115,46,105,115, - 95,112,97,99,107,97,103,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, - 0,115,4,0,0,0,100,1,83,0,169,2,122,42,85,115, - 101,32,100,101,102,97,117,108,116,32,115,101,109,97,110,116, - 105,99,115,32,102,111,114,32,109,111,100,117,108,101,32,99, - 114,101,97,116,105,111,110,46,78,114,10,0,0,0,169,2, - 114,142,0,0,0,114,210,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,13,99,114,101,97,116, - 101,95,109,111,100,117,108,101,78,3,0,0,115,2,0,0, - 0,0,1,122,27,95,76,111,97,100,101,114,66,97,115,105, - 99,115,46,99,114,101,97,116,101,95,109,111,100,117,108,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,5,0,0,0,67,0,0,0,115,56,0,0,0,124,0, - 160,0,124,1,106,1,161,1,125,2,124,2,100,1,117,0, - 114,36,116,2,100,2,160,3,124,1,106,1,161,1,131,1, - 130,1,116,4,160,5,116,6,124,2,124,1,106,7,161,3, - 1,0,100,1,83,0,41,3,122,19,69,120,101,99,117,116, - 101,32,116,104,101,32,109,111,100,117,108,101,46,78,122,52, - 99,97,110,110,111,116,32,108,111,97,100,32,109,111,100,117, - 108,101,32,123,33,114,125,32,119,104,101,110,32,103,101,116, - 95,99,111,100,101,40,41,32,114,101,116,117,114,110,115,32, - 78,111,110,101,41,8,218,8,103,101,116,95,99,111,100,101, - 114,149,0,0,0,114,141,0,0,0,114,88,0,0,0,114, - 158,0,0,0,218,25,95,99,97,108,108,95,119,105,116,104, - 95,102,114,97,109,101,115,95,114,101,109,111,118,101,100,218, - 4,101,120,101,99,114,155,0,0,0,41,3,114,142,0,0, - 0,218,6,109,111,100,117,108,101,114,188,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,218,11,101, - 120,101,99,95,109,111,100,117,108,101,81,3,0,0,115,12, - 0,0,0,0,2,12,1,8,1,6,1,4,255,6,2,122, - 25,95,76,111,97,100,101,114,66,97,115,105,99,115,46,101, - 120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67, - 0,0,0,115,12,0,0,0,116,0,160,1,124,0,124,1, - 161,2,83,0,41,1,122,26,84,104,105,115,32,109,111,100, - 117,108,101,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,46,41,2,114,158,0,0,0,218,17,95,108,111,97,100, - 95,109,111,100,117,108,101,95,115,104,105,109,169,2,114,142, - 0,0,0,114,163,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,11,108,111,97,100,95,109,111, - 100,117,108,101,89,3,0,0,115,2,0,0,0,0,2,122, - 25,95,76,111,97,100,101,114,66,97,115,105,99,115,46,108, - 111,97,100,95,109,111,100,117,108,101,78,41,8,114,149,0, - 0,0,114,148,0,0,0,114,150,0,0,0,114,151,0,0, - 0,114,206,0,0,0,114,235,0,0,0,114,240,0,0,0, - 114,243,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,231,0,0,0,65,3, - 0,0,115,10,0,0,0,8,2,4,3,8,8,8,3,8, - 8,114,231,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, - 74,0,0,0,101,0,90,1,100,0,90,2,100,1,100,2, - 132,0,90,3,100,3,100,4,132,0,90,4,100,5,100,6, - 132,0,90,5,100,7,100,8,132,0,90,6,100,9,100,10, - 132,0,90,7,100,11,100,12,156,1,100,13,100,14,132,2, - 90,8,100,15,100,16,132,0,90,9,100,17,83,0,41,18, - 218,12,83,111,117,114,99,101,76,111,97,100,101,114,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, - 0,0,0,67,0,0,0,115,8,0,0,0,116,0,130,1, - 100,1,83,0,41,2,122,165,79,112,116,105,111,110,97,108, - 32,109,101,116,104,111,100,32,116,104,97,116,32,114,101,116, - 117,114,110,115,32,116,104,101,32,109,111,100,105,102,105,99, - 97,116,105,111,110,32,116,105,109,101,32,40,97,110,32,105, - 110,116,41,32,102,111,114,32,116,104,101,10,32,32,32,32, - 32,32,32,32,115,112,101,99,105,102,105,101,100,32,112,97, - 116,104,32,40,97,32,115,116,114,41,46,10,10,32,32,32, - 32,32,32,32,32,82,97,105,115,101,115,32,79,83,69,114, - 114,111,114,32,119,104,101,110,32,116,104,101,32,112,97,116, - 104,32,99,97,110,110,111,116,32,98,101,32,104,97,110,100, - 108,101,100,46,10,32,32,32,32,32,32,32,32,78,41,1, - 114,76,0,0,0,169,2,114,142,0,0,0,114,65,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,10,112,97,116,104,95,109,116,105,109,101,96,3,0,0, - 115,2,0,0,0,0,6,122,23,83,111,117,114,99,101,76, - 111,97,100,101,114,46,112,97,116,104,95,109,116,105,109,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,4,0,0,0,67,0,0,0,115,14,0,0,0,100,1, - 124,0,160,0,124,1,161,1,105,1,83,0,41,2,97,158, - 1,0,0,79,112,116,105,111,110,97,108,32,109,101,116,104, - 111,100,32,114,101,116,117,114,110,105,110,103,32,97,32,109, - 101,116,97,100,97,116,97,32,100,105,99,116,32,102,111,114, - 32,116,104,101,32,115,112,101,99,105,102,105,101,100,10,32, - 32,32,32,32,32,32,32,112,97,116,104,32,40,97,32,115, - 116,114,41,46,10,10,32,32,32,32,32,32,32,32,80,111, - 115,115,105,98,108,101,32,107,101,121,115,58,10,32,32,32, - 32,32,32,32,32,45,32,39,109,116,105,109,101,39,32,40, - 109,97,110,100,97,116,111,114,121,41,32,105,115,32,116,104, - 101,32,110,117,109,101,114,105,99,32,116,105,109,101,115,116, - 97,109,112,32,111,102,32,108,97,115,116,32,115,111,117,114, - 99,101,10,32,32,32,32,32,32,32,32,32,32,99,111,100, - 101,32,109,111,100,105,102,105,99,97,116,105,111,110,59,10, - 32,32,32,32,32,32,32,32,45,32,39,115,105,122,101,39, - 32,40,111,112,116,105,111,110,97,108,41,32,105,115,32,116, - 104,101,32,115,105,122,101,32,105,110,32,98,121,116,101,115, - 32,111,102,32,116,104,101,32,115,111,117,114,99,101,32,99, - 111,100,101,46,10,10,32,32,32,32,32,32,32,32,73,109, - 112,108,101,109,101,110,116,105,110,103,32,116,104,105,115,32, - 109,101,116,104,111,100,32,97,108,108,111,119,115,32,116,104, - 101,32,108,111,97,100,101,114,32,116,111,32,114,101,97,100, - 32,98,121,116,101,99,111,100,101,32,102,105,108,101,115,46, - 10,32,32,32,32,32,32,32,32,82,97,105,115,101,115,32, - 79,83,69,114,114,111,114,32,119,104,101,110,32,116,104,101, - 32,112,97,116,104,32,99,97,110,110,111,116,32,98,101,32, - 104,97,110,100,108,101,100,46,10,32,32,32,32,32,32,32, - 32,114,193,0,0,0,41,1,114,246,0,0,0,114,245,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,10,112,97,116,104,95,115,116,97,116,115,104,3,0, - 0,115,2,0,0,0,0,12,122,23,83,111,117,114,99,101, - 76,111,97,100,101,114,46,112,97,116,104,95,115,116,97,116, - 115,99,4,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,4,0,0,0,67,0,0,0,115,12,0,0,0,124, - 0,160,0,124,2,124,3,161,2,83,0,41,1,122,228,79, - 112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,119, - 104,105,99,104,32,119,114,105,116,101,115,32,100,97,116,97, - 32,40,98,121,116,101,115,41,32,116,111,32,97,32,102,105, - 108,101,32,112,97,116,104,32,40,97,32,115,116,114,41,46, - 10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,109, - 101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,104, - 111,100,32,97,108,108,111,119,115,32,102,111,114,32,116,104, - 101,32,119,114,105,116,105,110,103,32,111,102,32,98,121,116, - 101,99,111,100,101,32,102,105,108,101,115,46,10,10,32,32, - 32,32,32,32,32,32,84,104,101,32,115,111,117,114,99,101, - 32,112,97,116,104,32,105,115,32,110,101,101,100,101,100,32, - 105,110,32,111,114,100,101,114,32,116,111,32,99,111,114,114, - 101,99,116,108,121,32,116,114,97,110,115,102,101,114,32,112, - 101,114,109,105,115,115,105,111,110,115,10,32,32,32,32,32, - 32,32,32,41,1,218,8,115,101,116,95,100,97,116,97,41, - 4,114,142,0,0,0,114,133,0,0,0,90,10,99,97,99, - 104,101,95,112,97,116,104,114,43,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,15,95,99,97, - 99,104,101,95,98,121,116,101,99,111,100,101,118,3,0,0, - 115,2,0,0,0,0,8,122,28,83,111,117,114,99,101,76, - 111,97,100,101,114,46,95,99,97,99,104,101,95,98,121,116, - 101,99,111,100,101,99,3,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,1,0,0,0,67,0,0,0,115,4, - 0,0,0,100,1,83,0,41,2,122,150,79,112,116,105,111, - 110,97,108,32,109,101,116,104,111,100,32,119,104,105,99,104, - 32,119,114,105,116,101,115,32,100,97,116,97,32,40,98,121, - 116,101,115,41,32,116,111,32,97,32,102,105,108,101,32,112, - 97,116,104,32,40,97,32,115,116,114,41,46,10,10,32,32, - 32,32,32,32,32,32,73,109,112,108,101,109,101,110,116,105, - 110,103,32,116,104,105,115,32,109,101,116,104,111,100,32,97, - 108,108,111,119,115,32,102,111,114,32,116,104,101,32,119,114, - 105,116,105,110,103,32,111,102,32,98,121,116,101,99,111,100, - 101,32,102,105,108,101,115,46,10,32,32,32,32,32,32,32, - 32,78,114,10,0,0,0,41,3,114,142,0,0,0,114,65, - 0,0,0,114,43,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,248,0,0,0,128,3,0,0, - 115,2,0,0,0,0,1,122,21,83,111,117,114,99,101,76, - 111,97,100,101,114,46,115,101,116,95,100,97,116,97,99,2, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,10, - 0,0,0,67,0,0,0,115,84,0,0,0,124,0,160,0, - 124,1,161,1,125,2,122,14,124,0,160,1,124,2,161,1, - 125,3,87,0,110,50,4,0,116,2,121,74,1,0,125,4, - 1,0,122,26,116,3,100,1,124,1,100,2,141,2,124,4, - 130,2,87,0,89,0,100,3,125,4,126,4,110,10,100,3, - 125,4,126,4,48,0,48,0,116,4,124,3,131,1,83,0, - 41,4,122,52,67,111,110,99,114,101,116,101,32,105,109,112, - 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,73, - 110,115,112,101,99,116,76,111,97,100,101,114,46,103,101,116, - 95,115,111,117,114,99,101,46,122,39,115,111,117,114,99,101, - 32,110,111,116,32,97,118,97,105,108,97,98,108,101,32,116, - 104,114,111,117,103,104,32,103,101,116,95,100,97,116,97,40, - 41,114,139,0,0,0,78,41,5,114,203,0,0,0,218,8, - 103,101,116,95,100,97,116,97,114,76,0,0,0,114,141,0, - 0,0,114,200,0,0,0,41,5,114,142,0,0,0,114,163, - 0,0,0,114,65,0,0,0,114,198,0,0,0,218,3,101, - 120,99,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,10,103,101,116,95,115,111,117,114,99,101,135,3,0, - 0,115,20,0,0,0,0,2,10,1,2,1,14,1,14,1, - 4,1,2,255,4,1,2,255,24,2,122,23,83,111,117,114, - 99,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117, - 114,99,101,114,129,0,0,0,41,1,218,9,95,111,112,116, - 105,109,105,122,101,99,3,0,0,0,0,0,0,0,1,0, - 0,0,4,0,0,0,8,0,0,0,67,0,0,0,115,22, - 0,0,0,116,0,106,1,116,2,124,1,124,2,100,1,100, - 2,124,3,100,3,141,6,83,0,41,4,122,130,82,101,116, - 117,114,110,32,116,104,101,32,99,111,100,101,32,111,98,106, - 101,99,116,32,99,111,109,112,105,108,101,100,32,102,114,111, - 109,32,115,111,117,114,99,101,46,10,10,32,32,32,32,32, - 32,32,32,84,104,101,32,39,100,97,116,97,39,32,97,114, - 103,117,109,101,110,116,32,99,97,110,32,98,101,32,97,110, - 121,32,111,98,106,101,99,116,32,116,121,112,101,32,116,104, - 97,116,32,99,111,109,112,105,108,101,40,41,32,115,117,112, - 112,111,114,116,115,46,10,32,32,32,32,32,32,32,32,114, - 238,0,0,0,84,41,2,218,12,100,111,110,116,95,105,110, - 104,101,114,105,116,114,107,0,0,0,41,3,114,158,0,0, - 0,114,237,0,0,0,218,7,99,111,109,112,105,108,101,41, - 4,114,142,0,0,0,114,43,0,0,0,114,65,0,0,0, - 114,253,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,14,115,111,117,114,99,101,95,116,111,95, - 99,111,100,101,145,3,0,0,115,6,0,0,0,0,5,12, - 1,4,255,122,27,83,111,117,114,99,101,76,111,97,100,101, - 114,46,115,111,117,114,99,101,95,116,111,95,99,111,100,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,15,0,0, - 0,9,0,0,0,67,0,0,0,115,24,2,0,0,124,0, - 160,0,124,1,161,1,125,2,100,1,125,3,100,1,125,4, - 100,1,125,5,100,2,125,6,100,3,125,7,122,12,116,1, - 124,2,131,1,125,8,87,0,110,24,4,0,116,2,121,66, - 1,0,1,0,1,0,100,1,125,8,89,0,144,1,110,42, - 48,0,122,14,124,0,160,3,124,2,161,1,125,9,87,0, - 110,20,4,0,116,4,121,102,1,0,1,0,1,0,89,0, - 144,1,110,6,48,0,116,5,124,9,100,4,25,0,131,1, - 125,3,122,14,124,0,160,6,124,8,161,1,125,10,87,0, - 110,18,4,0,116,4,121,148,1,0,1,0,1,0,89,0, - 110,216,48,0,124,1,124,8,100,5,156,2,125,11,122,148, - 116,7,124,10,124,1,124,11,131,3,125,12,116,8,124,10, - 131,1,100,6,100,1,133,2,25,0,125,13,124,12,100,7, - 64,0,100,8,107,3,125,6,124,6,144,1,114,30,124,12, - 100,9,64,0,100,8,107,3,125,7,116,9,106,10,100,10, - 107,3,144,1,114,50,124,7,115,248,116,9,106,10,100,11, - 107,2,144,1,114,50,124,0,160,6,124,2,161,1,125,4, - 116,9,160,11,116,12,124,4,161,2,125,5,116,13,124,10, - 124,5,124,1,124,11,131,4,1,0,110,20,116,14,124,10, - 124,3,124,9,100,12,25,0,124,1,124,11,131,5,1,0, - 87,0,110,24,4,0,116,15,116,16,102,2,144,1,121,76, - 1,0,1,0,1,0,89,0,110,32,48,0,116,17,160,18, - 100,13,124,8,124,2,161,3,1,0,116,19,124,13,124,1, - 124,8,124,2,100,14,141,4,83,0,124,4,100,1,117,0, - 144,1,114,128,124,0,160,6,124,2,161,1,125,4,124,0, - 160,20,124,4,124,2,161,2,125,14,116,17,160,18,100,15, - 124,2,161,2,1,0,116,21,106,22,144,2,115,20,124,8, - 100,1,117,1,144,2,114,20,124,3,100,1,117,1,144,2, - 114,20,124,6,144,1,114,220,124,5,100,1,117,0,144,1, - 114,206,116,9,160,11,124,4,161,1,125,5,116,23,124,14, - 124,5,124,7,131,3,125,10,110,16,116,24,124,14,124,3, - 116,25,124,4,131,1,131,3,125,10,122,18,124,0,160,26, - 124,2,124,8,124,10,161,3,1,0,87,0,110,20,4,0, - 116,2,144,2,121,18,1,0,1,0,1,0,89,0,110,2, - 48,0,124,14,83,0,41,16,122,190,67,111,110,99,114,101, - 116,101,32,105,109,112,108,101,109,101,110,116,97,116,105,111, - 110,32,111,102,32,73,110,115,112,101,99,116,76,111,97,100, - 101,114,46,103,101,116,95,99,111,100,101,46,10,10,32,32, - 32,32,32,32,32,32,82,101,97,100,105,110,103,32,111,102, - 32,98,121,116,101,99,111,100,101,32,114,101,113,117,105,114, - 101,115,32,112,97,116,104,95,115,116,97,116,115,32,116,111, - 32,98,101,32,105,109,112,108,101,109,101,110,116,101,100,46, - 32,84,111,32,119,114,105,116,101,10,32,32,32,32,32,32, - 32,32,98,121,116,101,99,111,100,101,44,32,115,101,116,95, - 100,97,116,97,32,109,117,115,116,32,97,108,115,111,32,98, - 101,32,105,109,112,108,101,109,101,110,116,101,100,46,10,10, - 32,32,32,32,32,32,32,32,78,70,84,114,193,0,0,0, - 114,183,0,0,0,114,169,0,0,0,114,4,0,0,0,114, - 0,0,0,0,114,45,0,0,0,90,5,110,101,118,101,114, - 90,6,97,108,119,97,121,115,218,4,115,105,122,101,122,13, - 123,125,32,109,97,116,99,104,101,115,32,123,125,41,3,114, - 140,0,0,0,114,131,0,0,0,114,133,0,0,0,122,19, - 99,111,100,101,32,111,98,106,101,99,116,32,102,114,111,109, - 32,123,125,41,27,114,203,0,0,0,114,120,0,0,0,114, - 106,0,0,0,114,247,0,0,0,114,76,0,0,0,114,36, - 0,0,0,114,250,0,0,0,114,176,0,0,0,218,10,109, - 101,109,111,114,121,118,105,101,119,114,187,0,0,0,90,21, - 99,104,101,99,107,95,104,97,115,104,95,98,97,115,101,100, - 95,112,121,99,115,114,181,0,0,0,218,17,95,82,65,87, - 95,77,65,71,73,67,95,78,85,77,66,69,82,114,182,0, - 0,0,114,180,0,0,0,114,141,0,0,0,114,174,0,0, - 0,114,158,0,0,0,114,173,0,0,0,114,189,0,0,0, - 114,0,1,0,0,114,21,0,0,0,218,19,100,111,110,116, - 95,119,114,105,116,101,95,98,121,116,101,99,111,100,101,114, - 195,0,0,0,114,194,0,0,0,114,6,0,0,0,114,249, - 0,0,0,41,15,114,142,0,0,0,114,163,0,0,0,114, - 133,0,0,0,114,178,0,0,0,114,198,0,0,0,114,181, - 0,0,0,90,10,104,97,115,104,95,98,97,115,101,100,90, - 12,99,104,101,99,107,95,115,111,117,114,99,101,114,131,0, - 0,0,218,2,115,116,114,43,0,0,0,114,175,0,0,0, - 114,22,0,0,0,90,10,98,121,116,101,115,95,100,97,116, - 97,90,11,99,111,100,101,95,111,98,106,101,99,116,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,236,0, - 0,0,153,3,0,0,115,152,0,0,0,0,7,10,1,4, - 1,4,1,4,1,4,1,4,1,2,1,12,1,12,1,12, - 2,2,1,14,1,12,1,8,2,12,1,2,1,14,1,12, - 1,6,3,2,1,2,254,6,4,2,1,12,1,16,1,12, - 1,6,1,12,1,12,1,2,255,2,2,8,254,4,3,10, - 1,4,1,2,1,2,254,4,4,8,1,2,255,6,3,2, - 1,2,1,2,1,6,1,2,1,2,251,8,7,18,1,6, - 2,8,1,2,255,4,2,6,1,2,1,2,254,6,3,10, - 1,10,1,12,1,12,1,18,1,6,255,4,2,6,1,10, - 1,10,1,14,2,6,1,6,255,4,2,2,1,18,1,14, - 1,6,1,122,21,83,111,117,114,99,101,76,111,97,100,101, - 114,46,103,101,116,95,99,111,100,101,78,41,10,114,149,0, - 0,0,114,148,0,0,0,114,150,0,0,0,114,246,0,0, - 0,114,247,0,0,0,114,249,0,0,0,114,248,0,0,0, - 114,252,0,0,0,114,0,1,0,0,114,236,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,244,0,0,0,94,3,0,0,115,14,0,0, - 0,8,2,8,8,8,14,8,10,8,7,8,10,14,8,114, - 244,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,4,0,0,0,0,0,0,0,115,124,0, - 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, - 100,3,132,0,90,4,100,4,100,5,132,0,90,5,100,6, - 100,7,132,0,90,6,101,7,135,0,102,1,100,8,100,9, - 132,8,131,1,90,8,101,7,100,10,100,11,132,0,131,1, - 90,9,100,12,100,13,132,0,90,10,101,7,100,14,100,15, - 132,0,131,1,90,11,100,16,100,17,132,0,90,12,100,18, - 100,19,132,0,90,13,100,20,100,21,132,0,90,14,100,22, - 100,23,132,0,90,15,135,0,4,0,90,16,83,0,41,24, - 218,10,70,105,108,101,76,111,97,100,101,114,122,103,66,97, - 115,101,32,102,105,108,101,32,108,111,97,100,101,114,32,99, - 108,97,115,115,32,119,104,105,99,104,32,105,109,112,108,101, - 109,101,110,116,115,32,116,104,101,32,108,111,97,100,101,114, - 32,112,114,111,116,111,99,111,108,32,109,101,116,104,111,100, - 115,32,116,104,97,116,10,32,32,32,32,114,101,113,117,105, - 114,101,32,102,105,108,101,32,115,121,115,116,101,109,32,117, - 115,97,103,101,46,99,3,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,16, - 0,0,0,124,1,124,0,95,0,124,2,124,0,95,1,100, - 1,83,0,41,2,122,75,67,97,99,104,101,32,116,104,101, - 32,109,111,100,117,108,101,32,110,97,109,101,32,97,110,100, - 32,116,104,101,32,112,97,116,104,32,116,111,32,116,104,101, - 32,102,105,108,101,32,102,111,117,110,100,32,98,121,32,116, - 104,101,10,32,32,32,32,32,32,32,32,102,105,110,100,101, - 114,46,78,114,183,0,0,0,41,3,114,142,0,0,0,114, - 163,0,0,0,114,65,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,232,0,0,0,243,3,0, - 0,115,4,0,0,0,0,3,6,1,122,19,70,105,108,101, - 76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 2,0,0,0,67,0,0,0,115,24,0,0,0,124,0,106, - 0,124,1,106,0,107,2,111,22,124,0,106,1,124,1,106, - 1,107,2,83,0,114,69,0,0,0,169,2,218,9,95,95, - 99,108,97,115,115,95,95,114,155,0,0,0,169,2,114,142, - 0,0,0,90,5,111,116,104,101,114,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,6,95,95,101,113,95, - 95,249,3,0,0,115,6,0,0,0,0,1,12,1,10,255, - 122,17,70,105,108,101,76,111,97,100,101,114,46,95,95,101, - 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,3,0,0,0,67,0,0,0,115,20,0,0, - 0,116,0,124,0,106,1,131,1,116,0,124,0,106,2,131, - 1,65,0,83,0,114,69,0,0,0,169,3,218,4,104,97, - 115,104,114,140,0,0,0,114,65,0,0,0,169,1,114,142, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,8,95,95,104,97,115,104,95,95,253,3,0,0, - 115,2,0,0,0,0,1,122,19,70,105,108,101,76,111,97, - 100,101,114,46,95,95,104,97,115,104,95,95,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0, - 0,3,0,0,0,115,16,0,0,0,116,0,116,1,124,0, - 131,2,160,2,124,1,161,1,83,0,41,1,122,100,76,111, - 97,100,32,97,32,109,111,100,117,108,101,32,102,114,111,109, - 32,97,32,102,105,108,101,46,10,10,32,32,32,32,32,32, - 32,32,84,104,105,115,32,109,101,116,104,111,100,32,105,115, - 32,100,101,112,114,101,99,97,116,101,100,46,32,32,85,115, - 101,32,101,120,101,99,95,109,111,100,117,108,101,40,41,32, - 105,110,115,116,101,97,100,46,10,10,32,32,32,32,32,32, - 32,32,41,3,218,5,115,117,112,101,114,114,6,1,0,0, - 114,243,0,0,0,114,242,0,0,0,169,1,114,8,1,0, - 0,114,10,0,0,0,114,11,0,0,0,114,243,0,0,0, - 0,4,0,0,115,2,0,0,0,0,10,122,22,70,105,108, - 101,76,111,97,100,101,114,46,108,111,97,100,95,109,111,100, - 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,1,0,0,0,67,0,0,0,115,6,0,0, - 0,124,0,106,0,83,0,169,1,122,58,82,101,116,117,114, - 110,32,116,104,101,32,112,97,116,104,32,116,111,32,116,104, - 101,32,115,111,117,114,99,101,32,102,105,108,101,32,97,115, - 32,102,111,117,110,100,32,98,121,32,116,104,101,32,102,105, - 110,100,101,114,46,114,71,0,0,0,114,242,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,203, - 0,0,0,12,4,0,0,115,2,0,0,0,0,3,122,23, - 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,102, - 105,108,101,110,97,109,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,8,0,0,0,67,0,0,0, - 115,126,0,0,0,116,0,124,0,116,1,116,2,102,2,131, - 2,114,70,116,3,160,4,116,5,124,1,131,1,161,1,143, - 24,125,2,124,2,160,6,161,0,87,0,2,0,100,1,4, - 0,4,0,131,3,1,0,83,0,49,0,115,58,48,0,1, - 0,1,0,1,0,89,0,1,0,110,52,116,3,160,7,124, - 1,100,2,161,2,143,24,125,2,124,2,160,6,161,0,87, - 0,2,0,100,1,4,0,4,0,131,3,1,0,83,0,49, - 0,115,112,48,0,1,0,1,0,1,0,89,0,1,0,100, - 1,83,0,41,3,122,39,82,101,116,117,114,110,32,116,104, - 101,32,100,97,116,97,32,102,114,111,109,32,112,97,116,104, - 32,97,115,32,114,97,119,32,98,121,116,101,115,46,78,218, - 1,114,41,8,114,185,0,0,0,114,244,0,0,0,218,19, - 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, - 100,101,114,114,90,0,0,0,90,9,111,112,101,110,95,99, - 111,100,101,114,108,0,0,0,90,4,114,101,97,100,114,91, - 0,0,0,41,3,114,142,0,0,0,114,65,0,0,0,114, - 93,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,250,0,0,0,17,4,0,0,115,10,0,0, - 0,0,2,14,1,16,1,40,2,14,1,122,19,70,105,108, - 101,76,111,97,100,101,114,46,103,101,116,95,100,97,116,97, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,67,0,0,0,115,18,0,0,0,124,0, - 160,0,124,1,161,1,114,14,124,0,83,0,100,0,83,0, - 114,69,0,0,0,41,1,114,206,0,0,0,169,2,114,142, - 0,0,0,114,239,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,19,103,101,116,95,114,101,115, - 111,117,114,99,101,95,114,101,97,100,101,114,28,4,0,0, - 115,6,0,0,0,0,2,10,1,4,1,122,30,70,105,108, - 101,76,111,97,100,101,114,46,103,101,116,95,114,101,115,111, - 117,114,99,101,95,114,101,97,100,101,114,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0, - 67,0,0,0,115,32,0,0,0,116,0,116,1,124,0,106, - 2,131,1,100,1,25,0,124,1,131,2,125,2,116,3,160, - 4,124,2,100,2,161,2,83,0,41,3,78,114,0,0,0, - 0,114,18,1,0,0,41,5,114,67,0,0,0,114,74,0, - 0,0,114,65,0,0,0,114,90,0,0,0,114,91,0,0, - 0,169,3,114,142,0,0,0,90,8,114,101,115,111,117,114, - 99,101,114,65,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,13,111,112,101,110,95,114,101,115, - 111,117,114,99,101,34,4,0,0,115,4,0,0,0,0,1, - 20,1,122,24,70,105,108,101,76,111,97,100,101,114,46,111, - 112,101,110,95,114,101,115,111,117,114,99,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, - 0,67,0,0,0,115,38,0,0,0,124,0,160,0,124,1, - 161,1,115,14,116,1,130,1,116,2,116,3,124,0,106,4, - 131,1,100,1,25,0,124,1,131,2,125,2,124,2,83,0, - 169,2,78,114,0,0,0,0,41,5,218,11,105,115,95,114, - 101,115,111,117,114,99,101,218,17,70,105,108,101,78,111,116, - 70,111,117,110,100,69,114,114,111,114,114,67,0,0,0,114, - 74,0,0,0,114,65,0,0,0,114,22,1,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,218,13,114, - 101,115,111,117,114,99,101,95,112,97,116,104,38,4,0,0, - 115,8,0,0,0,0,1,10,1,4,1,20,1,122,24,70, - 105,108,101,76,111,97,100,101,114,46,114,101,115,111,117,114, - 99,101,95,112,97,116,104,99,2,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, - 115,40,0,0,0,116,0,124,1,118,0,114,12,100,1,83, - 0,116,1,116,2,124,0,106,3,131,1,100,2,25,0,124, - 1,131,2,125,2,116,4,124,2,131,1,83,0,41,3,78, - 70,114,0,0,0,0,41,5,114,59,0,0,0,114,67,0, - 0,0,114,74,0,0,0,114,65,0,0,0,114,80,0,0, - 0,169,3,114,142,0,0,0,114,140,0,0,0,114,65,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,25,1,0,0,44,4,0,0,115,8,0,0,0,0, - 1,8,1,4,1,20,1,122,22,70,105,108,101,76,111,97, - 100,101,114,46,105,115,95,114,101,115,111,117,114,99,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 5,0,0,0,67,0,0,0,115,24,0,0,0,116,0,116, - 1,160,2,116,3,124,0,106,4,131,1,100,1,25,0,161, - 1,131,1,83,0,114,24,1,0,0,41,5,218,4,105,116, - 101,114,114,24,0,0,0,218,7,108,105,115,116,100,105,114, - 114,74,0,0,0,114,65,0,0,0,114,13,1,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,8, - 99,111,110,116,101,110,116,115,50,4,0,0,115,2,0,0, - 0,0,1,122,19,70,105,108,101,76,111,97,100,101,114,46, - 99,111,110,116,101,110,116,115,41,17,114,149,0,0,0,114, - 148,0,0,0,114,150,0,0,0,114,151,0,0,0,114,232, - 0,0,0,114,10,1,0,0,114,14,1,0,0,114,160,0, - 0,0,114,243,0,0,0,114,203,0,0,0,114,250,0,0, - 0,114,21,1,0,0,114,23,1,0,0,114,27,1,0,0, - 114,25,1,0,0,114,31,1,0,0,90,13,95,95,99,108, - 97,115,115,99,101,108,108,95,95,114,10,0,0,0,114,10, - 0,0,0,114,16,1,0,0,114,11,0,0,0,114,6,1, - 0,0,238,3,0,0,115,30,0,0,0,8,2,4,3,8, - 6,8,4,8,3,2,1,14,11,2,1,10,4,8,11,2, - 1,10,5,8,4,8,6,8,6,114,6,1,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,64,0,0,0,115,46,0,0,0,101,0,90,1, - 100,0,90,2,100,1,90,3,100,2,100,3,132,0,90,4, - 100,4,100,5,132,0,90,5,100,6,100,7,156,1,100,8, - 100,9,132,2,90,6,100,10,83,0,41,11,218,16,83,111, - 117,114,99,101,70,105,108,101,76,111,97,100,101,114,122,62, - 67,111,110,99,114,101,116,101,32,105,109,112,108,101,109,101, - 110,116,97,116,105,111,110,32,111,102,32,83,111,117,114,99, - 101,76,111,97,100,101,114,32,117,115,105,110,103,32,116,104, - 101,32,102,105,108,101,32,115,121,115,116,101,109,46,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,67,0,0,0,115,22,0,0,0,116,0,124,1, - 131,1,125,2,124,2,106,1,124,2,106,2,100,1,156,2, - 83,0,41,2,122,33,82,101,116,117,114,110,32,116,104,101, - 32,109,101,116,97,100,97,116,97,32,102,111,114,32,116,104, - 101,32,112,97,116,104,46,41,2,114,193,0,0,0,114,1, - 1,0,0,41,3,114,75,0,0,0,218,8,115,116,95,109, - 116,105,109,101,90,7,115,116,95,115,105,122,101,41,3,114, - 142,0,0,0,114,65,0,0,0,114,5,1,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,247,0, - 0,0,58,4,0,0,115,4,0,0,0,0,2,8,1,122, - 27,83,111,117,114,99,101,70,105,108,101,76,111,97,100,101, - 114,46,112,97,116,104,95,115,116,97,116,115,99,4,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0, - 0,67,0,0,0,115,24,0,0,0,116,0,124,1,131,1, - 125,4,124,0,106,1,124,2,124,3,124,4,100,1,141,3, - 83,0,41,2,78,169,1,218,5,95,109,111,100,101,41,2, - 114,138,0,0,0,114,248,0,0,0,41,5,114,142,0,0, - 0,114,133,0,0,0,114,131,0,0,0,114,43,0,0,0, - 114,78,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,249,0,0,0,63,4,0,0,115,4,0, - 0,0,0,2,8,1,122,32,83,111,117,114,99,101,70,105, - 108,101,76,111,97,100,101,114,46,95,99,97,99,104,101,95, - 98,121,116,101,99,111,100,101,114,86,0,0,0,114,34,1, - 0,0,99,3,0,0,0,0,0,0,0,1,0,0,0,9, - 0,0,0,11,0,0,0,67,0,0,0,115,252,0,0,0, - 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, - 124,4,114,52,116,1,124,4,131,1,115,52,116,0,124,4, - 131,1,92,2,125,4,125,7,124,6,160,2,124,7,161,1, - 1,0,113,16,116,3,124,6,131,1,68,0,93,104,125,7, - 116,4,124,4,124,7,131,2,125,4,122,14,116,5,160,6, - 124,4,161,1,1,0,87,0,113,60,4,0,116,7,121,110, - 1,0,1,0,1,0,89,0,113,60,89,0,113,60,4,0, - 116,8,121,162,1,0,125,8,1,0,122,30,116,9,160,10, - 100,1,124,4,124,8,161,3,1,0,87,0,89,0,100,2, - 125,8,126,8,1,0,100,2,83,0,100,2,125,8,126,8, - 48,0,48,0,113,60,122,28,116,11,124,1,124,2,124,3, - 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, - 87,0,110,52,4,0,116,8,144,0,121,246,1,0,125,8, - 1,0,122,26,116,9,160,10,100,1,124,1,124,8,161,3, - 1,0,87,0,89,0,100,2,125,8,126,8,110,10,100,2, - 125,8,126,8,48,0,48,0,100,2,83,0,41,4,122,27, - 87,114,105,116,101,32,98,121,116,101,115,32,100,97,116,97, - 32,116,111,32,97,32,102,105,108,101,46,122,27,99,111,117, - 108,100,32,110,111,116,32,99,114,101,97,116,101,32,123,33, - 114,125,58,32,123,33,114,125,78,122,12,99,114,101,97,116, - 101,100,32,123,33,114,125,41,12,114,74,0,0,0,114,82, - 0,0,0,114,61,0,0,0,218,8,114,101,118,101,114,115, - 101,100,114,67,0,0,0,114,24,0,0,0,90,5,109,107, - 100,105,114,218,15,70,105,108,101,69,120,105,115,116,115,69, - 114,114,111,114,114,76,0,0,0,114,158,0,0,0,114,173, - 0,0,0,114,94,0,0,0,41,9,114,142,0,0,0,114, - 65,0,0,0,114,43,0,0,0,114,35,1,0,0,218,6, - 112,97,114,101,110,116,114,119,0,0,0,114,63,0,0,0, - 114,68,0,0,0,114,251,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,248,0,0,0,68,4, - 0,0,115,46,0,0,0,0,2,12,1,4,2,12,1,12, - 1,12,2,12,1,10,1,2,1,14,1,12,2,8,1,14, - 3,6,1,4,255,4,2,28,1,2,1,12,1,16,1,16, - 2,8,1,2,255,122,25,83,111,117,114,99,101,70,105,108, - 101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,97, - 78,41,7,114,149,0,0,0,114,148,0,0,0,114,150,0, - 0,0,114,151,0,0,0,114,247,0,0,0,114,249,0,0, - 0,114,248,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,32,1,0,0,54, - 4,0,0,115,8,0,0,0,8,2,4,2,8,5,8,5, - 114,32,1,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,32, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, - 2,100,3,132,0,90,4,100,4,100,5,132,0,90,5,100, - 6,83,0,41,7,218,20,83,111,117,114,99,101,108,101,115, - 115,70,105,108,101,76,111,97,100,101,114,122,45,76,111,97, - 100,101,114,32,119,104,105,99,104,32,104,97,110,100,108,101, - 115,32,115,111,117,114,99,101,108,101,115,115,32,102,105,108, - 101,32,105,109,112,111,114,116,115,46,99,2,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67, - 0,0,0,115,68,0,0,0,124,0,160,0,124,1,161,1, - 125,2,124,0,160,1,124,2,161,1,125,3,124,1,124,2, - 100,1,156,2,125,4,116,2,124,3,124,1,124,4,131,3, - 1,0,116,3,116,4,124,3,131,1,100,2,100,0,133,2, - 25,0,124,1,124,2,100,3,141,3,83,0,41,4,78,114, - 183,0,0,0,114,169,0,0,0,41,2,114,140,0,0,0, - 114,131,0,0,0,41,5,114,203,0,0,0,114,250,0,0, - 0,114,176,0,0,0,114,189,0,0,0,114,2,1,0,0, - 41,5,114,142,0,0,0,114,163,0,0,0,114,65,0,0, - 0,114,43,0,0,0,114,175,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,236,0,0,0,103, - 4,0,0,115,22,0,0,0,0,1,10,1,10,4,2,1, - 2,254,6,4,12,1,2,1,14,1,2,1,2,253,122,29, - 83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111, - 97,100,101,114,46,103,101,116,95,99,111,100,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0, - 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, - 2,122,39,82,101,116,117,114,110,32,78,111,110,101,32,97, - 115,32,116,104,101,114,101,32,105,115,32,110,111,32,115,111, - 117,114,99,101,32,99,111,100,101,46,78,114,10,0,0,0, - 114,242,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,252,0,0,0,119,4,0,0,115,2,0, - 0,0,0,2,122,31,83,111,117,114,99,101,108,101,115,115, - 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,115, - 111,117,114,99,101,78,41,6,114,149,0,0,0,114,148,0, - 0,0,114,150,0,0,0,114,151,0,0,0,114,236,0,0, - 0,114,252,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,39,1,0,0,99, - 4,0,0,115,6,0,0,0,8,2,4,2,8,16,114,39, - 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,64,0,0,0,115,92,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, - 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100, - 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,100, - 11,132,0,90,8,100,12,100,13,132,0,90,9,100,14,100, - 15,132,0,90,10,100,16,100,17,132,0,90,11,101,12,100, - 18,100,19,132,0,131,1,90,13,100,20,83,0,41,21,114, - 19,1,0,0,122,93,76,111,97,100,101,114,32,102,111,114, - 32,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108, - 101,115,46,10,10,32,32,32,32,84,104,101,32,99,111,110, - 115,116,114,117,99,116,111,114,32,105,115,32,100,101,115,105, - 103,110,101,100,32,116,111,32,119,111,114,107,32,119,105,116, - 104,32,70,105,108,101,70,105,110,100,101,114,46,10,10,32, - 32,32,32,99,3,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,124,1,124,0,95,0,124,2,124,0,95,1,100,0,83, - 0,114,69,0,0,0,114,183,0,0,0,114,28,1,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 232,0,0,0,136,4,0,0,115,4,0,0,0,0,1,6, - 1,122,28,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 2,0,0,0,67,0,0,0,115,24,0,0,0,124,0,106, - 0,124,1,106,0,107,2,111,22,124,0,106,1,124,1,106, - 1,107,2,83,0,114,69,0,0,0,114,7,1,0,0,114, - 9,1,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,10,1,0,0,140,4,0,0,115,6,0,0, - 0,0,1,12,1,10,255,122,26,69,120,116,101,110,115,105, - 111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,101, - 113,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,3,0,0,0,67,0,0,0,115,20,0,0, - 0,116,0,124,0,106,1,131,1,116,0,124,0,106,2,131, - 1,65,0,83,0,114,69,0,0,0,114,11,1,0,0,114, - 13,1,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,14,1,0,0,144,4,0,0,115,2,0,0, - 0,0,1,122,28,69,120,116,101,110,115,105,111,110,70,105, - 108,101,76,111,97,100,101,114,46,95,95,104,97,115,104,95, - 95,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,5,0,0,0,67,0,0,0,115,36,0,0,0,116, - 0,160,1,116,2,106,3,124,1,161,2,125,2,116,0,160, - 4,100,1,124,1,106,5,124,0,106,6,161,3,1,0,124, - 2,83,0,41,2,122,38,67,114,101,97,116,101,32,97,110, - 32,117,110,105,116,105,97,108,105,122,101,100,32,101,120,116, - 101,110,115,105,111,110,32,109,111,100,117,108,101,122,38,101, - 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,32, - 123,33,114,125,32,108,111,97,100,101,100,32,102,114,111,109, - 32,123,33,114,125,41,7,114,158,0,0,0,114,237,0,0, - 0,114,187,0,0,0,90,14,99,114,101,97,116,101,95,100, - 121,110,97,109,105,99,114,173,0,0,0,114,140,0,0,0, - 114,65,0,0,0,41,3,114,142,0,0,0,114,210,0,0, - 0,114,239,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,235,0,0,0,147,4,0,0,115,14, - 0,0,0,0,2,4,1,6,255,4,2,6,1,8,255,4, - 2,122,33,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,46,99,114,101,97,116,101,95,109,111, - 100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,5,0,0,0,67,0,0,0,115,36,0, - 0,0,116,0,160,1,116,2,106,3,124,1,161,2,1,0, - 116,0,160,4,100,1,124,0,106,5,124,0,106,6,161,3, - 1,0,100,2,83,0,41,3,122,30,73,110,105,116,105,97, - 108,105,122,101,32,97,110,32,101,120,116,101,110,115,105,111, - 110,32,109,111,100,117,108,101,122,40,101,120,116,101,110,115, - 105,111,110,32,109,111,100,117,108,101,32,123,33,114,125,32, - 101,120,101,99,117,116,101,100,32,102,114,111,109,32,123,33, - 114,125,78,41,7,114,158,0,0,0,114,237,0,0,0,114, - 187,0,0,0,90,12,101,120,101,99,95,100,121,110,97,109, - 105,99,114,173,0,0,0,114,140,0,0,0,114,65,0,0, - 0,114,20,1,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,240,0,0,0,155,4,0,0,115,8, - 0,0,0,0,2,14,1,6,1,8,255,122,31,69,120,116, - 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, - 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,3,0,0,0,115,36,0,0,0,116,0,124,0,106,1, - 131,1,100,1,25,0,137,0,116,2,135,0,102,1,100,2, - 100,3,132,8,116,3,68,0,131,1,131,1,83,0,41,4, - 122,49,82,101,116,117,114,110,32,84,114,117,101,32,105,102, - 32,116,104,101,32,101,120,116,101,110,115,105,111,110,32,109, - 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97, - 103,101,46,114,4,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,4,0,0,0,51,0,0, - 0,115,26,0,0,0,124,0,93,18,125,1,136,0,100,0, - 124,1,23,0,107,2,86,0,1,0,113,2,100,1,83,0, - 41,2,114,232,0,0,0,78,114,10,0,0,0,169,2,114, - 8,0,0,0,218,6,115,117,102,102,105,120,169,1,90,9, - 102,105,108,101,95,110,97,109,101,114,10,0,0,0,114,11, - 0,0,0,114,12,0,0,0,164,4,0,0,115,4,0,0, - 0,4,1,2,255,122,49,69,120,116,101,110,115,105,111,110, - 70,105,108,101,76,111,97,100,101,114,46,105,115,95,112,97, - 99,107,97,103,101,46,60,108,111,99,97,108,115,62,46,60, - 103,101,110,101,120,112,114,62,41,4,114,74,0,0,0,114, - 65,0,0,0,218,3,97,110,121,218,18,69,88,84,69,78, - 83,73,79,78,95,83,85,70,70,73,88,69,83,114,242,0, - 0,0,114,10,0,0,0,114,42,1,0,0,114,11,0,0, - 0,114,206,0,0,0,161,4,0,0,115,8,0,0,0,0, - 2,14,1,12,1,2,255,122,30,69,120,116,101,110,115,105, - 111,110,70,105,108,101,76,111,97,100,101,114,46,105,115,95, - 112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, - 115,4,0,0,0,100,1,83,0,41,2,122,63,82,101,116, - 117,114,110,32,78,111,110,101,32,97,115,32,97,110,32,101, - 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,32, - 99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32, - 99,111,100,101,32,111,98,106,101,99,116,46,78,114,10,0, - 0,0,114,242,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,236,0,0,0,167,4,0,0,115, - 2,0,0,0,0,2,122,28,69,120,116,101,110,115,105,111, - 110,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95, - 99,111,100,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, - 0,0,100,1,83,0,41,2,122,53,82,101,116,117,114,110, - 32,78,111,110,101,32,97,115,32,101,120,116,101,110,115,105, - 111,110,32,109,111,100,117,108,101,115,32,104,97,118,101,32, - 110,111,32,115,111,117,114,99,101,32,99,111,100,101,46,78, - 114,10,0,0,0,114,242,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,252,0,0,0,171,4, - 0,0,115,2,0,0,0,0,2,122,30,69,120,116,101,110, - 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,103, - 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, - 0,0,115,6,0,0,0,124,0,106,0,83,0,114,17,1, - 0,0,114,71,0,0,0,114,242,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,203,0,0,0, - 175,4,0,0,115,2,0,0,0,0,3,122,32,69,120,116, - 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, - 46,103,101,116,95,102,105,108,101,110,97,109,101,78,41,14, - 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, - 151,0,0,0,114,232,0,0,0,114,10,1,0,0,114,14, - 1,0,0,114,235,0,0,0,114,240,0,0,0,114,206,0, - 0,0,114,236,0,0,0,114,252,0,0,0,114,160,0,0, - 0,114,203,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,19,1,0,0,128, - 4,0,0,115,22,0,0,0,8,2,4,6,8,4,8,4, - 8,3,8,8,8,6,8,6,8,4,8,4,2,1,114,19, - 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,64,0,0,0,115,104,0,0, - 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, - 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100, - 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,100, - 11,132,0,90,8,100,12,100,13,132,0,90,9,100,14,100, - 15,132,0,90,10,100,16,100,17,132,0,90,11,100,18,100, - 19,132,0,90,12,100,20,100,21,132,0,90,13,100,22,100, - 23,132,0,90,14,100,24,83,0,41,25,218,14,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,97,38,1,0,0, - 82,101,112,114,101,115,101,110,116,115,32,97,32,110,97,109, - 101,115,112,97,99,101,32,112,97,99,107,97,103,101,39,115, - 32,112,97,116,104,46,32,32,73,116,32,117,115,101,115,32, - 116,104,101,32,109,111,100,117,108,101,32,110,97,109,101,10, - 32,32,32,32,116,111,32,102,105,110,100,32,105,116,115,32, - 112,97,114,101,110,116,32,109,111,100,117,108,101,44,32,97, - 110,100,32,102,114,111,109,32,116,104,101,114,101,32,105,116, - 32,108,111,111,107,115,32,117,112,32,116,104,101,32,112,97, - 114,101,110,116,39,115,10,32,32,32,32,95,95,112,97,116, - 104,95,95,46,32,32,87,104,101,110,32,116,104,105,115,32, - 99,104,97,110,103,101,115,44,32,116,104,101,32,109,111,100, - 117,108,101,39,115,32,111,119,110,32,112,97,116,104,32,105, - 115,32,114,101,99,111,109,112,117,116,101,100,44,10,32,32, - 32,32,117,115,105,110,103,32,112,97,116,104,95,102,105,110, - 100,101,114,46,32,32,70,111,114,32,116,111,112,45,108,101, - 118,101,108,32,109,111,100,117,108,101,115,44,32,116,104,101, - 32,112,97,114,101,110,116,32,109,111,100,117,108,101,39,115, - 32,112,97,116,104,10,32,32,32,32,105,115,32,115,121,115, - 46,112,97,116,104,46,99,4,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,3,0,0,0,67,0,0,0,115, - 36,0,0,0,124,1,124,0,95,0,124,2,124,0,95,1, - 116,2,124,0,160,3,161,0,131,1,124,0,95,4,124,3, - 124,0,95,5,100,0,83,0,114,69,0,0,0,41,6,218, - 5,95,110,97,109,101,218,5,95,112,97,116,104,114,135,0, - 0,0,218,16,95,103,101,116,95,112,97,114,101,110,116,95, - 112,97,116,104,218,17,95,108,97,115,116,95,112,97,114,101, - 110,116,95,112,97,116,104,218,12,95,112,97,116,104,95,102, - 105,110,100,101,114,169,4,114,142,0,0,0,114,140,0,0, - 0,114,65,0,0,0,90,11,112,97,116,104,95,102,105,110, - 100,101,114,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,232,0,0,0,188,4,0,0,115,8,0,0,0, - 0,1,6,1,6,1,14,1,122,23,95,78,97,109,101,115, - 112,97,99,101,80,97,116,104,46,95,95,105,110,105,116,95, - 95,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,124, - 0,106,0,160,1,100,1,161,1,92,3,125,1,125,2,125, - 3,124,2,100,2,107,2,114,30,100,3,83,0,124,1,100, - 4,102,2,83,0,41,5,122,62,82,101,116,117,114,110,115, - 32,97,32,116,117,112,108,101,32,111,102,32,40,112,97,114, - 101,110,116,45,109,111,100,117,108,101,45,110,97,109,101,44, - 32,112,97,114,101,110,116,45,112,97,116,104,45,97,116,116, - 114,45,110,97,109,101,41,114,96,0,0,0,114,14,0,0, - 0,41,2,114,21,0,0,0,114,65,0,0,0,90,8,95, - 95,112,97,116,104,95,95,41,2,114,46,1,0,0,114,103, - 0,0,0,41,4,114,142,0,0,0,114,38,1,0,0,218, - 3,100,111,116,90,2,109,101,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,23,95,102,105,110,100,95,112, - 97,114,101,110,116,95,112,97,116,104,95,110,97,109,101,115, - 194,4,0,0,115,8,0,0,0,0,2,18,1,8,2,4, - 3,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116, - 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112, - 97,116,104,95,110,97,109,101,115,99,1,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, - 0,0,115,28,0,0,0,124,0,160,0,161,0,92,2,125, - 1,125,2,116,1,116,2,106,3,124,1,25,0,124,2,131, - 2,83,0,114,69,0,0,0,41,4,114,53,1,0,0,114, - 154,0,0,0,114,21,0,0,0,218,7,109,111,100,117,108, - 101,115,41,3,114,142,0,0,0,90,18,112,97,114,101,110, - 116,95,109,111,100,117,108,101,95,110,97,109,101,90,14,112, - 97,116,104,95,97,116,116,114,95,110,97,109,101,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,48,1,0, - 0,204,4,0,0,115,4,0,0,0,0,1,12,1,122,31, - 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, - 103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 4,0,0,0,67,0,0,0,115,80,0,0,0,116,0,124, - 0,160,1,161,0,131,1,125,1,124,1,124,0,106,2,107, - 3,114,74,124,0,160,3,124,0,106,4,124,1,161,2,125, - 2,124,2,100,0,117,1,114,68,124,2,106,5,100,0,117, - 0,114,68,124,2,106,6,114,68,124,2,106,6,124,0,95, - 7,124,1,124,0,95,2,124,0,106,7,83,0,114,69,0, - 0,0,41,8,114,135,0,0,0,114,48,1,0,0,114,49, - 1,0,0,114,50,1,0,0,114,46,1,0,0,114,164,0, - 0,0,114,202,0,0,0,114,47,1,0,0,41,3,114,142, - 0,0,0,90,11,112,97,114,101,110,116,95,112,97,116,104, - 114,210,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,12,95,114,101,99,97,108,99,117,108,97, - 116,101,208,4,0,0,115,16,0,0,0,0,2,12,1,10, - 1,14,3,18,1,6,1,8,1,6,1,122,27,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,114,101,99, - 97,108,99,117,108,97,116,101,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,12,0,0,0,116,0,124,0,160,1,161,0,131,1, - 83,0,114,69,0,0,0,41,2,114,29,1,0,0,114,55, - 1,0,0,114,13,1,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,8,95,95,105,116,101,114,95, - 95,221,4,0,0,115,2,0,0,0,0,1,122,23,95,78, - 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,105, - 116,101,114,95,95,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,12, - 0,0,0,124,0,160,0,161,0,124,1,25,0,83,0,114, - 69,0,0,0,169,1,114,55,1,0,0,41,2,114,142,0, - 0,0,218,5,105,110,100,101,120,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,218,11,95,95,103,101,116,105, - 116,101,109,95,95,224,4,0,0,115,2,0,0,0,0,1, - 122,26,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 46,95,95,103,101,116,105,116,101,109,95,95,99,3,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, - 0,67,0,0,0,115,14,0,0,0,124,2,124,0,106,0, - 124,1,60,0,100,0,83,0,114,69,0,0,0,41,1,114, - 47,1,0,0,41,3,114,142,0,0,0,114,58,1,0,0, - 114,65,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,11,95,95,115,101,116,105,116,101,109,95, - 95,227,4,0,0,115,2,0,0,0,0,1,122,26,95,78, - 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,115, - 101,116,105,116,101,109,95,95,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,12,0,0,0,116,0,124,0,160,1,161,0,131,1, - 83,0,114,69,0,0,0,41,2,114,6,0,0,0,114,55, - 1,0,0,114,13,1,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,7,95,95,108,101,110,95,95, - 230,4,0,0,115,2,0,0,0,0,1,122,22,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,108,101, - 110,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,3,0,0,0,67,0,0,0,115,12,0,0, - 0,100,1,160,0,124,0,106,1,161,1,83,0,41,2,78, - 122,20,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 40,123,33,114,125,41,41,2,114,88,0,0,0,114,47,1, - 0,0,114,13,1,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,8,95,95,114,101,112,114,95,95, - 233,4,0,0,115,2,0,0,0,0,1,122,23,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,114,101, - 112,114,95,95,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,3,0,0,0,67,0,0,0,115,12,0, - 0,0,124,1,124,0,160,0,161,0,118,0,83,0,114,69, - 0,0,0,114,57,1,0,0,169,2,114,142,0,0,0,218, - 4,105,116,101,109,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,12,95,95,99,111,110,116,97,105,110,115, - 95,95,236,4,0,0,115,2,0,0,0,0,1,122,27,95, - 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95, - 99,111,110,116,97,105,110,115,95,95,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67, - 0,0,0,115,16,0,0,0,124,0,106,0,160,1,124,1, - 161,1,1,0,100,0,83,0,114,69,0,0,0,41,2,114, - 47,1,0,0,114,61,0,0,0,114,63,1,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,61,0, - 0,0,239,4,0,0,115,2,0,0,0,0,1,122,21,95, - 78,97,109,101,115,112,97,99,101,80,97,116,104,46,97,112, - 112,101,110,100,78,41,15,114,149,0,0,0,114,148,0,0, - 0,114,150,0,0,0,114,151,0,0,0,114,232,0,0,0, - 114,53,1,0,0,114,48,1,0,0,114,55,1,0,0,114, - 56,1,0,0,114,59,1,0,0,114,60,1,0,0,114,61, - 1,0,0,114,62,1,0,0,114,65,1,0,0,114,61,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,45,1,0,0,181,4,0,0,115, - 24,0,0,0,8,1,4,6,8,6,8,10,8,4,8,13, - 8,3,8,3,8,3,8,3,8,3,8,3,114,45,1,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,64,0,0,0,115,80,0,0,0,101, - 0,90,1,100,0,90,2,100,1,100,2,132,0,90,3,101, - 4,100,3,100,4,132,0,131,1,90,5,100,5,100,6,132, - 0,90,6,100,7,100,8,132,0,90,7,100,9,100,10,132, - 0,90,8,100,11,100,12,132,0,90,9,100,13,100,14,132, - 0,90,10,100,15,100,16,132,0,90,11,100,17,83,0,41, - 18,218,16,95,78,97,109,101,115,112,97,99,101,76,111,97, - 100,101,114,99,4,0,0,0,0,0,0,0,0,0,0,0, - 4,0,0,0,4,0,0,0,67,0,0,0,115,18,0,0, - 0,116,0,124,1,124,2,124,3,131,3,124,0,95,1,100, - 0,83,0,114,69,0,0,0,41,2,114,45,1,0,0,114, - 47,1,0,0,114,51,1,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,232,0,0,0,245,4,0, - 0,115,2,0,0,0,0,1,122,25,95,78,97,109,101,115, - 112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,105, - 116,95,95,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,67,0,0,0,115,12,0,0, - 0,100,1,160,0,124,1,106,1,161,1,83,0,41,2,122, - 115,82,101,116,117,114,110,32,114,101,112,114,32,102,111,114, - 32,116,104,101,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,32,32,32,32,84,104,101,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, - 32,84,104,101,32,105,109,112,111,114,116,32,109,97,99,104, - 105,110,101,114,121,32,100,111,101,115,32,116,104,101,32,106, - 111,98,32,105,116,115,101,108,102,46,10,10,32,32,32,32, - 32,32,32,32,122,25,60,109,111,100,117,108,101,32,123,33, - 114,125,32,40,110,97,109,101,115,112,97,99,101,41,62,41, - 2,114,88,0,0,0,114,149,0,0,0,41,2,114,216,0, - 0,0,114,239,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,11,109,111,100,117,108,101,95,114, - 101,112,114,248,4,0,0,115,2,0,0,0,0,7,122,28, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 46,109,111,100,117,108,101,95,114,101,112,114,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, - 0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,2, - 78,84,114,10,0,0,0,114,242,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,206,0,0,0, - 1,5,0,0,115,2,0,0,0,0,1,122,27,95,78,97, - 109,101,115,112,97,99,101,76,111,97,100,101,114,46,105,115, - 95,112,97,99,107,97,103,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, - 0,115,4,0,0,0,100,1,83,0,41,2,78,114,14,0, - 0,0,114,10,0,0,0,114,242,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,252,0,0,0, - 4,5,0,0,115,2,0,0,0,0,1,122,27,95,78,97, - 109,101,115,112,97,99,101,76,111,97,100,101,114,46,103,101, - 116,95,115,111,117,114,99,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,6,0,0,0,67,0,0, - 0,115,16,0,0,0,116,0,100,1,100,2,100,3,100,4, - 100,5,141,4,83,0,41,6,78,114,14,0,0,0,122,8, - 60,115,116,114,105,110,103,62,114,238,0,0,0,84,41,1, - 114,254,0,0,0,41,1,114,255,0,0,0,114,242,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,236,0,0,0,7,5,0,0,115,2,0,0,0,0,1, - 122,25,95,78,97,109,101,115,112,97,99,101,76,111,97,100, - 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,1,83,0,114,233,0, - 0,0,114,10,0,0,0,114,234,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,235,0,0,0, - 10,5,0,0,115,2,0,0,0,0,1,122,30,95,78,97, - 109,101,115,112,97,99,101,76,111,97,100,101,114,46,99,114, - 101,97,116,101,95,109,111,100,117,108,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,0,83,0,114,69,0, - 0,0,114,10,0,0,0,114,20,1,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,240,0,0,0, - 13,5,0,0,115,2,0,0,0,0,1,122,28,95,78,97, - 109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,120, - 101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,0, - 0,0,115,26,0,0,0,116,0,160,1,100,1,124,0,106, - 2,161,2,1,0,116,0,160,3,124,0,124,1,161,2,83, - 0,41,2,122,98,76,111,97,100,32,97,32,110,97,109,101, - 115,112,97,99,101,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104, - 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 46,32,32,85,115,101,32,101,120,101,99,95,109,111,100,117, - 108,101,40,41,32,105,110,115,116,101,97,100,46,10,10,32, - 32,32,32,32,32,32,32,122,38,110,97,109,101,115,112,97, - 99,101,32,109,111,100,117,108,101,32,108,111,97,100,101,100, - 32,119,105,116,104,32,112,97,116,104,32,123,33,114,125,41, - 4,114,158,0,0,0,114,173,0,0,0,114,47,1,0,0, - 114,241,0,0,0,114,242,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,243,0,0,0,16,5, - 0,0,115,8,0,0,0,0,7,6,1,4,255,4,2,122, - 28,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, - 114,46,108,111,97,100,95,109,111,100,117,108,101,78,41,12, - 114,149,0,0,0,114,148,0,0,0,114,150,0,0,0,114, - 232,0,0,0,114,230,0,0,0,114,67,1,0,0,114,206, - 0,0,0,114,252,0,0,0,114,236,0,0,0,114,235,0, - 0,0,114,240,0,0,0,114,243,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,66,1,0,0,244,4,0,0,115,18,0,0,0,8,1, - 8,3,2,1,10,8,8,3,8,3,8,3,8,3,8,3, - 114,66,1,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,64,0,0,0,115,118, - 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,101, - 4,100,2,100,3,132,0,131,1,90,5,101,4,100,4,100, - 5,132,0,131,1,90,6,101,4,100,6,100,7,132,0,131, - 1,90,7,101,4,100,8,100,9,132,0,131,1,90,8,101, - 4,100,19,100,11,100,12,132,1,131,1,90,9,101,4,100, - 20,100,13,100,14,132,1,131,1,90,10,101,4,100,21,100, - 15,100,16,132,1,131,1,90,11,101,4,100,17,100,18,132, - 0,131,1,90,12,100,10,83,0,41,22,218,10,80,97,116, - 104,70,105,110,100,101,114,122,62,77,101,116,97,32,112,97, - 116,104,32,102,105,110,100,101,114,32,102,111,114,32,115,121, - 115,46,112,97,116,104,32,97,110,100,32,112,97,99,107,97, - 103,101,32,95,95,112,97,116,104,95,95,32,97,116,116,114, - 105,98,117,116,101,115,46,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, - 115,64,0,0,0,116,0,116,1,106,2,160,3,161,0,131, - 1,68,0,93,44,92,2,125,1,125,2,124,2,100,1,117, - 0,114,40,116,1,106,2,124,1,61,0,113,14,116,4,124, - 2,100,2,131,2,114,14,124,2,160,5,161,0,1,0,113, - 14,100,1,83,0,41,3,122,125,67,97,108,108,32,116,104, - 101,32,105,110,118,97,108,105,100,97,116,101,95,99,97,99, - 104,101,115,40,41,32,109,101,116,104,111,100,32,111,110,32, - 97,108,108,32,112,97,116,104,32,101,110,116,114,121,32,102, - 105,110,100,101,114,115,10,32,32,32,32,32,32,32,32,115, - 116,111,114,101,100,32,105,110,32,115,121,115,46,112,97,116, - 104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,101, - 115,32,40,119,104,101,114,101,32,105,109,112,108,101,109,101, - 110,116,101,100,41,46,78,218,17,105,110,118,97,108,105,100, - 97,116,101,95,99,97,99,104,101,115,41,6,218,4,108,105, - 115,116,114,21,0,0,0,218,19,112,97,116,104,95,105,109, - 112,111,114,116,101,114,95,99,97,99,104,101,218,5,105,116, - 101,109,115,114,152,0,0,0,114,69,1,0,0,41,3,114, - 216,0,0,0,114,140,0,0,0,218,6,102,105,110,100,101, - 114,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,69,1,0,0,34,5,0,0,115,10,0,0,0,0,4, - 22,1,8,1,10,1,10,1,122,28,80,97,116,104,70,105, - 110,100,101,114,46,105,110,118,97,108,105,100,97,116,101,95, - 99,97,99,104,101,115,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,9,0,0,0,67,0,0,0,115, - 82,0,0,0,116,0,106,1,100,1,117,1,114,28,116,0, - 106,1,115,28,116,2,160,3,100,2,116,4,161,2,1,0, - 116,0,106,1,68,0,93,42,125,2,122,14,124,2,124,1, - 131,1,87,0,2,0,1,0,83,0,4,0,116,5,121,74, - 1,0,1,0,1,0,89,0,113,34,89,0,113,34,48,0, - 113,34,100,1,83,0,41,3,122,46,83,101,97,114,99,104, - 32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, - 102,111,114,32,97,32,102,105,110,100,101,114,32,102,111,114, - 32,39,112,97,116,104,39,46,78,122,23,115,121,115,46,112, - 97,116,104,95,104,111,111,107,115,32,105,115,32,101,109,112, - 116,121,41,6,114,21,0,0,0,218,10,112,97,116,104,95, - 104,111,111,107,115,114,98,0,0,0,114,99,0,0,0,114, - 162,0,0,0,114,141,0,0,0,41,3,114,216,0,0,0, - 114,65,0,0,0,90,4,104,111,111,107,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,11,95,112,97,116, - 104,95,104,111,111,107,115,44,5,0,0,115,16,0,0,0, - 0,3,16,1,12,1,10,1,2,1,14,1,12,1,12,2, - 122,22,80,97,116,104,70,105,110,100,101,114,46,95,112,97, - 116,104,95,104,111,111,107,115,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, - 0,115,100,0,0,0,124,1,100,1,107,2,114,42,122,12, - 116,0,160,1,161,0,125,1,87,0,110,20,4,0,116,2, - 121,40,1,0,1,0,1,0,89,0,100,2,83,0,48,0, - 122,14,116,3,106,4,124,1,25,0,125,2,87,0,110,38, - 4,0,116,5,121,94,1,0,1,0,1,0,124,0,160,6, - 124,1,161,1,125,2,124,2,116,3,106,4,124,1,60,0, - 89,0,110,2,48,0,124,2,83,0,41,3,122,210,71,101, - 116,32,116,104,101,32,102,105,110,100,101,114,32,102,111,114, - 32,116,104,101,32,112,97,116,104,32,101,110,116,114,121,32, - 102,114,111,109,32,115,121,115,46,112,97,116,104,95,105,109, - 112,111,114,116,101,114,95,99,97,99,104,101,46,10,10,32, - 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97, - 116,104,32,101,110,116,114,121,32,105,115,32,110,111,116,32, - 105,110,32,116,104,101,32,99,97,99,104,101,44,32,102,105, - 110,100,32,116,104,101,32,97,112,112,114,111,112,114,105,97, - 116,101,32,102,105,110,100,101,114,10,32,32,32,32,32,32, - 32,32,97,110,100,32,99,97,99,104,101,32,105,116,46,32, - 73,102,32,110,111,32,102,105,110,100,101,114,32,105,115,32, - 97,118,97,105,108,97,98,108,101,44,32,115,116,111,114,101, - 32,78,111,110,101,46,10,10,32,32,32,32,32,32,32,32, - 114,14,0,0,0,78,41,7,114,24,0,0,0,114,81,0, - 0,0,114,26,1,0,0,114,21,0,0,0,114,71,1,0, - 0,218,8,75,101,121,69,114,114,111,114,114,75,1,0,0, - 41,3,114,216,0,0,0,114,65,0,0,0,114,73,1,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,20,95,112,97,116,104,95,105,109,112,111,114,116,101,114, - 95,99,97,99,104,101,57,5,0,0,115,22,0,0,0,0, - 8,8,1,2,1,12,1,12,3,8,1,2,1,14,1,12, - 1,10,1,16,1,122,31,80,97,116,104,70,105,110,100,101, - 114,46,95,112,97,116,104,95,105,109,112,111,114,116,101,114, - 95,99,97,99,104,101,99,3,0,0,0,0,0,0,0,0, - 0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115, - 82,0,0,0,116,0,124,2,100,1,131,2,114,26,124,2, - 160,1,124,1,161,1,92,2,125,3,125,4,110,14,124,2, - 160,2,124,1,161,1,125,3,103,0,125,4,124,3,100,0, - 117,1,114,60,116,3,160,4,124,1,124,3,161,2,83,0, - 116,3,160,5,124,1,100,0,161,2,125,5,124,4,124,5, - 95,6,124,5,83,0,41,2,78,114,161,0,0,0,41,7, - 114,152,0,0,0,114,161,0,0,0,114,229,0,0,0,114, - 158,0,0,0,114,224,0,0,0,114,207,0,0,0,114,202, - 0,0,0,41,6,114,216,0,0,0,114,163,0,0,0,114, - 73,1,0,0,114,164,0,0,0,114,165,0,0,0,114,210, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,16,95,108,101,103,97,99,121,95,103,101,116,95, - 115,112,101,99,79,5,0,0,115,18,0,0,0,0,4,10, - 1,16,2,10,1,4,1,8,1,12,1,12,1,6,1,122, - 27,80,97,116,104,70,105,110,100,101,114,46,95,108,101,103, - 97,99,121,95,103,101,116,95,115,112,101,99,78,99,4,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,5,0, - 0,0,67,0,0,0,115,166,0,0,0,103,0,125,4,124, - 2,68,0,93,134,125,5,116,0,124,5,116,1,116,2,102, - 2,131,2,115,28,113,8,124,0,160,3,124,5,161,1,125, - 6,124,6,100,1,117,1,114,8,116,4,124,6,100,2,131, - 2,114,70,124,6,160,5,124,1,124,3,161,2,125,7,110, - 12,124,0,160,6,124,1,124,6,161,2,125,7,124,7,100, - 1,117,0,114,92,113,8,124,7,106,7,100,1,117,1,114, - 110,124,7,2,0,1,0,83,0,124,7,106,8,125,8,124, - 8,100,1,117,0,114,132,116,9,100,3,131,1,130,1,124, - 4,160,10,124,8,161,1,1,0,113,8,116,11,160,12,124, - 1,100,1,161,2,125,7,124,4,124,7,95,8,124,7,83, - 0,41,4,122,63,70,105,110,100,32,116,104,101,32,108,111, - 97,100,101,114,32,111,114,32,110,97,109,101,115,112,97,99, - 101,95,112,97,116,104,32,102,111,114,32,116,104,105,115,32, - 109,111,100,117,108,101,47,112,97,99,107,97,103,101,32,110, - 97,109,101,46,78,114,226,0,0,0,122,19,115,112,101,99, - 32,109,105,115,115,105,110,103,32,108,111,97,100,101,114,41, - 13,114,185,0,0,0,114,108,0,0,0,218,5,98,121,116, - 101,115,114,77,1,0,0,114,152,0,0,0,114,226,0,0, - 0,114,78,1,0,0,114,164,0,0,0,114,202,0,0,0, - 114,141,0,0,0,114,191,0,0,0,114,158,0,0,0,114, - 207,0,0,0,41,9,114,216,0,0,0,114,163,0,0,0, - 114,65,0,0,0,114,225,0,0,0,218,14,110,97,109,101, - 115,112,97,99,101,95,112,97,116,104,90,5,101,110,116,114, - 121,114,73,1,0,0,114,210,0,0,0,114,165,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, - 9,95,103,101,116,95,115,112,101,99,94,5,0,0,115,40, - 0,0,0,0,5,4,1,8,1,14,1,2,1,10,1,8, - 1,10,1,14,2,12,1,8,1,2,1,10,1,8,1,6, - 1,8,1,8,5,12,2,12,1,6,1,122,20,80,97,116, - 104,70,105,110,100,101,114,46,95,103,101,116,95,115,112,101, - 99,99,4,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,5,0,0,0,67,0,0,0,115,100,0,0,0,124, - 2,100,1,117,0,114,14,116,0,106,1,125,2,124,0,160, - 2,124,1,124,2,124,3,161,3,125,4,124,4,100,1,117, - 0,114,40,100,1,83,0,124,4,106,3,100,1,117,0,114, - 92,124,4,106,4,125,5,124,5,114,86,100,1,124,4,95, - 5,116,6,124,1,124,5,124,0,106,2,131,3,124,4,95, - 4,124,4,83,0,100,1,83,0,110,4,124,4,83,0,100, - 1,83,0,41,2,122,141,84,114,121,32,116,111,32,102,105, - 110,100,32,97,32,115,112,101,99,32,102,111,114,32,39,102, - 117,108,108,110,97,109,101,39,32,111,110,32,115,121,115,46, - 112,97,116,104,32,111,114,32,39,112,97,116,104,39,46,10, - 10,32,32,32,32,32,32,32,32,84,104,101,32,115,101,97, - 114,99,104,32,105,115,32,98,97,115,101,100,32,111,110,32, - 115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,97, - 110,100,32,115,121,115,46,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,46,10,32,32,32,32, - 32,32,32,32,78,41,7,114,21,0,0,0,114,65,0,0, - 0,114,81,1,0,0,114,164,0,0,0,114,202,0,0,0, - 114,205,0,0,0,114,45,1,0,0,41,6,114,216,0,0, - 0,114,163,0,0,0,114,65,0,0,0,114,225,0,0,0, - 114,210,0,0,0,114,80,1,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,226,0,0,0,126,5, - 0,0,115,26,0,0,0,0,6,8,1,6,1,14,1,8, - 1,4,1,10,1,6,1,4,3,6,1,16,1,4,2,6, - 2,122,20,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,115,112,101,99,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, - 115,30,0,0,0,124,0,160,0,124,1,124,2,161,2,125, - 3,124,3,100,1,117,0,114,24,100,1,83,0,124,3,106, - 1,83,0,41,2,122,170,102,105,110,100,32,116,104,101,32, - 109,111,100,117,108,101,32,111,110,32,115,121,115,46,112,97, - 116,104,32,111,114,32,39,112,97,116,104,39,32,98,97,115, - 101,100,32,111,110,32,115,121,115,46,112,97,116,104,95,104, - 111,111,107,115,32,97,110,100,10,32,32,32,32,32,32,32, - 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, - 101,114,95,99,97,99,104,101,46,10,10,32,32,32,32,32, - 32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,85, - 115,101,32,102,105,110,100,95,115,112,101,99,40,41,32,105, - 110,115,116,101,97,100,46,10,10,32,32,32,32,32,32,32, - 32,78,114,227,0,0,0,114,228,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,229,0,0,0, - 150,5,0,0,115,8,0,0,0,0,8,12,1,8,1,4, - 1,122,22,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,4,0,0,0,79,0, - 0,0,115,28,0,0,0,100,1,100,2,108,0,109,1,125, - 3,1,0,124,3,106,2,124,1,105,0,124,2,164,1,142, - 1,83,0,41,3,97,32,1,0,0,10,32,32,32,32,32, - 32,32,32,70,105,110,100,32,100,105,115,116,114,105,98,117, - 116,105,111,110,115,46,10,10,32,32,32,32,32,32,32,32, - 82,101,116,117,114,110,32,97,110,32,105,116,101,114,97,98, - 108,101,32,111,102,32,97,108,108,32,68,105,115,116,114,105, - 98,117,116,105,111,110,32,105,110,115,116,97,110,99,101,115, - 32,99,97,112,97,98,108,101,32,111,102,10,32,32,32,32, - 32,32,32,32,108,111,97,100,105,110,103,32,116,104,101,32, - 109,101,116,97,100,97,116,97,32,102,111,114,32,112,97,99, - 107,97,103,101,115,32,109,97,116,99,104,105,110,103,32,96, - 96,99,111,110,116,101,120,116,46,110,97,109,101,96,96,10, - 32,32,32,32,32,32,32,32,40,111,114,32,97,108,108,32, - 110,97,109,101,115,32,105,102,32,96,96,78,111,110,101,96, - 96,32,105,110,100,105,99,97,116,101,100,41,32,97,108,111, - 110,103,32,116,104,101,32,112,97,116,104,115,32,105,110,32, - 116,104,101,32,108,105,115,116,10,32,32,32,32,32,32,32, - 32,111,102,32,100,105,114,101,99,116,111,114,105,101,115,32, - 96,96,99,111,110,116,101,120,116,46,112,97,116,104,96,96, - 46,10,32,32,32,32,32,32,32,32,114,0,0,0,0,41, - 1,218,18,77,101,116,97,100,97,116,97,80,97,116,104,70, - 105,110,100,101,114,41,3,90,18,105,109,112,111,114,116,108, - 105,98,46,109,101,116,97,100,97,116,97,114,82,1,0,0, - 218,18,102,105,110,100,95,100,105,115,116,114,105,98,117,116, - 105,111,110,115,41,4,114,216,0,0,0,114,143,0,0,0, - 114,144,0,0,0,114,82,1,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,83,1,0,0,163,5, - 0,0,115,4,0,0,0,0,10,12,1,122,29,80,97,116, - 104,70,105,110,100,101,114,46,102,105,110,100,95,100,105,115, - 116,114,105,98,117,116,105,111,110,115,41,1,78,41,2,78, - 78,41,1,78,41,13,114,149,0,0,0,114,148,0,0,0, - 114,150,0,0,0,114,151,0,0,0,114,230,0,0,0,114, - 69,1,0,0,114,75,1,0,0,114,77,1,0,0,114,78, - 1,0,0,114,81,1,0,0,114,226,0,0,0,114,229,0, - 0,0,114,83,1,0,0,114,10,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,68,1,0,0, - 30,5,0,0,115,34,0,0,0,8,2,4,2,2,1,10, - 9,2,1,10,12,2,1,10,21,2,1,10,14,2,1,12, - 31,2,1,12,23,2,1,12,12,2,1,114,68,1,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,64,0,0,0,115,90,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, - 90,4,100,4,100,5,132,0,90,5,101,6,90,7,100,6, - 100,7,132,0,90,8,100,8,100,9,132,0,90,9,100,19, - 100,11,100,12,132,1,90,10,100,13,100,14,132,0,90,11, - 101,12,100,15,100,16,132,0,131,1,90,13,100,17,100,18, - 132,0,90,14,100,10,83,0,41,20,218,10,70,105,108,101, - 70,105,110,100,101,114,122,172,70,105,108,101,45,98,97,115, - 101,100,32,102,105,110,100,101,114,46,10,10,32,32,32,32, - 73,110,116,101,114,97,99,116,105,111,110,115,32,119,105,116, - 104,32,116,104,101,32,102,105,108,101,32,115,121,115,116,101, - 109,32,97,114,101,32,99,97,99,104,101,100,32,102,111,114, - 32,112,101,114,102,111,114,109,97,110,99,101,44,32,98,101, - 105,110,103,10,32,32,32,32,114,101,102,114,101,115,104,101, - 100,32,119,104,101,110,32,116,104,101,32,100,105,114,101,99, - 116,111,114,121,32,116,104,101,32,102,105,110,100,101,114,32, - 105,115,32,104,97,110,100,108,105,110,103,32,104,97,115,32, - 98,101,101,110,32,109,111,100,105,102,105,101,100,46,10,10, - 32,32,32,32,99,2,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,6,0,0,0,7,0,0,0,115,112,0, - 0,0,103,0,125,3,124,2,68,0,93,32,92,2,137,0, - 125,4,124,3,160,0,135,0,102,1,100,1,100,2,132,8, - 124,4,68,0,131,1,161,1,1,0,113,8,124,3,124,0, - 95,1,124,1,112,54,100,3,124,0,95,2,116,3,124,0, - 106,2,131,1,115,86,116,4,116,5,160,6,161,0,124,0, - 106,2,131,2,124,0,95,2,100,4,124,0,95,7,116,8, - 131,0,124,0,95,9,116,8,131,0,124,0,95,10,100,5, - 83,0,41,6,122,154,73,110,105,116,105,97,108,105,122,101, - 32,119,105,116,104,32,116,104,101,32,112,97,116,104,32,116, - 111,32,115,101,97,114,99,104,32,111,110,32,97,110,100,32, - 97,32,118,97,114,105,97,98,108,101,32,110,117,109,98,101, - 114,32,111,102,10,32,32,32,32,32,32,32,32,50,45,116, - 117,112,108,101,115,32,99,111,110,116,97,105,110,105,110,103, - 32,116,104,101,32,108,111,97,100,101,114,32,97,110,100,32, - 116,104,101,32,102,105,108,101,32,115,117,102,102,105,120,101, - 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, - 32,32,32,32,32,114,101,99,111,103,110,105,122,101,115,46, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,51,0,0,0,115,22,0,0,0,124,0, - 93,14,125,1,124,1,136,0,102,2,86,0,1,0,113,2, - 100,0,83,0,114,69,0,0,0,114,10,0,0,0,114,40, - 1,0,0,169,1,114,164,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,12,0,0,0,192,5,0,0,114,13,0, - 0,0,122,38,70,105,108,101,70,105,110,100,101,114,46,95, - 95,105,110,105,116,95,95,46,60,108,111,99,97,108,115,62, - 46,60,103,101,110,101,120,112,114,62,114,96,0,0,0,114, - 129,0,0,0,78,41,11,114,191,0,0,0,218,8,95,108, - 111,97,100,101,114,115,114,65,0,0,0,114,85,0,0,0, - 114,67,0,0,0,114,24,0,0,0,114,81,0,0,0,218, - 11,95,112,97,116,104,95,109,116,105,109,101,218,3,115,101, - 116,218,11,95,112,97,116,104,95,99,97,99,104,101,218,19, - 95,114,101,108,97,120,101,100,95,112,97,116,104,95,99,97, - 99,104,101,41,5,114,142,0,0,0,114,65,0,0,0,218, - 14,108,111,97,100,101,114,95,100,101,116,97,105,108,115,90, - 7,108,111,97,100,101,114,115,114,212,0,0,0,114,10,0, - 0,0,114,85,1,0,0,114,11,0,0,0,114,232,0,0, - 0,186,5,0,0,115,20,0,0,0,0,4,4,1,12,1, - 26,1,6,2,10,1,10,1,18,1,6,1,8,1,122,19, - 70,105,108,101,70,105,110,100,101,114,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,2,0,0,0,67,0,0,0,115,10,0,0, - 0,100,1,124,0,95,0,100,2,83,0,41,3,122,31,73, - 110,118,97,108,105,100,97,116,101,32,116,104,101,32,100,105, - 114,101,99,116,111,114,121,32,109,116,105,109,101,46,114,129, - 0,0,0,78,41,1,114,87,1,0,0,114,13,1,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 69,1,0,0,202,5,0,0,115,2,0,0,0,0,2,122, - 28,70,105,108,101,70,105,110,100,101,114,46,105,110,118,97, - 108,105,100,97,116,101,95,99,97,99,104,101,115,99,2,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0, - 0,0,67,0,0,0,115,42,0,0,0,124,0,160,0,124, - 1,161,1,125,2,124,2,100,1,117,0,114,26,100,1,103, - 0,102,2,83,0,124,2,106,1,124,2,106,2,112,38,103, - 0,102,2,83,0,41,2,122,197,84,114,121,32,116,111,32, - 102,105,110,100,32,97,32,108,111,97,100,101,114,32,102,111, - 114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, - 109,111,100,117,108,101,44,32,111,114,32,116,104,101,32,110, - 97,109,101,115,112,97,99,101,10,32,32,32,32,32,32,32, - 32,112,97,99,107,97,103,101,32,112,111,114,116,105,111,110, - 115,46,32,82,101,116,117,114,110,115,32,40,108,111,97,100, - 101,114,44,32,108,105,115,116,45,111,102,45,112,111,114,116, - 105,111,110,115,41,46,10,10,32,32,32,32,32,32,32,32, - 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32, - 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, - 101,97,100,46,10,10,32,32,32,32,32,32,32,32,78,41, - 3,114,226,0,0,0,114,164,0,0,0,114,202,0,0,0, - 41,3,114,142,0,0,0,114,163,0,0,0,114,210,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,161,0,0,0,208,5,0,0,115,8,0,0,0,0,7, - 10,1,8,1,8,1,122,22,70,105,108,101,70,105,110,100, - 101,114,46,102,105,110,100,95,108,111,97,100,101,114,99,6, - 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,6, - 0,0,0,67,0,0,0,115,26,0,0,0,124,1,124,2, - 124,3,131,2,125,6,116,0,124,2,124,3,124,6,124,4, - 100,1,141,4,83,0,41,2,78,114,201,0,0,0,41,1, - 114,213,0,0,0,41,7,114,142,0,0,0,114,211,0,0, - 0,114,163,0,0,0,114,65,0,0,0,90,4,115,109,115, - 108,114,225,0,0,0,114,164,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,81,1,0,0,220, - 5,0,0,115,8,0,0,0,0,1,10,1,8,1,2,255, - 122,20,70,105,108,101,70,105,110,100,101,114,46,95,103,101, - 116,95,115,112,101,99,78,99,3,0,0,0,0,0,0,0, - 0,0,0,0,14,0,0,0,9,0,0,0,67,0,0,0, - 115,126,1,0,0,100,1,125,3,124,1,160,0,100,2,161, - 1,100,3,25,0,125,4,122,24,116,1,124,0,106,2,112, - 34,116,3,160,4,161,0,131,1,106,5,125,5,87,0,110, - 22,4,0,116,6,121,64,1,0,1,0,1,0,100,4,125, - 5,89,0,110,2,48,0,124,5,124,0,106,7,107,3,114, - 90,124,0,160,8,161,0,1,0,124,5,124,0,95,7,116, - 9,131,0,114,112,124,0,106,10,125,6,124,4,160,11,161, - 0,125,7,110,10,124,0,106,12,125,6,124,4,125,7,124, - 7,124,6,118,0,114,216,116,13,124,0,106,2,124,4,131, - 2,125,8,124,0,106,14,68,0,93,58,92,2,125,9,125, - 10,100,5,124,9,23,0,125,11,116,13,124,8,124,11,131, - 2,125,12,116,15,124,12,131,1,114,148,124,0,160,16,124, - 10,124,1,124,12,124,8,103,1,124,2,161,5,2,0,1, - 0,83,0,113,148,116,17,124,8,131,1,125,3,124,0,106, - 14,68,0,93,112,92,2,125,9,125,10,122,20,116,13,124, - 0,106,2,124,4,124,9,23,0,131,2,125,12,87,0,110, - 24,4,0,116,18,144,1,121,18,1,0,1,0,1,0,89, - 0,1,0,100,6,83,0,48,0,116,19,106,20,100,7,124, - 12,100,3,100,8,141,3,1,0,124,7,124,9,23,0,124, - 6,118,0,114,222,116,15,124,12,131,1,114,222,124,0,160, - 16,124,10,124,1,124,12,100,6,124,2,161,5,2,0,1, - 0,83,0,113,222,124,3,144,1,114,122,116,19,160,20,100, - 9,124,8,161,2,1,0,116,19,160,21,124,1,100,6,161, - 2,125,13,124,8,103,1,124,13,95,22,124,13,83,0,100, - 6,83,0,41,10,122,111,84,114,121,32,116,111,32,102,105, - 110,100,32,97,32,115,112,101,99,32,102,111,114,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,46,10,10,32,32,32,32,32,32,32,32,82,101,116, - 117,114,110,115,32,116,104,101,32,109,97,116,99,104,105,110, - 103,32,115,112,101,99,44,32,111,114,32,78,111,110,101,32, - 105,102,32,110,111,116,32,102,111,117,110,100,46,10,32,32, - 32,32,32,32,32,32,70,114,96,0,0,0,114,45,0,0, - 0,114,129,0,0,0,114,232,0,0,0,78,122,9,116,114, - 121,105,110,103,32,123,125,41,1,90,9,118,101,114,98,111, - 115,105,116,121,122,25,112,111,115,115,105,98,108,101,32,110, - 97,109,101,115,112,97,99,101,32,102,111,114,32,123,125,41, - 23,114,103,0,0,0,114,75,0,0,0,114,65,0,0,0, - 114,24,0,0,0,114,81,0,0,0,114,33,1,0,0,114, - 76,0,0,0,114,87,1,0,0,218,11,95,102,105,108,108, - 95,99,97,99,104,101,114,27,0,0,0,114,90,1,0,0, - 114,130,0,0,0,114,89,1,0,0,114,67,0,0,0,114, - 86,1,0,0,114,80,0,0,0,114,81,1,0,0,114,82, - 0,0,0,114,110,0,0,0,114,158,0,0,0,114,173,0, - 0,0,114,207,0,0,0,114,202,0,0,0,41,14,114,142, - 0,0,0,114,163,0,0,0,114,225,0,0,0,90,12,105, - 115,95,110,97,109,101,115,112,97,99,101,90,11,116,97,105, - 108,95,109,111,100,117,108,101,114,193,0,0,0,90,5,99, - 97,99,104,101,90,12,99,97,99,104,101,95,109,111,100,117, - 108,101,90,9,98,97,115,101,95,112,97,116,104,114,41,1, - 0,0,114,211,0,0,0,90,13,105,110,105,116,95,102,105, - 108,101,110,97,109,101,90,9,102,117,108,108,95,112,97,116, - 104,114,210,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,226,0,0,0,225,5,0,0,115,78, - 0,0,0,0,5,4,1,14,1,2,1,24,1,12,1,10, - 1,10,1,8,1,6,2,6,1,6,1,10,2,6,1,4, - 2,8,1,12,1,14,1,8,1,10,1,8,1,26,4,8, - 2,14,1,2,1,20,1,14,1,10,1,16,1,12,1,8, - 1,10,1,4,255,10,2,6,1,12,1,12,1,8,1,4, - 1,122,20,70,105,108,101,70,105,110,100,101,114,46,102,105, - 110,100,95,115,112,101,99,99,1,0,0,0,0,0,0,0, - 0,0,0,0,9,0,0,0,10,0,0,0,67,0,0,0, - 115,188,0,0,0,124,0,106,0,125,1,122,22,116,1,160, - 2,124,1,112,22,116,1,160,3,161,0,161,1,125,2,87, - 0,110,28,4,0,116,4,116,5,116,6,102,3,121,56,1, - 0,1,0,1,0,103,0,125,2,89,0,110,2,48,0,116, - 7,106,8,160,9,100,1,161,1,115,82,116,10,124,2,131, - 1,124,0,95,11,110,74,116,10,131,0,125,3,124,2,68, - 0,93,56,125,4,124,4,160,12,100,2,161,1,92,3,125, - 5,125,6,125,7,124,6,114,134,100,3,160,13,124,5,124, - 7,160,14,161,0,161,2,125,8,110,4,124,5,125,8,124, - 3,160,15,124,8,161,1,1,0,113,92,124,3,124,0,95, - 11,116,7,106,8,160,9,116,16,161,1,114,184,100,4,100, - 5,132,0,124,2,68,0,131,1,124,0,95,17,100,6,83, - 0,41,7,122,68,70,105,108,108,32,116,104,101,32,99,97, - 99,104,101,32,111,102,32,112,111,116,101,110,116,105,97,108, - 32,109,111,100,117,108,101,115,32,97,110,100,32,112,97,99, - 107,97,103,101,115,32,102,111,114,32,116,104,105,115,32,100, - 105,114,101,99,116,111,114,121,46,114,20,0,0,0,114,96, - 0,0,0,114,87,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,4,0,0,0,83,0,0, - 0,115,20,0,0,0,104,0,124,0,93,12,125,1,124,1, - 160,0,161,0,146,2,113,4,83,0,114,10,0,0,0,41, - 1,114,130,0,0,0,41,2,114,8,0,0,0,90,2,102, - 110,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,19,0,0,0,49,6,0,0,114,13,0,0,0,122,41, - 70,105,108,101,70,105,110,100,101,114,46,95,102,105,108,108, - 95,99,97,99,104,101,46,60,108,111,99,97,108,115,62,46, - 60,115,101,116,99,111,109,112,62,78,41,18,114,65,0,0, - 0,114,24,0,0,0,114,30,1,0,0,114,81,0,0,0, - 114,26,1,0,0,218,15,80,101,114,109,105,115,115,105,111, - 110,69,114,114,111,114,218,18,78,111,116,65,68,105,114,101, - 99,116,111,114,121,69,114,114,111,114,114,21,0,0,0,114, - 28,0,0,0,114,29,0,0,0,114,88,1,0,0,114,89, - 1,0,0,114,125,0,0,0,114,88,0,0,0,114,130,0, - 0,0,218,3,97,100,100,114,30,0,0,0,114,90,1,0, - 0,41,9,114,142,0,0,0,114,65,0,0,0,114,31,1, - 0,0,90,21,108,111,119,101,114,95,115,117,102,102,105,120, - 95,99,111,110,116,101,110,116,115,114,64,1,0,0,114,140, - 0,0,0,114,52,1,0,0,114,41,1,0,0,90,8,110, - 101,119,95,110,97,109,101,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,92,1,0,0,20,6,0,0,115, - 34,0,0,0,0,2,6,1,2,1,22,1,18,3,10,3, - 12,1,12,7,6,1,8,1,16,1,4,1,18,2,4,1, - 12,1,6,1,12,1,122,22,70,105,108,101,70,105,110,100, - 101,114,46,95,102,105,108,108,95,99,97,99,104,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,7,0,0,0,115,18,0,0,0,135,0,135,1, - 102,2,100,1,100,2,132,8,125,2,124,2,83,0,41,3, - 97,20,1,0,0,65,32,99,108,97,115,115,32,109,101,116, - 104,111,100,32,119,104,105,99,104,32,114,101,116,117,114,110, - 115,32,97,32,99,108,111,115,117,114,101,32,116,111,32,117, - 115,101,32,111,110,32,115,121,115,46,112,97,116,104,95,104, - 111,111,107,10,32,32,32,32,32,32,32,32,119,104,105,99, - 104,32,119,105,108,108,32,114,101,116,117,114,110,32,97,110, - 32,105,110,115,116,97,110,99,101,32,117,115,105,110,103,32, - 116,104,101,32,115,112,101,99,105,102,105,101,100,32,108,111, - 97,100,101,114,115,32,97,110,100,32,116,104,101,32,112,97, - 116,104,10,32,32,32,32,32,32,32,32,99,97,108,108,101, - 100,32,111,110,32,116,104,101,32,99,108,111,115,117,114,101, - 46,10,10,32,32,32,32,32,32,32,32,73,102,32,116,104, - 101,32,112,97,116,104,32,99,97,108,108,101,100,32,111,110, - 32,116,104,101,32,99,108,111,115,117,114,101,32,105,115,32, - 110,111,116,32,97,32,100,105,114,101,99,116,111,114,121,44, - 32,73,109,112,111,114,116,69,114,114,111,114,32,105,115,10, - 32,32,32,32,32,32,32,32,114,97,105,115,101,100,46,10, - 10,32,32,32,32,32,32,32,32,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,4,0,0,0,19,0, - 0,0,115,36,0,0,0,116,0,124,0,131,1,115,20,116, - 1,100,1,124,0,100,2,141,2,130,1,136,0,124,0,103, - 1,136,1,162,1,82,0,142,0,83,0,41,3,122,45,80, - 97,116,104,32,104,111,111,107,32,102,111,114,32,105,109,112, - 111,114,116,108,105,98,46,109,97,99,104,105,110,101,114,121, - 46,70,105,108,101,70,105,110,100,101,114,46,122,30,111,110, - 108,121,32,100,105,114,101,99,116,111,114,105,101,115,32,97, - 114,101,32,115,117,112,112,111,114,116,101,100,114,71,0,0, - 0,41,2,114,82,0,0,0,114,141,0,0,0,114,71,0, - 0,0,169,2,114,216,0,0,0,114,91,1,0,0,114,10, - 0,0,0,114,11,0,0,0,218,24,112,97,116,104,95,104, - 111,111,107,95,102,111,114,95,70,105,108,101,70,105,110,100, - 101,114,61,6,0,0,115,6,0,0,0,0,2,8,1,12, - 1,122,54,70,105,108,101,70,105,110,100,101,114,46,112,97, - 116,104,95,104,111,111,107,46,60,108,111,99,97,108,115,62, - 46,112,97,116,104,95,104,111,111,107,95,102,111,114,95,70, - 105,108,101,70,105,110,100,101,114,114,10,0,0,0,41,3, - 114,216,0,0,0,114,91,1,0,0,114,97,1,0,0,114, - 10,0,0,0,114,96,1,0,0,114,11,0,0,0,218,9, - 112,97,116,104,95,104,111,111,107,51,6,0,0,115,4,0, - 0,0,0,10,14,6,122,20,70,105,108,101,70,105,110,100, - 101,114,46,112,97,116,104,95,104,111,111,107,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,67,0,0,0,115,12,0,0,0,100,1,160,0,124,0, - 106,1,161,1,83,0,41,2,78,122,16,70,105,108,101,70, - 105,110,100,101,114,40,123,33,114,125,41,41,2,114,88,0, - 0,0,114,65,0,0,0,114,13,1,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,62,1,0,0, - 69,6,0,0,115,2,0,0,0,0,1,122,19,70,105,108, - 101,70,105,110,100,101,114,46,95,95,114,101,112,114,95,95, - 41,1,78,41,15,114,149,0,0,0,114,148,0,0,0,114, - 150,0,0,0,114,151,0,0,0,114,232,0,0,0,114,69, - 1,0,0,114,167,0,0,0,114,229,0,0,0,114,161,0, - 0,0,114,81,1,0,0,114,226,0,0,0,114,92,1,0, - 0,114,230,0,0,0,114,98,1,0,0,114,62,1,0,0, - 114,10,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,84,1,0,0,177,5,0,0,115,22,0, - 0,0,8,2,4,7,8,16,8,4,4,2,8,12,8,5, - 10,51,8,31,2,1,10,17,114,84,1,0,0,99,4,0, - 0,0,0,0,0,0,0,0,0,0,6,0,0,0,8,0, - 0,0,67,0,0,0,115,144,0,0,0,124,0,160,0,100, - 1,161,1,125,4,124,0,160,0,100,2,161,1,125,5,124, - 4,115,66,124,5,114,36,124,5,106,1,125,4,110,30,124, - 2,124,3,107,2,114,56,116,2,124,1,124,2,131,2,125, - 4,110,10,116,3,124,1,124,2,131,2,125,4,124,5,115, - 84,116,4,124,1,124,2,124,4,100,3,141,3,125,5,122, - 36,124,5,124,0,100,2,60,0,124,4,124,0,100,1,60, - 0,124,2,124,0,100,4,60,0,124,3,124,0,100,5,60, - 0,87,0,110,18,4,0,116,5,121,138,1,0,1,0,1, - 0,89,0,110,2,48,0,100,0,83,0,41,6,78,218,10, - 95,95,108,111,97,100,101,114,95,95,218,8,95,95,115,112, - 101,99,95,95,114,85,1,0,0,90,8,95,95,102,105,108, - 101,95,95,90,10,95,95,99,97,99,104,101,100,95,95,41, - 6,218,3,103,101,116,114,164,0,0,0,114,39,1,0,0, - 114,32,1,0,0,114,213,0,0,0,218,9,69,120,99,101, - 112,116,105,111,110,41,6,90,2,110,115,114,140,0,0,0, - 90,8,112,97,116,104,110,97,109,101,90,9,99,112,97,116, - 104,110,97,109,101,114,164,0,0,0,114,210,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,14, - 95,102,105,120,95,117,112,95,109,111,100,117,108,101,75,6, - 0,0,115,34,0,0,0,0,2,10,1,10,1,4,1,4, - 1,8,1,8,1,12,2,10,1,4,1,14,1,2,1,8, - 1,8,1,8,1,12,1,12,2,114,103,1,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,67,0,0,0,115,38,0,0,0,116,0,116,1, - 160,2,161,0,102,2,125,0,116,3,116,4,102,2,125,1, - 116,5,116,6,102,2,125,2,124,0,124,1,124,2,103,3, - 83,0,41,1,122,95,82,101,116,117,114,110,115,32,97,32, - 108,105,115,116,32,111,102,32,102,105,108,101,45,98,97,115, - 101,100,32,109,111,100,117,108,101,32,108,111,97,100,101,114, - 115,46,10,10,32,32,32,32,69,97,99,104,32,105,116,101, - 109,32,105,115,32,97,32,116,117,112,108,101,32,40,108,111, - 97,100,101,114,44,32,115,117,102,102,105,120,101,115,41,46, - 10,32,32,32,32,41,7,114,19,1,0,0,114,187,0,0, - 0,218,18,101,120,116,101,110,115,105,111,110,95,115,117,102, - 102,105,120,101,115,114,32,1,0,0,114,126,0,0,0,114, - 39,1,0,0,114,112,0,0,0,41,3,90,10,101,120,116, - 101,110,115,105,111,110,115,90,6,115,111,117,114,99,101,90, - 8,98,121,116,101,99,111,100,101,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,208,0,0,0,98,6,0, - 0,115,8,0,0,0,0,5,12,1,8,1,8,1,114,208, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 10,0,0,0,9,0,0,0,67,0,0,0,115,132,1,0, - 0,124,0,97,0,116,0,106,1,97,1,116,0,106,2,97, - 2,116,1,106,3,116,4,25,0,125,1,100,1,100,2,103, - 1,102,2,100,3,100,4,100,2,103,2,102,2,102,2,125, - 2,124,2,68,0,93,108,92,2,125,3,125,4,116,5,100, - 5,100,6,132,0,124,4,68,0,131,1,131,1,115,82,74, - 0,130,1,124,4,100,7,25,0,125,5,124,3,116,1,106, - 3,118,0,114,116,116,1,106,3,124,3,25,0,125,6,1, - 0,113,170,113,52,122,20,116,0,160,6,124,3,161,1,125, - 6,87,0,1,0,113,170,87,0,113,52,4,0,116,7,121, - 158,1,0,1,0,1,0,89,0,113,52,89,0,113,52,48, - 0,113,52,116,7,100,8,131,1,130,1,116,8,124,1,100, - 9,124,6,131,3,1,0,116,8,124,1,100,10,124,5,131, - 3,1,0,116,8,124,1,100,11,100,12,160,9,124,4,161, - 1,131,3,1,0,116,8,124,1,100,13,100,14,100,15,132, - 0,124,4,68,0,131,1,131,3,1,0,103,0,100,16,162, - 1,125,7,124,3,100,3,107,2,144,1,114,6,124,7,160, - 10,100,17,161,1,1,0,124,7,68,0,93,52,125,8,124, - 8,116,1,106,3,118,1,144,1,114,38,116,0,160,6,124, - 8,161,1,125,9,110,10,116,1,106,3,124,8,25,0,125, - 9,116,8,124,1,124,8,124,9,131,3,1,0,144,1,113, - 10,116,8,124,1,100,18,116,11,131,0,131,3,1,0,116, - 12,160,13,116,2,160,14,161,0,161,1,1,0,124,3,100, - 3,107,2,144,1,114,128,116,15,160,10,100,19,161,1,1, - 0,100,20,116,12,118,0,144,1,114,128,100,21,116,16,95, - 17,100,22,83,0,41,23,122,205,83,101,116,117,112,32,116, - 104,101,32,112,97,116,104,45,98,97,115,101,100,32,105,109, - 112,111,114,116,101,114,115,32,102,111,114,32,105,109,112,111, - 114,116,108,105,98,32,98,121,32,105,109,112,111,114,116,105, - 110,103,32,110,101,101,100,101,100,10,32,32,32,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97, - 110,100,32,105,110,106,101,99,116,105,110,103,32,116,104,101, - 109,32,105,110,116,111,32,116,104,101,32,103,108,111,98,97, - 108,32,110,97,109,101,115,112,97,99,101,46,10,10,32,32, - 32,32,79,116,104,101,114,32,99,111,109,112,111,110,101,110, - 116,115,32,97,114,101,32,101,120,116,114,97,99,116,101,100, - 32,102,114,111,109,32,116,104,101,32,99,111,114,101,32,98, - 111,111,116,115,116,114,97,112,32,109,111,100,117,108,101,46, - 10,10,32,32,32,32,218,5,112,111,115,105,120,114,2,0, - 0,0,218,2,110,116,114,1,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, - 115,0,0,0,115,26,0,0,0,124,0,93,18,125,1,116, - 0,124,1,131,1,100,0,107,2,86,0,1,0,113,2,100, - 1,83,0,114,3,0,0,0,114,5,0,0,0,114,7,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,12,0,0,0,127,6,0,0,114,13,0,0,0,122, - 25,95,115,101,116,117,112,46,60,108,111,99,97,108,115,62, - 46,60,103,101,110,101,120,112,114,62,114,0,0,0,0,122, - 30,105,109,112,111,114,116,108,105,98,32,114,101,113,117,105, - 114,101,115,32,112,111,115,105,120,32,111,114,32,110,116,114, - 24,0,0,0,114,59,0,0,0,114,50,0,0,0,114,14, - 0,0,0,218,20,95,112,97,116,104,115,101,112,115,95,119, - 105,116,104,95,99,111,108,111,110,99,1,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,4,0,0,0,83,0, - 0,0,115,22,0,0,0,104,0,124,0,93,14,125,1,100, - 0,124,1,155,0,157,2,146,2,113,4,83,0,114,15,0, - 0,0,114,10,0,0,0,114,17,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,19,0,0,0, - 144,6,0,0,114,13,0,0,0,122,25,95,115,101,116,117, - 112,46,60,108,111,99,97,108,115,62,46,60,115,101,116,99, - 111,109,112,62,41,3,114,90,0,0,0,114,98,0,0,0, - 114,184,0,0,0,114,215,0,0,0,114,27,0,0,0,122, - 4,46,112,121,119,122,6,95,100,46,112,121,100,84,78,41, - 18,114,158,0,0,0,114,21,0,0,0,114,187,0,0,0, - 114,54,1,0,0,114,149,0,0,0,218,3,97,108,108,90, - 18,95,98,117,105,108,116,105,110,95,102,114,111,109,95,110, - 97,109,101,114,141,0,0,0,114,153,0,0,0,114,62,0, - 0,0,114,61,0,0,0,114,32,0,0,0,114,44,1,0, - 0,114,191,0,0,0,114,104,1,0,0,114,126,0,0,0, - 114,214,0,0,0,114,218,0,0,0,41,10,218,17,95,98, - 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,90, - 11,115,101,108,102,95,109,111,100,117,108,101,90,10,111,115, - 95,100,101,116,97,105,108,115,90,10,98,117,105,108,116,105, - 110,95,111,115,114,50,0,0,0,114,59,0,0,0,90,9, - 111,115,95,109,111,100,117,108,101,90,13,98,117,105,108,116, - 105,110,95,110,97,109,101,115,90,12,98,117,105,108,116,105, - 110,95,110,97,109,101,90,14,98,117,105,108,116,105,110,95, - 109,111,100,117,108,101,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,6,95,115,101,116,117,112,109,6,0, - 0,115,70,0,0,0,0,8,4,1,6,1,6,2,10,3, - 22,1,12,2,22,1,8,1,10,1,10,1,6,2,2,1, - 10,1,10,1,12,1,12,2,8,2,12,1,12,1,18,1, - 22,3,8,1,10,1,10,1,8,1,12,1,12,2,10,1, - 16,3,14,1,14,1,10,1,10,1,10,1,114,110,1,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,67,0,0,0,115,50,0,0,0,116, - 0,124,0,131,1,1,0,116,1,131,0,125,1,116,2,106, - 3,160,4,116,5,106,6,124,1,142,0,103,1,161,1,1, - 0,116,2,106,7,160,8,116,9,161,1,1,0,100,1,83, - 0,41,2,122,41,73,110,115,116,97,108,108,32,116,104,101, - 32,112,97,116,104,45,98,97,115,101,100,32,105,109,112,111, - 114,116,32,99,111,109,112,111,110,101,110,116,115,46,78,41, - 10,114,110,1,0,0,114,208,0,0,0,114,21,0,0,0, - 114,74,1,0,0,114,191,0,0,0,114,84,1,0,0,114, - 98,1,0,0,218,9,109,101,116,97,95,112,97,116,104,114, - 61,0,0,0,114,68,1,0,0,41,2,114,109,1,0,0, - 90,17,115,117,112,112,111,114,116,101,100,95,108,111,97,100, - 101,114,115,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,8,95,105,110,115,116,97,108,108,166,6,0,0, - 115,8,0,0,0,0,2,8,1,6,1,20,1,114,112,1, - 0,0,41,1,114,86,0,0,0,41,1,78,41,3,78,78, - 78,41,2,114,0,0,0,0,114,0,0,0,0,41,1,84, - 41,1,78,41,1,78,41,81,114,151,0,0,0,114,187,0, - 0,0,114,90,0,0,0,114,21,0,0,0,114,98,0,0, - 0,114,184,0,0,0,114,28,0,0,0,90,11,95,77,83, - 95,87,73,78,68,79,87,83,114,106,1,0,0,114,24,0, - 0,0,114,215,0,0,0,114,105,1,0,0,114,50,0,0, - 0,114,108,1,0,0,114,59,0,0,0,114,135,0,0,0, - 114,57,0,0,0,114,62,0,0,0,114,107,1,0,0,114, - 31,0,0,0,90,37,95,67,65,83,69,95,73,78,83,69, - 78,83,73,84,73,86,69,95,80,76,65,84,70,79,82,77, - 83,95,66,89,84,69,83,95,75,69,89,114,30,0,0,0, - 114,32,0,0,0,114,39,0,0,0,114,44,0,0,0,114, - 46,0,0,0,114,67,0,0,0,114,74,0,0,0,114,75, - 0,0,0,114,79,0,0,0,114,80,0,0,0,114,82,0, - 0,0,114,85,0,0,0,114,94,0,0,0,218,4,116,121, - 112,101,218,8,95,95,99,111,100,101,95,95,114,186,0,0, - 0,114,37,0,0,0,114,172,0,0,0,114,36,0,0,0, - 114,41,0,0,0,114,3,1,0,0,114,115,0,0,0,114, - 111,0,0,0,114,126,0,0,0,114,112,0,0,0,90,23, - 68,69,66,85,71,95,66,89,84,69,67,79,68,69,95,83, - 85,70,70,73,88,69,83,90,27,79,80,84,73,77,73,90, - 69,68,95,66,89,84,69,67,79,68,69,95,83,85,70,70, - 73,88,69,83,114,120,0,0,0,114,127,0,0,0,114,134, - 0,0,0,114,136,0,0,0,114,138,0,0,0,114,160,0, - 0,0,114,167,0,0,0,114,176,0,0,0,114,180,0,0, - 0,114,182,0,0,0,114,189,0,0,0,114,194,0,0,0, - 114,195,0,0,0,114,200,0,0,0,218,6,111,98,106,101, - 99,116,114,209,0,0,0,114,213,0,0,0,114,214,0,0, - 0,114,231,0,0,0,114,244,0,0,0,114,6,1,0,0, - 114,32,1,0,0,114,39,1,0,0,114,44,1,0,0,114, - 19,1,0,0,114,45,1,0,0,114,66,1,0,0,114,68, - 1,0,0,114,84,1,0,0,114,103,1,0,0,114,208,0, - 0,0,114,110,1,0,0,114,112,1,0,0,114,10,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,8,60,109,111,100,117,108,101,62,1,0,0,0,115,170, - 0,0,0,4,22,8,1,8,1,8,1,8,1,8,3,10, - 1,4,1,8,1,10,2,8,3,4,1,10,2,6,2,22, - 1,8,1,8,1,10,1,14,4,4,1,4,1,2,1,2, - 255,4,4,8,17,8,5,8,5,8,6,4,1,10,30,8, - 6,8,8,8,10,8,9,8,5,8,7,6,1,10,8,8, - 5,10,22,10,127,0,20,16,1,12,2,4,1,4,2,6, - 2,6,2,8,2,16,71,8,40,8,19,8,12,8,12,8, - 28,8,17,8,33,8,28,8,24,10,13,10,10,10,11,8, - 14,6,3,4,1,2,255,12,73,14,64,14,29,16,127,0, - 17,14,72,18,45,18,26,4,3,18,53,14,63,14,42,14, - 127,0,20,14,127,0,27,10,23,8,11,8,57, -}; +/* Auto-generated by Programs/_freeze_importlib.c */ +const unsigned char _Py_M__importlib_bootstrap_external[] = { + 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,64,0,0,0,115,24,3,0,0,100,0, + 90,0,100,1,100,2,108,1,97,1,100,1,100,2,108,2, + 90,2,100,1,100,2,108,3,97,3,100,1,100,2,108,4, + 90,4,100,1,100,2,108,5,90,5,116,3,106,6,100,3, + 107,2,90,7,116,3,106,6,100,4,107,2,90,8,101,7, + 114,86,100,1,100,2,108,9,90,10,100,1,100,2,108,11, + 90,11,110,22,101,8,114,100,100,1,100,2,108,12,90,10, + 110,8,100,1,100,2,108,13,90,10,101,7,114,122,100,5, + 100,6,103,2,90,14,110,20,101,8,114,136,100,6,100,5, + 103,2,90,14,110,6,100,6,103,1,90,14,101,15,100,7, + 100,8,132,0,101,14,68,0,131,1,131,1,115,164,74,0, + 130,1,101,14,100,1,25,0,90,16,101,17,101,14,131,1, + 90,18,100,9,160,19,101,14,161,1,90,14,100,10,100,11, + 132,0,101,14,68,0,131,1,90,20,100,12,90,21,100,13, + 90,22,101,22,101,21,23,0,90,23,100,14,100,15,132,0, + 90,24,100,16,100,17,132,0,90,25,100,18,100,19,132,0, + 90,26,100,20,100,21,132,0,90,27,101,7,144,1,114,12, + 100,22,100,23,132,0,90,28,110,8,100,24,100,23,132,0, + 90,28,100,25,100,26,132,0,90,29,100,27,100,28,132,0, + 90,30,100,29,100,30,132,0,90,31,100,31,100,32,132,0, + 90,32,100,33,100,34,132,0,90,33,101,7,144,1,114,76, + 100,35,100,36,132,0,90,34,110,24,101,8,144,1,114,92, + 100,37,100,36,132,0,90,34,110,8,100,38,100,36,132,0, + 90,34,100,113,100,40,100,41,132,1,90,35,101,36,101,35, + 106,37,131,1,90,38,100,42,160,39,100,43,100,44,161,2, + 100,45,23,0,90,40,101,41,160,42,101,40,100,44,161,2, + 90,43,100,46,90,44,100,47,90,45,100,48,103,1,90,46, + 100,49,103,1,90,47,101,47,4,0,90,48,90,49,100,114, + 100,2,100,50,156,1,100,51,100,52,132,3,90,50,100,53, + 100,54,132,0,90,51,100,55,100,56,132,0,90,52,100,57, + 100,58,132,0,90,53,100,59,100,60,132,0,90,54,100,61, + 100,62,132,0,90,55,100,63,100,64,132,0,90,56,100,65, + 100,66,132,0,90,57,100,67,100,68,132,0,90,58,100,69, + 100,70,132,0,90,59,100,115,100,71,100,72,132,1,90,60, + 100,116,100,73,100,74,132,1,90,61,100,117,100,76,100,77, + 132,1,90,62,100,78,100,79,132,0,90,63,101,64,131,0, + 90,65,100,118,100,2,101,65,100,80,156,2,100,81,100,82, + 132,3,90,66,71,0,100,83,100,84,132,0,100,84,131,2, + 90,67,71,0,100,85,100,86,132,0,100,86,131,2,90,68, + 71,0,100,87,100,88,132,0,100,88,101,68,131,3,90,69, + 71,0,100,89,100,90,132,0,100,90,131,2,90,70,71,0, + 100,91,100,92,132,0,100,92,101,70,101,69,131,4,90,71, + 71,0,100,93,100,94,132,0,100,94,101,70,101,68,131,4, + 90,72,103,0,90,73,71,0,100,95,100,96,132,0,100,96, + 101,70,101,68,131,4,90,74,71,0,100,97,100,98,132,0, + 100,98,131,2,90,75,71,0,100,99,100,100,132,0,100,100, + 131,2,90,76,71,0,100,101,100,102,132,0,100,102,131,2, + 90,77,71,0,100,103,100,104,132,0,100,104,131,2,90,78, + 100,119,100,105,100,106,132,1,90,79,100,107,100,108,132,0, + 90,80,100,109,100,110,132,0,90,81,100,111,100,112,132,0, + 90,82,100,2,83,0,41,120,97,94,1,0,0,67,111,114, + 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, + 32,111,102,32,112,97,116,104,45,98,97,115,101,100,32,105, + 109,112,111,114,116,46,10,10,84,104,105,115,32,109,111,100, + 117,108,101,32,105,115,32,78,79,84,32,109,101,97,110,116, + 32,116,111,32,98,101,32,100,105,114,101,99,116,108,121,32, + 105,109,112,111,114,116,101,100,33,32,73,116,32,104,97,115, + 32,98,101,101,110,32,100,101,115,105,103,110,101,100,32,115, + 117,99,104,10,116,104,97,116,32,105,116,32,99,97,110,32, + 98,101,32,98,111,111,116,115,116,114,97,112,112,101,100,32, + 105,110,116,111,32,80,121,116,104,111,110,32,97,115,32,116, + 104,101,32,105,109,112,108,101,109,101,110,116,97,116,105,111, + 110,32,111,102,32,105,109,112,111,114,116,46,32,65,115,10, + 115,117,99,104,32,105,116,32,114,101,113,117,105,114,101,115, + 32,116,104,101,32,105,110,106,101,99,116,105,111,110,32,111, + 102,32,115,112,101,99,105,102,105,99,32,109,111,100,117,108, + 101,115,32,97,110,100,32,97,116,116,114,105,98,117,116,101, + 115,32,105,110,32,111,114,100,101,114,32,116,111,10,119,111, + 114,107,46,32,79,110,101,32,115,104,111,117,108,100,32,117, + 115,101,32,105,109,112,111,114,116,108,105,98,32,97,115,32, + 116,104,101,32,112,117,98,108,105,99,45,102,97,99,105,110, + 103,32,118,101,114,115,105,111,110,32,111,102,32,116,104,105, + 115,32,109,111,100,117,108,101,46,10,10,233,0,0,0,0, + 78,90,5,119,105,110,51,50,218,7,111,115,50,107,110,105, + 120,250,1,92,250,1,47,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,3,0,0,0,99,0,0,0, + 115,26,0,0,0,124,0,93,18,125,1,116,0,124,1,131, + 1,100,0,107,2,86,0,1,0,113,2,100,1,83,0,169, + 2,233,1,0,0,0,78,169,1,218,3,108,101,110,169,2, + 218,2,46,48,218,3,115,101,112,169,0,114,11,0,0,0, + 250,38,60,102,114,111,122,101,110,32,105,109,112,111,114,116, + 108,105,98,46,95,98,111,111,116,115,116,114,97,112,95,101, + 120,116,101,114,110,97,108,62,218,9,60,103,101,110,101,120, + 112,114,62,48,0,0,0,243,0,0,0,0,114,13,0,0, + 0,218,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,4,0,0,0,67,0,0,0,115,22,0,0, + 0,104,0,124,0,93,14,125,1,100,0,124,1,155,0,157, + 2,146,2,113,4,83,0,169,1,250,1,58,114,11,0,0, + 0,169,2,114,9,0,0,0,218,1,115,114,11,0,0,0, + 114,11,0,0,0,114,12,0,0,0,218,9,60,115,101,116, + 99,111,109,112,62,52,0,0,0,114,14,0,0,0,114,20, + 0,0,0,41,2,218,3,119,105,110,114,1,0,0,0,41, + 2,90,6,99,121,103,119,105,110,90,6,100,97,114,119,105, + 110,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,3,0,0,0,3,0,0,0,115,60,0,0,0,116, + 0,106,1,160,2,116,3,161,1,114,48,116,0,106,1,160, + 2,116,4,161,1,114,30,100,1,137,0,110,4,100,2,137, + 0,135,0,102,1,100,3,100,4,132,8,125,0,110,8,100, + 5,100,4,132,0,125,0,124,0,83,0,41,6,78,90,12, + 80,89,84,72,79,78,67,65,83,69,79,75,115,12,0,0, + 0,80,89,84,72,79,78,67,65,83,69,79,75,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,19,0,0,0,115,20,0,0,0,116,0,106,1,106, + 2,12,0,111,18,136,0,116,3,106,4,118,0,83,0,41, + 1,122,94,84,114,117,101,32,105,102,32,102,105,108,101,110, + 97,109,101,115,32,109,117,115,116,32,98,101,32,99,104,101, + 99,107,101,100,32,99,97,115,101,45,105,110,115,101,110,115, + 105,116,105,118,101,108,121,32,97,110,100,32,105,103,110,111, + 114,101,32,101,110,118,105,114,111,110,109,101,110,116,32,102, + 108,97,103,115,32,97,114,101,32,110,111,116,32,115,101,116, + 46,41,5,218,3,115,121,115,218,5,102,108,97,103,115,218, + 18,105,103,110,111,114,101,95,101,110,118,105,114,111,110,109, + 101,110,116,218,3,95,111,115,90,7,101,110,118,105,114,111, + 110,114,11,0,0,0,169,1,218,3,107,101,121,114,11,0, + 0,0,114,12,0,0,0,218,11,95,114,101,108,97,120,95, + 99,97,115,101,69,0,0,0,115,2,0,0,0,0,2,122, + 37,95,109,97,107,101,95,114,101,108,97,120,95,99,97,115, + 101,46,60,108,111,99,97,108,115,62,46,95,114,101,108,97, + 120,95,99,97,115,101,99,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,83,0,0,0,115, + 4,0,0,0,100,1,83,0,41,2,122,53,84,114,117,101, + 32,105,102,32,102,105,108,101,110,97,109,101,115,32,109,117, + 115,116,32,98,101,32,99,104,101,99,107,101,100,32,99,97, + 115,101,45,105,110,115,101,110,115,105,116,105,118,101,108,121, + 46,70,114,11,0,0,0,114,11,0,0,0,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,114,28,0,0,0, + 73,0,0,0,115,2,0,0,0,0,2,41,5,114,22,0, + 0,0,218,8,112,108,97,116,102,111,114,109,218,10,115,116, + 97,114,116,115,119,105,116,104,218,27,95,67,65,83,69,95, + 73,78,83,69,78,83,73,84,73,86,69,95,80,76,65,84, + 70,79,82,77,83,218,35,95,67,65,83,69,95,73,78,83, + 69,78,83,73,84,73,86,69,95,80,76,65,84,70,79,82, + 77,83,95,83,84,82,95,75,69,89,41,1,114,28,0,0, + 0,114,11,0,0,0,114,26,0,0,0,114,12,0,0,0, + 218,16,95,109,97,107,101,95,114,101,108,97,120,95,99,97, + 115,101,62,0,0,0,115,14,0,0,0,0,1,12,1,12, + 1,6,2,4,2,14,4,8,3,114,33,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, + 0,0,0,67,0,0,0,115,20,0,0,0,116,0,124,0, + 131,1,100,1,64,0,160,1,100,2,100,3,161,2,83,0, + 41,4,122,42,67,111,110,118,101,114,116,32,97,32,51,50, + 45,98,105,116,32,105,110,116,101,103,101,114,32,116,111,32, + 108,105,116,116,108,101,45,101,110,100,105,97,110,46,236,3, + 0,0,0,255,127,255,127,3,0,233,4,0,0,0,218,6, + 108,105,116,116,108,101,41,2,218,3,105,110,116,218,8,116, + 111,95,98,121,116,101,115,41,1,218,1,120,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,218,12,95,112,97, + 99,107,95,117,105,110,116,51,50,79,0,0,0,115,2,0, + 0,0,0,2,114,40,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,4,0,0,0,67,0, + 0,0,115,28,0,0,0,116,0,124,0,131,1,100,1,107, + 2,115,16,74,0,130,1,116,1,160,2,124,0,100,2,161, + 2,83,0,41,3,122,47,67,111,110,118,101,114,116,32,52, + 32,98,121,116,101,115,32,105,110,32,108,105,116,116,108,101, + 45,101,110,100,105,97,110,32,116,111,32,97,110,32,105,110, + 116,101,103,101,114,46,114,35,0,0,0,114,36,0,0,0, + 169,3,114,7,0,0,0,114,37,0,0,0,218,10,102,114, + 111,109,95,98,121,116,101,115,169,1,218,4,100,97,116,97, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 14,95,117,110,112,97,99,107,95,117,105,110,116,51,50,84, + 0,0,0,115,4,0,0,0,0,2,16,1,114,45,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,4,0,0,0,67,0,0,0,115,28,0,0,0,116, + 0,124,0,131,1,100,1,107,2,115,16,74,0,130,1,116, + 1,160,2,124,0,100,2,161,2,83,0,41,3,122,47,67, + 111,110,118,101,114,116,32,50,32,98,121,116,101,115,32,105, + 110,32,108,105,116,116,108,101,45,101,110,100,105,97,110,32, + 116,111,32,97,110,32,105,110,116,101,103,101,114,46,233,2, + 0,0,0,114,36,0,0,0,114,41,0,0,0,114,43,0, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,218,14,95,117,110,112,97,99,107,95,117,105,110,116,49, + 54,89,0,0,0,115,4,0,0,0,0,2,16,1,114,47, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,4,0,0,0,71,0,0,0,115,228,0,0, + 0,124,0,115,8,100,1,83,0,116,0,124,0,131,1,100, + 2,107,2,114,28,124,0,100,3,25,0,83,0,100,1,125, + 1,103,0,125,2,116,1,116,2,106,3,124,0,131,2,68, + 0,93,122,92,2,125,3,125,4,124,3,160,4,116,5,161, + 1,115,76,124,3,160,6,116,5,161,1,114,102,124,3,160, + 7,116,8,161,1,112,88,124,1,125,1,116,9,124,4,23, + 0,103,1,125,2,113,48,124,3,160,6,100,4,161,1,114, + 152,124,1,160,10,161,0,124,3,160,10,161,0,107,3,114, + 140,124,3,125,1,124,4,103,1,125,2,113,170,124,2,160, + 11,124,4,161,1,1,0,113,48,124,3,112,158,124,1,125, + 1,124,2,160,11,124,4,161,1,1,0,113,48,100,5,100, + 6,132,0,124,2,68,0,131,1,125,2,116,0,124,2,131, + 1,100,2,107,2,114,214,124,2,100,3,25,0,115,214,124, + 1,116,9,23,0,83,0,124,1,116,9,160,12,124,2,161, + 1,23,0,83,0,41,7,250,31,82,101,112,108,97,99,101, + 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, + 46,106,111,105,110,40,41,46,114,15,0,0,0,114,5,0, + 0,0,114,0,0,0,0,114,17,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0, + 0,83,0,0,0,115,26,0,0,0,103,0,124,0,93,18, + 125,1,124,1,114,4,124,1,160,0,116,1,161,1,145,2, + 113,4,83,0,114,11,0,0,0,169,2,218,6,114,115,116, + 114,105,112,218,15,112,97,116,104,95,115,101,112,97,114,97, + 116,111,114,115,169,2,114,9,0,0,0,218,1,112,114,11, + 0,0,0,114,11,0,0,0,114,12,0,0,0,218,10,60, + 108,105,115,116,99,111,109,112,62,119,0,0,0,114,14,0, + 0,0,250,30,95,112,97,116,104,95,106,111,105,110,46,60, + 108,111,99,97,108,115,62,46,60,108,105,115,116,99,111,109, + 112,62,41,13,114,7,0,0,0,218,3,109,97,112,114,25, + 0,0,0,218,15,95,112,97,116,104,95,115,112,108,105,116, + 114,111,111,116,114,30,0,0,0,218,14,112,97,116,104,95, + 115,101,112,95,116,117,112,108,101,218,8,101,110,100,115,119, + 105,116,104,114,50,0,0,0,114,51,0,0,0,218,8,112, + 97,116,104,95,115,101,112,218,8,99,97,115,101,102,111,108, + 100,218,6,97,112,112,101,110,100,218,4,106,111,105,110,41, + 5,218,10,112,97,116,104,95,112,97,114,116,115,218,4,114, + 111,111,116,218,4,112,97,116,104,90,8,110,101,119,95,114, + 111,111,116,218,4,116,97,105,108,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,218,10,95,112,97,116,104,95, + 106,111,105,110,96,0,0,0,115,42,0,0,0,0,2,4, + 1,4,1,12,1,8,1,4,1,4,1,20,1,20,1,14, + 1,12,1,10,1,16,3,4,1,8,2,12,2,8,1,12, + 1,14,1,20,2,8,1,114,68,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0, + 0,71,0,0,0,115,20,0,0,0,116,0,160,1,100,1, + 100,2,132,0,124,0,68,0,131,1,161,1,83,0,41,3, + 114,48,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,5,0,0,0,83,0,0,0,115,26, + 0,0,0,103,0,124,0,93,18,125,1,124,1,114,4,124, + 1,160,0,116,1,161,1,145,2,113,4,83,0,114,11,0, + 0,0,114,49,0,0,0,41,2,114,9,0,0,0,218,4, + 112,97,114,116,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,54,0,0,0,128,0,0,0,115,4,0,0, + 0,6,1,6,255,114,55,0,0,0,41,2,114,60,0,0, + 0,114,63,0,0,0,41,1,114,64,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,114,68,0,0, + 0,126,0,0,0,115,6,0,0,0,0,2,10,1,2,255, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,3,0,0,0,115,66,0,0,0,116,0, + 135,0,102,1,100,1,100,2,132,8,116,1,68,0,131,1, + 131,1,125,1,124,1,100,3,107,0,114,38,100,4,136,0, + 102,2,83,0,136,0,100,5,124,1,133,2,25,0,136,0, + 124,1,100,6,23,0,100,5,133,2,25,0,102,2,83,0, + 41,7,122,32,82,101,112,108,97,99,101,109,101,110,116,32, + 102,111,114,32,111,115,46,112,97,116,104,46,115,112,108,105, + 116,40,41,46,99,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,4,0,0,0,51,0,0,0,115,24,0, + 0,0,124,0,93,16,125,1,136,0,160,0,124,1,161,1, + 86,0,1,0,113,2,100,0,83,0,169,1,78,41,1,218, + 5,114,102,105,110,100,114,52,0,0,0,169,1,114,66,0, + 0,0,114,11,0,0,0,114,12,0,0,0,114,13,0,0, + 0,134,0,0,0,114,14,0,0,0,122,30,95,112,97,116, + 104,95,115,112,108,105,116,46,60,108,111,99,97,108,115,62, + 46,60,103,101,110,101,120,112,114,62,114,0,0,0,0,114, + 15,0,0,0,78,114,5,0,0,0,41,2,218,3,109,97, + 120,114,51,0,0,0,41,2,114,66,0,0,0,218,1,105, + 114,11,0,0,0,114,72,0,0,0,114,12,0,0,0,218, + 11,95,112,97,116,104,95,115,112,108,105,116,132,0,0,0, + 115,8,0,0,0,0,2,22,1,8,1,8,1,114,75,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,10,0,0,0, + 116,0,160,1,124,0,161,1,83,0,41,1,122,126,83,116, + 97,116,32,116,104,101,32,112,97,116,104,46,10,10,32,32, + 32,32,77,97,100,101,32,97,32,115,101,112,97,114,97,116, + 101,32,102,117,110,99,116,105,111,110,32,116,111,32,109,97, + 107,101,32,105,116,32,101,97,115,105,101,114,32,116,111,32, + 111,118,101,114,114,105,100,101,32,105,110,32,101,120,112,101, + 114,105,109,101,110,116,115,10,32,32,32,32,40,101,46,103, + 46,32,99,97,99,104,101,32,115,116,97,116,32,114,101,115, + 117,108,116,115,41,46,10,10,32,32,32,32,41,2,114,25, + 0,0,0,90,4,115,116,97,116,114,72,0,0,0,114,11, + 0,0,0,114,11,0,0,0,114,12,0,0,0,218,10,95, + 112,97,116,104,95,115,116,97,116,140,0,0,0,115,2,0, + 0,0,0,7,114,76,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, + 0,0,115,48,0,0,0,122,12,116,0,124,0,131,1,125, + 2,87,0,110,20,4,0,116,1,121,32,1,0,1,0,1, + 0,89,0,100,1,83,0,48,0,124,2,106,2,100,2,64, + 0,124,1,107,2,83,0,41,3,122,49,84,101,115,116,32, + 119,104,101,116,104,101,114,32,116,104,101,32,112,97,116,104, + 32,105,115,32,116,104,101,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,101,32,116,121,112,101,46,70,105,0,240, + 0,0,41,3,114,76,0,0,0,218,7,79,83,69,114,114, + 111,114,218,7,115,116,95,109,111,100,101,41,3,114,66,0, + 0,0,218,4,109,111,100,101,90,9,115,116,97,116,95,105, + 110,102,111,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,218,18,95,112,97,116,104,95,105,115,95,109,111,100, + 101,95,116,121,112,101,150,0,0,0,115,10,0,0,0,0, + 2,2,1,12,1,12,1,8,1,114,80,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, + 0,0,0,67,0,0,0,115,10,0,0,0,116,0,124,0, + 100,1,131,2,83,0,41,2,122,31,82,101,112,108,97,99, + 101,109,101,110,116,32,102,111,114,32,111,115,46,112,97,116, + 104,46,105,115,102,105,108,101,46,105,0,128,0,0,41,1, + 114,80,0,0,0,114,72,0,0,0,114,11,0,0,0,114, + 11,0,0,0,114,12,0,0,0,218,12,95,112,97,116,104, + 95,105,115,102,105,108,101,159,0,0,0,115,2,0,0,0, + 0,2,114,81,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, + 115,22,0,0,0,124,0,115,12,116,0,160,1,161,0,125, + 0,116,2,124,0,100,1,131,2,83,0,41,2,122,30,82, + 101,112,108,97,99,101,109,101,110,116,32,102,111,114,32,111, + 115,46,112,97,116,104,46,105,115,100,105,114,46,105,0,64, + 0,0,41,3,114,25,0,0,0,218,6,103,101,116,99,119, + 100,114,80,0,0,0,114,72,0,0,0,114,11,0,0,0, + 114,11,0,0,0,114,12,0,0,0,218,11,95,112,97,116, + 104,95,105,115,100,105,114,164,0,0,0,115,6,0,0,0, + 0,2,4,1,8,1,114,83,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 67,0,0,0,115,62,0,0,0,124,0,115,8,100,1,83, + 0,116,0,160,1,124,0,161,1,100,2,25,0,160,2,100, + 3,100,4,161,2,125,1,116,3,124,1,131,1,100,5,107, + 4,111,60,124,1,160,4,100,6,161,1,112,60,124,1,160, + 5,100,4,161,1,83,0,41,7,250,30,82,101,112,108,97, + 99,101,109,101,110,116,32,102,111,114,32,111,115,46,112,97, + 116,104,46,105,115,97,98,115,46,70,114,0,0,0,0,114, + 3,0,0,0,114,2,0,0,0,114,5,0,0,0,122,2, + 92,92,41,6,114,25,0,0,0,114,57,0,0,0,218,7, + 114,101,112,108,97,99,101,114,7,0,0,0,114,30,0,0, + 0,114,59,0,0,0,41,2,114,66,0,0,0,114,65,0, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,218,11,95,112,97,116,104,95,105,115,97,98,115,172,0, + 0,0,115,8,0,0,0,0,2,4,1,4,1,22,1,114, + 86,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,26,0, + 0,0,124,0,160,0,116,1,161,1,112,24,124,0,100,1, + 100,2,133,2,25,0,116,2,118,0,83,0,41,3,122,150, + 82,101,112,108,97,99,101,109,101,110,116,32,102,111,114,32, + 111,115,46,112,97,116,104,46,105,115,97,98,115,46,10,10, + 32,32,32,32,32,32,32,32,67,111,110,115,105,100,101,114, + 115,32,97,32,79,83,50,32,100,114,105,118,101,45,114,101, + 108,97,116,105,118,101,32,112,97,116,104,32,40,110,111,32, + 100,114,105,118,101,44,32,98,117,116,32,115,116,97,114,116, + 115,32,119,105,116,104,32,115,108,97,115,104,41,32,116,111, + 10,32,32,32,32,32,32,32,32,115,116,105,108,108,32,98, + 101,32,34,97,98,115,111,108,117,116,101,34,46,10,32,32, + 32,32,32,32,32,32,114,5,0,0,0,233,3,0,0,0, + 41,3,114,30,0,0,0,114,51,0,0,0,218,20,95,112, + 97,116,104,115,101,112,115,95,119,105,116,104,95,99,111,108, + 111,110,114,72,0,0,0,114,11,0,0,0,114,11,0,0, + 0,114,12,0,0,0,114,86,0,0,0,179,0,0,0,115, + 2,0,0,0,0,6,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, + 10,0,0,0,124,0,160,0,116,1,161,1,83,0,41,1, + 114,84,0,0,0,41,2,114,30,0,0,0,114,51,0,0, + 0,114,72,0,0,0,114,11,0,0,0,114,11,0,0,0, + 114,12,0,0,0,114,86,0,0,0,187,0,0,0,115,2, + 0,0,0,0,2,233,182,1,0,0,99,3,0,0,0,0, + 0,0,0,0,0,0,0,6,0,0,0,11,0,0,0,67, + 0,0,0,115,178,0,0,0,100,1,160,0,124,0,116,1, + 124,0,131,1,161,2,125,3,116,2,160,3,124,3,116,2, + 106,4,116,2,106,5,66,0,116,2,106,6,66,0,124,2, + 100,2,64,0,161,3,125,4,122,70,116,7,160,8,124,4, + 100,3,161,2,143,26,125,5,124,5,160,9,124,1,161,1, + 1,0,87,0,100,4,4,0,4,0,131,3,1,0,110,16, + 49,0,115,94,48,0,1,0,1,0,1,0,89,0,1,0, + 116,2,160,10,124,3,124,0,161,2,1,0,87,0,110,54, + 4,0,116,11,121,172,1,0,1,0,1,0,122,14,116,2, + 160,12,124,3,161,1,1,0,87,0,110,18,4,0,116,11, + 121,164,1,0,1,0,1,0,89,0,110,2,48,0,130,0, + 89,0,110,2,48,0,100,4,83,0,41,5,122,162,66,101, + 115,116,45,101,102,102,111,114,116,32,102,117,110,99,116,105, + 111,110,32,116,111,32,119,114,105,116,101,32,100,97,116,97, + 32,116,111,32,97,32,112,97,116,104,32,97,116,111,109,105, + 99,97,108,108,121,46,10,32,32,32,32,66,101,32,112,114, + 101,112,97,114,101,100,32,116,111,32,104,97,110,100,108,101, + 32,97,32,70,105,108,101,69,120,105,115,116,115,69,114,114, + 111,114,32,105,102,32,99,111,110,99,117,114,114,101,110,116, + 32,119,114,105,116,105,110,103,32,111,102,32,116,104,101,10, + 32,32,32,32,116,101,109,112,111,114,97,114,121,32,102,105, + 108,101,32,105,115,32,97,116,116,101,109,112,116,101,100,46, + 250,5,123,125,46,123,125,114,89,0,0,0,90,2,119,98, + 78,41,13,218,6,102,111,114,109,97,116,218,2,105,100,114, + 25,0,0,0,90,4,111,112,101,110,90,6,79,95,69,88, + 67,76,90,7,79,95,67,82,69,65,84,90,8,79,95,87, + 82,79,78,76,89,218,3,95,105,111,218,6,70,105,108,101, + 73,79,218,5,119,114,105,116,101,114,85,0,0,0,114,77, + 0,0,0,90,6,117,110,108,105,110,107,41,6,114,66,0, + 0,0,114,44,0,0,0,114,79,0,0,0,90,8,112,97, + 116,104,95,116,109,112,90,2,102,100,218,4,102,105,108,101, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 13,95,119,114,105,116,101,95,97,116,111,109,105,99,192,0, + 0,0,115,28,0,0,0,0,5,16,1,6,1,22,255,4, + 2,2,3,14,1,40,1,16,1,12,1,2,1,14,1,12, + 1,6,1,114,97,0,0,0,105,97,13,0,0,114,46,0, + 0,0,114,36,0,0,0,115,2,0,0,0,13,10,90,11, + 95,95,112,121,99,97,99,104,101,95,95,122,4,111,112,116, + 45,122,3,46,112,121,122,4,46,112,121,99,41,1,218,12, + 111,112,116,105,109,105,122,97,116,105,111,110,99,2,0,0, + 0,0,0,0,0,1,0,0,0,12,0,0,0,5,0,0, + 0,67,0,0,0,115,88,1,0,0,124,1,100,1,117,1, + 114,52,116,0,160,1,100,2,116,2,161,2,1,0,124,2, + 100,1,117,1,114,40,100,3,125,3,116,3,124,3,131,1, + 130,1,124,1,114,48,100,4,110,2,100,5,125,2,116,4, + 160,5,124,0,161,1,125,0,116,6,124,0,131,1,92,2, + 125,4,125,5,124,5,160,7,100,6,161,1,92,3,125,6, + 125,7,125,8,116,8,106,9,106,10,125,9,124,9,100,1, + 117,0,114,114,116,11,100,7,131,1,130,1,100,4,160,12, + 124,6,114,126,124,6,110,2,124,8,124,7,124,9,103,3, + 161,1,125,10,124,2,100,1,117,0,114,172,116,8,106,13, + 106,14,100,8,107,2,114,164,100,4,125,2,110,8,116,8, + 106,13,106,14,125,2,116,15,124,2,131,1,125,2,124,2, + 100,4,107,3,114,224,124,2,160,16,161,0,115,210,116,17, + 100,9,160,18,124,2,161,1,131,1,130,1,100,10,160,18, + 124,10,116,19,124,2,161,3,125,10,124,10,116,20,100,8, + 25,0,23,0,125,11,116,8,106,21,100,1,117,1,144,1, + 114,76,116,22,124,4,131,1,144,1,115,16,116,23,116,4, + 160,24,161,0,124,4,131,2,125,4,124,4,100,5,25,0, + 100,11,107,2,144,1,114,56,124,4,100,8,25,0,116,25, + 118,1,144,1,114,56,124,4,100,12,100,1,133,2,25,0, + 125,4,116,23,116,8,106,21,124,4,160,26,116,25,161,1, + 124,11,131,3,83,0,116,23,124,4,116,27,124,11,131,3, + 83,0,41,13,97,254,2,0,0,71,105,118,101,110,32,116, + 104,101,32,112,97,116,104,32,116,111,32,97,32,46,112,121, + 32,102,105,108,101,44,32,114,101,116,117,114,110,32,116,104, + 101,32,112,97,116,104,32,116,111,32,105,116,115,32,46,112, + 121,99,32,102,105,108,101,46,10,10,32,32,32,32,84,104, + 101,32,46,112,121,32,102,105,108,101,32,100,111,101,115,32, + 110,111,116,32,110,101,101,100,32,116,111,32,101,120,105,115, + 116,59,32,116,104,105,115,32,115,105,109,112,108,121,32,114, + 101,116,117,114,110,115,32,116,104,101,32,112,97,116,104,32, + 116,111,32,116,104,101,10,32,32,32,32,46,112,121,99,32, + 102,105,108,101,32,99,97,108,99,117,108,97,116,101,100,32, + 97,115,32,105,102,32,116,104,101,32,46,112,121,32,102,105, + 108,101,32,119,101,114,101,32,105,109,112,111,114,116,101,100, + 46,10,10,32,32,32,32,84,104,101,32,39,111,112,116,105, + 109,105,122,97,116,105,111,110,39,32,112,97,114,97,109,101, + 116,101,114,32,99,111,110,116,114,111,108,115,32,116,104,101, + 32,112,114,101,115,117,109,101,100,32,111,112,116,105,109,105, + 122,97,116,105,111,110,32,108,101,118,101,108,32,111,102,10, + 32,32,32,32,116,104,101,32,98,121,116,101,99,111,100,101, + 32,102,105,108,101,46,32,73,102,32,39,111,112,116,105,109, + 105,122,97,116,105,111,110,39,32,105,115,32,110,111,116,32, + 78,111,110,101,44,32,116,104,101,32,115,116,114,105,110,103, + 32,114,101,112,114,101,115,101,110,116,97,116,105,111,110,10, + 32,32,32,32,111,102,32,116,104,101,32,97,114,103,117,109, + 101,110,116,32,105,115,32,116,97,107,101,110,32,97,110,100, + 32,118,101,114,105,102,105,101,100,32,116,111,32,98,101,32, + 97,108,112,104,97,110,117,109,101,114,105,99,32,40,101,108, + 115,101,32,86,97,108,117,101,69,114,114,111,114,10,32,32, + 32,32,105,115,32,114,97,105,115,101,100,41,46,10,10,32, + 32,32,32,84,104,101,32,100,101,98,117,103,95,111,118,101, + 114,114,105,100,101,32,112,97,114,97,109,101,116,101,114,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,73, + 102,32,100,101,98,117,103,95,111,118,101,114,114,105,100,101, + 32,105,115,32,110,111,116,32,78,111,110,101,44,10,32,32, + 32,32,97,32,84,114,117,101,32,118,97,108,117,101,32,105, + 115,32,116,104,101,32,115,97,109,101,32,97,115,32,115,101, + 116,116,105,110,103,32,39,111,112,116,105,109,105,122,97,116, + 105,111,110,39,32,116,111,32,116,104,101,32,101,109,112,116, + 121,32,115,116,114,105,110,103,10,32,32,32,32,119,104,105, + 108,101,32,97,32,70,97,108,115,101,32,118,97,108,117,101, + 32,105,115,32,101,113,117,105,118,97,108,101,110,116,32,116, + 111,32,115,101,116,116,105,110,103,32,39,111,112,116,105,109, + 105,122,97,116,105,111,110,39,32,116,111,32,39,49,39,46, + 10,10,32,32,32,32,73,102,32,115,121,115,46,105,109,112, + 108,101,109,101,110,116,97,116,105,111,110,46,99,97,99,104, + 101,95,116,97,103,32,105,115,32,78,111,110,101,32,116,104, + 101,110,32,78,111,116,73,109,112,108,101,109,101,110,116,101, + 100,69,114,114,111,114,32,105,115,32,114,97,105,115,101,100, + 46,10,10,32,32,32,32,78,122,70,116,104,101,32,100,101, + 98,117,103,95,111,118,101,114,114,105,100,101,32,112,97,114, + 97,109,101,116,101,114,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,59,32,117,115,101,32,39,111,112,116,105,109, + 105,122,97,116,105,111,110,39,32,105,110,115,116,101,97,100, + 122,50,100,101,98,117,103,95,111,118,101,114,114,105,100,101, + 32,111,114,32,111,112,116,105,109,105,122,97,116,105,111,110, + 32,109,117,115,116,32,98,101,32,115,101,116,32,116,111,32, + 78,111,110,101,114,15,0,0,0,114,5,0,0,0,218,1, + 46,250,36,115,121,115,46,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,46,99,97,99,104,101,95,116,97,103,32, + 105,115,32,78,111,110,101,114,0,0,0,0,122,24,123,33, + 114,125,32,105,115,32,110,111,116,32,97,108,112,104,97,110, + 117,109,101,114,105,99,122,7,123,125,46,123,125,123,125,114, + 17,0,0,0,114,46,0,0,0,41,28,218,9,95,119,97, + 114,110,105,110,103,115,218,4,119,97,114,110,218,18,68,101, + 112,114,101,99,97,116,105,111,110,87,97,114,110,105,110,103, + 218,9,84,121,112,101,69,114,114,111,114,114,25,0,0,0, + 218,6,102,115,112,97,116,104,114,75,0,0,0,218,10,114, + 112,97,114,116,105,116,105,111,110,114,22,0,0,0,218,14, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,218,9, + 99,97,99,104,101,95,116,97,103,218,19,78,111,116,73,109, + 112,108,101,109,101,110,116,101,100,69,114,114,111,114,114,63, + 0,0,0,114,23,0,0,0,218,8,111,112,116,105,109,105, + 122,101,218,3,115,116,114,218,7,105,115,97,108,110,117,109, + 218,10,86,97,108,117,101,69,114,114,111,114,114,91,0,0, + 0,218,4,95,79,80,84,218,17,66,89,84,69,67,79,68, + 69,95,83,85,70,70,73,88,69,83,218,14,112,121,99,97, + 99,104,101,95,112,114,101,102,105,120,114,86,0,0,0,114, + 68,0,0,0,114,82,0,0,0,114,51,0,0,0,218,6, + 108,115,116,114,105,112,218,8,95,80,89,67,65,67,72,69, + 41,12,114,66,0,0,0,90,14,100,101,98,117,103,95,111, + 118,101,114,114,105,100,101,114,98,0,0,0,218,7,109,101, + 115,115,97,103,101,218,4,104,101,97,100,114,67,0,0,0, + 90,4,98,97,115,101,114,10,0,0,0,218,4,114,101,115, + 116,90,3,116,97,103,90,15,97,108,109,111,115,116,95,102, + 105,108,101,110,97,109,101,218,8,102,105,108,101,110,97,109, + 101,114,11,0,0,0,114,11,0,0,0,114,12,0,0,0, + 218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,117, + 114,99,101,117,1,0,0,115,72,0,0,0,0,18,8,1, + 6,1,2,255,4,2,8,1,4,1,8,1,12,1,10,1, + 12,1,16,1,8,1,8,1,8,1,24,1,8,1,12,1, + 6,2,8,1,8,1,8,1,8,1,14,1,14,1,12,1, + 12,9,10,1,14,5,28,1,12,4,2,1,4,1,8,1, + 2,253,4,5,114,123,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,10,0,0,0,5,0,0,0,67,0, + 0,0,115,46,1,0,0,116,0,106,1,106,2,100,1,117, + 0,114,20,116,3,100,2,131,1,130,1,116,4,160,5,124, + 0,161,1,125,0,116,6,124,0,131,1,92,2,125,1,125, + 2,100,3,125,3,116,0,106,7,100,1,117,1,114,102,116, + 0,106,7,160,8,116,9,161,1,125,4,124,1,160,10,124, + 4,116,11,23,0,161,1,114,102,124,1,116,12,124,4,131, + 1,100,1,133,2,25,0,125,1,100,4,125,3,124,3,115, + 144,116,6,124,1,131,1,92,2,125,1,125,5,124,5,116, + 13,107,3,114,144,116,14,116,13,155,0,100,5,124,0,155, + 2,157,3,131,1,130,1,124,2,160,15,100,6,161,1,125, + 6,124,6,100,7,118,1,114,178,116,14,100,8,124,2,155, + 2,157,2,131,1,130,1,110,92,124,6,100,9,107,2,144, + 1,114,14,124,2,160,16,100,6,100,10,161,2,100,11,25, + 0,125,7,124,7,160,10,116,17,161,1,115,228,116,14,100, + 12,116,17,155,2,157,2,131,1,130,1,124,7,116,12,116, + 17,131,1,100,1,133,2,25,0,125,8,124,8,160,18,161, + 0,144,1,115,14,116,14,100,13,124,7,155,2,100,14,157, + 3,131,1,130,1,124,2,160,19,100,6,161,1,100,15,25, + 0,125,9,116,20,124,1,124,9,116,21,100,15,25,0,23, + 0,131,2,83,0,41,16,97,110,1,0,0,71,105,118,101, + 110,32,116,104,101,32,112,97,116,104,32,116,111,32,97,32, + 46,112,121,99,46,32,102,105,108,101,44,32,114,101,116,117, + 114,110,32,116,104,101,32,112,97,116,104,32,116,111,32,105, + 116,115,32,46,112,121,32,102,105,108,101,46,10,10,32,32, + 32,32,84,104,101,32,46,112,121,99,32,102,105,108,101,32, + 100,111,101,115,32,110,111,116,32,110,101,101,100,32,116,111, + 32,101,120,105,115,116,59,32,116,104,105,115,32,115,105,109, + 112,108,121,32,114,101,116,117,114,110,115,32,116,104,101,32, + 112,97,116,104,32,116,111,10,32,32,32,32,116,104,101,32, + 46,112,121,32,102,105,108,101,32,99,97,108,99,117,108,97, + 116,101,100,32,116,111,32,99,111,114,114,101,115,112,111,110, + 100,32,116,111,32,116,104,101,32,46,112,121,99,32,102,105, + 108,101,46,32,32,73,102,32,112,97,116,104,32,100,111,101, + 115,10,32,32,32,32,110,111,116,32,99,111,110,102,111,114, + 109,32,116,111,32,80,69,80,32,51,49,52,55,47,52,56, + 56,32,102,111,114,109,97,116,44,32,86,97,108,117,101,69, + 114,114,111,114,32,119,105,108,108,32,98,101,32,114,97,105, + 115,101,100,46,32,73,102,10,32,32,32,32,115,121,115,46, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,46,99, + 97,99,104,101,95,116,97,103,32,105,115,32,78,111,110,101, + 32,116,104,101,110,32,78,111,116,73,109,112,108,101,109,101, + 110,116,101,100,69,114,114,111,114,32,105,115,32,114,97,105, + 115,101,100,46,10,10,32,32,32,32,78,114,100,0,0,0, + 70,84,122,31,32,110,111,116,32,98,111,116,116,111,109,45, + 108,101,118,101,108,32,100,105,114,101,99,116,111,114,121,32, + 105,110,32,114,99,0,0,0,62,2,0,0,0,114,46,0, + 0,0,114,87,0,0,0,122,29,101,120,112,101,99,116,101, + 100,32,111,110,108,121,32,50,32,111,114,32,51,32,100,111, + 116,115,32,105,110,32,114,87,0,0,0,114,46,0,0,0, + 233,254,255,255,255,122,53,111,112,116,105,109,105,122,97,116, + 105,111,110,32,112,111,114,116,105,111,110,32,111,102,32,102, + 105,108,101,110,97,109,101,32,100,111,101,115,32,110,111,116, + 32,115,116,97,114,116,32,119,105,116,104,32,122,19,111,112, + 116,105,109,105,122,97,116,105,111,110,32,108,101,118,101,108, + 32,122,29,32,105,115,32,110,111,116,32,97,110,32,97,108, + 112,104,97,110,117,109,101,114,105,99,32,118,97,108,117,101, + 114,0,0,0,0,41,22,114,22,0,0,0,114,107,0,0, + 0,114,108,0,0,0,114,109,0,0,0,114,25,0,0,0, + 114,105,0,0,0,114,75,0,0,0,114,116,0,0,0,114, + 50,0,0,0,114,51,0,0,0,114,30,0,0,0,114,60, + 0,0,0,114,7,0,0,0,114,118,0,0,0,114,113,0, + 0,0,218,5,99,111,117,110,116,218,6,114,115,112,108,105, + 116,114,114,0,0,0,114,112,0,0,0,218,9,112,97,114, + 116,105,116,105,111,110,114,68,0,0,0,218,15,83,79,85, + 82,67,69,95,83,85,70,70,73,88,69,83,41,10,114,66, + 0,0,0,114,120,0,0,0,90,16,112,121,99,97,99,104, + 101,95,102,105,108,101,110,97,109,101,90,23,102,111,117,110, + 100,95,105,110,95,112,121,99,97,99,104,101,95,112,114,101, + 102,105,120,90,13,115,116,114,105,112,112,101,100,95,112,97, + 116,104,90,7,112,121,99,97,99,104,101,90,9,100,111,116, + 95,99,111,117,110,116,114,98,0,0,0,90,9,111,112,116, + 95,108,101,118,101,108,90,13,98,97,115,101,95,102,105,108, + 101,110,97,109,101,114,11,0,0,0,114,11,0,0,0,114, + 12,0,0,0,218,17,115,111,117,114,99,101,95,102,114,111, + 109,95,99,97,99,104,101,188,1,0,0,115,60,0,0,0, + 0,9,12,1,8,1,10,1,12,1,4,1,10,1,12,1, + 14,1,16,1,4,1,4,1,12,1,8,1,8,1,2,255, + 8,2,10,1,8,1,16,1,10,1,16,1,10,1,4,1, + 2,255,8,2,16,1,10,1,16,2,14,1,114,129,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,9,0,0,0,67,0,0,0,115,124,0,0,0,116, + 0,124,0,131,1,100,1,107,2,114,16,100,2,83,0,124, + 0,160,1,100,3,161,1,92,3,125,1,125,2,125,3,124, + 1,114,56,124,3,160,2,161,0,100,4,100,5,133,2,25, + 0,100,6,107,3,114,60,124,0,83,0,122,12,116,3,124, + 0,131,1,125,4,87,0,110,34,4,0,116,4,116,5,102, + 2,121,106,1,0,1,0,1,0,124,0,100,2,100,5,133, + 2,25,0,125,4,89,0,110,2,48,0,116,6,124,4,131, + 1,114,120,124,4,83,0,124,0,83,0,41,7,122,188,67, + 111,110,118,101,114,116,32,97,32,98,121,116,101,99,111,100, + 101,32,102,105,108,101,32,112,97,116,104,32,116,111,32,97, + 32,115,111,117,114,99,101,32,112,97,116,104,32,40,105,102, + 32,112,111,115,115,105,98,108,101,41,46,10,10,32,32,32, + 32,84,104,105,115,32,102,117,110,99,116,105,111,110,32,101, + 120,105,115,116,115,32,112,117,114,101,108,121,32,102,111,114, + 32,98,97,99,107,119,97,114,100,115,45,99,111,109,112,97, + 116,105,98,105,108,105,116,121,32,102,111,114,10,32,32,32, + 32,80,121,73,109,112,111,114,116,95,69,120,101,99,67,111, + 100,101,77,111,100,117,108,101,87,105,116,104,70,105,108,101, + 110,97,109,101,115,40,41,32,105,110,32,116,104,101,32,67, + 32,65,80,73,46,10,10,32,32,32,32,114,0,0,0,0, + 78,114,99,0,0,0,233,253,255,255,255,233,255,255,255,255, + 90,2,112,121,41,7,114,7,0,0,0,114,106,0,0,0, + 218,5,108,111,119,101,114,114,129,0,0,0,114,109,0,0, + 0,114,113,0,0,0,114,81,0,0,0,41,5,218,13,98, + 121,116,101,99,111,100,101,95,112,97,116,104,114,121,0,0, + 0,218,1,95,90,9,101,120,116,101,110,115,105,111,110,218, + 11,115,111,117,114,99,101,95,112,97,116,104,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,218,15,95,103,101, + 116,95,115,111,117,114,99,101,102,105,108,101,228,1,0,0, + 115,20,0,0,0,0,7,12,1,4,1,16,1,24,1,4, + 1,2,1,12,1,16,1,18,1,114,136,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8, + 0,0,0,67,0,0,0,115,72,0,0,0,124,0,160,0, + 116,1,116,2,131,1,161,1,114,46,122,10,116,3,124,0, + 131,1,87,0,83,0,4,0,116,4,121,42,1,0,1,0, + 1,0,89,0,113,68,48,0,110,22,124,0,160,0,116,1, + 116,5,131,1,161,1,114,64,124,0,83,0,100,0,83,0, + 100,0,83,0,114,70,0,0,0,41,6,114,59,0,0,0, + 218,5,116,117,112,108,101,114,128,0,0,0,114,123,0,0, + 0,114,109,0,0,0,114,115,0,0,0,41,1,114,122,0, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,218,11,95,103,101,116,95,99,97,99,104,101,100,247,1, + 0,0,115,16,0,0,0,0,1,14,1,2,1,10,1,12, + 1,8,1,14,1,4,2,114,138,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,8,0,0, + 0,67,0,0,0,115,50,0,0,0,122,14,116,0,124,0, + 131,1,106,1,125,1,87,0,110,22,4,0,116,2,121,36, + 1,0,1,0,1,0,100,1,125,1,89,0,110,2,48,0, + 124,1,100,2,79,0,125,1,124,1,83,0,41,3,122,51, + 67,97,108,99,117,108,97,116,101,32,116,104,101,32,109,111, + 100,101,32,112,101,114,109,105,115,115,105,111,110,115,32,102, + 111,114,32,97,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,46,114,89,0,0,0,233,128,0,0,0,41,3,114, + 76,0,0,0,114,78,0,0,0,114,77,0,0,0,41,2, + 114,66,0,0,0,114,79,0,0,0,114,11,0,0,0,114, + 11,0,0,0,114,12,0,0,0,218,10,95,99,97,108,99, + 95,109,111,100,101,3,2,0,0,115,12,0,0,0,0,2, + 2,1,14,1,12,1,10,3,8,1,114,140,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 8,0,0,0,3,0,0,0,115,66,0,0,0,100,6,135, + 0,102,1,100,2,100,3,132,9,125,1,122,10,116,0,106, + 1,125,2,87,0,110,26,4,0,116,2,121,50,1,0,1, + 0,1,0,100,4,100,5,132,0,125,2,89,0,110,2,48, + 0,124,2,124,1,136,0,131,2,1,0,124,1,83,0,41, + 7,122,252,68,101,99,111,114,97,116,111,114,32,116,111,32, + 118,101,114,105,102,121,32,116,104,97,116,32,116,104,101,32, + 109,111,100,117,108,101,32,98,101,105,110,103,32,114,101,113, + 117,101,115,116,101,100,32,109,97,116,99,104,101,115,32,116, + 104,101,32,111,110,101,32,116,104,101,10,32,32,32,32,108, + 111,97,100,101,114,32,99,97,110,32,104,97,110,100,108,101, + 46,10,10,32,32,32,32,84,104,101,32,102,105,114,115,116, + 32,97,114,103,117,109,101,110,116,32,40,115,101,108,102,41, + 32,109,117,115,116,32,100,101,102,105,110,101,32,95,110,97, + 109,101,32,119,104,105,99,104,32,116,104,101,32,115,101,99, + 111,110,100,32,97,114,103,117,109,101,110,116,32,105,115,10, + 32,32,32,32,99,111,109,112,97,114,101,100,32,97,103,97, + 105,110,115,116,46,32,73,102,32,116,104,101,32,99,111,109, + 112,97,114,105,115,111,110,32,102,97,105,108,115,32,116,104, + 101,110,32,73,109,112,111,114,116,69,114,114,111,114,32,105, + 115,32,114,97,105,115,101,100,46,10,10,32,32,32,32,78, + 99,2,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,4,0,0,0,31,0,0,0,115,72,0,0,0,124,1, + 100,0,117,0,114,16,124,0,106,0,125,1,110,32,124,0, + 106,0,124,1,107,3,114,48,116,1,100,1,124,0,106,0, + 124,1,102,2,22,0,124,1,100,2,141,2,130,1,136,0, + 124,0,124,1,103,2,124,2,162,1,82,0,105,0,124,3, + 164,1,142,1,83,0,41,3,78,122,30,108,111,97,100,101, + 114,32,102,111,114,32,37,115,32,99,97,110,110,111,116,32, + 104,97,110,100,108,101,32,37,115,169,1,218,4,110,97,109, + 101,41,2,114,142,0,0,0,218,11,73,109,112,111,114,116, + 69,114,114,111,114,41,4,218,4,115,101,108,102,114,142,0, + 0,0,218,4,97,114,103,115,218,6,107,119,97,114,103,115, + 169,1,218,6,109,101,116,104,111,100,114,11,0,0,0,114, + 12,0,0,0,218,19,95,99,104,101,99,107,95,110,97,109, + 101,95,119,114,97,112,112,101,114,23,2,0,0,115,18,0, + 0,0,0,1,8,1,8,1,10,1,4,1,8,255,2,1, + 2,255,6,2,122,40,95,99,104,101,99,107,95,110,97,109, + 101,46,60,108,111,99,97,108,115,62,46,95,99,104,101,99, + 107,95,110,97,109,101,95,119,114,97,112,112,101,114,99,2, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,7, + 0,0,0,83,0,0,0,115,56,0,0,0,100,1,68,0, + 93,32,125,2,116,0,124,1,124,2,131,2,114,4,116,1, + 124,0,124,2,116,2,124,1,124,2,131,2,131,3,1,0, + 113,4,124,0,106,3,160,4,124,1,106,3,161,1,1,0, + 100,0,83,0,41,2,78,41,4,218,10,95,95,109,111,100, + 117,108,101,95,95,218,8,95,95,110,97,109,101,95,95,218, + 12,95,95,113,117,97,108,110,97,109,101,95,95,218,7,95, + 95,100,111,99,95,95,41,5,218,7,104,97,115,97,116,116, + 114,218,7,115,101,116,97,116,116,114,218,7,103,101,116,97, + 116,116,114,218,8,95,95,100,105,99,116,95,95,218,6,117, + 112,100,97,116,101,41,3,90,3,110,101,119,90,3,111,108, + 100,114,85,0,0,0,114,11,0,0,0,114,11,0,0,0, + 114,12,0,0,0,218,5,95,119,114,97,112,34,2,0,0, + 115,8,0,0,0,0,1,8,1,10,1,20,1,122,26,95, + 99,104,101,99,107,95,110,97,109,101,46,60,108,111,99,97, + 108,115,62,46,95,119,114,97,112,41,1,78,41,3,218,10, + 95,98,111,111,116,115,116,114,97,112,114,159,0,0,0,218, + 9,78,97,109,101,69,114,114,111,114,41,3,114,148,0,0, + 0,114,149,0,0,0,114,159,0,0,0,114,11,0,0,0, + 114,147,0,0,0,114,12,0,0,0,218,11,95,99,104,101, + 99,107,95,110,97,109,101,15,2,0,0,115,14,0,0,0, + 0,8,14,7,2,1,10,1,12,2,14,5,10,1,114,162, + 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,6,0,0,0,67,0,0,0,115,60,0,0, + 0,124,0,160,0,124,1,161,1,92,2,125,2,125,3,124, + 2,100,1,117,0,114,56,116,1,124,3,131,1,114,56,100, + 2,125,4,116,2,160,3,124,4,160,4,124,3,100,3,25, + 0,161,1,116,5,161,2,1,0,124,2,83,0,41,4,122, + 155,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108, + 111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,98, + 121,32,100,101,108,101,103,97,116,105,110,103,32,116,111,10, + 32,32,32,32,115,101,108,102,46,102,105,110,100,95,108,111, + 97,100,101,114,40,41,46,10,10,32,32,32,32,84,104,105, + 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,32,105,110,32,102,97,118,111,114,32, + 111,102,32,102,105,110,100,101,114,46,102,105,110,100,95,115, + 112,101,99,40,41,46,10,10,32,32,32,32,78,122,44,78, + 111,116,32,105,109,112,111,114,116,105,110,103,32,100,105,114, + 101,99,116,111,114,121,32,123,125,58,32,109,105,115,115,105, + 110,103,32,95,95,105,110,105,116,95,95,114,0,0,0,0, + 41,6,218,11,102,105,110,100,95,108,111,97,100,101,114,114, + 7,0,0,0,114,101,0,0,0,114,102,0,0,0,114,91, + 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, + 110,103,41,5,114,144,0,0,0,218,8,102,117,108,108,110, + 97,109,101,218,6,108,111,97,100,101,114,218,8,112,111,114, + 116,105,111,110,115,218,3,109,115,103,114,11,0,0,0,114, + 11,0,0,0,114,12,0,0,0,218,17,95,102,105,110,100, + 95,109,111,100,117,108,101,95,115,104,105,109,43,2,0,0, + 115,10,0,0,0,0,10,14,1,16,1,4,1,22,1,114, + 169,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, + 0,6,0,0,0,4,0,0,0,67,0,0,0,115,166,0, + 0,0,124,0,100,1,100,2,133,2,25,0,125,3,124,3, + 116,0,107,3,114,64,100,3,124,1,155,2,100,4,124,3, + 155,2,157,4,125,4,116,1,160,2,100,5,124,4,161,2, + 1,0,116,3,124,4,102,1,105,0,124,2,164,1,142,1, + 130,1,116,4,124,0,131,1,100,6,107,0,114,106,100,7, + 124,1,155,2,157,2,125,4,116,1,160,2,100,5,124,4, + 161,2,1,0,116,5,124,4,131,1,130,1,116,6,124,0, + 100,2,100,8,133,2,25,0,131,1,125,5,124,5,100,9, + 64,0,114,162,100,10,124,5,155,2,100,11,124,1,155,2, + 157,4,125,4,116,3,124,4,102,1,105,0,124,2,164,1, + 142,1,130,1,124,5,83,0,41,12,97,84,2,0,0,80, + 101,114,102,111,114,109,32,98,97,115,105,99,32,118,97,108, + 105,100,105,116,121,32,99,104,101,99,107,105,110,103,32,111, + 102,32,97,32,112,121,99,32,104,101,97,100,101,114,32,97, + 110,100,32,114,101,116,117,114,110,32,116,104,101,32,102,108, + 97,103,115,32,102,105,101,108,100,44,10,32,32,32,32,119, + 104,105,99,104,32,100,101,116,101,114,109,105,110,101,115,32, + 104,111,119,32,116,104,101,32,112,121,99,32,115,104,111,117, + 108,100,32,98,101,32,102,117,114,116,104,101,114,32,118,97, + 108,105,100,97,116,101,100,32,97,103,97,105,110,115,116,32, + 116,104,101,32,115,111,117,114,99,101,46,10,10,32,32,32, + 32,42,100,97,116,97,42,32,105,115,32,116,104,101,32,99, + 111,110,116,101,110,116,115,32,111,102,32,116,104,101,32,112, + 121,99,32,102,105,108,101,46,32,40,79,110,108,121,32,116, + 104,101,32,102,105,114,115,116,32,49,54,32,98,121,116,101, + 115,32,97,114,101,10,32,32,32,32,114,101,113,117,105,114, + 101,100,44,32,116,104,111,117,103,104,46,41,10,10,32,32, + 32,32,42,110,97,109,101,42,32,105,115,32,116,104,101,32, + 110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,117, + 108,101,32,98,101,105,110,103,32,105,109,112,111,114,116,101, + 100,46,32,73,116,32,105,115,32,117,115,101,100,32,102,111, + 114,32,108,111,103,103,105,110,103,46,10,10,32,32,32,32, + 42,101,120,99,95,100,101,116,97,105,108,115,42,32,105,115, + 32,97,32,100,105,99,116,105,111,110,97,114,121,32,112,97, + 115,115,101,100,32,116,111,32,73,109,112,111,114,116,69,114, + 114,111,114,32,105,102,32,105,116,32,114,97,105,115,101,100, + 32,102,111,114,10,32,32,32,32,105,109,112,114,111,118,101, + 100,32,100,101,98,117,103,103,105,110,103,46,10,10,32,32, + 32,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115, + 32,114,97,105,115,101,100,32,119,104,101,110,32,116,104,101, + 32,109,97,103,105,99,32,110,117,109,98,101,114,32,105,115, + 32,105,110,99,111,114,114,101,99,116,32,111,114,32,119,104, + 101,110,32,116,104,101,32,102,108,97,103,115,10,32,32,32, + 32,102,105,101,108,100,32,105,115,32,105,110,118,97,108,105, + 100,46,32,69,79,70,69,114,114,111,114,32,105,115,32,114, + 97,105,115,101,100,32,119,104,101,110,32,116,104,101,32,100, + 97,116,97,32,105,115,32,102,111,117,110,100,32,116,111,32, + 98,101,32,116,114,117,110,99,97,116,101,100,46,10,10,32, + 32,32,32,78,114,35,0,0,0,122,20,98,97,100,32,109, + 97,103,105,99,32,110,117,109,98,101,114,32,105,110,32,122, + 2,58,32,250,2,123,125,233,16,0,0,0,122,40,114,101, + 97,99,104,101,100,32,69,79,70,32,119,104,105,108,101,32, + 114,101,97,100,105,110,103,32,112,121,99,32,104,101,97,100, + 101,114,32,111,102,32,233,8,0,0,0,233,252,255,255,255, + 122,14,105,110,118,97,108,105,100,32,102,108,97,103,115,32, + 122,4,32,105,110,32,41,7,218,12,77,65,71,73,67,95, + 78,85,77,66,69,82,114,160,0,0,0,218,16,95,118,101, + 114,98,111,115,101,95,109,101,115,115,97,103,101,114,143,0, + 0,0,114,7,0,0,0,218,8,69,79,70,69,114,114,111, + 114,114,45,0,0,0,41,6,114,44,0,0,0,114,142,0, + 0,0,218,11,101,120,99,95,100,101,116,97,105,108,115,90, + 5,109,97,103,105,99,114,119,0,0,0,114,23,0,0,0, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 13,95,99,108,97,115,115,105,102,121,95,112,121,99,60,2, + 0,0,115,28,0,0,0,0,16,12,1,8,1,16,1,12, + 1,16,1,12,1,10,1,12,1,8,1,16,2,8,1,16, + 1,16,1,114,178,0,0,0,99,5,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0, + 0,115,120,0,0,0,116,0,124,0,100,1,100,2,133,2, + 25,0,131,1,124,1,100,3,64,0,107,3,114,62,100,4, + 124,3,155,2,157,2,125,5,116,1,160,2,100,5,124,5, + 161,2,1,0,116,3,124,5,102,1,105,0,124,4,164,1, + 142,1,130,1,124,2,100,6,117,1,114,116,116,0,124,0, + 100,2,100,7,133,2,25,0,131,1,124,2,100,3,64,0, + 107,3,114,116,116,3,100,4,124,3,155,2,157,2,102,1, + 105,0,124,4,164,1,142,1,130,1,100,6,83,0,41,8, + 97,7,2,0,0,86,97,108,105,100,97,116,101,32,97,32, + 112,121,99,32,97,103,97,105,110,115,116,32,116,104,101,32, + 115,111,117,114,99,101,32,108,97,115,116,45,109,111,100,105, + 102,105,101,100,32,116,105,109,101,46,10,10,32,32,32,32, + 42,100,97,116,97,42,32,105,115,32,116,104,101,32,99,111, + 110,116,101,110,116,115,32,111,102,32,116,104,101,32,112,121, + 99,32,102,105,108,101,46,32,40,79,110,108,121,32,116,104, + 101,32,102,105,114,115,116,32,49,54,32,98,121,116,101,115, + 32,97,114,101,10,32,32,32,32,114,101,113,117,105,114,101, + 100,46,41,10,10,32,32,32,32,42,115,111,117,114,99,101, + 95,109,116,105,109,101,42,32,105,115,32,116,104,101,32,108, + 97,115,116,32,109,111,100,105,102,105,101,100,32,116,105,109, + 101,115,116,97,109,112,32,111,102,32,116,104,101,32,115,111, + 117,114,99,101,32,102,105,108,101,46,10,10,32,32,32,32, + 42,115,111,117,114,99,101,95,115,105,122,101,42,32,105,115, + 32,78,111,110,101,32,111,114,32,116,104,101,32,115,105,122, + 101,32,111,102,32,116,104,101,32,115,111,117,114,99,101,32, + 102,105,108,101,32,105,110,32,98,121,116,101,115,46,10,10, + 32,32,32,32,42,110,97,109,101,42,32,105,115,32,116,104, + 101,32,110,97,109,101,32,111,102,32,116,104,101,32,109,111, + 100,117,108,101,32,98,101,105,110,103,32,105,109,112,111,114, + 116,101,100,46,32,73,116,32,105,115,32,117,115,101,100,32, + 102,111,114,32,108,111,103,103,105,110,103,46,10,10,32,32, + 32,32,42,101,120,99,95,100,101,116,97,105,108,115,42,32, + 105,115,32,97,32,100,105,99,116,105,111,110,97,114,121,32, + 112,97,115,115,101,100,32,116,111,32,73,109,112,111,114,116, + 69,114,114,111,114,32,105,102,32,105,116,32,114,97,105,115, + 101,100,32,102,111,114,10,32,32,32,32,105,109,112,114,111, + 118,101,100,32,100,101,98,117,103,103,105,110,103,46,10,10, + 32,32,32,32,65,110,32,73,109,112,111,114,116,69,114,114, + 111,114,32,105,115,32,114,97,105,115,101,100,32,105,102,32, + 116,104,101,32,98,121,116,101,99,111,100,101,32,105,115,32, + 115,116,97,108,101,46,10,10,32,32,32,32,114,172,0,0, + 0,233,12,0,0,0,114,34,0,0,0,122,22,98,121,116, + 101,99,111,100,101,32,105,115,32,115,116,97,108,101,32,102, + 111,114,32,114,170,0,0,0,78,114,171,0,0,0,41,4, + 114,45,0,0,0,114,160,0,0,0,114,175,0,0,0,114, + 143,0,0,0,41,6,114,44,0,0,0,218,12,115,111,117, + 114,99,101,95,109,116,105,109,101,218,11,115,111,117,114,99, + 101,95,115,105,122,101,114,142,0,0,0,114,177,0,0,0, + 114,119,0,0,0,114,11,0,0,0,114,11,0,0,0,114, + 12,0,0,0,218,23,95,118,97,108,105,100,97,116,101,95, + 116,105,109,101,115,116,97,109,112,95,112,121,99,93,2,0, + 0,115,16,0,0,0,0,19,24,1,10,1,12,1,16,1, + 8,1,22,255,2,2,114,182,0,0,0,99,4,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, + 67,0,0,0,115,42,0,0,0,124,0,100,1,100,2,133, + 2,25,0,124,1,107,3,114,38,116,0,100,3,124,2,155, + 2,157,2,102,1,105,0,124,3,164,1,142,1,130,1,100, + 4,83,0,41,5,97,243,1,0,0,86,97,108,105,100,97, + 116,101,32,97,32,104,97,115,104,45,98,97,115,101,100,32, + 112,121,99,32,98,121,32,99,104,101,99,107,105,110,103,32, + 116,104,101,32,114,101,97,108,32,115,111,117,114,99,101,32, + 104,97,115,104,32,97,103,97,105,110,115,116,32,116,104,101, + 32,111,110,101,32,105,110,10,32,32,32,32,116,104,101,32, + 112,121,99,32,104,101,97,100,101,114,46,10,10,32,32,32, + 32,42,100,97,116,97,42,32,105,115,32,116,104,101,32,99, + 111,110,116,101,110,116,115,32,111,102,32,116,104,101,32,112, + 121,99,32,102,105,108,101,46,32,40,79,110,108,121,32,116, + 104,101,32,102,105,114,115,116,32,49,54,32,98,121,116,101, + 115,32,97,114,101,10,32,32,32,32,114,101,113,117,105,114, + 101,100,46,41,10,10,32,32,32,32,42,115,111,117,114,99, + 101,95,104,97,115,104,42,32,105,115,32,116,104,101,32,105, + 109,112,111,114,116,108,105,98,46,117,116,105,108,46,115,111, + 117,114,99,101,95,104,97,115,104,40,41,32,111,102,32,116, + 104,101,32,115,111,117,114,99,101,32,102,105,108,101,46,10, + 10,32,32,32,32,42,110,97,109,101,42,32,105,115,32,116, + 104,101,32,110,97,109,101,32,111,102,32,116,104,101,32,109, + 111,100,117,108,101,32,98,101,105,110,103,32,105,109,112,111, + 114,116,101,100,46,32,73,116,32,105,115,32,117,115,101,100, + 32,102,111,114,32,108,111,103,103,105,110,103,46,10,10,32, + 32,32,32,42,101,120,99,95,100,101,116,97,105,108,115,42, + 32,105,115,32,97,32,100,105,99,116,105,111,110,97,114,121, + 32,112,97,115,115,101,100,32,116,111,32,73,109,112,111,114, + 116,69,114,114,111,114,32,105,102,32,105,116,32,114,97,105, + 115,101,100,32,102,111,114,10,32,32,32,32,105,109,112,114, + 111,118,101,100,32,100,101,98,117,103,103,105,110,103,46,10, + 10,32,32,32,32,65,110,32,73,109,112,111,114,116,69,114, + 114,111,114,32,105,115,32,114,97,105,115,101,100,32,105,102, + 32,116,104,101,32,98,121,116,101,99,111,100,101,32,105,115, + 32,115,116,97,108,101,46,10,10,32,32,32,32,114,172,0, + 0,0,114,171,0,0,0,122,46,104,97,115,104,32,105,110, + 32,98,121,116,101,99,111,100,101,32,100,111,101,115,110,39, + 116,32,109,97,116,99,104,32,104,97,115,104,32,111,102,32, + 115,111,117,114,99,101,32,78,41,1,114,143,0,0,0,41, + 4,114,44,0,0,0,218,11,115,111,117,114,99,101,95,104, + 97,115,104,114,142,0,0,0,114,177,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,218,18,95,118, + 97,108,105,100,97,116,101,95,104,97,115,104,95,112,121,99, + 121,2,0,0,115,12,0,0,0,0,17,16,1,2,1,8, + 255,4,2,2,254,114,184,0,0,0,99,4,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67, + 0,0,0,115,80,0,0,0,116,0,160,1,124,0,161,1, + 125,4,116,2,124,4,116,3,131,2,114,56,116,4,160,5, + 100,1,124,2,161,2,1,0,124,3,100,2,117,1,114,52, + 116,6,160,7,124,4,124,3,161,2,1,0,124,4,83,0, + 116,8,100,3,160,9,124,2,161,1,124,1,124,2,100,4, + 141,3,130,1,100,2,83,0,41,5,122,35,67,111,109,112, + 105,108,101,32,98,121,116,101,99,111,100,101,32,97,115,32, + 102,111,117,110,100,32,105,110,32,97,32,112,121,99,46,122, + 21,99,111,100,101,32,111,98,106,101,99,116,32,102,114,111, + 109,32,123,33,114,125,78,122,23,78,111,110,45,99,111,100, + 101,32,111,98,106,101,99,116,32,105,110,32,123,33,114,125, + 169,2,114,142,0,0,0,114,66,0,0,0,41,10,218,7, + 109,97,114,115,104,97,108,90,5,108,111,97,100,115,218,10, + 105,115,105,110,115,116,97,110,99,101,218,10,95,99,111,100, + 101,95,116,121,112,101,114,160,0,0,0,114,175,0,0,0, + 218,4,95,105,109,112,90,16,95,102,105,120,95,99,111,95, + 102,105,108,101,110,97,109,101,114,143,0,0,0,114,91,0, + 0,0,41,5,114,44,0,0,0,114,142,0,0,0,114,133, + 0,0,0,114,135,0,0,0,218,4,99,111,100,101,114,11, + 0,0,0,114,11,0,0,0,114,12,0,0,0,218,17,95, + 99,111,109,112,105,108,101,95,98,121,116,101,99,111,100,101, + 145,2,0,0,115,18,0,0,0,0,2,10,1,10,1,12, + 1,8,1,12,1,4,2,10,1,4,255,114,191,0,0,0, + 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,5,0,0,0,67,0,0,0,115,70,0,0,0,116,0, + 116,1,131,1,125,3,124,3,160,2,116,3,100,1,131,1, + 161,1,1,0,124,3,160,2,116,3,124,1,131,1,161,1, + 1,0,124,3,160,2,116,3,124,2,131,1,161,1,1,0, + 124,3,160,2,116,4,160,5,124,0,161,1,161,1,1,0, + 124,3,83,0,41,2,122,43,80,114,111,100,117,99,101,32, + 116,104,101,32,100,97,116,97,32,102,111,114,32,97,32,116, + 105,109,101,115,116,97,109,112,45,98,97,115,101,100,32,112, + 121,99,46,114,0,0,0,0,41,6,218,9,98,121,116,101, + 97,114,114,97,121,114,174,0,0,0,218,6,101,120,116,101, + 110,100,114,40,0,0,0,114,186,0,0,0,218,5,100,117, + 109,112,115,41,4,114,190,0,0,0,218,5,109,116,105,109, + 101,114,181,0,0,0,114,44,0,0,0,114,11,0,0,0, + 114,11,0,0,0,114,12,0,0,0,218,22,95,99,111,100, + 101,95,116,111,95,116,105,109,101,115,116,97,109,112,95,112, + 121,99,158,2,0,0,115,12,0,0,0,0,2,8,1,14, + 1,14,1,14,1,16,1,114,196,0,0,0,84,99,3,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0, + 0,0,67,0,0,0,115,80,0,0,0,116,0,116,1,131, + 1,125,3,100,1,124,2,100,1,62,0,66,0,125,4,124, + 3,160,2,116,3,124,4,131,1,161,1,1,0,116,4,124, + 1,131,1,100,2,107,2,115,50,74,0,130,1,124,3,160, + 2,124,1,161,1,1,0,124,3,160,2,116,5,160,6,124, + 0,161,1,161,1,1,0,124,3,83,0,41,3,122,38,80, + 114,111,100,117,99,101,32,116,104,101,32,100,97,116,97,32, + 102,111,114,32,97,32,104,97,115,104,45,98,97,115,101,100, + 32,112,121,99,46,114,5,0,0,0,114,172,0,0,0,41, + 7,114,192,0,0,0,114,174,0,0,0,114,193,0,0,0, + 114,40,0,0,0,114,7,0,0,0,114,186,0,0,0,114, + 194,0,0,0,41,5,114,190,0,0,0,114,183,0,0,0, + 90,7,99,104,101,99,107,101,100,114,44,0,0,0,114,23, + 0,0,0,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,218,17,95,99,111,100,101,95,116,111,95,104,97,115, + 104,95,112,121,99,168,2,0,0,115,14,0,0,0,0,2, + 8,1,12,1,14,1,16,1,10,1,16,1,114,197,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,6,0,0,0,67,0,0,0,115,62,0,0,0,100, + 1,100,2,108,0,125,1,116,1,160,2,124,0,161,1,106, + 3,125,2,124,1,160,4,124,2,161,1,125,3,116,1,160, + 5,100,2,100,3,161,2,125,4,124,4,160,6,124,0,160, + 6,124,3,100,1,25,0,161,1,161,1,83,0,41,4,122, + 121,68,101,99,111,100,101,32,98,121,116,101,115,32,114,101, + 112,114,101,115,101,110,116,105,110,103,32,115,111,117,114,99, + 101,32,99,111,100,101,32,97,110,100,32,114,101,116,117,114, + 110,32,116,104,101,32,115,116,114,105,110,103,46,10,10,32, + 32,32,32,85,110,105,118,101,114,115,97,108,32,110,101,119, + 108,105,110,101,32,115,117,112,112,111,114,116,32,105,115,32, + 117,115,101,100,32,105,110,32,116,104,101,32,100,101,99,111, + 100,105,110,103,46,10,32,32,32,32,114,0,0,0,0,78, + 84,41,7,218,8,116,111,107,101,110,105,122,101,114,93,0, + 0,0,90,7,66,121,116,101,115,73,79,90,8,114,101,97, + 100,108,105,110,101,90,15,100,101,116,101,99,116,95,101,110, + 99,111,100,105,110,103,90,25,73,110,99,114,101,109,101,110, + 116,97,108,78,101,119,108,105,110,101,68,101,99,111,100,101, + 114,218,6,100,101,99,111,100,101,41,5,218,12,115,111,117, + 114,99,101,95,98,121,116,101,115,114,198,0,0,0,90,21, + 115,111,117,114,99,101,95,98,121,116,101,115,95,114,101,97, + 100,108,105,110,101,218,8,101,110,99,111,100,105,110,103,90, + 15,110,101,119,108,105,110,101,95,100,101,99,111,100,101,114, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 13,100,101,99,111,100,101,95,115,111,117,114,99,101,179,2, + 0,0,115,10,0,0,0,0,5,8,1,12,1,10,1,12, + 1,114,202,0,0,0,169,2,114,166,0,0,0,218,26,115, + 117,98,109,111,100,117,108,101,95,115,101,97,114,99,104,95, + 108,111,99,97,116,105,111,110,115,99,2,0,0,0,0,0, + 0,0,2,0,0,0,9,0,0,0,8,0,0,0,67,0, + 0,0,115,64,1,0,0,124,1,100,1,117,0,114,58,100, + 2,125,1,116,0,124,2,100,3,131,2,114,114,122,14,124, + 2,160,1,124,0,161,1,125,1,87,0,113,114,4,0,116, + 2,121,54,1,0,1,0,1,0,89,0,113,114,48,0,110, + 56,116,3,160,4,124,1,161,1,125,1,116,5,124,1,131, + 1,115,114,122,18,116,6,116,3,160,7,161,0,124,1,131, + 2,125,1,87,0,110,18,4,0,116,8,121,112,1,0,1, + 0,1,0,89,0,110,2,48,0,116,9,106,10,124,0,124, + 2,124,1,100,4,141,3,125,4,100,5,124,4,95,11,124, + 2,100,1,117,0,114,198,116,12,131,0,68,0,93,42,92, + 2,125,5,125,6,124,1,160,13,116,14,124,6,131,1,161, + 1,114,150,124,5,124,0,124,1,131,2,125,2,124,2,124, + 4,95,15,1,0,113,198,113,150,100,1,83,0,124,3,116, + 16,117,0,144,1,114,12,116,0,124,2,100,6,131,2,144, + 1,114,18,122,14,124,2,160,17,124,0,161,1,125,7,87, + 0,110,18,4,0,116,2,121,252,1,0,1,0,1,0,89, + 0,110,14,48,0,124,7,144,1,114,18,103,0,124,4,95, + 18,110,6,124,3,124,4,95,18,124,4,106,18,103,0,107, + 2,144,1,114,60,124,1,144,1,114,60,116,19,124,1,131, + 1,100,7,25,0,125,8,124,4,106,18,160,20,124,8,161, + 1,1,0,124,4,83,0,41,8,97,61,1,0,0,82,101, + 116,117,114,110,32,97,32,109,111,100,117,108,101,32,115,112, + 101,99,32,98,97,115,101,100,32,111,110,32,97,32,102,105, + 108,101,32,108,111,99,97,116,105,111,110,46,10,10,32,32, + 32,32,84,111,32,105,110,100,105,99,97,116,101,32,116,104, + 97,116,32,116,104,101,32,109,111,100,117,108,101,32,105,115, + 32,97,32,112,97,99,107,97,103,101,44,32,115,101,116,10, + 32,32,32,32,115,117,98,109,111,100,117,108,101,95,115,101, + 97,114,99,104,95,108,111,99,97,116,105,111,110,115,32,116, + 111,32,97,32,108,105,115,116,32,111,102,32,100,105,114,101, + 99,116,111,114,121,32,112,97,116,104,115,46,32,32,65,110, + 10,32,32,32,32,101,109,112,116,121,32,108,105,115,116,32, + 105,115,32,115,117,102,102,105,99,105,101,110,116,44,32,116, + 104,111,117,103,104,32,105,116,115,32,110,111,116,32,111,116, + 104,101,114,119,105,115,101,32,117,115,101,102,117,108,32,116, + 111,32,116,104,101,10,32,32,32,32,105,109,112,111,114,116, + 32,115,121,115,116,101,109,46,10,10,32,32,32,32,84,104, + 101,32,108,111,97,100,101,114,32,109,117,115,116,32,116,97, + 107,101,32,97,32,115,112,101,99,32,97,115,32,105,116,115, + 32,111,110,108,121,32,95,95,105,110,105,116,95,95,40,41, + 32,97,114,103,46,10,10,32,32,32,32,78,122,9,60,117, + 110,107,110,111,119,110,62,218,12,103,101,116,95,102,105,108, + 101,110,97,109,101,169,1,218,6,111,114,105,103,105,110,84, + 218,10,105,115,95,112,97,99,107,97,103,101,114,0,0,0, + 0,41,21,114,154,0,0,0,114,205,0,0,0,114,143,0, + 0,0,114,25,0,0,0,114,105,0,0,0,114,86,0,0, + 0,114,68,0,0,0,114,82,0,0,0,114,77,0,0,0, + 114,160,0,0,0,218,10,77,111,100,117,108,101,83,112,101, + 99,90,13,95,115,101,116,95,102,105,108,101,97,116,116,114, + 218,27,95,103,101,116,95,115,117,112,112,111,114,116,101,100, + 95,102,105,108,101,95,108,111,97,100,101,114,115,114,59,0, + 0,0,114,137,0,0,0,114,166,0,0,0,218,9,95,80, + 79,80,85,76,65,84,69,114,208,0,0,0,114,204,0,0, + 0,114,75,0,0,0,114,62,0,0,0,41,9,114,142,0, + 0,0,90,8,108,111,99,97,116,105,111,110,114,166,0,0, + 0,114,204,0,0,0,218,4,115,112,101,99,218,12,108,111, + 97,100,101,114,95,99,108,97,115,115,218,8,115,117,102,102, + 105,120,101,115,114,208,0,0,0,90,7,100,105,114,110,97, + 109,101,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,218,23,115,112,101,99,95,102,114,111,109,95,102,105,108, + 101,95,108,111,99,97,116,105,111,110,196,2,0,0,115,72, + 0,0,0,0,12,8,4,4,1,10,2,2,1,14,1,12, + 1,8,2,10,1,8,1,2,1,18,1,12,1,6,8,16, + 1,6,3,8,1,14,1,14,1,10,1,6,1,6,2,4, + 3,10,2,12,1,2,1,14,1,12,1,6,2,6,1,8, + 2,6,1,12,1,6,1,12,1,12,2,114,215,0,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,64,0,0,0,115,80,0,0,0,101,0, + 90,1,100,0,90,2,100,1,90,3,100,2,90,4,100,3, + 90,5,100,4,90,6,101,7,100,5,100,6,132,0,131,1, + 90,8,101,7,100,7,100,8,132,0,131,1,90,9,101,7, + 100,14,100,10,100,11,132,1,131,1,90,10,101,7,100,15, + 100,12,100,13,132,1,131,1,90,11,100,9,83,0,41,16, + 218,21,87,105,110,100,111,119,115,82,101,103,105,115,116,114, + 121,70,105,110,100,101,114,122,62,77,101,116,97,32,112,97, + 116,104,32,102,105,110,100,101,114,32,102,111,114,32,109,111, + 100,117,108,101,115,32,100,101,99,108,97,114,101,100,32,105, + 110,32,116,104,101,32,87,105,110,100,111,119,115,32,114,101, + 103,105,115,116,114,121,46,122,59,83,111,102,116,119,97,114, + 101,92,80,121,116,104,111,110,92,80,121,116,104,111,110,67, + 111,114,101,92,123,115,121,115,95,118,101,114,115,105,111,110, + 125,92,77,111,100,117,108,101,115,92,123,102,117,108,108,110, + 97,109,101,125,122,65,83,111,102,116,119,97,114,101,92,80, + 121,116,104,111,110,92,80,121,116,104,111,110,67,111,114,101, + 92,123,115,121,115,95,118,101,114,115,105,111,110,125,92,77, + 111,100,117,108,101,115,92,123,102,117,108,108,110,97,109,101, + 125,92,68,101,98,117,103,70,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,8,0,0,0,67,0,0, + 0,115,54,0,0,0,122,16,116,0,160,1,116,0,106,2, + 124,1,161,2,87,0,83,0,4,0,116,3,121,48,1,0, + 1,0,1,0,116,0,160,1,116,0,106,4,124,1,161,2, + 6,0,89,0,83,0,48,0,100,0,83,0,114,70,0,0, + 0,41,5,218,6,119,105,110,114,101,103,90,7,79,112,101, + 110,75,101,121,90,17,72,75,69,89,95,67,85,82,82,69, + 78,84,95,85,83,69,82,114,77,0,0,0,90,18,72,75, + 69,89,95,76,79,67,65,76,95,77,65,67,72,73,78,69, + 41,2,218,3,99,108,115,114,27,0,0,0,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,218,14,95,111,112, + 101,110,95,114,101,103,105,115,116,114,121,25,3,0,0,115, + 8,0,0,0,0,2,2,1,16,1,12,1,122,36,87,105, + 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110, + 100,101,114,46,95,111,112,101,110,95,114,101,103,105,115,116, + 114,121,99,2,0,0,0,0,0,0,0,0,0,0,0,6, + 0,0,0,8,0,0,0,67,0,0,0,115,132,0,0,0, + 124,0,106,0,114,14,124,0,106,1,125,2,110,6,124,0, + 106,2,125,2,124,2,106,3,124,1,100,1,116,4,106,5, + 100,0,100,2,133,2,25,0,22,0,100,3,141,2,125,3, + 122,58,124,0,160,6,124,3,161,1,143,28,125,4,116,7, + 160,8,124,4,100,4,161,2,125,5,87,0,100,0,4,0, + 4,0,131,3,1,0,110,16,49,0,115,94,48,0,1,0, + 1,0,1,0,89,0,1,0,87,0,110,20,4,0,116,9, + 121,126,1,0,1,0,1,0,89,0,100,0,83,0,48,0, + 124,5,83,0,41,5,78,122,5,37,100,46,37,100,114,46, + 0,0,0,41,2,114,165,0,0,0,90,11,115,121,115,95, + 118,101,114,115,105,111,110,114,15,0,0,0,41,10,218,11, + 68,69,66,85,71,95,66,85,73,76,68,218,18,82,69,71, + 73,83,84,82,89,95,75,69,89,95,68,69,66,85,71,218, + 12,82,69,71,73,83,84,82,89,95,75,69,89,114,91,0, + 0,0,114,22,0,0,0,218,12,118,101,114,115,105,111,110, + 95,105,110,102,111,114,219,0,0,0,114,217,0,0,0,90, + 10,81,117,101,114,121,86,97,108,117,101,114,77,0,0,0, + 41,6,114,218,0,0,0,114,165,0,0,0,90,12,114,101, + 103,105,115,116,114,121,95,107,101,121,114,27,0,0,0,90, + 4,104,107,101,121,218,8,102,105,108,101,112,97,116,104,114, + 11,0,0,0,114,11,0,0,0,114,12,0,0,0,218,16, + 95,115,101,97,114,99,104,95,114,101,103,105,115,116,114,121, + 32,3,0,0,115,24,0,0,0,0,2,6,1,8,2,6, + 1,6,1,16,255,6,2,2,1,12,1,46,1,12,1,8, + 1,122,38,87,105,110,100,111,119,115,82,101,103,105,115,116, + 114,121,70,105,110,100,101,114,46,95,115,101,97,114,99,104, + 95,114,101,103,105,115,116,114,121,78,99,4,0,0,0,0, + 0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,67, + 0,0,0,115,120,0,0,0,124,0,160,0,124,1,161,1, + 125,4,124,4,100,0,117,0,114,22,100,0,83,0,122,12, + 116,1,124,4,131,1,1,0,87,0,110,20,4,0,116,2, + 121,54,1,0,1,0,1,0,89,0,100,0,83,0,48,0, + 116,3,131,0,68,0,93,52,92,2,125,5,125,6,124,4, + 160,4,116,5,124,6,131,1,161,1,114,62,116,6,106,7, + 124,1,124,5,124,1,124,4,131,2,124,4,100,1,141,3, + 125,7,124,7,2,0,1,0,83,0,113,62,100,0,83,0, + 41,2,78,114,206,0,0,0,41,8,114,225,0,0,0,114, + 76,0,0,0,114,77,0,0,0,114,210,0,0,0,114,59, + 0,0,0,114,137,0,0,0,114,160,0,0,0,218,16,115, + 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,41, + 8,114,218,0,0,0,114,165,0,0,0,114,66,0,0,0, + 218,6,116,97,114,103,101,116,114,224,0,0,0,114,166,0, + 0,0,114,214,0,0,0,114,212,0,0,0,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,218,9,102,105,110, + 100,95,115,112,101,99,47,3,0,0,115,28,0,0,0,0, + 2,10,1,8,1,4,1,2,1,12,1,12,1,8,1,14, + 1,14,1,6,1,8,1,2,254,6,3,122,31,87,105,110, + 100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100, + 101,114,46,102,105,110,100,95,115,112,101,99,99,3,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0, + 0,67,0,0,0,115,34,0,0,0,124,0,160,0,124,1, + 124,2,161,2,125,3,124,3,100,1,117,1,114,26,124,3, + 106,1,83,0,100,1,83,0,100,1,83,0,41,2,122,108, + 70,105,110,100,32,109,111,100,117,108,101,32,110,97,109,101, + 100,32,105,110,32,116,104,101,32,114,101,103,105,115,116,114, + 121,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115, + 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,46,32,32,85,115,101,32,101,120,101,99, + 95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97, + 100,46,10,10,32,32,32,32,32,32,32,32,78,169,2,114, + 228,0,0,0,114,166,0,0,0,169,4,114,218,0,0,0, + 114,165,0,0,0,114,66,0,0,0,114,212,0,0,0,114, + 11,0,0,0,114,11,0,0,0,114,12,0,0,0,218,11, + 102,105,110,100,95,109,111,100,117,108,101,63,3,0,0,115, + 8,0,0,0,0,7,12,1,8,1,6,2,122,33,87,105, + 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110, + 100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,41, + 2,78,78,41,1,78,41,12,114,151,0,0,0,114,150,0, + 0,0,114,152,0,0,0,114,153,0,0,0,114,222,0,0, + 0,114,221,0,0,0,114,220,0,0,0,218,11,99,108,97, + 115,115,109,101,116,104,111,100,114,219,0,0,0,114,225,0, + 0,0,114,228,0,0,0,114,231,0,0,0,114,11,0,0, + 0,114,11,0,0,0,114,11,0,0,0,114,12,0,0,0, + 114,216,0,0,0,13,3,0,0,115,28,0,0,0,8,2, + 4,3,2,255,2,4,2,255,2,3,4,2,2,1,10,6, + 2,1,10,14,2,1,12,15,2,1,114,216,0,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,64,0,0,0,115,48,0,0,0,101,0,90, + 1,100,0,90,2,100,1,90,3,100,2,100,3,132,0,90, + 4,100,4,100,5,132,0,90,5,100,6,100,7,132,0,90, + 6,100,8,100,9,132,0,90,7,100,10,83,0,41,11,218, + 13,95,76,111,97,100,101,114,66,97,115,105,99,115,122,83, + 66,97,115,101,32,99,108,97,115,115,32,111,102,32,99,111, + 109,109,111,110,32,99,111,100,101,32,110,101,101,100,101,100, + 32,98,121,32,98,111,116,104,32,83,111,117,114,99,101,76, + 111,97,100,101,114,32,97,110,100,10,32,32,32,32,83,111, + 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100, + 101,114,46,99,2,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,4,0,0,0,67,0,0,0,115,64,0,0, + 0,116,0,124,0,160,1,124,1,161,1,131,1,100,1,25, + 0,125,2,124,2,160,2,100,2,100,1,161,2,100,3,25, + 0,125,3,124,1,160,3,100,2,161,1,100,4,25,0,125, + 4,124,3,100,5,107,2,111,62,124,4,100,5,107,3,83, + 0,41,6,122,141,67,111,110,99,114,101,116,101,32,105,109, + 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32, + 73,110,115,112,101,99,116,76,111,97,100,101,114,46,105,115, + 95,112,97,99,107,97,103,101,32,98,121,32,99,104,101,99, + 107,105,110,103,32,105,102,10,32,32,32,32,32,32,32,32, + 116,104,101,32,112,97,116,104,32,114,101,116,117,114,110,101, + 100,32,98,121,32,103,101,116,95,102,105,108,101,110,97,109, + 101,32,104,97,115,32,97,32,102,105,108,101,110,97,109,101, + 32,111,102,32,39,95,95,105,110,105,116,95,95,46,112,121, + 39,46,114,5,0,0,0,114,99,0,0,0,114,0,0,0, + 0,114,46,0,0,0,218,8,95,95,105,110,105,116,95,95, + 41,4,114,75,0,0,0,114,205,0,0,0,114,126,0,0, + 0,114,106,0,0,0,41,5,114,144,0,0,0,114,165,0, + 0,0,114,122,0,0,0,90,13,102,105,108,101,110,97,109, + 101,95,98,97,115,101,90,9,116,97,105,108,95,110,97,109, + 101,114,11,0,0,0,114,11,0,0,0,114,12,0,0,0, + 114,208,0,0,0,82,3,0,0,115,8,0,0,0,0,3, + 18,1,16,1,14,1,122,24,95,76,111,97,100,101,114,66, + 97,115,105,99,115,46,105,115,95,112,97,99,107,97,103,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, + 83,0,169,2,122,42,85,115,101,32,100,101,102,97,117,108, + 116,32,115,101,109,97,110,116,105,99,115,32,102,111,114,32, + 109,111,100,117,108,101,32,99,114,101,97,116,105,111,110,46, + 78,114,11,0,0,0,169,2,114,144,0,0,0,114,212,0, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101, + 90,3,0,0,115,2,0,0,0,0,1,122,27,95,76,111, + 97,100,101,114,66,97,115,105,99,115,46,99,114,101,97,116, + 101,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,5,0,0,0,67,0,0, + 0,115,56,0,0,0,124,0,160,0,124,1,106,1,161,1, + 125,2,124,2,100,1,117,0,114,36,116,2,100,2,160,3, + 124,1,106,1,161,1,131,1,130,1,116,4,160,5,116,6, + 124,2,124,1,106,7,161,3,1,0,100,1,83,0,41,3, + 122,19,69,120,101,99,117,116,101,32,116,104,101,32,109,111, + 100,117,108,101,46,78,122,52,99,97,110,110,111,116,32,108, + 111,97,100,32,109,111,100,117,108,101,32,123,33,114,125,32, + 119,104,101,110,32,103,101,116,95,99,111,100,101,40,41,32, + 114,101,116,117,114,110,115,32,78,111,110,101,41,8,218,8, + 103,101,116,95,99,111,100,101,114,151,0,0,0,114,143,0, + 0,0,114,91,0,0,0,114,160,0,0,0,218,25,95,99, + 97,108,108,95,119,105,116,104,95,102,114,97,109,101,115,95, + 114,101,109,111,118,101,100,218,4,101,120,101,99,114,157,0, + 0,0,41,3,114,144,0,0,0,218,6,109,111,100,117,108, + 101,114,190,0,0,0,114,11,0,0,0,114,11,0,0,0, + 114,12,0,0,0,218,11,101,120,101,99,95,109,111,100,117, + 108,101,93,3,0,0,115,12,0,0,0,0,2,12,1,8, + 1,6,1,4,255,6,2,122,25,95,76,111,97,100,101,114, + 66,97,115,105,99,115,46,101,120,101,99,95,109,111,100,117, + 108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,4,0,0,0,67,0,0,0,115,12,0,0,0, + 116,0,160,1,124,0,124,1,161,2,83,0,41,1,122,26, + 84,104,105,115,32,109,111,100,117,108,101,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,46,41,2,114,160,0,0, + 0,218,17,95,108,111,97,100,95,109,111,100,117,108,101,95, + 115,104,105,109,169,2,114,144,0,0,0,114,165,0,0,0, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 11,108,111,97,100,95,109,111,100,117,108,101,101,3,0,0, + 115,2,0,0,0,0,2,122,25,95,76,111,97,100,101,114, + 66,97,115,105,99,115,46,108,111,97,100,95,109,111,100,117, + 108,101,78,41,8,114,151,0,0,0,114,150,0,0,0,114, + 152,0,0,0,114,153,0,0,0,114,208,0,0,0,114,237, + 0,0,0,114,242,0,0,0,114,245,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,114,233,0,0,0,77,3,0,0,115,10,0,0,0,8, + 2,4,3,8,8,8,3,8,8,114,233,0,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,64,0,0,0,115,74,0,0,0,101,0,90,1, + 100,0,90,2,100,1,100,2,132,0,90,3,100,3,100,4, + 132,0,90,4,100,5,100,6,132,0,90,5,100,7,100,8, + 132,0,90,6,100,9,100,10,132,0,90,7,100,11,100,12, + 156,1,100,13,100,14,132,2,90,8,100,15,100,16,132,0, + 90,9,100,17,83,0,41,18,218,12,83,111,117,114,99,101, + 76,111,97,100,101,114,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115, + 8,0,0,0,116,0,130,1,100,1,83,0,41,2,122,165, + 79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32, + 116,104,97,116,32,114,101,116,117,114,110,115,32,116,104,101, + 32,109,111,100,105,102,105,99,97,116,105,111,110,32,116,105, + 109,101,32,40,97,110,32,105,110,116,41,32,102,111,114,32, + 116,104,101,10,32,32,32,32,32,32,32,32,115,112,101,99, + 105,102,105,101,100,32,112,97,116,104,32,40,97,32,115,116, + 114,41,46,10,10,32,32,32,32,32,32,32,32,82,97,105, + 115,101,115,32,79,83,69,114,114,111,114,32,119,104,101,110, + 32,116,104,101,32,112,97,116,104,32,99,97,110,110,111,116, + 32,98,101,32,104,97,110,100,108,101,100,46,10,32,32,32, + 32,32,32,32,32,78,41,1,114,77,0,0,0,169,2,114, + 144,0,0,0,114,66,0,0,0,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,218,10,112,97,116,104,95,109, + 116,105,109,101,108,3,0,0,115,2,0,0,0,0,6,122, + 23,83,111,117,114,99,101,76,111,97,100,101,114,46,112,97, + 116,104,95,109,116,105,109,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, + 0,115,14,0,0,0,100,1,124,0,160,0,124,1,161,1, + 105,1,83,0,41,2,97,158,1,0,0,79,112,116,105,111, + 110,97,108,32,109,101,116,104,111,100,32,114,101,116,117,114, + 110,105,110,103,32,97,32,109,101,116,97,100,97,116,97,32, + 100,105,99,116,32,102,111,114,32,116,104,101,32,115,112,101, + 99,105,102,105,101,100,10,32,32,32,32,32,32,32,32,112, + 97,116,104,32,40,97,32,115,116,114,41,46,10,10,32,32, + 32,32,32,32,32,32,80,111,115,115,105,98,108,101,32,107, + 101,121,115,58,10,32,32,32,32,32,32,32,32,45,32,39, + 109,116,105,109,101,39,32,40,109,97,110,100,97,116,111,114, + 121,41,32,105,115,32,116,104,101,32,110,117,109,101,114,105, + 99,32,116,105,109,101,115,116,97,109,112,32,111,102,32,108, + 97,115,116,32,115,111,117,114,99,101,10,32,32,32,32,32, + 32,32,32,32,32,99,111,100,101,32,109,111,100,105,102,105, + 99,97,116,105,111,110,59,10,32,32,32,32,32,32,32,32, + 45,32,39,115,105,122,101,39,32,40,111,112,116,105,111,110, + 97,108,41,32,105,115,32,116,104,101,32,115,105,122,101,32, + 105,110,32,98,121,116,101,115,32,111,102,32,116,104,101,32, + 115,111,117,114,99,101,32,99,111,100,101,46,10,10,32,32, + 32,32,32,32,32,32,73,109,112,108,101,109,101,110,116,105, + 110,103,32,116,104,105,115,32,109,101,116,104,111,100,32,97, + 108,108,111,119,115,32,116,104,101,32,108,111,97,100,101,114, + 32,116,111,32,114,101,97,100,32,98,121,116,101,99,111,100, + 101,32,102,105,108,101,115,46,10,32,32,32,32,32,32,32, + 32,82,97,105,115,101,115,32,79,83,69,114,114,111,114,32, + 119,104,101,110,32,116,104,101,32,112,97,116,104,32,99,97, + 110,110,111,116,32,98,101,32,104,97,110,100,108,101,100,46, + 10,32,32,32,32,32,32,32,32,114,195,0,0,0,41,1, + 114,248,0,0,0,114,247,0,0,0,114,11,0,0,0,114, + 11,0,0,0,114,12,0,0,0,218,10,112,97,116,104,95, + 115,116,97,116,115,116,3,0,0,115,2,0,0,0,0,12, + 122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,112, + 97,116,104,95,115,116,97,116,115,99,4,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, + 0,0,115,12,0,0,0,124,0,160,0,124,2,124,3,161, + 2,83,0,41,1,122,228,79,112,116,105,111,110,97,108,32, + 109,101,116,104,111,100,32,119,104,105,99,104,32,119,114,105, + 116,101,115,32,100,97,116,97,32,40,98,121,116,101,115,41, + 32,116,111,32,97,32,102,105,108,101,32,112,97,116,104,32, + 40,97,32,115,116,114,41,46,10,10,32,32,32,32,32,32, + 32,32,73,109,112,108,101,109,101,110,116,105,110,103,32,116, + 104,105,115,32,109,101,116,104,111,100,32,97,108,108,111,119, + 115,32,102,111,114,32,116,104,101,32,119,114,105,116,105,110, + 103,32,111,102,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,115,46,10,10,32,32,32,32,32,32,32,32,84,104, + 101,32,115,111,117,114,99,101,32,112,97,116,104,32,105,115, + 32,110,101,101,100,101,100,32,105,110,32,111,114,100,101,114, + 32,116,111,32,99,111,114,114,101,99,116,108,121,32,116,114, + 97,110,115,102,101,114,32,112,101,114,109,105,115,115,105,111, + 110,115,10,32,32,32,32,32,32,32,32,41,1,218,8,115, + 101,116,95,100,97,116,97,41,4,114,144,0,0,0,114,135, + 0,0,0,90,10,99,97,99,104,101,95,112,97,116,104,114, + 44,0,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,218,15,95,99,97,99,104,101,95,98,121,116,101, + 99,111,100,101,130,3,0,0,115,2,0,0,0,0,8,122, + 28,83,111,117,114,99,101,76,111,97,100,101,114,46,95,99, + 97,99,104,101,95,98,121,116,101,99,111,100,101,99,3,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, + 2,122,150,79,112,116,105,111,110,97,108,32,109,101,116,104, + 111,100,32,119,104,105,99,104,32,119,114,105,116,101,115,32, + 100,97,116,97,32,40,98,121,116,101,115,41,32,116,111,32, + 97,32,102,105,108,101,32,112,97,116,104,32,40,97,32,115, + 116,114,41,46,10,10,32,32,32,32,32,32,32,32,73,109, + 112,108,101,109,101,110,116,105,110,103,32,116,104,105,115,32, + 109,101,116,104,111,100,32,97,108,108,111,119,115,32,102,111, + 114,32,116,104,101,32,119,114,105,116,105,110,103,32,111,102, + 32,98,121,116,101,99,111,100,101,32,102,105,108,101,115,46, + 10,32,32,32,32,32,32,32,32,78,114,11,0,0,0,41, + 3,114,144,0,0,0,114,66,0,0,0,114,44,0,0,0, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,114, + 250,0,0,0,140,3,0,0,115,2,0,0,0,0,1,122, + 21,83,111,117,114,99,101,76,111,97,100,101,114,46,115,101, + 116,95,100,97,116,97,99,2,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,10,0,0,0,67,0,0,0,115, + 84,0,0,0,124,0,160,0,124,1,161,1,125,2,122,14, + 124,0,160,1,124,2,161,1,125,3,87,0,110,50,4,0, + 116,2,121,74,1,0,125,4,1,0,122,26,116,3,100,1, + 124,1,100,2,141,2,124,4,130,2,87,0,89,0,100,3, + 125,4,126,4,110,10,100,3,125,4,126,4,48,0,48,0, + 116,4,124,3,131,1,83,0,41,4,122,52,67,111,110,99, + 114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116, + 105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,111, + 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,46, + 122,39,115,111,117,114,99,101,32,110,111,116,32,97,118,97, + 105,108,97,98,108,101,32,116,104,114,111,117,103,104,32,103, + 101,116,95,100,97,116,97,40,41,114,141,0,0,0,78,41, + 5,114,205,0,0,0,218,8,103,101,116,95,100,97,116,97, + 114,77,0,0,0,114,143,0,0,0,114,202,0,0,0,41, + 5,114,144,0,0,0,114,165,0,0,0,114,66,0,0,0, + 114,200,0,0,0,218,3,101,120,99,114,11,0,0,0,114, + 11,0,0,0,114,12,0,0,0,218,10,103,101,116,95,115, + 111,117,114,99,101,147,3,0,0,115,20,0,0,0,0,2, + 10,1,2,1,14,1,14,1,4,1,2,255,4,1,2,255, + 24,2,122,23,83,111,117,114,99,101,76,111,97,100,101,114, + 46,103,101,116,95,115,111,117,114,99,101,114,131,0,0,0, + 41,1,218,9,95,111,112,116,105,109,105,122,101,99,3,0, + 0,0,0,0,0,0,1,0,0,0,4,0,0,0,8,0, + 0,0,67,0,0,0,115,22,0,0,0,116,0,106,1,116, + 2,124,1,124,2,100,1,100,2,124,3,100,3,141,6,83, + 0,41,4,122,130,82,101,116,117,114,110,32,116,104,101,32, + 99,111,100,101,32,111,98,106,101,99,116,32,99,111,109,112, + 105,108,101,100,32,102,114,111,109,32,115,111,117,114,99,101, + 46,10,10,32,32,32,32,32,32,32,32,84,104,101,32,39, + 100,97,116,97,39,32,97,114,103,117,109,101,110,116,32,99, + 97,110,32,98,101,32,97,110,121,32,111,98,106,101,99,116, + 32,116,121,112,101,32,116,104,97,116,32,99,111,109,112,105, + 108,101,40,41,32,115,117,112,112,111,114,116,115,46,10,32, + 32,32,32,32,32,32,32,114,240,0,0,0,84,41,2,218, + 12,100,111,110,116,95,105,110,104,101,114,105,116,114,110,0, + 0,0,41,3,114,160,0,0,0,114,239,0,0,0,218,7, + 99,111,109,112,105,108,101,41,4,114,144,0,0,0,114,44, + 0,0,0,114,66,0,0,0,114,255,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,218,14,115,111, + 117,114,99,101,95,116,111,95,99,111,100,101,157,3,0,0, + 115,6,0,0,0,0,5,12,1,4,255,122,27,83,111,117, + 114,99,101,76,111,97,100,101,114,46,115,111,117,114,99,101, + 95,116,111,95,99,111,100,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,15,0,0,0,9,0,0,0,67,0,0, + 0,115,24,2,0,0,124,0,160,0,124,1,161,1,125,2, + 100,1,125,3,100,1,125,4,100,1,125,5,100,2,125,6, + 100,3,125,7,122,12,116,1,124,2,131,1,125,8,87,0, + 110,24,4,0,116,2,121,66,1,0,1,0,1,0,100,1, + 125,8,89,0,144,1,110,42,48,0,122,14,124,0,160,3, + 124,2,161,1,125,9,87,0,110,20,4,0,116,4,121,102, + 1,0,1,0,1,0,89,0,144,1,110,6,48,0,116,5, + 124,9,100,4,25,0,131,1,125,3,122,14,124,0,160,6, + 124,8,161,1,125,10,87,0,110,18,4,0,116,4,121,148, + 1,0,1,0,1,0,89,0,110,216,48,0,124,1,124,8, + 100,5,156,2,125,11,122,148,116,7,124,10,124,1,124,11, + 131,3,125,12,116,8,124,10,131,1,100,6,100,1,133,2, + 25,0,125,13,124,12,100,7,64,0,100,8,107,3,125,6, + 124,6,144,1,114,30,124,12,100,9,64,0,100,8,107,3, + 125,7,116,9,106,10,100,10,107,3,144,1,114,50,124,7, + 115,248,116,9,106,10,100,11,107,2,144,1,114,50,124,0, + 160,6,124,2,161,1,125,4,116,9,160,11,116,12,124,4, + 161,2,125,5,116,13,124,10,124,5,124,1,124,11,131,4, + 1,0,110,20,116,14,124,10,124,3,124,9,100,12,25,0, + 124,1,124,11,131,5,1,0,87,0,110,24,4,0,116,15, + 116,16,102,2,144,1,121,76,1,0,1,0,1,0,89,0, + 110,32,48,0,116,17,160,18,100,13,124,8,124,2,161,3, + 1,0,116,19,124,13,124,1,124,8,124,2,100,14,141,4, + 83,0,124,4,100,1,117,0,144,1,114,128,124,0,160,6, + 124,2,161,1,125,4,124,0,160,20,124,4,124,2,161,2, + 125,14,116,17,160,18,100,15,124,2,161,2,1,0,116,21, + 106,22,144,2,115,20,124,8,100,1,117,1,144,2,114,20, + 124,3,100,1,117,1,144,2,114,20,124,6,144,1,114,220, + 124,5,100,1,117,0,144,1,114,206,116,9,160,11,124,4, + 161,1,125,5,116,23,124,14,124,5,124,7,131,3,125,10, + 110,16,116,24,124,14,124,3,116,25,124,4,131,1,131,3, + 125,10,122,18,124,0,160,26,124,2,124,8,124,10,161,3, + 1,0,87,0,110,20,4,0,116,2,144,2,121,18,1,0, + 1,0,1,0,89,0,110,2,48,0,124,14,83,0,41,16, + 122,190,67,111,110,99,114,101,116,101,32,105,109,112,108,101, + 109,101,110,116,97,116,105,111,110,32,111,102,32,73,110,115, + 112,101,99,116,76,111,97,100,101,114,46,103,101,116,95,99, + 111,100,101,46,10,10,32,32,32,32,32,32,32,32,82,101, + 97,100,105,110,103,32,111,102,32,98,121,116,101,99,111,100, + 101,32,114,101,113,117,105,114,101,115,32,112,97,116,104,95, + 115,116,97,116,115,32,116,111,32,98,101,32,105,109,112,108, + 101,109,101,110,116,101,100,46,32,84,111,32,119,114,105,116, + 101,10,32,32,32,32,32,32,32,32,98,121,116,101,99,111, + 100,101,44,32,115,101,116,95,100,97,116,97,32,109,117,115, + 116,32,97,108,115,111,32,98,101,32,105,109,112,108,101,109, + 101,110,116,101,100,46,10,10,32,32,32,32,32,32,32,32, + 78,70,84,114,195,0,0,0,114,185,0,0,0,114,171,0, + 0,0,114,5,0,0,0,114,0,0,0,0,114,46,0,0, + 0,90,5,110,101,118,101,114,90,6,97,108,119,97,121,115, + 218,4,115,105,122,101,122,13,123,125,32,109,97,116,99,104, + 101,115,32,123,125,41,3,114,142,0,0,0,114,133,0,0, + 0,114,135,0,0,0,122,19,99,111,100,101,32,111,98,106, + 101,99,116,32,102,114,111,109,32,123,125,41,27,114,205,0, + 0,0,114,123,0,0,0,114,109,0,0,0,114,249,0,0, + 0,114,77,0,0,0,114,37,0,0,0,114,252,0,0,0, + 114,178,0,0,0,218,10,109,101,109,111,114,121,118,105,101, + 119,114,189,0,0,0,90,21,99,104,101,99,107,95,104,97, + 115,104,95,98,97,115,101,100,95,112,121,99,115,114,183,0, + 0,0,218,17,95,82,65,87,95,77,65,71,73,67,95,78, + 85,77,66,69,82,114,184,0,0,0,114,182,0,0,0,114, + 143,0,0,0,114,176,0,0,0,114,160,0,0,0,114,175, + 0,0,0,114,191,0,0,0,114,2,1,0,0,114,22,0, + 0,0,218,19,100,111,110,116,95,119,114,105,116,101,95,98, + 121,116,101,99,111,100,101,114,197,0,0,0,114,196,0,0, + 0,114,7,0,0,0,114,251,0,0,0,41,15,114,144,0, + 0,0,114,165,0,0,0,114,135,0,0,0,114,180,0,0, + 0,114,200,0,0,0,114,183,0,0,0,90,10,104,97,115, + 104,95,98,97,115,101,100,90,12,99,104,101,99,107,95,115, + 111,117,114,99,101,114,133,0,0,0,218,2,115,116,114,44, + 0,0,0,114,177,0,0,0,114,23,0,0,0,90,10,98, + 121,116,101,115,95,100,97,116,97,90,11,99,111,100,101,95, + 111,98,106,101,99,116,114,11,0,0,0,114,11,0,0,0, + 114,12,0,0,0,114,238,0,0,0,165,3,0,0,115,152, + 0,0,0,0,7,10,1,4,1,4,1,4,1,4,1,4, + 1,2,1,12,1,12,1,12,2,2,1,14,1,12,1,8, + 2,12,1,2,1,14,1,12,1,6,3,2,1,2,254,6, + 4,2,1,12,1,16,1,12,1,6,1,12,1,12,1,2, + 255,2,2,8,254,4,3,10,1,4,1,2,1,2,254,4, + 4,8,1,2,255,6,3,2,1,2,1,2,1,6,1,2, + 1,2,251,8,7,18,1,6,2,8,1,2,255,4,2,6, + 1,2,1,2,254,6,3,10,1,10,1,12,1,12,1,18, + 1,6,255,4,2,6,1,10,1,10,1,14,2,6,1,6, + 255,4,2,2,1,18,1,14,1,6,1,122,21,83,111,117, + 114,99,101,76,111,97,100,101,114,46,103,101,116,95,99,111, + 100,101,78,41,10,114,151,0,0,0,114,150,0,0,0,114, + 152,0,0,0,114,248,0,0,0,114,249,0,0,0,114,251, + 0,0,0,114,250,0,0,0,114,254,0,0,0,114,2,1, + 0,0,114,238,0,0,0,114,11,0,0,0,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,114,246,0,0,0, + 106,3,0,0,115,14,0,0,0,8,2,8,8,8,14,8, + 10,8,7,8,10,14,8,114,246,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,0,0,0,0,115,124,0,0,0,101,0,90,1,100,0, + 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4, + 100,5,132,0,90,5,100,6,100,7,132,0,90,6,101,7, + 135,0,102,1,100,8,100,9,132,8,131,1,90,8,101,7, + 100,10,100,11,132,0,131,1,90,9,100,12,100,13,132,0, + 90,10,101,7,100,14,100,15,132,0,131,1,90,11,100,16, + 100,17,132,0,90,12,100,18,100,19,132,0,90,13,100,20, + 100,21,132,0,90,14,100,22,100,23,132,0,90,15,135,0, + 4,0,90,16,83,0,41,24,218,10,70,105,108,101,76,111, + 97,100,101,114,122,103,66,97,115,101,32,102,105,108,101,32, + 108,111,97,100,101,114,32,99,108,97,115,115,32,119,104,105, + 99,104,32,105,109,112,108,101,109,101,110,116,115,32,116,104, + 101,32,108,111,97,100,101,114,32,112,114,111,116,111,99,111, + 108,32,109,101,116,104,111,100,115,32,116,104,97,116,10,32, + 32,32,32,114,101,113,117,105,114,101,32,102,105,108,101,32, + 115,121,115,116,101,109,32,117,115,97,103,101,46,99,3,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0, + 0,0,67,0,0,0,115,16,0,0,0,124,1,124,0,95, + 0,124,2,124,0,95,1,100,1,83,0,41,2,122,75,67, + 97,99,104,101,32,116,104,101,32,109,111,100,117,108,101,32, + 110,97,109,101,32,97,110,100,32,116,104,101,32,112,97,116, + 104,32,116,111,32,116,104,101,32,102,105,108,101,32,102,111, + 117,110,100,32,98,121,32,116,104,101,10,32,32,32,32,32, + 32,32,32,102,105,110,100,101,114,46,78,114,185,0,0,0, + 41,3,114,144,0,0,0,114,165,0,0,0,114,66,0,0, + 0,114,11,0,0,0,114,11,0,0,0,114,12,0,0,0, + 114,234,0,0,0,255,3,0,0,115,4,0,0,0,0,3, + 6,1,122,19,70,105,108,101,76,111,97,100,101,114,46,95, + 95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0, + 115,24,0,0,0,124,0,106,0,124,1,106,0,107,2,111, + 22,124,0,106,1,124,1,106,1,107,2,83,0,114,70,0, + 0,0,169,2,218,9,95,95,99,108,97,115,115,95,95,114, + 157,0,0,0,169,2,114,144,0,0,0,90,5,111,116,104, + 101,114,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,218,6,95,95,101,113,95,95,5,4,0,0,115,6,0, + 0,0,0,1,12,1,10,255,122,17,70,105,108,101,76,111, + 97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,20,0,0,0,116,0,124,0,106,1,131, + 1,116,0,124,0,106,2,131,1,65,0,83,0,114,70,0, + 0,0,169,3,218,4,104,97,115,104,114,142,0,0,0,114, + 66,0,0,0,169,1,114,144,0,0,0,114,11,0,0,0, + 114,11,0,0,0,114,12,0,0,0,218,8,95,95,104,97, + 115,104,95,95,9,4,0,0,115,2,0,0,0,0,1,122, + 19,70,105,108,101,76,111,97,100,101,114,46,95,95,104,97, + 115,104,95,95,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,3,0,0,0,115,16,0, + 0,0,116,0,116,1,124,0,131,2,160,2,124,1,161,1, + 83,0,41,1,122,100,76,111,97,100,32,97,32,109,111,100, + 117,108,101,32,102,114,111,109,32,97,32,102,105,108,101,46, + 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109, + 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, + 116,101,100,46,32,32,85,115,101,32,101,120,101,99,95,109, + 111,100,117,108,101,40,41,32,105,110,115,116,101,97,100,46, + 10,10,32,32,32,32,32,32,32,32,41,3,218,5,115,117, + 112,101,114,114,8,1,0,0,114,245,0,0,0,114,244,0, + 0,0,169,1,114,10,1,0,0,114,11,0,0,0,114,12, + 0,0,0,114,245,0,0,0,12,4,0,0,115,2,0,0, + 0,0,10,122,22,70,105,108,101,76,111,97,100,101,114,46, + 108,111,97,100,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, + 67,0,0,0,115,6,0,0,0,124,0,106,0,83,0,169, + 1,122,58,82,101,116,117,114,110,32,116,104,101,32,112,97, + 116,104,32,116,111,32,116,104,101,32,115,111,117,114,99,101, + 32,102,105,108,101,32,97,115,32,102,111,117,110,100,32,98, + 121,32,116,104,101,32,102,105,110,100,101,114,46,114,72,0, + 0,0,114,244,0,0,0,114,11,0,0,0,114,11,0,0, + 0,114,12,0,0,0,114,205,0,0,0,24,4,0,0,115, + 2,0,0,0,0,3,122,23,70,105,108,101,76,111,97,100, + 101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 8,0,0,0,67,0,0,0,115,126,0,0,0,116,0,124, + 0,116,1,116,2,102,2,131,2,114,70,116,3,160,4,116, + 5,124,1,131,1,161,1,143,24,125,2,124,2,160,6,161, + 0,87,0,2,0,100,1,4,0,4,0,131,3,1,0,83, + 0,49,0,115,58,48,0,1,0,1,0,1,0,89,0,1, + 0,110,52,116,3,160,7,124,1,100,2,161,2,143,24,125, + 2,124,2,160,6,161,0,87,0,2,0,100,1,4,0,4, + 0,131,3,1,0,83,0,49,0,115,112,48,0,1,0,1, + 0,1,0,89,0,1,0,100,1,83,0,41,3,122,39,82, + 101,116,117,114,110,32,116,104,101,32,100,97,116,97,32,102, + 114,111,109,32,112,97,116,104,32,97,115,32,114,97,119,32, + 98,121,116,101,115,46,78,218,1,114,41,8,114,187,0,0, + 0,114,246,0,0,0,218,19,69,120,116,101,110,115,105,111, + 110,70,105,108,101,76,111,97,100,101,114,114,93,0,0,0, + 90,9,111,112,101,110,95,99,111,100,101,114,111,0,0,0, + 90,4,114,101,97,100,114,94,0,0,0,41,3,114,144,0, + 0,0,114,66,0,0,0,114,96,0,0,0,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,114,252,0,0,0, + 29,4,0,0,115,10,0,0,0,0,2,14,1,16,1,40, + 2,14,1,122,19,70,105,108,101,76,111,97,100,101,114,46, + 103,101,116,95,100,97,116,97,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,0, + 0,115,18,0,0,0,124,0,160,0,124,1,161,1,114,14, + 124,0,83,0,100,0,83,0,114,70,0,0,0,41,1,114, + 208,0,0,0,169,2,114,144,0,0,0,114,241,0,0,0, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 19,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, + 97,100,101,114,40,4,0,0,115,6,0,0,0,0,2,10, + 1,4,1,122,30,70,105,108,101,76,111,97,100,101,114,46, + 103,101,116,95,114,101,115,111,117,114,99,101,95,114,101,97, + 100,101,114,99,2,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,4,0,0,0,67,0,0,0,115,32,0,0, + 0,116,0,116,1,124,0,106,2,131,1,100,1,25,0,124, + 1,131,2,125,2,116,3,160,4,124,2,100,2,161,2,83, + 0,41,3,78,114,0,0,0,0,114,20,1,0,0,41,5, + 114,68,0,0,0,114,75,0,0,0,114,66,0,0,0,114, + 93,0,0,0,114,94,0,0,0,169,3,114,144,0,0,0, + 90,8,114,101,115,111,117,114,99,101,114,66,0,0,0,114, + 11,0,0,0,114,11,0,0,0,114,12,0,0,0,218,13, + 111,112,101,110,95,114,101,115,111,117,114,99,101,46,4,0, + 0,115,4,0,0,0,0,1,20,1,122,24,70,105,108,101, + 76,111,97,100,101,114,46,111,112,101,110,95,114,101,115,111, + 117,114,99,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,3,0,0,0,67,0,0,0,115,38,0, + 0,0,124,0,160,0,124,1,161,1,115,14,116,1,130,1, + 116,2,116,3,124,0,106,4,131,1,100,1,25,0,124,1, + 131,2,125,2,124,2,83,0,169,2,78,114,0,0,0,0, + 41,5,218,11,105,115,95,114,101,115,111,117,114,99,101,218, + 17,70,105,108,101,78,111,116,70,111,117,110,100,69,114,114, + 111,114,114,68,0,0,0,114,75,0,0,0,114,66,0,0, + 0,114,24,1,0,0,114,11,0,0,0,114,11,0,0,0, + 114,12,0,0,0,218,13,114,101,115,111,117,114,99,101,95, + 112,97,116,104,50,4,0,0,115,8,0,0,0,0,1,10, + 1,4,1,20,1,122,24,70,105,108,101,76,111,97,100,101, + 114,46,114,101,115,111,117,114,99,101,95,112,97,116,104,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,67,0,0,0,115,40,0,0,0,116,0,124, + 1,118,0,114,12,100,1,83,0,116,1,116,2,124,0,106, + 3,131,1,100,2,25,0,124,1,131,2,125,2,116,4,124, + 2,131,1,83,0,41,3,78,70,114,0,0,0,0,41,5, + 114,60,0,0,0,114,68,0,0,0,114,75,0,0,0,114, + 66,0,0,0,114,81,0,0,0,169,3,114,144,0,0,0, + 114,142,0,0,0,114,66,0,0,0,114,11,0,0,0,114, + 11,0,0,0,114,12,0,0,0,114,27,1,0,0,56,4, + 0,0,115,8,0,0,0,0,1,8,1,4,1,20,1,122, + 22,70,105,108,101,76,111,97,100,101,114,46,105,115,95,114, + 101,115,111,117,114,99,101,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,5,0,0,0,67,0,0,0, + 115,24,0,0,0,116,0,116,1,160,2,116,3,124,0,106, + 4,131,1,100,1,25,0,161,1,131,1,83,0,114,26,1, + 0,0,41,5,218,4,105,116,101,114,114,25,0,0,0,218, + 7,108,105,115,116,100,105,114,114,75,0,0,0,114,66,0, + 0,0,114,15,1,0,0,114,11,0,0,0,114,11,0,0, + 0,114,12,0,0,0,218,8,99,111,110,116,101,110,116,115, + 62,4,0,0,115,2,0,0,0,0,1,122,19,70,105,108, + 101,76,111,97,100,101,114,46,99,111,110,116,101,110,116,115, + 41,17,114,151,0,0,0,114,150,0,0,0,114,152,0,0, + 0,114,153,0,0,0,114,234,0,0,0,114,12,1,0,0, + 114,16,1,0,0,114,162,0,0,0,114,245,0,0,0,114, + 205,0,0,0,114,252,0,0,0,114,23,1,0,0,114,25, + 1,0,0,114,29,1,0,0,114,27,1,0,0,114,33,1, + 0,0,90,13,95,95,99,108,97,115,115,99,101,108,108,95, + 95,114,11,0,0,0,114,11,0,0,0,114,18,1,0,0, + 114,12,0,0,0,114,8,1,0,0,250,3,0,0,115,30, + 0,0,0,8,2,4,3,8,6,8,4,8,3,2,1,14, + 11,2,1,10,4,8,11,2,1,10,5,8,4,8,6,8, + 6,114,8,1,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, + 46,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5, + 100,6,100,7,156,1,100,8,100,9,132,2,90,6,100,10, + 83,0,41,11,218,16,83,111,117,114,99,101,70,105,108,101, + 76,111,97,100,101,114,122,62,67,111,110,99,114,101,116,101, + 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32, + 111,102,32,83,111,117,114,99,101,76,111,97,100,101,114,32, + 117,115,105,110,103,32,116,104,101,32,102,105,108,101,32,115, + 121,115,116,101,109,46,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,115, + 22,0,0,0,116,0,124,1,131,1,125,2,124,2,106,1, + 124,2,106,2,100,1,156,2,83,0,41,2,122,33,82,101, + 116,117,114,110,32,116,104,101,32,109,101,116,97,100,97,116, + 97,32,102,111,114,32,116,104,101,32,112,97,116,104,46,41, + 2,114,195,0,0,0,114,3,1,0,0,41,3,114,76,0, + 0,0,218,8,115,116,95,109,116,105,109,101,90,7,115,116, + 95,115,105,122,101,41,3,114,144,0,0,0,114,66,0,0, + 0,114,7,1,0,0,114,11,0,0,0,114,11,0,0,0, + 114,12,0,0,0,114,249,0,0,0,70,4,0,0,115,4, + 0,0,0,0,2,8,1,122,27,83,111,117,114,99,101,70, + 105,108,101,76,111,97,100,101,114,46,112,97,116,104,95,115, + 116,97,116,115,99,4,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,5,0,0,0,67,0,0,0,115,24,0, + 0,0,116,0,124,1,131,1,125,4,124,0,106,1,124,2, + 124,3,124,4,100,1,141,3,83,0,41,2,78,169,1,218, + 5,95,109,111,100,101,41,2,114,140,0,0,0,114,250,0, + 0,0,41,5,114,144,0,0,0,114,135,0,0,0,114,133, + 0,0,0,114,44,0,0,0,114,79,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,114,251,0,0, + 0,75,4,0,0,115,4,0,0,0,0,2,8,1,122,32, + 83,111,117,114,99,101,70,105,108,101,76,111,97,100,101,114, + 46,95,99,97,99,104,101,95,98,121,116,101,99,111,100,101, + 114,89,0,0,0,114,36,1,0,0,99,3,0,0,0,0, + 0,0,0,1,0,0,0,9,0,0,0,11,0,0,0,67, + 0,0,0,115,252,0,0,0,116,0,124,1,131,1,92,2, + 125,4,125,5,103,0,125,6,124,4,114,52,116,1,124,4, + 131,1,115,52,116,0,124,4,131,1,92,2,125,4,125,7, + 124,6,160,2,124,7,161,1,1,0,113,16,116,3,124,6, + 131,1,68,0,93,104,125,7,116,4,124,4,124,7,131,2, + 125,4,122,14,116,5,160,6,124,4,161,1,1,0,87,0, + 113,60,4,0,116,7,121,110,1,0,1,0,1,0,89,0, + 113,60,89,0,113,60,4,0,116,8,121,162,1,0,125,8, + 1,0,122,30,116,9,160,10,100,1,124,4,124,8,161,3, + 1,0,87,0,89,0,100,2,125,8,126,8,1,0,100,2, + 83,0,100,2,125,8,126,8,48,0,48,0,113,60,122,28, + 116,11,124,1,124,2,124,3,131,3,1,0,116,9,160,10, + 100,3,124,1,161,2,1,0,87,0,110,52,4,0,116,8, + 144,0,121,246,1,0,125,8,1,0,122,26,116,9,160,10, + 100,1,124,1,124,8,161,3,1,0,87,0,89,0,100,2, + 125,8,126,8,110,10,100,2,125,8,126,8,48,0,48,0, + 100,2,83,0,41,4,122,27,87,114,105,116,101,32,98,121, + 116,101,115,32,100,97,116,97,32,116,111,32,97,32,102,105, + 108,101,46,122,27,99,111,117,108,100,32,110,111,116,32,99, + 114,101,97,116,101,32,123,33,114,125,58,32,123,33,114,125, + 78,122,12,99,114,101,97,116,101,100,32,123,33,114,125,41, + 12,114,75,0,0,0,114,83,0,0,0,114,62,0,0,0, + 218,8,114,101,118,101,114,115,101,100,114,68,0,0,0,114, + 25,0,0,0,90,5,109,107,100,105,114,218,15,70,105,108, + 101,69,120,105,115,116,115,69,114,114,111,114,114,77,0,0, + 0,114,160,0,0,0,114,175,0,0,0,114,97,0,0,0, + 41,9,114,144,0,0,0,114,66,0,0,0,114,44,0,0, + 0,114,37,1,0,0,218,6,112,97,114,101,110,116,114,122, + 0,0,0,114,64,0,0,0,114,69,0,0,0,114,253,0, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,114,250,0,0,0,80,4,0,0,115,46,0,0,0,0, + 2,12,1,4,2,12,1,12,1,12,2,12,1,10,1,2, + 1,14,1,12,2,8,1,14,3,6,1,4,255,4,2,28, + 1,2,1,12,1,16,1,16,2,8,1,2,255,122,25,83, + 111,117,114,99,101,70,105,108,101,76,111,97,100,101,114,46, + 115,101,116,95,100,97,116,97,78,41,7,114,151,0,0,0, + 114,150,0,0,0,114,152,0,0,0,114,153,0,0,0,114, + 249,0,0,0,114,251,0,0,0,114,250,0,0,0,114,11, + 0,0,0,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,114,34,1,0,0,66,4,0,0,115,8,0,0,0, + 8,2,4,2,8,5,8,5,114,34,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,64,0,0,0,115,32,0,0,0,101,0,90,1,100, + 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, + 4,100,5,132,0,90,5,100,6,83,0,41,7,218,20,83, + 111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,97, + 100,101,114,122,45,76,111,97,100,101,114,32,119,104,105,99, + 104,32,104,97,110,100,108,101,115,32,115,111,117,114,99,101, + 108,101,115,115,32,102,105,108,101,32,105,109,112,111,114,116, + 115,46,99,2,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,5,0,0,0,67,0,0,0,115,68,0,0,0, + 124,0,160,0,124,1,161,1,125,2,124,0,160,1,124,2, + 161,1,125,3,124,1,124,2,100,1,156,2,125,4,116,2, + 124,3,124,1,124,4,131,3,1,0,116,3,116,4,124,3, + 131,1,100,2,100,0,133,2,25,0,124,1,124,2,100,3, + 141,3,83,0,41,4,78,114,185,0,0,0,114,171,0,0, + 0,41,2,114,142,0,0,0,114,133,0,0,0,41,5,114, + 205,0,0,0,114,252,0,0,0,114,178,0,0,0,114,191, + 0,0,0,114,4,1,0,0,41,5,114,144,0,0,0,114, + 165,0,0,0,114,66,0,0,0,114,44,0,0,0,114,177, + 0,0,0,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,114,238,0,0,0,115,4,0,0,115,22,0,0,0, + 0,1,10,1,10,4,2,1,2,254,6,4,12,1,2,1, + 14,1,2,1,2,253,122,29,83,111,117,114,99,101,108,101, + 115,115,70,105,108,101,76,111,97,100,101,114,46,103,101,116, + 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,4, + 0,0,0,100,1,83,0,41,2,122,39,82,101,116,117,114, + 110,32,78,111,110,101,32,97,115,32,116,104,101,114,101,32, + 105,115,32,110,111,32,115,111,117,114,99,101,32,99,111,100, + 101,46,78,114,11,0,0,0,114,244,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,114,254,0,0, + 0,131,4,0,0,115,2,0,0,0,0,2,122,31,83,111, + 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100, + 101,114,46,103,101,116,95,115,111,117,114,99,101,78,41,6, + 114,151,0,0,0,114,150,0,0,0,114,152,0,0,0,114, + 153,0,0,0,114,238,0,0,0,114,254,0,0,0,114,11, + 0,0,0,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,114,41,1,0,0,111,4,0,0,115,6,0,0,0, + 8,2,4,2,8,16,114,41,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 64,0,0,0,115,92,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, + 5,132,0,90,5,100,6,100,7,132,0,90,6,100,8,100, + 9,132,0,90,7,100,10,100,11,132,0,90,8,100,12,100, + 13,132,0,90,9,100,14,100,15,132,0,90,10,100,16,100, + 17,132,0,90,11,101,12,100,18,100,19,132,0,131,1,90, + 13,100,20,83,0,41,21,114,21,1,0,0,122,93,76,111, + 97,100,101,114,32,102,111,114,32,101,120,116,101,110,115,105, + 111,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,84,104,101,32,99,111,110,115,116,114,117,99,116,111,114, + 32,105,115,32,100,101,115,105,103,110,101,100,32,116,111,32, + 119,111,114,107,32,119,105,116,104,32,70,105,108,101,70,105, + 110,100,101,114,46,10,10,32,32,32,32,99,3,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0, + 67,0,0,0,115,16,0,0,0,124,1,124,0,95,0,124, + 2,124,0,95,1,100,0,83,0,114,70,0,0,0,114,185, + 0,0,0,114,30,1,0,0,114,11,0,0,0,114,11,0, + 0,0,114,12,0,0,0,114,234,0,0,0,148,4,0,0, + 115,4,0,0,0,0,1,6,1,122,28,69,120,116,101,110, + 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,95, + 95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0, + 115,24,0,0,0,124,0,106,0,124,1,106,0,107,2,111, + 22,124,0,106,1,124,1,106,1,107,2,83,0,114,70,0, + 0,0,114,9,1,0,0,114,11,1,0,0,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,114,12,1,0,0, + 152,4,0,0,115,6,0,0,0,0,1,12,1,10,255,122, + 26,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,20,0,0,0,116,0,124,0,106,1,131, + 1,116,0,124,0,106,2,131,1,65,0,83,0,114,70,0, + 0,0,114,13,1,0,0,114,15,1,0,0,114,11,0,0, + 0,114,11,0,0,0,114,12,0,0,0,114,16,1,0,0, + 156,4,0,0,115,2,0,0,0,0,1,122,28,69,120,116, + 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, + 46,95,95,104,97,115,104,95,95,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,5,0,0,0,67,0, + 0,0,115,36,0,0,0,116,0,160,1,116,2,106,3,124, + 1,161,2,125,2,116,0,160,4,100,1,124,1,106,5,124, + 0,106,6,161,3,1,0,124,2,83,0,41,2,122,38,67, + 114,101,97,116,101,32,97,110,32,117,110,105,116,105,97,108, + 105,122,101,100,32,101,120,116,101,110,115,105,111,110,32,109, + 111,100,117,108,101,122,38,101,120,116,101,110,115,105,111,110, + 32,109,111,100,117,108,101,32,123,33,114,125,32,108,111,97, + 100,101,100,32,102,114,111,109,32,123,33,114,125,41,7,114, + 160,0,0,0,114,239,0,0,0,114,189,0,0,0,90,14, + 99,114,101,97,116,101,95,100,121,110,97,109,105,99,114,175, + 0,0,0,114,142,0,0,0,114,66,0,0,0,41,3,114, + 144,0,0,0,114,212,0,0,0,114,241,0,0,0,114,11, + 0,0,0,114,11,0,0,0,114,12,0,0,0,114,237,0, + 0,0,159,4,0,0,115,14,0,0,0,0,2,4,1,6, + 255,4,2,6,1,8,255,4,2,122,33,69,120,116,101,110, + 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,99, + 114,101,97,116,101,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0, + 0,67,0,0,0,115,36,0,0,0,116,0,160,1,116,2, + 106,3,124,1,161,2,1,0,116,0,160,4,100,1,124,0, + 106,5,124,0,106,6,161,3,1,0,100,2,83,0,41,3, + 122,30,73,110,105,116,105,97,108,105,122,101,32,97,110,32, + 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, + 122,40,101,120,116,101,110,115,105,111,110,32,109,111,100,117, + 108,101,32,123,33,114,125,32,101,120,101,99,117,116,101,100, + 32,102,114,111,109,32,123,33,114,125,78,41,7,114,160,0, + 0,0,114,239,0,0,0,114,189,0,0,0,90,12,101,120, + 101,99,95,100,121,110,97,109,105,99,114,175,0,0,0,114, + 142,0,0,0,114,66,0,0,0,114,22,1,0,0,114,11, + 0,0,0,114,11,0,0,0,114,12,0,0,0,114,242,0, + 0,0,167,4,0,0,115,8,0,0,0,0,2,14,1,6, + 1,8,255,122,31,69,120,116,101,110,115,105,111,110,70,105, + 108,101,76,111,97,100,101,114,46,101,120,101,99,95,109,111, + 100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,4,0,0,0,3,0,0,0,115,36,0, + 0,0,116,0,124,0,106,1,131,1,100,1,25,0,137,0, + 116,2,135,0,102,1,100,2,100,3,132,8,116,3,68,0, + 131,1,131,1,83,0,41,4,122,49,82,101,116,117,114,110, + 32,84,114,117,101,32,105,102,32,116,104,101,32,101,120,116, + 101,110,115,105,111,110,32,109,111,100,117,108,101,32,105,115, + 32,97,32,112,97,99,107,97,103,101,46,114,5,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,51,0,0,0,115,26,0,0,0,124,0, + 93,18,125,1,136,0,100,0,124,1,23,0,107,2,86,0, + 1,0,113,2,100,1,83,0,41,2,114,234,0,0,0,78, + 114,11,0,0,0,169,2,114,9,0,0,0,218,6,115,117, + 102,102,105,120,169,1,90,9,102,105,108,101,95,110,97,109, + 101,114,11,0,0,0,114,12,0,0,0,114,13,0,0,0, + 176,4,0,0,115,4,0,0,0,4,1,2,255,122,49,69, + 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, + 101,114,46,105,115,95,112,97,99,107,97,103,101,46,60,108, + 111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,62, + 41,4,114,75,0,0,0,114,66,0,0,0,218,3,97,110, + 121,218,18,69,88,84,69,78,83,73,79,78,95,83,85,70, + 70,73,88,69,83,114,244,0,0,0,114,11,0,0,0,114, + 44,1,0,0,114,12,0,0,0,114,208,0,0,0,173,4, + 0,0,115,8,0,0,0,0,2,14,1,12,1,2,255,122, + 30,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83, + 0,41,2,122,63,82,101,116,117,114,110,32,78,111,110,101, + 32,97,115,32,97,110,32,101,120,116,101,110,115,105,111,110, + 32,109,111,100,117,108,101,32,99,97,110,110,111,116,32,99, + 114,101,97,116,101,32,97,32,99,111,100,101,32,111,98,106, + 101,99,116,46,78,114,11,0,0,0,114,244,0,0,0,114, + 11,0,0,0,114,11,0,0,0,114,12,0,0,0,114,238, + 0,0,0,179,4,0,0,115,2,0,0,0,0,2,122,28, + 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, + 100,101,114,46,103,101,116,95,99,111,100,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, + 0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,2, + 122,53,82,101,116,117,114,110,32,78,111,110,101,32,97,115, + 32,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108, + 101,115,32,104,97,118,101,32,110,111,32,115,111,117,114,99, + 101,32,99,111,100,101,46,78,114,11,0,0,0,114,244,0, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,114,254,0,0,0,183,4,0,0,115,2,0,0,0,0, + 2,122,30,69,120,116,101,110,115,105,111,110,70,105,108,101, + 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,1,0,0,0,67,0,0,0,115,6,0,0,0,124, + 0,106,0,83,0,114,19,1,0,0,114,72,0,0,0,114, + 244,0,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,205,0,0,0,187,4,0,0,115,2,0,0, + 0,0,3,122,32,69,120,116,101,110,115,105,111,110,70,105, + 108,101,76,111,97,100,101,114,46,103,101,116,95,102,105,108, + 101,110,97,109,101,78,41,14,114,151,0,0,0,114,150,0, + 0,0,114,152,0,0,0,114,153,0,0,0,114,234,0,0, + 0,114,12,1,0,0,114,16,1,0,0,114,237,0,0,0, + 114,242,0,0,0,114,208,0,0,0,114,238,0,0,0,114, + 254,0,0,0,114,162,0,0,0,114,205,0,0,0,114,11, + 0,0,0,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,114,21,1,0,0,140,4,0,0,115,22,0,0,0, + 8,2,4,6,8,4,8,4,8,3,8,8,8,6,8,6, + 8,4,8,4,2,1,114,21,1,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 64,0,0,0,115,104,0,0,0,101,0,90,1,100,0,90, + 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, + 5,132,0,90,5,100,6,100,7,132,0,90,6,100,8,100, + 9,132,0,90,7,100,10,100,11,132,0,90,8,100,12,100, + 13,132,0,90,9,100,14,100,15,132,0,90,10,100,16,100, + 17,132,0,90,11,100,18,100,19,132,0,90,12,100,20,100, + 21,132,0,90,13,100,22,100,23,132,0,90,14,100,24,83, + 0,41,25,218,14,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,97,38,1,0,0,82,101,112,114,101,115,101,110, + 116,115,32,97,32,110,97,109,101,115,112,97,99,101,32,112, + 97,99,107,97,103,101,39,115,32,112,97,116,104,46,32,32, + 73,116,32,117,115,101,115,32,116,104,101,32,109,111,100,117, + 108,101,32,110,97,109,101,10,32,32,32,32,116,111,32,102, + 105,110,100,32,105,116,115,32,112,97,114,101,110,116,32,109, + 111,100,117,108,101,44,32,97,110,100,32,102,114,111,109,32, + 116,104,101,114,101,32,105,116,32,108,111,111,107,115,32,117, + 112,32,116,104,101,32,112,97,114,101,110,116,39,115,10,32, + 32,32,32,95,95,112,97,116,104,95,95,46,32,32,87,104, + 101,110,32,116,104,105,115,32,99,104,97,110,103,101,115,44, + 32,116,104,101,32,109,111,100,117,108,101,39,115,32,111,119, + 110,32,112,97,116,104,32,105,115,32,114,101,99,111,109,112, + 117,116,101,100,44,10,32,32,32,32,117,115,105,110,103,32, + 112,97,116,104,95,102,105,110,100,101,114,46,32,32,70,111, + 114,32,116,111,112,45,108,101,118,101,108,32,109,111,100,117, + 108,101,115,44,32,116,104,101,32,112,97,114,101,110,116,32, + 109,111,100,117,108,101,39,115,32,112,97,116,104,10,32,32, + 32,32,105,115,32,115,121,115,46,112,97,116,104,46,99,4, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, + 0,0,0,67,0,0,0,115,36,0,0,0,124,1,124,0, + 95,0,124,2,124,0,95,1,116,2,124,0,160,3,161,0, + 131,1,124,0,95,4,124,3,124,0,95,5,100,0,83,0, + 114,70,0,0,0,41,6,218,5,95,110,97,109,101,218,5, + 95,112,97,116,104,114,137,0,0,0,218,16,95,103,101,116, + 95,112,97,114,101,110,116,95,112,97,116,104,218,17,95,108, + 97,115,116,95,112,97,114,101,110,116,95,112,97,116,104,218, + 12,95,112,97,116,104,95,102,105,110,100,101,114,169,4,114, + 144,0,0,0,114,142,0,0,0,114,66,0,0,0,90,11, + 112,97,116,104,95,102,105,110,100,101,114,114,11,0,0,0, + 114,11,0,0,0,114,12,0,0,0,114,234,0,0,0,200, + 4,0,0,115,8,0,0,0,0,1,6,1,6,1,14,1, + 122,23,95,78,97,109,101,115,112,97,99,101,80,97,116,104, + 46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,0, + 0,0,115,38,0,0,0,124,0,106,0,160,1,100,1,161, + 1,92,3,125,1,125,2,125,3,124,2,100,2,107,2,114, + 30,100,3,83,0,124,1,100,4,102,2,83,0,41,5,122, + 62,82,101,116,117,114,110,115,32,97,32,116,117,112,108,101, + 32,111,102,32,40,112,97,114,101,110,116,45,109,111,100,117, + 108,101,45,110,97,109,101,44,32,112,97,114,101,110,116,45, + 112,97,116,104,45,97,116,116,114,45,110,97,109,101,41,114, + 99,0,0,0,114,15,0,0,0,41,2,114,22,0,0,0, + 114,66,0,0,0,90,8,95,95,112,97,116,104,95,95,41, + 2,114,48,1,0,0,114,106,0,0,0,41,4,114,144,0, + 0,0,114,40,1,0,0,218,3,100,111,116,90,2,109,101, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 23,95,102,105,110,100,95,112,97,114,101,110,116,95,112,97, + 116,104,95,110,97,109,101,115,206,4,0,0,115,8,0,0, + 0,0,2,18,1,8,2,4,3,122,38,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,95,102,105,110,100,95, + 112,97,114,101,110,116,95,112,97,116,104,95,110,97,109,101, + 115,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,67,0,0,0,115,28,0,0,0,124, + 0,160,0,161,0,92,2,125,1,125,2,116,1,116,2,106, + 3,124,1,25,0,124,2,131,2,83,0,114,70,0,0,0, + 41,4,114,55,1,0,0,114,156,0,0,0,114,22,0,0, + 0,218,7,109,111,100,117,108,101,115,41,3,114,144,0,0, + 0,90,18,112,97,114,101,110,116,95,109,111,100,117,108,101, + 95,110,97,109,101,90,14,112,97,116,104,95,97,116,116,114, + 95,110,97,109,101,114,11,0,0,0,114,11,0,0,0,114, + 12,0,0,0,114,50,1,0,0,216,4,0,0,115,4,0, + 0,0,0,1,12,1,122,31,95,78,97,109,101,115,112,97, + 99,101,80,97,116,104,46,95,103,101,116,95,112,97,114,101, + 110,116,95,112,97,116,104,99,1,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, + 115,80,0,0,0,116,0,124,0,160,1,161,0,131,1,125, + 1,124,1,124,0,106,2,107,3,114,74,124,0,160,3,124, + 0,106,4,124,1,161,2,125,2,124,2,100,0,117,1,114, + 68,124,2,106,5,100,0,117,0,114,68,124,2,106,6,114, + 68,124,2,106,6,124,0,95,7,124,1,124,0,95,2,124, + 0,106,7,83,0,114,70,0,0,0,41,8,114,137,0,0, + 0,114,50,1,0,0,114,51,1,0,0,114,52,1,0,0, + 114,48,1,0,0,114,166,0,0,0,114,204,0,0,0,114, + 49,1,0,0,41,3,114,144,0,0,0,90,11,112,97,114, + 101,110,116,95,112,97,116,104,114,212,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,218,12,95,114, + 101,99,97,108,99,117,108,97,116,101,220,4,0,0,115,16, + 0,0,0,0,2,12,1,10,1,14,3,18,1,6,1,8, + 1,6,1,122,27,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,46,95,114,101,99,97,108,99,117,108,97,116,101, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,67,0,0,0,115,12,0,0,0,116,0, + 124,0,160,1,161,0,131,1,83,0,114,70,0,0,0,41, + 2,114,31,1,0,0,114,57,1,0,0,114,15,1,0,0, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 8,95,95,105,116,101,114,95,95,233,4,0,0,115,2,0, + 0,0,0,1,122,23,95,78,97,109,101,115,112,97,99,101, + 80,97,116,104,46,95,95,105,116,101,114,95,95,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, + 0,0,67,0,0,0,115,12,0,0,0,124,0,160,0,161, + 0,124,1,25,0,83,0,114,70,0,0,0,169,1,114,57, + 1,0,0,41,2,114,144,0,0,0,218,5,105,110,100,101, + 120,114,11,0,0,0,114,11,0,0,0,114,12,0,0,0, + 218,11,95,95,103,101,116,105,116,101,109,95,95,236,4,0, + 0,115,2,0,0,0,0,1,122,26,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,46,95,95,103,101,116,105,116, + 101,109,95,95,99,3,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,3,0,0,0,67,0,0,0,115,14,0, + 0,0,124,2,124,0,106,0,124,1,60,0,100,0,83,0, + 114,70,0,0,0,41,1,114,49,1,0,0,41,3,114,144, + 0,0,0,114,60,1,0,0,114,66,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,218,11,95,95, + 115,101,116,105,116,101,109,95,95,239,4,0,0,115,2,0, + 0,0,0,1,122,26,95,78,97,109,101,115,112,97,99,101, + 80,97,116,104,46,95,95,115,101,116,105,116,101,109,95,95, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,3,0,0,0,67,0,0,0,115,12,0,0,0,116,0, + 124,0,160,1,161,0,131,1,83,0,114,70,0,0,0,41, + 2,114,7,0,0,0,114,57,1,0,0,114,15,1,0,0, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 7,95,95,108,101,110,95,95,242,4,0,0,115,2,0,0, + 0,0,1,122,22,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,46,95,95,108,101,110,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,12,0,0,0,100,1,160,0,124,0,106, + 1,161,1,83,0,41,2,78,122,20,95,78,97,109,101,115, + 112,97,99,101,80,97,116,104,40,123,33,114,125,41,41,2, + 114,91,0,0,0,114,49,1,0,0,114,15,1,0,0,114, + 11,0,0,0,114,11,0,0,0,114,12,0,0,0,218,8, + 95,95,114,101,112,114,95,95,245,4,0,0,115,2,0,0, + 0,0,1,122,23,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,46,95,95,114,101,112,114,95,95,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0, + 0,67,0,0,0,115,12,0,0,0,124,1,124,0,160,0, + 161,0,118,0,83,0,114,70,0,0,0,114,59,1,0,0, + 169,2,114,144,0,0,0,218,4,105,116,101,109,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,218,12,95,95, + 99,111,110,116,97,105,110,115,95,95,248,4,0,0,115,2, + 0,0,0,0,1,122,27,95,78,97,109,101,115,112,97,99, + 101,80,97,116,104,46,95,95,99,111,110,116,97,105,110,115, + 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,67,0,0,0,115,16,0,0,0, + 124,0,106,0,160,1,124,1,161,1,1,0,100,0,83,0, + 114,70,0,0,0,41,2,114,49,1,0,0,114,62,0,0, + 0,114,65,1,0,0,114,11,0,0,0,114,11,0,0,0, + 114,12,0,0,0,114,62,0,0,0,251,4,0,0,115,2, + 0,0,0,0,1,122,21,95,78,97,109,101,115,112,97,99, + 101,80,97,116,104,46,97,112,112,101,110,100,78,41,15,114, + 151,0,0,0,114,150,0,0,0,114,152,0,0,0,114,153, + 0,0,0,114,234,0,0,0,114,55,1,0,0,114,50,1, + 0,0,114,57,1,0,0,114,58,1,0,0,114,61,1,0, + 0,114,62,1,0,0,114,63,1,0,0,114,64,1,0,0, + 114,67,1,0,0,114,62,0,0,0,114,11,0,0,0,114, + 11,0,0,0,114,11,0,0,0,114,12,0,0,0,114,47, + 1,0,0,193,4,0,0,115,24,0,0,0,8,1,4,6, + 8,6,8,10,8,4,8,13,8,3,8,3,8,3,8,3, + 8,3,8,3,114,47,1,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0, + 0,0,115,80,0,0,0,101,0,90,1,100,0,90,2,100, + 1,100,2,132,0,90,3,101,4,100,3,100,4,132,0,131, + 1,90,5,100,5,100,6,132,0,90,6,100,7,100,8,132, + 0,90,7,100,9,100,10,132,0,90,8,100,11,100,12,132, + 0,90,9,100,13,100,14,132,0,90,10,100,15,100,16,132, + 0,90,11,100,17,83,0,41,18,218,16,95,78,97,109,101, + 115,112,97,99,101,76,111,97,100,101,114,99,4,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, + 67,0,0,0,115,18,0,0,0,116,0,124,1,124,2,124, + 3,131,3,124,0,95,1,100,0,83,0,114,70,0,0,0, + 41,2,114,47,1,0,0,114,49,1,0,0,114,53,1,0, + 0,114,11,0,0,0,114,11,0,0,0,114,12,0,0,0, + 114,234,0,0,0,1,5,0,0,115,2,0,0,0,0,1, + 122,25,95,78,97,109,101,115,112,97,99,101,76,111,97,100, + 101,114,46,95,95,105,110,105,116,95,95,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,12,0,0,0,100,1,160,0,124,1,106, + 1,161,1,83,0,41,2,122,115,82,101,116,117,114,110,32, + 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, + 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, + 101,115,32,116,104,101,32,106,111,98,32,105,116,115,101,108, + 102,46,10,10,32,32,32,32,32,32,32,32,122,25,60,109, + 111,100,117,108,101,32,123,33,114,125,32,40,110,97,109,101, + 115,112,97,99,101,41,62,41,2,114,91,0,0,0,114,151, + 0,0,0,41,2,114,218,0,0,0,114,241,0,0,0,114, + 11,0,0,0,114,11,0,0,0,114,12,0,0,0,218,11, + 109,111,100,117,108,101,95,114,101,112,114,4,5,0,0,115, + 2,0,0,0,0,7,122,28,95,78,97,109,101,115,112,97, + 99,101,76,111,97,100,101,114,46,109,111,100,117,108,101,95, + 114,101,112,114,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, + 0,0,100,1,83,0,41,2,78,84,114,11,0,0,0,114, + 244,0,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,208,0,0,0,13,5,0,0,115,2,0,0, + 0,0,1,122,27,95,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,46,105,115,95,112,97,99,107,97,103,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, + 83,0,41,2,78,114,15,0,0,0,114,11,0,0,0,114, + 244,0,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,254,0,0,0,16,5,0,0,115,2,0,0, + 0,0,1,122,27,95,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,46,103,101,116,95,115,111,117,114,99,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,6,0,0,0,67,0,0,0,115,16,0,0,0,116,0, + 100,1,100,2,100,3,100,4,100,5,141,4,83,0,41,6, + 78,114,15,0,0,0,122,8,60,115,116,114,105,110,103,62, + 114,240,0,0,0,84,41,1,114,0,1,0,0,41,1,114, + 1,1,0,0,114,244,0,0,0,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,114,238,0,0,0,19,5,0, + 0,115,2,0,0,0,0,1,122,25,95,78,97,109,101,115, + 112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,99, + 111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,83,0,114,235,0,0,0,114,11,0,0,0,114, + 236,0,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,237,0,0,0,22,5,0,0,115,2,0,0, + 0,0,1,122,30,95,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,46,99,114,101,97,116,101,95,109,111,100, + 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,0,83,0,114,70,0,0,0,114,11,0,0,0,114, + 22,1,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,242,0,0,0,25,5,0,0,115,2,0,0, + 0,0,1,122,28,95,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,46,101,120,101,99,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,4,0,0,0,67,0,0,0,115,26,0,0,0,116, + 0,160,1,100,1,124,0,106,2,161,2,1,0,116,0,160, + 3,124,0,124,1,161,2,83,0,41,2,122,98,76,111,97, + 100,32,97,32,110,97,109,101,115,112,97,99,101,32,109,111, + 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, + 116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,122, + 38,110,97,109,101,115,112,97,99,101,32,109,111,100,117,108, + 101,32,108,111,97,100,101,100,32,119,105,116,104,32,112,97, + 116,104,32,123,33,114,125,41,4,114,160,0,0,0,114,175, + 0,0,0,114,49,1,0,0,114,243,0,0,0,114,244,0, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,114,245,0,0,0,28,5,0,0,115,8,0,0,0,0, + 7,6,1,4,255,4,2,122,28,95,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,108,111,97,100,95,109, + 111,100,117,108,101,78,41,12,114,151,0,0,0,114,150,0, + 0,0,114,152,0,0,0,114,234,0,0,0,114,232,0,0, + 0,114,69,1,0,0,114,208,0,0,0,114,254,0,0,0, + 114,238,0,0,0,114,237,0,0,0,114,242,0,0,0,114, + 245,0,0,0,114,11,0,0,0,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,114,68,1,0,0,0,5,0, + 0,115,18,0,0,0,8,1,8,3,2,1,10,8,8,3, + 8,3,8,3,8,3,8,3,114,68,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,64,0,0,0,115,118,0,0,0,101,0,90,1,100, + 0,90,2,100,1,90,3,101,4,100,2,100,3,132,0,131, + 1,90,5,101,4,100,4,100,5,132,0,131,1,90,6,101, + 4,100,6,100,7,132,0,131,1,90,7,101,4,100,8,100, + 9,132,0,131,1,90,8,101,4,100,19,100,11,100,12,132, + 1,131,1,90,9,101,4,100,20,100,13,100,14,132,1,131, + 1,90,10,101,4,100,21,100,15,100,16,132,1,131,1,90, + 11,101,4,100,17,100,18,132,0,131,1,90,12,100,10,83, + 0,41,22,218,10,80,97,116,104,70,105,110,100,101,114,122, + 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, + 114,32,102,111,114,32,115,121,115,46,112,97,116,104,32,97, + 110,100,32,112,97,99,107,97,103,101,32,95,95,112,97,116, + 104,95,95,32,97,116,116,114,105,98,117,116,101,115,46,99, + 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 4,0,0,0,67,0,0,0,115,64,0,0,0,116,0,116, + 1,106,2,160,3,161,0,131,1,68,0,93,44,92,2,125, + 1,125,2,124,2,100,1,117,0,114,40,116,1,106,2,124, + 1,61,0,113,14,116,4,124,2,100,2,131,2,114,14,124, + 2,160,5,161,0,1,0,113,14,100,1,83,0,41,3,122, + 125,67,97,108,108,32,116,104,101,32,105,110,118,97,108,105, + 100,97,116,101,95,99,97,99,104,101,115,40,41,32,109,101, + 116,104,111,100,32,111,110,32,97,108,108,32,112,97,116,104, + 32,101,110,116,114,121,32,102,105,110,100,101,114,115,10,32, + 32,32,32,32,32,32,32,115,116,111,114,101,100,32,105,110, + 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, + 101,114,95,99,97,99,104,101,115,32,40,119,104,101,114,101, + 32,105,109,112,108,101,109,101,110,116,101,100,41,46,78,218, + 17,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, + 101,115,41,6,218,4,108,105,115,116,114,22,0,0,0,218, + 19,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, + 97,99,104,101,218,5,105,116,101,109,115,114,154,0,0,0, + 114,71,1,0,0,41,3,114,218,0,0,0,114,142,0,0, + 0,218,6,102,105,110,100,101,114,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,114,71,1,0,0,46,5,0, + 0,115,10,0,0,0,0,4,22,1,8,1,10,1,10,1, + 122,28,80,97,116,104,70,105,110,100,101,114,46,105,110,118, + 97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,2, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,9, + 0,0,0,67,0,0,0,115,82,0,0,0,116,0,106,1, + 100,1,117,1,114,28,116,0,106,1,115,28,116,2,160,3, + 100,2,116,4,161,2,1,0,116,0,106,1,68,0,93,42, + 125,2,122,14,124,2,124,1,131,1,87,0,2,0,1,0, + 83,0,4,0,116,5,121,74,1,0,1,0,1,0,89,0, + 113,34,89,0,113,34,48,0,113,34,100,1,83,0,41,3, + 122,46,83,101,97,114,99,104,32,115,121,115,46,112,97,116, + 104,95,104,111,111,107,115,32,102,111,114,32,97,32,102,105, + 110,100,101,114,32,102,111,114,32,39,112,97,116,104,39,46, + 78,122,23,115,121,115,46,112,97,116,104,95,104,111,111,107, + 115,32,105,115,32,101,109,112,116,121,41,6,114,22,0,0, + 0,218,10,112,97,116,104,95,104,111,111,107,115,114,101,0, + 0,0,114,102,0,0,0,114,164,0,0,0,114,143,0,0, + 0,41,3,114,218,0,0,0,114,66,0,0,0,90,4,104, + 111,111,107,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,218,11,95,112,97,116,104,95,104,111,111,107,115,56, + 5,0,0,115,16,0,0,0,0,3,16,1,12,1,10,1, + 2,1,14,1,12,1,12,2,122,22,80,97,116,104,70,105, + 110,100,101,114,46,95,112,97,116,104,95,104,111,111,107,115, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,8,0,0,0,67,0,0,0,115,100,0,0,0,124,1, + 100,1,107,2,114,42,122,12,116,0,160,1,161,0,125,1, + 87,0,110,20,4,0,116,2,121,40,1,0,1,0,1,0, + 89,0,100,2,83,0,48,0,122,14,116,3,106,4,124,1, + 25,0,125,2,87,0,110,38,4,0,116,5,121,94,1,0, + 1,0,1,0,124,0,160,6,124,1,161,1,125,2,124,2, + 116,3,106,4,124,1,60,0,89,0,110,2,48,0,124,2, + 83,0,41,3,122,210,71,101,116,32,116,104,101,32,102,105, + 110,100,101,114,32,102,111,114,32,116,104,101,32,112,97,116, + 104,32,101,110,116,114,121,32,102,114,111,109,32,115,121,115, + 46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, + 97,99,104,101,46,10,10,32,32,32,32,32,32,32,32,73, + 102,32,116,104,101,32,112,97,116,104,32,101,110,116,114,121, + 32,105,115,32,110,111,116,32,105,110,32,116,104,101,32,99, + 97,99,104,101,44,32,102,105,110,100,32,116,104,101,32,97, + 112,112,114,111,112,114,105,97,116,101,32,102,105,110,100,101, + 114,10,32,32,32,32,32,32,32,32,97,110,100,32,99,97, + 99,104,101,32,105,116,46,32,73,102,32,110,111,32,102,105, + 110,100,101,114,32,105,115,32,97,118,97,105,108,97,98,108, + 101,44,32,115,116,111,114,101,32,78,111,110,101,46,10,10, + 32,32,32,32,32,32,32,32,114,15,0,0,0,78,41,7, + 114,25,0,0,0,114,82,0,0,0,114,28,1,0,0,114, + 22,0,0,0,114,73,1,0,0,218,8,75,101,121,69,114, + 114,111,114,114,77,1,0,0,41,3,114,218,0,0,0,114, + 66,0,0,0,114,75,1,0,0,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,218,20,95,112,97,116,104,95, + 105,109,112,111,114,116,101,114,95,99,97,99,104,101,69,5, + 0,0,115,22,0,0,0,0,8,8,1,2,1,12,1,12, + 3,8,1,2,1,14,1,12,1,10,1,16,1,122,31,80, + 97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95, + 105,109,112,111,114,116,101,114,95,99,97,99,104,101,99,3, + 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,4, + 0,0,0,67,0,0,0,115,82,0,0,0,116,0,124,2, + 100,1,131,2,114,26,124,2,160,1,124,1,161,1,92,2, + 125,3,125,4,110,14,124,2,160,2,124,1,161,1,125,3, + 103,0,125,4,124,3,100,0,117,1,114,60,116,3,160,4, + 124,1,124,3,161,2,83,0,116,3,160,5,124,1,100,0, + 161,2,125,5,124,4,124,5,95,6,124,5,83,0,41,2, + 78,114,163,0,0,0,41,7,114,154,0,0,0,114,163,0, + 0,0,114,231,0,0,0,114,160,0,0,0,114,226,0,0, + 0,114,209,0,0,0,114,204,0,0,0,41,6,114,218,0, + 0,0,114,165,0,0,0,114,75,1,0,0,114,166,0,0, + 0,114,167,0,0,0,114,212,0,0,0,114,11,0,0,0, + 114,11,0,0,0,114,12,0,0,0,218,16,95,108,101,103, + 97,99,121,95,103,101,116,95,115,112,101,99,91,5,0,0, + 115,18,0,0,0,0,4,10,1,16,2,10,1,4,1,8, + 1,12,1,12,1,6,1,122,27,80,97,116,104,70,105,110, + 100,101,114,46,95,108,101,103,97,99,121,95,103,101,116,95, + 115,112,101,99,78,99,4,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,5,0,0,0,67,0,0,0,115,166, + 0,0,0,103,0,125,4,124,2,68,0,93,134,125,5,116, + 0,124,5,116,1,116,2,102,2,131,2,115,28,113,8,124, + 0,160,3,124,5,161,1,125,6,124,6,100,1,117,1,114, + 8,116,4,124,6,100,2,131,2,114,70,124,6,160,5,124, + 1,124,3,161,2,125,7,110,12,124,0,160,6,124,1,124, + 6,161,2,125,7,124,7,100,1,117,0,114,92,113,8,124, + 7,106,7,100,1,117,1,114,110,124,7,2,0,1,0,83, + 0,124,7,106,8,125,8,124,8,100,1,117,0,114,132,116, + 9,100,3,131,1,130,1,124,4,160,10,124,8,161,1,1, + 0,113,8,116,11,160,12,124,1,100,1,161,2,125,7,124, + 4,124,7,95,8,124,7,83,0,41,4,122,63,70,105,110, + 100,32,116,104,101,32,108,111,97,100,101,114,32,111,114,32, + 110,97,109,101,115,112,97,99,101,95,112,97,116,104,32,102, + 111,114,32,116,104,105,115,32,109,111,100,117,108,101,47,112, + 97,99,107,97,103,101,32,110,97,109,101,46,78,114,228,0, + 0,0,122,19,115,112,101,99,32,109,105,115,115,105,110,103, + 32,108,111,97,100,101,114,41,13,114,187,0,0,0,114,111, + 0,0,0,218,5,98,121,116,101,115,114,79,1,0,0,114, + 154,0,0,0,114,228,0,0,0,114,80,1,0,0,114,166, + 0,0,0,114,204,0,0,0,114,143,0,0,0,114,193,0, + 0,0,114,160,0,0,0,114,209,0,0,0,41,9,114,218, + 0,0,0,114,165,0,0,0,114,66,0,0,0,114,227,0, + 0,0,218,14,110,97,109,101,115,112,97,99,101,95,112,97, + 116,104,90,5,101,110,116,114,121,114,75,1,0,0,114,212, + 0,0,0,114,167,0,0,0,114,11,0,0,0,114,11,0, + 0,0,114,12,0,0,0,218,9,95,103,101,116,95,115,112, + 101,99,106,5,0,0,115,40,0,0,0,0,5,4,1,8, + 1,14,1,2,1,10,1,8,1,10,1,14,2,12,1,8, + 1,2,1,10,1,8,1,6,1,8,1,8,5,12,2,12, + 1,6,1,122,20,80,97,116,104,70,105,110,100,101,114,46, + 95,103,101,116,95,115,112,101,99,99,4,0,0,0,0,0, + 0,0,0,0,0,0,6,0,0,0,5,0,0,0,67,0, + 0,0,115,100,0,0,0,124,2,100,1,117,0,114,14,116, + 0,106,1,125,2,124,0,160,2,124,1,124,2,124,3,161, + 3,125,4,124,4,100,1,117,0,114,40,100,1,83,0,124, + 4,106,3,100,1,117,0,114,92,124,4,106,4,125,5,124, + 5,114,86,100,1,124,4,95,5,116,6,124,1,124,5,124, + 0,106,2,131,3,124,4,95,4,124,4,83,0,100,1,83, + 0,110,4,124,4,83,0,100,1,83,0,41,2,122,141,84, + 114,121,32,116,111,32,102,105,110,100,32,97,32,115,112,101, + 99,32,102,111,114,32,39,102,117,108,108,110,97,109,101,39, + 32,111,110,32,115,121,115,46,112,97,116,104,32,111,114,32, + 39,112,97,116,104,39,46,10,10,32,32,32,32,32,32,32, + 32,84,104,101,32,115,101,97,114,99,104,32,105,115,32,98, + 97,115,101,100,32,111,110,32,115,121,115,46,112,97,116,104, + 95,104,111,111,107,115,32,97,110,100,32,115,121,115,46,112, + 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, + 104,101,46,10,32,32,32,32,32,32,32,32,78,41,7,114, + 22,0,0,0,114,66,0,0,0,114,83,1,0,0,114,166, + 0,0,0,114,204,0,0,0,114,207,0,0,0,114,47,1, + 0,0,41,6,114,218,0,0,0,114,165,0,0,0,114,66, + 0,0,0,114,227,0,0,0,114,212,0,0,0,114,82,1, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,114,228,0,0,0,138,5,0,0,115,26,0,0,0,0, + 6,8,1,6,1,14,1,8,1,4,1,10,1,6,1,4, + 3,6,1,16,1,4,2,6,2,122,20,80,97,116,104,70, + 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99, + 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, + 4,0,0,0,67,0,0,0,115,30,0,0,0,124,0,160, + 0,124,1,124,2,161,2,125,3,124,3,100,1,117,0,114, + 24,100,1,83,0,124,3,106,1,83,0,41,2,122,170,102, + 105,110,100,32,116,104,101,32,109,111,100,117,108,101,32,111, + 110,32,115,121,115,46,112,97,116,104,32,111,114,32,39,112, + 97,116,104,39,32,98,97,115,101,100,32,111,110,32,115,121, + 115,46,112,97,116,104,95,104,111,111,107,115,32,97,110,100, + 10,32,32,32,32,32,32,32,32,115,121,115,46,112,97,116, + 104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,101, + 46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,32, + 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,46,32,32,85,115,101,32,102,105,110,100,95, + 115,112,101,99,40,41,32,105,110,115,116,101,97,100,46,10, + 10,32,32,32,32,32,32,32,32,78,114,229,0,0,0,114, + 230,0,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,231,0,0,0,162,5,0,0,115,8,0,0, + 0,0,8,12,1,8,1,4,1,122,22,80,97,116,104,70, + 105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,79,0,0,0,115,28,0,0,0,100, + 1,100,2,108,0,109,1,125,3,1,0,124,3,106,2,124, + 1,105,0,124,2,164,1,142,1,83,0,41,3,97,32,1, + 0,0,10,32,32,32,32,32,32,32,32,70,105,110,100,32, + 100,105,115,116,114,105,98,117,116,105,111,110,115,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,97, + 110,32,105,116,101,114,97,98,108,101,32,111,102,32,97,108, + 108,32,68,105,115,116,114,105,98,117,116,105,111,110,32,105, + 110,115,116,97,110,99,101,115,32,99,97,112,97,98,108,101, + 32,111,102,10,32,32,32,32,32,32,32,32,108,111,97,100, + 105,110,103,32,116,104,101,32,109,101,116,97,100,97,116,97, + 32,102,111,114,32,112,97,99,107,97,103,101,115,32,109,97, + 116,99,104,105,110,103,32,96,96,99,111,110,116,101,120,116, + 46,110,97,109,101,96,96,10,32,32,32,32,32,32,32,32, + 40,111,114,32,97,108,108,32,110,97,109,101,115,32,105,102, + 32,96,96,78,111,110,101,96,96,32,105,110,100,105,99,97, + 116,101,100,41,32,97,108,111,110,103,32,116,104,101,32,112, + 97,116,104,115,32,105,110,32,116,104,101,32,108,105,115,116, + 10,32,32,32,32,32,32,32,32,111,102,32,100,105,114,101, + 99,116,111,114,105,101,115,32,96,96,99,111,110,116,101,120, + 116,46,112,97,116,104,96,96,46,10,32,32,32,32,32,32, + 32,32,114,0,0,0,0,41,1,218,18,77,101,116,97,100, + 97,116,97,80,97,116,104,70,105,110,100,101,114,41,3,90, + 18,105,109,112,111,114,116,108,105,98,46,109,101,116,97,100, + 97,116,97,114,84,1,0,0,218,18,102,105,110,100,95,100, + 105,115,116,114,105,98,117,116,105,111,110,115,41,4,114,218, + 0,0,0,114,145,0,0,0,114,146,0,0,0,114,84,1, + 0,0,114,11,0,0,0,114,11,0,0,0,114,12,0,0, + 0,114,85,1,0,0,175,5,0,0,115,4,0,0,0,0, + 10,12,1,122,29,80,97,116,104,70,105,110,100,101,114,46, + 102,105,110,100,95,100,105,115,116,114,105,98,117,116,105,111, + 110,115,41,1,78,41,2,78,78,41,1,78,41,13,114,151, + 0,0,0,114,150,0,0,0,114,152,0,0,0,114,153,0, + 0,0,114,232,0,0,0,114,71,1,0,0,114,77,1,0, + 0,114,79,1,0,0,114,80,1,0,0,114,83,1,0,0, + 114,228,0,0,0,114,231,0,0,0,114,85,1,0,0,114, + 11,0,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,70,1,0,0,42,5,0,0,115,34,0,0, + 0,8,2,4,2,2,1,10,9,2,1,10,12,2,1,10, + 21,2,1,10,14,2,1,12,31,2,1,12,23,2,1,12, + 12,2,1,114,70,1,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0, + 0,115,90,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0, + 90,5,101,6,90,7,100,6,100,7,132,0,90,8,100,8, + 100,9,132,0,90,9,100,19,100,11,100,12,132,1,90,10, + 100,13,100,14,132,0,90,11,101,12,100,15,100,16,132,0, + 131,1,90,13,100,17,100,18,132,0,90,14,100,10,83,0, + 41,20,218,10,70,105,108,101,70,105,110,100,101,114,122,172, + 70,105,108,101,45,98,97,115,101,100,32,102,105,110,100,101, + 114,46,10,10,32,32,32,32,73,110,116,101,114,97,99,116, + 105,111,110,115,32,119,105,116,104,32,116,104,101,32,102,105, + 108,101,32,115,121,115,116,101,109,32,97,114,101,32,99,97, + 99,104,101,100,32,102,111,114,32,112,101,114,102,111,114,109, + 97,110,99,101,44,32,98,101,105,110,103,10,32,32,32,32, + 114,101,102,114,101,115,104,101,100,32,119,104,101,110,32,116, + 104,101,32,100,105,114,101,99,116,111,114,121,32,116,104,101, + 32,102,105,110,100,101,114,32,105,115,32,104,97,110,100,108, + 105,110,103,32,104,97,115,32,98,101,101,110,32,109,111,100, + 105,102,105,101,100,46,10,10,32,32,32,32,99,2,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,6,0,0, + 0,7,0,0,0,115,112,0,0,0,103,0,125,3,124,2, + 68,0,93,32,92,2,137,0,125,4,124,3,160,0,135,0, + 102,1,100,1,100,2,132,8,124,4,68,0,131,1,161,1, + 1,0,113,8,124,3,124,0,95,1,124,1,112,54,100,3, + 124,0,95,2,116,3,124,0,106,2,131,1,115,86,116,4, + 116,5,160,6,161,0,124,0,106,2,131,2,124,0,95,2, + 100,4,124,0,95,7,116,8,131,0,124,0,95,9,116,8, + 131,0,124,0,95,10,100,5,83,0,41,6,122,154,73,110, + 105,116,105,97,108,105,122,101,32,119,105,116,104,32,116,104, + 101,32,112,97,116,104,32,116,111,32,115,101,97,114,99,104, + 32,111,110,32,97,110,100,32,97,32,118,97,114,105,97,98, + 108,101,32,110,117,109,98,101,114,32,111,102,10,32,32,32, + 32,32,32,32,32,50,45,116,117,112,108,101,115,32,99,111, + 110,116,97,105,110,105,110,103,32,116,104,101,32,108,111,97, + 100,101,114,32,97,110,100,32,116,104,101,32,102,105,108,101, + 32,115,117,102,102,105,120,101,115,32,116,104,101,32,108,111, + 97,100,101,114,10,32,32,32,32,32,32,32,32,114,101,99, + 111,103,110,105,122,101,115,46,99,1,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,51,0,0, + 0,115,22,0,0,0,124,0,93,14,125,1,124,1,136,0, + 102,2,86,0,1,0,113,2,100,0,83,0,114,70,0,0, + 0,114,11,0,0,0,114,42,1,0,0,169,1,114,166,0, + 0,0,114,11,0,0,0,114,12,0,0,0,114,13,0,0, + 0,204,5,0,0,114,14,0,0,0,122,38,70,105,108,101, + 70,105,110,100,101,114,46,95,95,105,110,105,116,95,95,46, + 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, + 114,62,114,99,0,0,0,114,131,0,0,0,78,41,11,114, + 193,0,0,0,218,8,95,108,111,97,100,101,114,115,114,66, + 0,0,0,114,86,0,0,0,114,68,0,0,0,114,25,0, + 0,0,114,82,0,0,0,218,11,95,112,97,116,104,95,109, + 116,105,109,101,218,3,115,101,116,218,11,95,112,97,116,104, + 95,99,97,99,104,101,218,19,95,114,101,108,97,120,101,100, + 95,112,97,116,104,95,99,97,99,104,101,41,5,114,144,0, + 0,0,114,66,0,0,0,218,14,108,111,97,100,101,114,95, + 100,101,116,97,105,108,115,90,7,108,111,97,100,101,114,115, + 114,214,0,0,0,114,11,0,0,0,114,87,1,0,0,114, + 12,0,0,0,114,234,0,0,0,198,5,0,0,115,20,0, + 0,0,0,4,4,1,12,1,26,1,6,2,10,1,10,1, + 18,1,6,1,8,1,122,19,70,105,108,101,70,105,110,100, + 101,114,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, + 67,0,0,0,115,10,0,0,0,100,1,124,0,95,0,100, + 2,83,0,41,3,122,31,73,110,118,97,108,105,100,97,116, + 101,32,116,104,101,32,100,105,114,101,99,116,111,114,121,32, + 109,116,105,109,101,46,114,131,0,0,0,78,41,1,114,89, + 1,0,0,114,15,1,0,0,114,11,0,0,0,114,11,0, + 0,0,114,12,0,0,0,114,71,1,0,0,214,5,0,0, + 115,2,0,0,0,0,2,122,28,70,105,108,101,70,105,110, + 100,101,114,46,105,110,118,97,108,105,100,97,116,101,95,99, + 97,99,104,101,115,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,42, + 0,0,0,124,0,160,0,124,1,161,1,125,2,124,2,100, + 1,117,0,114,26,100,1,103,0,102,2,83,0,124,2,106, + 1,124,2,106,2,112,38,103,0,102,2,83,0,41,2,122, + 197,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108, + 111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,44,32, + 111,114,32,116,104,101,32,110,97,109,101,115,112,97,99,101, + 10,32,32,32,32,32,32,32,32,112,97,99,107,97,103,101, + 32,112,111,114,116,105,111,110,115,46,32,82,101,116,117,114, + 110,115,32,40,108,111,97,100,101,114,44,32,108,105,115,116, + 45,111,102,45,112,111,114,116,105,111,110,115,41,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116, + 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, + 32,32,32,32,32,32,78,41,3,114,228,0,0,0,114,166, + 0,0,0,114,204,0,0,0,41,3,114,144,0,0,0,114, + 165,0,0,0,114,212,0,0,0,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,114,163,0,0,0,220,5,0, + 0,115,8,0,0,0,0,7,10,1,8,1,8,1,122,22, + 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, + 108,111,97,100,101,114,99,6,0,0,0,0,0,0,0,0, + 0,0,0,7,0,0,0,6,0,0,0,67,0,0,0,115, + 26,0,0,0,124,1,124,2,124,3,131,2,125,6,116,0, + 124,2,124,3,124,6,124,4,100,1,141,4,83,0,41,2, + 78,114,203,0,0,0,41,1,114,215,0,0,0,41,7,114, + 144,0,0,0,114,213,0,0,0,114,165,0,0,0,114,66, + 0,0,0,90,4,115,109,115,108,114,227,0,0,0,114,166, + 0,0,0,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,114,83,1,0,0,232,5,0,0,115,8,0,0,0, + 0,1,10,1,8,1,2,255,122,20,70,105,108,101,70,105, + 110,100,101,114,46,95,103,101,116,95,115,112,101,99,78,99, + 3,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0, + 9,0,0,0,67,0,0,0,115,126,1,0,0,100,1,125, + 3,124,1,160,0,100,2,161,1,100,3,25,0,125,4,122, + 24,116,1,124,0,106,2,112,34,116,3,160,4,161,0,131, + 1,106,5,125,5,87,0,110,22,4,0,116,6,121,64,1, + 0,1,0,1,0,100,4,125,5,89,0,110,2,48,0,124, + 5,124,0,106,7,107,3,114,90,124,0,160,8,161,0,1, + 0,124,5,124,0,95,7,116,9,131,0,114,112,124,0,106, + 10,125,6,124,4,160,11,161,0,125,7,110,10,124,0,106, + 12,125,6,124,4,125,7,124,7,124,6,118,0,114,216,116, + 13,124,0,106,2,124,4,131,2,125,8,124,0,106,14,68, + 0,93,58,92,2,125,9,125,10,100,5,124,9,23,0,125, + 11,116,13,124,8,124,11,131,2,125,12,116,15,124,12,131, + 1,114,148,124,0,160,16,124,10,124,1,124,12,124,8,103, + 1,124,2,161,5,2,0,1,0,83,0,113,148,116,17,124, + 8,131,1,125,3,124,0,106,14,68,0,93,112,92,2,125, + 9,125,10,122,20,116,13,124,0,106,2,124,4,124,9,23, + 0,131,2,125,12,87,0,110,24,4,0,116,18,144,1,121, + 18,1,0,1,0,1,0,89,0,1,0,100,6,83,0,48, + 0,116,19,106,20,100,7,124,12,100,3,100,8,141,3,1, + 0,124,7,124,9,23,0,124,6,118,0,114,222,116,15,124, + 12,131,1,114,222,124,0,160,16,124,10,124,1,124,12,100, + 6,124,2,161,5,2,0,1,0,83,0,113,222,124,3,144, + 1,114,122,116,19,160,20,100,9,124,8,161,2,1,0,116, + 19,160,21,124,1,100,6,161,2,125,13,124,8,103,1,124, + 13,95,22,124,13,83,0,100,6,83,0,41,10,122,111,84, + 114,121,32,116,111,32,102,105,110,100,32,97,32,115,112,101, + 99,32,102,111,114,32,116,104,101,32,115,112,101,99,105,102, + 105,101,100,32,109,111,100,117,108,101,46,10,10,32,32,32, + 32,32,32,32,32,82,101,116,117,114,110,115,32,116,104,101, + 32,109,97,116,99,104,105,110,103,32,115,112,101,99,44,32, + 111,114,32,78,111,110,101,32,105,102,32,110,111,116,32,102, + 111,117,110,100,46,10,32,32,32,32,32,32,32,32,70,114, + 99,0,0,0,114,46,0,0,0,114,131,0,0,0,114,234, + 0,0,0,78,122,9,116,114,121,105,110,103,32,123,125,41, + 1,90,9,118,101,114,98,111,115,105,116,121,122,25,112,111, + 115,115,105,98,108,101,32,110,97,109,101,115,112,97,99,101, + 32,102,111,114,32,123,125,41,23,114,106,0,0,0,114,76, + 0,0,0,114,66,0,0,0,114,25,0,0,0,114,82,0, + 0,0,114,35,1,0,0,114,77,0,0,0,114,89,1,0, + 0,218,11,95,102,105,108,108,95,99,97,99,104,101,114,28, + 0,0,0,114,92,1,0,0,114,132,0,0,0,114,91,1, + 0,0,114,68,0,0,0,114,88,1,0,0,114,81,0,0, + 0,114,83,1,0,0,114,83,0,0,0,114,113,0,0,0, + 114,160,0,0,0,114,175,0,0,0,114,209,0,0,0,114, + 204,0,0,0,41,14,114,144,0,0,0,114,165,0,0,0, + 114,227,0,0,0,90,12,105,115,95,110,97,109,101,115,112, + 97,99,101,90,11,116,97,105,108,95,109,111,100,117,108,101, + 114,195,0,0,0,90,5,99,97,99,104,101,90,12,99,97, + 99,104,101,95,109,111,100,117,108,101,90,9,98,97,115,101, + 95,112,97,116,104,114,43,1,0,0,114,213,0,0,0,90, + 13,105,110,105,116,95,102,105,108,101,110,97,109,101,90,9, + 102,117,108,108,95,112,97,116,104,114,212,0,0,0,114,11, + 0,0,0,114,11,0,0,0,114,12,0,0,0,114,228,0, + 0,0,237,5,0,0,115,78,0,0,0,0,5,4,1,14, + 1,2,1,24,1,12,1,10,1,10,1,8,1,6,2,6, + 1,6,1,10,2,6,1,4,2,8,1,12,1,14,1,8, + 1,10,1,8,1,26,4,8,2,14,1,2,1,20,1,14, + 1,10,1,16,1,12,1,8,1,10,1,4,255,10,2,6, + 1,12,1,12,1,8,1,4,1,122,20,70,105,108,101,70, + 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99, + 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 10,0,0,0,67,0,0,0,115,188,0,0,0,124,0,106, + 0,125,1,122,22,116,1,160,2,124,1,112,22,116,1,160, + 3,161,0,161,1,125,2,87,0,110,28,4,0,116,4,116, + 5,116,6,102,3,121,56,1,0,1,0,1,0,103,0,125, + 2,89,0,110,2,48,0,116,7,106,8,160,9,100,1,161, + 1,115,82,116,10,124,2,131,1,124,0,95,11,110,74,116, + 10,131,0,125,3,124,2,68,0,93,56,125,4,124,4,160, + 12,100,2,161,1,92,3,125,5,125,6,125,7,124,6,114, + 134,100,3,160,13,124,5,124,7,160,14,161,0,161,2,125, + 8,110,4,124,5,125,8,124,3,160,15,124,8,161,1,1, + 0,113,92,124,3,124,0,95,11,116,7,106,8,160,9,116, + 16,161,1,114,184,100,4,100,5,132,0,124,2,68,0,131, + 1,124,0,95,17,100,6,83,0,41,7,122,68,70,105,108, + 108,32,116,104,101,32,99,97,99,104,101,32,111,102,32,112, + 111,116,101,110,116,105,97,108,32,109,111,100,117,108,101,115, + 32,97,110,100,32,112,97,99,107,97,103,101,115,32,102,111, + 114,32,116,104,105,115,32,100,105,114,101,99,116,111,114,121, + 46,114,21,0,0,0,114,99,0,0,0,114,90,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,83,0,0,0,115,20,0,0,0,104,0, + 124,0,93,12,125,1,124,1,160,0,161,0,146,2,113,4, + 83,0,114,11,0,0,0,41,1,114,132,0,0,0,41,2, + 114,9,0,0,0,90,2,102,110,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,114,20,0,0,0,61,6,0, + 0,114,14,0,0,0,122,41,70,105,108,101,70,105,110,100, + 101,114,46,95,102,105,108,108,95,99,97,99,104,101,46,60, + 108,111,99,97,108,115,62,46,60,115,101,116,99,111,109,112, + 62,78,41,18,114,66,0,0,0,114,25,0,0,0,114,32, + 1,0,0,114,82,0,0,0,114,28,1,0,0,218,15,80, + 101,114,109,105,115,115,105,111,110,69,114,114,111,114,218,18, + 78,111,116,65,68,105,114,101,99,116,111,114,121,69,114,114, + 111,114,114,22,0,0,0,114,29,0,0,0,114,30,0,0, + 0,114,90,1,0,0,114,91,1,0,0,114,127,0,0,0, + 114,91,0,0,0,114,132,0,0,0,218,3,97,100,100,114, + 31,0,0,0,114,92,1,0,0,41,9,114,144,0,0,0, + 114,66,0,0,0,114,33,1,0,0,90,21,108,111,119,101, + 114,95,115,117,102,102,105,120,95,99,111,110,116,101,110,116, + 115,114,66,1,0,0,114,142,0,0,0,114,54,1,0,0, + 114,43,1,0,0,90,8,110,101,119,95,110,97,109,101,114, + 11,0,0,0,114,11,0,0,0,114,12,0,0,0,114,94, + 1,0,0,32,6,0,0,115,34,0,0,0,0,2,6,1, + 2,1,22,1,18,3,10,3,12,1,12,7,6,1,8,1, + 16,1,4,1,18,2,4,1,12,1,6,1,12,1,122,22, + 70,105,108,101,70,105,110,100,101,114,46,95,102,105,108,108, + 95,99,97,99,104,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,115, + 18,0,0,0,135,0,135,1,102,2,100,1,100,2,132,8, + 125,2,124,2,83,0,41,3,97,20,1,0,0,65,32,99, + 108,97,115,115,32,109,101,116,104,111,100,32,119,104,105,99, + 104,32,114,101,116,117,114,110,115,32,97,32,99,108,111,115, + 117,114,101,32,116,111,32,117,115,101,32,111,110,32,115,121, + 115,46,112,97,116,104,95,104,111,111,107,10,32,32,32,32, + 32,32,32,32,119,104,105,99,104,32,119,105,108,108,32,114, + 101,116,117,114,110,32,97,110,32,105,110,115,116,97,110,99, + 101,32,117,115,105,110,103,32,116,104,101,32,115,112,101,99, + 105,102,105,101,100,32,108,111,97,100,101,114,115,32,97,110, + 100,32,116,104,101,32,112,97,116,104,10,32,32,32,32,32, + 32,32,32,99,97,108,108,101,100,32,111,110,32,116,104,101, + 32,99,108,111,115,117,114,101,46,10,10,32,32,32,32,32, + 32,32,32,73,102,32,116,104,101,32,112,97,116,104,32,99, + 97,108,108,101,100,32,111,110,32,116,104,101,32,99,108,111, + 115,117,114,101,32,105,115,32,110,111,116,32,97,32,100,105, + 114,101,99,116,111,114,121,44,32,73,109,112,111,114,116,69, + 114,114,111,114,32,105,115,10,32,32,32,32,32,32,32,32, + 114,97,105,115,101,100,46,10,10,32,32,32,32,32,32,32, + 32,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,4,0,0,0,19,0,0,0,115,36,0,0,0,116, + 0,124,0,131,1,115,20,116,1,100,1,124,0,100,2,141, + 2,130,1,136,0,124,0,103,1,136,1,162,1,82,0,142, + 0,83,0,41,3,122,45,80,97,116,104,32,104,111,111,107, + 32,102,111,114,32,105,109,112,111,114,116,108,105,98,46,109, + 97,99,104,105,110,101,114,121,46,70,105,108,101,70,105,110, + 100,101,114,46,122,30,111,110,108,121,32,100,105,114,101,99, + 116,111,114,105,101,115,32,97,114,101,32,115,117,112,112,111, + 114,116,101,100,114,72,0,0,0,41,2,114,83,0,0,0, + 114,143,0,0,0,114,72,0,0,0,169,2,114,218,0,0, + 0,114,93,1,0,0,114,11,0,0,0,114,12,0,0,0, + 218,24,112,97,116,104,95,104,111,111,107,95,102,111,114,95, + 70,105,108,101,70,105,110,100,101,114,73,6,0,0,115,6, + 0,0,0,0,2,8,1,12,1,122,54,70,105,108,101,70, + 105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,46, + 60,108,111,99,97,108,115,62,46,112,97,116,104,95,104,111, + 111,107,95,102,111,114,95,70,105,108,101,70,105,110,100,101, + 114,114,11,0,0,0,41,3,114,218,0,0,0,114,93,1, + 0,0,114,99,1,0,0,114,11,0,0,0,114,98,1,0, + 0,114,12,0,0,0,218,9,112,97,116,104,95,104,111,111, + 107,63,6,0,0,115,4,0,0,0,0,10,14,6,122,20, + 70,105,108,101,70,105,110,100,101,114,46,112,97,116,104,95, + 104,111,111,107,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,12,0, + 0,0,100,1,160,0,124,0,106,1,161,1,83,0,41,2, + 78,122,16,70,105,108,101,70,105,110,100,101,114,40,123,33, + 114,125,41,41,2,114,91,0,0,0,114,66,0,0,0,114, + 15,1,0,0,114,11,0,0,0,114,11,0,0,0,114,12, + 0,0,0,114,64,1,0,0,81,6,0,0,115,2,0,0, + 0,0,1,122,19,70,105,108,101,70,105,110,100,101,114,46, + 95,95,114,101,112,114,95,95,41,1,78,41,15,114,151,0, + 0,0,114,150,0,0,0,114,152,0,0,0,114,153,0,0, + 0,114,234,0,0,0,114,71,1,0,0,114,169,0,0,0, + 114,231,0,0,0,114,163,0,0,0,114,83,1,0,0,114, + 228,0,0,0,114,94,1,0,0,114,232,0,0,0,114,100, + 1,0,0,114,64,1,0,0,114,11,0,0,0,114,11,0, + 0,0,114,11,0,0,0,114,12,0,0,0,114,86,1,0, + 0,189,5,0,0,115,22,0,0,0,8,2,4,7,8,16, + 8,4,4,2,8,12,8,5,10,51,8,31,2,1,10,17, + 114,86,1,0,0,99,4,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,144, + 0,0,0,124,0,160,0,100,1,161,1,125,4,124,0,160, + 0,100,2,161,1,125,5,124,4,115,66,124,5,114,36,124, + 5,106,1,125,4,110,30,124,2,124,3,107,2,114,56,116, + 2,124,1,124,2,131,2,125,4,110,10,116,3,124,1,124, + 2,131,2,125,4,124,5,115,84,116,4,124,1,124,2,124, + 4,100,3,141,3,125,5,122,36,124,5,124,0,100,2,60, + 0,124,4,124,0,100,1,60,0,124,2,124,0,100,4,60, + 0,124,3,124,0,100,5,60,0,87,0,110,18,4,0,116, + 5,121,138,1,0,1,0,1,0,89,0,110,2,48,0,100, + 0,83,0,41,6,78,218,10,95,95,108,111,97,100,101,114, + 95,95,218,8,95,95,115,112,101,99,95,95,114,87,1,0, + 0,90,8,95,95,102,105,108,101,95,95,90,10,95,95,99, + 97,99,104,101,100,95,95,41,6,218,3,103,101,116,114,166, + 0,0,0,114,41,1,0,0,114,34,1,0,0,114,215,0, + 0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,90, + 2,110,115,114,142,0,0,0,90,8,112,97,116,104,110,97, + 109,101,90,9,99,112,97,116,104,110,97,109,101,114,166,0, + 0,0,114,212,0,0,0,114,11,0,0,0,114,11,0,0, + 0,114,12,0,0,0,218,14,95,102,105,120,95,117,112,95, + 109,111,100,117,108,101,87,6,0,0,115,34,0,0,0,0, + 2,10,1,10,1,4,1,4,1,8,1,8,1,12,2,10, + 1,4,1,14,1,2,1,8,1,8,1,8,1,12,1,12, + 2,114,105,1,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,115, + 38,0,0,0,116,0,116,1,160,2,161,0,102,2,125,0, + 116,3,116,4,102,2,125,1,116,5,116,6,102,2,125,2, + 124,0,124,1,124,2,103,3,83,0,41,1,122,95,82,101, + 116,117,114,110,115,32,97,32,108,105,115,116,32,111,102,32, + 102,105,108,101,45,98,97,115,101,100,32,109,111,100,117,108, + 101,32,108,111,97,100,101,114,115,46,10,10,32,32,32,32, + 69,97,99,104,32,105,116,101,109,32,105,115,32,97,32,116, + 117,112,108,101,32,40,108,111,97,100,101,114,44,32,115,117, + 102,102,105,120,101,115,41,46,10,32,32,32,32,41,7,114, + 21,1,0,0,114,189,0,0,0,218,18,101,120,116,101,110, + 115,105,111,110,95,115,117,102,102,105,120,101,115,114,34,1, + 0,0,114,128,0,0,0,114,41,1,0,0,114,115,0,0, + 0,41,3,90,10,101,120,116,101,110,115,105,111,110,115,90, + 6,115,111,117,114,99,101,90,8,98,121,116,101,99,111,100, + 101,114,11,0,0,0,114,11,0,0,0,114,12,0,0,0, + 114,210,0,0,0,110,6,0,0,115,8,0,0,0,0,5, + 12,1,8,1,8,1,114,210,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0, + 67,0,0,0,115,142,1,0,0,124,0,97,0,116,0,106, + 1,97,1,116,0,106,2,97,2,116,1,106,3,116,4,25, + 0,125,1,100,1,100,2,103,1,102,2,100,3,100,4,100, + 2,103,2,102,2,100,5,100,2,100,4,103,2,102,2,102, + 3,125,2,124,2,68,0,93,108,92,2,125,3,125,4,116, + 5,100,6,100,7,132,0,124,4,68,0,131,1,131,1,115, + 92,74,0,130,1,124,4,100,8,25,0,125,5,124,3,116, + 1,106,3,118,0,114,126,116,1,106,3,124,3,25,0,125, + 6,1,0,113,180,113,62,122,20,116,0,160,6,124,3,161, + 1,125,6,87,0,1,0,113,180,87,0,113,62,4,0,116, + 7,121,168,1,0,1,0,1,0,89,0,113,62,89,0,113, + 62,48,0,113,62,116,7,100,9,131,1,130,1,116,8,124, + 1,100,10,124,6,131,3,1,0,116,8,124,1,100,11,124, + 5,131,3,1,0,116,8,124,1,100,12,100,13,160,9,124, + 4,161,1,131,3,1,0,116,8,124,1,100,14,100,15,100, + 16,132,0,124,4,68,0,131,1,131,3,1,0,103,0,100, + 17,162,1,125,7,124,3,100,3,107,2,144,1,114,16,124, + 7,160,10,100,18,161,1,1,0,124,7,68,0,93,52,125, + 8,124,8,116,1,106,3,118,1,144,1,114,48,116,0,160, + 6,124,8,161,1,125,9,110,10,116,1,106,3,124,8,25, + 0,125,9,116,8,124,1,124,8,124,9,131,3,1,0,144, + 1,113,20,116,8,124,1,100,19,116,11,131,0,131,3,1, + 0,116,12,160,13,116,2,160,14,161,0,161,1,1,0,124, + 3,100,3,107,2,144,1,114,138,116,15,160,10,100,20,161, + 1,1,0,100,21,116,12,118,0,144,1,114,138,100,22,116, + 16,95,17,100,23,83,0,41,24,122,205,83,101,116,117,112, + 32,116,104,101,32,112,97,116,104,45,98,97,115,101,100,32, + 105,109,112,111,114,116,101,114,115,32,102,111,114,32,105,109, + 112,111,114,116,108,105,98,32,98,121,32,105,109,112,111,114, + 116,105,110,103,32,110,101,101,100,101,100,10,32,32,32,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, + 104,101,109,32,105,110,116,111,32,116,104,101,32,103,108,111, + 98,97,108,32,110,97,109,101,115,112,97,99,101,46,10,10, + 32,32,32,32,79,116,104,101,114,32,99,111,109,112,111,110, + 101,110,116,115,32,97,114,101,32,101,120,116,114,97,99,116, + 101,100,32,102,114,111,109,32,116,104,101,32,99,111,114,101, + 32,98,111,111,116,115,116,114,97,112,32,109,111,100,117,108, + 101,46,10,10,32,32,32,32,218,5,112,111,115,105,120,114, + 3,0,0,0,218,2,110,116,114,2,0,0,0,218,3,111, + 115,50,99,1,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,115,0,0,0,115,26,0,0,0, + 124,0,93,18,125,1,116,0,124,1,131,1,100,0,107,2, + 86,0,1,0,113,2,100,1,83,0,114,4,0,0,0,114, + 6,0,0,0,114,8,0,0,0,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,114,13,0,0,0,139,6,0, + 0,114,14,0,0,0,122,25,95,115,101,116,117,112,46,60, + 108,111,99,97,108,115,62,46,60,103,101,110,101,120,112,114, + 62,114,0,0,0,0,122,37,105,109,112,111,114,116,108,105, + 98,32,114,101,113,117,105,114,101,115,32,112,111,115,105,120, + 32,111,114,32,110,116,32,111,114,32,111,115,50,114,25,0, + 0,0,114,60,0,0,0,114,51,0,0,0,114,15,0,0, + 0,114,88,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,83,0,0,0,115, + 22,0,0,0,104,0,124,0,93,14,125,1,100,0,124,1, + 155,0,157,2,146,2,113,4,83,0,114,16,0,0,0,114, + 11,0,0,0,114,18,0,0,0,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,114,20,0,0,0,156,6,0, + 0,114,14,0,0,0,122,25,95,115,101,116,117,112,46,60, + 108,111,99,97,108,115,62,46,60,115,101,116,99,111,109,112, + 62,41,3,114,93,0,0,0,114,101,0,0,0,114,186,0, + 0,0,114,217,0,0,0,114,28,0,0,0,122,4,46,112, + 121,119,122,6,95,100,46,112,121,100,84,78,41,18,114,160, + 0,0,0,114,22,0,0,0,114,189,0,0,0,114,56,1, + 0,0,114,151,0,0,0,218,3,97,108,108,90,18,95,98, + 117,105,108,116,105,110,95,102,114,111,109,95,110,97,109,101, + 114,143,0,0,0,114,155,0,0,0,114,63,0,0,0,114, + 62,0,0,0,114,33,0,0,0,114,46,1,0,0,114,193, + 0,0,0,114,106,1,0,0,114,128,0,0,0,114,216,0, + 0,0,114,220,0,0,0,41,10,218,17,95,98,111,111,116, + 115,116,114,97,112,95,109,111,100,117,108,101,90,11,115,101, + 108,102,95,109,111,100,117,108,101,90,10,111,115,95,100,101, + 116,97,105,108,115,90,10,98,117,105,108,116,105,110,95,111, + 115,114,51,0,0,0,114,60,0,0,0,90,9,111,115,95, + 109,111,100,117,108,101,90,13,98,117,105,108,116,105,110,95, + 110,97,109,101,115,90,12,98,117,105,108,116,105,110,95,110, + 97,109,101,90,14,98,117,105,108,116,105,110,95,109,111,100, + 117,108,101,114,11,0,0,0,114,11,0,0,0,114,12,0, + 0,0,218,6,95,115,101,116,117,112,121,6,0,0,115,70, + 0,0,0,0,8,4,1,6,1,6,2,10,3,32,1,12, + 2,22,1,8,1,10,1,10,1,6,2,2,1,10,1,10, + 1,12,1,12,2,8,2,12,1,12,1,18,1,22,3,8, + 1,10,1,10,1,8,1,12,1,12,2,10,1,16,3,14, + 1,14,1,10,1,10,1,10,1,114,112,1,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,67,0,0,0,115,50,0,0,0,116,0,124,0, + 131,1,1,0,116,1,131,0,125,1,116,2,106,3,160,4, + 116,5,106,6,124,1,142,0,103,1,161,1,1,0,116,2, + 106,7,160,8,116,9,161,1,1,0,100,1,83,0,41,2, + 122,41,73,110,115,116,97,108,108,32,116,104,101,32,112,97, + 116,104,45,98,97,115,101,100,32,105,109,112,111,114,116,32, + 99,111,109,112,111,110,101,110,116,115,46,78,41,10,114,112, + 1,0,0,114,210,0,0,0,114,22,0,0,0,114,76,1, + 0,0,114,193,0,0,0,114,86,1,0,0,114,100,1,0, + 0,218,9,109,101,116,97,95,112,97,116,104,114,62,0,0, + 0,114,70,1,0,0,41,2,114,111,1,0,0,90,17,115, + 117,112,112,111,114,116,101,100,95,108,111,97,100,101,114,115, + 114,11,0,0,0,114,11,0,0,0,114,12,0,0,0,218, + 8,95,105,110,115,116,97,108,108,178,6,0,0,115,8,0, + 0,0,0,2,8,1,6,1,20,1,114,114,1,0,0,41, + 1,114,89,0,0,0,41,1,78,41,3,78,78,78,41,2, + 114,0,0,0,0,114,0,0,0,0,41,1,84,41,1,78, + 41,1,78,41,83,114,153,0,0,0,114,189,0,0,0,114, + 93,0,0,0,114,22,0,0,0,114,101,0,0,0,114,186, + 0,0,0,114,29,0,0,0,90,11,95,77,83,95,87,73, + 78,68,79,87,83,90,4,95,79,83,50,114,108,1,0,0, + 114,25,0,0,0,114,217,0,0,0,114,109,1,0,0,114, + 107,1,0,0,114,51,0,0,0,114,110,1,0,0,114,60, + 0,0,0,114,137,0,0,0,114,58,0,0,0,114,63,0, + 0,0,114,88,0,0,0,114,32,0,0,0,90,37,95,67, + 65,83,69,95,73,78,83,69,78,83,73,84,73,86,69,95, + 80,76,65,84,70,79,82,77,83,95,66,89,84,69,83,95, + 75,69,89,114,31,0,0,0,114,33,0,0,0,114,40,0, + 0,0,114,45,0,0,0,114,47,0,0,0,114,68,0,0, + 0,114,75,0,0,0,114,76,0,0,0,114,80,0,0,0, + 114,81,0,0,0,114,83,0,0,0,114,86,0,0,0,114, + 97,0,0,0,218,4,116,121,112,101,218,8,95,95,99,111, + 100,101,95,95,114,188,0,0,0,114,38,0,0,0,114,174, + 0,0,0,114,37,0,0,0,114,42,0,0,0,114,5,1, + 0,0,114,118,0,0,0,114,114,0,0,0,114,128,0,0, + 0,114,115,0,0,0,90,23,68,69,66,85,71,95,66,89, + 84,69,67,79,68,69,95,83,85,70,70,73,88,69,83,90, + 27,79,80,84,73,77,73,90,69,68,95,66,89,84,69,67, + 79,68,69,95,83,85,70,70,73,88,69,83,114,123,0,0, + 0,114,129,0,0,0,114,136,0,0,0,114,138,0,0,0, + 114,140,0,0,0,114,162,0,0,0,114,169,0,0,0,114, + 178,0,0,0,114,182,0,0,0,114,184,0,0,0,114,191, + 0,0,0,114,196,0,0,0,114,197,0,0,0,114,202,0, + 0,0,218,6,111,98,106,101,99,116,114,211,0,0,0,114, + 215,0,0,0,114,216,0,0,0,114,233,0,0,0,114,246, + 0,0,0,114,8,1,0,0,114,34,1,0,0,114,41,1, + 0,0,114,46,1,0,0,114,21,1,0,0,114,47,1,0, + 0,114,68,1,0,0,114,70,1,0,0,114,86,1,0,0, + 114,105,1,0,0,114,210,0,0,0,114,112,1,0,0,114, + 114,1,0,0,114,11,0,0,0,114,11,0,0,0,114,11, + 0,0,0,114,12,0,0,0,218,8,60,109,111,100,117,108, + 101,62,1,0,0,0,115,184,0,0,0,4,22,8,1,8, + 1,8,1,8,1,8,3,10,1,10,1,4,1,8,1,10, + 1,4,1,10,2,8,3,4,1,10,1,4,1,10,2,6, + 2,22,1,8,1,8,1,10,1,14,4,4,1,4,1,2, + 1,2,255,4,4,8,17,8,5,8,5,8,6,6,1,10, + 30,8,6,8,8,8,10,8,9,8,5,8,7,6,1,10, + 6,6,1,10,8,8,5,10,22,10,127,0,20,16,1,12, + 2,4,1,4,2,6,2,6,2,8,2,16,71,8,40,8, + 19,8,12,8,12,8,28,8,17,8,33,8,28,8,24,10, + 13,10,10,10,11,8,14,6,3,4,1,2,255,12,73,14, + 64,14,29,16,127,0,17,14,72,18,45,18,26,4,3,18, + 53,14,63,14,42,14,127,0,20,14,127,0,27,10,23,8, + 11,8,57, +}; From 2086146263615dd23f43f8cfb153e4b2ddf7f86e Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 12 May 2021 13:19:36 +0100 Subject: [PATCH 108/160] apply a upstream patch, as else the ssl module is not building --- Modules/_ssl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 97e314b2..27408031 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -151,6 +151,9 @@ static void _PySSLFixErrno(void) { * unless OpenSSL is compiled without the methods. It's the easiest way to * make 1.0.2, 1.1.0, 1.1.1, and 3.0.0 happy without deprecation warnings. */ +#ifndef OPENSSL_NO_SSL3_METHOD +extern const SSL_METHOD *SSLv3_method(void); +#endif #ifndef OPENSSL_NO_TLS1_METHOD extern const SSL_METHOD *TLSv1_method(void); #endif From c89e4a431ceac5003e4fef0ec3353c1606c5b3f4 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 26 May 2021 07:16:02 +0100 Subject: [PATCH 109/160] fix issue #5 --- Modules/posixmodule.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 96a57b06..94e152f5 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -4953,6 +4953,20 @@ os_rmdir_impl(PyObject *module, path_t *path, int dir_fd) } else #endif result = rmdir(path->narrow); +#ifdef __OS2__ + // we can't remove a dir if we are still inside it + // so handle this case as well + if (result && errno == EBUSY) { + char buf1[PATH_MAX]; + char buf2[PATH_MAX]; + realpath(".", buf1); + realpath(path->narrow, buf2); + if (!stricmp(buf1, buf2)) { + chdir(".."); + result = rmdir(buf2); + } + } +#endif #endif Py_END_ALLOW_THREADS From 27aed42c9288332fb7d2a0c45a28a253a402ef31 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Mon, 7 Jun 2021 09:45:30 +0100 Subject: [PATCH 110/160] change default extension of modules to .pyd. this fixes some name clashes --- Lib/distutils/emxccompiler.py | 7 ++++--- Python/dynload_shlib.c | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Lib/distutils/emxccompiler.py b/Lib/distutils/emxccompiler.py index 5f472f58..28183147 100644 --- a/Lib/distutils/emxccompiler.py +++ b/Lib/distutils/emxccompiler.py @@ -41,7 +41,7 @@ class EMXCCompiler (UnixCCompiler): compiler_type = 'emx' obj_extension = ".o" static_lib_extension = ".a" - shared_lib_extension = get_config_vars().get('EXT_SUFFIX') + shared_lib_extension = ".dll" static_lib_format = "%s%s" shared_lib_format = "%s%s" res_extension = ".res" # compiled resource file @@ -106,8 +106,9 @@ def link(self, target_desc, objects, output_filename, output_dir=None, dll_name8 = dll_name # full relative path of dll/pyd + dll_extension = get_config_vars().get('EXT_SUFFIX') dll_namefull = os.path.join(os.path.dirname(output_filename), - dll_name8 + self.shared_lib_extension) + dll_name8 + dll_extension) # handle export symbols by creating a def-file # with executables this only works with gcc/ld as linker @@ -184,7 +185,7 @@ def link(self, target_desc, objects, output_filename, output_dir=None, os.remove( output_filename) except OSError: pass - os.symlink( dll_name8 + self.shared_lib_extension, output_filename) + os.symlink( dll_name8 + dll_extension, output_filename) # link () diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c index f5e9db18..e1c02894 100644 --- a/Python/dynload_shlib.c +++ b/Python/dynload_shlib.c @@ -38,8 +38,8 @@ const char *_PyImport_DynLoadFiletab[] = { #ifdef __CYGWIN__ ".dll", #elif defined(__OS2__) - ".dll", ".pyd", + ".dll", #else /* !__CYGWIN__ */ "." SOABI ".so", #ifdef ALT_SOABI From e4ea257b85c6cdf45232b1e117dbd8a0bada5077 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 4 Nov 2021 18:46:34 +0100 Subject: [PATCH 111/160] as -1 is the new default for spawn fds, we have to take that into account in our spawn2 implementation --- Modules/posixmodule.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 94e152f5..9cde241a 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -7001,6 +7001,7 @@ os_spawn2_impl(PyObject *module, int mode, path_t *path, PyObject *argv, stdfdc_none = 0; for (i = 0; i < stdfdc; i++) { PyObject *elem = (*stdfd_getitem)(stdfds, i); + // if the value is None we have to adjust it to 0 if (elem == Py_None) { stdfdlist[i] = 0; } else { @@ -7010,8 +7011,11 @@ os_spawn2_impl(PyObject *module, int mode, path_t *path, PyObject *argv, goto fail_2; } } - if (stdfdlist[i] == -1) + // the new defaultis -1, so adjust it to 0 as well + if (stdfdlist[i] == -1) { stdfdc_none++; + stdfdlist[i] = 0; + } } } // the stdfdlist entries can all be -1, which means no redirecting done From e84fc9d501dc5cf170981d51165e06f4e4efe971 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 4 Nov 2021 19:51:43 +0100 Subject: [PATCH 112/160] add HOME as ~ replacement again --- Lib/ntpath.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lib/ntpath.py b/Lib/ntpath.py index 6f771773..4d7ce536 100644 --- a/Lib/ntpath.py +++ b/Lib/ntpath.py @@ -303,6 +303,8 @@ def expanduser(path): if 'USERPROFILE' in os.environ: userhome = os.environ['USERPROFILE'] + elif 'HOME' in os.environ: + userhome = os.environ['HOME'] elif not 'HOMEPATH' in os.environ: return path else: From c679bc5620e853d6d0903594314ece8d4649bfc8 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 24 Nov 2021 23:07:39 +0100 Subject: [PATCH 113/160] use binary io, as else the pyc are nor readable --- Modules/_io/fileio.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c index 048484bd..7d4eed96 100644 --- a/Modules/_io/fileio.c +++ b/Modules/_io/fileio.c @@ -476,6 +476,10 @@ _Py_COMP_DIAG_POP /* don't translate newlines (\r\n <=> \n) */ _setmode(self->fd, O_BINARY); #endif +#if defined(__OS2__) + /* don't translate newlines (\r\n <=> \n) */ + setmode(self->fd, O_BINARY); +#endif if (_PyObject_SetAttrId((PyObject *)self, &PyId_name, nameobj) < 0) goto error; From e1b3ef76426d2b9ae087ef20da5012182a0488f5 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 24 Nov 2021 23:09:29 +0100 Subject: [PATCH 114/160] fix a /@unixroot issue, and provide new generated importlib as well --- Lib/importlib/_bootstrap_external.py | 2 +- Python/importlib.h | 3624 +++++++++++++------------- Python/importlib_external.h | 2 +- Python/importlib_zipimport.h | 2158 +++++++-------- 4 files changed, 2893 insertions(+), 2893 deletions(-) diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 779f14be..646bfe4a 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -182,7 +182,7 @@ def _path_isabs(path): Considers a OS2 drive-relative path (no drive, but starts with slash) to still be "absolute". """ - return path.startswith(path_separators) or path[1:3] in _pathseps_with_colon + return path.startswith(path_sep_tuple) or path[1:3] in _pathseps_with_colon else: def _path_isabs(path): """Replacement for os.path.isabs.""" diff --git a/Python/importlib.h b/Python/importlib.h index 1fb877a7..862a9d06 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1,1812 +1,1812 @@ -/* Auto-generated by Programs/_freeze_importlib.c */ -const unsigned char _Py_M__importlib_bootstrap[] = { - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,64,0,0,0,115,194,1,0,0,100,0, - 90,0,100,1,97,1,100,2,100,3,132,0,90,2,100,4, - 100,5,132,0,90,3,105,0,90,4,105,0,90,5,71,0, - 100,6,100,7,132,0,100,7,101,6,131,3,90,7,71,0, - 100,8,100,9,132,0,100,9,131,2,90,8,71,0,100,10, - 100,11,132,0,100,11,131,2,90,9,71,0,100,12,100,13, - 132,0,100,13,131,2,90,10,100,14,100,15,132,0,90,11, - 100,16,100,17,132,0,90,12,100,18,100,19,132,0,90,13, - 100,20,100,21,156,1,100,22,100,23,132,2,90,14,100,24, - 100,25,132,0,90,15,100,26,100,27,132,0,90,16,100,28, - 100,29,132,0,90,17,100,30,100,31,132,0,90,18,71,0, - 100,32,100,33,132,0,100,33,131,2,90,19,100,1,100,1, - 100,34,156,2,100,35,100,36,132,2,90,20,100,94,100,37, - 100,38,132,1,90,21,100,39,100,40,156,1,100,41,100,42, - 132,2,90,22,100,43,100,44,132,0,90,23,100,45,100,46, - 132,0,90,24,100,47,100,48,132,0,90,25,100,49,100,50, - 132,0,90,26,100,51,100,52,132,0,90,27,100,53,100,54, - 132,0,90,28,71,0,100,55,100,56,132,0,100,56,131,2, - 90,29,71,0,100,57,100,58,132,0,100,58,131,2,90,30, - 71,0,100,59,100,60,132,0,100,60,131,2,90,31,100,61, - 100,62,132,0,90,32,100,63,100,64,132,0,90,33,100,95, - 100,65,100,66,132,1,90,34,100,67,100,68,132,0,90,35, - 100,69,90,36,101,36,100,70,23,0,90,37,100,71,100,72, - 132,0,90,38,101,39,131,0,90,40,100,73,100,74,132,0, - 90,41,100,96,100,76,100,77,132,1,90,42,100,39,100,78, - 156,1,100,79,100,80,132,2,90,43,100,81,100,82,132,0, - 90,44,100,97,100,84,100,85,132,1,90,45,100,86,100,87, - 132,0,90,46,100,88,100,89,132,0,90,47,100,90,100,91, - 132,0,90,48,100,92,100,93,132,0,90,49,100,1,83,0, - 41,98,97,83,1,0,0,67,111,114,101,32,105,109,112,108, - 101,109,101,110,116,97,116,105,111,110,32,111,102,32,105,109, - 112,111,114,116,46,10,10,84,104,105,115,32,109,111,100,117, - 108,101,32,105,115,32,78,79,84,32,109,101,97,110,116,32, - 116,111,32,98,101,32,100,105,114,101,99,116,108,121,32,105, - 109,112,111,114,116,101,100,33,32,73,116,32,104,97,115,32, - 98,101,101,110,32,100,101,115,105,103,110,101,100,32,115,117, - 99,104,10,116,104,97,116,32,105,116,32,99,97,110,32,98, - 101,32,98,111,111,116,115,116,114,97,112,112,101,100,32,105, - 110,116,111,32,80,121,116,104,111,110,32,97,115,32,116,104, - 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 32,111,102,32,105,109,112,111,114,116,46,32,65,115,10,115, - 117,99,104,32,105,116,32,114,101,113,117,105,114,101,115,32, - 116,104,101,32,105,110,106,101,99,116,105,111,110,32,111,102, - 32,115,112,101,99,105,102,105,99,32,109,111,100,117,108,101, - 115,32,97,110,100,32,97,116,116,114,105,98,117,116,101,115, - 32,105,110,32,111,114,100,101,114,32,116,111,10,119,111,114, - 107,46,32,79,110,101,32,115,104,111,117,108,100,32,117,115, - 101,32,105,109,112,111,114,116,108,105,98,32,97,115,32,116, - 104,101,32,112,117,98,108,105,99,45,102,97,99,105,110,103, - 32,118,101,114,115,105,111,110,32,111,102,32,116,104,105,115, - 32,109,111,100,117,108,101,46,10,10,78,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,7,0,0,0, - 67,0,0,0,115,56,0,0,0,100,1,68,0,93,32,125, - 2,116,0,124,1,124,2,131,2,114,4,116,1,124,0,124, - 2,116,2,124,1,124,2,131,2,131,3,1,0,113,4,124, - 0,106,3,160,4,124,1,106,3,161,1,1,0,100,2,83, - 0,41,3,122,47,83,105,109,112,108,101,32,115,117,98,115, - 116,105,116,117,116,101,32,102,111,114,32,102,117,110,99,116, - 111,111,108,115,46,117,112,100,97,116,101,95,119,114,97,112, - 112,101,114,46,41,4,218,10,95,95,109,111,100,117,108,101, - 95,95,218,8,95,95,110,97,109,101,95,95,218,12,95,95, - 113,117,97,108,110,97,109,101,95,95,218,7,95,95,100,111, - 99,95,95,78,41,5,218,7,104,97,115,97,116,116,114,218, - 7,115,101,116,97,116,116,114,218,7,103,101,116,97,116,116, - 114,218,8,95,95,100,105,99,116,95,95,218,6,117,112,100, - 97,116,101,41,3,90,3,110,101,119,90,3,111,108,100,218, - 7,114,101,112,108,97,99,101,169,0,114,10,0,0,0,250, - 29,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, - 105,98,46,95,98,111,111,116,115,116,114,97,112,62,218,5, - 95,119,114,97,112,27,0,0,0,115,8,0,0,0,0,2, - 8,1,10,1,20,1,114,12,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, - 67,0,0,0,115,12,0,0,0,116,0,116,1,131,1,124, - 0,131,1,83,0,169,1,78,41,2,218,4,116,121,112,101, - 218,3,115,121,115,169,1,218,4,110,97,109,101,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,11,95,110, - 101,119,95,109,111,100,117,108,101,35,0,0,0,115,2,0, - 0,0,0,1,114,18,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0, - 0,0,115,12,0,0,0,101,0,90,1,100,0,90,2,100, - 1,83,0,41,2,218,14,95,68,101,97,100,108,111,99,107, - 69,114,114,111,114,78,41,3,114,1,0,0,0,114,0,0, - 0,0,114,2,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,19,0,0,0, - 48,0,0,0,115,2,0,0,0,8,1,114,19,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,64,0,0,0,115,56,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, - 90,4,100,4,100,5,132,0,90,5,100,6,100,7,132,0, - 90,6,100,8,100,9,132,0,90,7,100,10,100,11,132,0, - 90,8,100,12,83,0,41,13,218,11,95,77,111,100,117,108, - 101,76,111,99,107,122,169,65,32,114,101,99,117,114,115,105, - 118,101,32,108,111,99,107,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,119,104,105,99,104,32,105,115,32, - 97,98,108,101,32,116,111,32,100,101,116,101,99,116,32,100, - 101,97,100,108,111,99,107,115,10,32,32,32,32,40,101,46, - 103,46,32,116,104,114,101,97,100,32,49,32,116,114,121,105, - 110,103,32,116,111,32,116,97,107,101,32,108,111,99,107,115, - 32,65,32,116,104,101,110,32,66,44,32,97,110,100,32,116, - 104,114,101,97,100,32,50,32,116,114,121,105,110,103,32,116, - 111,10,32,32,32,32,116,97,107,101,32,108,111,99,107,115, - 32,66,32,116,104,101,110,32,65,41,46,10,32,32,32,32, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,2,0,0,0,67,0,0,0,115,48,0,0,0,116,0, - 160,1,161,0,124,0,95,2,116,0,160,1,161,0,124,0, - 95,3,124,1,124,0,95,4,100,0,124,0,95,5,100,1, - 124,0,95,6,100,1,124,0,95,7,100,0,83,0,169,2, - 78,233,0,0,0,0,41,8,218,7,95,116,104,114,101,97, - 100,90,13,97,108,108,111,99,97,116,101,95,108,111,99,107, - 218,4,108,111,99,107,218,6,119,97,107,101,117,112,114,17, - 0,0,0,218,5,111,119,110,101,114,218,5,99,111,117,110, - 116,218,7,119,97,105,116,101,114,115,169,2,218,4,115,101, - 108,102,114,17,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,8,95,95,105,110,105,116,95,95, - 58,0,0,0,115,12,0,0,0,0,1,10,1,10,1,6, - 1,6,1,6,1,122,20,95,77,111,100,117,108,101,76,111, - 99,107,46,95,95,105,110,105,116,95,95,99,1,0,0,0, - 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, - 67,0,0,0,115,88,0,0,0,116,0,160,1,161,0,125, - 1,124,0,106,2,125,2,116,3,131,0,125,3,116,4,160, - 5,124,2,161,1,125,4,124,4,100,0,117,0,114,42,100, - 1,83,0,124,4,106,2,125,2,124,2,124,1,107,2,114, - 60,100,2,83,0,124,2,124,3,118,0,114,72,100,1,83, - 0,124,3,160,6,124,2,161,1,1,0,113,20,100,0,83, - 0,41,3,78,70,84,41,7,114,23,0,0,0,218,9,103, - 101,116,95,105,100,101,110,116,114,26,0,0,0,218,3,115, - 101,116,218,12,95,98,108,111,99,107,105,110,103,95,111,110, - 218,3,103,101,116,218,3,97,100,100,41,5,114,30,0,0, - 0,90,2,109,101,218,3,116,105,100,90,4,115,101,101,110, - 114,24,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,12,104,97,115,95,100,101,97,100,108,111, - 99,107,66,0,0,0,115,24,0,0,0,0,2,8,1,6, - 1,6,2,10,1,8,1,4,1,6,1,8,1,4,1,8, - 6,4,1,122,24,95,77,111,100,117,108,101,76,111,99,107, - 46,104,97,115,95,100,101,97,100,108,111,99,107,99,1,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0, - 0,0,67,0,0,0,115,210,0,0,0,116,0,160,1,161, - 0,125,1,124,0,116,2,124,1,60,0,122,180,124,0,106, - 3,143,126,1,0,124,0,106,4,100,1,107,2,115,46,124, - 0,106,5,124,1,107,2,114,90,124,1,124,0,95,5,124, - 0,4,0,106,4,100,2,55,0,2,0,95,4,87,0,100, - 3,4,0,4,0,131,3,1,0,87,0,116,2,124,1,61, - 0,100,4,83,0,124,0,160,6,161,0,114,110,116,7,100, - 5,124,0,22,0,131,1,130,1,124,0,106,8,160,9,100, - 6,161,1,114,136,124,0,4,0,106,10,100,2,55,0,2, - 0,95,10,87,0,100,3,4,0,4,0,131,3,1,0,110, - 16,49,0,115,156,48,0,1,0,1,0,1,0,89,0,1, - 0,124,0,106,8,160,9,161,0,1,0,124,0,106,8,160, - 11,161,0,1,0,113,18,87,0,116,2,124,1,61,0,110, - 8,116,2,124,1,61,0,48,0,100,3,83,0,41,7,122, - 185,10,32,32,32,32,32,32,32,32,65,99,113,117,105,114, - 101,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99, - 107,46,32,32,73,102,32,97,32,112,111,116,101,110,116,105, - 97,108,32,100,101,97,100,108,111,99,107,32,105,115,32,100, - 101,116,101,99,116,101,100,44,10,32,32,32,32,32,32,32, - 32,97,32,95,68,101,97,100,108,111,99,107,69,114,114,111, - 114,32,105,115,32,114,97,105,115,101,100,46,10,32,32,32, - 32,32,32,32,32,79,116,104,101,114,119,105,115,101,44,32, - 116,104,101,32,108,111,99,107,32,105,115,32,97,108,119,97, - 121,115,32,97,99,113,117,105,114,101,100,32,97,110,100,32, - 84,114,117,101,32,105,115,32,114,101,116,117,114,110,101,100, - 46,10,32,32,32,32,32,32,32,32,114,22,0,0,0,233, - 1,0,0,0,78,84,122,23,100,101,97,100,108,111,99,107, - 32,100,101,116,101,99,116,101,100,32,98,121,32,37,114,70, - 41,12,114,23,0,0,0,114,32,0,0,0,114,34,0,0, - 0,114,24,0,0,0,114,27,0,0,0,114,26,0,0,0, - 114,38,0,0,0,114,19,0,0,0,114,25,0,0,0,218, - 7,97,99,113,117,105,114,101,114,28,0,0,0,218,7,114, - 101,108,101,97,115,101,169,2,114,30,0,0,0,114,37,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,40,0,0,0,87,0,0,0,115,34,0,0,0,0, - 6,8,1,8,1,2,2,8,1,20,1,6,1,14,1,14, - 9,6,247,4,1,8,1,12,1,12,1,44,2,10,1,14, - 2,122,19,95,77,111,100,117,108,101,76,111,99,107,46,97, - 99,113,117,105,114,101,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,115, - 142,0,0,0,116,0,160,1,161,0,125,1,124,0,106,2, - 143,108,1,0,124,0,106,3,124,1,107,3,114,34,116,4, - 100,1,131,1,130,1,124,0,106,5,100,2,107,4,115,48, - 74,0,130,1,124,0,4,0,106,5,100,3,56,0,2,0, - 95,5,124,0,106,5,100,2,107,2,114,108,100,0,124,0, - 95,3,124,0,106,6,114,108,124,0,4,0,106,6,100,3, - 56,0,2,0,95,6,124,0,106,7,160,8,161,0,1,0, - 87,0,100,0,4,0,4,0,131,3,1,0,110,16,49,0, - 115,128,48,0,1,0,1,0,1,0,89,0,1,0,100,0, - 83,0,41,4,78,250,31,99,97,110,110,111,116,32,114,101, - 108,101,97,115,101,32,117,110,45,97,99,113,117,105,114,101, - 100,32,108,111,99,107,114,22,0,0,0,114,39,0,0,0, - 41,9,114,23,0,0,0,114,32,0,0,0,114,24,0,0, - 0,114,26,0,0,0,218,12,82,117,110,116,105,109,101,69, - 114,114,111,114,114,27,0,0,0,114,28,0,0,0,114,25, - 0,0,0,114,41,0,0,0,114,42,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,41,0,0, - 0,112,0,0,0,115,22,0,0,0,0,1,8,1,8,1, - 10,1,8,1,14,1,14,1,10,1,6,1,6,1,14,1, - 122,19,95,77,111,100,117,108,101,76,111,99,107,46,114,101, - 108,101,97,115,101,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,5,0,0,0,67,0,0,0,115,18, - 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, - 1,161,2,83,0,41,2,78,122,23,95,77,111,100,117,108, - 101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,123, - 125,169,3,218,6,102,111,114,109,97,116,114,17,0,0,0, - 218,2,105,100,169,1,114,30,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,8,95,95,114,101, - 112,114,95,95,125,0,0,0,115,2,0,0,0,0,1,122, - 20,95,77,111,100,117,108,101,76,111,99,107,46,95,95,114, - 101,112,114,95,95,78,41,9,114,1,0,0,0,114,0,0, - 0,0,114,2,0,0,0,114,3,0,0,0,114,31,0,0, - 0,114,38,0,0,0,114,40,0,0,0,114,41,0,0,0, - 114,49,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,20,0,0,0,52,0, - 0,0,115,12,0,0,0,8,1,4,5,8,8,8,21,8, - 25,8,13,114,20,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, - 0,115,48,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0, - 90,5,100,6,100,7,132,0,90,6,100,8,100,9,132,0, - 90,7,100,10,83,0,41,11,218,16,95,68,117,109,109,121, - 77,111,100,117,108,101,76,111,99,107,122,86,65,32,115,105, - 109,112,108,101,32,95,77,111,100,117,108,101,76,111,99,107, - 32,101,113,117,105,118,97,108,101,110,116,32,102,111,114,32, - 80,121,116,104,111,110,32,98,117,105,108,100,115,32,119,105, - 116,104,111,117,116,10,32,32,32,32,109,117,108,116,105,45, - 116,104,114,101,97,100,105,110,103,32,115,117,112,112,111,114, - 116,46,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, - 124,1,124,0,95,0,100,1,124,0,95,1,100,0,83,0, - 114,21,0,0,0,41,2,114,17,0,0,0,114,27,0,0, - 0,114,29,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,31,0,0,0,133,0,0,0,115,4, - 0,0,0,0,1,6,1,122,25,95,68,117,109,109,121,77, - 111,100,117,108,101,76,111,99,107,46,95,95,105,110,105,116, - 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,115,18,0,0,0, - 124,0,4,0,106,0,100,1,55,0,2,0,95,0,100,2, - 83,0,41,3,78,114,39,0,0,0,84,41,1,114,27,0, - 0,0,114,48,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,40,0,0,0,137,0,0,0,115, - 4,0,0,0,0,1,14,1,122,24,95,68,117,109,109,121, - 77,111,100,117,108,101,76,111,99,107,46,97,99,113,117,105, - 114,101,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,115,36,0,0,0, - 124,0,106,0,100,1,107,2,114,18,116,1,100,2,131,1, - 130,1,124,0,4,0,106,0,100,3,56,0,2,0,95,0, - 100,0,83,0,41,4,78,114,22,0,0,0,114,43,0,0, - 0,114,39,0,0,0,41,2,114,27,0,0,0,114,44,0, - 0,0,114,48,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,41,0,0,0,141,0,0,0,115, - 6,0,0,0,0,1,10,1,8,1,122,24,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,46,114,101,108, - 101,97,115,101,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,5,0,0,0,67,0,0,0,115,18,0, - 0,0,100,1,160,0,124,0,106,1,116,2,124,0,131,1, - 161,2,83,0,41,2,78,122,28,95,68,117,109,109,121,77, - 111,100,117,108,101,76,111,99,107,40,123,33,114,125,41,32, - 97,116,32,123,125,114,45,0,0,0,114,48,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,49, - 0,0,0,146,0,0,0,115,2,0,0,0,0,1,122,25, - 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, - 46,95,95,114,101,112,114,95,95,78,41,8,114,1,0,0, - 0,114,0,0,0,0,114,2,0,0,0,114,3,0,0,0, - 114,31,0,0,0,114,40,0,0,0,114,41,0,0,0,114, - 49,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,50,0,0,0,129,0,0, - 0,115,10,0,0,0,8,1,4,3,8,4,8,4,8,5, - 114,50,0,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,36, - 0,0,0,101,0,90,1,100,0,90,2,100,1,100,2,132, - 0,90,3,100,3,100,4,132,0,90,4,100,5,100,6,132, - 0,90,5,100,7,83,0,41,8,218,18,95,77,111,100,117, - 108,101,76,111,99,107,77,97,110,97,103,101,114,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, - 0,0,67,0,0,0,115,16,0,0,0,124,1,124,0,95, - 0,100,0,124,0,95,1,100,0,83,0,114,13,0,0,0, - 41,2,218,5,95,110,97,109,101,218,5,95,108,111,99,107, - 114,29,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,31,0,0,0,152,0,0,0,115,4,0, - 0,0,0,1,6,1,122,27,95,77,111,100,117,108,101,76, - 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,2,0,0,0,67,0,0,0,115,26,0,0, - 0,116,0,124,0,106,1,131,1,124,0,95,2,124,0,106, - 2,160,3,161,0,1,0,100,0,83,0,114,13,0,0,0, - 41,4,218,16,95,103,101,116,95,109,111,100,117,108,101,95, - 108,111,99,107,114,52,0,0,0,114,53,0,0,0,114,40, - 0,0,0,114,48,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,9,95,95,101,110,116,101,114, - 95,95,156,0,0,0,115,4,0,0,0,0,1,12,1,122, - 28,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, - 103,101,114,46,95,95,101,110,116,101,114,95,95,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0, - 0,0,79,0,0,0,115,14,0,0,0,124,0,106,0,160, - 1,161,0,1,0,100,0,83,0,114,13,0,0,0,41,2, - 114,53,0,0,0,114,41,0,0,0,41,3,114,30,0,0, - 0,218,4,97,114,103,115,90,6,107,119,97,114,103,115,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,8, - 95,95,101,120,105,116,95,95,160,0,0,0,115,2,0,0, - 0,0,1,122,27,95,77,111,100,117,108,101,76,111,99,107, - 77,97,110,97,103,101,114,46,95,95,101,120,105,116,95,95, - 78,41,6,114,1,0,0,0,114,0,0,0,0,114,2,0, - 0,0,114,31,0,0,0,114,55,0,0,0,114,57,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,51,0,0,0,150,0,0,0,115,6, - 0,0,0,8,2,8,4,8,4,114,51,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,8, - 0,0,0,67,0,0,0,115,136,0,0,0,116,0,160,1, - 161,0,1,0,122,112,122,14,116,2,124,0,25,0,131,0, - 125,1,87,0,110,22,4,0,116,3,121,46,1,0,1,0, - 1,0,100,1,125,1,89,0,110,2,48,0,124,1,100,1, - 117,0,114,110,116,4,100,1,117,0,114,74,116,5,124,0, - 131,1,125,1,110,8,116,6,124,0,131,1,125,1,124,0, - 102,1,100,2,100,3,132,1,125,2,116,7,160,8,124,1, - 124,2,161,2,116,2,124,0,60,0,87,0,116,0,160,9, - 161,0,1,0,110,10,116,0,160,9,161,0,1,0,48,0, - 124,1,83,0,41,4,122,139,71,101,116,32,111,114,32,99, - 114,101,97,116,101,32,116,104,101,32,109,111,100,117,108,101, - 32,108,111,99,107,32,102,111,114,32,97,32,103,105,118,101, - 110,32,109,111,100,117,108,101,32,110,97,109,101,46,10,10, - 32,32,32,32,65,99,113,117,105,114,101,47,114,101,108,101, - 97,115,101,32,105,110,116,101,114,110,97,108,108,121,32,116, - 104,101,32,103,108,111,98,97,108,32,105,109,112,111,114,116, - 32,108,111,99,107,32,116,111,32,112,114,111,116,101,99,116, - 10,32,32,32,32,95,109,111,100,117,108,101,95,108,111,99, - 107,115,46,78,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,8,0,0,0,83,0,0,0,115,56,0, - 0,0,116,0,160,1,161,0,1,0,122,32,116,2,160,3, - 124,1,161,1,124,0,117,0,114,30,116,2,124,1,61,0, - 87,0,116,0,160,4,161,0,1,0,110,10,116,0,160,4, - 161,0,1,0,48,0,100,0,83,0,114,13,0,0,0,41, - 5,218,4,95,105,109,112,218,12,97,99,113,117,105,114,101, - 95,108,111,99,107,218,13,95,109,111,100,117,108,101,95,108, - 111,99,107,115,114,35,0,0,0,218,12,114,101,108,101,97, - 115,101,95,108,111,99,107,41,2,218,3,114,101,102,114,17, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,2,99,98,185,0,0,0,115,10,0,0,0,0, - 1,8,1,2,4,14,1,8,2,122,28,95,103,101,116,95, - 109,111,100,117,108,101,95,108,111,99,107,46,60,108,111,99, - 97,108,115,62,46,99,98,41,10,114,58,0,0,0,114,59, - 0,0,0,114,60,0,0,0,218,8,75,101,121,69,114,114, - 111,114,114,23,0,0,0,114,50,0,0,0,114,20,0,0, - 0,218,8,95,119,101,97,107,114,101,102,114,62,0,0,0, - 114,61,0,0,0,41,3,114,17,0,0,0,114,24,0,0, - 0,114,63,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,54,0,0,0,166,0,0,0,115,28, - 0,0,0,0,6,8,1,2,1,2,1,14,1,12,1,10, - 2,8,1,8,1,10,2,8,2,12,11,18,2,20,2,114, - 54,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,8,0,0,0,67,0,0,0,115,52,0, - 0,0,116,0,124,0,131,1,125,1,122,12,124,1,160,1, - 161,0,1,0,87,0,110,18,4,0,116,2,121,38,1,0, - 1,0,1,0,89,0,110,10,48,0,124,1,160,3,161,0, - 1,0,100,1,83,0,41,2,122,189,65,99,113,117,105,114, - 101,115,32,116,104,101,110,32,114,101,108,101,97,115,101,115, - 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, - 32,102,111,114,32,97,32,103,105,118,101,110,32,109,111,100, - 117,108,101,32,110,97,109,101,46,10,10,32,32,32,32,84, - 104,105,115,32,105,115,32,117,115,101,100,32,116,111,32,101, - 110,115,117,114,101,32,97,32,109,111,100,117,108,101,32,105, - 115,32,99,111,109,112,108,101,116,101,108,121,32,105,110,105, - 116,105,97,108,105,122,101,100,44,32,105,110,32,116,104,101, - 10,32,32,32,32,101,118,101,110,116,32,105,116,32,105,115, - 32,98,101,105,110,103,32,105,109,112,111,114,116,101,100,32, - 98,121,32,97,110,111,116,104,101,114,32,116,104,114,101,97, - 100,46,10,32,32,32,32,78,41,4,114,54,0,0,0,114, - 40,0,0,0,114,19,0,0,0,114,41,0,0,0,41,2, - 114,17,0,0,0,114,24,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,19,95,108,111,99,107, - 95,117,110,108,111,99,107,95,109,111,100,117,108,101,203,0, - 0,0,115,12,0,0,0,0,6,8,1,2,1,12,1,12, - 3,6,2,114,66,0,0,0,99,1,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,4,0,0,0,79,0,0, - 0,115,14,0,0,0,124,0,124,1,105,0,124,2,164,1, - 142,1,83,0,41,1,97,46,1,0,0,114,101,109,111,118, - 101,95,105,109,112,111,114,116,108,105,98,95,102,114,97,109, - 101,115,32,105,110,32,105,109,112,111,114,116,46,99,32,119, - 105,108,108,32,97,108,119,97,121,115,32,114,101,109,111,118, - 101,32,115,101,113,117,101,110,99,101,115,10,32,32,32,32, - 111,102,32,105,109,112,111,114,116,108,105,98,32,102,114,97, - 109,101,115,32,116,104,97,116,32,101,110,100,32,119,105,116, - 104,32,97,32,99,97,108,108,32,116,111,32,116,104,105,115, - 32,102,117,110,99,116,105,111,110,10,10,32,32,32,32,85, - 115,101,32,105,116,32,105,110,115,116,101,97,100,32,111,102, - 32,97,32,110,111,114,109,97,108,32,99,97,108,108,32,105, - 110,32,112,108,97,99,101,115,32,119,104,101,114,101,32,105, - 110,99,108,117,100,105,110,103,32,116,104,101,32,105,109,112, - 111,114,116,108,105,98,10,32,32,32,32,102,114,97,109,101, - 115,32,105,110,116,114,111,100,117,99,101,115,32,117,110,119, - 97,110,116,101,100,32,110,111,105,115,101,32,105,110,116,111, - 32,116,104,101,32,116,114,97,99,101,98,97,99,107,32,40, - 101,46,103,46,32,119,104,101,110,32,101,120,101,99,117,116, - 105,110,103,10,32,32,32,32,109,111,100,117,108,101,32,99, - 111,100,101,41,10,32,32,32,32,114,10,0,0,0,41,3, - 218,1,102,114,56,0,0,0,90,4,107,119,100,115,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,218,25,95, - 99,97,108,108,95,119,105,116,104,95,102,114,97,109,101,115, - 95,114,101,109,111,118,101,100,220,0,0,0,115,2,0,0, - 0,0,8,114,68,0,0,0,114,39,0,0,0,41,1,218, - 9,118,101,114,98,111,115,105,116,121,99,1,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,71, - 0,0,0,115,54,0,0,0,116,0,106,1,106,2,124,1, - 107,5,114,50,124,0,160,3,100,1,161,1,115,30,100,2, - 124,0,23,0,125,0,116,4,124,0,106,5,124,2,142,0, - 116,0,106,6,100,3,141,2,1,0,100,4,83,0,41,5, - 122,61,80,114,105,110,116,32,116,104,101,32,109,101,115,115, - 97,103,101,32,116,111,32,115,116,100,101,114,114,32,105,102, - 32,45,118,47,80,89,84,72,79,78,86,69,82,66,79,83, - 69,32,105,115,32,116,117,114,110,101,100,32,111,110,46,41, - 2,250,1,35,122,7,105,109,112,111,114,116,32,122,2,35, - 32,41,1,90,4,102,105,108,101,78,41,7,114,15,0,0, - 0,218,5,102,108,97,103,115,218,7,118,101,114,98,111,115, - 101,218,10,115,116,97,114,116,115,119,105,116,104,218,5,112, - 114,105,110,116,114,46,0,0,0,218,6,115,116,100,101,114, - 114,41,3,218,7,109,101,115,115,97,103,101,114,69,0,0, - 0,114,56,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,16,95,118,101,114,98,111,115,101,95, - 109,101,115,115,97,103,101,231,0,0,0,115,8,0,0,0, - 0,2,12,1,10,1,8,1,114,77,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, - 0,0,3,0,0,0,115,26,0,0,0,135,0,102,1,100, - 1,100,2,132,8,125,1,116,0,124,1,136,0,131,2,1, - 0,124,1,83,0,41,3,122,49,68,101,99,111,114,97,116, - 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, - 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, - 32,98,117,105,108,116,45,105,110,46,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,19, - 0,0,0,115,38,0,0,0,124,1,116,0,106,1,118,1, - 114,28,116,2,100,1,160,3,124,1,161,1,124,1,100,2, - 141,2,130,1,136,0,124,0,124,1,131,2,83,0,41,3, - 78,250,29,123,33,114,125,32,105,115,32,110,111,116,32,97, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 114,16,0,0,0,41,4,114,15,0,0,0,218,20,98,117, - 105,108,116,105,110,95,109,111,100,117,108,101,95,110,97,109, - 101,115,218,11,73,109,112,111,114,116,69,114,114,111,114,114, - 46,0,0,0,169,2,114,30,0,0,0,218,8,102,117,108, - 108,110,97,109,101,169,1,218,3,102,120,110,114,10,0,0, - 0,114,11,0,0,0,218,25,95,114,101,113,117,105,114,101, - 115,95,98,117,105,108,116,105,110,95,119,114,97,112,112,101, - 114,241,0,0,0,115,10,0,0,0,0,1,10,1,10,1, - 2,255,6,2,122,52,95,114,101,113,117,105,114,101,115,95, - 98,117,105,108,116,105,110,46,60,108,111,99,97,108,115,62, - 46,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, - 105,110,95,119,114,97,112,112,101,114,169,1,114,12,0,0, - 0,41,2,114,84,0,0,0,114,85,0,0,0,114,10,0, - 0,0,114,83,0,0,0,114,11,0,0,0,218,17,95,114, - 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,239, - 0,0,0,115,6,0,0,0,0,2,12,5,10,1,114,87, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,3,0,0,0,115,26,0,0, - 0,135,0,102,1,100,1,100,2,132,8,125,1,116,0,124, - 1,136,0,131,2,1,0,124,1,83,0,41,3,122,47,68, - 101,99,111,114,97,116,111,114,32,116,111,32,118,101,114,105, - 102,121,32,116,104,101,32,110,97,109,101,100,32,109,111,100, - 117,108,101,32,105,115,32,102,114,111,122,101,110,46,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,19,0,0,0,115,38,0,0,0,116,0,160,1, - 124,1,161,1,115,28,116,2,100,1,160,3,124,1,161,1, - 124,1,100,2,141,2,130,1,136,0,124,0,124,1,131,2, - 83,0,169,3,78,122,27,123,33,114,125,32,105,115,32,110, - 111,116,32,97,32,102,114,111,122,101,110,32,109,111,100,117, - 108,101,114,16,0,0,0,41,4,114,58,0,0,0,218,9, - 105,115,95,102,114,111,122,101,110,114,80,0,0,0,114,46, - 0,0,0,114,81,0,0,0,114,83,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,24,95,114,101,113,117,105,114, - 101,115,95,102,114,111,122,101,110,95,119,114,97,112,112,101, - 114,252,0,0,0,115,10,0,0,0,0,1,10,1,10,1, - 2,255,6,2,122,50,95,114,101,113,117,105,114,101,115,95, - 102,114,111,122,101,110,46,60,108,111,99,97,108,115,62,46, - 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, - 95,119,114,97,112,112,101,114,114,86,0,0,0,41,2,114, - 84,0,0,0,114,90,0,0,0,114,10,0,0,0,114,83, - 0,0,0,114,11,0,0,0,218,16,95,114,101,113,117,105, - 114,101,115,95,102,114,111,122,101,110,250,0,0,0,115,6, - 0,0,0,0,2,12,5,10,1,114,91,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, - 0,0,0,67,0,0,0,115,62,0,0,0,116,0,124,1, - 124,0,131,2,125,2,124,1,116,1,106,2,118,0,114,50, - 116,1,106,2,124,1,25,0,125,3,116,3,124,2,124,3, - 131,2,1,0,116,1,106,2,124,1,25,0,83,0,116,4, - 124,2,131,1,83,0,100,1,83,0,41,2,122,128,76,111, - 97,100,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 32,109,111,100,117,108,101,32,105,110,116,111,32,115,121,115, - 46,109,111,100,117,108,101,115,32,97,110,100,32,114,101,116, - 117,114,110,32,105,116,46,10,10,32,32,32,32,84,104,105, - 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,46,32,32,85,115,101,32,108,111,97, - 100,101,114,46,101,120,101,99,95,109,111,100,117,108,101,32, - 105,110,115,116,101,97,100,46,10,10,32,32,32,32,78,41, - 5,218,16,115,112,101,99,95,102,114,111,109,95,108,111,97, - 100,101,114,114,15,0,0,0,218,7,109,111,100,117,108,101, - 115,218,5,95,101,120,101,99,218,5,95,108,111,97,100,41, - 4,114,30,0,0,0,114,82,0,0,0,218,4,115,112,101, - 99,218,6,109,111,100,117,108,101,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,218,17,95,108,111,97,100,95, - 109,111,100,117,108,101,95,115,104,105,109,6,1,0,0,115, - 12,0,0,0,0,6,10,1,10,1,10,1,10,1,10,2, - 114,98,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,8,0,0,0,67,0,0,0,115,218, - 0,0,0,116,0,124,0,100,1,100,0,131,3,125,1,116, - 1,124,1,100,2,131,2,114,54,122,12,124,1,160,2,124, - 0,161,1,87,0,83,0,4,0,116,3,121,52,1,0,1, - 0,1,0,89,0,110,2,48,0,122,10,124,0,106,4,125, - 2,87,0,110,18,4,0,116,5,121,82,1,0,1,0,1, - 0,89,0,110,18,48,0,124,2,100,0,117,1,114,100,116, - 6,124,2,131,1,83,0,122,10,124,0,106,7,125,3,87, - 0,110,22,4,0,116,5,121,132,1,0,1,0,1,0,100, - 3,125,3,89,0,110,2,48,0,122,10,124,0,106,8,125, - 4,87,0,110,56,4,0,116,5,121,200,1,0,1,0,1, - 0,124,1,100,0,117,0,114,180,100,4,160,9,124,3,161, - 1,6,0,89,0,83,0,100,5,160,9,124,3,124,1,161, - 2,6,0,89,0,83,0,89,0,110,14,48,0,100,6,160, - 9,124,3,124,4,161,2,83,0,100,0,83,0,41,7,78, - 218,10,95,95,108,111,97,100,101,114,95,95,218,11,109,111, - 100,117,108,101,95,114,101,112,114,250,1,63,250,13,60,109, - 111,100,117,108,101,32,123,33,114,125,62,250,20,60,109,111, - 100,117,108,101,32,123,33,114,125,32,40,123,33,114,125,41, - 62,250,23,60,109,111,100,117,108,101,32,123,33,114,125,32, - 102,114,111,109,32,123,33,114,125,62,41,10,114,6,0,0, - 0,114,4,0,0,0,114,100,0,0,0,218,9,69,120,99, - 101,112,116,105,111,110,218,8,95,95,115,112,101,99,95,95, - 218,14,65,116,116,114,105,98,117,116,101,69,114,114,111,114, - 218,22,95,109,111,100,117,108,101,95,114,101,112,114,95,102, - 114,111,109,95,115,112,101,99,114,1,0,0,0,218,8,95, - 95,102,105,108,101,95,95,114,46,0,0,0,41,5,114,97, - 0,0,0,218,6,108,111,97,100,101,114,114,96,0,0,0, - 114,17,0,0,0,218,8,102,105,108,101,110,97,109,101,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,12, - 95,109,111,100,117,108,101,95,114,101,112,114,22,1,0,0, - 115,46,0,0,0,0,2,12,1,10,4,2,1,12,1,12, - 1,6,1,2,1,10,1,12,1,6,2,8,1,8,4,2, - 1,10,1,12,1,10,1,2,1,10,1,12,1,8,1,14, - 2,22,2,114,112,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,114,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,100,2,100,2,100,3,156,3,100,4,100,5, - 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, - 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, - 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, - 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, - 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, - 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, - 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, - 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, - 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, - 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, - 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, - 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, - 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, - 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, - 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, - 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, - 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, - 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, - 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, - 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, - 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, - 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, - 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, - 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, - 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, - 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, - 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, - 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, - 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, - 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, - 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, - 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, - 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, - 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, - 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, - 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, - 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, - 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, - 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, - 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, - 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, - 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, - 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, - 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, - 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, - 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, - 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, - 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, - 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, - 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, - 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, - 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, - 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, - 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, - 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, - 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, - 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, - 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, - 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, - 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, - 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, - 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, - 32,32,32,32,96,115,117,98,109,111,100,117,108,101,95,115, - 101,97,114,99,104,95,108,111,99,97,116,105,111,110,115,96, - 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, - 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, - 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, - 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, - 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, - 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, - 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, - 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, - 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, - 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, - 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, - 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, - 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, - 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, - 101,32,118,97,108,117,101,32,105,110,32,96,115,117,98,109, - 111,100,117,108,101,95,115,101,97,114,99,104,95,108,111,99, - 97,116,105,111,110,115,96,44,32,116,104,101,32,105,109,112, - 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, - 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, - 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, - 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, - 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, - 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, - 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, - 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, - 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, - 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, - 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, - 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, - 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, - 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, - 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, - 99,3,0,0,0,0,0,0,0,3,0,0,0,6,0,0, - 0,2,0,0,0,67,0,0,0,115,54,0,0,0,124,1, - 124,0,95,0,124,2,124,0,95,1,124,3,124,0,95,2, - 124,4,124,0,95,3,124,5,114,32,103,0,110,2,100,0, - 124,0,95,4,100,1,124,0,95,5,100,0,124,0,95,6, - 100,0,83,0,41,2,78,70,41,7,114,17,0,0,0,114, - 110,0,0,0,114,114,0,0,0,114,115,0,0,0,218,26, - 115,117,98,109,111,100,117,108,101,95,115,101,97,114,99,104, - 95,108,111,99,97,116,105,111,110,115,218,13,95,115,101,116, - 95,102,105,108,101,97,116,116,114,218,7,95,99,97,99,104, - 101,100,41,6,114,30,0,0,0,114,17,0,0,0,114,110, - 0,0,0,114,114,0,0,0,114,115,0,0,0,114,116,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,31,0,0,0,95,1,0,0,115,14,0,0,0,0, - 2,6,1,6,1,6,1,6,1,14,3,6,1,122,19,77, - 111,100,117,108,101,83,112,101,99,46,95,95,105,110,105,116, - 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,6,0,0,0,67,0,0,0,115,102,0,0,0, - 100,1,160,0,124,0,106,1,161,1,100,2,160,0,124,0, - 106,2,161,1,103,2,125,1,124,0,106,3,100,0,117,1, - 114,52,124,1,160,4,100,3,160,0,124,0,106,3,161,1, - 161,1,1,0,124,0,106,5,100,0,117,1,114,80,124,1, - 160,4,100,4,160,0,124,0,106,5,161,1,161,1,1,0, - 100,5,160,0,124,0,106,6,106,7,100,6,160,8,124,1, - 161,1,161,2,83,0,41,7,78,122,9,110,97,109,101,61, - 123,33,114,125,122,11,108,111,97,100,101,114,61,123,33,114, - 125,122,11,111,114,105,103,105,110,61,123,33,114,125,122,29, - 115,117,98,109,111,100,117,108,101,95,115,101,97,114,99,104, - 95,108,111,99,97,116,105,111,110,115,61,123,125,122,6,123, - 125,40,123,125,41,122,2,44,32,41,9,114,46,0,0,0, - 114,17,0,0,0,114,110,0,0,0,114,114,0,0,0,218, - 6,97,112,112,101,110,100,114,117,0,0,0,218,9,95,95, - 99,108,97,115,115,95,95,114,1,0,0,0,218,4,106,111, - 105,110,41,2,114,30,0,0,0,114,56,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,49,0, - 0,0,107,1,0,0,115,20,0,0,0,0,1,10,1,10, - 255,4,2,10,1,18,1,10,1,8,1,4,255,6,2,122, - 19,77,111,100,117,108,101,83,112,101,99,46,95,95,114,101, - 112,114,95,95,99,2,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,8,0,0,0,67,0,0,0,115,106,0, - 0,0,124,0,106,0,125,2,122,72,124,0,106,1,124,1, - 106,1,107,2,111,76,124,0,106,2,124,1,106,2,107,2, - 111,76,124,0,106,3,124,1,106,3,107,2,111,76,124,2, - 124,1,106,0,107,2,111,76,124,0,106,4,124,1,106,4, - 107,2,111,76,124,0,106,5,124,1,106,5,107,2,87,0, - 83,0,4,0,116,6,121,100,1,0,1,0,1,0,116,7, - 6,0,89,0,83,0,48,0,100,0,83,0,114,13,0,0, - 0,41,8,114,117,0,0,0,114,17,0,0,0,114,110,0, - 0,0,114,114,0,0,0,218,6,99,97,99,104,101,100,218, - 12,104,97,115,95,108,111,99,97,116,105,111,110,114,107,0, - 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,41,3,114,30,0,0,0,90,5,111,116,104,101,114, - 90,4,115,109,115,108,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,6,95,95,101,113,95,95,117,1,0, - 0,115,30,0,0,0,0,1,6,1,2,1,12,1,10,255, - 2,2,10,254,2,3,8,253,2,4,10,252,2,5,10,251, - 4,6,12,1,122,17,77,111,100,117,108,101,83,112,101,99, - 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, - 115,58,0,0,0,124,0,106,0,100,0,117,0,114,52,124, - 0,106,1,100,0,117,1,114,52,124,0,106,2,114,52,116, - 3,100,0,117,0,114,38,116,4,130,1,116,3,160,5,124, - 0,106,1,161,1,124,0,95,0,124,0,106,0,83,0,114, - 13,0,0,0,41,6,114,119,0,0,0,114,114,0,0,0, - 114,118,0,0,0,218,19,95,98,111,111,116,115,116,114,97, - 112,95,101,120,116,101,114,110,97,108,218,19,78,111,116,73, - 109,112,108,101,109,101,110,116,101,100,69,114,114,111,114,90, - 11,95,103,101,116,95,99,97,99,104,101,100,114,48,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,123,0,0,0,129,1,0,0,115,12,0,0,0,0,2, - 10,1,16,1,8,1,4,1,14,1,122,17,77,111,100,117, - 108,101,83,112,101,99,46,99,97,99,104,101,100,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, - 0,0,67,0,0,0,115,10,0,0,0,124,1,124,0,95, - 0,100,0,83,0,114,13,0,0,0,41,1,114,119,0,0, - 0,41,2,114,30,0,0,0,114,123,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,123,0,0, - 0,138,1,0,0,115,2,0,0,0,0,2,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,67,0,0,0,115,36,0,0,0,124,0,106,0,100,1, - 117,0,114,26,124,0,106,1,160,2,100,2,161,1,100,3, - 25,0,83,0,124,0,106,1,83,0,100,1,83,0,41,4, - 122,32,84,104,101,32,110,97,109,101,32,111,102,32,116,104, - 101,32,109,111,100,117,108,101,39,115,32,112,97,114,101,110, - 116,46,78,218,1,46,114,22,0,0,0,41,3,114,117,0, - 0,0,114,17,0,0,0,218,10,114,112,97,114,116,105,116, - 105,111,110,114,48,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,6,112,97,114,101,110,116,142, - 1,0,0,115,6,0,0,0,0,3,10,1,16,2,122,17, - 77,111,100,117,108,101,83,112,101,99,46,112,97,114,101,110, - 116,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, - 0,0,1,0,0,0,67,0,0,0,115,6,0,0,0,124, - 0,106,0,83,0,114,13,0,0,0,41,1,114,118,0,0, - 0,114,48,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,124,0,0,0,150,1,0,0,115,2, - 0,0,0,0,2,122,23,77,111,100,117,108,101,83,112,101, - 99,46,104,97,115,95,108,111,99,97,116,105,111,110,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2, - 0,0,0,67,0,0,0,115,14,0,0,0,116,0,124,1, - 131,1,124,0,95,1,100,0,83,0,114,13,0,0,0,41, - 2,218,4,98,111,111,108,114,118,0,0,0,41,2,114,30, - 0,0,0,218,5,118,97,108,117,101,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,124,0,0,0,154,1, - 0,0,115,2,0,0,0,0,2,41,12,114,1,0,0,0, - 114,0,0,0,0,114,2,0,0,0,114,3,0,0,0,114, - 31,0,0,0,114,49,0,0,0,114,126,0,0,0,218,8, - 112,114,111,112,101,114,116,121,114,123,0,0,0,218,6,115, - 101,116,116,101,114,114,131,0,0,0,114,124,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,113,0,0,0,58,1,0,0,115,32,0,0, - 0,8,1,4,36,4,1,2,255,12,12,8,10,8,12,2, - 1,10,8,4,1,10,3,2,1,10,7,2,1,10,3,4, - 1,114,113,0,0,0,169,2,114,114,0,0,0,114,116,0, - 0,0,99,2,0,0,0,0,0,0,0,2,0,0,0,6, - 0,0,0,8,0,0,0,67,0,0,0,115,152,0,0,0, - 116,0,124,1,100,1,131,2,114,74,116,1,100,2,117,0, - 114,22,116,2,130,1,116,1,106,3,125,4,124,3,100,2, - 117,0,114,48,124,4,124,0,124,1,100,3,141,2,83,0, - 124,3,114,56,103,0,110,2,100,2,125,5,124,4,124,0, - 124,1,124,5,100,4,141,3,83,0,124,3,100,2,117,0, - 114,136,116,0,124,1,100,5,131,2,114,132,122,14,124,1, - 160,4,124,0,161,1,125,3,87,0,113,136,4,0,116,5, - 121,128,1,0,1,0,1,0,100,2,125,3,89,0,113,136, - 48,0,110,4,100,6,125,3,116,6,124,0,124,1,124,2, - 124,3,100,7,141,4,83,0,41,8,122,53,82,101,116,117, - 114,110,32,97,32,109,111,100,117,108,101,32,115,112,101,99, - 32,98,97,115,101,100,32,111,110,32,118,97,114,105,111,117, - 115,32,108,111,97,100,101,114,32,109,101,116,104,111,100,115, - 46,90,12,103,101,116,95,102,105,108,101,110,97,109,101,78, - 41,1,114,110,0,0,0,41,2,114,110,0,0,0,114,117, - 0,0,0,114,116,0,0,0,70,114,136,0,0,0,41,7, - 114,4,0,0,0,114,127,0,0,0,114,128,0,0,0,218, - 23,115,112,101,99,95,102,114,111,109,95,102,105,108,101,95, - 108,111,99,97,116,105,111,110,114,116,0,0,0,114,80,0, - 0,0,114,113,0,0,0,41,6,114,17,0,0,0,114,110, - 0,0,0,114,114,0,0,0,114,116,0,0,0,114,137,0, - 0,0,90,6,115,101,97,114,99,104,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,92,0,0,0,159,1, - 0,0,115,36,0,0,0,0,2,10,1,8,1,4,1,6, - 2,8,1,12,1,12,1,6,1,2,255,6,3,8,1,10, - 1,2,1,14,1,12,1,12,3,4,2,114,92,0,0,0, - 99,3,0,0,0,0,0,0,0,0,0,0,0,8,0,0, - 0,8,0,0,0,67,0,0,0,115,42,1,0,0,122,10, - 124,0,106,0,125,3,87,0,110,18,4,0,116,1,121,28, - 1,0,1,0,1,0,89,0,110,14,48,0,124,3,100,0, - 117,1,114,42,124,3,83,0,124,0,106,2,125,4,124,1, - 100,0,117,0,114,86,122,10,124,0,106,3,125,1,87,0, - 110,18,4,0,116,1,121,84,1,0,1,0,1,0,89,0, - 110,2,48,0,122,10,124,0,106,4,125,5,87,0,110,22, - 4,0,116,1,121,118,1,0,1,0,1,0,100,0,125,5, - 89,0,110,2,48,0,124,2,100,0,117,0,114,176,124,5, - 100,0,117,0,114,172,122,10,124,1,106,5,125,2,87,0, - 113,176,4,0,116,1,121,168,1,0,1,0,1,0,100,0, - 125,2,89,0,113,176,48,0,110,4,124,5,125,2,122,10, - 124,0,106,6,125,6,87,0,110,22,4,0,116,1,121,208, - 1,0,1,0,1,0,100,0,125,6,89,0,110,2,48,0, - 122,14,116,7,124,0,106,8,131,1,125,7,87,0,110,22, - 4,0,116,1,121,246,1,0,1,0,1,0,100,0,125,7, - 89,0,110,2,48,0,116,9,124,4,124,1,124,2,100,1, - 141,3,125,3,124,5,100,0,117,0,144,1,114,20,100,2, - 110,2,100,3,124,3,95,10,124,6,124,3,95,11,124,7, - 124,3,95,12,124,3,83,0,41,4,78,169,1,114,114,0, - 0,0,70,84,41,13,114,106,0,0,0,114,107,0,0,0, - 114,1,0,0,0,114,99,0,0,0,114,109,0,0,0,218, - 7,95,79,82,73,71,73,78,218,10,95,95,99,97,99,104, - 101,100,95,95,218,4,108,105,115,116,218,8,95,95,112,97, - 116,104,95,95,114,113,0,0,0,114,118,0,0,0,114,123, - 0,0,0,114,117,0,0,0,41,8,114,97,0,0,0,114, - 110,0,0,0,114,114,0,0,0,114,96,0,0,0,114,17, - 0,0,0,90,8,108,111,99,97,116,105,111,110,114,123,0, - 0,0,114,117,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,17,95,115,112,101,99,95,102,114, - 111,109,95,109,111,100,117,108,101,185,1,0,0,115,72,0, - 0,0,0,2,2,1,10,1,12,1,6,2,8,1,4,2, - 6,1,8,1,2,1,10,1,12,2,6,1,2,1,10,1, - 12,1,10,1,8,1,8,1,2,1,10,1,12,1,12,2, - 4,1,2,1,10,1,12,1,10,1,2,1,14,1,12,1, - 10,2,14,1,20,1,6,1,6,1,114,143,0,0,0,70, - 169,1,218,8,111,118,101,114,114,105,100,101,99,2,0,0, - 0,0,0,0,0,1,0,0,0,5,0,0,0,8,0,0, - 0,67,0,0,0,115,210,1,0,0,124,2,115,20,116,0, - 124,1,100,1,100,0,131,3,100,0,117,0,114,52,122,12, - 124,0,106,1,124,1,95,2,87,0,110,18,4,0,116,3, - 121,50,1,0,1,0,1,0,89,0,110,2,48,0,124,2, - 115,72,116,0,124,1,100,2,100,0,131,3,100,0,117,0, - 114,174,124,0,106,4,125,3,124,3,100,0,117,0,114,144, - 124,0,106,5,100,0,117,1,114,144,116,6,100,0,117,0, - 114,108,116,7,130,1,116,6,106,8,125,4,124,4,160,9, - 124,4,161,1,125,3,124,0,106,5,124,3,95,10,124,3, - 124,0,95,4,100,0,124,1,95,11,122,10,124,3,124,1, - 95,12,87,0,110,18,4,0,116,3,121,172,1,0,1,0, - 1,0,89,0,110,2,48,0,124,2,115,194,116,0,124,1, - 100,3,100,0,131,3,100,0,117,0,114,226,122,12,124,0, - 106,13,124,1,95,14,87,0,110,18,4,0,116,3,121,224, - 1,0,1,0,1,0,89,0,110,2,48,0,122,10,124,0, - 124,1,95,15,87,0,110,18,4,0,116,3,121,254,1,0, - 1,0,1,0,89,0,110,2,48,0,124,2,144,1,115,24, - 116,0,124,1,100,4,100,0,131,3,100,0,117,0,144,1, - 114,70,124,0,106,5,100,0,117,1,144,1,114,70,122,12, - 124,0,106,5,124,1,95,16,87,0,110,20,4,0,116,3, - 144,1,121,68,1,0,1,0,1,0,89,0,110,2,48,0, - 124,0,106,17,144,1,114,206,124,2,144,1,115,102,116,0, - 124,1,100,5,100,0,131,3,100,0,117,0,144,1,114,136, - 122,12,124,0,106,18,124,1,95,11,87,0,110,20,4,0, - 116,3,144,1,121,134,1,0,1,0,1,0,89,0,110,2, - 48,0,124,2,144,1,115,160,116,0,124,1,100,6,100,0, - 131,3,100,0,117,0,144,1,114,206,124,0,106,19,100,0, - 117,1,144,1,114,206,122,12,124,0,106,19,124,1,95,20, - 87,0,110,20,4,0,116,3,144,1,121,204,1,0,1,0, - 1,0,89,0,110,2,48,0,124,1,83,0,41,7,78,114, - 1,0,0,0,114,99,0,0,0,218,11,95,95,112,97,99, - 107,97,103,101,95,95,114,142,0,0,0,114,109,0,0,0, - 114,140,0,0,0,41,21,114,6,0,0,0,114,17,0,0, - 0,114,1,0,0,0,114,107,0,0,0,114,110,0,0,0, - 114,117,0,0,0,114,127,0,0,0,114,128,0,0,0,218, - 16,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, - 114,218,7,95,95,110,101,119,95,95,90,5,95,112,97,116, - 104,114,109,0,0,0,114,99,0,0,0,114,131,0,0,0, - 114,146,0,0,0,114,106,0,0,0,114,142,0,0,0,114, - 124,0,0,0,114,114,0,0,0,114,123,0,0,0,114,140, - 0,0,0,41,5,114,96,0,0,0,114,97,0,0,0,114, - 145,0,0,0,114,110,0,0,0,114,147,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,218,18,95, - 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114, - 115,230,1,0,0,115,96,0,0,0,0,4,20,1,2,1, - 12,1,12,1,6,2,20,1,6,1,8,2,10,1,8,1, - 4,1,6,2,10,1,8,1,6,11,6,1,2,1,10,1, - 12,1,6,2,20,1,2,1,12,1,12,1,6,2,2,1, - 10,1,12,1,6,2,24,1,12,1,2,1,12,1,14,1, - 6,2,8,1,24,1,2,1,12,1,14,1,6,2,24,1, - 12,1,2,1,12,1,14,1,6,1,114,149,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 3,0,0,0,67,0,0,0,115,82,0,0,0,100,1,125, - 1,116,0,124,0,106,1,100,2,131,2,114,30,124,0,106, - 1,160,2,124,0,161,1,125,1,110,20,116,0,124,0,106, - 1,100,3,131,2,114,50,116,3,100,4,131,1,130,1,124, - 1,100,1,117,0,114,68,116,4,124,0,106,5,131,1,125, - 1,116,6,124,0,124,1,131,2,1,0,124,1,83,0,41, - 5,122,43,67,114,101,97,116,101,32,97,32,109,111,100,117, - 108,101,32,98,97,115,101,100,32,111,110,32,116,104,101,32, - 112,114,111,118,105,100,101,100,32,115,112,101,99,46,78,218, - 13,99,114,101,97,116,101,95,109,111,100,117,108,101,218,11, - 101,120,101,99,95,109,111,100,117,108,101,122,66,108,111,97, - 100,101,114,115,32,116,104,97,116,32,100,101,102,105,110,101, - 32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,109, - 117,115,116,32,97,108,115,111,32,100,101,102,105,110,101,32, - 99,114,101,97,116,101,95,109,111,100,117,108,101,40,41,41, - 7,114,4,0,0,0,114,110,0,0,0,114,150,0,0,0, - 114,80,0,0,0,114,18,0,0,0,114,17,0,0,0,114, - 149,0,0,0,169,2,114,96,0,0,0,114,97,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, - 16,109,111,100,117,108,101,95,102,114,111,109,95,115,112,101, - 99,46,2,0,0,115,18,0,0,0,0,3,4,1,12,3, - 14,1,12,1,8,2,8,1,10,1,10,1,114,153,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,67,0,0,0,115,106,0,0,0,124, - 0,106,0,100,1,117,0,114,14,100,2,110,4,124,0,106, - 0,125,1,124,0,106,1,100,1,117,0,114,66,124,0,106, - 2,100,1,117,0,114,50,100,3,160,3,124,1,161,1,83, - 0,100,4,160,3,124,1,124,0,106,2,161,2,83,0,110, - 36,124,0,106,4,114,86,100,5,160,3,124,1,124,0,106, - 1,161,2,83,0,100,6,160,3,124,0,106,0,124,0,106, - 1,161,2,83,0,100,1,83,0,41,7,122,38,82,101,116, - 117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32, - 117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117, - 108,101,46,78,114,101,0,0,0,114,102,0,0,0,114,103, - 0,0,0,114,104,0,0,0,250,18,60,109,111,100,117,108, - 101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,17, - 0,0,0,114,114,0,0,0,114,110,0,0,0,114,46,0, - 0,0,114,124,0,0,0,41,2,114,96,0,0,0,114,17, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,108,0,0,0,63,2,0,0,115,16,0,0,0, - 0,3,20,1,10,1,10,1,10,2,16,2,6,1,14,2, - 114,108,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,10,0,0,0,67,0,0,0,115,250, - 0,0,0,124,0,106,0,125,2,116,1,124,2,131,1,143, - 216,1,0,116,2,106,3,160,4,124,2,161,1,124,1,117, - 1,114,54,100,1,160,5,124,2,161,1,125,3,116,6,124, - 3,124,2,100,2,141,2,130,1,122,132,124,0,106,7,100, - 3,117,0,114,106,124,0,106,8,100,3,117,0,114,90,116, - 6,100,4,124,0,106,0,100,2,141,2,130,1,116,9,124, - 0,124,1,100,5,100,6,141,3,1,0,110,52,116,9,124, - 0,124,1,100,5,100,6,141,3,1,0,116,10,124,0,106, - 7,100,7,131,2,115,146,124,0,106,7,160,11,124,2,161, - 1,1,0,110,12,124,0,106,7,160,12,124,1,161,1,1, - 0,87,0,116,2,106,3,160,13,124,0,106,0,161,1,125, - 1,124,1,116,2,106,3,124,0,106,0,60,0,110,28,116, - 2,106,3,160,13,124,0,106,0,161,1,125,1,124,1,116, - 2,106,3,124,0,106,0,60,0,48,0,87,0,100,3,4, - 0,4,0,131,3,1,0,110,16,49,0,115,236,48,0,1, - 0,1,0,1,0,89,0,1,0,124,1,83,0,41,8,122, - 70,69,120,101,99,117,116,101,32,116,104,101,32,115,112,101, - 99,39,115,32,115,112,101,99,105,102,105,101,100,32,109,111, - 100,117,108,101,32,105,110,32,97,110,32,101,120,105,115,116, - 105,110,103,32,109,111,100,117,108,101,39,115,32,110,97,109, - 101,115,112,97,99,101,46,122,30,109,111,100,117,108,101,32, - 123,33,114,125,32,110,111,116,32,105,110,32,115,121,115,46, - 109,111,100,117,108,101,115,114,16,0,0,0,78,250,14,109, - 105,115,115,105,110,103,32,108,111,97,100,101,114,84,114,144, - 0,0,0,114,151,0,0,0,41,14,114,17,0,0,0,114, - 51,0,0,0,114,15,0,0,0,114,93,0,0,0,114,35, - 0,0,0,114,46,0,0,0,114,80,0,0,0,114,110,0, - 0,0,114,117,0,0,0,114,149,0,0,0,114,4,0,0, - 0,218,11,108,111,97,100,95,109,111,100,117,108,101,114,151, - 0,0,0,218,3,112,111,112,41,4,114,96,0,0,0,114, - 97,0,0,0,114,17,0,0,0,218,3,109,115,103,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,94,0, - 0,0,80,2,0,0,115,38,0,0,0,0,2,6,1,10, - 1,16,1,10,1,12,1,2,1,10,1,10,1,14,2,16, - 2,14,1,12,4,14,2,14,4,14,1,14,255,14,1,44, - 1,114,94,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,115, - 20,1,0,0,122,18,124,0,106,0,160,1,124,0,106,2, - 161,1,1,0,87,0,110,52,1,0,1,0,1,0,124,0, - 106,2,116,3,106,4,118,0,114,64,116,3,106,4,160,5, - 124,0,106,2,161,1,125,1,124,1,116,3,106,4,124,0, - 106,2,60,0,130,0,89,0,110,2,48,0,116,3,106,4, - 160,5,124,0,106,2,161,1,125,1,124,1,116,3,106,4, - 124,0,106,2,60,0,116,6,124,1,100,1,100,0,131,3, - 100,0,117,0,114,146,122,12,124,0,106,0,124,1,95,7, - 87,0,110,18,4,0,116,8,121,144,1,0,1,0,1,0, - 89,0,110,2,48,0,116,6,124,1,100,2,100,0,131,3, - 100,0,117,0,114,222,122,40,124,1,106,9,124,1,95,10, - 116,11,124,1,100,3,131,2,115,200,124,0,106,2,160,12, - 100,4,161,1,100,5,25,0,124,1,95,10,87,0,110,18, - 4,0,116,8,121,220,1,0,1,0,1,0,89,0,110,2, - 48,0,116,6,124,1,100,6,100,0,131,3,100,0,117,0, - 144,1,114,16,122,10,124,0,124,1,95,13,87,0,110,20, - 4,0,116,8,144,1,121,14,1,0,1,0,1,0,89,0, - 110,2,48,0,124,1,83,0,41,7,78,114,99,0,0,0, - 114,146,0,0,0,114,142,0,0,0,114,129,0,0,0,114, - 22,0,0,0,114,106,0,0,0,41,14,114,110,0,0,0, - 114,156,0,0,0,114,17,0,0,0,114,15,0,0,0,114, - 93,0,0,0,114,157,0,0,0,114,6,0,0,0,114,99, - 0,0,0,114,107,0,0,0,114,1,0,0,0,114,146,0, - 0,0,114,4,0,0,0,114,130,0,0,0,114,106,0,0, - 0,114,152,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,218,25,95,108,111,97,100,95,98,97,99, - 107,119,97,114,100,95,99,111,109,112,97,116,105,98,108,101, - 110,2,0,0,115,54,0,0,0,0,4,2,1,18,1,6, - 1,12,1,14,1,12,1,8,3,14,1,12,1,16,1,2, - 1,12,1,12,1,6,1,16,1,2,4,8,1,10,1,22, - 1,12,1,6,1,18,1,2,1,10,1,14,1,6,1,114, - 159,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,11,0,0,0,67,0,0,0,115,224,0, - 0,0,124,0,106,0,100,0,117,1,114,30,116,1,124,0, - 106,0,100,1,131,2,115,30,116,2,124,0,131,1,83,0, - 116,3,124,0,131,1,125,1,100,2,124,0,95,4,122,166, - 124,1,116,5,106,6,124,0,106,7,60,0,122,52,124,0, - 106,0,100,0,117,0,114,96,124,0,106,8,100,0,117,0, - 114,108,116,9,100,3,124,0,106,7,100,4,141,2,130,1, - 110,12,124,0,106,0,160,10,124,1,161,1,1,0,87,0, - 110,48,1,0,1,0,1,0,122,14,116,5,106,6,124,0, - 106,7,61,0,87,0,110,18,4,0,116,11,121,150,1,0, - 1,0,1,0,89,0,110,2,48,0,130,0,89,0,110,2, - 48,0,116,5,106,6,160,12,124,0,106,7,161,1,125,1, - 124,1,116,5,106,6,124,0,106,7,60,0,116,13,100,5, - 124,0,106,7,124,0,106,0,131,3,1,0,87,0,100,6, - 124,0,95,4,110,8,100,6,124,0,95,4,48,0,124,1, - 83,0,41,7,78,114,151,0,0,0,84,114,155,0,0,0, - 114,16,0,0,0,122,18,105,109,112,111,114,116,32,123,33, - 114,125,32,35,32,123,33,114,125,70,41,14,114,110,0,0, - 0,114,4,0,0,0,114,159,0,0,0,114,153,0,0,0, - 90,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114, - 15,0,0,0,114,93,0,0,0,114,17,0,0,0,114,117, - 0,0,0,114,80,0,0,0,114,151,0,0,0,114,64,0, - 0,0,114,157,0,0,0,114,77,0,0,0,114,152,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,14,95,108,111,97,100,95,117,110,108,111,99,107,101,100, - 147,2,0,0,115,46,0,0,0,0,2,10,2,12,1,8, - 2,8,5,6,1,2,1,12,1,2,1,10,1,10,1,16, - 3,16,1,6,1,2,1,14,1,12,1,6,1,8,5,14, - 1,12,1,18,2,16,2,114,160,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0, - 0,67,0,0,0,115,54,0,0,0,116,0,124,0,106,1, - 131,1,143,24,1,0,116,2,124,0,131,1,87,0,2,0, - 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,40, - 48,0,1,0,1,0,1,0,89,0,1,0,100,1,83,0, - 41,2,122,191,82,101,116,117,114,110,32,97,32,110,101,119, - 32,109,111,100,117,108,101,32,111,98,106,101,99,116,44,32, - 108,111,97,100,101,100,32,98,121,32,116,104,101,32,115,112, - 101,99,39,115,32,108,111,97,100,101,114,46,10,10,32,32, - 32,32,84,104,101,32,109,111,100,117,108,101,32,105,115,32, - 110,111,116,32,97,100,100,101,100,32,116,111,32,105,116,115, - 32,112,97,114,101,110,116,46,10,10,32,32,32,32,73,102, - 32,97,32,109,111,100,117,108,101,32,105,115,32,97,108,114, - 101,97,100,121,32,105,110,32,115,121,115,46,109,111,100,117, - 108,101,115,44,32,116,104,97,116,32,101,120,105,115,116,105, - 110,103,32,109,111,100,117,108,101,32,103,101,116,115,10,32, - 32,32,32,99,108,111,98,98,101,114,101,100,46,10,10,32, - 32,32,32,78,41,3,114,51,0,0,0,114,17,0,0,0, - 114,160,0,0,0,41,1,114,96,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,95,0,0,0, - 189,2,0,0,115,4,0,0,0,0,9,12,1,114,95,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,64,0,0,0,115,140,0,0,0, - 101,0,90,1,100,0,90,2,100,1,90,3,100,2,90,4, - 101,5,100,3,100,4,132,0,131,1,90,6,101,7,100,20, - 100,6,100,7,132,1,131,1,90,8,101,7,100,21,100,8, - 100,9,132,1,131,1,90,9,101,7,100,10,100,11,132,0, - 131,1,90,10,101,7,100,12,100,13,132,0,131,1,90,11, - 101,7,101,12,100,14,100,15,132,0,131,1,131,1,90,13, - 101,7,101,12,100,16,100,17,132,0,131,1,131,1,90,14, - 101,7,101,12,100,18,100,19,132,0,131,1,131,1,90,15, - 101,7,101,16,131,1,90,17,100,5,83,0,41,22,218,15, - 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,122, - 144,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, - 116,32,102,111,114,32,98,117,105,108,116,45,105,110,32,109, - 111,100,117,108,101,115,46,10,10,32,32,32,32,65,108,108, - 32,109,101,116,104,111,100,115,32,97,114,101,32,101,105,116, - 104,101,114,32,99,108,97,115,115,32,111,114,32,115,116,97, - 116,105,99,32,109,101,116,104,111,100,115,32,116,111,32,97, - 118,111,105,100,32,116,104,101,32,110,101,101,100,32,116,111, - 10,32,32,32,32,105,110,115,116,97,110,116,105,97,116,101, - 32,116,104,101,32,99,108,97,115,115,46,10,10,32,32,32, - 32,122,8,98,117,105,108,116,45,105,110,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0, - 67,0,0,0,115,22,0,0,0,100,1,124,0,106,0,155, - 2,100,2,116,1,106,2,155,0,100,3,157,5,83,0,41, - 4,250,115,82,101,116,117,114,110,32,114,101,112,114,32,102, - 111,114,32,116,104,101,32,109,111,100,117,108,101,46,10,10, - 32,32,32,32,32,32,32,32,84,104,101,32,109,101,116,104, - 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 46,32,32,84,104,101,32,105,109,112,111,114,116,32,109,97, - 99,104,105,110,101,114,121,32,100,111,101,115,32,116,104,101, - 32,106,111,98,32,105,116,115,101,108,102,46,10,10,32,32, - 32,32,32,32,32,32,122,8,60,109,111,100,117,108,101,32, - 122,2,32,40,122,2,41,62,41,3,114,1,0,0,0,114, - 161,0,0,0,114,139,0,0,0,41,1,114,97,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 100,0,0,0,215,2,0,0,115,2,0,0,0,0,7,122, - 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,109,111,100,117,108,101,95,114,101,112,114,78,99,4,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0, - 0,0,67,0,0,0,115,46,0,0,0,124,2,100,0,117, - 1,114,12,100,0,83,0,116,0,160,1,124,1,161,1,114, - 38,116,2,124,1,124,0,124,0,106,3,100,1,141,3,83, - 0,100,0,83,0,100,0,83,0,169,2,78,114,138,0,0, - 0,41,4,114,58,0,0,0,90,10,105,115,95,98,117,105, - 108,116,105,110,114,92,0,0,0,114,139,0,0,0,169,4, - 218,3,99,108,115,114,82,0,0,0,218,4,112,97,116,104, - 218,6,116,97,114,103,101,116,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,9,102,105,110,100,95,115,112, - 101,99,224,2,0,0,115,10,0,0,0,0,2,8,1,4, - 1,10,1,16,2,122,25,66,117,105,108,116,105,110,73,109, - 112,111,114,116,101,114,46,102,105,110,100,95,115,112,101,99, - 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,4,0,0,0,67,0,0,0,115,30,0,0,0,124,0, - 160,0,124,1,124,2,161,2,125,3,124,3,100,1,117,1, - 114,26,124,3,106,1,83,0,100,1,83,0,41,2,122,175, - 70,105,110,100,32,116,104,101,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,73,102,32,39,112,97,116,104,39,32,105,115,32, - 101,118,101,114,32,115,112,101,99,105,102,105,101,100,32,116, - 104,101,110,32,116,104,101,32,115,101,97,114,99,104,32,105, - 115,32,99,111,110,115,105,100,101,114,101,100,32,97,32,102, - 97,105,108,117,114,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,46,32,32,85,115,101, - 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, - 116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,78, - 41,2,114,168,0,0,0,114,110,0,0,0,41,4,114,165, - 0,0,0,114,82,0,0,0,114,166,0,0,0,114,96,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,11,102,105,110,100,95,109,111,100,117,108,101,233,2, - 0,0,115,4,0,0,0,0,9,12,1,122,27,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, - 0,115,46,0,0,0,124,1,106,0,116,1,106,2,118,1, - 114,34,116,3,100,1,160,4,124,1,106,0,161,1,124,1, - 106,0,100,2,141,2,130,1,116,5,116,6,106,7,124,1, - 131,2,83,0,41,3,122,24,67,114,101,97,116,101,32,97, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 114,78,0,0,0,114,16,0,0,0,41,8,114,17,0,0, - 0,114,15,0,0,0,114,79,0,0,0,114,80,0,0,0, - 114,46,0,0,0,114,68,0,0,0,114,58,0,0,0,90, - 14,99,114,101,97,116,101,95,98,117,105,108,116,105,110,41, - 2,114,30,0,0,0,114,96,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,150,0,0,0,245, - 2,0,0,115,10,0,0,0,0,3,12,1,12,1,4,255, - 6,2,122,29,66,117,105,108,116,105,110,73,109,112,111,114, - 116,101,114,46,99,114,101,97,116,101,95,109,111,100,117,108, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,3,0,0,0,67,0,0,0,115,16,0,0,0,116, - 0,116,1,106,2,124,1,131,2,1,0,100,1,83,0,41, - 2,122,22,69,120,101,99,32,97,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,78,41,3,114,68,0,0, - 0,114,58,0,0,0,90,12,101,120,101,99,95,98,117,105, - 108,116,105,110,41,2,114,30,0,0,0,114,97,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 151,0,0,0,253,2,0,0,115,2,0,0,0,0,3,122, - 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, - 0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,2, - 122,57,82,101,116,117,114,110,32,78,111,110,101,32,97,115, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 115,32,100,111,32,110,111,116,32,104,97,118,101,32,99,111, - 100,101,32,111,98,106,101,99,116,115,46,78,114,10,0,0, - 0,169,2,114,165,0,0,0,114,82,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,8,103,101, - 116,95,99,111,100,101,2,3,0,0,115,2,0,0,0,0, - 4,122,24,66,117,105,108,116,105,110,73,109,112,111,114,116, - 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, - 56,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,117, - 114,99,101,32,99,111,100,101,46,78,114,10,0,0,0,114, - 170,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,8, - 3,0,0,115,2,0,0,0,0,4,122,26,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,46,103,101,116,95, - 115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115, - 4,0,0,0,100,1,83,0,41,2,122,52,82,101,116,117, - 114,110,32,70,97,108,115,101,32,97,115,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,32,97,114,101, - 32,110,101,118,101,114,32,112,97,99,107,97,103,101,115,46, - 70,114,10,0,0,0,114,170,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,116,0,0,0,14, - 3,0,0,115,2,0,0,0,0,4,122,26,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,46,105,115,95,112, - 97,99,107,97,103,101,41,2,78,78,41,1,78,41,18,114, - 1,0,0,0,114,0,0,0,0,114,2,0,0,0,114,3, - 0,0,0,114,139,0,0,0,218,12,115,116,97,116,105,99, - 109,101,116,104,111,100,114,100,0,0,0,218,11,99,108,97, - 115,115,109,101,116,104,111,100,114,168,0,0,0,114,169,0, - 0,0,114,150,0,0,0,114,151,0,0,0,114,87,0,0, - 0,114,171,0,0,0,114,172,0,0,0,114,116,0,0,0, - 114,98,0,0,0,114,156,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,161, - 0,0,0,204,2,0,0,115,44,0,0,0,8,2,4,7, - 4,2,2,1,10,8,2,1,12,8,2,1,12,11,2,1, - 10,7,2,1,10,4,2,1,2,1,12,4,2,1,2,1, - 12,4,2,1,2,1,12,4,114,161,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,64,0,0,0,115,144,0,0,0,101,0,90,1,100, - 0,90,2,100,1,90,3,100,2,90,4,101,5,100,3,100, - 4,132,0,131,1,90,6,101,7,100,22,100,6,100,7,132, - 1,131,1,90,8,101,7,100,23,100,8,100,9,132,1,131, - 1,90,9,101,7,100,10,100,11,132,0,131,1,90,10,101, - 5,100,12,100,13,132,0,131,1,90,11,101,7,100,14,100, - 15,132,0,131,1,90,12,101,7,101,13,100,16,100,17,132, - 0,131,1,131,1,90,14,101,7,101,13,100,18,100,19,132, - 0,131,1,131,1,90,15,101,7,101,13,100,20,100,21,132, - 0,131,1,131,1,90,16,100,5,83,0,41,24,218,14,70, - 114,111,122,101,110,73,109,112,111,114,116,101,114,122,142,77, - 101,116,97,32,112,97,116,104,32,105,109,112,111,114,116,32, - 102,111,114,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,115,46,10,10,32,32,32,32,65,108,108,32,109,101,116, - 104,111,100,115,32,97,114,101,32,101,105,116,104,101,114,32, - 99,108,97,115,115,32,111,114,32,115,116,97,116,105,99,32, - 109,101,116,104,111,100,115,32,116,111,32,97,118,111,105,100, - 32,116,104,101,32,110,101,101,100,32,116,111,10,32,32,32, - 32,105,110,115,116,97,110,116,105,97,116,101,32,116,104,101, - 32,99,108,97,115,115,46,10,10,32,32,32,32,90,6,102, - 114,111,122,101,110,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,4,0,0,0,67,0,0,0,115,16, - 0,0,0,100,1,160,0,124,0,106,1,116,2,106,3,161, - 2,83,0,41,2,114,162,0,0,0,114,154,0,0,0,41, - 4,114,46,0,0,0,114,1,0,0,0,114,175,0,0,0, - 114,139,0,0,0,41,1,218,1,109,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,100,0,0,0,34,3, - 0,0,115,2,0,0,0,0,7,122,26,70,114,111,122,101, - 110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101, - 95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, - 34,0,0,0,116,0,160,1,124,1,161,1,114,26,116,2, - 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, - 83,0,100,0,83,0,114,163,0,0,0,41,4,114,58,0, - 0,0,114,89,0,0,0,114,92,0,0,0,114,139,0,0, - 0,114,164,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,168,0,0,0,43,3,0,0,115,6, - 0,0,0,0,2,10,1,16,2,122,24,70,114,111,122,101, - 110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,115, - 112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,3,0,0,0,67,0,0,0,115,18,0,0, - 0,116,0,160,1,124,1,161,1,114,14,124,0,83,0,100, - 1,83,0,41,2,122,93,70,105,110,100,32,97,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, - 32,32,85,115,101,32,102,105,110,100,95,115,112,101,99,40, - 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, - 32,32,32,32,78,41,2,114,58,0,0,0,114,89,0,0, - 0,41,3,114,165,0,0,0,114,82,0,0,0,114,166,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,169,0,0,0,50,3,0,0,115,2,0,0,0,0, - 7,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,102,105,110,100,95,109,111,100,117,108,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0, - 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, - 2,122,42,85,115,101,32,100,101,102,97,117,108,116,32,115, - 101,109,97,110,116,105,99,115,32,102,111,114,32,109,111,100, - 117,108,101,32,99,114,101,97,116,105,111,110,46,78,114,10, - 0,0,0,41,2,114,165,0,0,0,114,96,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,150, - 0,0,0,59,3,0,0,115,2,0,0,0,0,2,122,28, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,99, - 114,101,97,116,101,95,109,111,100,117,108,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0, - 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, - 125,1,116,2,160,3,124,1,161,1,115,36,116,4,100,1, - 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, - 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, - 106,9,131,2,1,0,100,0,83,0,114,88,0,0,0,41, - 10,114,106,0,0,0,114,17,0,0,0,114,58,0,0,0, - 114,89,0,0,0,114,80,0,0,0,114,46,0,0,0,114, - 68,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, - 95,111,98,106,101,99,116,218,4,101,120,101,99,114,7,0, - 0,0,41,3,114,97,0,0,0,114,17,0,0,0,218,4, - 99,111,100,101,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,151,0,0,0,63,3,0,0,115,14,0,0, - 0,0,2,8,1,10,1,10,1,2,255,6,2,12,1,122, - 26,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46, - 101,120,101,99,95,109,111,100,117,108,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, - 67,0,0,0,115,10,0,0,0,116,0,124,0,124,1,131, - 2,83,0,41,1,122,95,76,111,97,100,32,97,32,102,114, - 111,122,101,110,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, - 32,32,85,115,101,32,101,120,101,99,95,109,111,100,117,108, - 101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, - 32,32,32,32,32,32,41,1,114,98,0,0,0,114,170,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,156,0,0,0,72,3,0,0,115,2,0,0,0,0, - 7,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, - 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, - 1,161,1,83,0,41,1,122,45,82,101,116,117,114,110,32, - 116,104,101,32,99,111,100,101,32,111,98,106,101,99,116,32, - 102,111,114,32,116,104,101,32,102,114,111,122,101,110,32,109, - 111,100,117,108,101,46,41,2,114,58,0,0,0,114,177,0, - 0,0,114,170,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,171,0,0,0,81,3,0,0,115, - 2,0,0,0,0,4,122,23,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83, - 0,41,2,122,54,82,101,116,117,114,110,32,78,111,110,101, - 32,97,115,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,115,32,100,111,32,110,111,116,32,104,97,118,101,32,115, - 111,117,114,99,101,32,99,111,100,101,46,78,114,10,0,0, - 0,114,170,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,172,0,0,0,87,3,0,0,115,2, - 0,0,0,0,4,122,25,70,114,111,122,101,110,73,109,112, - 111,114,116,101,114,46,103,101,116,95,115,111,117,114,99,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,67,0,0,0,115,10,0,0,0,116,0, - 160,1,124,1,161,1,83,0,41,1,122,46,82,101,116,117, - 114,110,32,84,114,117,101,32,105,102,32,116,104,101,32,102, - 114,111,122,101,110,32,109,111,100,117,108,101,32,105,115,32, - 97,32,112,97,99,107,97,103,101,46,41,2,114,58,0,0, - 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, - 107,97,103,101,114,170,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,116,0,0,0,93,3,0, - 0,115,2,0,0,0,0,4,122,25,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,46,105,115,95,112,97,99,107, - 97,103,101,41,2,78,78,41,1,78,41,17,114,1,0,0, - 0,114,0,0,0,0,114,2,0,0,0,114,3,0,0,0, - 114,139,0,0,0,114,173,0,0,0,114,100,0,0,0,114, - 174,0,0,0,114,168,0,0,0,114,169,0,0,0,114,150, - 0,0,0,114,151,0,0,0,114,156,0,0,0,114,91,0, - 0,0,114,171,0,0,0,114,172,0,0,0,114,116,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,175,0,0,0,23,3,0,0,115,46, - 0,0,0,8,2,4,7,4,2,2,1,10,8,2,1,12, - 6,2,1,12,8,2,1,10,3,2,1,10,8,2,1,10, - 8,2,1,2,1,12,4,2,1,2,1,12,4,2,1,2, - 1,114,175,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115, - 32,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5, - 100,6,83,0,41,7,218,18,95,73,109,112,111,114,116,76, - 111,99,107,67,111,110,116,101,120,116,122,36,67,111,110,116, - 101,120,116,32,109,97,110,97,103,101,114,32,102,111,114,32, - 116,104,101,32,105,109,112,111,114,116,32,108,111,99,107,46, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,2,0,0,0,67,0,0,0,115,12,0,0,0,116,0, - 160,1,161,0,1,0,100,1,83,0,41,2,122,24,65,99, - 113,117,105,114,101,32,116,104,101,32,105,109,112,111,114,116, - 32,108,111,99,107,46,78,41,2,114,58,0,0,0,114,59, - 0,0,0,114,48,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,55,0,0,0,106,3,0,0, - 115,2,0,0,0,0,2,122,28,95,73,109,112,111,114,116, - 76,111,99,107,67,111,110,116,101,120,116,46,95,95,101,110, - 116,101,114,95,95,99,4,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,2,0,0,0,67,0,0,0,115,12, - 0,0,0,116,0,160,1,161,0,1,0,100,1,83,0,41, - 2,122,60,82,101,108,101,97,115,101,32,116,104,101,32,105, - 109,112,111,114,116,32,108,111,99,107,32,114,101,103,97,114, - 100,108,101,115,115,32,111,102,32,97,110,121,32,114,97,105, - 115,101,100,32,101,120,99,101,112,116,105,111,110,115,46,78, - 41,2,114,58,0,0,0,114,61,0,0,0,41,4,114,30, - 0,0,0,218,8,101,120,99,95,116,121,112,101,218,9,101, - 120,99,95,118,97,108,117,101,218,13,101,120,99,95,116,114, - 97,99,101,98,97,99,107,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,57,0,0,0,110,3,0,0,115, - 2,0,0,0,0,2,122,27,95,73,109,112,111,114,116,76, - 111,99,107,67,111,110,116,101,120,116,46,95,95,101,120,105, - 116,95,95,78,41,6,114,1,0,0,0,114,0,0,0,0, - 114,2,0,0,0,114,3,0,0,0,114,55,0,0,0,114, - 57,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,180,0,0,0,102,3,0, - 0,115,6,0,0,0,8,2,4,2,8,4,114,180,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, - 0,0,5,0,0,0,67,0,0,0,115,64,0,0,0,124, - 1,160,0,100,1,124,2,100,2,24,0,161,2,125,3,116, - 1,124,3,131,1,124,2,107,0,114,36,116,2,100,3,131, - 1,130,1,124,3,100,4,25,0,125,4,124,0,114,60,100, - 5,160,3,124,4,124,0,161,2,83,0,124,4,83,0,41, - 6,122,50,82,101,115,111,108,118,101,32,97,32,114,101,108, - 97,116,105,118,101,32,109,111,100,117,108,101,32,110,97,109, - 101,32,116,111,32,97,110,32,97,98,115,111,108,117,116,101, - 32,111,110,101,46,114,129,0,0,0,114,39,0,0,0,122, - 50,97,116,116,101,109,112,116,101,100,32,114,101,108,97,116, - 105,118,101,32,105,109,112,111,114,116,32,98,101,121,111,110, - 100,32,116,111,112,45,108,101,118,101,108,32,112,97,99,107, - 97,103,101,114,22,0,0,0,250,5,123,125,46,123,125,41, - 4,218,6,114,115,112,108,105,116,218,3,108,101,110,114,80, - 0,0,0,114,46,0,0,0,41,5,114,17,0,0,0,218, - 7,112,97,99,107,97,103,101,218,5,108,101,118,101,108,90, - 4,98,105,116,115,90,4,98,97,115,101,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,13,95,114,101,115, - 111,108,118,101,95,110,97,109,101,115,3,0,0,115,10,0, - 0,0,0,2,16,1,12,1,8,1,8,1,114,189,0,0, - 0,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,4,0,0,0,67,0,0,0,115,34,0,0,0,124, - 0,160,0,124,1,124,2,161,2,125,3,124,3,100,0,117, - 0,114,24,100,0,83,0,116,1,124,1,124,3,131,2,83, - 0,114,13,0,0,0,41,2,114,169,0,0,0,114,92,0, - 0,0,41,4,218,6,102,105,110,100,101,114,114,17,0,0, - 0,114,166,0,0,0,114,110,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,17,95,102,105,110, - 100,95,115,112,101,99,95,108,101,103,97,99,121,124,3,0, - 0,115,8,0,0,0,0,3,12,1,8,1,4,1,114,191, - 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, - 10,0,0,0,10,0,0,0,67,0,0,0,115,32,1,0, - 0,116,0,106,1,125,3,124,3,100,1,117,0,114,22,116, - 2,100,2,131,1,130,1,124,3,115,38,116,3,160,4,100, - 3,116,5,161,2,1,0,124,0,116,0,106,6,118,0,125, - 4,124,3,68,0,93,230,125,5,116,7,131,0,143,94,1, - 0,122,10,124,5,106,8,125,6,87,0,110,54,4,0,116, - 9,121,128,1,0,1,0,1,0,116,10,124,5,124,0,124, - 1,131,3,125,7,124,7,100,1,117,0,114,124,89,0,87, - 0,100,1,4,0,4,0,131,3,1,0,113,52,89,0,110, - 14,48,0,124,6,124,0,124,1,124,2,131,3,125,7,87, - 0,100,1,4,0,4,0,131,3,1,0,110,16,49,0,115, - 162,48,0,1,0,1,0,1,0,89,0,1,0,124,7,100, - 1,117,1,114,52,124,4,144,1,115,18,124,0,116,0,106, - 6,118,0,144,1,114,18,116,0,106,6,124,0,25,0,125, - 8,122,10,124,8,106,11,125,9,87,0,110,26,4,0,116, - 9,121,244,1,0,1,0,1,0,124,7,6,0,89,0,2, - 0,1,0,83,0,48,0,124,9,100,1,117,0,144,1,114, - 8,124,7,2,0,1,0,83,0,124,9,2,0,1,0,83, - 0,113,52,124,7,2,0,1,0,83,0,113,52,100,1,83, - 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, - 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, - 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, - 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, - 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, - 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, - 104,32,105,115,32,101,109,112,116,121,41,12,114,15,0,0, - 0,218,9,109,101,116,97,95,112,97,116,104,114,80,0,0, - 0,218,9,95,119,97,114,110,105,110,103,115,218,4,119,97, - 114,110,218,13,73,109,112,111,114,116,87,97,114,110,105,110, - 103,114,93,0,0,0,114,180,0,0,0,114,168,0,0,0, - 114,107,0,0,0,114,191,0,0,0,114,106,0,0,0,41, - 10,114,17,0,0,0,114,166,0,0,0,114,167,0,0,0, - 114,192,0,0,0,90,9,105,115,95,114,101,108,111,97,100, - 114,190,0,0,0,114,168,0,0,0,114,96,0,0,0,114, - 97,0,0,0,114,106,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,218,10,95,102,105,110,100,95, - 115,112,101,99,133,3,0,0,115,54,0,0,0,0,2,6, - 1,8,2,8,3,4,1,12,5,10,1,8,1,8,1,2, - 1,10,1,12,1,12,1,8,1,22,2,42,1,8,2,18, - 1,10,1,2,1,10,1,12,4,14,2,10,1,8,2,10, - 2,10,2,114,196,0,0,0,99,3,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,5,0,0,0,67,0,0, - 0,115,108,0,0,0,116,0,124,0,116,1,131,2,115,28, - 116,2,100,1,160,3,116,4,124,0,131,1,161,1,131,1, - 130,1,124,2,100,2,107,0,114,44,116,5,100,3,131,1, - 130,1,124,2,100,2,107,4,114,84,116,0,124,1,116,1, - 131,2,115,72,116,2,100,4,131,1,130,1,110,12,124,1, - 115,84,116,6,100,5,131,1,130,1,124,0,115,104,124,2, - 100,2,107,2,114,104,116,5,100,6,131,1,130,1,100,7, - 83,0,41,8,122,28,86,101,114,105,102,121,32,97,114,103, - 117,109,101,110,116,115,32,97,114,101,32,34,115,97,110,101, - 34,46,122,31,109,111,100,117,108,101,32,110,97,109,101,32, - 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, - 32,123,125,114,22,0,0,0,122,18,108,101,118,101,108,32, - 109,117,115,116,32,98,101,32,62,61,32,48,122,31,95,95, - 112,97,99,107,97,103,101,95,95,32,110,111,116,32,115,101, - 116,32,116,111,32,97,32,115,116,114,105,110,103,122,54,97, - 116,116,101,109,112,116,101,100,32,114,101,108,97,116,105,118, - 101,32,105,109,112,111,114,116,32,119,105,116,104,32,110,111, - 32,107,110,111,119,110,32,112,97,114,101,110,116,32,112,97, - 99,107,97,103,101,122,17,69,109,112,116,121,32,109,111,100, - 117,108,101,32,110,97,109,101,78,41,7,218,10,105,115,105, - 110,115,116,97,110,99,101,218,3,115,116,114,218,9,84,121, - 112,101,69,114,114,111,114,114,46,0,0,0,114,14,0,0, - 0,218,10,86,97,108,117,101,69,114,114,111,114,114,80,0, - 0,0,169,3,114,17,0,0,0,114,187,0,0,0,114,188, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, - 107,180,3,0,0,115,22,0,0,0,0,2,10,1,18,1, - 8,1,8,1,8,1,10,1,10,1,4,1,8,2,12,1, - 114,202,0,0,0,122,16,78,111,32,109,111,100,117,108,101, - 32,110,97,109,101,100,32,122,4,123,33,114,125,99,2,0, - 0,0,0,0,0,0,0,0,0,0,9,0,0,0,8,0, - 0,0,67,0,0,0,115,22,1,0,0,100,0,125,2,124, - 0,160,0,100,1,161,1,100,2,25,0,125,3,124,3,114, - 132,124,3,116,1,106,2,118,1,114,42,116,3,124,1,124, - 3,131,2,1,0,124,0,116,1,106,2,118,0,114,62,116, - 1,106,2,124,0,25,0,83,0,116,1,106,2,124,3,25, - 0,125,4,122,10,124,4,106,4,125,2,87,0,110,48,4, - 0,116,5,121,130,1,0,1,0,1,0,116,6,100,3,23, - 0,160,7,124,0,124,3,161,2,125,5,116,8,124,5,124, - 0,100,4,141,2,100,0,130,2,89,0,110,2,48,0,116, - 9,124,0,124,2,131,2,125,6,124,6,100,0,117,0,114, - 170,116,8,116,6,160,7,124,0,161,1,124,0,100,4,141, - 2,130,1,110,8,116,10,124,6,131,1,125,7,124,3,144, - 1,114,18,116,1,106,2,124,3,25,0,125,4,124,0,160, - 0,100,1,161,1,100,5,25,0,125,8,122,16,116,11,124, - 4,124,8,124,7,131,3,1,0,87,0,110,48,4,0,116, - 5,144,1,121,16,1,0,1,0,1,0,100,6,124,3,155, - 2,100,7,124,8,155,2,157,4,125,5,116,12,160,13,124, - 5,116,14,161,2,1,0,89,0,110,2,48,0,124,7,83, - 0,41,8,78,114,129,0,0,0,114,22,0,0,0,122,23, - 59,32,123,33,114,125,32,105,115,32,110,111,116,32,97,32, - 112,97,99,107,97,103,101,114,16,0,0,0,233,2,0,0, - 0,122,27,67,97,110,110,111,116,32,115,101,116,32,97,110, - 32,97,116,116,114,105,98,117,116,101,32,111,110,32,122,18, - 32,102,111,114,32,99,104,105,108,100,32,109,111,100,117,108, - 101,32,41,15,114,130,0,0,0,114,15,0,0,0,114,93, - 0,0,0,114,68,0,0,0,114,142,0,0,0,114,107,0, - 0,0,218,8,95,69,82,82,95,77,83,71,114,46,0,0, - 0,218,19,77,111,100,117,108,101,78,111,116,70,111,117,110, - 100,69,114,114,111,114,114,196,0,0,0,114,160,0,0,0, - 114,5,0,0,0,114,193,0,0,0,114,194,0,0,0,114, - 195,0,0,0,41,9,114,17,0,0,0,218,7,105,109,112, - 111,114,116,95,114,166,0,0,0,114,131,0,0,0,90,13, - 112,97,114,101,110,116,95,109,111,100,117,108,101,114,158,0, - 0,0,114,96,0,0,0,114,97,0,0,0,90,5,99,104, - 105,108,100,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, - 97,100,95,117,110,108,111,99,107,101,100,199,3,0,0,115, - 52,0,0,0,0,1,4,1,14,1,4,1,10,1,10,2, - 10,1,10,1,10,1,2,1,10,1,12,1,16,1,20,1, - 10,1,8,1,20,2,8,1,6,2,10,1,14,1,2,1, - 16,1,14,1,16,1,18,1,114,207,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,8,0, - 0,0,67,0,0,0,115,128,0,0,0,116,0,124,0,131, - 1,143,62,1,0,116,1,106,2,160,3,124,0,116,4,161, - 2,125,2,124,2,116,4,117,0,114,56,116,5,124,0,124, - 1,131,2,87,0,2,0,100,1,4,0,4,0,131,3,1, - 0,83,0,87,0,100,1,4,0,4,0,131,3,1,0,110, - 16,49,0,115,76,48,0,1,0,1,0,1,0,89,0,1, - 0,124,2,100,1,117,0,114,116,100,2,160,6,124,0,161, - 1,125,3,116,7,124,3,124,0,100,3,141,2,130,1,116, - 8,124,0,131,1,1,0,124,2,83,0,41,4,122,25,70, - 105,110,100,32,97,110,100,32,108,111,97,100,32,116,104,101, - 32,109,111,100,117,108,101,46,78,122,40,105,109,112,111,114, - 116,32,111,102,32,123,125,32,104,97,108,116,101,100,59,32, - 78,111,110,101,32,105,110,32,115,121,115,46,109,111,100,117, - 108,101,115,114,16,0,0,0,41,9,114,51,0,0,0,114, - 15,0,0,0,114,93,0,0,0,114,35,0,0,0,218,14, - 95,78,69,69,68,83,95,76,79,65,68,73,78,71,114,207, - 0,0,0,114,46,0,0,0,114,205,0,0,0,114,66,0, - 0,0,41,4,114,17,0,0,0,114,206,0,0,0,114,97, - 0,0,0,114,76,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,14,95,102,105,110,100,95,97, - 110,100,95,108,111,97,100,234,3,0,0,115,22,0,0,0, - 0,2,10,1,14,1,8,1,54,2,8,1,4,1,2,255, - 4,2,12,2,8,1,114,209,0,0,0,114,22,0,0,0, - 99,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,4,0,0,0,67,0,0,0,115,42,0,0,0,116,0, - 124,0,124,1,124,2,131,3,1,0,124,2,100,1,107,4, - 114,32,116,1,124,0,124,1,124,2,131,3,125,0,116,2, - 124,0,116,3,131,2,83,0,41,2,97,50,1,0,0,73, - 109,112,111,114,116,32,97,110,100,32,114,101,116,117,114,110, - 32,116,104,101,32,109,111,100,117,108,101,32,98,97,115,101, - 100,32,111,110,32,105,116,115,32,110,97,109,101,44,32,116, - 104,101,32,112,97,99,107,97,103,101,32,116,104,101,32,99, - 97,108,108,32,105,115,10,32,32,32,32,98,101,105,110,103, - 32,109,97,100,101,32,102,114,111,109,44,32,97,110,100,32, - 116,104,101,32,108,101,118,101,108,32,97,100,106,117,115,116, - 109,101,110,116,46,10,10,32,32,32,32,84,104,105,115,32, - 102,117,110,99,116,105,111,110,32,114,101,112,114,101,115,101, - 110,116,115,32,116,104,101,32,103,114,101,97,116,101,115,116, - 32,99,111,109,109,111,110,32,100,101,110,111,109,105,110,97, - 116,111,114,32,111,102,32,102,117,110,99,116,105,111,110,97, - 108,105,116,121,10,32,32,32,32,98,101,116,119,101,101,110, - 32,105,109,112,111,114,116,95,109,111,100,117,108,101,32,97, - 110,100,32,95,95,105,109,112,111,114,116,95,95,46,32,84, - 104,105,115,32,105,110,99,108,117,100,101,115,32,115,101,116, - 116,105,110,103,32,95,95,112,97,99,107,97,103,101,95,95, - 32,105,102,10,32,32,32,32,116,104,101,32,108,111,97,100, - 101,114,32,100,105,100,32,110,111,116,46,10,10,32,32,32, - 32,114,22,0,0,0,41,4,114,202,0,0,0,114,189,0, - 0,0,114,209,0,0,0,218,11,95,103,99,100,95,105,109, - 112,111,114,116,114,201,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,210,0,0,0,250,3,0, - 0,115,8,0,0,0,0,9,12,1,8,1,12,1,114,210, - 0,0,0,169,1,218,9,114,101,99,117,114,115,105,118,101, - 99,3,0,0,0,0,0,0,0,1,0,0,0,8,0,0, - 0,11,0,0,0,67,0,0,0,115,232,0,0,0,124,1, - 68,0,93,222,125,4,116,0,124,4,116,1,131,2,115,66, - 124,3,114,34,124,0,106,2,100,1,23,0,125,5,110,4, - 100,2,125,5,116,3,100,3,124,5,155,0,100,4,116,4, - 124,4,131,1,106,2,155,0,157,4,131,1,130,1,113,4, - 124,4,100,5,107,2,114,108,124,3,115,226,116,5,124,0, - 100,6,131,2,114,226,116,6,124,0,124,0,106,7,124,2, - 100,7,100,8,141,4,1,0,113,4,116,5,124,0,124,4, - 131,2,115,4,100,9,160,8,124,0,106,2,124,4,161,2, - 125,6,122,14,116,9,124,2,124,6,131,2,1,0,87,0, - 113,4,4,0,116,10,121,224,1,0,125,7,1,0,122,54, - 124,7,106,11,124,6,107,2,114,202,116,12,106,13,160,14, - 124,6,116,15,161,2,100,10,117,1,114,202,87,0,89,0, - 100,10,125,7,126,7,113,4,130,0,87,0,89,0,100,10, - 125,7,126,7,113,4,100,10,125,7,126,7,48,0,48,0, - 113,4,124,0,83,0,41,11,122,238,70,105,103,117,114,101, - 32,111,117,116,32,119,104,97,116,32,95,95,105,109,112,111, - 114,116,95,95,32,115,104,111,117,108,100,32,114,101,116,117, - 114,110,46,10,10,32,32,32,32,84,104,101,32,105,109,112, - 111,114,116,95,32,112,97,114,97,109,101,116,101,114,32,105, - 115,32,97,32,99,97,108,108,97,98,108,101,32,119,104,105, - 99,104,32,116,97,107,101,115,32,116,104,101,32,110,97,109, - 101,32,111,102,32,109,111,100,117,108,101,32,116,111,10,32, - 32,32,32,105,109,112,111,114,116,46,32,73,116,32,105,115, - 32,114,101,113,117,105,114,101,100,32,116,111,32,100,101,99, - 111,117,112,108,101,32,116,104,101,32,102,117,110,99,116,105, - 111,110,32,102,114,111,109,32,97,115,115,117,109,105,110,103, - 32,105,109,112,111,114,116,108,105,98,39,115,10,32,32,32, - 32,105,109,112,111,114,116,32,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,32,105,115,32,100,101,115,105,114,101, - 100,46,10,10,32,32,32,32,122,8,46,95,95,97,108,108, - 95,95,122,13,96,96,102,114,111,109,32,108,105,115,116,39, - 39,122,8,73,116,101,109,32,105,110,32,122,18,32,109,117, - 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,250, - 1,42,218,7,95,95,97,108,108,95,95,84,114,211,0,0, - 0,114,184,0,0,0,78,41,16,114,197,0,0,0,114,198, - 0,0,0,114,1,0,0,0,114,199,0,0,0,114,14,0, - 0,0,114,4,0,0,0,218,16,95,104,97,110,100,108,101, - 95,102,114,111,109,108,105,115,116,114,214,0,0,0,114,46, - 0,0,0,114,68,0,0,0,114,205,0,0,0,114,17,0, - 0,0,114,15,0,0,0,114,93,0,0,0,114,35,0,0, - 0,114,208,0,0,0,41,8,114,97,0,0,0,218,8,102, - 114,111,109,108,105,115,116,114,206,0,0,0,114,212,0,0, - 0,218,1,120,90,5,119,104,101,114,101,90,9,102,114,111, - 109,95,110,97,109,101,90,3,101,120,99,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,215,0,0,0,9, - 4,0,0,115,48,0,0,0,0,10,8,1,10,1,4,1, - 12,2,4,1,10,1,8,255,10,2,8,1,14,1,10,1, - 2,255,8,2,10,1,14,1,2,1,14,1,14,4,10,1, - 16,255,2,2,12,1,26,1,114,215,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,3,0,0,0,6,0, - 0,0,67,0,0,0,115,146,0,0,0,124,0,160,0,100, - 1,161,1,125,1,124,0,160,0,100,2,161,1,125,2,124, - 1,100,3,117,1,114,82,124,2,100,3,117,1,114,78,124, - 1,124,2,106,1,107,3,114,78,116,2,106,3,100,4,124, - 1,155,2,100,5,124,2,106,1,155,2,100,6,157,5,116, - 4,100,7,100,8,141,3,1,0,124,1,83,0,124,2,100, - 3,117,1,114,96,124,2,106,1,83,0,116,2,106,3,100, - 9,116,4,100,7,100,8,141,3,1,0,124,0,100,10,25, - 0,125,1,100,11,124,0,118,1,114,142,124,1,160,5,100, - 12,161,1,100,13,25,0,125,1,124,1,83,0,41,14,122, - 167,67,97,108,99,117,108,97,116,101,32,119,104,97,116,32, - 95,95,112,97,99,107,97,103,101,95,95,32,115,104,111,117, - 108,100,32,98,101,46,10,10,32,32,32,32,95,95,112,97, - 99,107,97,103,101,95,95,32,105,115,32,110,111,116,32,103, - 117,97,114,97,110,116,101,101,100,32,116,111,32,98,101,32, - 100,101,102,105,110,101,100,32,111,114,32,99,111,117,108,100, - 32,98,101,32,115,101,116,32,116,111,32,78,111,110,101,10, - 32,32,32,32,116,111,32,114,101,112,114,101,115,101,110,116, - 32,116,104,97,116,32,105,116,115,32,112,114,111,112,101,114, - 32,118,97,108,117,101,32,105,115,32,117,110,107,110,111,119, - 110,46,10,10,32,32,32,32,114,146,0,0,0,114,106,0, - 0,0,78,122,32,95,95,112,97,99,107,97,103,101,95,95, - 32,33,61,32,95,95,115,112,101,99,95,95,46,112,97,114, - 101,110,116,32,40,122,4,32,33,61,32,250,1,41,233,3, - 0,0,0,41,1,90,10,115,116,97,99,107,108,101,118,101, - 108,122,89,99,97,110,39,116,32,114,101,115,111,108,118,101, - 32,112,97,99,107,97,103,101,32,102,114,111,109,32,95,95, - 115,112,101,99,95,95,32,111,114,32,95,95,112,97,99,107, - 97,103,101,95,95,44,32,102,97,108,108,105,110,103,32,98, - 97,99,107,32,111,110,32,95,95,110,97,109,101,95,95,32, - 97,110,100,32,95,95,112,97,116,104,95,95,114,1,0,0, - 0,114,142,0,0,0,114,129,0,0,0,114,22,0,0,0, - 41,6,114,35,0,0,0,114,131,0,0,0,114,193,0,0, - 0,114,194,0,0,0,114,195,0,0,0,114,130,0,0,0, - 41,3,218,7,103,108,111,98,97,108,115,114,187,0,0,0, - 114,96,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,17,95,99,97,108,99,95,95,95,112,97, - 99,107,97,103,101,95,95,46,4,0,0,115,42,0,0,0, - 0,7,10,1,10,1,8,1,18,1,6,1,2,255,4,1, - 4,255,6,2,4,254,6,3,4,1,8,1,6,2,6,2, - 4,254,6,3,8,1,8,1,14,1,114,221,0,0,0,114, - 10,0,0,0,99,5,0,0,0,0,0,0,0,0,0,0, - 0,9,0,0,0,5,0,0,0,67,0,0,0,115,180,0, - 0,0,124,4,100,1,107,2,114,18,116,0,124,0,131,1, - 125,5,110,36,124,1,100,2,117,1,114,30,124,1,110,2, - 105,0,125,6,116,1,124,6,131,1,125,7,116,0,124,0, - 124,7,124,4,131,3,125,5,124,3,115,150,124,4,100,1, - 107,2,114,84,116,0,124,0,160,2,100,3,161,1,100,1, - 25,0,131,1,83,0,124,0,115,92,124,5,83,0,116,3, - 124,0,131,1,116,3,124,0,160,2,100,3,161,1,100,1, - 25,0,131,1,24,0,125,8,116,4,106,5,124,5,106,6, - 100,2,116,3,124,5,106,6,131,1,124,8,24,0,133,2, - 25,0,25,0,83,0,110,26,116,7,124,5,100,4,131,2, - 114,172,116,8,124,5,124,3,116,0,131,3,83,0,124,5, - 83,0,100,2,83,0,41,5,97,215,1,0,0,73,109,112, - 111,114,116,32,97,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,84,104,101,32,39,103,108,111,98,97,108,115,39, - 32,97,114,103,117,109,101,110,116,32,105,115,32,117,115,101, - 100,32,116,111,32,105,110,102,101,114,32,119,104,101,114,101, - 32,116,104,101,32,105,109,112,111,114,116,32,105,115,32,111, - 99,99,117,114,114,105,110,103,32,102,114,111,109,10,32,32, - 32,32,116,111,32,104,97,110,100,108,101,32,114,101,108,97, - 116,105,118,101,32,105,109,112,111,114,116,115,46,32,84,104, - 101,32,39,108,111,99,97,108,115,39,32,97,114,103,117,109, - 101,110,116,32,105,115,32,105,103,110,111,114,101,100,46,32, - 84,104,101,10,32,32,32,32,39,102,114,111,109,108,105,115, - 116,39,32,97,114,103,117,109,101,110,116,32,115,112,101,99, - 105,102,105,101,115,32,119,104,97,116,32,115,104,111,117,108, - 100,32,101,120,105,115,116,32,97,115,32,97,116,116,114,105, - 98,117,116,101,115,32,111,110,32,116,104,101,32,109,111,100, - 117,108,101,10,32,32,32,32,98,101,105,110,103,32,105,109, - 112,111,114,116,101,100,32,40,101,46,103,46,32,96,96,102, - 114,111,109,32,109,111,100,117,108,101,32,105,109,112,111,114, - 116,32,60,102,114,111,109,108,105,115,116,62,96,96,41,46, - 32,32,84,104,101,32,39,108,101,118,101,108,39,10,32,32, - 32,32,97,114,103,117,109,101,110,116,32,114,101,112,114,101, - 115,101,110,116,115,32,116,104,101,32,112,97,99,107,97,103, - 101,32,108,111,99,97,116,105,111,110,32,116,111,32,105,109, - 112,111,114,116,32,102,114,111,109,32,105,110,32,97,32,114, - 101,108,97,116,105,118,101,10,32,32,32,32,105,109,112,111, - 114,116,32,40,101,46,103,46,32,96,96,102,114,111,109,32, - 46,46,112,107,103,32,105,109,112,111,114,116,32,109,111,100, - 96,96,32,119,111,117,108,100,32,104,97,118,101,32,97,32, - 39,108,101,118,101,108,39,32,111,102,32,50,41,46,10,10, - 32,32,32,32,114,22,0,0,0,78,114,129,0,0,0,114, - 142,0,0,0,41,9,114,210,0,0,0,114,221,0,0,0, - 218,9,112,97,114,116,105,116,105,111,110,114,186,0,0,0, - 114,15,0,0,0,114,93,0,0,0,114,1,0,0,0,114, - 4,0,0,0,114,215,0,0,0,41,9,114,17,0,0,0, - 114,220,0,0,0,218,6,108,111,99,97,108,115,114,216,0, - 0,0,114,188,0,0,0,114,97,0,0,0,90,8,103,108, - 111,98,97,108,115,95,114,187,0,0,0,90,7,99,117,116, - 95,111,102,102,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,10,95,95,105,109,112,111,114,116,95,95,73, - 4,0,0,115,30,0,0,0,0,11,8,1,10,2,16,1, - 8,1,12,1,4,3,8,1,18,1,4,1,4,4,26,3, - 32,1,10,1,12,2,114,224,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, - 67,0,0,0,115,38,0,0,0,116,0,160,1,124,0,161, - 1,125,1,124,1,100,0,117,0,114,30,116,2,100,1,124, - 0,23,0,131,1,130,1,116,3,124,1,131,1,83,0,41, - 2,78,122,25,110,111,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,32,110,97,109,101,100,32,41,4,114, - 161,0,0,0,114,168,0,0,0,114,80,0,0,0,114,160, - 0,0,0,41,2,114,17,0,0,0,114,96,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,18, - 95,98,117,105,108,116,105,110,95,102,114,111,109,95,110,97, - 109,101,110,4,0,0,115,8,0,0,0,0,1,10,1,8, - 1,12,1,114,225,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,10,0,0,0,5,0,0,0,67,0,0, - 0,115,166,0,0,0,124,1,97,0,124,0,97,1,116,2, - 116,1,131,1,125,2,116,1,106,3,160,4,161,0,68,0, - 93,72,92,2,125,3,125,4,116,5,124,4,124,2,131,2, - 114,26,124,3,116,1,106,6,118,0,114,60,116,7,125,5, - 110,18,116,0,160,8,124,3,161,1,114,26,116,9,125,5, - 110,2,113,26,116,10,124,4,124,5,131,2,125,6,116,11, - 124,6,124,4,131,2,1,0,113,26,116,1,106,3,116,12, - 25,0,125,7,100,1,68,0,93,46,125,8,124,8,116,1, - 106,3,118,1,114,138,116,13,124,8,131,1,125,9,110,10, - 116,1,106,3,124,8,25,0,125,9,116,14,124,7,124,8, - 124,9,131,3,1,0,113,114,100,2,83,0,41,3,122,250, - 83,101,116,117,112,32,105,109,112,111,114,116,108,105,98,32, - 98,121,32,105,109,112,111,114,116,105,110,103,32,110,101,101, - 100,101,100,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,115,32,97,110,100,32,105,110,106,101,99,116,105, - 110,103,32,116,104,101,109,10,32,32,32,32,105,110,116,111, - 32,116,104,101,32,103,108,111,98,97,108,32,110,97,109,101, - 115,112,97,99,101,46,10,10,32,32,32,32,65,115,32,115, - 121,115,32,105,115,32,110,101,101,100,101,100,32,102,111,114, - 32,115,121,115,46,109,111,100,117,108,101,115,32,97,99,99, - 101,115,115,32,97,110,100,32,95,105,109,112,32,105,115,32, - 110,101,101,100,101,100,32,116,111,32,108,111,97,100,32,98, - 117,105,108,116,45,105,110,10,32,32,32,32,109,111,100,117, - 108,101,115,44,32,116,104,111,115,101,32,116,119,111,32,109, - 111,100,117,108,101,115,32,109,117,115,116,32,98,101,32,101, - 120,112,108,105,99,105,116,108,121,32,112,97,115,115,101,100, - 32,105,110,46,10,10,32,32,32,32,41,3,114,23,0,0, - 0,114,193,0,0,0,114,65,0,0,0,78,41,15,114,58, - 0,0,0,114,15,0,0,0,114,14,0,0,0,114,93,0, - 0,0,218,5,105,116,101,109,115,114,197,0,0,0,114,79, - 0,0,0,114,161,0,0,0,114,89,0,0,0,114,175,0, - 0,0,114,143,0,0,0,114,149,0,0,0,114,1,0,0, - 0,114,225,0,0,0,114,5,0,0,0,41,10,218,10,115, - 121,115,95,109,111,100,117,108,101,218,11,95,105,109,112,95, - 109,111,100,117,108,101,90,11,109,111,100,117,108,101,95,116, - 121,112,101,114,17,0,0,0,114,97,0,0,0,114,110,0, - 0,0,114,96,0,0,0,90,11,115,101,108,102,95,109,111, - 100,117,108,101,90,12,98,117,105,108,116,105,110,95,110,97, - 109,101,90,14,98,117,105,108,116,105,110,95,109,111,100,117, - 108,101,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,6,95,115,101,116,117,112,117,4,0,0,115,36,0, - 0,0,0,9,4,1,4,3,8,1,18,1,10,1,10,1, - 6,1,10,1,6,2,2,1,10,1,12,3,10,1,8,1, - 10,1,10,2,10,1,114,229,0,0,0,99,2,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, - 67,0,0,0,115,38,0,0,0,116,0,124,0,124,1,131, - 2,1,0,116,1,106,2,160,3,116,4,161,1,1,0,116, - 1,106,2,160,3,116,5,161,1,1,0,100,1,83,0,41, - 2,122,48,73,110,115,116,97,108,108,32,105,109,112,111,114, - 116,101,114,115,32,102,111,114,32,98,117,105,108,116,105,110, - 32,97,110,100,32,102,114,111,122,101,110,32,109,111,100,117, - 108,101,115,78,41,6,114,229,0,0,0,114,15,0,0,0, - 114,192,0,0,0,114,120,0,0,0,114,161,0,0,0,114, - 175,0,0,0,41,2,114,227,0,0,0,114,228,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, - 8,95,105,110,115,116,97,108,108,152,4,0,0,115,6,0, - 0,0,0,2,10,2,12,1,114,230,0,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0, - 0,0,67,0,0,0,115,32,0,0,0,100,1,100,2,108, - 0,125,0,124,0,97,1,124,0,160,2,116,3,106,4,116, - 5,25,0,161,1,1,0,100,2,83,0,41,3,122,57,73, - 110,115,116,97,108,108,32,105,109,112,111,114,116,101,114,115, - 32,116,104,97,116,32,114,101,113,117,105,114,101,32,101,120, - 116,101,114,110,97,108,32,102,105,108,101,115,121,115,116,101, - 109,32,97,99,99,101,115,115,114,22,0,0,0,78,41,6, - 218,26,95,102,114,111,122,101,110,95,105,109,112,111,114,116, - 108,105,98,95,101,120,116,101,114,110,97,108,114,127,0,0, - 0,114,230,0,0,0,114,15,0,0,0,114,93,0,0,0, - 114,1,0,0,0,41,1,114,231,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,27,95,105,110, - 115,116,97,108,108,95,101,120,116,101,114,110,97,108,95,105, - 109,112,111,114,116,101,114,115,160,4,0,0,115,6,0,0, - 0,0,3,8,1,4,1,114,232,0,0,0,41,2,78,78, - 41,1,78,41,2,78,114,22,0,0,0,41,4,78,78,114, - 10,0,0,0,114,22,0,0,0,41,50,114,3,0,0,0, - 114,127,0,0,0,114,12,0,0,0,114,18,0,0,0,114, - 60,0,0,0,114,34,0,0,0,114,44,0,0,0,114,19, - 0,0,0,114,20,0,0,0,114,50,0,0,0,114,51,0, - 0,0,114,54,0,0,0,114,66,0,0,0,114,68,0,0, - 0,114,77,0,0,0,114,87,0,0,0,114,91,0,0,0, - 114,98,0,0,0,114,112,0,0,0,114,113,0,0,0,114, - 92,0,0,0,114,143,0,0,0,114,149,0,0,0,114,153, - 0,0,0,114,108,0,0,0,114,94,0,0,0,114,159,0, - 0,0,114,160,0,0,0,114,95,0,0,0,114,161,0,0, - 0,114,175,0,0,0,114,180,0,0,0,114,189,0,0,0, - 114,191,0,0,0,114,196,0,0,0,114,202,0,0,0,90, - 15,95,69,82,82,95,77,83,71,95,80,82,69,70,73,88, - 114,204,0,0,0,114,207,0,0,0,218,6,111,98,106,101, - 99,116,114,208,0,0,0,114,209,0,0,0,114,210,0,0, - 0,114,215,0,0,0,114,221,0,0,0,114,224,0,0,0, - 114,225,0,0,0,114,229,0,0,0,114,230,0,0,0,114, - 232,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,218,8,60,109,111,100,117,108, - 101,62,1,0,0,0,115,94,0,0,0,4,24,4,2,8, - 8,8,8,4,2,4,3,16,4,14,77,14,21,14,16,8, - 37,8,17,8,11,14,8,8,11,8,12,8,16,8,36,14, - 101,16,26,10,45,14,72,8,17,8,17,8,30,8,37,8, - 42,8,15,14,75,14,79,14,13,8,9,8,9,10,47,8, - 16,4,1,8,2,8,32,6,3,8,16,10,15,14,37,8, - 27,10,37,8,7,8,35,8,8, -}; +/* Auto-generated by Programs/_freeze_importlib.c */ +const unsigned char _Py_M__importlib_bootstrap[] = { + 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,64,0,0,0,115,194,1,0,0,100,0, + 90,0,100,1,97,1,100,2,100,3,132,0,90,2,100,4, + 100,5,132,0,90,3,105,0,90,4,105,0,90,5,71,0, + 100,6,100,7,132,0,100,7,101,6,131,3,90,7,71,0, + 100,8,100,9,132,0,100,9,131,2,90,8,71,0,100,10, + 100,11,132,0,100,11,131,2,90,9,71,0,100,12,100,13, + 132,0,100,13,131,2,90,10,100,14,100,15,132,0,90,11, + 100,16,100,17,132,0,90,12,100,18,100,19,132,0,90,13, + 100,20,100,21,156,1,100,22,100,23,132,2,90,14,100,24, + 100,25,132,0,90,15,100,26,100,27,132,0,90,16,100,28, + 100,29,132,0,90,17,100,30,100,31,132,0,90,18,71,0, + 100,32,100,33,132,0,100,33,131,2,90,19,100,1,100,1, + 100,34,156,2,100,35,100,36,132,2,90,20,100,94,100,37, + 100,38,132,1,90,21,100,39,100,40,156,1,100,41,100,42, + 132,2,90,22,100,43,100,44,132,0,90,23,100,45,100,46, + 132,0,90,24,100,47,100,48,132,0,90,25,100,49,100,50, + 132,0,90,26,100,51,100,52,132,0,90,27,100,53,100,54, + 132,0,90,28,71,0,100,55,100,56,132,0,100,56,131,2, + 90,29,71,0,100,57,100,58,132,0,100,58,131,2,90,30, + 71,0,100,59,100,60,132,0,100,60,131,2,90,31,100,61, + 100,62,132,0,90,32,100,63,100,64,132,0,90,33,100,95, + 100,65,100,66,132,1,90,34,100,67,100,68,132,0,90,35, + 100,69,90,36,101,36,100,70,23,0,90,37,100,71,100,72, + 132,0,90,38,101,39,131,0,90,40,100,73,100,74,132,0, + 90,41,100,96,100,76,100,77,132,1,90,42,100,39,100,78, + 156,1,100,79,100,80,132,2,90,43,100,81,100,82,132,0, + 90,44,100,97,100,84,100,85,132,1,90,45,100,86,100,87, + 132,0,90,46,100,88,100,89,132,0,90,47,100,90,100,91, + 132,0,90,48,100,92,100,93,132,0,90,49,100,1,83,0, + 41,98,97,83,1,0,0,67,111,114,101,32,105,109,112,108, + 101,109,101,110,116,97,116,105,111,110,32,111,102,32,105,109, + 112,111,114,116,46,10,10,84,104,105,115,32,109,111,100,117, + 108,101,32,105,115,32,78,79,84,32,109,101,97,110,116,32, + 116,111,32,98,101,32,100,105,114,101,99,116,108,121,32,105, + 109,112,111,114,116,101,100,33,32,73,116,32,104,97,115,32, + 98,101,101,110,32,100,101,115,105,103,110,101,100,32,115,117, + 99,104,10,116,104,97,116,32,105,116,32,99,97,110,32,98, + 101,32,98,111,111,116,115,116,114,97,112,112,101,100,32,105, + 110,116,111,32,80,121,116,104,111,110,32,97,115,32,116,104, + 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, + 32,111,102,32,105,109,112,111,114,116,46,32,65,115,10,115, + 117,99,104,32,105,116,32,114,101,113,117,105,114,101,115,32, + 116,104,101,32,105,110,106,101,99,116,105,111,110,32,111,102, + 32,115,112,101,99,105,102,105,99,32,109,111,100,117,108,101, + 115,32,97,110,100,32,97,116,116,114,105,98,117,116,101,115, + 32,105,110,32,111,114,100,101,114,32,116,111,10,119,111,114, + 107,46,32,79,110,101,32,115,104,111,117,108,100,32,117,115, + 101,32,105,109,112,111,114,116,108,105,98,32,97,115,32,116, + 104,101,32,112,117,98,108,105,99,45,102,97,99,105,110,103, + 32,118,101,114,115,105,111,110,32,111,102,32,116,104,105,115, + 32,109,111,100,117,108,101,46,10,10,78,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,7,0,0,0, + 67,0,0,0,115,56,0,0,0,100,1,68,0,93,32,125, + 2,116,0,124,1,124,2,131,2,114,4,116,1,124,0,124, + 2,116,2,124,1,124,2,131,2,131,3,1,0,113,4,124, + 0,106,3,160,4,124,1,106,3,161,1,1,0,100,2,83, + 0,41,3,122,47,83,105,109,112,108,101,32,115,117,98,115, + 116,105,116,117,116,101,32,102,111,114,32,102,117,110,99,116, + 111,111,108,115,46,117,112,100,97,116,101,95,119,114,97,112, + 112,101,114,46,41,4,218,10,95,95,109,111,100,117,108,101, + 95,95,218,8,95,95,110,97,109,101,95,95,218,12,95,95, + 113,117,97,108,110,97,109,101,95,95,218,7,95,95,100,111, + 99,95,95,78,41,5,218,7,104,97,115,97,116,116,114,218, + 7,115,101,116,97,116,116,114,218,7,103,101,116,97,116,116, + 114,218,8,95,95,100,105,99,116,95,95,218,6,117,112,100, + 97,116,101,41,3,90,3,110,101,119,90,3,111,108,100,218, + 7,114,101,112,108,97,99,101,169,0,114,10,0,0,0,250, + 29,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, + 105,98,46,95,98,111,111,116,115,116,114,97,112,62,218,5, + 95,119,114,97,112,27,0,0,0,115,8,0,0,0,0,2, + 8,1,10,1,20,1,114,12,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, + 67,0,0,0,115,12,0,0,0,116,0,116,1,131,1,124, + 0,131,1,83,0,169,1,78,41,2,218,4,116,121,112,101, + 218,3,115,121,115,169,1,218,4,110,97,109,101,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,218,11,95,110, + 101,119,95,109,111,100,117,108,101,35,0,0,0,115,2,0, + 0,0,0,1,114,18,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0, + 0,0,115,12,0,0,0,101,0,90,1,100,0,90,2,100, + 1,83,0,41,2,218,14,95,68,101,97,100,108,111,99,107, + 69,114,114,111,114,78,41,3,114,1,0,0,0,114,0,0, + 0,0,114,2,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,19,0,0,0, + 48,0,0,0,115,2,0,0,0,8,1,114,19,0,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,64,0,0,0,115,56,0,0,0,101,0, + 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0, + 90,4,100,4,100,5,132,0,90,5,100,6,100,7,132,0, + 90,6,100,8,100,9,132,0,90,7,100,10,100,11,132,0, + 90,8,100,12,83,0,41,13,218,11,95,77,111,100,117,108, + 101,76,111,99,107,122,169,65,32,114,101,99,117,114,115,105, + 118,101,32,108,111,99,107,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,119,104,105,99,104,32,105,115,32, + 97,98,108,101,32,116,111,32,100,101,116,101,99,116,32,100, + 101,97,100,108,111,99,107,115,10,32,32,32,32,40,101,46, + 103,46,32,116,104,114,101,97,100,32,49,32,116,114,121,105, + 110,103,32,116,111,32,116,97,107,101,32,108,111,99,107,115, + 32,65,32,116,104,101,110,32,66,44,32,97,110,100,32,116, + 104,114,101,97,100,32,50,32,116,114,121,105,110,103,32,116, + 111,10,32,32,32,32,116,97,107,101,32,108,111,99,107,115, + 32,66,32,116,104,101,110,32,65,41,46,10,32,32,32,32, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,2,0,0,0,67,0,0,0,115,48,0,0,0,116,0, + 160,1,161,0,124,0,95,2,116,0,160,1,161,0,124,0, + 95,3,124,1,124,0,95,4,100,0,124,0,95,5,100,1, + 124,0,95,6,100,1,124,0,95,7,100,0,83,0,169,2, + 78,233,0,0,0,0,41,8,218,7,95,116,104,114,101,97, + 100,90,13,97,108,108,111,99,97,116,101,95,108,111,99,107, + 218,4,108,111,99,107,218,6,119,97,107,101,117,112,114,17, + 0,0,0,218,5,111,119,110,101,114,218,5,99,111,117,110, + 116,218,7,119,97,105,116,101,114,115,169,2,218,4,115,101, + 108,102,114,17,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,8,95,95,105,110,105,116,95,95, + 58,0,0,0,115,12,0,0,0,0,1,10,1,10,1,6, + 1,6,1,6,1,122,20,95,77,111,100,117,108,101,76,111, + 99,107,46,95,95,105,110,105,116,95,95,99,1,0,0,0, + 0,0,0,0,0,0,0,0,5,0,0,0,3,0,0,0, + 67,0,0,0,115,88,0,0,0,116,0,160,1,161,0,125, + 1,124,0,106,2,125,2,116,3,131,0,125,3,116,4,160, + 5,124,2,161,1,125,4,124,4,100,0,117,0,114,42,100, + 1,83,0,124,4,106,2,125,2,124,2,124,1,107,2,114, + 60,100,2,83,0,124,2,124,3,118,0,114,72,100,1,83, + 0,124,3,160,6,124,2,161,1,1,0,113,20,100,0,83, + 0,41,3,78,70,84,41,7,114,23,0,0,0,218,9,103, + 101,116,95,105,100,101,110,116,114,26,0,0,0,218,3,115, + 101,116,218,12,95,98,108,111,99,107,105,110,103,95,111,110, + 218,3,103,101,116,218,3,97,100,100,41,5,114,30,0,0, + 0,90,2,109,101,218,3,116,105,100,90,4,115,101,101,110, + 114,24,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,12,104,97,115,95,100,101,97,100,108,111, + 99,107,66,0,0,0,115,24,0,0,0,0,2,8,1,6, + 1,6,2,10,1,8,1,4,1,6,1,8,1,4,1,8, + 6,4,1,122,24,95,77,111,100,117,108,101,76,111,99,107, + 46,104,97,115,95,100,101,97,100,108,111,99,107,99,1,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0, + 0,0,67,0,0,0,115,210,0,0,0,116,0,160,1,161, + 0,125,1,124,0,116,2,124,1,60,0,122,180,124,0,106, + 3,143,126,1,0,124,0,106,4,100,1,107,2,115,46,124, + 0,106,5,124,1,107,2,114,90,124,1,124,0,95,5,124, + 0,4,0,106,4,100,2,55,0,2,0,95,4,87,0,100, + 3,4,0,4,0,131,3,1,0,87,0,116,2,124,1,61, + 0,100,4,83,0,124,0,160,6,161,0,114,110,116,7,100, + 5,124,0,22,0,131,1,130,1,124,0,106,8,160,9,100, + 6,161,1,114,136,124,0,4,0,106,10,100,2,55,0,2, + 0,95,10,87,0,100,3,4,0,4,0,131,3,1,0,110, + 16,49,0,115,156,48,0,1,0,1,0,1,0,89,0,1, + 0,124,0,106,8,160,9,161,0,1,0,124,0,106,8,160, + 11,161,0,1,0,113,18,87,0,116,2,124,1,61,0,110, + 8,116,2,124,1,61,0,48,0,100,3,83,0,41,7,122, + 185,10,32,32,32,32,32,32,32,32,65,99,113,117,105,114, + 101,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99, + 107,46,32,32,73,102,32,97,32,112,111,116,101,110,116,105, + 97,108,32,100,101,97,100,108,111,99,107,32,105,115,32,100, + 101,116,101,99,116,101,100,44,10,32,32,32,32,32,32,32, + 32,97,32,95,68,101,97,100,108,111,99,107,69,114,114,111, + 114,32,105,115,32,114,97,105,115,101,100,46,10,32,32,32, + 32,32,32,32,32,79,116,104,101,114,119,105,115,101,44,32, + 116,104,101,32,108,111,99,107,32,105,115,32,97,108,119,97, + 121,115,32,97,99,113,117,105,114,101,100,32,97,110,100,32, + 84,114,117,101,32,105,115,32,114,101,116,117,114,110,101,100, + 46,10,32,32,32,32,32,32,32,32,114,22,0,0,0,233, + 1,0,0,0,78,84,122,23,100,101,97,100,108,111,99,107, + 32,100,101,116,101,99,116,101,100,32,98,121,32,37,114,70, + 41,12,114,23,0,0,0,114,32,0,0,0,114,34,0,0, + 0,114,24,0,0,0,114,27,0,0,0,114,26,0,0,0, + 114,38,0,0,0,114,19,0,0,0,114,25,0,0,0,218, + 7,97,99,113,117,105,114,101,114,28,0,0,0,218,7,114, + 101,108,101,97,115,101,169,2,114,30,0,0,0,114,37,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,114,40,0,0,0,87,0,0,0,115,34,0,0,0,0, + 6,8,1,8,1,2,2,8,1,20,1,6,1,14,1,14, + 9,6,247,4,1,8,1,12,1,12,1,44,2,10,1,14, + 2,122,19,95,77,111,100,117,108,101,76,111,99,107,46,97, + 99,113,117,105,114,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,115, + 142,0,0,0,116,0,160,1,161,0,125,1,124,0,106,2, + 143,108,1,0,124,0,106,3,124,1,107,3,114,34,116,4, + 100,1,131,1,130,1,124,0,106,5,100,2,107,4,115,48, + 74,0,130,1,124,0,4,0,106,5,100,3,56,0,2,0, + 95,5,124,0,106,5,100,2,107,2,114,108,100,0,124,0, + 95,3,124,0,106,6,114,108,124,0,4,0,106,6,100,3, + 56,0,2,0,95,6,124,0,106,7,160,8,161,0,1,0, + 87,0,100,0,4,0,4,0,131,3,1,0,110,16,49,0, + 115,128,48,0,1,0,1,0,1,0,89,0,1,0,100,0, + 83,0,41,4,78,250,31,99,97,110,110,111,116,32,114,101, + 108,101,97,115,101,32,117,110,45,97,99,113,117,105,114,101, + 100,32,108,111,99,107,114,22,0,0,0,114,39,0,0,0, + 41,9,114,23,0,0,0,114,32,0,0,0,114,24,0,0, + 0,114,26,0,0,0,218,12,82,117,110,116,105,109,101,69, + 114,114,111,114,114,27,0,0,0,114,28,0,0,0,114,25, + 0,0,0,114,41,0,0,0,114,42,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,41,0,0, + 0,112,0,0,0,115,22,0,0,0,0,1,8,1,8,1, + 10,1,8,1,14,1,14,1,10,1,6,1,6,1,14,1, + 122,19,95,77,111,100,117,108,101,76,111,99,107,46,114,101, + 108,101,97,115,101,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,5,0,0,0,67,0,0,0,115,18, + 0,0,0,100,1,160,0,124,0,106,1,116,2,124,0,131, + 1,161,2,83,0,41,2,78,122,23,95,77,111,100,117,108, + 101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,123, + 125,169,3,218,6,102,111,114,109,97,116,114,17,0,0,0, + 218,2,105,100,169,1,114,30,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,218,8,95,95,114,101, + 112,114,95,95,125,0,0,0,115,2,0,0,0,0,1,122, + 20,95,77,111,100,117,108,101,76,111,99,107,46,95,95,114, + 101,112,114,95,95,78,41,9,114,1,0,0,0,114,0,0, + 0,0,114,2,0,0,0,114,3,0,0,0,114,31,0,0, + 0,114,38,0,0,0,114,40,0,0,0,114,41,0,0,0, + 114,49,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,20,0,0,0,52,0, + 0,0,115,12,0,0,0,8,1,4,5,8,8,8,21,8, + 25,8,13,114,20,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, + 0,115,48,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0, + 90,5,100,6,100,7,132,0,90,6,100,8,100,9,132,0, + 90,7,100,10,83,0,41,11,218,16,95,68,117,109,109,121, + 77,111,100,117,108,101,76,111,99,107,122,86,65,32,115,105, + 109,112,108,101,32,95,77,111,100,117,108,101,76,111,99,107, + 32,101,113,117,105,118,97,108,101,110,116,32,102,111,114,32, + 80,121,116,104,111,110,32,98,117,105,108,100,115,32,119,105, + 116,104,111,117,116,10,32,32,32,32,109,117,108,116,105,45, + 116,104,114,101,97,100,105,110,103,32,115,117,112,112,111,114, + 116,46,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, + 124,1,124,0,95,0,100,1,124,0,95,1,100,0,83,0, + 114,21,0,0,0,41,2,114,17,0,0,0,114,27,0,0, + 0,114,29,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,31,0,0,0,133,0,0,0,115,4, + 0,0,0,0,1,6,1,122,25,95,68,117,109,109,121,77, + 111,100,117,108,101,76,111,99,107,46,95,95,105,110,105,116, + 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,18,0,0,0, + 124,0,4,0,106,0,100,1,55,0,2,0,95,0,100,2, + 83,0,41,3,78,114,39,0,0,0,84,41,1,114,27,0, + 0,0,114,48,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,40,0,0,0,137,0,0,0,115, + 4,0,0,0,0,1,14,1,122,24,95,68,117,109,109,121, + 77,111,100,117,108,101,76,111,99,107,46,97,99,113,117,105, + 114,101,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,36,0,0,0, + 124,0,106,0,100,1,107,2,114,18,116,1,100,2,131,1, + 130,1,124,0,4,0,106,0,100,3,56,0,2,0,95,0, + 100,0,83,0,41,4,78,114,22,0,0,0,114,43,0,0, + 0,114,39,0,0,0,41,2,114,27,0,0,0,114,44,0, + 0,0,114,48,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,41,0,0,0,141,0,0,0,115, + 6,0,0,0,0,1,10,1,8,1,122,24,95,68,117,109, + 109,121,77,111,100,117,108,101,76,111,99,107,46,114,101,108, + 101,97,115,101,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,5,0,0,0,67,0,0,0,115,18,0, + 0,0,100,1,160,0,124,0,106,1,116,2,124,0,131,1, + 161,2,83,0,41,2,78,122,28,95,68,117,109,109,121,77, + 111,100,117,108,101,76,111,99,107,40,123,33,114,125,41,32, + 97,116,32,123,125,114,45,0,0,0,114,48,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,49, + 0,0,0,146,0,0,0,115,2,0,0,0,0,1,122,25, + 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, + 46,95,95,114,101,112,114,95,95,78,41,8,114,1,0,0, + 0,114,0,0,0,0,114,2,0,0,0,114,3,0,0,0, + 114,31,0,0,0,114,40,0,0,0,114,41,0,0,0,114, + 49,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,50,0,0,0,129,0,0, + 0,115,10,0,0,0,8,1,4,3,8,4,8,4,8,5, + 114,50,0,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,36, + 0,0,0,101,0,90,1,100,0,90,2,100,1,100,2,132, + 0,90,3,100,3,100,4,132,0,90,4,100,5,100,6,132, + 0,90,5,100,7,83,0,41,8,218,18,95,77,111,100,117, + 108,101,76,111,99,107,77,97,110,97,103,101,114,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, + 0,0,67,0,0,0,115,16,0,0,0,124,1,124,0,95, + 0,100,0,124,0,95,1,100,0,83,0,114,13,0,0,0, + 41,2,218,5,95,110,97,109,101,218,5,95,108,111,99,107, + 114,29,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,31,0,0,0,152,0,0,0,115,4,0, + 0,0,0,1,6,1,122,27,95,77,111,100,117,108,101,76, + 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105, + 116,95,95,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,2,0,0,0,67,0,0,0,115,26,0,0, + 0,116,0,124,0,106,1,131,1,124,0,95,2,124,0,106, + 2,160,3,161,0,1,0,100,0,83,0,114,13,0,0,0, + 41,4,218,16,95,103,101,116,95,109,111,100,117,108,101,95, + 108,111,99,107,114,52,0,0,0,114,53,0,0,0,114,40, + 0,0,0,114,48,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,9,95,95,101,110,116,101,114, + 95,95,156,0,0,0,115,4,0,0,0,0,1,12,1,122, + 28,95,77,111,100,117,108,101,76,111,99,107,77,97,110,97, + 103,101,114,46,95,95,101,110,116,101,114,95,95,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0, + 0,0,79,0,0,0,115,14,0,0,0,124,0,106,0,160, + 1,161,0,1,0,100,0,83,0,114,13,0,0,0,41,2, + 114,53,0,0,0,114,41,0,0,0,41,3,114,30,0,0, + 0,218,4,97,114,103,115,90,6,107,119,97,114,103,115,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,8, + 95,95,101,120,105,116,95,95,160,0,0,0,115,2,0,0, + 0,0,1,122,27,95,77,111,100,117,108,101,76,111,99,107, + 77,97,110,97,103,101,114,46,95,95,101,120,105,116,95,95, + 78,41,6,114,1,0,0,0,114,0,0,0,0,114,2,0, + 0,0,114,31,0,0,0,114,55,0,0,0,114,57,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,51,0,0,0,150,0,0,0,115,6, + 0,0,0,8,2,8,4,8,4,114,51,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,8, + 0,0,0,67,0,0,0,115,136,0,0,0,116,0,160,1, + 161,0,1,0,122,112,122,14,116,2,124,0,25,0,131,0, + 125,1,87,0,110,22,4,0,116,3,121,46,1,0,1,0, + 1,0,100,1,125,1,89,0,110,2,48,0,124,1,100,1, + 117,0,114,110,116,4,100,1,117,0,114,74,116,5,124,0, + 131,1,125,1,110,8,116,6,124,0,131,1,125,1,124,0, + 102,1,100,2,100,3,132,1,125,2,116,7,160,8,124,1, + 124,2,161,2,116,2,124,0,60,0,87,0,116,0,160,9, + 161,0,1,0,110,10,116,0,160,9,161,0,1,0,48,0, + 124,1,83,0,41,4,122,139,71,101,116,32,111,114,32,99, + 114,101,97,116,101,32,116,104,101,32,109,111,100,117,108,101, + 32,108,111,99,107,32,102,111,114,32,97,32,103,105,118,101, + 110,32,109,111,100,117,108,101,32,110,97,109,101,46,10,10, + 32,32,32,32,65,99,113,117,105,114,101,47,114,101,108,101, + 97,115,101,32,105,110,116,101,114,110,97,108,108,121,32,116, + 104,101,32,103,108,111,98,97,108,32,105,109,112,111,114,116, + 32,108,111,99,107,32,116,111,32,112,114,111,116,101,99,116, + 10,32,32,32,32,95,109,111,100,117,108,101,95,108,111,99, + 107,115,46,78,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,8,0,0,0,83,0,0,0,115,56,0, + 0,0,116,0,160,1,161,0,1,0,122,32,116,2,160,3, + 124,1,161,1,124,0,117,0,114,30,116,2,124,1,61,0, + 87,0,116,0,160,4,161,0,1,0,110,10,116,0,160,4, + 161,0,1,0,48,0,100,0,83,0,114,13,0,0,0,41, + 5,218,4,95,105,109,112,218,12,97,99,113,117,105,114,101, + 95,108,111,99,107,218,13,95,109,111,100,117,108,101,95,108, + 111,99,107,115,114,35,0,0,0,218,12,114,101,108,101,97, + 115,101,95,108,111,99,107,41,2,218,3,114,101,102,114,17, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,218,2,99,98,185,0,0,0,115,10,0,0,0,0, + 1,8,1,2,4,14,1,8,2,122,28,95,103,101,116,95, + 109,111,100,117,108,101,95,108,111,99,107,46,60,108,111,99, + 97,108,115,62,46,99,98,41,10,114,58,0,0,0,114,59, + 0,0,0,114,60,0,0,0,218,8,75,101,121,69,114,114, + 111,114,114,23,0,0,0,114,50,0,0,0,114,20,0,0, + 0,218,8,95,119,101,97,107,114,101,102,114,62,0,0,0, + 114,61,0,0,0,41,3,114,17,0,0,0,114,24,0,0, + 0,114,63,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,54,0,0,0,166,0,0,0,115,28, + 0,0,0,0,6,8,1,2,1,2,1,14,1,12,1,10, + 2,8,1,8,1,10,2,8,2,12,11,18,2,20,2,114, + 54,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,8,0,0,0,67,0,0,0,115,52,0, + 0,0,116,0,124,0,131,1,125,1,122,12,124,1,160,1, + 161,0,1,0,87,0,110,18,4,0,116,2,121,38,1,0, + 1,0,1,0,89,0,110,10,48,0,124,1,160,3,161,0, + 1,0,100,1,83,0,41,2,122,189,65,99,113,117,105,114, + 101,115,32,116,104,101,110,32,114,101,108,101,97,115,101,115, + 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, + 32,102,111,114,32,97,32,103,105,118,101,110,32,109,111,100, + 117,108,101,32,110,97,109,101,46,10,10,32,32,32,32,84, + 104,105,115,32,105,115,32,117,115,101,100,32,116,111,32,101, + 110,115,117,114,101,32,97,32,109,111,100,117,108,101,32,105, + 115,32,99,111,109,112,108,101,116,101,108,121,32,105,110,105, + 116,105,97,108,105,122,101,100,44,32,105,110,32,116,104,101, + 10,32,32,32,32,101,118,101,110,116,32,105,116,32,105,115, + 32,98,101,105,110,103,32,105,109,112,111,114,116,101,100,32, + 98,121,32,97,110,111,116,104,101,114,32,116,104,114,101,97, + 100,46,10,32,32,32,32,78,41,4,114,54,0,0,0,114, + 40,0,0,0,114,19,0,0,0,114,41,0,0,0,41,2, + 114,17,0,0,0,114,24,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,19,95,108,111,99,107, + 95,117,110,108,111,99,107,95,109,111,100,117,108,101,203,0, + 0,0,115,12,0,0,0,0,6,8,1,2,1,12,1,12, + 3,6,2,114,66,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,4,0,0,0,79,0,0, + 0,115,14,0,0,0,124,0,124,1,105,0,124,2,164,1, + 142,1,83,0,41,1,97,46,1,0,0,114,101,109,111,118, + 101,95,105,109,112,111,114,116,108,105,98,95,102,114,97,109, + 101,115,32,105,110,32,105,109,112,111,114,116,46,99,32,119, + 105,108,108,32,97,108,119,97,121,115,32,114,101,109,111,118, + 101,32,115,101,113,117,101,110,99,101,115,10,32,32,32,32, + 111,102,32,105,109,112,111,114,116,108,105,98,32,102,114,97, + 109,101,115,32,116,104,97,116,32,101,110,100,32,119,105,116, + 104,32,97,32,99,97,108,108,32,116,111,32,116,104,105,115, + 32,102,117,110,99,116,105,111,110,10,10,32,32,32,32,85, + 115,101,32,105,116,32,105,110,115,116,101,97,100,32,111,102, + 32,97,32,110,111,114,109,97,108,32,99,97,108,108,32,105, + 110,32,112,108,97,99,101,115,32,119,104,101,114,101,32,105, + 110,99,108,117,100,105,110,103,32,116,104,101,32,105,109,112, + 111,114,116,108,105,98,10,32,32,32,32,102,114,97,109,101, + 115,32,105,110,116,114,111,100,117,99,101,115,32,117,110,119, + 97,110,116,101,100,32,110,111,105,115,101,32,105,110,116,111, + 32,116,104,101,32,116,114,97,99,101,98,97,99,107,32,40, + 101,46,103,46,32,119,104,101,110,32,101,120,101,99,117,116, + 105,110,103,10,32,32,32,32,109,111,100,117,108,101,32,99, + 111,100,101,41,10,32,32,32,32,114,10,0,0,0,41,3, + 218,1,102,114,56,0,0,0,90,4,107,119,100,115,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,25,95, + 99,97,108,108,95,119,105,116,104,95,102,114,97,109,101,115, + 95,114,101,109,111,118,101,100,220,0,0,0,115,2,0,0, + 0,0,8,114,68,0,0,0,114,39,0,0,0,41,1,218, + 9,118,101,114,98,111,115,105,116,121,99,1,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,71, + 0,0,0,115,54,0,0,0,116,0,106,1,106,2,124,1, + 107,5,114,50,124,0,160,3,100,1,161,1,115,30,100,2, + 124,0,23,0,125,0,116,4,124,0,106,5,124,2,142,0, + 116,0,106,6,100,3,141,2,1,0,100,4,83,0,41,5, + 122,61,80,114,105,110,116,32,116,104,101,32,109,101,115,115, + 97,103,101,32,116,111,32,115,116,100,101,114,114,32,105,102, + 32,45,118,47,80,89,84,72,79,78,86,69,82,66,79,83, + 69,32,105,115,32,116,117,114,110,101,100,32,111,110,46,41, + 2,250,1,35,122,7,105,109,112,111,114,116,32,122,2,35, + 32,41,1,90,4,102,105,108,101,78,41,7,114,15,0,0, + 0,218,5,102,108,97,103,115,218,7,118,101,114,98,111,115, + 101,218,10,115,116,97,114,116,115,119,105,116,104,218,5,112, + 114,105,110,116,114,46,0,0,0,218,6,115,116,100,101,114, + 114,41,3,218,7,109,101,115,115,97,103,101,114,69,0,0, + 0,114,56,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,16,95,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,231,0,0,0,115,8,0,0,0, + 0,2,12,1,10,1,8,1,114,77,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,3,0,0,0,115,26,0,0,0,135,0,102,1,100, + 1,100,2,132,8,125,1,116,0,124,1,136,0,131,2,1, + 0,124,1,83,0,41,3,122,49,68,101,99,111,114,97,116, + 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, + 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, + 32,98,117,105,108,116,45,105,110,46,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,19, + 0,0,0,115,38,0,0,0,124,1,116,0,106,1,118,1, + 114,28,116,2,100,1,160,3,124,1,161,1,124,1,100,2, + 141,2,130,1,136,0,124,0,124,1,131,2,83,0,41,3, + 78,250,29,123,33,114,125,32,105,115,32,110,111,116,32,97, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 114,16,0,0,0,41,4,114,15,0,0,0,218,20,98,117, + 105,108,116,105,110,95,109,111,100,117,108,101,95,110,97,109, + 101,115,218,11,73,109,112,111,114,116,69,114,114,111,114,114, + 46,0,0,0,169,2,114,30,0,0,0,218,8,102,117,108, + 108,110,97,109,101,169,1,218,3,102,120,110,114,10,0,0, + 0,114,11,0,0,0,218,25,95,114,101,113,117,105,114,101, + 115,95,98,117,105,108,116,105,110,95,119,114,97,112,112,101, + 114,241,0,0,0,115,10,0,0,0,0,1,10,1,10,1, + 2,255,6,2,122,52,95,114,101,113,117,105,114,101,115,95, + 98,117,105,108,116,105,110,46,60,108,111,99,97,108,115,62, + 46,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, + 105,110,95,119,114,97,112,112,101,114,169,1,114,12,0,0, + 0,41,2,114,84,0,0,0,114,85,0,0,0,114,10,0, + 0,0,114,83,0,0,0,114,11,0,0,0,218,17,95,114, + 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,239, + 0,0,0,115,6,0,0,0,0,2,12,5,10,1,114,87, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,3,0,0,0,3,0,0,0,115,26,0,0, + 0,135,0,102,1,100,1,100,2,132,8,125,1,116,0,124, + 1,136,0,131,2,1,0,124,1,83,0,41,3,122,47,68, + 101,99,111,114,97,116,111,114,32,116,111,32,118,101,114,105, + 102,121,32,116,104,101,32,110,97,109,101,100,32,109,111,100, + 117,108,101,32,105,115,32,102,114,111,122,101,110,46,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, + 0,0,0,19,0,0,0,115,38,0,0,0,116,0,160,1, + 124,1,161,1,115,28,116,2,100,1,160,3,124,1,161,1, + 124,1,100,2,141,2,130,1,136,0,124,0,124,1,131,2, + 83,0,169,3,78,122,27,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,102,114,111,122,101,110,32,109,111,100,117, + 108,101,114,16,0,0,0,41,4,114,58,0,0,0,218,9, + 105,115,95,102,114,111,122,101,110,114,80,0,0,0,114,46, + 0,0,0,114,81,0,0,0,114,83,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,24,95,114,101,113,117,105,114, + 101,115,95,102,114,111,122,101,110,95,119,114,97,112,112,101, + 114,252,0,0,0,115,10,0,0,0,0,1,10,1,10,1, + 2,255,6,2,122,50,95,114,101,113,117,105,114,101,115,95, + 102,114,111,122,101,110,46,60,108,111,99,97,108,115,62,46, + 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, + 95,119,114,97,112,112,101,114,114,86,0,0,0,41,2,114, + 84,0,0,0,114,90,0,0,0,114,10,0,0,0,114,83, + 0,0,0,114,11,0,0,0,218,16,95,114,101,113,117,105, + 114,101,115,95,102,114,111,122,101,110,250,0,0,0,115,6, + 0,0,0,0,2,12,5,10,1,114,91,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3, + 0,0,0,67,0,0,0,115,62,0,0,0,116,0,124,1, + 124,0,131,2,125,2,124,1,116,1,106,2,118,0,114,50, + 116,1,106,2,124,1,25,0,125,3,116,3,124,2,124,3, + 131,2,1,0,116,1,106,2,124,1,25,0,83,0,116,4, + 124,2,131,1,83,0,100,1,83,0,41,2,122,128,76,111, + 97,100,32,116,104,101,32,115,112,101,99,105,102,105,101,100, + 32,109,111,100,117,108,101,32,105,110,116,111,32,115,121,115, + 46,109,111,100,117,108,101,115,32,97,110,100,32,114,101,116, + 117,114,110,32,105,116,46,10,10,32,32,32,32,84,104,105, + 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,85,115,101,32,108,111,97, + 100,101,114,46,101,120,101,99,95,109,111,100,117,108,101,32, + 105,110,115,116,101,97,100,46,10,10,32,32,32,32,78,41, + 5,218,16,115,112,101,99,95,102,114,111,109,95,108,111,97, + 100,101,114,114,15,0,0,0,218,7,109,111,100,117,108,101, + 115,218,5,95,101,120,101,99,218,5,95,108,111,97,100,41, + 4,114,30,0,0,0,114,82,0,0,0,218,4,115,112,101, + 99,218,6,109,111,100,117,108,101,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,218,17,95,108,111,97,100,95, + 109,111,100,117,108,101,95,115,104,105,109,6,1,0,0,115, + 12,0,0,0,0,6,10,1,10,1,10,1,10,1,10,2, + 114,98,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,8,0,0,0,67,0,0,0,115,218, + 0,0,0,116,0,124,0,100,1,100,0,131,3,125,1,116, + 1,124,1,100,2,131,2,114,54,122,12,124,1,160,2,124, + 0,161,1,87,0,83,0,4,0,116,3,121,52,1,0,1, + 0,1,0,89,0,110,2,48,0,122,10,124,0,106,4,125, + 2,87,0,110,18,4,0,116,5,121,82,1,0,1,0,1, + 0,89,0,110,18,48,0,124,2,100,0,117,1,114,100,116, + 6,124,2,131,1,83,0,122,10,124,0,106,7,125,3,87, + 0,110,22,4,0,116,5,121,132,1,0,1,0,1,0,100, + 3,125,3,89,0,110,2,48,0,122,10,124,0,106,8,125, + 4,87,0,110,56,4,0,116,5,121,200,1,0,1,0,1, + 0,124,1,100,0,117,0,114,180,100,4,160,9,124,3,161, + 1,6,0,89,0,83,0,100,5,160,9,124,3,124,1,161, + 2,6,0,89,0,83,0,89,0,110,14,48,0,100,6,160, + 9,124,3,124,4,161,2,83,0,100,0,83,0,41,7,78, + 218,10,95,95,108,111,97,100,101,114,95,95,218,11,109,111, + 100,117,108,101,95,114,101,112,114,250,1,63,250,13,60,109, + 111,100,117,108,101,32,123,33,114,125,62,250,20,60,109,111, + 100,117,108,101,32,123,33,114,125,32,40,123,33,114,125,41, + 62,250,23,60,109,111,100,117,108,101,32,123,33,114,125,32, + 102,114,111,109,32,123,33,114,125,62,41,10,114,6,0,0, + 0,114,4,0,0,0,114,100,0,0,0,218,9,69,120,99, + 101,112,116,105,111,110,218,8,95,95,115,112,101,99,95,95, + 218,14,65,116,116,114,105,98,117,116,101,69,114,114,111,114, + 218,22,95,109,111,100,117,108,101,95,114,101,112,114,95,102, + 114,111,109,95,115,112,101,99,114,1,0,0,0,218,8,95, + 95,102,105,108,101,95,95,114,46,0,0,0,41,5,114,97, + 0,0,0,218,6,108,111,97,100,101,114,114,96,0,0,0, + 114,17,0,0,0,218,8,102,105,108,101,110,97,109,101,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,12, + 95,109,111,100,117,108,101,95,114,101,112,114,22,1,0,0, + 115,46,0,0,0,0,2,12,1,10,4,2,1,12,1,12, + 1,6,1,2,1,10,1,12,1,6,2,8,1,8,4,2, + 1,10,1,12,1,10,1,2,1,10,1,12,1,8,1,14, + 2,22,2,114,112,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, + 0,115,114,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,100,2,100,2,100,3,156,3,100,4,100,5, + 132,2,90,4,100,6,100,7,132,0,90,5,100,8,100,9, + 132,0,90,6,101,7,100,10,100,11,132,0,131,1,90,8, + 101,8,106,9,100,12,100,11,132,0,131,1,90,8,101,7, + 100,13,100,14,132,0,131,1,90,10,101,7,100,15,100,16, + 132,0,131,1,90,11,101,11,106,9,100,17,100,16,132,0, + 131,1,90,11,100,2,83,0,41,18,218,10,77,111,100,117, + 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, + 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, + 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, + 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, + 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, + 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, + 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, + 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, + 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, + 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, + 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, + 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, + 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, + 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, + 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, + 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, + 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, + 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, + 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, + 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, + 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, + 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, + 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, + 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, + 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, + 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, + 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, + 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, + 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, + 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, + 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, + 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, + 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, + 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, + 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, + 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, + 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, + 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, + 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, + 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, + 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, + 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, + 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, + 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, + 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, + 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, + 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, + 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, + 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, + 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, + 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, + 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, + 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, + 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, + 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, + 32,32,32,32,96,115,117,98,109,111,100,117,108,101,95,115, + 101,97,114,99,104,95,108,111,99,97,116,105,111,110,115,96, + 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, + 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, + 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, + 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, + 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, + 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, + 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, + 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, + 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, + 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, + 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, + 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, + 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, + 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, + 101,32,118,97,108,117,101,32,105,110,32,96,115,117,98,109, + 111,100,117,108,101,95,115,101,97,114,99,104,95,108,111,99, + 97,116,105,111,110,115,96,44,32,116,104,101,32,105,109,112, + 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, + 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, + 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, + 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, + 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, + 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, + 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, + 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, + 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, + 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, + 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, + 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, + 110,99,101,115,46,10,10,32,32,32,32,78,41,3,218,6, + 111,114,105,103,105,110,218,12,108,111,97,100,101,114,95,115, + 116,97,116,101,218,10,105,115,95,112,97,99,107,97,103,101, + 99,3,0,0,0,0,0,0,0,3,0,0,0,6,0,0, + 0,2,0,0,0,67,0,0,0,115,54,0,0,0,124,1, + 124,0,95,0,124,2,124,0,95,1,124,3,124,0,95,2, + 124,4,124,0,95,3,124,5,114,32,103,0,110,2,100,0, + 124,0,95,4,100,1,124,0,95,5,100,0,124,0,95,6, + 100,0,83,0,41,2,78,70,41,7,114,17,0,0,0,114, + 110,0,0,0,114,114,0,0,0,114,115,0,0,0,218,26, + 115,117,98,109,111,100,117,108,101,95,115,101,97,114,99,104, + 95,108,111,99,97,116,105,111,110,115,218,13,95,115,101,116, + 95,102,105,108,101,97,116,116,114,218,7,95,99,97,99,104, + 101,100,41,6,114,30,0,0,0,114,17,0,0,0,114,110, + 0,0,0,114,114,0,0,0,114,115,0,0,0,114,116,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,114,31,0,0,0,95,1,0,0,115,14,0,0,0,0, + 2,6,1,6,1,6,1,6,1,14,3,6,1,122,19,77, + 111,100,117,108,101,83,112,101,99,46,95,95,105,110,105,116, + 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,6,0,0,0,67,0,0,0,115,102,0,0,0, + 100,1,160,0,124,0,106,1,161,1,100,2,160,0,124,0, + 106,2,161,1,103,2,125,1,124,0,106,3,100,0,117,1, + 114,52,124,1,160,4,100,3,160,0,124,0,106,3,161,1, + 161,1,1,0,124,0,106,5,100,0,117,1,114,80,124,1, + 160,4,100,4,160,0,124,0,106,5,161,1,161,1,1,0, + 100,5,160,0,124,0,106,6,106,7,100,6,160,8,124,1, + 161,1,161,2,83,0,41,7,78,122,9,110,97,109,101,61, + 123,33,114,125,122,11,108,111,97,100,101,114,61,123,33,114, + 125,122,11,111,114,105,103,105,110,61,123,33,114,125,122,29, + 115,117,98,109,111,100,117,108,101,95,115,101,97,114,99,104, + 95,108,111,99,97,116,105,111,110,115,61,123,125,122,6,123, + 125,40,123,125,41,122,2,44,32,41,9,114,46,0,0,0, + 114,17,0,0,0,114,110,0,0,0,114,114,0,0,0,218, + 6,97,112,112,101,110,100,114,117,0,0,0,218,9,95,95, + 99,108,97,115,115,95,95,114,1,0,0,0,218,4,106,111, + 105,110,41,2,114,30,0,0,0,114,56,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,49,0, + 0,0,107,1,0,0,115,20,0,0,0,0,1,10,1,10, + 255,4,2,10,1,18,1,10,1,8,1,4,255,6,2,122, + 19,77,111,100,117,108,101,83,112,101,99,46,95,95,114,101, + 112,114,95,95,99,2,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,8,0,0,0,67,0,0,0,115,106,0, + 0,0,124,0,106,0,125,2,122,72,124,0,106,1,124,1, + 106,1,107,2,111,76,124,0,106,2,124,1,106,2,107,2, + 111,76,124,0,106,3,124,1,106,3,107,2,111,76,124,2, + 124,1,106,0,107,2,111,76,124,0,106,4,124,1,106,4, + 107,2,111,76,124,0,106,5,124,1,106,5,107,2,87,0, + 83,0,4,0,116,6,121,100,1,0,1,0,1,0,116,7, + 6,0,89,0,83,0,48,0,100,0,83,0,114,13,0,0, + 0,41,8,114,117,0,0,0,114,17,0,0,0,114,110,0, + 0,0,114,114,0,0,0,218,6,99,97,99,104,101,100,218, + 12,104,97,115,95,108,111,99,97,116,105,111,110,114,107,0, + 0,0,218,14,78,111,116,73,109,112,108,101,109,101,110,116, + 101,100,41,3,114,30,0,0,0,90,5,111,116,104,101,114, + 90,4,115,109,115,108,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,6,95,95,101,113,95,95,117,1,0, + 0,115,30,0,0,0,0,1,6,1,2,1,12,1,10,255, + 2,2,10,254,2,3,8,253,2,4,10,252,2,5,10,251, + 4,6,12,1,122,17,77,111,100,117,108,101,83,112,101,99, + 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, + 115,58,0,0,0,124,0,106,0,100,0,117,0,114,52,124, + 0,106,1,100,0,117,1,114,52,124,0,106,2,114,52,116, + 3,100,0,117,0,114,38,116,4,130,1,116,3,160,5,124, + 0,106,1,161,1,124,0,95,0,124,0,106,0,83,0,114, + 13,0,0,0,41,6,114,119,0,0,0,114,114,0,0,0, + 114,118,0,0,0,218,19,95,98,111,111,116,115,116,114,97, + 112,95,101,120,116,101,114,110,97,108,218,19,78,111,116,73, + 109,112,108,101,109,101,110,116,101,100,69,114,114,111,114,90, + 11,95,103,101,116,95,99,97,99,104,101,100,114,48,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 114,123,0,0,0,129,1,0,0,115,12,0,0,0,0,2, + 10,1,16,1,8,1,4,1,14,1,122,17,77,111,100,117, + 108,101,83,112,101,99,46,99,97,99,104,101,100,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0, + 0,0,67,0,0,0,115,10,0,0,0,124,1,124,0,95, + 0,100,0,83,0,114,13,0,0,0,41,1,114,119,0,0, + 0,41,2,114,30,0,0,0,114,123,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,123,0,0, + 0,138,1,0,0,115,2,0,0,0,0,2,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0, + 0,67,0,0,0,115,36,0,0,0,124,0,106,0,100,1, + 117,0,114,26,124,0,106,1,160,2,100,2,161,1,100,3, + 25,0,83,0,124,0,106,1,83,0,100,1,83,0,41,4, + 122,32,84,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,32,109,111,100,117,108,101,39,115,32,112,97,114,101,110, + 116,46,78,218,1,46,114,22,0,0,0,41,3,114,117,0, + 0,0,114,17,0,0,0,218,10,114,112,97,114,116,105,116, + 105,111,110,114,48,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,6,112,97,114,101,110,116,142, + 1,0,0,115,6,0,0,0,0,3,10,1,16,2,122,17, + 77,111,100,117,108,101,83,112,101,99,46,112,97,114,101,110, + 116,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,1,0,0,0,67,0,0,0,115,6,0,0,0,124, + 0,106,0,83,0,114,13,0,0,0,41,1,114,118,0,0, + 0,114,48,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,124,0,0,0,150,1,0,0,115,2, + 0,0,0,0,2,122,23,77,111,100,117,108,101,83,112,101, + 99,46,104,97,115,95,108,111,99,97,116,105,111,110,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2, + 0,0,0,67,0,0,0,115,14,0,0,0,116,0,124,1, + 131,1,124,0,95,1,100,0,83,0,114,13,0,0,0,41, + 2,218,4,98,111,111,108,114,118,0,0,0,41,2,114,30, + 0,0,0,218,5,118,97,108,117,101,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,124,0,0,0,154,1, + 0,0,115,2,0,0,0,0,2,41,12,114,1,0,0,0, + 114,0,0,0,0,114,2,0,0,0,114,3,0,0,0,114, + 31,0,0,0,114,49,0,0,0,114,126,0,0,0,218,8, + 112,114,111,112,101,114,116,121,114,123,0,0,0,218,6,115, + 101,116,116,101,114,114,131,0,0,0,114,124,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,113,0,0,0,58,1,0,0,115,32,0,0, + 0,8,1,4,36,4,1,2,255,12,12,8,10,8,12,2, + 1,10,8,4,1,10,3,2,1,10,7,2,1,10,3,4, + 1,114,113,0,0,0,169,2,114,114,0,0,0,114,116,0, + 0,0,99,2,0,0,0,0,0,0,0,2,0,0,0,6, + 0,0,0,8,0,0,0,67,0,0,0,115,152,0,0,0, + 116,0,124,1,100,1,131,2,114,74,116,1,100,2,117,0, + 114,22,116,2,130,1,116,1,106,3,125,4,124,3,100,2, + 117,0,114,48,124,4,124,0,124,1,100,3,141,2,83,0, + 124,3,114,56,103,0,110,2,100,2,125,5,124,4,124,0, + 124,1,124,5,100,4,141,3,83,0,124,3,100,2,117,0, + 114,136,116,0,124,1,100,5,131,2,114,132,122,14,124,1, + 160,4,124,0,161,1,125,3,87,0,113,136,4,0,116,5, + 121,128,1,0,1,0,1,0,100,2,125,3,89,0,113,136, + 48,0,110,4,100,6,125,3,116,6,124,0,124,1,124,2, + 124,3,100,7,141,4,83,0,41,8,122,53,82,101,116,117, + 114,110,32,97,32,109,111,100,117,108,101,32,115,112,101,99, + 32,98,97,115,101,100,32,111,110,32,118,97,114,105,111,117, + 115,32,108,111,97,100,101,114,32,109,101,116,104,111,100,115, + 46,90,12,103,101,116,95,102,105,108,101,110,97,109,101,78, + 41,1,114,110,0,0,0,41,2,114,110,0,0,0,114,117, + 0,0,0,114,116,0,0,0,70,114,136,0,0,0,41,7, + 114,4,0,0,0,114,127,0,0,0,114,128,0,0,0,218, + 23,115,112,101,99,95,102,114,111,109,95,102,105,108,101,95, + 108,111,99,97,116,105,111,110,114,116,0,0,0,114,80,0, + 0,0,114,113,0,0,0,41,6,114,17,0,0,0,114,110, + 0,0,0,114,114,0,0,0,114,116,0,0,0,114,137,0, + 0,0,90,6,115,101,97,114,99,104,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,92,0,0,0,159,1, + 0,0,115,36,0,0,0,0,2,10,1,8,1,4,1,6, + 2,8,1,12,1,12,1,6,1,2,255,6,3,8,1,10, + 1,2,1,14,1,12,1,12,3,4,2,114,92,0,0,0, + 99,3,0,0,0,0,0,0,0,0,0,0,0,8,0,0, + 0,8,0,0,0,67,0,0,0,115,42,1,0,0,122,10, + 124,0,106,0,125,3,87,0,110,18,4,0,116,1,121,28, + 1,0,1,0,1,0,89,0,110,14,48,0,124,3,100,0, + 117,1,114,42,124,3,83,0,124,0,106,2,125,4,124,1, + 100,0,117,0,114,86,122,10,124,0,106,3,125,1,87,0, + 110,18,4,0,116,1,121,84,1,0,1,0,1,0,89,0, + 110,2,48,0,122,10,124,0,106,4,125,5,87,0,110,22, + 4,0,116,1,121,118,1,0,1,0,1,0,100,0,125,5, + 89,0,110,2,48,0,124,2,100,0,117,0,114,176,124,5, + 100,0,117,0,114,172,122,10,124,1,106,5,125,2,87,0, + 113,176,4,0,116,1,121,168,1,0,1,0,1,0,100,0, + 125,2,89,0,113,176,48,0,110,4,124,5,125,2,122,10, + 124,0,106,6,125,6,87,0,110,22,4,0,116,1,121,208, + 1,0,1,0,1,0,100,0,125,6,89,0,110,2,48,0, + 122,14,116,7,124,0,106,8,131,1,125,7,87,0,110,22, + 4,0,116,1,121,246,1,0,1,0,1,0,100,0,125,7, + 89,0,110,2,48,0,116,9,124,4,124,1,124,2,100,1, + 141,3,125,3,124,5,100,0,117,0,144,1,114,20,100,2, + 110,2,100,3,124,3,95,10,124,6,124,3,95,11,124,7, + 124,3,95,12,124,3,83,0,41,4,78,169,1,114,114,0, + 0,0,70,84,41,13,114,106,0,0,0,114,107,0,0,0, + 114,1,0,0,0,114,99,0,0,0,114,109,0,0,0,218, + 7,95,79,82,73,71,73,78,218,10,95,95,99,97,99,104, + 101,100,95,95,218,4,108,105,115,116,218,8,95,95,112,97, + 116,104,95,95,114,113,0,0,0,114,118,0,0,0,114,123, + 0,0,0,114,117,0,0,0,41,8,114,97,0,0,0,114, + 110,0,0,0,114,114,0,0,0,114,96,0,0,0,114,17, + 0,0,0,90,8,108,111,99,97,116,105,111,110,114,123,0, + 0,0,114,117,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,17,95,115,112,101,99,95,102,114, + 111,109,95,109,111,100,117,108,101,185,1,0,0,115,72,0, + 0,0,0,2,2,1,10,1,12,1,6,2,8,1,4,2, + 6,1,8,1,2,1,10,1,12,2,6,1,2,1,10,1, + 12,1,10,1,8,1,8,1,2,1,10,1,12,1,12,2, + 4,1,2,1,10,1,12,1,10,1,2,1,14,1,12,1, + 10,2,14,1,20,1,6,1,6,1,114,143,0,0,0,70, + 169,1,218,8,111,118,101,114,114,105,100,101,99,2,0,0, + 0,0,0,0,0,1,0,0,0,5,0,0,0,8,0,0, + 0,67,0,0,0,115,210,1,0,0,124,2,115,20,116,0, + 124,1,100,1,100,0,131,3,100,0,117,0,114,52,122,12, + 124,0,106,1,124,1,95,2,87,0,110,18,4,0,116,3, + 121,50,1,0,1,0,1,0,89,0,110,2,48,0,124,2, + 115,72,116,0,124,1,100,2,100,0,131,3,100,0,117,0, + 114,174,124,0,106,4,125,3,124,3,100,0,117,0,114,144, + 124,0,106,5,100,0,117,1,114,144,116,6,100,0,117,0, + 114,108,116,7,130,1,116,6,106,8,125,4,124,4,160,9, + 124,4,161,1,125,3,124,0,106,5,124,3,95,10,124,3, + 124,0,95,4,100,0,124,1,95,11,122,10,124,3,124,1, + 95,12,87,0,110,18,4,0,116,3,121,172,1,0,1,0, + 1,0,89,0,110,2,48,0,124,2,115,194,116,0,124,1, + 100,3,100,0,131,3,100,0,117,0,114,226,122,12,124,0, + 106,13,124,1,95,14,87,0,110,18,4,0,116,3,121,224, + 1,0,1,0,1,0,89,0,110,2,48,0,122,10,124,0, + 124,1,95,15,87,0,110,18,4,0,116,3,121,254,1,0, + 1,0,1,0,89,0,110,2,48,0,124,2,144,1,115,24, + 116,0,124,1,100,4,100,0,131,3,100,0,117,0,144,1, + 114,70,124,0,106,5,100,0,117,1,144,1,114,70,122,12, + 124,0,106,5,124,1,95,16,87,0,110,20,4,0,116,3, + 144,1,121,68,1,0,1,0,1,0,89,0,110,2,48,0, + 124,0,106,17,144,1,114,206,124,2,144,1,115,102,116,0, + 124,1,100,5,100,0,131,3,100,0,117,0,144,1,114,136, + 122,12,124,0,106,18,124,1,95,11,87,0,110,20,4,0, + 116,3,144,1,121,134,1,0,1,0,1,0,89,0,110,2, + 48,0,124,2,144,1,115,160,116,0,124,1,100,6,100,0, + 131,3,100,0,117,0,144,1,114,206,124,0,106,19,100,0, + 117,1,144,1,114,206,122,12,124,0,106,19,124,1,95,20, + 87,0,110,20,4,0,116,3,144,1,121,204,1,0,1,0, + 1,0,89,0,110,2,48,0,124,1,83,0,41,7,78,114, + 1,0,0,0,114,99,0,0,0,218,11,95,95,112,97,99, + 107,97,103,101,95,95,114,142,0,0,0,114,109,0,0,0, + 114,140,0,0,0,41,21,114,6,0,0,0,114,17,0,0, + 0,114,1,0,0,0,114,107,0,0,0,114,110,0,0,0, + 114,117,0,0,0,114,127,0,0,0,114,128,0,0,0,218, + 16,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, + 114,218,7,95,95,110,101,119,95,95,90,5,95,112,97,116, + 104,114,109,0,0,0,114,99,0,0,0,114,131,0,0,0, + 114,146,0,0,0,114,106,0,0,0,114,142,0,0,0,114, + 124,0,0,0,114,114,0,0,0,114,123,0,0,0,114,140, + 0,0,0,41,5,114,96,0,0,0,114,97,0,0,0,114, + 145,0,0,0,114,110,0,0,0,114,147,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,18,95, + 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114, + 115,230,1,0,0,115,96,0,0,0,0,4,20,1,2,1, + 12,1,12,1,6,2,20,1,6,1,8,2,10,1,8,1, + 4,1,6,2,10,1,8,1,6,11,6,1,2,1,10,1, + 12,1,6,2,20,1,2,1,12,1,12,1,6,2,2,1, + 10,1,12,1,6,2,24,1,12,1,2,1,12,1,14,1, + 6,2,8,1,24,1,2,1,12,1,14,1,6,2,24,1, + 12,1,2,1,12,1,14,1,6,1,114,149,0,0,0,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 3,0,0,0,67,0,0,0,115,82,0,0,0,100,1,125, + 1,116,0,124,0,106,1,100,2,131,2,114,30,124,0,106, + 1,160,2,124,0,161,1,125,1,110,20,116,0,124,0,106, + 1,100,3,131,2,114,50,116,3,100,4,131,1,130,1,124, + 1,100,1,117,0,114,68,116,4,124,0,106,5,131,1,125, + 1,116,6,124,0,124,1,131,2,1,0,124,1,83,0,41, + 5,122,43,67,114,101,97,116,101,32,97,32,109,111,100,117, + 108,101,32,98,97,115,101,100,32,111,110,32,116,104,101,32, + 112,114,111,118,105,100,101,100,32,115,112,101,99,46,78,218, + 13,99,114,101,97,116,101,95,109,111,100,117,108,101,218,11, + 101,120,101,99,95,109,111,100,117,108,101,122,66,108,111,97, + 100,101,114,115,32,116,104,97,116,32,100,101,102,105,110,101, + 32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,109, + 117,115,116,32,97,108,115,111,32,100,101,102,105,110,101,32, + 99,114,101,97,116,101,95,109,111,100,117,108,101,40,41,41, + 7,114,4,0,0,0,114,110,0,0,0,114,150,0,0,0, + 114,80,0,0,0,114,18,0,0,0,114,17,0,0,0,114, + 149,0,0,0,169,2,114,96,0,0,0,114,97,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, + 16,109,111,100,117,108,101,95,102,114,111,109,95,115,112,101, + 99,46,2,0,0,115,18,0,0,0,0,3,4,1,12,3, + 14,1,12,1,8,2,8,1,10,1,10,1,114,153,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,4,0,0,0,67,0,0,0,115,106,0,0,0,124, + 0,106,0,100,1,117,0,114,14,100,2,110,4,124,0,106, + 0,125,1,124,0,106,1,100,1,117,0,114,66,124,0,106, + 2,100,1,117,0,114,50,100,3,160,3,124,1,161,1,83, + 0,100,4,160,3,124,1,124,0,106,2,161,2,83,0,110, + 36,124,0,106,4,114,86,100,5,160,3,124,1,124,0,106, + 1,161,2,83,0,100,6,160,3,124,0,106,0,124,0,106, + 1,161,2,83,0,100,1,83,0,41,7,122,38,82,101,116, + 117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32, + 117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117, + 108,101,46,78,114,101,0,0,0,114,102,0,0,0,114,103, + 0,0,0,114,104,0,0,0,250,18,60,109,111,100,117,108, + 101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,17, + 0,0,0,114,114,0,0,0,114,110,0,0,0,114,46,0, + 0,0,114,124,0,0,0,41,2,114,96,0,0,0,114,17, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,108,0,0,0,63,2,0,0,115,16,0,0,0, + 0,3,20,1,10,1,10,1,10,2,16,2,6,1,14,2, + 114,108,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,10,0,0,0,67,0,0,0,115,250, + 0,0,0,124,0,106,0,125,2,116,1,124,2,131,1,143, + 216,1,0,116,2,106,3,160,4,124,2,161,1,124,1,117, + 1,114,54,100,1,160,5,124,2,161,1,125,3,116,6,124, + 3,124,2,100,2,141,2,130,1,122,132,124,0,106,7,100, + 3,117,0,114,106,124,0,106,8,100,3,117,0,114,90,116, + 6,100,4,124,0,106,0,100,2,141,2,130,1,116,9,124, + 0,124,1,100,5,100,6,141,3,1,0,110,52,116,9,124, + 0,124,1,100,5,100,6,141,3,1,0,116,10,124,0,106, + 7,100,7,131,2,115,146,124,0,106,7,160,11,124,2,161, + 1,1,0,110,12,124,0,106,7,160,12,124,1,161,1,1, + 0,87,0,116,2,106,3,160,13,124,0,106,0,161,1,125, + 1,124,1,116,2,106,3,124,0,106,0,60,0,110,28,116, + 2,106,3,160,13,124,0,106,0,161,1,125,1,124,1,116, + 2,106,3,124,0,106,0,60,0,48,0,87,0,100,3,4, + 0,4,0,131,3,1,0,110,16,49,0,115,236,48,0,1, + 0,1,0,1,0,89,0,1,0,124,1,83,0,41,8,122, + 70,69,120,101,99,117,116,101,32,116,104,101,32,115,112,101, + 99,39,115,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,117,108,101,32,105,110,32,97,110,32,101,120,105,115,116, + 105,110,103,32,109,111,100,117,108,101,39,115,32,110,97,109, + 101,115,112,97,99,101,46,122,30,109,111,100,117,108,101,32, + 123,33,114,125,32,110,111,116,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,114,16,0,0,0,78,250,14,109, + 105,115,115,105,110,103,32,108,111,97,100,101,114,84,114,144, + 0,0,0,114,151,0,0,0,41,14,114,17,0,0,0,114, + 51,0,0,0,114,15,0,0,0,114,93,0,0,0,114,35, + 0,0,0,114,46,0,0,0,114,80,0,0,0,114,110,0, + 0,0,114,117,0,0,0,114,149,0,0,0,114,4,0,0, + 0,218,11,108,111,97,100,95,109,111,100,117,108,101,114,151, + 0,0,0,218,3,112,111,112,41,4,114,96,0,0,0,114, + 97,0,0,0,114,17,0,0,0,218,3,109,115,103,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,94,0, + 0,0,80,2,0,0,115,38,0,0,0,0,2,6,1,10, + 1,16,1,10,1,12,1,2,1,10,1,10,1,14,2,16, + 2,14,1,12,4,14,2,14,4,14,1,14,255,14,1,44, + 1,114,94,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,8,0,0,0,67,0,0,0,115, + 20,1,0,0,122,18,124,0,106,0,160,1,124,0,106,2, + 161,1,1,0,87,0,110,52,1,0,1,0,1,0,124,0, + 106,2,116,3,106,4,118,0,114,64,116,3,106,4,160,5, + 124,0,106,2,161,1,125,1,124,1,116,3,106,4,124,0, + 106,2,60,0,130,0,89,0,110,2,48,0,116,3,106,4, + 160,5,124,0,106,2,161,1,125,1,124,1,116,3,106,4, + 124,0,106,2,60,0,116,6,124,1,100,1,100,0,131,3, + 100,0,117,0,114,146,122,12,124,0,106,0,124,1,95,7, + 87,0,110,18,4,0,116,8,121,144,1,0,1,0,1,0, + 89,0,110,2,48,0,116,6,124,1,100,2,100,0,131,3, + 100,0,117,0,114,222,122,40,124,1,106,9,124,1,95,10, + 116,11,124,1,100,3,131,2,115,200,124,0,106,2,160,12, + 100,4,161,1,100,5,25,0,124,1,95,10,87,0,110,18, + 4,0,116,8,121,220,1,0,1,0,1,0,89,0,110,2, + 48,0,116,6,124,1,100,6,100,0,131,3,100,0,117,0, + 144,1,114,16,122,10,124,0,124,1,95,13,87,0,110,20, + 4,0,116,8,144,1,121,14,1,0,1,0,1,0,89,0, + 110,2,48,0,124,1,83,0,41,7,78,114,99,0,0,0, + 114,146,0,0,0,114,142,0,0,0,114,129,0,0,0,114, + 22,0,0,0,114,106,0,0,0,41,14,114,110,0,0,0, + 114,156,0,0,0,114,17,0,0,0,114,15,0,0,0,114, + 93,0,0,0,114,157,0,0,0,114,6,0,0,0,114,99, + 0,0,0,114,107,0,0,0,114,1,0,0,0,114,146,0, + 0,0,114,4,0,0,0,114,130,0,0,0,114,106,0,0, + 0,114,152,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,25,95,108,111,97,100,95,98,97,99, + 107,119,97,114,100,95,99,111,109,112,97,116,105,98,108,101, + 110,2,0,0,115,54,0,0,0,0,4,2,1,18,1,6, + 1,12,1,14,1,12,1,8,3,14,1,12,1,16,1,2, + 1,12,1,12,1,6,1,16,1,2,4,8,1,10,1,22, + 1,12,1,6,1,18,1,2,1,10,1,14,1,6,1,114, + 159,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,11,0,0,0,67,0,0,0,115,224,0, + 0,0,124,0,106,0,100,0,117,1,114,30,116,1,124,0, + 106,0,100,1,131,2,115,30,116,2,124,0,131,1,83,0, + 116,3,124,0,131,1,125,1,100,2,124,0,95,4,122,166, + 124,1,116,5,106,6,124,0,106,7,60,0,122,52,124,0, + 106,0,100,0,117,0,114,96,124,0,106,8,100,0,117,0, + 114,108,116,9,100,3,124,0,106,7,100,4,141,2,130,1, + 110,12,124,0,106,0,160,10,124,1,161,1,1,0,87,0, + 110,48,1,0,1,0,1,0,122,14,116,5,106,6,124,0, + 106,7,61,0,87,0,110,18,4,0,116,11,121,150,1,0, + 1,0,1,0,89,0,110,2,48,0,130,0,89,0,110,2, + 48,0,116,5,106,6,160,12,124,0,106,7,161,1,125,1, + 124,1,116,5,106,6,124,0,106,7,60,0,116,13,100,5, + 124,0,106,7,124,0,106,0,131,3,1,0,87,0,100,6, + 124,0,95,4,110,8,100,6,124,0,95,4,48,0,124,1, + 83,0,41,7,78,114,151,0,0,0,84,114,155,0,0,0, + 114,16,0,0,0,122,18,105,109,112,111,114,116,32,123,33, + 114,125,32,35,32,123,33,114,125,70,41,14,114,110,0,0, + 0,114,4,0,0,0,114,159,0,0,0,114,153,0,0,0, + 90,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114, + 15,0,0,0,114,93,0,0,0,114,17,0,0,0,114,117, + 0,0,0,114,80,0,0,0,114,151,0,0,0,114,64,0, + 0,0,114,157,0,0,0,114,77,0,0,0,114,152,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 218,14,95,108,111,97,100,95,117,110,108,111,99,107,101,100, + 147,2,0,0,115,46,0,0,0,0,2,10,2,12,1,8, + 2,8,5,6,1,2,1,12,1,2,1,10,1,10,1,16, + 3,16,1,6,1,2,1,14,1,12,1,6,1,8,5,14, + 1,12,1,18,2,16,2,114,160,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0, + 0,67,0,0,0,115,54,0,0,0,116,0,124,0,106,1, + 131,1,143,24,1,0,116,2,124,0,131,1,87,0,2,0, + 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,40, + 48,0,1,0,1,0,1,0,89,0,1,0,100,1,83,0, + 41,2,122,191,82,101,116,117,114,110,32,97,32,110,101,119, + 32,109,111,100,117,108,101,32,111,98,106,101,99,116,44,32, + 108,111,97,100,101,100,32,98,121,32,116,104,101,32,115,112, + 101,99,39,115,32,108,111,97,100,101,114,46,10,10,32,32, + 32,32,84,104,101,32,109,111,100,117,108,101,32,105,115,32, + 110,111,116,32,97,100,100,101,100,32,116,111,32,105,116,115, + 32,112,97,114,101,110,116,46,10,10,32,32,32,32,73,102, + 32,97,32,109,111,100,117,108,101,32,105,115,32,97,108,114, + 101,97,100,121,32,105,110,32,115,121,115,46,109,111,100,117, + 108,101,115,44,32,116,104,97,116,32,101,120,105,115,116,105, + 110,103,32,109,111,100,117,108,101,32,103,101,116,115,10,32, + 32,32,32,99,108,111,98,98,101,114,101,100,46,10,10,32, + 32,32,32,78,41,3,114,51,0,0,0,114,17,0,0,0, + 114,160,0,0,0,41,1,114,96,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,95,0,0,0, + 189,2,0,0,115,4,0,0,0,0,9,12,1,114,95,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,64,0,0,0,115,140,0,0,0, + 101,0,90,1,100,0,90,2,100,1,90,3,100,2,90,4, + 101,5,100,3,100,4,132,0,131,1,90,6,101,7,100,20, + 100,6,100,7,132,1,131,1,90,8,101,7,100,21,100,8, + 100,9,132,1,131,1,90,9,101,7,100,10,100,11,132,0, + 131,1,90,10,101,7,100,12,100,13,132,0,131,1,90,11, + 101,7,101,12,100,14,100,15,132,0,131,1,131,1,90,13, + 101,7,101,12,100,16,100,17,132,0,131,1,131,1,90,14, + 101,7,101,12,100,18,100,19,132,0,131,1,131,1,90,15, + 101,7,101,16,131,1,90,17,100,5,83,0,41,22,218,15, + 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,122, + 144,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, + 116,32,102,111,114,32,98,117,105,108,116,45,105,110,32,109, + 111,100,117,108,101,115,46,10,10,32,32,32,32,65,108,108, + 32,109,101,116,104,111,100,115,32,97,114,101,32,101,105,116, + 104,101,114,32,99,108,97,115,115,32,111,114,32,115,116,97, + 116,105,99,32,109,101,116,104,111,100,115,32,116,111,32,97, + 118,111,105,100,32,116,104,101,32,110,101,101,100,32,116,111, + 10,32,32,32,32,105,110,115,116,97,110,116,105,97,116,101, + 32,116,104,101,32,99,108,97,115,115,46,10,10,32,32,32, + 32,122,8,98,117,105,108,116,45,105,110,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0, + 67,0,0,0,115,22,0,0,0,100,1,124,0,106,0,155, + 2,100,2,116,1,106,2,155,0,100,3,157,5,83,0,41, + 4,250,115,82,101,116,117,114,110,32,114,101,112,114,32,102, + 111,114,32,116,104,101,32,109,111,100,117,108,101,46,10,10, + 32,32,32,32,32,32,32,32,84,104,101,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 46,32,32,84,104,101,32,105,109,112,111,114,116,32,109,97, + 99,104,105,110,101,114,121,32,100,111,101,115,32,116,104,101, + 32,106,111,98,32,105,116,115,101,108,102,46,10,10,32,32, + 32,32,32,32,32,32,122,8,60,109,111,100,117,108,101,32, + 122,2,32,40,122,2,41,62,41,3,114,1,0,0,0,114, + 161,0,0,0,114,139,0,0,0,41,1,114,97,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, + 100,0,0,0,215,2,0,0,115,2,0,0,0,0,7,122, + 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,109,111,100,117,108,101,95,114,101,112,114,78,99,4,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0, + 0,0,67,0,0,0,115,46,0,0,0,124,2,100,0,117, + 1,114,12,100,0,83,0,116,0,160,1,124,1,161,1,114, + 38,116,2,124,1,124,0,124,0,106,3,100,1,141,3,83, + 0,100,0,83,0,100,0,83,0,169,2,78,114,138,0,0, + 0,41,4,114,58,0,0,0,90,10,105,115,95,98,117,105, + 108,116,105,110,114,92,0,0,0,114,139,0,0,0,169,4, + 218,3,99,108,115,114,82,0,0,0,218,4,112,97,116,104, + 218,6,116,97,114,103,101,116,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,9,102,105,110,100,95,115,112, + 101,99,224,2,0,0,115,10,0,0,0,0,2,8,1,4, + 1,10,1,16,2,122,25,66,117,105,108,116,105,110,73,109, + 112,111,114,116,101,114,46,102,105,110,100,95,115,112,101,99, + 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,4,0,0,0,67,0,0,0,115,30,0,0,0,124,0, + 160,0,124,1,124,2,161,2,125,3,124,3,100,1,117,1, + 114,26,124,3,106,1,83,0,100,1,83,0,41,2,122,175, + 70,105,110,100,32,116,104,101,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,73,102,32,39,112,97,116,104,39,32,105,115,32, + 101,118,101,114,32,115,112,101,99,105,102,105,101,100,32,116, + 104,101,110,32,116,104,101,32,115,101,97,114,99,104,32,105, + 115,32,99,111,110,115,105,100,101,114,101,100,32,97,32,102, + 97,105,108,117,114,101,46,10,10,32,32,32,32,32,32,32, + 32,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,46,32,32,85,115,101, + 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, + 116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,78, + 41,2,114,168,0,0,0,114,110,0,0,0,41,4,114,165, + 0,0,0,114,82,0,0,0,114,166,0,0,0,114,96,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,218,11,102,105,110,100,95,109,111,100,117,108,101,233,2, + 0,0,115,4,0,0,0,0,9,12,1,122,27,66,117,105, + 108,116,105,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, + 0,115,46,0,0,0,124,1,106,0,116,1,106,2,118,1, + 114,34,116,3,100,1,160,4,124,1,106,0,161,1,124,1, + 106,0,100,2,141,2,130,1,116,5,116,6,106,7,124,1, + 131,2,83,0,41,3,122,24,67,114,101,97,116,101,32,97, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 114,78,0,0,0,114,16,0,0,0,41,8,114,17,0,0, + 0,114,15,0,0,0,114,79,0,0,0,114,80,0,0,0, + 114,46,0,0,0,114,68,0,0,0,114,58,0,0,0,90, + 14,99,114,101,97,116,101,95,98,117,105,108,116,105,110,41, + 2,114,30,0,0,0,114,96,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,150,0,0,0,245, + 2,0,0,115,10,0,0,0,0,3,12,1,12,1,4,255, + 6,2,122,29,66,117,105,108,116,105,110,73,109,112,111,114, + 116,101,114,46,99,114,101,97,116,101,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,3,0,0,0,67,0,0,0,115,16,0,0,0,116, + 0,116,1,106,2,124,1,131,2,1,0,100,1,83,0,41, + 2,122,22,69,120,101,99,32,97,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,78,41,3,114,68,0,0, + 0,114,58,0,0,0,90,12,101,120,101,99,95,98,117,105, + 108,116,105,110,41,2,114,30,0,0,0,114,97,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, + 151,0,0,0,253,2,0,0,115,2,0,0,0,0,3,122, + 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, + 0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,2, + 122,57,82,101,116,117,114,110,32,78,111,110,101,32,97,115, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 115,32,100,111,32,110,111,116,32,104,97,118,101,32,99,111, + 100,101,32,111,98,106,101,99,116,115,46,78,114,10,0,0, + 0,169,2,114,165,0,0,0,114,82,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,218,8,103,101, + 116,95,99,111,100,101,2,3,0,0,115,2,0,0,0,0, + 4,122,24,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, + 56,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,117, + 114,99,101,32,99,111,100,101,46,78,114,10,0,0,0,114, + 170,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,10,103,101,116,95,115,111,117,114,99,101,8, + 3,0,0,115,2,0,0,0,0,4,122,26,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,46,103,101,116,95, + 115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115, + 4,0,0,0,100,1,83,0,41,2,122,52,82,101,116,117, + 114,110,32,70,97,108,115,101,32,97,115,32,98,117,105,108, + 116,45,105,110,32,109,111,100,117,108,101,115,32,97,114,101, + 32,110,101,118,101,114,32,112,97,99,107,97,103,101,115,46, + 70,114,10,0,0,0,114,170,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,116,0,0,0,14, + 3,0,0,115,2,0,0,0,0,4,122,26,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,46,105,115,95,112, + 97,99,107,97,103,101,41,2,78,78,41,1,78,41,18,114, + 1,0,0,0,114,0,0,0,0,114,2,0,0,0,114,3, + 0,0,0,114,139,0,0,0,218,12,115,116,97,116,105,99, + 109,101,116,104,111,100,114,100,0,0,0,218,11,99,108,97, + 115,115,109,101,116,104,111,100,114,168,0,0,0,114,169,0, + 0,0,114,150,0,0,0,114,151,0,0,0,114,87,0,0, + 0,114,171,0,0,0,114,172,0,0,0,114,116,0,0,0, + 114,98,0,0,0,114,156,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,161, + 0,0,0,204,2,0,0,115,44,0,0,0,8,2,4,7, + 4,2,2,1,10,8,2,1,12,8,2,1,12,11,2,1, + 10,7,2,1,10,4,2,1,2,1,12,4,2,1,2,1, + 12,4,2,1,2,1,12,4,114,161,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,64,0,0,0,115,144,0,0,0,101,0,90,1,100, + 0,90,2,100,1,90,3,100,2,90,4,101,5,100,3,100, + 4,132,0,131,1,90,6,101,7,100,22,100,6,100,7,132, + 1,131,1,90,8,101,7,100,23,100,8,100,9,132,1,131, + 1,90,9,101,7,100,10,100,11,132,0,131,1,90,10,101, + 5,100,12,100,13,132,0,131,1,90,11,101,7,100,14,100, + 15,132,0,131,1,90,12,101,7,101,13,100,16,100,17,132, + 0,131,1,131,1,90,14,101,7,101,13,100,18,100,19,132, + 0,131,1,131,1,90,15,101,7,101,13,100,20,100,21,132, + 0,131,1,131,1,90,16,100,5,83,0,41,24,218,14,70, + 114,111,122,101,110,73,109,112,111,114,116,101,114,122,142,77, + 101,116,97,32,112,97,116,104,32,105,109,112,111,114,116,32, + 102,111,114,32,102,114,111,122,101,110,32,109,111,100,117,108, + 101,115,46,10,10,32,32,32,32,65,108,108,32,109,101,116, + 104,111,100,115,32,97,114,101,32,101,105,116,104,101,114,32, + 99,108,97,115,115,32,111,114,32,115,116,97,116,105,99,32, + 109,101,116,104,111,100,115,32,116,111,32,97,118,111,105,100, + 32,116,104,101,32,110,101,101,100,32,116,111,10,32,32,32, + 32,105,110,115,116,97,110,116,105,97,116,101,32,116,104,101, + 32,99,108,97,115,115,46,10,10,32,32,32,32,90,6,102, + 114,111,122,101,110,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,4,0,0,0,67,0,0,0,115,16, + 0,0,0,100,1,160,0,124,0,106,1,116,2,106,3,161, + 2,83,0,41,2,114,162,0,0,0,114,154,0,0,0,41, + 4,114,46,0,0,0,114,1,0,0,0,114,175,0,0,0, + 114,139,0,0,0,41,1,218,1,109,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,100,0,0,0,34,3, + 0,0,115,2,0,0,0,0,7,122,26,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101, + 95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, + 34,0,0,0,116,0,160,1,124,1,161,1,114,26,116,2, + 124,1,124,0,124,0,106,3,100,1,141,3,83,0,100,0, + 83,0,100,0,83,0,114,163,0,0,0,41,4,114,58,0, + 0,0,114,89,0,0,0,114,92,0,0,0,114,139,0,0, + 0,114,164,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,168,0,0,0,43,3,0,0,115,6, + 0,0,0,0,2,10,1,16,2,122,24,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,115, + 112,101,99,99,3,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,67,0,0,0,115,18,0,0, + 0,116,0,160,1,124,1,161,1,114,14,124,0,83,0,100, + 1,83,0,41,2,122,93,70,105,110,100,32,97,32,102,114, + 111,122,101,110,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, + 32,32,85,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, + 32,32,32,32,78,41,2,114,58,0,0,0,114,89,0,0, + 0,41,3,114,165,0,0,0,114,82,0,0,0,114,166,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,114,169,0,0,0,50,3,0,0,115,2,0,0,0,0, + 7,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,102,105,110,100,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, + 2,122,42,85,115,101,32,100,101,102,97,117,108,116,32,115, + 101,109,97,110,116,105,99,115,32,102,111,114,32,109,111,100, + 117,108,101,32,99,114,101,97,116,105,111,110,46,78,114,10, + 0,0,0,41,2,114,165,0,0,0,114,96,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,150, + 0,0,0,59,3,0,0,115,2,0,0,0,0,2,122,28, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,99, + 114,101,97,116,101,95,109,111,100,117,108,101,99,1,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0, + 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, + 125,1,116,2,160,3,124,1,161,1,115,36,116,4,100,1, + 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, + 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, + 106,9,131,2,1,0,100,0,83,0,114,88,0,0,0,41, + 10,114,106,0,0,0,114,17,0,0,0,114,58,0,0,0, + 114,89,0,0,0,114,80,0,0,0,114,46,0,0,0,114, + 68,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, + 95,111,98,106,101,99,116,218,4,101,120,101,99,114,7,0, + 0,0,41,3,114,97,0,0,0,114,17,0,0,0,218,4, + 99,111,100,101,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,151,0,0,0,63,3,0,0,115,14,0,0, + 0,0,2,8,1,10,1,10,1,2,255,6,2,12,1,122, + 26,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46, + 101,120,101,99,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,10,0,0,0,116,0,124,0,124,1,131, + 2,83,0,41,1,122,95,76,111,97,100,32,97,32,102,114, + 111,122,101,110,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, + 32,32,85,115,101,32,101,120,101,99,95,109,111,100,117,108, + 101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, + 32,32,32,32,32,32,41,1,114,98,0,0,0,114,170,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,114,156,0,0,0,72,3,0,0,115,2,0,0,0,0, + 7,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,115,10,0,0,0,116,0,160,1,124, + 1,161,1,83,0,41,1,122,45,82,101,116,117,114,110,32, + 116,104,101,32,99,111,100,101,32,111,98,106,101,99,116,32, + 102,111,114,32,116,104,101,32,102,114,111,122,101,110,32,109, + 111,100,117,108,101,46,41,2,114,58,0,0,0,114,177,0, + 0,0,114,170,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,171,0,0,0,81,3,0,0,115, + 2,0,0,0,0,4,122,23,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83, + 0,41,2,122,54,82,101,116,117,114,110,32,78,111,110,101, + 32,97,115,32,102,114,111,122,101,110,32,109,111,100,117,108, + 101,115,32,100,111,32,110,111,116,32,104,97,118,101,32,115, + 111,117,114,99,101,32,99,111,100,101,46,78,114,10,0,0, + 0,114,170,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,172,0,0,0,87,3,0,0,115,2, + 0,0,0,0,4,122,25,70,114,111,122,101,110,73,109,112, + 111,114,116,101,114,46,103,101,116,95,115,111,117,114,99,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,3,0,0,0,67,0,0,0,115,10,0,0,0,116,0, + 160,1,124,1,161,1,83,0,41,1,122,46,82,101,116,117, + 114,110,32,84,114,117,101,32,105,102,32,116,104,101,32,102, + 114,111,122,101,110,32,109,111,100,117,108,101,32,105,115,32, + 97,32,112,97,99,107,97,103,101,46,41,2,114,58,0,0, + 0,90,17,105,115,95,102,114,111,122,101,110,95,112,97,99, + 107,97,103,101,114,170,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,116,0,0,0,93,3,0, + 0,115,2,0,0,0,0,4,122,25,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,46,105,115,95,112,97,99,107, + 97,103,101,41,2,78,78,41,1,78,41,17,114,1,0,0, + 0,114,0,0,0,0,114,2,0,0,0,114,3,0,0,0, + 114,139,0,0,0,114,173,0,0,0,114,100,0,0,0,114, + 174,0,0,0,114,168,0,0,0,114,169,0,0,0,114,150, + 0,0,0,114,151,0,0,0,114,156,0,0,0,114,91,0, + 0,0,114,171,0,0,0,114,172,0,0,0,114,116,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,175,0,0,0,23,3,0,0,115,46, + 0,0,0,8,2,4,7,4,2,2,1,10,8,2,1,12, + 6,2,1,12,8,2,1,10,3,2,1,10,8,2,1,10, + 8,2,1,2,1,12,4,2,1,2,1,12,4,2,1,2, + 1,114,175,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115, + 32,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5, + 100,6,83,0,41,7,218,18,95,73,109,112,111,114,116,76, + 111,99,107,67,111,110,116,101,120,116,122,36,67,111,110,116, + 101,120,116,32,109,97,110,97,103,101,114,32,102,111,114,32, + 116,104,101,32,105,109,112,111,114,116,32,108,111,99,107,46, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,2,0,0,0,67,0,0,0,115,12,0,0,0,116,0, + 160,1,161,0,1,0,100,1,83,0,41,2,122,24,65,99, + 113,117,105,114,101,32,116,104,101,32,105,109,112,111,114,116, + 32,108,111,99,107,46,78,41,2,114,58,0,0,0,114,59, + 0,0,0,114,48,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,55,0,0,0,106,3,0,0, + 115,2,0,0,0,0,2,122,28,95,73,109,112,111,114,116, + 76,111,99,107,67,111,110,116,101,120,116,46,95,95,101,110, + 116,101,114,95,95,99,4,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,2,0,0,0,67,0,0,0,115,12, + 0,0,0,116,0,160,1,161,0,1,0,100,1,83,0,41, + 2,122,60,82,101,108,101,97,115,101,32,116,104,101,32,105, + 109,112,111,114,116,32,108,111,99,107,32,114,101,103,97,114, + 100,108,101,115,115,32,111,102,32,97,110,121,32,114,97,105, + 115,101,100,32,101,120,99,101,112,116,105,111,110,115,46,78, + 41,2,114,58,0,0,0,114,61,0,0,0,41,4,114,30, + 0,0,0,218,8,101,120,99,95,116,121,112,101,218,9,101, + 120,99,95,118,97,108,117,101,218,13,101,120,99,95,116,114, + 97,99,101,98,97,99,107,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,57,0,0,0,110,3,0,0,115, + 2,0,0,0,0,2,122,27,95,73,109,112,111,114,116,76, + 111,99,107,67,111,110,116,101,120,116,46,95,95,101,120,105, + 116,95,95,78,41,6,114,1,0,0,0,114,0,0,0,0, + 114,2,0,0,0,114,3,0,0,0,114,55,0,0,0,114, + 57,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,180,0,0,0,102,3,0, + 0,115,6,0,0,0,8,2,4,2,8,4,114,180,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,5,0,0,0,67,0,0,0,115,64,0,0,0,124, + 1,160,0,100,1,124,2,100,2,24,0,161,2,125,3,116, + 1,124,3,131,1,124,2,107,0,114,36,116,2,100,3,131, + 1,130,1,124,3,100,4,25,0,125,4,124,0,114,60,100, + 5,160,3,124,4,124,0,161,2,83,0,124,4,83,0,41, + 6,122,50,82,101,115,111,108,118,101,32,97,32,114,101,108, + 97,116,105,118,101,32,109,111,100,117,108,101,32,110,97,109, + 101,32,116,111,32,97,110,32,97,98,115,111,108,117,116,101, + 32,111,110,101,46,114,129,0,0,0,114,39,0,0,0,122, + 50,97,116,116,101,109,112,116,101,100,32,114,101,108,97,116, + 105,118,101,32,105,109,112,111,114,116,32,98,101,121,111,110, + 100,32,116,111,112,45,108,101,118,101,108,32,112,97,99,107, + 97,103,101,114,22,0,0,0,250,5,123,125,46,123,125,41, + 4,218,6,114,115,112,108,105,116,218,3,108,101,110,114,80, + 0,0,0,114,46,0,0,0,41,5,114,17,0,0,0,218, + 7,112,97,99,107,97,103,101,218,5,108,101,118,101,108,90, + 4,98,105,116,115,90,4,98,97,115,101,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,218,13,95,114,101,115, + 111,108,118,101,95,110,97,109,101,115,3,0,0,115,10,0, + 0,0,0,2,16,1,12,1,8,1,8,1,114,189,0,0, + 0,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,67,0,0,0,115,34,0,0,0,124, + 0,160,0,124,1,124,2,161,2,125,3,124,3,100,0,117, + 0,114,24,100,0,83,0,116,1,124,1,124,3,131,2,83, + 0,114,13,0,0,0,41,2,114,169,0,0,0,114,92,0, + 0,0,41,4,218,6,102,105,110,100,101,114,114,17,0,0, + 0,114,166,0,0,0,114,110,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,218,17,95,102,105,110, + 100,95,115,112,101,99,95,108,101,103,97,99,121,124,3,0, + 0,115,8,0,0,0,0,3,12,1,8,1,4,1,114,191, + 0,0,0,99,3,0,0,0,0,0,0,0,0,0,0,0, + 10,0,0,0,10,0,0,0,67,0,0,0,115,32,1,0, + 0,116,0,106,1,125,3,124,3,100,1,117,0,114,22,116, + 2,100,2,131,1,130,1,124,3,115,38,116,3,160,4,100, + 3,116,5,161,2,1,0,124,0,116,0,106,6,118,0,125, + 4,124,3,68,0,93,230,125,5,116,7,131,0,143,94,1, + 0,122,10,124,5,106,8,125,6,87,0,110,54,4,0,116, + 9,121,128,1,0,1,0,1,0,116,10,124,5,124,0,124, + 1,131,3,125,7,124,7,100,1,117,0,114,124,89,0,87, + 0,100,1,4,0,4,0,131,3,1,0,113,52,89,0,110, + 14,48,0,124,6,124,0,124,1,124,2,131,3,125,7,87, + 0,100,1,4,0,4,0,131,3,1,0,110,16,49,0,115, + 162,48,0,1,0,1,0,1,0,89,0,1,0,124,7,100, + 1,117,1,114,52,124,4,144,1,115,18,124,0,116,0,106, + 6,118,0,144,1,114,18,116,0,106,6,124,0,25,0,125, + 8,122,10,124,8,106,11,125,9,87,0,110,26,4,0,116, + 9,121,244,1,0,1,0,1,0,124,7,6,0,89,0,2, + 0,1,0,83,0,48,0,124,9,100,1,117,0,144,1,114, + 8,124,7,2,0,1,0,83,0,124,9,2,0,1,0,83, + 0,113,52,124,7,2,0,1,0,83,0,113,52,100,1,83, + 0,41,4,122,21,70,105,110,100,32,97,32,109,111,100,117, + 108,101,39,115,32,115,112,101,99,46,78,122,53,115,121,115, + 46,109,101,116,97,95,112,97,116,104,32,105,115,32,78,111, + 110,101,44,32,80,121,116,104,111,110,32,105,115,32,108,105, + 107,101,108,121,32,115,104,117,116,116,105,110,103,32,100,111, + 119,110,122,22,115,121,115,46,109,101,116,97,95,112,97,116, + 104,32,105,115,32,101,109,112,116,121,41,12,114,15,0,0, + 0,218,9,109,101,116,97,95,112,97,116,104,114,80,0,0, + 0,218,9,95,119,97,114,110,105,110,103,115,218,4,119,97, + 114,110,218,13,73,109,112,111,114,116,87,97,114,110,105,110, + 103,114,93,0,0,0,114,180,0,0,0,114,168,0,0,0, + 114,107,0,0,0,114,191,0,0,0,114,106,0,0,0,41, + 10,114,17,0,0,0,114,166,0,0,0,114,167,0,0,0, + 114,192,0,0,0,90,9,105,115,95,114,101,108,111,97,100, + 114,190,0,0,0,114,168,0,0,0,114,96,0,0,0,114, + 97,0,0,0,114,106,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,218,10,95,102,105,110,100,95, + 115,112,101,99,133,3,0,0,115,54,0,0,0,0,2,6, + 1,8,2,8,3,4,1,12,5,10,1,8,1,8,1,2, + 1,10,1,12,1,12,1,8,1,22,2,42,1,8,2,18, + 1,10,1,2,1,10,1,12,4,14,2,10,1,8,2,10, + 2,10,2,114,196,0,0,0,99,3,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,5,0,0,0,67,0,0, + 0,115,108,0,0,0,116,0,124,0,116,1,131,2,115,28, + 116,2,100,1,160,3,116,4,124,0,131,1,161,1,131,1, + 130,1,124,2,100,2,107,0,114,44,116,5,100,3,131,1, + 130,1,124,2,100,2,107,4,114,84,116,0,124,1,116,1, + 131,2,115,72,116,2,100,4,131,1,130,1,110,12,124,1, + 115,84,116,6,100,5,131,1,130,1,124,0,115,104,124,2, + 100,2,107,2,114,104,116,5,100,6,131,1,130,1,100,7, + 83,0,41,8,122,28,86,101,114,105,102,121,32,97,114,103, + 117,109,101,110,116,115,32,97,114,101,32,34,115,97,110,101, + 34,46,122,31,109,111,100,117,108,101,32,110,97,109,101,32, + 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, + 32,123,125,114,22,0,0,0,122,18,108,101,118,101,108,32, + 109,117,115,116,32,98,101,32,62,61,32,48,122,31,95,95, + 112,97,99,107,97,103,101,95,95,32,110,111,116,32,115,101, + 116,32,116,111,32,97,32,115,116,114,105,110,103,122,54,97, + 116,116,101,109,112,116,101,100,32,114,101,108,97,116,105,118, + 101,32,105,109,112,111,114,116,32,119,105,116,104,32,110,111, + 32,107,110,111,119,110,32,112,97,114,101,110,116,32,112,97, + 99,107,97,103,101,122,17,69,109,112,116,121,32,109,111,100, + 117,108,101,32,110,97,109,101,78,41,7,218,10,105,115,105, + 110,115,116,97,110,99,101,218,3,115,116,114,218,9,84,121, + 112,101,69,114,114,111,114,114,46,0,0,0,114,14,0,0, + 0,218,10,86,97,108,117,101,69,114,114,111,114,114,80,0, + 0,0,169,3,114,17,0,0,0,114,187,0,0,0,114,188, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,218,13,95,115,97,110,105,116,121,95,99,104,101,99, + 107,180,3,0,0,115,22,0,0,0,0,2,10,1,18,1, + 8,1,8,1,8,1,10,1,10,1,4,1,8,2,12,1, + 114,202,0,0,0,122,16,78,111,32,109,111,100,117,108,101, + 32,110,97,109,101,100,32,122,4,123,33,114,125,99,2,0, + 0,0,0,0,0,0,0,0,0,0,9,0,0,0,8,0, + 0,0,67,0,0,0,115,22,1,0,0,100,0,125,2,124, + 0,160,0,100,1,161,1,100,2,25,0,125,3,124,3,114, + 132,124,3,116,1,106,2,118,1,114,42,116,3,124,1,124, + 3,131,2,1,0,124,0,116,1,106,2,118,0,114,62,116, + 1,106,2,124,0,25,0,83,0,116,1,106,2,124,3,25, + 0,125,4,122,10,124,4,106,4,125,2,87,0,110,48,4, + 0,116,5,121,130,1,0,1,0,1,0,116,6,100,3,23, + 0,160,7,124,0,124,3,161,2,125,5,116,8,124,5,124, + 0,100,4,141,2,100,0,130,2,89,0,110,2,48,0,116, + 9,124,0,124,2,131,2,125,6,124,6,100,0,117,0,114, + 170,116,8,116,6,160,7,124,0,161,1,124,0,100,4,141, + 2,130,1,110,8,116,10,124,6,131,1,125,7,124,3,144, + 1,114,18,116,1,106,2,124,3,25,0,125,4,124,0,160, + 0,100,1,161,1,100,5,25,0,125,8,122,16,116,11,124, + 4,124,8,124,7,131,3,1,0,87,0,110,48,4,0,116, + 5,144,1,121,16,1,0,1,0,1,0,100,6,124,3,155, + 2,100,7,124,8,155,2,157,4,125,5,116,12,160,13,124, + 5,116,14,161,2,1,0,89,0,110,2,48,0,124,7,83, + 0,41,8,78,114,129,0,0,0,114,22,0,0,0,122,23, + 59,32,123,33,114,125,32,105,115,32,110,111,116,32,97,32, + 112,97,99,107,97,103,101,114,16,0,0,0,233,2,0,0, + 0,122,27,67,97,110,110,111,116,32,115,101,116,32,97,110, + 32,97,116,116,114,105,98,117,116,101,32,111,110,32,122,18, + 32,102,111,114,32,99,104,105,108,100,32,109,111,100,117,108, + 101,32,41,15,114,130,0,0,0,114,15,0,0,0,114,93, + 0,0,0,114,68,0,0,0,114,142,0,0,0,114,107,0, + 0,0,218,8,95,69,82,82,95,77,83,71,114,46,0,0, + 0,218,19,77,111,100,117,108,101,78,111,116,70,111,117,110, + 100,69,114,114,111,114,114,196,0,0,0,114,160,0,0,0, + 114,5,0,0,0,114,193,0,0,0,114,194,0,0,0,114, + 195,0,0,0,41,9,114,17,0,0,0,218,7,105,109,112, + 111,114,116,95,114,166,0,0,0,114,131,0,0,0,90,13, + 112,97,114,101,110,116,95,109,111,100,117,108,101,114,158,0, + 0,0,114,96,0,0,0,114,97,0,0,0,90,5,99,104, + 105,108,100,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, + 97,100,95,117,110,108,111,99,107,101,100,199,3,0,0,115, + 52,0,0,0,0,1,4,1,14,1,4,1,10,1,10,2, + 10,1,10,1,10,1,2,1,10,1,12,1,16,1,20,1, + 10,1,8,1,20,2,8,1,6,2,10,1,14,1,2,1, + 16,1,14,1,16,1,18,1,114,207,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,8,0, + 0,0,67,0,0,0,115,128,0,0,0,116,0,124,0,131, + 1,143,62,1,0,116,1,106,2,160,3,124,0,116,4,161, + 2,125,2,124,2,116,4,117,0,114,56,116,5,124,0,124, + 1,131,2,87,0,2,0,100,1,4,0,4,0,131,3,1, + 0,83,0,87,0,100,1,4,0,4,0,131,3,1,0,110, + 16,49,0,115,76,48,0,1,0,1,0,1,0,89,0,1, + 0,124,2,100,1,117,0,114,116,100,2,160,6,124,0,161, + 1,125,3,116,7,124,3,124,0,100,3,141,2,130,1,116, + 8,124,0,131,1,1,0,124,2,83,0,41,4,122,25,70, + 105,110,100,32,97,110,100,32,108,111,97,100,32,116,104,101, + 32,109,111,100,117,108,101,46,78,122,40,105,109,112,111,114, + 116,32,111,102,32,123,125,32,104,97,108,116,101,100,59,32, + 78,111,110,101,32,105,110,32,115,121,115,46,109,111,100,117, + 108,101,115,114,16,0,0,0,41,9,114,51,0,0,0,114, + 15,0,0,0,114,93,0,0,0,114,35,0,0,0,218,14, + 95,78,69,69,68,83,95,76,79,65,68,73,78,71,114,207, + 0,0,0,114,46,0,0,0,114,205,0,0,0,114,66,0, + 0,0,41,4,114,17,0,0,0,114,206,0,0,0,114,97, + 0,0,0,114,76,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,14,95,102,105,110,100,95,97, + 110,100,95,108,111,97,100,234,3,0,0,115,22,0,0,0, + 0,2,10,1,14,1,8,1,54,2,8,1,4,1,2,255, + 4,2,12,2,8,1,114,209,0,0,0,114,22,0,0,0, + 99,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,4,0,0,0,67,0,0,0,115,42,0,0,0,116,0, + 124,0,124,1,124,2,131,3,1,0,124,2,100,1,107,4, + 114,32,116,1,124,0,124,1,124,2,131,3,125,0,116,2, + 124,0,116,3,131,2,83,0,41,2,97,50,1,0,0,73, + 109,112,111,114,116,32,97,110,100,32,114,101,116,117,114,110, + 32,116,104,101,32,109,111,100,117,108,101,32,98,97,115,101, + 100,32,111,110,32,105,116,115,32,110,97,109,101,44,32,116, + 104,101,32,112,97,99,107,97,103,101,32,116,104,101,32,99, + 97,108,108,32,105,115,10,32,32,32,32,98,101,105,110,103, + 32,109,97,100,101,32,102,114,111,109,44,32,97,110,100,32, + 116,104,101,32,108,101,118,101,108,32,97,100,106,117,115,116, + 109,101,110,116,46,10,10,32,32,32,32,84,104,105,115,32, + 102,117,110,99,116,105,111,110,32,114,101,112,114,101,115,101, + 110,116,115,32,116,104,101,32,103,114,101,97,116,101,115,116, + 32,99,111,109,109,111,110,32,100,101,110,111,109,105,110,97, + 116,111,114,32,111,102,32,102,117,110,99,116,105,111,110,97, + 108,105,116,121,10,32,32,32,32,98,101,116,119,101,101,110, + 32,105,109,112,111,114,116,95,109,111,100,117,108,101,32,97, + 110,100,32,95,95,105,109,112,111,114,116,95,95,46,32,84, + 104,105,115,32,105,110,99,108,117,100,101,115,32,115,101,116, + 116,105,110,103,32,95,95,112,97,99,107,97,103,101,95,95, + 32,105,102,10,32,32,32,32,116,104,101,32,108,111,97,100, + 101,114,32,100,105,100,32,110,111,116,46,10,10,32,32,32, + 32,114,22,0,0,0,41,4,114,202,0,0,0,114,189,0, + 0,0,114,209,0,0,0,218,11,95,103,99,100,95,105,109, + 112,111,114,116,114,201,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,114,210,0,0,0,250,3,0, + 0,115,8,0,0,0,0,9,12,1,8,1,12,1,114,210, + 0,0,0,169,1,218,9,114,101,99,117,114,115,105,118,101, + 99,3,0,0,0,0,0,0,0,1,0,0,0,8,0,0, + 0,11,0,0,0,67,0,0,0,115,232,0,0,0,124,1, + 68,0,93,222,125,4,116,0,124,4,116,1,131,2,115,66, + 124,3,114,34,124,0,106,2,100,1,23,0,125,5,110,4, + 100,2,125,5,116,3,100,3,124,5,155,0,100,4,116,4, + 124,4,131,1,106,2,155,0,157,4,131,1,130,1,113,4, + 124,4,100,5,107,2,114,108,124,3,115,226,116,5,124,0, + 100,6,131,2,114,226,116,6,124,0,124,0,106,7,124,2, + 100,7,100,8,141,4,1,0,113,4,116,5,124,0,124,4, + 131,2,115,4,100,9,160,8,124,0,106,2,124,4,161,2, + 125,6,122,14,116,9,124,2,124,6,131,2,1,0,87,0, + 113,4,4,0,116,10,121,224,1,0,125,7,1,0,122,54, + 124,7,106,11,124,6,107,2,114,202,116,12,106,13,160,14, + 124,6,116,15,161,2,100,10,117,1,114,202,87,0,89,0, + 100,10,125,7,126,7,113,4,130,0,87,0,89,0,100,10, + 125,7,126,7,113,4,100,10,125,7,126,7,48,0,48,0, + 113,4,124,0,83,0,41,11,122,238,70,105,103,117,114,101, + 32,111,117,116,32,119,104,97,116,32,95,95,105,109,112,111, + 114,116,95,95,32,115,104,111,117,108,100,32,114,101,116,117, + 114,110,46,10,10,32,32,32,32,84,104,101,32,105,109,112, + 111,114,116,95,32,112,97,114,97,109,101,116,101,114,32,105, + 115,32,97,32,99,97,108,108,97,98,108,101,32,119,104,105, + 99,104,32,116,97,107,101,115,32,116,104,101,32,110,97,109, + 101,32,111,102,32,109,111,100,117,108,101,32,116,111,10,32, + 32,32,32,105,109,112,111,114,116,46,32,73,116,32,105,115, + 32,114,101,113,117,105,114,101,100,32,116,111,32,100,101,99, + 111,117,112,108,101,32,116,104,101,32,102,117,110,99,116,105, + 111,110,32,102,114,111,109,32,97,115,115,117,109,105,110,103, + 32,105,109,112,111,114,116,108,105,98,39,115,10,32,32,32, + 32,105,109,112,111,114,116,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,105,115,32,100,101,115,105,114,101, + 100,46,10,10,32,32,32,32,122,8,46,95,95,97,108,108, + 95,95,122,13,96,96,102,114,111,109,32,108,105,115,116,39, + 39,122,8,73,116,101,109,32,105,110,32,122,18,32,109,117, + 115,116,32,98,101,32,115,116,114,44,32,110,111,116,32,250, + 1,42,218,7,95,95,97,108,108,95,95,84,114,211,0,0, + 0,114,184,0,0,0,78,41,16,114,197,0,0,0,114,198, + 0,0,0,114,1,0,0,0,114,199,0,0,0,114,14,0, + 0,0,114,4,0,0,0,218,16,95,104,97,110,100,108,101, + 95,102,114,111,109,108,105,115,116,114,214,0,0,0,114,46, + 0,0,0,114,68,0,0,0,114,205,0,0,0,114,17,0, + 0,0,114,15,0,0,0,114,93,0,0,0,114,35,0,0, + 0,114,208,0,0,0,41,8,114,97,0,0,0,218,8,102, + 114,111,109,108,105,115,116,114,206,0,0,0,114,212,0,0, + 0,218,1,120,90,5,119,104,101,114,101,90,9,102,114,111, + 109,95,110,97,109,101,90,3,101,120,99,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,215,0,0,0,9, + 4,0,0,115,48,0,0,0,0,10,8,1,10,1,4,1, + 12,2,4,1,10,1,8,255,10,2,8,1,14,1,10,1, + 2,255,8,2,10,1,14,1,2,1,14,1,14,4,10,1, + 16,255,2,2,12,1,26,1,114,215,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,6,0, + 0,0,67,0,0,0,115,146,0,0,0,124,0,160,0,100, + 1,161,1,125,1,124,0,160,0,100,2,161,1,125,2,124, + 1,100,3,117,1,114,82,124,2,100,3,117,1,114,78,124, + 1,124,2,106,1,107,3,114,78,116,2,106,3,100,4,124, + 1,155,2,100,5,124,2,106,1,155,2,100,6,157,5,116, + 4,100,7,100,8,141,3,1,0,124,1,83,0,124,2,100, + 3,117,1,114,96,124,2,106,1,83,0,116,2,106,3,100, + 9,116,4,100,7,100,8,141,3,1,0,124,0,100,10,25, + 0,125,1,100,11,124,0,118,1,114,142,124,1,160,5,100, + 12,161,1,100,13,25,0,125,1,124,1,83,0,41,14,122, + 167,67,97,108,99,117,108,97,116,101,32,119,104,97,116,32, + 95,95,112,97,99,107,97,103,101,95,95,32,115,104,111,117, + 108,100,32,98,101,46,10,10,32,32,32,32,95,95,112,97, + 99,107,97,103,101,95,95,32,105,115,32,110,111,116,32,103, + 117,97,114,97,110,116,101,101,100,32,116,111,32,98,101,32, + 100,101,102,105,110,101,100,32,111,114,32,99,111,117,108,100, + 32,98,101,32,115,101,116,32,116,111,32,78,111,110,101,10, + 32,32,32,32,116,111,32,114,101,112,114,101,115,101,110,116, + 32,116,104,97,116,32,105,116,115,32,112,114,111,112,101,114, + 32,118,97,108,117,101,32,105,115,32,117,110,107,110,111,119, + 110,46,10,10,32,32,32,32,114,146,0,0,0,114,106,0, + 0,0,78,122,32,95,95,112,97,99,107,97,103,101,95,95, + 32,33,61,32,95,95,115,112,101,99,95,95,46,112,97,114, + 101,110,116,32,40,122,4,32,33,61,32,250,1,41,233,3, + 0,0,0,41,1,90,10,115,116,97,99,107,108,101,118,101, + 108,122,89,99,97,110,39,116,32,114,101,115,111,108,118,101, + 32,112,97,99,107,97,103,101,32,102,114,111,109,32,95,95, + 115,112,101,99,95,95,32,111,114,32,95,95,112,97,99,107, + 97,103,101,95,95,44,32,102,97,108,108,105,110,103,32,98, + 97,99,107,32,111,110,32,95,95,110,97,109,101,95,95,32, + 97,110,100,32,95,95,112,97,116,104,95,95,114,1,0,0, + 0,114,142,0,0,0,114,129,0,0,0,114,22,0,0,0, + 41,6,114,35,0,0,0,114,131,0,0,0,114,193,0,0, + 0,114,194,0,0,0,114,195,0,0,0,114,130,0,0,0, + 41,3,218,7,103,108,111,98,97,108,115,114,187,0,0,0, + 114,96,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,17,95,99,97,108,99,95,95,95,112,97, + 99,107,97,103,101,95,95,46,4,0,0,115,42,0,0,0, + 0,7,10,1,10,1,8,1,18,1,6,1,2,255,4,1, + 4,255,6,2,4,254,6,3,4,1,8,1,6,2,6,2, + 4,254,6,3,8,1,8,1,14,1,114,221,0,0,0,114, + 10,0,0,0,99,5,0,0,0,0,0,0,0,0,0,0, + 0,9,0,0,0,5,0,0,0,67,0,0,0,115,180,0, + 0,0,124,4,100,1,107,2,114,18,116,0,124,0,131,1, + 125,5,110,36,124,1,100,2,117,1,114,30,124,1,110,2, + 105,0,125,6,116,1,124,6,131,1,125,7,116,0,124,0, + 124,7,124,4,131,3,125,5,124,3,115,150,124,4,100,1, + 107,2,114,84,116,0,124,0,160,2,100,3,161,1,100,1, + 25,0,131,1,83,0,124,0,115,92,124,5,83,0,116,3, + 124,0,131,1,116,3,124,0,160,2,100,3,161,1,100,1, + 25,0,131,1,24,0,125,8,116,4,106,5,124,5,106,6, + 100,2,116,3,124,5,106,6,131,1,124,8,24,0,133,2, + 25,0,25,0,83,0,110,26,116,7,124,5,100,4,131,2, + 114,172,116,8,124,5,124,3,116,0,131,3,83,0,124,5, + 83,0,100,2,83,0,41,5,97,215,1,0,0,73,109,112, + 111,114,116,32,97,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,84,104,101,32,39,103,108,111,98,97,108,115,39, + 32,97,114,103,117,109,101,110,116,32,105,115,32,117,115,101, + 100,32,116,111,32,105,110,102,101,114,32,119,104,101,114,101, + 32,116,104,101,32,105,109,112,111,114,116,32,105,115,32,111, + 99,99,117,114,114,105,110,103,32,102,114,111,109,10,32,32, + 32,32,116,111,32,104,97,110,100,108,101,32,114,101,108,97, + 116,105,118,101,32,105,109,112,111,114,116,115,46,32,84,104, + 101,32,39,108,111,99,97,108,115,39,32,97,114,103,117,109, + 101,110,116,32,105,115,32,105,103,110,111,114,101,100,46,32, + 84,104,101,10,32,32,32,32,39,102,114,111,109,108,105,115, + 116,39,32,97,114,103,117,109,101,110,116,32,115,112,101,99, + 105,102,105,101,115,32,119,104,97,116,32,115,104,111,117,108, + 100,32,101,120,105,115,116,32,97,115,32,97,116,116,114,105, + 98,117,116,101,115,32,111,110,32,116,104,101,32,109,111,100, + 117,108,101,10,32,32,32,32,98,101,105,110,103,32,105,109, + 112,111,114,116,101,100,32,40,101,46,103,46,32,96,96,102, + 114,111,109,32,109,111,100,117,108,101,32,105,109,112,111,114, + 116,32,60,102,114,111,109,108,105,115,116,62,96,96,41,46, + 32,32,84,104,101,32,39,108,101,118,101,108,39,10,32,32, + 32,32,97,114,103,117,109,101,110,116,32,114,101,112,114,101, + 115,101,110,116,115,32,116,104,101,32,112,97,99,107,97,103, + 101,32,108,111,99,97,116,105,111,110,32,116,111,32,105,109, + 112,111,114,116,32,102,114,111,109,32,105,110,32,97,32,114, + 101,108,97,116,105,118,101,10,32,32,32,32,105,109,112,111, + 114,116,32,40,101,46,103,46,32,96,96,102,114,111,109,32, + 46,46,112,107,103,32,105,109,112,111,114,116,32,109,111,100, + 96,96,32,119,111,117,108,100,32,104,97,118,101,32,97,32, + 39,108,101,118,101,108,39,32,111,102,32,50,41,46,10,10, + 32,32,32,32,114,22,0,0,0,78,114,129,0,0,0,114, + 142,0,0,0,41,9,114,210,0,0,0,114,221,0,0,0, + 218,9,112,97,114,116,105,116,105,111,110,114,186,0,0,0, + 114,15,0,0,0,114,93,0,0,0,114,1,0,0,0,114, + 4,0,0,0,114,215,0,0,0,41,9,114,17,0,0,0, + 114,220,0,0,0,218,6,108,111,99,97,108,115,114,216,0, + 0,0,114,188,0,0,0,114,97,0,0,0,90,8,103,108, + 111,98,97,108,115,95,114,187,0,0,0,90,7,99,117,116, + 95,111,102,102,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,10,95,95,105,109,112,111,114,116,95,95,73, + 4,0,0,115,30,0,0,0,0,11,8,1,10,2,16,1, + 8,1,12,1,4,3,8,1,18,1,4,1,4,4,26,3, + 32,1,10,1,12,2,114,224,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,38,0,0,0,116,0,160,1,124,0,161, + 1,125,1,124,1,100,0,117,0,114,30,116,2,100,1,124, + 0,23,0,131,1,130,1,116,3,124,1,131,1,83,0,41, + 2,78,122,25,110,111,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,32,110,97,109,101,100,32,41,4,114, + 161,0,0,0,114,168,0,0,0,114,80,0,0,0,114,160, + 0,0,0,41,2,114,17,0,0,0,114,96,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,18, + 95,98,117,105,108,116,105,110,95,102,114,111,109,95,110,97, + 109,101,110,4,0,0,115,8,0,0,0,0,1,10,1,8, + 1,12,1,114,225,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,10,0,0,0,5,0,0,0,67,0,0, + 0,115,166,0,0,0,124,1,97,0,124,0,97,1,116,2, + 116,1,131,1,125,2,116,1,106,3,160,4,161,0,68,0, + 93,72,92,2,125,3,125,4,116,5,124,4,124,2,131,2, + 114,26,124,3,116,1,106,6,118,0,114,60,116,7,125,5, + 110,18,116,0,160,8,124,3,161,1,114,26,116,9,125,5, + 110,2,113,26,116,10,124,4,124,5,131,2,125,6,116,11, + 124,6,124,4,131,2,1,0,113,26,116,1,106,3,116,12, + 25,0,125,7,100,1,68,0,93,46,125,8,124,8,116,1, + 106,3,118,1,114,138,116,13,124,8,131,1,125,9,110,10, + 116,1,106,3,124,8,25,0,125,9,116,14,124,7,124,8, + 124,9,131,3,1,0,113,114,100,2,83,0,41,3,122,250, + 83,101,116,117,112,32,105,109,112,111,114,116,108,105,98,32, + 98,121,32,105,109,112,111,114,116,105,110,103,32,110,101,101, + 100,101,100,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,115,32,97,110,100,32,105,110,106,101,99,116,105, + 110,103,32,116,104,101,109,10,32,32,32,32,105,110,116,111, + 32,116,104,101,32,103,108,111,98,97,108,32,110,97,109,101, + 115,112,97,99,101,46,10,10,32,32,32,32,65,115,32,115, + 121,115,32,105,115,32,110,101,101,100,101,100,32,102,111,114, + 32,115,121,115,46,109,111,100,117,108,101,115,32,97,99,99, + 101,115,115,32,97,110,100,32,95,105,109,112,32,105,115,32, + 110,101,101,100,101,100,32,116,111,32,108,111,97,100,32,98, + 117,105,108,116,45,105,110,10,32,32,32,32,109,111,100,117, + 108,101,115,44,32,116,104,111,115,101,32,116,119,111,32,109, + 111,100,117,108,101,115,32,109,117,115,116,32,98,101,32,101, + 120,112,108,105,99,105,116,108,121,32,112,97,115,115,101,100, + 32,105,110,46,10,10,32,32,32,32,41,3,114,23,0,0, + 0,114,193,0,0,0,114,65,0,0,0,78,41,15,114,58, + 0,0,0,114,15,0,0,0,114,14,0,0,0,114,93,0, + 0,0,218,5,105,116,101,109,115,114,197,0,0,0,114,79, + 0,0,0,114,161,0,0,0,114,89,0,0,0,114,175,0, + 0,0,114,143,0,0,0,114,149,0,0,0,114,1,0,0, + 0,114,225,0,0,0,114,5,0,0,0,41,10,218,10,115, + 121,115,95,109,111,100,117,108,101,218,11,95,105,109,112,95, + 109,111,100,117,108,101,90,11,109,111,100,117,108,101,95,116, + 121,112,101,114,17,0,0,0,114,97,0,0,0,114,110,0, + 0,0,114,96,0,0,0,90,11,115,101,108,102,95,109,111, + 100,117,108,101,90,12,98,117,105,108,116,105,110,95,110,97, + 109,101,90,14,98,117,105,108,116,105,110,95,109,111,100,117, + 108,101,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,218,6,95,115,101,116,117,112,117,4,0,0,115,36,0, + 0,0,0,9,4,1,4,3,8,1,18,1,10,1,10,1, + 6,1,10,1,6,2,2,1,10,1,12,3,10,1,8,1, + 10,1,10,2,10,1,114,229,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,38,0,0,0,116,0,124,0,124,1,131, + 2,1,0,116,1,106,2,160,3,116,4,161,1,1,0,116, + 1,106,2,160,3,116,5,161,1,1,0,100,1,83,0,41, + 2,122,48,73,110,115,116,97,108,108,32,105,109,112,111,114, + 116,101,114,115,32,102,111,114,32,98,117,105,108,116,105,110, + 32,97,110,100,32,102,114,111,122,101,110,32,109,111,100,117, + 108,101,115,78,41,6,114,229,0,0,0,114,15,0,0,0, + 114,192,0,0,0,114,120,0,0,0,114,161,0,0,0,114, + 175,0,0,0,41,2,114,227,0,0,0,114,228,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, + 8,95,105,110,115,116,97,108,108,152,4,0,0,115,6,0, + 0,0,0,2,10,2,12,1,114,230,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0, + 0,0,67,0,0,0,115,32,0,0,0,100,1,100,2,108, + 0,125,0,124,0,97,1,124,0,160,2,116,3,106,4,116, + 5,25,0,161,1,1,0,100,2,83,0,41,3,122,57,73, + 110,115,116,97,108,108,32,105,109,112,111,114,116,101,114,115, + 32,116,104,97,116,32,114,101,113,117,105,114,101,32,101,120, + 116,101,114,110,97,108,32,102,105,108,101,115,121,115,116,101, + 109,32,97,99,99,101,115,115,114,22,0,0,0,78,41,6, + 218,26,95,102,114,111,122,101,110,95,105,109,112,111,114,116, + 108,105,98,95,101,120,116,101,114,110,97,108,114,127,0,0, + 0,114,230,0,0,0,114,15,0,0,0,114,93,0,0,0, + 114,1,0,0,0,41,1,114,231,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,218,27,95,105,110, + 115,116,97,108,108,95,101,120,116,101,114,110,97,108,95,105, + 109,112,111,114,116,101,114,115,160,4,0,0,115,6,0,0, + 0,0,3,8,1,4,1,114,232,0,0,0,41,2,78,78, + 41,1,78,41,2,78,114,22,0,0,0,41,4,78,78,114, + 10,0,0,0,114,22,0,0,0,41,50,114,3,0,0,0, + 114,127,0,0,0,114,12,0,0,0,114,18,0,0,0,114, + 60,0,0,0,114,34,0,0,0,114,44,0,0,0,114,19, + 0,0,0,114,20,0,0,0,114,50,0,0,0,114,51,0, + 0,0,114,54,0,0,0,114,66,0,0,0,114,68,0,0, + 0,114,77,0,0,0,114,87,0,0,0,114,91,0,0,0, + 114,98,0,0,0,114,112,0,0,0,114,113,0,0,0,114, + 92,0,0,0,114,143,0,0,0,114,149,0,0,0,114,153, + 0,0,0,114,108,0,0,0,114,94,0,0,0,114,159,0, + 0,0,114,160,0,0,0,114,95,0,0,0,114,161,0,0, + 0,114,175,0,0,0,114,180,0,0,0,114,189,0,0,0, + 114,191,0,0,0,114,196,0,0,0,114,202,0,0,0,90, + 15,95,69,82,82,95,77,83,71,95,80,82,69,70,73,88, + 114,204,0,0,0,114,207,0,0,0,218,6,111,98,106,101, + 99,116,114,208,0,0,0,114,209,0,0,0,114,210,0,0, + 0,114,215,0,0,0,114,221,0,0,0,114,224,0,0,0, + 114,225,0,0,0,114,229,0,0,0,114,230,0,0,0,114, + 232,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,218,8,60,109,111,100,117,108, + 101,62,1,0,0,0,115,94,0,0,0,4,24,4,2,8, + 8,8,8,4,2,4,3,16,4,14,77,14,21,14,16,8, + 37,8,17,8,11,14,8,8,11,8,12,8,16,8,36,14, + 101,16,26,10,45,14,72,8,17,8,17,8,30,8,37,8, + 42,8,15,14,75,14,79,14,13,8,9,8,9,10,47,8, + 16,4,1,8,2,8,32,6,3,8,16,10,15,14,37,8, + 27,10,37,8,7,8,35,8,8, +}; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 4f2acad1..31fe7be8 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -332,7 +332,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 10,32,32,32,32,32,32,32,32,115,116,105,108,108,32,98, 101,32,34,97,98,115,111,108,117,116,101,34,46,10,32,32, 32,32,32,32,32,32,114,5,0,0,0,233,3,0,0,0, - 41,3,114,30,0,0,0,114,51,0,0,0,218,20,95,112, + 41,3,114,30,0,0,0,114,58,0,0,0,218,20,95,112, 97,116,104,115,101,112,115,95,119,105,116,104,95,99,111,108, 111,110,114,72,0,0,0,114,11,0,0,0,114,11,0,0, 0,114,12,0,0,0,114,86,0,0,0,179,0,0,0,115, diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 373b1366..cd8a22fe 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -1,1079 +1,1079 @@ -/* Auto-generated by Programs/_freeze_importlib.c */ -const unsigned char _Py_M__zipimport[] = { - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,64,0,0,0,115,82,1,0,0,100,0, - 90,0,100,1,100,2,108,1,90,2,100,1,100,3,108,1, - 109,3,90,3,109,4,90,4,1,0,100,1,100,2,108,5, - 90,6,100,1,100,2,108,7,90,7,100,1,100,2,108,8, - 90,8,100,1,100,2,108,9,90,9,100,1,100,2,108,10, - 90,10,100,1,100,2,108,11,90,11,100,4,100,5,103,2, - 90,12,101,2,106,13,90,13,101,2,106,14,100,6,100,2, - 133,2,25,0,90,15,71,0,100,7,100,4,132,0,100,4, - 101,16,131,3,90,17,105,0,90,18,101,19,101,10,131,1, - 90,20,100,8,90,21,100,9,90,22,100,10,90,23,71,0, - 100,11,100,5,132,0,100,5,131,2,90,24,101,13,100,12, - 23,0,100,13,100,13,102,3,101,13,100,14,23,0,100,15, - 100,13,102,3,100,16,100,17,102,4,90,25,100,18,100,19, - 132,0,90,26,100,20,100,21,132,0,90,27,100,22,100,23, - 132,0,90,28,100,24,100,25,132,0,90,29,100,26,90,30, - 100,15,97,31,100,27,100,28,132,0,90,32,100,29,100,30, - 132,0,90,33,100,31,100,32,132,0,90,34,100,33,100,34, - 132,0,90,35,101,19,101,35,106,36,131,1,90,37,100,35, - 100,36,132,0,90,38,100,37,100,38,132,0,90,39,100,39, - 100,40,132,0,90,40,100,41,100,42,132,0,90,41,100,43, - 100,44,132,0,90,42,100,45,100,46,132,0,90,43,71,0, - 100,47,100,48,132,0,100,48,131,2,90,44,100,2,83,0, - 41,49,97,80,2,0,0,122,105,112,105,109,112,111,114,116, - 32,112,114,111,118,105,100,101,115,32,115,117,112,112,111,114, - 116,32,102,111,114,32,105,109,112,111,114,116,105,110,103,32, - 80,121,116,104,111,110,32,109,111,100,117,108,101,115,32,102, - 114,111,109,32,90,105,112,32,97,114,99,104,105,118,101,115, - 46,10,10,84,104,105,115,32,109,111,100,117,108,101,32,101, - 120,112,111,114,116,115,32,116,104,114,101,101,32,111,98,106, - 101,99,116,115,58,10,45,32,122,105,112,105,109,112,111,114, - 116,101,114,58,32,97,32,99,108,97,115,115,59,32,105,116, - 115,32,99,111,110,115,116,114,117,99,116,111,114,32,116,97, - 107,101,115,32,97,32,112,97,116,104,32,116,111,32,97,32, - 90,105,112,32,97,114,99,104,105,118,101,46,10,45,32,90, - 105,112,73,109,112,111,114,116,69,114,114,111,114,58,32,101, - 120,99,101,112,116,105,111,110,32,114,97,105,115,101,100,32, - 98,121,32,122,105,112,105,109,112,111,114,116,101,114,32,111, - 98,106,101,99,116,115,46,32,73,116,39,115,32,97,10,32, - 32,115,117,98,99,108,97,115,115,32,111,102,32,73,109,112, - 111,114,116,69,114,114,111,114,44,32,115,111,32,105,116,32, - 99,97,110,32,98,101,32,99,97,117,103,104,116,32,97,115, - 32,73,109,112,111,114,116,69,114,114,111,114,44,32,116,111, - 111,46,10,45,32,95,122,105,112,95,100,105,114,101,99,116, - 111,114,121,95,99,97,99,104,101,58,32,97,32,100,105,99, - 116,44,32,109,97,112,112,105,110,103,32,97,114,99,104,105, - 118,101,32,112,97,116,104,115,32,116,111,32,122,105,112,32, - 100,105,114,101,99,116,111,114,121,10,32,32,105,110,102,111, - 32,100,105,99,116,115,44,32,97,115,32,117,115,101,100,32, - 105,110,32,122,105,112,105,109,112,111,114,116,101,114,46,95, - 102,105,108,101,115,46,10,10,73,116,32,105,115,32,117,115, - 117,97,108,108,121,32,110,111,116,32,110,101,101,100,101,100, - 32,116,111,32,117,115,101,32,116,104,101,32,122,105,112,105, - 109,112,111,114,116,32,109,111,100,117,108,101,32,101,120,112, - 108,105,99,105,116,108,121,59,32,105,116,32,105,115,10,117, - 115,101,100,32,98,121,32,116,104,101,32,98,117,105,108,116, - 105,110,32,105,109,112,111,114,116,32,109,101,99,104,97,110, - 105,115,109,32,102,111,114,32,115,121,115,46,112,97,116,104, - 32,105,116,101,109,115,32,116,104,97,116,32,97,114,101,32, - 112,97,116,104,115,10,116,111,32,90,105,112,32,97,114,99, - 104,105,118,101,115,46,10,233,0,0,0,0,78,41,2,218, - 14,95,117,110,112,97,99,107,95,117,105,110,116,49,54,218, - 14,95,117,110,112,97,99,107,95,117,105,110,116,51,50,218, - 14,90,105,112,73,109,112,111,114,116,69,114,114,111,114,218, - 11,122,105,112,105,109,112,111,114,116,101,114,233,1,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,64,0,0,0,115,12,0,0,0,101, - 0,90,1,100,0,90,2,100,1,83,0,41,2,114,3,0, - 0,0,78,41,3,218,8,95,95,110,97,109,101,95,95,218, - 10,95,95,109,111,100,117,108,101,95,95,218,12,95,95,113, - 117,97,108,110,97,109,101,95,95,169,0,114,9,0,0,0, - 114,9,0,0,0,250,18,60,102,114,111,122,101,110,32,122, - 105,112,105,109,112,111,114,116,62,114,3,0,0,0,33,0, - 0,0,115,2,0,0,0,8,1,233,22,0,0,0,115,4, - 0,0,0,80,75,5,6,105,255,255,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,64,0,0,0,115,108,0,0,0,101,0,90,1,100,0, - 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,25, - 100,5,100,6,132,1,90,5,100,26,100,7,100,8,132,1, - 90,6,100,9,100,10,132,0,90,7,100,11,100,12,132,0, - 90,8,100,13,100,14,132,0,90,9,100,15,100,16,132,0, - 90,10,100,17,100,18,132,0,90,11,100,19,100,20,132,0, - 90,12,100,21,100,22,132,0,90,13,100,23,100,24,132,0, - 90,14,100,4,83,0,41,27,114,4,0,0,0,97,255,1, - 0,0,122,105,112,105,109,112,111,114,116,101,114,40,97,114, - 99,104,105,118,101,112,97,116,104,41,32,45,62,32,122,105, - 112,105,109,112,111,114,116,101,114,32,111,98,106,101,99,116, - 10,10,32,32,32,32,67,114,101,97,116,101,32,97,32,110, - 101,119,32,122,105,112,105,109,112,111,114,116,101,114,32,105, - 110,115,116,97,110,99,101,46,32,39,97,114,99,104,105,118, - 101,112,97,116,104,39,32,109,117,115,116,32,98,101,32,97, - 32,112,97,116,104,32,116,111,10,32,32,32,32,97,32,122, - 105,112,102,105,108,101,44,32,111,114,32,116,111,32,97,32, - 115,112,101,99,105,102,105,99,32,112,97,116,104,32,105,110, - 115,105,100,101,32,97,32,122,105,112,102,105,108,101,46,32, - 70,111,114,32,101,120,97,109,112,108,101,44,32,105,116,32, - 99,97,110,32,98,101,10,32,32,32,32,39,47,116,109,112, - 47,109,121,105,109,112,111,114,116,46,122,105,112,39,44,32, - 111,114,32,39,47,116,109,112,47,109,121,105,109,112,111,114, - 116,46,122,105,112,47,109,121,100,105,114,101,99,116,111,114, - 121,39,44,32,105,102,32,109,121,100,105,114,101,99,116,111, - 114,121,32,105,115,32,97,10,32,32,32,32,118,97,108,105, - 100,32,100,105,114,101,99,116,111,114,121,32,105,110,115,105, - 100,101,32,116,104,101,32,97,114,99,104,105,118,101,46,10, - 10,32,32,32,32,39,90,105,112,73,109,112,111,114,116,69, - 114,114,111,114,32,105,115,32,114,97,105,115,101,100,32,105, - 102,32,39,97,114,99,104,105,118,101,112,97,116,104,39,32, - 100,111,101,115,110,39,116,32,112,111,105,110,116,32,116,111, - 32,97,32,118,97,108,105,100,32,90,105,112,10,32,32,32, - 32,97,114,99,104,105,118,101,46,10,10,32,32,32,32,84, - 104,101,32,39,97,114,99,104,105,118,101,39,32,97,116,116, - 114,105,98,117,116,101,32,111,102,32,122,105,112,105,109,112, - 111,114,116,101,114,32,111,98,106,101,99,116,115,32,99,111, - 110,116,97,105,110,115,32,116,104,101,32,110,97,109,101,32, - 111,102,32,116,104,101,10,32,32,32,32,122,105,112,102,105, - 108,101,32,116,97,114,103,101,116,101,100,46,10,32,32,32, - 32,99,2,0,0,0,0,0,0,0,0,0,0,0,8,0, - 0,0,9,0,0,0,67,0,0,0,115,32,1,0,0,116, - 0,124,1,116,1,131,2,115,28,100,1,100,0,108,2,125, - 2,124,2,160,3,124,1,161,1,125,1,124,1,115,44,116, - 4,100,2,124,1,100,3,141,2,130,1,116,5,114,60,124, - 1,160,6,116,5,116,7,161,2,125,1,103,0,125,3,122, - 14,116,8,160,9,124,1,161,1,125,4,87,0,110,70,4, - 0,116,10,116,11,102,2,121,148,1,0,1,0,1,0,116, - 8,160,12,124,1,161,1,92,2,125,5,125,6,124,5,124, - 1,107,2,114,130,116,4,100,4,124,1,100,3,141,2,130, - 1,124,5,125,1,124,3,160,13,124,6,161,1,1,0,89, - 0,113,64,48,0,124,4,106,14,100,5,64,0,100,6,107, - 3,114,180,116,4,100,4,124,1,100,3,141,2,130,1,113, - 180,113,64,122,12,116,15,124,1,25,0,125,7,87,0,110, - 34,4,0,116,16,121,226,1,0,1,0,1,0,116,17,124, - 1,131,1,125,7,124,7,116,15,124,1,60,0,89,0,110, - 2,48,0,124,7,124,0,95,18,124,1,124,0,95,19,116, - 8,106,20,124,3,100,0,100,0,100,7,133,3,25,0,142, - 0,124,0,95,21,124,0,106,21,144,1,114,28,124,0,4, - 0,106,21,116,7,55,0,2,0,95,21,100,0,83,0,41, - 8,78,114,0,0,0,0,122,21,97,114,99,104,105,118,101, - 32,112,97,116,104,32,105,115,32,101,109,112,116,121,169,1, - 218,4,112,97,116,104,122,14,110,111,116,32,97,32,90,105, - 112,32,102,105,108,101,105,0,240,0,0,105,0,128,0,0, - 233,255,255,255,255,41,22,218,10,105,115,105,110,115,116,97, - 110,99,101,218,3,115,116,114,218,2,111,115,90,8,102,115, - 100,101,99,111,100,101,114,3,0,0,0,218,12,97,108,116, - 95,112,97,116,104,95,115,101,112,218,7,114,101,112,108,97, - 99,101,218,8,112,97,116,104,95,115,101,112,218,19,95,98, - 111,111,116,115,116,114,97,112,95,101,120,116,101,114,110,97, - 108,90,10,95,112,97,116,104,95,115,116,97,116,218,7,79, - 83,69,114,114,111,114,218,10,86,97,108,117,101,69,114,114, - 111,114,90,11,95,112,97,116,104,95,115,112,108,105,116,218, - 6,97,112,112,101,110,100,90,7,115,116,95,109,111,100,101, - 218,20,95,122,105,112,95,100,105,114,101,99,116,111,114,121, - 95,99,97,99,104,101,218,8,75,101,121,69,114,114,111,114, - 218,15,95,114,101,97,100,95,100,105,114,101,99,116,111,114, - 121,218,6,95,102,105,108,101,115,218,7,97,114,99,104,105, - 118,101,218,10,95,112,97,116,104,95,106,111,105,110,218,6, - 112,114,101,102,105,120,41,8,218,4,115,101,108,102,114,13, - 0,0,0,114,17,0,0,0,114,31,0,0,0,90,2,115, - 116,90,7,100,105,114,110,97,109,101,90,8,98,97,115,101, - 110,97,109,101,218,5,102,105,108,101,115,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,8,95,95,105,110, - 105,116,95,95,63,0,0,0,115,58,0,0,0,0,1,10, - 1,8,1,10,1,4,1,12,1,4,1,12,2,4,2,2, - 1,14,1,16,3,14,1,8,1,12,1,4,1,16,3,14, - 2,12,1,4,2,2,1,12,1,12,1,8,1,14,1,6, - 1,6,2,22,1,8,1,122,20,122,105,112,105,109,112,111, - 114,116,101,114,46,95,95,105,110,105,116,95,95,78,99,3, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4, - 0,0,0,67,0,0,0,115,78,0,0,0,116,0,124,0, - 124,1,131,2,125,3,124,3,100,1,117,1,114,26,124,0, - 103,0,102,2,83,0,116,1,124,0,124,1,131,2,125,4, - 116,2,124,0,124,4,131,2,114,70,100,1,124,0,106,3, - 155,0,116,4,155,0,124,4,155,0,157,3,103,1,102,2, - 83,0,100,1,103,0,102,2,83,0,41,2,97,239,1,0, - 0,102,105,110,100,95,108,111,97,100,101,114,40,102,117,108, - 108,110,97,109,101,44,32,112,97,116,104,61,78,111,110,101, - 41,32,45,62,32,115,101,108,102,44,32,115,116,114,32,111, - 114,32,78,111,110,101,46,10,10,32,32,32,32,32,32,32, - 32,83,101,97,114,99,104,32,102,111,114,32,97,32,109,111, - 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, - 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102, - 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101, - 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, - 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111, - 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109, - 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104, - 101,32,122,105,112,105,109,112,111,114,116,101,114,10,32,32, - 32,32,32,32,32,32,105,110,115,116,97,110,99,101,32,105, - 116,115,101,108,102,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,119,97,115,32,102,111,117,110,100,44,32,97, - 32,115,116,114,105,110,103,32,99,111,110,116,97,105,110,105, - 110,103,32,116,104,101,10,32,32,32,32,32,32,32,32,102, - 117,108,108,32,112,97,116,104,32,110,97,109,101,32,105,102, - 32,105,116,39,115,32,112,111,115,115,105,98,108,121,32,97, - 32,112,111,114,116,105,111,110,32,111,102,32,97,32,110,97, - 109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,44, - 10,32,32,32,32,32,32,32,32,111,114,32,78,111,110,101, - 32,111,116,104,101,114,119,105,115,101,46,32,84,104,101,32, - 111,112,116,105,111,110,97,108,32,39,112,97,116,104,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,105,103,110,111, - 114,101,100,32,45,45,32,105,116,39,115,10,32,32,32,32, - 32,32,32,32,116,104,101,114,101,32,102,111,114,32,99,111, - 109,112,97,116,105,98,105,108,105,116,121,32,119,105,116,104, - 32,116,104,101,32,105,109,112,111,114,116,101,114,32,112,114, - 111,116,111,99,111,108,46,10,32,32,32,32,32,32,32,32, - 78,41,5,218,16,95,103,101,116,95,109,111,100,117,108,101, - 95,105,110,102,111,218,16,95,103,101,116,95,109,111,100,117, - 108,101,95,112,97,116,104,218,7,95,105,115,95,100,105,114, - 114,29,0,0,0,114,20,0,0,0,41,5,114,32,0,0, - 0,218,8,102,117,108,108,110,97,109,101,114,13,0,0,0, - 218,2,109,105,218,7,109,111,100,112,97,116,104,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,218,11,102,105, - 110,100,95,108,111,97,100,101,114,109,0,0,0,115,14,0, - 0,0,0,10,10,1,8,2,8,7,10,1,10,4,24,2, - 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, - 110,100,95,108,111,97,100,101,114,99,3,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,0, - 0,0,115,16,0,0,0,124,0,160,0,124,1,124,2,161, - 2,100,1,25,0,83,0,41,2,97,139,1,0,0,102,105, - 110,100,95,109,111,100,117,108,101,40,102,117,108,108,110,97, - 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, - 62,32,115,101,108,102,32,111,114,32,78,111,110,101,46,10, - 10,32,32,32,32,32,32,32,32,83,101,97,114,99,104,32, - 102,111,114,32,97,32,109,111,100,117,108,101,32,115,112,101, - 99,105,102,105,101,100,32,98,121,32,39,102,117,108,108,110, - 97,109,101,39,46,32,39,102,117,108,108,110,97,109,101,39, - 32,109,117,115,116,32,98,101,32,116,104,101,10,32,32,32, - 32,32,32,32,32,102,117,108,108,121,32,113,117,97,108,105, - 102,105,101,100,32,40,100,111,116,116,101,100,41,32,109,111, - 100,117,108,101,32,110,97,109,101,46,32,73,116,32,114,101, - 116,117,114,110,115,32,116,104,101,32,122,105,112,105,109,112, - 111,114,116,101,114,10,32,32,32,32,32,32,32,32,105,110, - 115,116,97,110,99,101,32,105,116,115,101,108,102,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,119,97,115,32, - 102,111,117,110,100,44,32,111,114,32,78,111,110,101,32,105, - 102,32,105,116,32,119,97,115,110,39,116,46,10,32,32,32, - 32,32,32,32,32,84,104,101,32,111,112,116,105,111,110,97, - 108,32,39,112,97,116,104,39,32,97,114,103,117,109,101,110, - 116,32,105,115,32,105,103,110,111,114,101,100,32,45,45,32, - 105,116,39,115,32,116,104,101,114,101,32,102,111,114,32,99, - 111,109,112,97,116,105,98,105,108,105,116,121,10,32,32,32, - 32,32,32,32,32,119,105,116,104,32,116,104,101,32,105,109, - 112,111,114,116,101,114,32,112,114,111,116,111,99,111,108,46, - 10,32,32,32,32,32,32,32,32,114,0,0,0,0,41,1, - 114,41,0,0,0,41,3,114,32,0,0,0,114,38,0,0, - 0,114,13,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,11,102,105,110,100,95,109,111,100,117, - 108,101,141,0,0,0,115,2,0,0,0,0,9,122,23,122, - 105,112,105,109,112,111,114,116,101,114,46,102,105,110,100,95, - 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,5,0,0,0,3,0,0,0,67,0,0,0,115, - 20,0,0,0,116,0,124,0,124,1,131,2,92,3,125,2, - 125,3,125,4,124,2,83,0,41,1,122,163,103,101,116,95, - 99,111,100,101,40,102,117,108,108,110,97,109,101,41,32,45, - 62,32,99,111,100,101,32,111,98,106,101,99,116,46,10,10, - 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, - 104,101,32,99,111,100,101,32,111,98,106,101,99,116,32,102, - 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 32,109,111,100,117,108,101,46,32,82,97,105,115,101,32,90, - 105,112,73,109,112,111,114,116,69,114,114,111,114,10,32,32, - 32,32,32,32,32,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,99,111,117,108,100,110,39,116,32,98,101,32, - 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,169, - 1,218,16,95,103,101,116,95,109,111,100,117,108,101,95,99, - 111,100,101,169,5,114,32,0,0,0,114,38,0,0,0,218, - 4,99,111,100,101,218,9,105,115,112,97,99,107,97,103,101, - 114,40,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,218,8,103,101,116,95,99,111,100,101,153,0, - 0,0,115,4,0,0,0,0,6,16,1,122,20,122,105,112, - 105,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,8,0,0,0,67,0,0,0,115,116,0,0,0,116, - 0,114,16,124,1,160,1,116,0,116,2,161,2,125,1,124, - 1,125,2,124,1,160,3,124,0,106,4,116,2,23,0,161, - 1,114,58,124,1,116,5,124,0,106,4,116,2,23,0,131, - 1,100,1,133,2,25,0,125,2,122,14,124,0,106,6,124, - 2,25,0,125,3,87,0,110,30,4,0,116,7,121,102,1, - 0,1,0,1,0,116,8,100,2,100,3,124,2,131,3,130, - 1,89,0,110,2,48,0,116,9,124,0,106,4,124,3,131, - 2,83,0,41,4,122,154,103,101,116,95,100,97,116,97,40, - 112,97,116,104,110,97,109,101,41,32,45,62,32,115,116,114, - 105,110,103,32,119,105,116,104,32,102,105,108,101,32,100,97, - 116,97,46,10,10,32,32,32,32,32,32,32,32,82,101,116, - 117,114,110,32,116,104,101,32,100,97,116,97,32,97,115,115, - 111,99,105,97,116,101,100,32,119,105,116,104,32,39,112,97, - 116,104,110,97,109,101,39,46,32,82,97,105,115,101,32,79, - 83,69,114,114,111,114,32,105,102,10,32,32,32,32,32,32, - 32,32,116,104,101,32,102,105,108,101,32,119,97,115,110,39, - 116,32,102,111,117,110,100,46,10,32,32,32,32,32,32,32, - 32,78,114,0,0,0,0,218,0,41,10,114,18,0,0,0, - 114,19,0,0,0,114,20,0,0,0,218,10,115,116,97,114, - 116,115,119,105,116,104,114,29,0,0,0,218,3,108,101,110, - 114,28,0,0,0,114,26,0,0,0,114,22,0,0,0,218, - 9,95,103,101,116,95,100,97,116,97,41,4,114,32,0,0, - 0,218,8,112,97,116,104,110,97,109,101,90,3,107,101,121, - 218,9,116,111,99,95,101,110,116,114,121,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,8,103,101,116,95, - 100,97,116,97,163,0,0,0,115,20,0,0,0,0,6,4, - 1,12,2,4,1,16,1,22,2,2,1,14,1,12,1,18, - 1,122,20,122,105,112,105,109,112,111,114,116,101,114,46,103, - 101,116,95,100,97,116,97,99,2,0,0,0,0,0,0,0, - 0,0,0,0,5,0,0,0,3,0,0,0,67,0,0,0, - 115,20,0,0,0,116,0,124,0,124,1,131,2,92,3,125, - 2,125,3,125,4,124,4,83,0,41,1,122,106,103,101,116, - 95,102,105,108,101,110,97,109,101,40,102,117,108,108,110,97, - 109,101,41,32,45,62,32,102,105,108,101,110,97,109,101,32, - 115,116,114,105,110,103,46,10,10,32,32,32,32,32,32,32, - 32,82,101,116,117,114,110,32,116,104,101,32,102,105,108,101, - 110,97,109,101,32,102,111,114,32,116,104,101,32,115,112,101, - 99,105,102,105,101,100,32,109,111,100,117,108,101,46,10,32, - 32,32,32,32,32,32,32,114,43,0,0,0,114,45,0,0, - 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 218,12,103,101,116,95,102,105,108,101,110,97,109,101,184,0, - 0,0,115,4,0,0,0,0,7,16,1,122,24,122,105,112, - 105,109,112,111,114,116,101,114,46,103,101,116,95,102,105,108, - 101,110,97,109,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,126, - 0,0,0,116,0,124,0,124,1,131,2,125,2,124,2,100, - 1,117,0,114,36,116,1,100,2,124,1,155,2,157,2,124, - 1,100,3,141,2,130,1,116,2,124,0,124,1,131,2,125, - 3,124,2,114,64,116,3,160,4,124,3,100,4,161,2,125, - 4,110,10,124,3,155,0,100,5,157,2,125,4,122,14,124, - 0,106,5,124,4,25,0,125,5,87,0,110,20,4,0,116, - 6,121,108,1,0,1,0,1,0,89,0,100,1,83,0,48, - 0,116,7,124,0,106,8,124,5,131,2,160,9,161,0,83, - 0,41,6,122,253,103,101,116,95,115,111,117,114,99,101,40, - 102,117,108,108,110,97,109,101,41,32,45,62,32,115,111,117, - 114,99,101,32,115,116,114,105,110,103,46,10,10,32,32,32, - 32,32,32,32,32,82,101,116,117,114,110,32,116,104,101,32, - 115,111,117,114,99,101,32,99,111,100,101,32,102,111,114,32, - 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, - 100,117,108,101,46,32,82,97,105,115,101,32,90,105,112,73, - 109,112,111,114,116,69,114,114,111,114,10,32,32,32,32,32, - 32,32,32,105,102,32,116,104,101,32,109,111,100,117,108,101, - 32,99,111,117,108,100,110,39,116,32,98,101,32,102,111,117, - 110,100,44,32,114,101,116,117,114,110,32,78,111,110,101,32, - 105,102,32,116,104,101,32,97,114,99,104,105,118,101,32,100, - 111,101,115,10,32,32,32,32,32,32,32,32,99,111,110,116, - 97,105,110,32,116,104,101,32,109,111,100,117,108,101,44,32, - 98,117,116,32,104,97,115,32,110,111,32,115,111,117,114,99, - 101,32,102,111,114,32,105,116,46,10,32,32,32,32,32,32, - 32,32,78,250,18,99,97,110,39,116,32,102,105,110,100,32, - 109,111,100,117,108,101,32,169,1,218,4,110,97,109,101,250, - 11,95,95,105,110,105,116,95,95,46,112,121,250,3,46,112, - 121,41,10,114,35,0,0,0,114,3,0,0,0,114,36,0, - 0,0,114,21,0,0,0,114,30,0,0,0,114,28,0,0, - 0,114,26,0,0,0,114,52,0,0,0,114,29,0,0,0, - 218,6,100,101,99,111,100,101,41,6,114,32,0,0,0,114, - 38,0,0,0,114,39,0,0,0,114,13,0,0,0,218,8, - 102,117,108,108,112,97,116,104,114,54,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,218,10,103,101, - 116,95,115,111,117,114,99,101,195,0,0,0,115,24,0,0, - 0,0,7,10,1,8,1,18,2,10,1,4,1,14,2,10, - 2,2,1,14,1,12,2,8,1,122,22,122,105,112,105,109, - 112,111,114,116,101,114,46,103,101,116,95,115,111,117,114,99, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,4,0,0,0,67,0,0,0,115,40,0,0,0,116, - 0,124,0,124,1,131,2,125,2,124,2,100,1,117,0,114, - 36,116,1,100,2,124,1,155,2,157,2,124,1,100,3,141, - 2,130,1,124,2,83,0,41,4,122,171,105,115,95,112,97, - 99,107,97,103,101,40,102,117,108,108,110,97,109,101,41,32, - 45,62,32,98,111,111,108,46,10,10,32,32,32,32,32,32, - 32,32,82,101,116,117,114,110,32,84,114,117,101,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,115,112,101,99, - 105,102,105,101,100,32,98,121,32,102,117,108,108,110,97,109, - 101,32,105,115,32,97,32,112,97,99,107,97,103,101,46,10, - 32,32,32,32,32,32,32,32,82,97,105,115,101,32,90,105, - 112,73,109,112,111,114,116,69,114,114,111,114,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,99,111,117,108,100, - 110,39,116,32,98,101,32,102,111,117,110,100,46,10,32,32, - 32,32,32,32,32,32,78,114,57,0,0,0,114,58,0,0, - 0,41,2,114,35,0,0,0,114,3,0,0,0,41,3,114, - 32,0,0,0,114,38,0,0,0,114,39,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,218,10,105, - 115,95,112,97,99,107,97,103,101,221,0,0,0,115,8,0, - 0,0,0,6,10,1,8,1,18,1,122,22,122,105,112,105, - 109,112,111,114,116,101,114,46,105,115,95,112,97,99,107,97, - 103,101,99,2,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,8,0,0,0,67,0,0,0,115,246,0,0,0, - 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, - 116,1,106,2,160,3,124,1,161,1,125,5,124,5,100,1, - 117,0,115,46,116,4,124,5,116,5,131,2,115,64,116,5, - 124,1,131,1,125,5,124,5,116,1,106,2,124,1,60,0, - 124,0,124,5,95,6,122,84,124,3,114,108,116,7,124,0, - 124,1,131,2,125,6,116,8,160,9,124,0,106,10,124,6, - 161,2,125,7,124,7,103,1,124,5,95,11,116,12,124,5, - 100,2,131,2,115,124,116,13,124,5,95,13,116,8,160,14, - 124,5,106,15,124,1,124,4,161,3,1,0,116,16,124,2, - 124,5,106,15,131,2,1,0,87,0,110,22,1,0,1,0, - 1,0,116,1,106,2,124,1,61,0,130,0,89,0,110,2, - 48,0,122,14,116,1,106,2,124,1,25,0,125,5,87,0, - 110,34,4,0,116,17,121,226,1,0,1,0,1,0,116,18, - 100,3,124,1,155,2,100,4,157,3,131,1,130,1,89,0, - 110,2,48,0,116,19,160,20,100,5,124,1,124,4,161,3, - 1,0,124,5,83,0,41,6,122,245,108,111,97,100,95,109, - 111,100,117,108,101,40,102,117,108,108,110,97,109,101,41,32, - 45,62,32,109,111,100,117,108,101,46,10,10,32,32,32,32, - 32,32,32,32,76,111,97,100,32,116,104,101,32,109,111,100, - 117,108,101,32,115,112,101,99,105,102,105,101,100,32,98,121, - 32,39,102,117,108,108,110,97,109,101,39,46,32,39,102,117, - 108,108,110,97,109,101,39,32,109,117,115,116,32,98,101,32, - 116,104,101,10,32,32,32,32,32,32,32,32,102,117,108,108, - 121,32,113,117,97,108,105,102,105,101,100,32,40,100,111,116, - 116,101,100,41,32,109,111,100,117,108,101,32,110,97,109,101, - 46,32,73,116,32,114,101,116,117,114,110,115,32,116,104,101, - 32,105,109,112,111,114,116,101,100,10,32,32,32,32,32,32, - 32,32,109,111,100,117,108,101,44,32,111,114,32,114,97,105, - 115,101,115,32,90,105,112,73,109,112,111,114,116,69,114,114, - 111,114,32,105,102,32,105,116,32,119,97,115,110,39,116,32, - 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,78, - 218,12,95,95,98,117,105,108,116,105,110,115,95,95,122,14, - 76,111,97,100,101,100,32,109,111,100,117,108,101,32,122,25, - 32,110,111,116,32,102,111,117,110,100,32,105,110,32,115,121, - 115,46,109,111,100,117,108,101,115,122,30,105,109,112,111,114, - 116,32,123,125,32,35,32,108,111,97,100,101,100,32,102,114, - 111,109,32,90,105,112,32,123,125,41,21,114,44,0,0,0, - 218,3,115,121,115,218,7,109,111,100,117,108,101,115,218,3, - 103,101,116,114,15,0,0,0,218,12,95,109,111,100,117,108, - 101,95,116,121,112,101,218,10,95,95,108,111,97,100,101,114, - 95,95,114,36,0,0,0,114,21,0,0,0,114,30,0,0, - 0,114,29,0,0,0,90,8,95,95,112,97,116,104,95,95, - 218,7,104,97,115,97,116,116,114,114,66,0,0,0,90,14, - 95,102,105,120,95,117,112,95,109,111,100,117,108,101,218,8, - 95,95,100,105,99,116,95,95,218,4,101,120,101,99,114,26, - 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114, - 218,10,95,98,111,111,116,115,116,114,97,112,218,16,95,118, - 101,114,98,111,115,101,95,109,101,115,115,97,103,101,41,8, - 114,32,0,0,0,114,38,0,0,0,114,46,0,0,0,114, - 47,0,0,0,114,40,0,0,0,90,3,109,111,100,114,13, - 0,0,0,114,63,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,11,108,111,97,100,95,109,111, - 100,117,108,101,234,0,0,0,115,48,0,0,0,0,7,16, - 1,12,1,18,1,8,1,10,1,6,2,2,1,4,3,10, - 1,14,1,8,2,10,1,6,1,16,1,16,1,6,1,8, - 1,8,2,2,1,14,1,12,1,22,1,14,1,122,23,122, - 105,112,105,109,112,111,114,116,101,114,46,108,111,97,100,95, - 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, - 86,0,0,0,122,20,124,0,160,0,124,1,161,1,115,18, - 87,0,100,1,83,0,87,0,110,20,4,0,116,1,121,40, - 1,0,1,0,1,0,89,0,100,1,83,0,48,0,116,2, - 106,3,115,76,100,2,100,3,108,4,109,5,125,2,1,0, - 124,2,160,6,116,2,161,1,1,0,100,4,116,2,95,3, - 116,2,124,0,124,1,131,2,83,0,41,5,122,204,82,101, - 116,117,114,110,32,116,104,101,32,82,101,115,111,117,114,99, - 101,82,101,97,100,101,114,32,102,111,114,32,97,32,112,97, - 99,107,97,103,101,32,105,110,32,97,32,122,105,112,32,102, - 105,108,101,46,10,10,32,32,32,32,32,32,32,32,73,102, - 32,39,102,117,108,108,110,97,109,101,39,32,105,115,32,97, - 32,112,97,99,107,97,103,101,32,119,105,116,104,105,110,32, - 116,104,101,32,122,105,112,32,102,105,108,101,44,32,114,101, - 116,117,114,110,32,116,104,101,10,32,32,32,32,32,32,32, - 32,39,82,101,115,111,117,114,99,101,82,101,97,100,101,114, - 39,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, - 32,112,97,99,107,97,103,101,46,32,32,79,116,104,101,114, - 119,105,115,101,32,114,101,116,117,114,110,32,78,111,110,101, - 46,10,32,32,32,32,32,32,32,32,78,114,0,0,0,0, - 41,1,218,14,82,101,115,111,117,114,99,101,82,101,97,100, - 101,114,84,41,7,114,65,0,0,0,114,3,0,0,0,218, - 24,95,90,105,112,73,109,112,111,114,116,82,101,115,111,117, - 114,99,101,82,101,97,100,101,114,218,11,95,114,101,103,105, - 115,116,101,114,101,100,90,13,105,109,112,111,114,116,108,105, - 98,46,97,98,99,114,79,0,0,0,90,8,114,101,103,105, - 115,116,101,114,41,3,114,32,0,0,0,114,38,0,0,0, - 114,79,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,218,19,103,101,116,95,114,101,115,111,117,114, - 99,101,95,114,101,97,100,101,114,16,1,0,0,115,20,0, - 0,0,0,6,2,1,10,1,10,1,12,1,8,1,6,1, - 12,1,10,1,6,1,122,31,122,105,112,105,109,112,111,114, - 116,101,114,46,103,101,116,95,114,101,115,111,117,114,99,101, - 95,114,101,97,100,101,114,99,1,0,0,0,0,0,0,0, - 0,0,0,0,1,0,0,0,5,0,0,0,67,0,0,0, - 115,24,0,0,0,100,1,124,0,106,0,155,0,116,1,155, - 0,124,0,106,2,155,0,100,2,157,5,83,0,41,3,78, - 122,21,60,122,105,112,105,109,112,111,114,116,101,114,32,111, - 98,106,101,99,116,32,34,122,2,34,62,41,3,114,29,0, - 0,0,114,20,0,0,0,114,31,0,0,0,41,1,114,32, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,8,95,95,114,101,112,114,95,95,34,1,0,0, - 115,2,0,0,0,0,1,122,20,122,105,112,105,109,112,111, - 114,116,101,114,46,95,95,114,101,112,114,95,95,41,1,78, - 41,1,78,41,15,114,6,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,7,95,95,100,111,99,95,95,114,34,0, - 0,0,114,41,0,0,0,114,42,0,0,0,114,48,0,0, - 0,114,55,0,0,0,114,56,0,0,0,114,64,0,0,0, - 114,65,0,0,0,114,78,0,0,0,114,82,0,0,0,114, - 83,0,0,0,114,9,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,4,0,0,0,45,0,0, - 0,115,24,0,0,0,8,1,4,17,8,46,10,32,10,12, - 8,10,8,21,8,11,8,26,8,13,8,38,8,18,122,12, - 95,95,105,110,105,116,95,95,46,112,121,99,84,114,60,0, - 0,0,70,41,3,122,4,46,112,121,99,84,70,41,3,114, - 61,0,0,0,70,70,99,2,0,0,0,0,0,0,0,0, - 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, - 20,0,0,0,124,0,106,0,124,1,160,1,100,1,161,1, - 100,2,25,0,23,0,83,0,41,3,78,218,1,46,233,2, - 0,0,0,41,2,114,31,0,0,0,218,10,114,112,97,114, - 116,105,116,105,111,110,41,2,114,32,0,0,0,114,38,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,36,0,0,0,52,1,0,0,115,2,0,0,0,0, - 1,114,36,0,0,0,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115, - 18,0,0,0,124,1,116,0,23,0,125,2,124,2,124,0, - 106,1,118,0,83,0,169,1,78,41,2,114,20,0,0,0, - 114,28,0,0,0,41,3,114,32,0,0,0,114,13,0,0, - 0,90,7,100,105,114,112,97,116,104,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,114,37,0,0,0,56,1, - 0,0,115,4,0,0,0,0,4,8,2,114,37,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,7,0,0, - 0,4,0,0,0,67,0,0,0,115,56,0,0,0,116,0, - 124,0,124,1,131,2,125,2,116,1,68,0,93,36,92,3, - 125,3,125,4,125,5,124,2,124,3,23,0,125,6,124,6, - 124,0,106,2,118,0,114,14,124,5,2,0,1,0,83,0, - 113,14,100,0,83,0,114,88,0,0,0,41,3,114,36,0, - 0,0,218,16,95,122,105,112,95,115,101,97,114,99,104,111, - 114,100,101,114,114,28,0,0,0,41,7,114,32,0,0,0, - 114,38,0,0,0,114,13,0,0,0,218,6,115,117,102,102, - 105,120,218,10,105,115,98,121,116,101,99,111,100,101,114,47, - 0,0,0,114,63,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,114,35,0,0,0,65,1,0,0, - 115,12,0,0,0,0,1,10,1,14,1,8,1,10,1,10, - 1,114,35,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,26,0,0,0,9,0,0,0,67,0,0,0,115, - 2,5,0,0,122,14,116,0,160,1,124,0,161,1,125,1, - 87,0,110,36,4,0,116,2,121,50,1,0,1,0,1,0, - 116,3,100,1,124,0,155,2,157,2,124,0,100,2,141,2, - 130,1,89,0,110,2,48,0,124,1,144,4,143,164,1,0, - 122,36,124,1,160,4,116,5,11,0,100,3,161,2,1,0, - 124,1,160,6,161,0,125,2,124,1,160,7,116,5,161,1, - 125,3,87,0,110,36,4,0,116,2,121,132,1,0,1,0, - 1,0,116,3,100,4,124,0,155,2,157,2,124,0,100,2, - 141,2,130,1,89,0,110,2,48,0,116,8,124,3,131,1, - 116,5,107,3,114,164,116,3,100,4,124,0,155,2,157,2, - 124,0,100,2,141,2,130,1,124,3,100,0,100,5,133,2, - 25,0,116,9,107,3,144,1,114,170,122,24,124,1,160,4, - 100,6,100,3,161,2,1,0,124,1,160,6,161,0,125,4, - 87,0,110,36,4,0,116,2,121,242,1,0,1,0,1,0, - 116,3,100,4,124,0,155,2,157,2,124,0,100,2,141,2, - 130,1,89,0,110,2,48,0,116,10,124,4,116,11,24,0, - 116,5,24,0,100,6,131,2,125,5,122,22,124,1,160,4, - 124,5,161,1,1,0,124,1,160,7,161,0,125,6,87,0, - 110,38,4,0,116,2,144,1,121,66,1,0,1,0,1,0, - 116,3,100,4,124,0,155,2,157,2,124,0,100,2,141,2, - 130,1,89,0,110,2,48,0,124,6,160,12,116,9,161,1, - 125,7,124,7,100,6,107,0,144,1,114,106,116,3,100,7, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,124,6, - 124,7,124,7,116,5,23,0,133,2,25,0,125,3,116,8, - 124,3,131,1,116,5,107,3,144,1,114,154,116,3,100,8, - 124,0,155,2,157,2,124,0,100,2,141,2,130,1,124,4, - 116,8,124,6,131,1,24,0,124,7,23,0,125,2,116,13, - 124,3,100,9,100,10,133,2,25,0,131,1,125,8,116,13, - 124,3,100,10,100,11,133,2,25,0,131,1,125,9,124,2, - 124,8,107,0,144,1,114,230,116,3,100,12,124,0,155,2, - 157,2,124,0,100,2,141,2,130,1,124,2,124,9,107,0, - 144,2,114,2,116,3,100,13,124,0,155,2,157,2,124,0, - 100,2,141,2,130,1,124,2,124,8,56,0,125,2,124,2, - 124,9,24,0,125,10,124,10,100,6,107,0,144,2,114,46, - 116,3,100,14,124,0,155,2,157,2,124,0,100,2,141,2, - 130,1,105,0,125,11,100,6,125,12,122,14,124,1,160,4, - 124,2,161,1,1,0,87,0,110,38,4,0,116,2,144,2, - 121,106,1,0,1,0,1,0,116,3,100,4,124,0,155,2, - 157,2,124,0,100,2,141,2,130,1,89,0,110,2,48,0, - 124,1,160,7,100,15,161,1,125,3,116,8,124,3,131,1, - 100,5,107,0,144,2,114,140,116,14,100,16,131,1,130,1, - 124,3,100,0,100,5,133,2,25,0,100,17,107,3,144,2, - 114,162,144,4,113,208,116,8,124,3,131,1,100,15,107,3, - 144,2,114,184,116,14,100,16,131,1,130,1,116,15,124,3, - 100,18,100,19,133,2,25,0,131,1,125,13,116,15,124,3, - 100,19,100,9,133,2,25,0,131,1,125,14,116,15,124,3, - 100,9,100,20,133,2,25,0,131,1,125,15,116,15,124,3, - 100,20,100,10,133,2,25,0,131,1,125,16,116,13,124,3, - 100,10,100,11,133,2,25,0,131,1,125,17,116,13,124,3, - 100,11,100,21,133,2,25,0,131,1,125,18,116,13,124,3, - 100,21,100,22,133,2,25,0,131,1,125,4,116,15,124,3, - 100,22,100,23,133,2,25,0,131,1,125,19,116,15,124,3, - 100,23,100,24,133,2,25,0,131,1,125,20,116,15,124,3, - 100,24,100,25,133,2,25,0,131,1,125,21,116,13,124,3, - 100,26,100,15,133,2,25,0,131,1,125,22,124,19,124,20, - 23,0,124,21,23,0,125,8,124,22,124,9,107,4,144,3, - 114,144,116,3,100,27,124,0,155,2,157,2,124,0,100,2, - 141,2,130,1,124,22,124,10,55,0,125,22,122,14,124,1, - 160,7,124,19,161,1,125,23,87,0,110,38,4,0,116,2, - 144,3,121,204,1,0,1,0,1,0,116,3,100,4,124,0, - 155,2,157,2,124,0,100,2,141,2,130,1,89,0,110,2, - 48,0,116,8,124,23,131,1,124,19,107,3,144,3,114,238, - 116,3,100,4,124,0,155,2,157,2,124,0,100,2,141,2, - 130,1,122,50,116,8,124,1,160,7,124,8,124,19,24,0, - 161,1,131,1,124,8,124,19,24,0,107,3,144,4,114,30, - 116,3,100,4,124,0,155,2,157,2,124,0,100,2,141,2, - 130,1,87,0,110,38,4,0,116,2,144,4,121,70,1,0, - 1,0,1,0,116,3,100,4,124,0,155,2,157,2,124,0, - 100,2,141,2,130,1,89,0,110,2,48,0,124,13,100,28, - 64,0,144,4,114,92,124,23,160,16,161,0,125,23,110,52, - 122,14,124,23,160,16,100,29,161,1,125,23,87,0,110,36, - 4,0,116,17,144,4,121,142,1,0,1,0,1,0,124,23, - 160,16,100,30,161,1,160,18,116,19,161,1,125,23,89,0, - 110,2,48,0,124,23,160,20,100,31,116,21,161,2,125,23, - 116,22,160,23,124,0,124,23,161,2,125,24,124,24,124,14, - 124,18,124,4,124,22,124,15,124,16,124,17,102,8,125,25, - 124,25,124,11,124,23,60,0,124,12,100,32,55,0,125,12, - 144,2,113,108,87,0,100,0,4,0,4,0,131,3,1,0, - 110,18,49,0,144,4,115,230,48,0,1,0,1,0,1,0, - 89,0,1,0,116,24,160,25,100,33,124,12,124,0,161,3, - 1,0,124,11,83,0,41,34,78,122,21,99,97,110,39,116, - 32,111,112,101,110,32,90,105,112,32,102,105,108,101,58,32, - 114,12,0,0,0,114,86,0,0,0,250,21,99,97,110,39, - 116,32,114,101,97,100,32,90,105,112,32,102,105,108,101,58, - 32,233,4,0,0,0,114,0,0,0,0,122,16,110,111,116, - 32,97,32,90,105,112,32,102,105,108,101,58,32,122,18,99, - 111,114,114,117,112,116,32,90,105,112,32,102,105,108,101,58, - 32,233,12,0,0,0,233,16,0,0,0,233,20,0,0,0, - 122,28,98,97,100,32,99,101,110,116,114,97,108,32,100,105, - 114,101,99,116,111,114,121,32,115,105,122,101,58,32,122,30, - 98,97,100,32,99,101,110,116,114,97,108,32,100,105,114,101, - 99,116,111,114,121,32,111,102,102,115,101,116,58,32,122,38, - 98,97,100,32,99,101,110,116,114,97,108,32,100,105,114,101, - 99,116,111,114,121,32,115,105,122,101,32,111,114,32,111,102, - 102,115,101,116,58,32,233,46,0,0,0,250,27,69,79,70, - 32,114,101,97,100,32,119,104,101,114,101,32,110,111,116,32, - 101,120,112,101,99,116,101,100,115,4,0,0,0,80,75,1, - 2,233,8,0,0,0,233,10,0,0,0,233,14,0,0,0, - 233,24,0,0,0,233,28,0,0,0,233,30,0,0,0,233, - 32,0,0,0,233,34,0,0,0,233,42,0,0,0,122,25, - 98,97,100,32,108,111,99,97,108,32,104,101,97,100,101,114, - 32,111,102,102,115,101,116,58,32,105,0,8,0,0,218,5, - 97,115,99,105,105,90,6,108,97,116,105,110,49,250,1,47, - 114,5,0,0,0,122,33,122,105,112,105,109,112,111,114,116, - 58,32,102,111,117,110,100,32,123,125,32,110,97,109,101,115, - 32,105,110,32,123,33,114,125,41,26,218,3,95,105,111,218, - 9,111,112,101,110,95,99,111,100,101,114,22,0,0,0,114, - 3,0,0,0,218,4,115,101,101,107,218,20,69,78,68,95, - 67,69,78,84,82,65,76,95,68,73,82,95,83,73,90,69, - 90,4,116,101,108,108,218,4,114,101,97,100,114,51,0,0, - 0,218,18,83,84,82,73,78,71,95,69,78,68,95,65,82, - 67,72,73,86,69,218,3,109,97,120,218,15,77,65,88,95, - 67,79,77,77,69,78,84,95,76,69,78,218,5,114,102,105, - 110,100,114,2,0,0,0,218,8,69,79,70,69,114,114,111, - 114,114,1,0,0,0,114,62,0,0,0,218,18,85,110,105, - 99,111,100,101,68,101,99,111,100,101,69,114,114,111,114,218, - 9,116,114,97,110,115,108,97,116,101,218,11,99,112,52,51, - 55,95,116,97,98,108,101,114,19,0,0,0,114,20,0,0, - 0,114,21,0,0,0,114,30,0,0,0,114,76,0,0,0, - 114,77,0,0,0,41,26,114,29,0,0,0,218,2,102,112, - 90,15,104,101,97,100,101,114,95,112,111,115,105,116,105,111, - 110,218,6,98,117,102,102,101,114,218,9,102,105,108,101,95, - 115,105,122,101,90,17,109,97,120,95,99,111,109,109,101,110, - 116,95,115,116,97,114,116,218,4,100,97,116,97,90,3,112, - 111,115,218,11,104,101,97,100,101,114,95,115,105,122,101,90, - 13,104,101,97,100,101,114,95,111,102,102,115,101,116,90,10, - 97,114,99,95,111,102,102,115,101,116,114,33,0,0,0,218, - 5,99,111,117,110,116,218,5,102,108,97,103,115,218,8,99, - 111,109,112,114,101,115,115,218,4,116,105,109,101,218,4,100, - 97,116,101,218,3,99,114,99,218,9,100,97,116,97,95,115, - 105,122,101,218,9,110,97,109,101,95,115,105,122,101,218,10, - 101,120,116,114,97,95,115,105,122,101,90,12,99,111,109,109, - 101,110,116,95,115,105,122,101,218,11,102,105,108,101,95,111, - 102,102,115,101,116,114,59,0,0,0,114,13,0,0,0,218, - 1,116,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,27,0,0,0,96,1,0,0,115,212,0,0,0,0, - 1,2,1,14,1,12,1,24,2,8,1,2,1,14,1,8, - 1,14,1,12,1,24,1,12,1,18,1,18,3,2,1,12, - 1,12,1,12,1,10,1,2,255,12,2,8,1,2,255,2, - 1,2,255,4,2,2,1,10,1,12,1,14,1,10,1,2, - 255,12,2,10,1,10,1,10,1,2,255,6,2,16,1,14, - 1,10,1,2,255,6,2,16,2,16,1,16,1,10,1,18, - 1,10,1,18,1,8,1,8,1,10,1,18,2,4,2,4, - 1,2,1,14,1,14,1,24,2,10,1,14,1,8,2,18, - 1,4,1,14,1,8,1,16,1,16,1,16,1,16,1,16, - 1,16,1,16,1,16,1,16,1,16,1,16,1,12,1,10, - 1,18,1,8,2,2,1,14,1,14,1,24,1,14,1,18, - 4,2,1,28,1,22,1,14,1,24,2,10,2,10,3,2, - 1,14,1,14,1,22,2,12,1,12,1,20,1,8,1,44, - 1,14,1,114,27,0,0,0,117,190,1,0,0,0,1,2, - 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66, - 67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82, - 83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98, - 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114, - 115,116,117,118,119,120,121,122,123,124,125,126,127,195,135,195, - 188,195,169,195,162,195,164,195,160,195,165,195,167,195,170,195, - 171,195,168,195,175,195,174,195,172,195,132,195,133,195,137,195, - 166,195,134,195,180,195,182,195,178,195,187,195,185,195,191,195, - 150,195,156,194,162,194,163,194,165,226,130,167,198,146,195,161, - 195,173,195,179,195,186,195,177,195,145,194,170,194,186,194,191, - 226,140,144,194,172,194,189,194,188,194,161,194,171,194,187,226, - 150,145,226,150,146,226,150,147,226,148,130,226,148,164,226,149, - 161,226,149,162,226,149,150,226,149,149,226,149,163,226,149,145, - 226,149,151,226,149,157,226,149,156,226,149,155,226,148,144,226, - 148,148,226,148,180,226,148,172,226,148,156,226,148,128,226,148, - 188,226,149,158,226,149,159,226,149,154,226,149,148,226,149,169, - 226,149,166,226,149,160,226,149,144,226,149,172,226,149,167,226, - 149,168,226,149,164,226,149,165,226,149,153,226,149,152,226,149, - 146,226,149,147,226,149,171,226,149,170,226,148,152,226,148,140, - 226,150,136,226,150,132,226,150,140,226,150,144,226,150,128,206, - 177,195,159,206,147,207,128,206,163,207,131,194,181,207,132,206, - 166,206,152,206,169,206,180,226,136,158,207,134,206,181,226,136, - 169,226,137,161,194,177,226,137,165,226,137,164,226,140,160,226, - 140,161,195,183,226,137,136,194,176,226,136,153,194,183,226,136, - 154,226,129,191,194,178,226,150,160,194,160,99,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0, - 67,0,0,0,115,110,0,0,0,116,0,114,22,116,1,160, - 2,100,1,161,1,1,0,116,3,100,2,131,1,130,1,100, - 3,97,0,122,62,122,16,100,4,100,5,108,4,109,5,125, - 0,1,0,87,0,110,36,4,0,116,6,121,80,1,0,1, - 0,1,0,116,1,160,2,100,1,161,1,1,0,116,3,100, - 2,131,1,130,1,89,0,110,2,48,0,87,0,100,6,97, - 0,110,6,100,6,97,0,48,0,116,1,160,2,100,7,161, - 1,1,0,124,0,83,0,41,8,78,122,27,122,105,112,105, - 109,112,111,114,116,58,32,122,108,105,98,32,85,78,65,86, - 65,73,76,65,66,76,69,250,41,99,97,110,39,116,32,100, - 101,99,111,109,112,114,101,115,115,32,100,97,116,97,59,32, - 122,108,105,98,32,110,111,116,32,97,118,97,105,108,97,98, - 108,101,84,114,0,0,0,0,169,1,218,10,100,101,99,111, - 109,112,114,101,115,115,70,122,25,122,105,112,105,109,112,111, - 114,116,58,32,122,108,105,98,32,97,118,97,105,108,97,98, - 108,101,41,7,218,15,95,105,109,112,111,114,116,105,110,103, - 95,122,108,105,98,114,76,0,0,0,114,77,0,0,0,114, - 3,0,0,0,90,4,122,108,105,98,114,141,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,114,140,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,20, - 95,103,101,116,95,100,101,99,111,109,112,114,101,115,115,95, - 102,117,110,99,254,1,0,0,115,24,0,0,0,0,2,4, - 3,10,1,8,2,4,1,4,1,16,1,12,1,10,1,16, - 2,12,2,10,1,114,144,0,0,0,99,2,0,0,0,0, - 0,0,0,0,0,0,0,17,0,0,0,9,0,0,0,67, - 0,0,0,115,144,1,0,0,124,1,92,8,125,2,125,3, - 125,4,125,5,125,6,125,7,125,8,125,9,124,4,100,1, - 107,0,114,36,116,0,100,2,131,1,130,1,116,1,160,2, - 124,0,161,1,144,1,143,14,125,10,122,14,124,10,160,3, - 124,6,161,1,1,0,87,0,110,36,4,0,116,4,121,100, - 1,0,1,0,1,0,116,0,100,3,124,0,155,2,157,2, - 124,0,100,4,141,2,130,1,89,0,110,2,48,0,124,10, - 160,5,100,5,161,1,125,11,116,6,124,11,131,1,100,5, - 107,3,114,132,116,7,100,6,131,1,130,1,124,11,100,0, - 100,7,133,2,25,0,100,8,107,3,114,166,116,0,100,9, - 124,0,155,2,157,2,124,0,100,4,141,2,130,1,116,8, - 124,11,100,10,100,11,133,2,25,0,131,1,125,12,116,8, - 124,11,100,11,100,5,133,2,25,0,131,1,125,13,100,5, - 124,12,23,0,124,13,23,0,125,14,124,6,124,14,55,0, - 125,6,122,14,124,10,160,3,124,6,161,1,1,0,87,0, - 110,38,4,0,116,4,144,1,121,14,1,0,1,0,1,0, - 116,0,100,3,124,0,155,2,157,2,124,0,100,4,141,2, - 130,1,89,0,110,2,48,0,124,10,160,5,124,4,161,1, - 125,15,116,6,124,15,131,1,124,4,107,3,144,1,114,48, - 116,4,100,12,131,1,130,1,87,0,100,0,4,0,4,0, - 131,3,1,0,110,18,49,0,144,1,115,70,48,0,1,0, - 1,0,1,0,89,0,1,0,124,3,100,1,107,2,144,1, - 114,94,124,15,83,0,122,10,116,9,131,0,125,16,87,0, - 110,28,4,0,116,10,144,1,121,132,1,0,1,0,1,0, - 116,0,100,13,131,1,130,1,89,0,110,2,48,0,124,16, - 124,15,100,14,131,2,83,0,41,15,78,114,0,0,0,0, - 122,18,110,101,103,97,116,105,118,101,32,100,97,116,97,32, - 115,105,122,101,114,92,0,0,0,114,12,0,0,0,114,104, - 0,0,0,114,98,0,0,0,114,93,0,0,0,115,4,0, - 0,0,80,75,3,4,122,23,98,97,100,32,108,111,99,97, - 108,32,102,105,108,101,32,104,101,97,100,101,114,58,32,233, - 26,0,0,0,114,103,0,0,0,122,26,122,105,112,105,109, - 112,111,114,116,58,32,99,97,110,39,116,32,114,101,97,100, - 32,100,97,116,97,114,139,0,0,0,105,241,255,255,255,41, - 11,114,3,0,0,0,114,110,0,0,0,114,111,0,0,0, - 114,112,0,0,0,114,22,0,0,0,114,114,0,0,0,114, - 51,0,0,0,114,119,0,0,0,114,1,0,0,0,114,144, - 0,0,0,114,143,0,0,0,41,17,114,29,0,0,0,114, - 54,0,0,0,90,8,100,97,116,97,112,97,116,104,114,130, - 0,0,0,114,134,0,0,0,114,125,0,0,0,114,137,0, - 0,0,114,131,0,0,0,114,132,0,0,0,114,133,0,0, - 0,114,123,0,0,0,114,124,0,0,0,114,135,0,0,0, - 114,136,0,0,0,114,127,0,0,0,90,8,114,97,119,95, - 100,97,116,97,114,141,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,52,0,0,0,19,2,0, - 0,115,62,0,0,0,0,1,20,1,8,1,8,2,14,2, - 2,1,14,1,12,1,24,1,10,1,12,1,8,2,16,2, - 18,2,16,1,16,1,12,1,8,1,2,1,14,1,14,1, - 24,1,10,1,14,1,40,2,10,2,4,3,2,1,10,1, - 14,1,14,1,114,52,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0, - 0,0,115,16,0,0,0,116,0,124,0,124,1,24,0,131, - 1,100,1,107,1,83,0,41,2,78,114,5,0,0,0,41, - 1,218,3,97,98,115,41,2,90,2,116,49,90,2,116,50, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 9,95,101,113,95,109,116,105,109,101,65,2,0,0,115,2, - 0,0,0,0,2,114,147,0,0,0,99,5,0,0,0,0, - 0,0,0,0,0,0,0,14,0,0,0,8,0,0,0,67, - 0,0,0,115,56,1,0,0,124,3,124,2,100,1,156,2, - 125,5,122,18,116,0,160,1,124,4,124,3,124,5,161,3, - 125,6,87,0,110,20,4,0,116,2,121,48,1,0,1,0, - 1,0,89,0,100,0,83,0,48,0,124,6,100,2,64,0, - 100,3,107,3,125,7,124,7,114,178,124,6,100,4,64,0, - 100,3,107,3,125,8,116,3,106,4,100,5,107,3,114,176, - 124,8,115,102,116,3,106,4,100,6,107,2,114,176,116,5, - 124,0,124,2,131,2,125,9,124,9,100,0,117,1,114,176, - 116,3,160,6,116,0,106,7,124,9,161,2,125,10,122,20, - 116,0,160,8,124,4,124,10,124,3,124,5,161,4,1,0, - 87,0,110,20,4,0,116,2,121,174,1,0,1,0,1,0, - 89,0,100,0,83,0,48,0,110,84,116,9,124,0,124,2, - 131,2,92,2,125,11,125,12,124,11,144,1,114,6,116,10, - 116,11,124,4,100,7,100,8,133,2,25,0,131,1,124,11, - 131,2,114,242,116,11,124,4,100,8,100,9,133,2,25,0, - 131,1,124,12,107,3,144,1,114,6,116,12,160,13,100,10, - 124,3,155,2,157,2,161,1,1,0,100,0,83,0,116,14, - 160,15,124,4,100,9,100,0,133,2,25,0,161,1,125,13, - 116,16,124,13,116,17,131,2,144,1,115,52,116,18,100,11, - 124,1,155,2,100,12,157,3,131,1,130,1,124,13,83,0, - 41,13,78,41,2,114,59,0,0,0,114,13,0,0,0,114, - 5,0,0,0,114,0,0,0,0,114,86,0,0,0,90,5, - 110,101,118,101,114,90,6,97,108,119,97,121,115,114,99,0, - 0,0,114,94,0,0,0,114,95,0,0,0,122,22,98,121, - 116,101,99,111,100,101,32,105,115,32,115,116,97,108,101,32, - 102,111,114,32,122,16,99,111,109,112,105,108,101,100,32,109, - 111,100,117,108,101,32,122,21,32,105,115,32,110,111,116,32, - 97,32,99,111,100,101,32,111,98,106,101,99,116,41,19,114, - 21,0,0,0,90,13,95,99,108,97,115,115,105,102,121,95, - 112,121,99,114,75,0,0,0,218,4,95,105,109,112,90,21, - 99,104,101,99,107,95,104,97,115,104,95,98,97,115,101,100, - 95,112,121,99,115,218,15,95,103,101,116,95,112,121,99,95, - 115,111,117,114,99,101,218,11,115,111,117,114,99,101,95,104, - 97,115,104,90,17,95,82,65,87,95,77,65,71,73,67,95, - 78,85,77,66,69,82,90,18,95,118,97,108,105,100,97,116, - 101,95,104,97,115,104,95,112,121,99,218,29,95,103,101,116, - 95,109,116,105,109,101,95,97,110,100,95,115,105,122,101,95, - 111,102,95,115,111,117,114,99,101,114,147,0,0,0,114,2, - 0,0,0,114,76,0,0,0,114,77,0,0,0,218,7,109, - 97,114,115,104,97,108,90,5,108,111,97,100,115,114,15,0, - 0,0,218,10,95,99,111,100,101,95,116,121,112,101,218,9, - 84,121,112,101,69,114,114,111,114,41,14,114,32,0,0,0, - 114,53,0,0,0,114,63,0,0,0,114,38,0,0,0,114, - 126,0,0,0,90,11,101,120,99,95,100,101,116,97,105,108, - 115,114,129,0,0,0,90,10,104,97,115,104,95,98,97,115, - 101,100,90,12,99,104,101,99,107,95,115,111,117,114,99,101, - 90,12,115,111,117,114,99,101,95,98,121,116,101,115,114,150, - 0,0,0,90,12,115,111,117,114,99,101,95,109,116,105,109, - 101,90,11,115,111,117,114,99,101,95,115,105,122,101,114,46, - 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, - 0,0,218,15,95,117,110,109,97,114,115,104,97,108,95,99, - 111,100,101,75,2,0,0,115,82,0,0,0,0,2,2,1, - 2,254,6,5,2,1,18,1,12,1,8,2,12,1,4,1, - 12,1,10,1,2,255,2,1,8,255,2,2,10,1,8,1, - 4,1,4,1,2,254,4,5,2,1,4,1,8,255,8,2, - 12,1,10,3,8,255,6,3,6,3,22,1,18,255,4,2, - 4,1,8,255,4,2,4,2,18,1,12,1,16,1,114,155, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 1,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0, - 0,124,0,160,0,100,1,100,2,161,2,125,0,124,0,160, - 0,100,3,100,2,161,2,125,0,124,0,83,0,41,4,78, - 115,2,0,0,0,13,10,243,1,0,0,0,10,243,1,0, - 0,0,13,41,1,114,19,0,0,0,41,1,218,6,115,111, - 117,114,99,101,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,23,95,110,111,114,109,97,108,105,122,101,95, - 108,105,110,101,95,101,110,100,105,110,103,115,126,2,0,0, - 115,6,0,0,0,0,1,12,1,12,1,114,159,0,0,0, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0, - 124,1,131,1,125,1,116,1,124,1,124,0,100,1,100,2, - 100,3,141,4,83,0,41,4,78,114,74,0,0,0,84,41, - 1,90,12,100,111,110,116,95,105,110,104,101,114,105,116,41, - 2,114,159,0,0,0,218,7,99,111,109,112,105,108,101,41, - 2,114,53,0,0,0,114,158,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,218,15,95,99,111,109, - 112,105,108,101,95,115,111,117,114,99,101,133,2,0,0,115, - 4,0,0,0,0,1,8,1,114,161,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,0, - 0,0,67,0,0,0,115,68,0,0,0,116,0,160,1,124, - 0,100,1,63,0,100,2,23,0,124,0,100,3,63,0,100, - 4,64,0,124,0,100,5,64,0,124,1,100,6,63,0,124, - 1,100,3,63,0,100,7,64,0,124,1,100,5,64,0,100, - 8,20,0,100,9,100,9,100,9,102,9,161,1,83,0,41, - 10,78,233,9,0,0,0,105,188,7,0,0,233,5,0,0, - 0,233,15,0,0,0,233,31,0,0,0,233,11,0,0,0, - 233,63,0,0,0,114,86,0,0,0,114,14,0,0,0,41, - 2,114,131,0,0,0,90,6,109,107,116,105,109,101,41,2, - 218,1,100,114,138,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,14,95,112,97,114,115,101,95, - 100,111,115,116,105,109,101,139,2,0,0,115,18,0,0,0, - 0,1,4,1,10,1,10,1,6,1,6,1,10,1,10,1, - 6,249,114,169,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,6,0,0,0,10,0,0,0,67,0,0,0, - 115,114,0,0,0,122,82,124,1,100,1,100,0,133,2,25, - 0,100,2,118,0,115,22,74,0,130,1,124,1,100,0,100, - 1,133,2,25,0,125,1,124,0,106,0,124,1,25,0,125, - 2,124,2,100,3,25,0,125,3,124,2,100,4,25,0,125, - 4,124,2,100,5,25,0,125,5,116,1,124,4,124,3,131, - 2,124,5,102,2,87,0,83,0,4,0,116,2,116,3,116, - 4,102,3,121,108,1,0,1,0,1,0,89,0,100,6,83, - 0,48,0,100,0,83,0,41,7,78,114,14,0,0,0,169, - 2,218,1,99,218,1,111,114,163,0,0,0,233,6,0,0, - 0,233,3,0,0,0,41,2,114,0,0,0,0,114,0,0, - 0,0,41,5,114,28,0,0,0,114,169,0,0,0,114,26, - 0,0,0,218,10,73,110,100,101,120,69,114,114,111,114,114, - 154,0,0,0,41,6,114,32,0,0,0,114,13,0,0,0, - 114,54,0,0,0,114,131,0,0,0,114,132,0,0,0,90, - 17,117,110,99,111,109,112,114,101,115,115,101,100,95,115,105, - 122,101,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,114,151,0,0,0,152,2,0,0,115,20,0,0,0,0, - 1,2,2,20,1,12,1,10,3,8,1,8,1,8,1,16, - 1,18,1,114,151,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, - 0,115,84,0,0,0,124,1,100,1,100,0,133,2,25,0, - 100,2,118,0,115,20,74,0,130,1,124,1,100,0,100,1, - 133,2,25,0,125,1,122,14,124,0,106,0,124,1,25,0, - 125,2,87,0,110,20,4,0,116,1,121,66,1,0,1,0, - 1,0,89,0,100,0,83,0,48,0,116,2,124,0,106,3, - 124,2,131,2,83,0,100,0,83,0,41,3,78,114,14,0, - 0,0,114,170,0,0,0,41,4,114,28,0,0,0,114,26, - 0,0,0,114,52,0,0,0,114,29,0,0,0,41,3,114, - 32,0,0,0,114,13,0,0,0,114,54,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,114,149,0, - 0,0,171,2,0,0,115,14,0,0,0,0,2,20,1,12, - 2,2,1,14,1,12,1,8,2,114,149,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,9, - 0,0,0,67,0,0,0,115,196,0,0,0,116,0,124,0, - 124,1,131,2,125,2,116,1,68,0,93,158,92,3,125,3, - 125,4,125,5,124,2,124,3,23,0,125,6,116,2,106,3, - 100,1,124,0,106,4,116,5,124,6,100,2,100,3,141,5, - 1,0,122,14,124,0,106,6,124,6,25,0,125,7,87,0, - 110,18,4,0,116,7,121,86,1,0,1,0,1,0,89,0, - 113,14,48,0,124,7,100,4,25,0,125,8,116,8,124,0, - 106,4,124,7,131,2,125,9,124,4,114,130,116,9,124,0, - 124,8,124,6,124,1,124,9,131,5,125,10,110,10,116,10, - 124,8,124,9,131,2,125,10,124,10,100,0,117,0,114,150, - 113,14,124,7,100,4,25,0,125,8,124,10,124,5,124,8, - 102,3,2,0,1,0,83,0,113,14,116,11,100,5,124,1, - 155,2,157,2,124,1,100,6,141,2,130,1,100,0,83,0, - 41,7,78,122,13,116,114,121,105,110,103,32,123,125,123,125, - 123,125,114,86,0,0,0,41,1,90,9,118,101,114,98,111, - 115,105,116,121,114,0,0,0,0,114,57,0,0,0,114,58, - 0,0,0,41,12,114,36,0,0,0,114,89,0,0,0,114, - 76,0,0,0,114,77,0,0,0,114,29,0,0,0,114,20, - 0,0,0,114,28,0,0,0,114,26,0,0,0,114,52,0, - 0,0,114,155,0,0,0,114,161,0,0,0,114,3,0,0, - 0,41,11,114,32,0,0,0,114,38,0,0,0,114,13,0, - 0,0,114,90,0,0,0,114,91,0,0,0,114,47,0,0, - 0,114,63,0,0,0,114,54,0,0,0,114,40,0,0,0, - 114,126,0,0,0,114,46,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,114,44,0,0,0,186,2, - 0,0,115,36,0,0,0,0,1,10,1,14,1,8,1,22, - 1,2,1,14,1,12,1,6,2,8,1,12,1,4,1,18, - 2,10,1,8,3,2,1,8,1,16,2,114,44,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,64,0,0,0,115,60,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,90,4,100,3, - 100,4,132,0,90,5,100,5,100,6,132,0,90,6,100,7, - 100,8,132,0,90,7,100,9,100,10,132,0,90,8,100,11, - 100,12,132,0,90,9,100,13,83,0,41,14,114,80,0,0, - 0,122,165,80,114,105,118,97,116,101,32,99,108,97,115,115, - 32,117,115,101,100,32,116,111,32,115,117,112,112,111,114,116, - 32,90,105,112,73,109,112,111,114,116,46,103,101,116,95,114, - 101,115,111,117,114,99,101,95,114,101,97,100,101,114,40,41, - 46,10,10,32,32,32,32,84,104,105,115,32,99,108,97,115, - 115,32,105,115,32,97,108,108,111,119,101,100,32,116,111,32, - 114,101,102,101,114,101,110,99,101,32,97,108,108,32,116,104, - 101,32,105,110,110,97,114,100,115,32,97,110,100,32,112,114, - 105,118,97,116,101,32,112,97,114,116,115,32,111,102,10,32, - 32,32,32,116,104,101,32,122,105,112,105,109,112,111,114,116, - 101,114,46,10,32,32,32,32,70,99,3,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0, - 0,0,115,16,0,0,0,124,1,124,0,95,0,124,2,124, - 0,95,1,100,0,83,0,114,88,0,0,0,41,2,114,4, - 0,0,0,114,38,0,0,0,41,3,114,32,0,0,0,114, - 4,0,0,0,114,38,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,34,0,0,0,220,2,0, - 0,115,4,0,0,0,0,1,6,1,122,33,95,90,105,112, - 73,109,112,111,114,116,82,101,115,111,117,114,99,101,82,101, - 97,100,101,114,46,95,95,105,110,105,116,95,95,99,2,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,8,0, - 0,0,67,0,0,0,115,90,0,0,0,124,0,106,0,160, - 1,100,1,100,2,161,2,125,2,124,2,155,0,100,2,124, - 1,155,0,157,3,125,3,100,3,100,4,108,2,109,3,125, - 4,1,0,122,18,124,4,124,0,106,4,160,5,124,3,161, - 1,131,1,87,0,83,0,4,0,116,6,121,84,1,0,1, - 0,1,0,116,7,124,3,131,1,130,1,89,0,110,2,48, - 0,100,0,83,0,41,5,78,114,85,0,0,0,114,109,0, - 0,0,114,0,0,0,0,41,1,218,7,66,121,116,101,115, - 73,79,41,8,114,38,0,0,0,114,19,0,0,0,90,2, - 105,111,114,176,0,0,0,114,4,0,0,0,114,55,0,0, - 0,114,22,0,0,0,218,17,70,105,108,101,78,111,116,70, - 111,117,110,100,69,114,114,111,114,41,5,114,32,0,0,0, - 218,8,114,101,115,111,117,114,99,101,218,16,102,117,108,108, - 110,97,109,101,95,97,115,95,112,97,116,104,114,13,0,0, - 0,114,176,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,13,111,112,101,110,95,114,101,115,111, - 117,114,99,101,224,2,0,0,115,14,0,0,0,0,1,14, - 1,14,1,12,1,2,1,18,1,12,1,122,38,95,90,105, - 112,73,109,112,111,114,116,82,101,115,111,117,114,99,101,82, - 101,97,100,101,114,46,111,112,101,110,95,114,101,115,111,117, - 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,1,0,0,0,67,0,0,0,115,8,0,0, - 0,116,0,130,1,100,0,83,0,114,88,0,0,0,41,1, - 114,177,0,0,0,41,2,114,32,0,0,0,114,178,0,0, - 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, - 218,13,114,101,115,111,117,114,99,101,95,112,97,116,104,233, - 2,0,0,115,2,0,0,0,0,4,122,38,95,90,105,112, - 73,109,112,111,114,116,82,101,115,111,117,114,99,101,82,101, - 97,100,101,114,46,114,101,115,111,117,114,99,101,95,112,97, - 116,104,99,2,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,8,0,0,0,67,0,0,0,115,70,0,0,0, - 124,0,106,0,160,1,100,1,100,2,161,2,125,2,124,2, - 155,0,100,2,124,1,155,0,157,3,125,3,122,16,124,0, - 106,2,160,3,124,3,161,1,1,0,87,0,110,20,4,0, - 116,4,121,64,1,0,1,0,1,0,89,0,100,3,83,0, - 48,0,100,4,83,0,41,5,78,114,85,0,0,0,114,109, - 0,0,0,70,84,41,5,114,38,0,0,0,114,19,0,0, - 0,114,4,0,0,0,114,55,0,0,0,114,22,0,0,0, - 41,4,114,32,0,0,0,114,59,0,0,0,114,179,0,0, - 0,114,13,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,11,105,115,95,114,101,115,111,117,114, - 99,101,239,2,0,0,115,14,0,0,0,0,3,14,1,14, - 1,2,1,16,1,12,1,8,1,122,36,95,90,105,112,73, - 109,112,111,114,116,82,101,115,111,117,114,99,101,82,101,97, - 100,101,114,46,105,115,95,114,101,115,111,117,114,99,101,99, - 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, - 9,0,0,0,99,0,0,0,115,184,0,0,0,100,1,100, - 2,108,0,109,1,125,1,1,0,124,1,124,0,106,2,160, - 3,124,0,106,4,161,1,131,1,125,2,124,2,160,5,124, - 0,106,2,106,6,161,1,125,3,124,3,106,7,100,3,107, - 2,115,58,74,0,130,1,124,3,106,8,125,4,116,9,131, - 0,125,5,124,0,106,2,106,10,68,0,93,100,125,6,122, - 18,124,1,124,6,131,1,160,5,124,4,161,1,125,7,87, - 0,110,22,4,0,116,11,121,122,1,0,1,0,1,0,89, - 0,113,78,89,0,110,2,48,0,124,7,106,8,106,7,125, - 8,116,12,124,8,131,1,100,1,107,2,114,154,124,7,106, - 7,86,0,1,0,113,78,124,8,124,5,118,1,114,78,124, - 5,160,13,124,8,161,1,1,0,124,8,86,0,1,0,113, - 78,100,0,83,0,41,4,78,114,0,0,0,0,41,1,218, - 4,80,97,116,104,114,60,0,0,0,41,14,90,7,112,97, - 116,104,108,105,98,114,183,0,0,0,114,4,0,0,0,114, - 56,0,0,0,114,38,0,0,0,90,11,114,101,108,97,116, - 105,118,101,95,116,111,114,29,0,0,0,114,59,0,0,0, - 90,6,112,97,114,101,110,116,218,3,115,101,116,114,28,0, - 0,0,114,23,0,0,0,114,51,0,0,0,218,3,97,100, - 100,41,9,114,32,0,0,0,114,183,0,0,0,90,13,102, - 117,108,108,110,97,109,101,95,112,97,116,104,90,13,114,101, - 108,97,116,105,118,101,95,112,97,116,104,90,12,112,97,99, - 107,97,103,101,95,112,97,116,104,90,12,115,117,98,100,105, - 114,115,95,115,101,101,110,218,8,102,105,108,101,110,97,109, - 101,90,8,114,101,108,97,116,105,118,101,90,11,112,97,114, - 101,110,116,95,110,97,109,101,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,8,99,111,110,116,101,110,116, - 115,250,2,0,0,115,34,0,0,0,0,8,12,1,18,1, - 14,3,14,1,6,1,6,1,12,1,2,1,18,1,12,1, - 10,5,8,1,12,1,10,1,8,1,10,1,122,33,95,90, - 105,112,73,109,112,111,114,116,82,101,115,111,117,114,99,101, - 82,101,97,100,101,114,46,99,111,110,116,101,110,116,115,78, - 41,10,114,6,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,84,0,0,0,114,81,0,0,0,114,34,0,0,0, - 114,180,0,0,0,114,181,0,0,0,114,182,0,0,0,114, - 187,0,0,0,114,9,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,80,0,0,0,212,2,0, - 0,115,14,0,0,0,8,1,4,5,4,2,8,4,8,9, - 8,6,8,11,114,80,0,0,0,41,45,114,84,0,0,0, - 90,26,95,102,114,111,122,101,110,95,105,109,112,111,114,116, - 108,105,98,95,101,120,116,101,114,110,97,108,114,21,0,0, - 0,114,1,0,0,0,114,2,0,0,0,90,17,95,102,114, - 111,122,101,110,95,105,109,112,111,114,116,108,105,98,114,76, - 0,0,0,114,148,0,0,0,114,110,0,0,0,114,152,0, - 0,0,114,67,0,0,0,114,131,0,0,0,90,7,95,95, - 97,108,108,95,95,114,20,0,0,0,90,15,112,97,116,104, - 95,115,101,112,97,114,97,116,111,114,115,114,18,0,0,0, - 114,75,0,0,0,114,3,0,0,0,114,25,0,0,0,218, - 4,116,121,112,101,114,70,0,0,0,114,113,0,0,0,114, - 115,0,0,0,114,117,0,0,0,114,4,0,0,0,114,89, - 0,0,0,114,36,0,0,0,114,37,0,0,0,114,35,0, - 0,0,114,27,0,0,0,114,122,0,0,0,114,142,0,0, - 0,114,144,0,0,0,114,52,0,0,0,114,147,0,0,0, - 114,155,0,0,0,218,8,95,95,99,111,100,101,95,95,114, - 153,0,0,0,114,159,0,0,0,114,161,0,0,0,114,169, - 0,0,0,114,151,0,0,0,114,149,0,0,0,114,44,0, - 0,0,114,80,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,8,60,109,111, - 100,117,108,101,62,1,0,0,0,115,88,0,0,0,4,16, - 8,1,16,1,8,1,8,1,8,1,8,1,8,1,8,2, - 8,3,6,1,14,3,16,4,4,2,8,2,4,1,4,1, - 4,2,14,127,0,127,0,1,12,1,12,1,2,1,2,252, - 4,9,8,4,8,9,8,31,8,126,2,254,2,29,4,5, - 8,21,8,46,8,10,8,46,10,5,8,7,8,6,8,13, - 8,19,8,15,8,26, -}; +/* Auto-generated by Programs/_freeze_importlib.c */ +const unsigned char _Py_M__zipimport[] = { + 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,64,0,0,0,115,82,1,0,0,100,0, + 90,0,100,1,100,2,108,1,90,2,100,1,100,3,108,1, + 109,3,90,3,109,4,90,4,1,0,100,1,100,2,108,5, + 90,6,100,1,100,2,108,7,90,7,100,1,100,2,108,8, + 90,8,100,1,100,2,108,9,90,9,100,1,100,2,108,10, + 90,10,100,1,100,2,108,11,90,11,100,4,100,5,103,2, + 90,12,101,2,106,13,90,13,101,2,106,14,100,6,100,2, + 133,2,25,0,90,15,71,0,100,7,100,4,132,0,100,4, + 101,16,131,3,90,17,105,0,90,18,101,19,101,10,131,1, + 90,20,100,8,90,21,100,9,90,22,100,10,90,23,71,0, + 100,11,100,5,132,0,100,5,131,2,90,24,101,13,100,12, + 23,0,100,13,100,13,102,3,101,13,100,14,23,0,100,15, + 100,13,102,3,100,16,100,17,102,4,90,25,100,18,100,19, + 132,0,90,26,100,20,100,21,132,0,90,27,100,22,100,23, + 132,0,90,28,100,24,100,25,132,0,90,29,100,26,90,30, + 100,15,97,31,100,27,100,28,132,0,90,32,100,29,100,30, + 132,0,90,33,100,31,100,32,132,0,90,34,100,33,100,34, + 132,0,90,35,101,19,101,35,106,36,131,1,90,37,100,35, + 100,36,132,0,90,38,100,37,100,38,132,0,90,39,100,39, + 100,40,132,0,90,40,100,41,100,42,132,0,90,41,100,43, + 100,44,132,0,90,42,100,45,100,46,132,0,90,43,71,0, + 100,47,100,48,132,0,100,48,131,2,90,44,100,2,83,0, + 41,49,97,80,2,0,0,122,105,112,105,109,112,111,114,116, + 32,112,114,111,118,105,100,101,115,32,115,117,112,112,111,114, + 116,32,102,111,114,32,105,109,112,111,114,116,105,110,103,32, + 80,121,116,104,111,110,32,109,111,100,117,108,101,115,32,102, + 114,111,109,32,90,105,112,32,97,114,99,104,105,118,101,115, + 46,10,10,84,104,105,115,32,109,111,100,117,108,101,32,101, + 120,112,111,114,116,115,32,116,104,114,101,101,32,111,98,106, + 101,99,116,115,58,10,45,32,122,105,112,105,109,112,111,114, + 116,101,114,58,32,97,32,99,108,97,115,115,59,32,105,116, + 115,32,99,111,110,115,116,114,117,99,116,111,114,32,116,97, + 107,101,115,32,97,32,112,97,116,104,32,116,111,32,97,32, + 90,105,112,32,97,114,99,104,105,118,101,46,10,45,32,90, + 105,112,73,109,112,111,114,116,69,114,114,111,114,58,32,101, + 120,99,101,112,116,105,111,110,32,114,97,105,115,101,100,32, + 98,121,32,122,105,112,105,109,112,111,114,116,101,114,32,111, + 98,106,101,99,116,115,46,32,73,116,39,115,32,97,10,32, + 32,115,117,98,99,108,97,115,115,32,111,102,32,73,109,112, + 111,114,116,69,114,114,111,114,44,32,115,111,32,105,116,32, + 99,97,110,32,98,101,32,99,97,117,103,104,116,32,97,115, + 32,73,109,112,111,114,116,69,114,114,111,114,44,32,116,111, + 111,46,10,45,32,95,122,105,112,95,100,105,114,101,99,116, + 111,114,121,95,99,97,99,104,101,58,32,97,32,100,105,99, + 116,44,32,109,97,112,112,105,110,103,32,97,114,99,104,105, + 118,101,32,112,97,116,104,115,32,116,111,32,122,105,112,32, + 100,105,114,101,99,116,111,114,121,10,32,32,105,110,102,111, + 32,100,105,99,116,115,44,32,97,115,32,117,115,101,100,32, + 105,110,32,122,105,112,105,109,112,111,114,116,101,114,46,95, + 102,105,108,101,115,46,10,10,73,116,32,105,115,32,117,115, + 117,97,108,108,121,32,110,111,116,32,110,101,101,100,101,100, + 32,116,111,32,117,115,101,32,116,104,101,32,122,105,112,105, + 109,112,111,114,116,32,109,111,100,117,108,101,32,101,120,112, + 108,105,99,105,116,108,121,59,32,105,116,32,105,115,10,117, + 115,101,100,32,98,121,32,116,104,101,32,98,117,105,108,116, + 105,110,32,105,109,112,111,114,116,32,109,101,99,104,97,110, + 105,115,109,32,102,111,114,32,115,121,115,46,112,97,116,104, + 32,105,116,101,109,115,32,116,104,97,116,32,97,114,101,32, + 112,97,116,104,115,10,116,111,32,90,105,112,32,97,114,99, + 104,105,118,101,115,46,10,233,0,0,0,0,78,41,2,218, + 14,95,117,110,112,97,99,107,95,117,105,110,116,49,54,218, + 14,95,117,110,112,97,99,107,95,117,105,110,116,51,50,218, + 14,90,105,112,73,109,112,111,114,116,69,114,114,111,114,218, + 11,122,105,112,105,109,112,111,114,116,101,114,233,1,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,64,0,0,0,115,12,0,0,0,101, + 0,90,1,100,0,90,2,100,1,83,0,41,2,114,3,0, + 0,0,78,41,3,218,8,95,95,110,97,109,101,95,95,218, + 10,95,95,109,111,100,117,108,101,95,95,218,12,95,95,113, + 117,97,108,110,97,109,101,95,95,169,0,114,9,0,0,0, + 114,9,0,0,0,250,18,60,102,114,111,122,101,110,32,122, + 105,112,105,109,112,111,114,116,62,114,3,0,0,0,33,0, + 0,0,115,2,0,0,0,8,1,233,22,0,0,0,115,4, + 0,0,0,80,75,5,6,105,255,255,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,64,0,0,0,115,108,0,0,0,101,0,90,1,100,0, + 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,25, + 100,5,100,6,132,1,90,5,100,26,100,7,100,8,132,1, + 90,6,100,9,100,10,132,0,90,7,100,11,100,12,132,0, + 90,8,100,13,100,14,132,0,90,9,100,15,100,16,132,0, + 90,10,100,17,100,18,132,0,90,11,100,19,100,20,132,0, + 90,12,100,21,100,22,132,0,90,13,100,23,100,24,132,0, + 90,14,100,4,83,0,41,27,114,4,0,0,0,97,255,1, + 0,0,122,105,112,105,109,112,111,114,116,101,114,40,97,114, + 99,104,105,118,101,112,97,116,104,41,32,45,62,32,122,105, + 112,105,109,112,111,114,116,101,114,32,111,98,106,101,99,116, + 10,10,32,32,32,32,67,114,101,97,116,101,32,97,32,110, + 101,119,32,122,105,112,105,109,112,111,114,116,101,114,32,105, + 110,115,116,97,110,99,101,46,32,39,97,114,99,104,105,118, + 101,112,97,116,104,39,32,109,117,115,116,32,98,101,32,97, + 32,112,97,116,104,32,116,111,10,32,32,32,32,97,32,122, + 105,112,102,105,108,101,44,32,111,114,32,116,111,32,97,32, + 115,112,101,99,105,102,105,99,32,112,97,116,104,32,105,110, + 115,105,100,101,32,97,32,122,105,112,102,105,108,101,46,32, + 70,111,114,32,101,120,97,109,112,108,101,44,32,105,116,32, + 99,97,110,32,98,101,10,32,32,32,32,39,47,116,109,112, + 47,109,121,105,109,112,111,114,116,46,122,105,112,39,44,32, + 111,114,32,39,47,116,109,112,47,109,121,105,109,112,111,114, + 116,46,122,105,112,47,109,121,100,105,114,101,99,116,111,114, + 121,39,44,32,105,102,32,109,121,100,105,114,101,99,116,111, + 114,121,32,105,115,32,97,10,32,32,32,32,118,97,108,105, + 100,32,100,105,114,101,99,116,111,114,121,32,105,110,115,105, + 100,101,32,116,104,101,32,97,114,99,104,105,118,101,46,10, + 10,32,32,32,32,39,90,105,112,73,109,112,111,114,116,69, + 114,114,111,114,32,105,115,32,114,97,105,115,101,100,32,105, + 102,32,39,97,114,99,104,105,118,101,112,97,116,104,39,32, + 100,111,101,115,110,39,116,32,112,111,105,110,116,32,116,111, + 32,97,32,118,97,108,105,100,32,90,105,112,10,32,32,32, + 32,97,114,99,104,105,118,101,46,10,10,32,32,32,32,84, + 104,101,32,39,97,114,99,104,105,118,101,39,32,97,116,116, + 114,105,98,117,116,101,32,111,102,32,122,105,112,105,109,112, + 111,114,116,101,114,32,111,98,106,101,99,116,115,32,99,111, + 110,116,97,105,110,115,32,116,104,101,32,110,97,109,101,32, + 111,102,32,116,104,101,10,32,32,32,32,122,105,112,102,105, + 108,101,32,116,97,114,103,101,116,101,100,46,10,32,32,32, + 32,99,2,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,9,0,0,0,67,0,0,0,115,32,1,0,0,116, + 0,124,1,116,1,131,2,115,28,100,1,100,0,108,2,125, + 2,124,2,160,3,124,1,161,1,125,1,124,1,115,44,116, + 4,100,2,124,1,100,3,141,2,130,1,116,5,114,60,124, + 1,160,6,116,5,116,7,161,2,125,1,103,0,125,3,122, + 14,116,8,160,9,124,1,161,1,125,4,87,0,110,70,4, + 0,116,10,116,11,102,2,121,148,1,0,1,0,1,0,116, + 8,160,12,124,1,161,1,92,2,125,5,125,6,124,5,124, + 1,107,2,114,130,116,4,100,4,124,1,100,3,141,2,130, + 1,124,5,125,1,124,3,160,13,124,6,161,1,1,0,89, + 0,113,64,48,0,124,4,106,14,100,5,64,0,100,6,107, + 3,114,180,116,4,100,4,124,1,100,3,141,2,130,1,113, + 180,113,64,122,12,116,15,124,1,25,0,125,7,87,0,110, + 34,4,0,116,16,121,226,1,0,1,0,1,0,116,17,124, + 1,131,1,125,7,124,7,116,15,124,1,60,0,89,0,110, + 2,48,0,124,7,124,0,95,18,124,1,124,0,95,19,116, + 8,106,20,124,3,100,0,100,0,100,7,133,3,25,0,142, + 0,124,0,95,21,124,0,106,21,144,1,114,28,124,0,4, + 0,106,21,116,7,55,0,2,0,95,21,100,0,83,0,41, + 8,78,114,0,0,0,0,122,21,97,114,99,104,105,118,101, + 32,112,97,116,104,32,105,115,32,101,109,112,116,121,169,1, + 218,4,112,97,116,104,122,14,110,111,116,32,97,32,90,105, + 112,32,102,105,108,101,105,0,240,0,0,105,0,128,0,0, + 233,255,255,255,255,41,22,218,10,105,115,105,110,115,116,97, + 110,99,101,218,3,115,116,114,218,2,111,115,90,8,102,115, + 100,101,99,111,100,101,114,3,0,0,0,218,12,97,108,116, + 95,112,97,116,104,95,115,101,112,218,7,114,101,112,108,97, + 99,101,218,8,112,97,116,104,95,115,101,112,218,19,95,98, + 111,111,116,115,116,114,97,112,95,101,120,116,101,114,110,97, + 108,90,10,95,112,97,116,104,95,115,116,97,116,218,7,79, + 83,69,114,114,111,114,218,10,86,97,108,117,101,69,114,114, + 111,114,90,11,95,112,97,116,104,95,115,112,108,105,116,218, + 6,97,112,112,101,110,100,90,7,115,116,95,109,111,100,101, + 218,20,95,122,105,112,95,100,105,114,101,99,116,111,114,121, + 95,99,97,99,104,101,218,8,75,101,121,69,114,114,111,114, + 218,15,95,114,101,97,100,95,100,105,114,101,99,116,111,114, + 121,218,6,95,102,105,108,101,115,218,7,97,114,99,104,105, + 118,101,218,10,95,112,97,116,104,95,106,111,105,110,218,6, + 112,114,101,102,105,120,41,8,218,4,115,101,108,102,114,13, + 0,0,0,114,17,0,0,0,114,31,0,0,0,90,2,115, + 116,90,7,100,105,114,110,97,109,101,90,8,98,97,115,101, + 110,97,109,101,218,5,102,105,108,101,115,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,8,95,95,105,110, + 105,116,95,95,63,0,0,0,115,58,0,0,0,0,1,10, + 1,8,1,10,1,4,1,12,1,4,1,12,2,4,2,2, + 1,14,1,16,3,14,1,8,1,12,1,4,1,16,3,14, + 2,12,1,4,2,2,1,12,1,12,1,8,1,14,1,6, + 1,6,2,22,1,8,1,122,20,122,105,112,105,109,112,111, + 114,116,101,114,46,95,95,105,110,105,116,95,95,78,99,3, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,4, + 0,0,0,67,0,0,0,115,78,0,0,0,116,0,124,0, + 124,1,131,2,125,3,124,3,100,1,117,1,114,26,124,0, + 103,0,102,2,83,0,116,1,124,0,124,1,131,2,125,4, + 116,2,124,0,124,4,131,2,114,70,100,1,124,0,106,3, + 155,0,116,4,155,0,124,4,155,0,157,3,103,1,102,2, + 83,0,100,1,103,0,102,2,83,0,41,2,97,239,1,0, + 0,102,105,110,100,95,108,111,97,100,101,114,40,102,117,108, + 108,110,97,109,101,44,32,112,97,116,104,61,78,111,110,101, + 41,32,45,62,32,115,101,108,102,44,32,115,116,114,32,111, + 114,32,78,111,110,101,46,10,10,32,32,32,32,32,32,32, + 32,83,101,97,114,99,104,32,102,111,114,32,97,32,109,111, + 100,117,108,101,32,115,112,101,99,105,102,105,101,100,32,98, + 121,32,39,102,117,108,108,110,97,109,101,39,46,32,39,102, + 117,108,108,110,97,109,101,39,32,109,117,115,116,32,98,101, + 32,116,104,101,10,32,32,32,32,32,32,32,32,102,117,108, + 108,121,32,113,117,97,108,105,102,105,101,100,32,40,100,111, + 116,116,101,100,41,32,109,111,100,117,108,101,32,110,97,109, + 101,46,32,73,116,32,114,101,116,117,114,110,115,32,116,104, + 101,32,122,105,112,105,109,112,111,114,116,101,114,10,32,32, + 32,32,32,32,32,32,105,110,115,116,97,110,99,101,32,105, + 116,115,101,108,102,32,105,102,32,116,104,101,32,109,111,100, + 117,108,101,32,119,97,115,32,102,111,117,110,100,44,32,97, + 32,115,116,114,105,110,103,32,99,111,110,116,97,105,110,105, + 110,103,32,116,104,101,10,32,32,32,32,32,32,32,32,102, + 117,108,108,32,112,97,116,104,32,110,97,109,101,32,105,102, + 32,105,116,39,115,32,112,111,115,115,105,98,108,121,32,97, + 32,112,111,114,116,105,111,110,32,111,102,32,97,32,110,97, + 109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,44, + 10,32,32,32,32,32,32,32,32,111,114,32,78,111,110,101, + 32,111,116,104,101,114,119,105,115,101,46,32,84,104,101,32, + 111,112,116,105,111,110,97,108,32,39,112,97,116,104,39,32, + 97,114,103,117,109,101,110,116,32,105,115,32,105,103,110,111, + 114,101,100,32,45,45,32,105,116,39,115,10,32,32,32,32, + 32,32,32,32,116,104,101,114,101,32,102,111,114,32,99,111, + 109,112,97,116,105,98,105,108,105,116,121,32,119,105,116,104, + 32,116,104,101,32,105,109,112,111,114,116,101,114,32,112,114, + 111,116,111,99,111,108,46,10,32,32,32,32,32,32,32,32, + 78,41,5,218,16,95,103,101,116,95,109,111,100,117,108,101, + 95,105,110,102,111,218,16,95,103,101,116,95,109,111,100,117, + 108,101,95,112,97,116,104,218,7,95,105,115,95,100,105,114, + 114,29,0,0,0,114,20,0,0,0,41,5,114,32,0,0, + 0,218,8,102,117,108,108,110,97,109,101,114,13,0,0,0, + 218,2,109,105,218,7,109,111,100,112,97,116,104,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,218,11,102,105, + 110,100,95,108,111,97,100,101,114,109,0,0,0,115,14,0, + 0,0,0,10,10,1,8,2,8,7,10,1,10,4,24,2, + 122,23,122,105,112,105,109,112,111,114,116,101,114,46,102,105, + 110,100,95,108,111,97,100,101,114,99,3,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,0, + 0,0,115,16,0,0,0,124,0,160,0,124,1,124,2,161, + 2,100,1,25,0,83,0,41,2,97,139,1,0,0,102,105, + 110,100,95,109,111,100,117,108,101,40,102,117,108,108,110,97, + 109,101,44,32,112,97,116,104,61,78,111,110,101,41,32,45, + 62,32,115,101,108,102,32,111,114,32,78,111,110,101,46,10, + 10,32,32,32,32,32,32,32,32,83,101,97,114,99,104,32, + 102,111,114,32,97,32,109,111,100,117,108,101,32,115,112,101, + 99,105,102,105,101,100,32,98,121,32,39,102,117,108,108,110, + 97,109,101,39,46,32,39,102,117,108,108,110,97,109,101,39, + 32,109,117,115,116,32,98,101,32,116,104,101,10,32,32,32, + 32,32,32,32,32,102,117,108,108,121,32,113,117,97,108,105, + 102,105,101,100,32,40,100,111,116,116,101,100,41,32,109,111, + 100,117,108,101,32,110,97,109,101,46,32,73,116,32,114,101, + 116,117,114,110,115,32,116,104,101,32,122,105,112,105,109,112, + 111,114,116,101,114,10,32,32,32,32,32,32,32,32,105,110, + 115,116,97,110,99,101,32,105,116,115,101,108,102,32,105,102, + 32,116,104,101,32,109,111,100,117,108,101,32,119,97,115,32, + 102,111,117,110,100,44,32,111,114,32,78,111,110,101,32,105, + 102,32,105,116,32,119,97,115,110,39,116,46,10,32,32,32, + 32,32,32,32,32,84,104,101,32,111,112,116,105,111,110,97, + 108,32,39,112,97,116,104,39,32,97,114,103,117,109,101,110, + 116,32,105,115,32,105,103,110,111,114,101,100,32,45,45,32, + 105,116,39,115,32,116,104,101,114,101,32,102,111,114,32,99, + 111,109,112,97,116,105,98,105,108,105,116,121,10,32,32,32, + 32,32,32,32,32,119,105,116,104,32,116,104,101,32,105,109, + 112,111,114,116,101,114,32,112,114,111,116,111,99,111,108,46, + 10,32,32,32,32,32,32,32,32,114,0,0,0,0,41,1, + 114,41,0,0,0,41,3,114,32,0,0,0,114,38,0,0, + 0,114,13,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,11,102,105,110,100,95,109,111,100,117, + 108,101,141,0,0,0,115,2,0,0,0,0,9,122,23,122, + 105,112,105,109,112,111,114,116,101,114,46,102,105,110,100,95, + 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,3,0,0,0,67,0,0,0,115, + 20,0,0,0,116,0,124,0,124,1,131,2,92,3,125,2, + 125,3,125,4,124,2,83,0,41,1,122,163,103,101,116,95, + 99,111,100,101,40,102,117,108,108,110,97,109,101,41,32,45, + 62,32,99,111,100,101,32,111,98,106,101,99,116,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, + 104,101,32,99,111,100,101,32,111,98,106,101,99,116,32,102, + 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, + 32,109,111,100,117,108,101,46,32,82,97,105,115,101,32,90, + 105,112,73,109,112,111,114,116,69,114,114,111,114,10,32,32, + 32,32,32,32,32,32,105,102,32,116,104,101,32,109,111,100, + 117,108,101,32,99,111,117,108,100,110,39,116,32,98,101,32, + 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,169, + 1,218,16,95,103,101,116,95,109,111,100,117,108,101,95,99, + 111,100,101,169,5,114,32,0,0,0,114,38,0,0,0,218, + 4,99,111,100,101,218,9,105,115,112,97,99,107,97,103,101, + 114,40,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,218,8,103,101,116,95,99,111,100,101,153,0, + 0,0,115,4,0,0,0,0,6,16,1,122,20,122,105,112, + 105,109,112,111,114,116,101,114,46,103,101,116,95,99,111,100, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,8,0,0,0,67,0,0,0,115,116,0,0,0,116, + 0,114,16,124,1,160,1,116,0,116,2,161,2,125,1,124, + 1,125,2,124,1,160,3,124,0,106,4,116,2,23,0,161, + 1,114,58,124,1,116,5,124,0,106,4,116,2,23,0,131, + 1,100,1,133,2,25,0,125,2,122,14,124,0,106,6,124, + 2,25,0,125,3,87,0,110,30,4,0,116,7,121,102,1, + 0,1,0,1,0,116,8,100,2,100,3,124,2,131,3,130, + 1,89,0,110,2,48,0,116,9,124,0,106,4,124,3,131, + 2,83,0,41,4,122,154,103,101,116,95,100,97,116,97,40, + 112,97,116,104,110,97,109,101,41,32,45,62,32,115,116,114, + 105,110,103,32,119,105,116,104,32,102,105,108,101,32,100,97, + 116,97,46,10,10,32,32,32,32,32,32,32,32,82,101,116, + 117,114,110,32,116,104,101,32,100,97,116,97,32,97,115,115, + 111,99,105,97,116,101,100,32,119,105,116,104,32,39,112,97, + 116,104,110,97,109,101,39,46,32,82,97,105,115,101,32,79, + 83,69,114,114,111,114,32,105,102,10,32,32,32,32,32,32, + 32,32,116,104,101,32,102,105,108,101,32,119,97,115,110,39, + 116,32,102,111,117,110,100,46,10,32,32,32,32,32,32,32, + 32,78,114,0,0,0,0,218,0,41,10,114,18,0,0,0, + 114,19,0,0,0,114,20,0,0,0,218,10,115,116,97,114, + 116,115,119,105,116,104,114,29,0,0,0,218,3,108,101,110, + 114,28,0,0,0,114,26,0,0,0,114,22,0,0,0,218, + 9,95,103,101,116,95,100,97,116,97,41,4,114,32,0,0, + 0,218,8,112,97,116,104,110,97,109,101,90,3,107,101,121, + 218,9,116,111,99,95,101,110,116,114,121,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,8,103,101,116,95, + 100,97,116,97,163,0,0,0,115,20,0,0,0,0,6,4, + 1,12,2,4,1,16,1,22,2,2,1,14,1,12,1,18, + 1,122,20,122,105,112,105,109,112,111,114,116,101,114,46,103, + 101,116,95,100,97,116,97,99,2,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,3,0,0,0,67,0,0,0, + 115,20,0,0,0,116,0,124,0,124,1,131,2,92,3,125, + 2,125,3,125,4,124,4,83,0,41,1,122,106,103,101,116, + 95,102,105,108,101,110,97,109,101,40,102,117,108,108,110,97, + 109,101,41,32,45,62,32,102,105,108,101,110,97,109,101,32, + 115,116,114,105,110,103,46,10,10,32,32,32,32,32,32,32, + 32,82,101,116,117,114,110,32,116,104,101,32,102,105,108,101, + 110,97,109,101,32,102,111,114,32,116,104,101,32,115,112,101, + 99,105,102,105,101,100,32,109,111,100,117,108,101,46,10,32, + 32,32,32,32,32,32,32,114,43,0,0,0,114,45,0,0, + 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 218,12,103,101,116,95,102,105,108,101,110,97,109,101,184,0, + 0,0,115,4,0,0,0,0,7,16,1,122,24,122,105,112, + 105,109,112,111,114,116,101,114,46,103,101,116,95,102,105,108, + 101,110,97,109,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,126, + 0,0,0,116,0,124,0,124,1,131,2,125,2,124,2,100, + 1,117,0,114,36,116,1,100,2,124,1,155,2,157,2,124, + 1,100,3,141,2,130,1,116,2,124,0,124,1,131,2,125, + 3,124,2,114,64,116,3,160,4,124,3,100,4,161,2,125, + 4,110,10,124,3,155,0,100,5,157,2,125,4,122,14,124, + 0,106,5,124,4,25,0,125,5,87,0,110,20,4,0,116, + 6,121,108,1,0,1,0,1,0,89,0,100,1,83,0,48, + 0,116,7,124,0,106,8,124,5,131,2,160,9,161,0,83, + 0,41,6,122,253,103,101,116,95,115,111,117,114,99,101,40, + 102,117,108,108,110,97,109,101,41,32,45,62,32,115,111,117, + 114,99,101,32,115,116,114,105,110,103,46,10,10,32,32,32, + 32,32,32,32,32,82,101,116,117,114,110,32,116,104,101,32, + 115,111,117,114,99,101,32,99,111,100,101,32,102,111,114,32, + 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,117,108,101,46,32,82,97,105,115,101,32,90,105,112,73, + 109,112,111,114,116,69,114,114,111,114,10,32,32,32,32,32, + 32,32,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,99,111,117,108,100,110,39,116,32,98,101,32,102,111,117, + 110,100,44,32,114,101,116,117,114,110,32,78,111,110,101,32, + 105,102,32,116,104,101,32,97,114,99,104,105,118,101,32,100, + 111,101,115,10,32,32,32,32,32,32,32,32,99,111,110,116, + 97,105,110,32,116,104,101,32,109,111,100,117,108,101,44,32, + 98,117,116,32,104,97,115,32,110,111,32,115,111,117,114,99, + 101,32,102,111,114,32,105,116,46,10,32,32,32,32,32,32, + 32,32,78,250,18,99,97,110,39,116,32,102,105,110,100,32, + 109,111,100,117,108,101,32,169,1,218,4,110,97,109,101,250, + 11,95,95,105,110,105,116,95,95,46,112,121,250,3,46,112, + 121,41,10,114,35,0,0,0,114,3,0,0,0,114,36,0, + 0,0,114,21,0,0,0,114,30,0,0,0,114,28,0,0, + 0,114,26,0,0,0,114,52,0,0,0,114,29,0,0,0, + 218,6,100,101,99,111,100,101,41,6,114,32,0,0,0,114, + 38,0,0,0,114,39,0,0,0,114,13,0,0,0,218,8, + 102,117,108,108,112,97,116,104,114,54,0,0,0,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,218,10,103,101, + 116,95,115,111,117,114,99,101,195,0,0,0,115,24,0,0, + 0,0,7,10,1,8,1,18,2,10,1,4,1,14,2,10, + 2,2,1,14,1,12,2,8,1,122,22,122,105,112,105,109, + 112,111,114,116,101,114,46,103,101,116,95,115,111,117,114,99, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,4,0,0,0,67,0,0,0,115,40,0,0,0,116, + 0,124,0,124,1,131,2,125,2,124,2,100,1,117,0,114, + 36,116,1,100,2,124,1,155,2,157,2,124,1,100,3,141, + 2,130,1,124,2,83,0,41,4,122,171,105,115,95,112,97, + 99,107,97,103,101,40,102,117,108,108,110,97,109,101,41,32, + 45,62,32,98,111,111,108,46,10,10,32,32,32,32,32,32, + 32,32,82,101,116,117,114,110,32,84,114,117,101,32,105,102, + 32,116,104,101,32,109,111,100,117,108,101,32,115,112,101,99, + 105,102,105,101,100,32,98,121,32,102,117,108,108,110,97,109, + 101,32,105,115,32,97,32,112,97,99,107,97,103,101,46,10, + 32,32,32,32,32,32,32,32,82,97,105,115,101,32,90,105, + 112,73,109,112,111,114,116,69,114,114,111,114,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,99,111,117,108,100, + 110,39,116,32,98,101,32,102,111,117,110,100,46,10,32,32, + 32,32,32,32,32,32,78,114,57,0,0,0,114,58,0,0, + 0,41,2,114,35,0,0,0,114,3,0,0,0,41,3,114, + 32,0,0,0,114,38,0,0,0,114,39,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,10,105, + 115,95,112,97,99,107,97,103,101,221,0,0,0,115,8,0, + 0,0,0,6,10,1,8,1,18,1,122,22,122,105,112,105, + 109,112,111,114,116,101,114,46,105,115,95,112,97,99,107,97, + 103,101,99,2,0,0,0,0,0,0,0,0,0,0,0,8, + 0,0,0,8,0,0,0,67,0,0,0,115,246,0,0,0, + 116,0,124,0,124,1,131,2,92,3,125,2,125,3,125,4, + 116,1,106,2,160,3,124,1,161,1,125,5,124,5,100,1, + 117,0,115,46,116,4,124,5,116,5,131,2,115,64,116,5, + 124,1,131,1,125,5,124,5,116,1,106,2,124,1,60,0, + 124,0,124,5,95,6,122,84,124,3,114,108,116,7,124,0, + 124,1,131,2,125,6,116,8,160,9,124,0,106,10,124,6, + 161,2,125,7,124,7,103,1,124,5,95,11,116,12,124,5, + 100,2,131,2,115,124,116,13,124,5,95,13,116,8,160,14, + 124,5,106,15,124,1,124,4,161,3,1,0,116,16,124,2, + 124,5,106,15,131,2,1,0,87,0,110,22,1,0,1,0, + 1,0,116,1,106,2,124,1,61,0,130,0,89,0,110,2, + 48,0,122,14,116,1,106,2,124,1,25,0,125,5,87,0, + 110,34,4,0,116,17,121,226,1,0,1,0,1,0,116,18, + 100,3,124,1,155,2,100,4,157,3,131,1,130,1,89,0, + 110,2,48,0,116,19,160,20,100,5,124,1,124,4,161,3, + 1,0,124,5,83,0,41,6,122,245,108,111,97,100,95,109, + 111,100,117,108,101,40,102,117,108,108,110,97,109,101,41,32, + 45,62,32,109,111,100,117,108,101,46,10,10,32,32,32,32, + 32,32,32,32,76,111,97,100,32,116,104,101,32,109,111,100, + 117,108,101,32,115,112,101,99,105,102,105,101,100,32,98,121, + 32,39,102,117,108,108,110,97,109,101,39,46,32,39,102,117, + 108,108,110,97,109,101,39,32,109,117,115,116,32,98,101,32, + 116,104,101,10,32,32,32,32,32,32,32,32,102,117,108,108, + 121,32,113,117,97,108,105,102,105,101,100,32,40,100,111,116, + 116,101,100,41,32,109,111,100,117,108,101,32,110,97,109,101, + 46,32,73,116,32,114,101,116,117,114,110,115,32,116,104,101, + 32,105,109,112,111,114,116,101,100,10,32,32,32,32,32,32, + 32,32,109,111,100,117,108,101,44,32,111,114,32,114,97,105, + 115,101,115,32,90,105,112,73,109,112,111,114,116,69,114,114, + 111,114,32,105,102,32,105,116,32,119,97,115,110,39,116,32, + 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,78, + 218,12,95,95,98,117,105,108,116,105,110,115,95,95,122,14, + 76,111,97,100,101,100,32,109,111,100,117,108,101,32,122,25, + 32,110,111,116,32,102,111,117,110,100,32,105,110,32,115,121, + 115,46,109,111,100,117,108,101,115,122,30,105,109,112,111,114, + 116,32,123,125,32,35,32,108,111,97,100,101,100,32,102,114, + 111,109,32,90,105,112,32,123,125,41,21,114,44,0,0,0, + 218,3,115,121,115,218,7,109,111,100,117,108,101,115,218,3, + 103,101,116,114,15,0,0,0,218,12,95,109,111,100,117,108, + 101,95,116,121,112,101,218,10,95,95,108,111,97,100,101,114, + 95,95,114,36,0,0,0,114,21,0,0,0,114,30,0,0, + 0,114,29,0,0,0,90,8,95,95,112,97,116,104,95,95, + 218,7,104,97,115,97,116,116,114,114,66,0,0,0,90,14, + 95,102,105,120,95,117,112,95,109,111,100,117,108,101,218,8, + 95,95,100,105,99,116,95,95,218,4,101,120,101,99,114,26, + 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114, + 218,10,95,98,111,111,116,115,116,114,97,112,218,16,95,118, + 101,114,98,111,115,101,95,109,101,115,115,97,103,101,41,8, + 114,32,0,0,0,114,38,0,0,0,114,46,0,0,0,114, + 47,0,0,0,114,40,0,0,0,90,3,109,111,100,114,13, + 0,0,0,114,63,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,11,108,111,97,100,95,109,111, + 100,117,108,101,234,0,0,0,115,48,0,0,0,0,7,16, + 1,12,1,18,1,8,1,10,1,6,2,2,1,4,3,10, + 1,14,1,8,2,10,1,6,1,16,1,16,1,6,1,8, + 1,8,2,2,1,14,1,12,1,22,1,14,1,122,23,122, + 105,112,105,109,112,111,114,116,101,114,46,108,111,97,100,95, + 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, + 86,0,0,0,122,20,124,0,160,0,124,1,161,1,115,18, + 87,0,100,1,83,0,87,0,110,20,4,0,116,1,121,40, + 1,0,1,0,1,0,89,0,100,1,83,0,48,0,116,2, + 106,3,115,76,100,2,100,3,108,4,109,5,125,2,1,0, + 124,2,160,6,116,2,161,1,1,0,100,4,116,2,95,3, + 116,2,124,0,124,1,131,2,83,0,41,5,122,204,82,101, + 116,117,114,110,32,116,104,101,32,82,101,115,111,117,114,99, + 101,82,101,97,100,101,114,32,102,111,114,32,97,32,112,97, + 99,107,97,103,101,32,105,110,32,97,32,122,105,112,32,102, + 105,108,101,46,10,10,32,32,32,32,32,32,32,32,73,102, + 32,39,102,117,108,108,110,97,109,101,39,32,105,115,32,97, + 32,112,97,99,107,97,103,101,32,119,105,116,104,105,110,32, + 116,104,101,32,122,105,112,32,102,105,108,101,44,32,114,101, + 116,117,114,110,32,116,104,101,10,32,32,32,32,32,32,32, + 32,39,82,101,115,111,117,114,99,101,82,101,97,100,101,114, + 39,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, + 32,112,97,99,107,97,103,101,46,32,32,79,116,104,101,114, + 119,105,115,101,32,114,101,116,117,114,110,32,78,111,110,101, + 46,10,32,32,32,32,32,32,32,32,78,114,0,0,0,0, + 41,1,218,14,82,101,115,111,117,114,99,101,82,101,97,100, + 101,114,84,41,7,114,65,0,0,0,114,3,0,0,0,218, + 24,95,90,105,112,73,109,112,111,114,116,82,101,115,111,117, + 114,99,101,82,101,97,100,101,114,218,11,95,114,101,103,105, + 115,116,101,114,101,100,90,13,105,109,112,111,114,116,108,105, + 98,46,97,98,99,114,79,0,0,0,90,8,114,101,103,105, + 115,116,101,114,41,3,114,32,0,0,0,114,38,0,0,0, + 114,79,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 10,0,0,0,218,19,103,101,116,95,114,101,115,111,117,114, + 99,101,95,114,101,97,100,101,114,16,1,0,0,115,20,0, + 0,0,0,6,2,1,10,1,10,1,12,1,8,1,6,1, + 12,1,10,1,6,1,122,31,122,105,112,105,109,112,111,114, + 116,101,114,46,103,101,116,95,114,101,115,111,117,114,99,101, + 95,114,101,97,100,101,114,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,5,0,0,0,67,0,0,0, + 115,24,0,0,0,100,1,124,0,106,0,155,0,116,1,155, + 0,124,0,106,2,155,0,100,2,157,5,83,0,41,3,78, + 122,21,60,122,105,112,105,109,112,111,114,116,101,114,32,111, + 98,106,101,99,116,32,34,122,2,34,62,41,3,114,29,0, + 0,0,114,20,0,0,0,114,31,0,0,0,41,1,114,32, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,8,95,95,114,101,112,114,95,95,34,1,0,0, + 115,2,0,0,0,0,1,122,20,122,105,112,105,109,112,111, + 114,116,101,114,46,95,95,114,101,112,114,95,95,41,1,78, + 41,1,78,41,15,114,6,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,7,95,95,100,111,99,95,95,114,34,0, + 0,0,114,41,0,0,0,114,42,0,0,0,114,48,0,0, + 0,114,55,0,0,0,114,56,0,0,0,114,64,0,0,0, + 114,65,0,0,0,114,78,0,0,0,114,82,0,0,0,114, + 83,0,0,0,114,9,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,4,0,0,0,45,0,0, + 0,115,24,0,0,0,8,1,4,17,8,46,10,32,10,12, + 8,10,8,21,8,11,8,26,8,13,8,38,8,18,122,12, + 95,95,105,110,105,116,95,95,46,112,121,99,84,114,60,0, + 0,0,70,41,3,122,4,46,112,121,99,84,70,41,3,114, + 61,0,0,0,70,70,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, + 20,0,0,0,124,0,106,0,124,1,160,1,100,1,161,1, + 100,2,25,0,23,0,83,0,41,3,78,218,1,46,233,2, + 0,0,0,41,2,114,31,0,0,0,218,10,114,112,97,114, + 116,105,116,105,111,110,41,2,114,32,0,0,0,114,38,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,36,0,0,0,52,1,0,0,115,2,0,0,0,0, + 1,114,36,0,0,0,99,2,0,0,0,0,0,0,0,0, + 0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115, + 18,0,0,0,124,1,116,0,23,0,125,2,124,2,124,0, + 106,1,118,0,83,0,169,1,78,41,2,114,20,0,0,0, + 114,28,0,0,0,41,3,114,32,0,0,0,114,13,0,0, + 0,90,7,100,105,114,112,97,116,104,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,114,37,0,0,0,56,1, + 0,0,115,4,0,0,0,0,4,8,2,114,37,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,7,0,0, + 0,4,0,0,0,67,0,0,0,115,56,0,0,0,116,0, + 124,0,124,1,131,2,125,2,116,1,68,0,93,36,92,3, + 125,3,125,4,125,5,124,2,124,3,23,0,125,6,124,6, + 124,0,106,2,118,0,114,14,124,5,2,0,1,0,83,0, + 113,14,100,0,83,0,114,88,0,0,0,41,3,114,36,0, + 0,0,218,16,95,122,105,112,95,115,101,97,114,99,104,111, + 114,100,101,114,114,28,0,0,0,41,7,114,32,0,0,0, + 114,38,0,0,0,114,13,0,0,0,218,6,115,117,102,102, + 105,120,218,10,105,115,98,121,116,101,99,111,100,101,114,47, + 0,0,0,114,63,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,114,35,0,0,0,65,1,0,0, + 115,12,0,0,0,0,1,10,1,14,1,8,1,10,1,10, + 1,114,35,0,0,0,99,1,0,0,0,0,0,0,0,0, + 0,0,0,26,0,0,0,9,0,0,0,67,0,0,0,115, + 2,5,0,0,122,14,116,0,160,1,124,0,161,1,125,1, + 87,0,110,36,4,0,116,2,121,50,1,0,1,0,1,0, + 116,3,100,1,124,0,155,2,157,2,124,0,100,2,141,2, + 130,1,89,0,110,2,48,0,124,1,144,4,143,164,1,0, + 122,36,124,1,160,4,116,5,11,0,100,3,161,2,1,0, + 124,1,160,6,161,0,125,2,124,1,160,7,116,5,161,1, + 125,3,87,0,110,36,4,0,116,2,121,132,1,0,1,0, + 1,0,116,3,100,4,124,0,155,2,157,2,124,0,100,2, + 141,2,130,1,89,0,110,2,48,0,116,8,124,3,131,1, + 116,5,107,3,114,164,116,3,100,4,124,0,155,2,157,2, + 124,0,100,2,141,2,130,1,124,3,100,0,100,5,133,2, + 25,0,116,9,107,3,144,1,114,170,122,24,124,1,160,4, + 100,6,100,3,161,2,1,0,124,1,160,6,161,0,125,4, + 87,0,110,36,4,0,116,2,121,242,1,0,1,0,1,0, + 116,3,100,4,124,0,155,2,157,2,124,0,100,2,141,2, + 130,1,89,0,110,2,48,0,116,10,124,4,116,11,24,0, + 116,5,24,0,100,6,131,2,125,5,122,22,124,1,160,4, + 124,5,161,1,1,0,124,1,160,7,161,0,125,6,87,0, + 110,38,4,0,116,2,144,1,121,66,1,0,1,0,1,0, + 116,3,100,4,124,0,155,2,157,2,124,0,100,2,141,2, + 130,1,89,0,110,2,48,0,124,6,160,12,116,9,161,1, + 125,7,124,7,100,6,107,0,144,1,114,106,116,3,100,7, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,124,6, + 124,7,124,7,116,5,23,0,133,2,25,0,125,3,116,8, + 124,3,131,1,116,5,107,3,144,1,114,154,116,3,100,8, + 124,0,155,2,157,2,124,0,100,2,141,2,130,1,124,4, + 116,8,124,6,131,1,24,0,124,7,23,0,125,2,116,13, + 124,3,100,9,100,10,133,2,25,0,131,1,125,8,116,13, + 124,3,100,10,100,11,133,2,25,0,131,1,125,9,124,2, + 124,8,107,0,144,1,114,230,116,3,100,12,124,0,155,2, + 157,2,124,0,100,2,141,2,130,1,124,2,124,9,107,0, + 144,2,114,2,116,3,100,13,124,0,155,2,157,2,124,0, + 100,2,141,2,130,1,124,2,124,8,56,0,125,2,124,2, + 124,9,24,0,125,10,124,10,100,6,107,0,144,2,114,46, + 116,3,100,14,124,0,155,2,157,2,124,0,100,2,141,2, + 130,1,105,0,125,11,100,6,125,12,122,14,124,1,160,4, + 124,2,161,1,1,0,87,0,110,38,4,0,116,2,144,2, + 121,106,1,0,1,0,1,0,116,3,100,4,124,0,155,2, + 157,2,124,0,100,2,141,2,130,1,89,0,110,2,48,0, + 124,1,160,7,100,15,161,1,125,3,116,8,124,3,131,1, + 100,5,107,0,144,2,114,140,116,14,100,16,131,1,130,1, + 124,3,100,0,100,5,133,2,25,0,100,17,107,3,144,2, + 114,162,144,4,113,208,116,8,124,3,131,1,100,15,107,3, + 144,2,114,184,116,14,100,16,131,1,130,1,116,15,124,3, + 100,18,100,19,133,2,25,0,131,1,125,13,116,15,124,3, + 100,19,100,9,133,2,25,0,131,1,125,14,116,15,124,3, + 100,9,100,20,133,2,25,0,131,1,125,15,116,15,124,3, + 100,20,100,10,133,2,25,0,131,1,125,16,116,13,124,3, + 100,10,100,11,133,2,25,0,131,1,125,17,116,13,124,3, + 100,11,100,21,133,2,25,0,131,1,125,18,116,13,124,3, + 100,21,100,22,133,2,25,0,131,1,125,4,116,15,124,3, + 100,22,100,23,133,2,25,0,131,1,125,19,116,15,124,3, + 100,23,100,24,133,2,25,0,131,1,125,20,116,15,124,3, + 100,24,100,25,133,2,25,0,131,1,125,21,116,13,124,3, + 100,26,100,15,133,2,25,0,131,1,125,22,124,19,124,20, + 23,0,124,21,23,0,125,8,124,22,124,9,107,4,144,3, + 114,144,116,3,100,27,124,0,155,2,157,2,124,0,100,2, + 141,2,130,1,124,22,124,10,55,0,125,22,122,14,124,1, + 160,7,124,19,161,1,125,23,87,0,110,38,4,0,116,2, + 144,3,121,204,1,0,1,0,1,0,116,3,100,4,124,0, + 155,2,157,2,124,0,100,2,141,2,130,1,89,0,110,2, + 48,0,116,8,124,23,131,1,124,19,107,3,144,3,114,238, + 116,3,100,4,124,0,155,2,157,2,124,0,100,2,141,2, + 130,1,122,50,116,8,124,1,160,7,124,8,124,19,24,0, + 161,1,131,1,124,8,124,19,24,0,107,3,144,4,114,30, + 116,3,100,4,124,0,155,2,157,2,124,0,100,2,141,2, + 130,1,87,0,110,38,4,0,116,2,144,4,121,70,1,0, + 1,0,1,0,116,3,100,4,124,0,155,2,157,2,124,0, + 100,2,141,2,130,1,89,0,110,2,48,0,124,13,100,28, + 64,0,144,4,114,92,124,23,160,16,161,0,125,23,110,52, + 122,14,124,23,160,16,100,29,161,1,125,23,87,0,110,36, + 4,0,116,17,144,4,121,142,1,0,1,0,1,0,124,23, + 160,16,100,30,161,1,160,18,116,19,161,1,125,23,89,0, + 110,2,48,0,124,23,160,20,100,31,116,21,161,2,125,23, + 116,22,160,23,124,0,124,23,161,2,125,24,124,24,124,14, + 124,18,124,4,124,22,124,15,124,16,124,17,102,8,125,25, + 124,25,124,11,124,23,60,0,124,12,100,32,55,0,125,12, + 144,2,113,108,87,0,100,0,4,0,4,0,131,3,1,0, + 110,18,49,0,144,4,115,230,48,0,1,0,1,0,1,0, + 89,0,1,0,116,24,160,25,100,33,124,12,124,0,161,3, + 1,0,124,11,83,0,41,34,78,122,21,99,97,110,39,116, + 32,111,112,101,110,32,90,105,112,32,102,105,108,101,58,32, + 114,12,0,0,0,114,86,0,0,0,250,21,99,97,110,39, + 116,32,114,101,97,100,32,90,105,112,32,102,105,108,101,58, + 32,233,4,0,0,0,114,0,0,0,0,122,16,110,111,116, + 32,97,32,90,105,112,32,102,105,108,101,58,32,122,18,99, + 111,114,114,117,112,116,32,90,105,112,32,102,105,108,101,58, + 32,233,12,0,0,0,233,16,0,0,0,233,20,0,0,0, + 122,28,98,97,100,32,99,101,110,116,114,97,108,32,100,105, + 114,101,99,116,111,114,121,32,115,105,122,101,58,32,122,30, + 98,97,100,32,99,101,110,116,114,97,108,32,100,105,114,101, + 99,116,111,114,121,32,111,102,102,115,101,116,58,32,122,38, + 98,97,100,32,99,101,110,116,114,97,108,32,100,105,114,101, + 99,116,111,114,121,32,115,105,122,101,32,111,114,32,111,102, + 102,115,101,116,58,32,233,46,0,0,0,250,27,69,79,70, + 32,114,101,97,100,32,119,104,101,114,101,32,110,111,116,32, + 101,120,112,101,99,116,101,100,115,4,0,0,0,80,75,1, + 2,233,8,0,0,0,233,10,0,0,0,233,14,0,0,0, + 233,24,0,0,0,233,28,0,0,0,233,30,0,0,0,233, + 32,0,0,0,233,34,0,0,0,233,42,0,0,0,122,25, + 98,97,100,32,108,111,99,97,108,32,104,101,97,100,101,114, + 32,111,102,102,115,101,116,58,32,105,0,8,0,0,218,5, + 97,115,99,105,105,90,6,108,97,116,105,110,49,250,1,47, + 114,5,0,0,0,122,33,122,105,112,105,109,112,111,114,116, + 58,32,102,111,117,110,100,32,123,125,32,110,97,109,101,115, + 32,105,110,32,123,33,114,125,41,26,218,3,95,105,111,218, + 9,111,112,101,110,95,99,111,100,101,114,22,0,0,0,114, + 3,0,0,0,218,4,115,101,101,107,218,20,69,78,68,95, + 67,69,78,84,82,65,76,95,68,73,82,95,83,73,90,69, + 90,4,116,101,108,108,218,4,114,101,97,100,114,51,0,0, + 0,218,18,83,84,82,73,78,71,95,69,78,68,95,65,82, + 67,72,73,86,69,218,3,109,97,120,218,15,77,65,88,95, + 67,79,77,77,69,78,84,95,76,69,78,218,5,114,102,105, + 110,100,114,2,0,0,0,218,8,69,79,70,69,114,114,111, + 114,114,1,0,0,0,114,62,0,0,0,218,18,85,110,105, + 99,111,100,101,68,101,99,111,100,101,69,114,114,111,114,218, + 9,116,114,97,110,115,108,97,116,101,218,11,99,112,52,51, + 55,95,116,97,98,108,101,114,19,0,0,0,114,20,0,0, + 0,114,21,0,0,0,114,30,0,0,0,114,76,0,0,0, + 114,77,0,0,0,41,26,114,29,0,0,0,218,2,102,112, + 90,15,104,101,97,100,101,114,95,112,111,115,105,116,105,111, + 110,218,6,98,117,102,102,101,114,218,9,102,105,108,101,95, + 115,105,122,101,90,17,109,97,120,95,99,111,109,109,101,110, + 116,95,115,116,97,114,116,218,4,100,97,116,97,90,3,112, + 111,115,218,11,104,101,97,100,101,114,95,115,105,122,101,90, + 13,104,101,97,100,101,114,95,111,102,102,115,101,116,90,10, + 97,114,99,95,111,102,102,115,101,116,114,33,0,0,0,218, + 5,99,111,117,110,116,218,5,102,108,97,103,115,218,8,99, + 111,109,112,114,101,115,115,218,4,116,105,109,101,218,4,100, + 97,116,101,218,3,99,114,99,218,9,100,97,116,97,95,115, + 105,122,101,218,9,110,97,109,101,95,115,105,122,101,218,10, + 101,120,116,114,97,95,115,105,122,101,90,12,99,111,109,109, + 101,110,116,95,115,105,122,101,218,11,102,105,108,101,95,111, + 102,102,115,101,116,114,59,0,0,0,114,13,0,0,0,218, + 1,116,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,27,0,0,0,96,1,0,0,115,212,0,0,0,0, + 1,2,1,14,1,12,1,24,2,8,1,2,1,14,1,8, + 1,14,1,12,1,24,1,12,1,18,1,18,3,2,1,12, + 1,12,1,12,1,10,1,2,255,12,2,8,1,2,255,2, + 1,2,255,4,2,2,1,10,1,12,1,14,1,10,1,2, + 255,12,2,10,1,10,1,10,1,2,255,6,2,16,1,14, + 1,10,1,2,255,6,2,16,2,16,1,16,1,10,1,18, + 1,10,1,18,1,8,1,8,1,10,1,18,2,4,2,4, + 1,2,1,14,1,14,1,24,2,10,1,14,1,8,2,18, + 1,4,1,14,1,8,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,16,1,16,1,16,1,12,1,10, + 1,18,1,8,2,2,1,14,1,14,1,24,1,14,1,18, + 4,2,1,28,1,22,1,14,1,24,2,10,2,10,3,2, + 1,14,1,14,1,22,2,12,1,12,1,20,1,8,1,44, + 1,14,1,114,27,0,0,0,117,190,1,0,0,0,1,2, + 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, + 19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, + 35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50, + 51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66, + 67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82, + 83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98, + 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114, + 115,116,117,118,119,120,121,122,123,124,125,126,127,195,135,195, + 188,195,169,195,162,195,164,195,160,195,165,195,167,195,170,195, + 171,195,168,195,175,195,174,195,172,195,132,195,133,195,137,195, + 166,195,134,195,180,195,182,195,178,195,187,195,185,195,191,195, + 150,195,156,194,162,194,163,194,165,226,130,167,198,146,195,161, + 195,173,195,179,195,186,195,177,195,145,194,170,194,186,194,191, + 226,140,144,194,172,194,189,194,188,194,161,194,171,194,187,226, + 150,145,226,150,146,226,150,147,226,148,130,226,148,164,226,149, + 161,226,149,162,226,149,150,226,149,149,226,149,163,226,149,145, + 226,149,151,226,149,157,226,149,156,226,149,155,226,148,144,226, + 148,148,226,148,180,226,148,172,226,148,156,226,148,128,226,148, + 188,226,149,158,226,149,159,226,149,154,226,149,148,226,149,169, + 226,149,166,226,149,160,226,149,144,226,149,172,226,149,167,226, + 149,168,226,149,164,226,149,165,226,149,153,226,149,152,226,149, + 146,226,149,147,226,149,171,226,149,170,226,148,152,226,148,140, + 226,150,136,226,150,132,226,150,140,226,150,144,226,150,128,206, + 177,195,159,206,147,207,128,206,163,207,131,194,181,207,132,206, + 166,206,152,206,169,206,180,226,136,158,207,134,206,181,226,136, + 169,226,137,161,194,177,226,137,165,226,137,164,226,140,160,226, + 140,161,195,183,226,137,136,194,176,226,136,153,194,183,226,136, + 154,226,129,191,194,178,226,150,160,194,160,99,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0, + 67,0,0,0,115,110,0,0,0,116,0,114,22,116,1,160, + 2,100,1,161,1,1,0,116,3,100,2,131,1,130,1,100, + 3,97,0,122,62,122,16,100,4,100,5,108,4,109,5,125, + 0,1,0,87,0,110,36,4,0,116,6,121,80,1,0,1, + 0,1,0,116,1,160,2,100,1,161,1,1,0,116,3,100, + 2,131,1,130,1,89,0,110,2,48,0,87,0,100,6,97, + 0,110,6,100,6,97,0,48,0,116,1,160,2,100,7,161, + 1,1,0,124,0,83,0,41,8,78,122,27,122,105,112,105, + 109,112,111,114,116,58,32,122,108,105,98,32,85,78,65,86, + 65,73,76,65,66,76,69,250,41,99,97,110,39,116,32,100, + 101,99,111,109,112,114,101,115,115,32,100,97,116,97,59,32, + 122,108,105,98,32,110,111,116,32,97,118,97,105,108,97,98, + 108,101,84,114,0,0,0,0,169,1,218,10,100,101,99,111, + 109,112,114,101,115,115,70,122,25,122,105,112,105,109,112,111, + 114,116,58,32,122,108,105,98,32,97,118,97,105,108,97,98, + 108,101,41,7,218,15,95,105,109,112,111,114,116,105,110,103, + 95,122,108,105,98,114,76,0,0,0,114,77,0,0,0,114, + 3,0,0,0,90,4,122,108,105,98,114,141,0,0,0,218, + 9,69,120,99,101,112,116,105,111,110,114,140,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,20, + 95,103,101,116,95,100,101,99,111,109,112,114,101,115,115,95, + 102,117,110,99,254,1,0,0,115,24,0,0,0,0,2,4, + 3,10,1,8,2,4,1,4,1,16,1,12,1,10,1,16, + 2,12,2,10,1,114,144,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,17,0,0,0,9,0,0,0,67, + 0,0,0,115,144,1,0,0,124,1,92,8,125,2,125,3, + 125,4,125,5,125,6,125,7,125,8,125,9,124,4,100,1, + 107,0,114,36,116,0,100,2,131,1,130,1,116,1,160,2, + 124,0,161,1,144,1,143,14,125,10,122,14,124,10,160,3, + 124,6,161,1,1,0,87,0,110,36,4,0,116,4,121,100, + 1,0,1,0,1,0,116,0,100,3,124,0,155,2,157,2, + 124,0,100,4,141,2,130,1,89,0,110,2,48,0,124,10, + 160,5,100,5,161,1,125,11,116,6,124,11,131,1,100,5, + 107,3,114,132,116,7,100,6,131,1,130,1,124,11,100,0, + 100,7,133,2,25,0,100,8,107,3,114,166,116,0,100,9, + 124,0,155,2,157,2,124,0,100,4,141,2,130,1,116,8, + 124,11,100,10,100,11,133,2,25,0,131,1,125,12,116,8, + 124,11,100,11,100,5,133,2,25,0,131,1,125,13,100,5, + 124,12,23,0,124,13,23,0,125,14,124,6,124,14,55,0, + 125,6,122,14,124,10,160,3,124,6,161,1,1,0,87,0, + 110,38,4,0,116,4,144,1,121,14,1,0,1,0,1,0, + 116,0,100,3,124,0,155,2,157,2,124,0,100,4,141,2, + 130,1,89,0,110,2,48,0,124,10,160,5,124,4,161,1, + 125,15,116,6,124,15,131,1,124,4,107,3,144,1,114,48, + 116,4,100,12,131,1,130,1,87,0,100,0,4,0,4,0, + 131,3,1,0,110,18,49,0,144,1,115,70,48,0,1,0, + 1,0,1,0,89,0,1,0,124,3,100,1,107,2,144,1, + 114,94,124,15,83,0,122,10,116,9,131,0,125,16,87,0, + 110,28,4,0,116,10,144,1,121,132,1,0,1,0,1,0, + 116,0,100,13,131,1,130,1,89,0,110,2,48,0,124,16, + 124,15,100,14,131,2,83,0,41,15,78,114,0,0,0,0, + 122,18,110,101,103,97,116,105,118,101,32,100,97,116,97,32, + 115,105,122,101,114,92,0,0,0,114,12,0,0,0,114,104, + 0,0,0,114,98,0,0,0,114,93,0,0,0,115,4,0, + 0,0,80,75,3,4,122,23,98,97,100,32,108,111,99,97, + 108,32,102,105,108,101,32,104,101,97,100,101,114,58,32,233, + 26,0,0,0,114,103,0,0,0,122,26,122,105,112,105,109, + 112,111,114,116,58,32,99,97,110,39,116,32,114,101,97,100, + 32,100,97,116,97,114,139,0,0,0,105,241,255,255,255,41, + 11,114,3,0,0,0,114,110,0,0,0,114,111,0,0,0, + 114,112,0,0,0,114,22,0,0,0,114,114,0,0,0,114, + 51,0,0,0,114,119,0,0,0,114,1,0,0,0,114,144, + 0,0,0,114,143,0,0,0,41,17,114,29,0,0,0,114, + 54,0,0,0,90,8,100,97,116,97,112,97,116,104,114,130, + 0,0,0,114,134,0,0,0,114,125,0,0,0,114,137,0, + 0,0,114,131,0,0,0,114,132,0,0,0,114,133,0,0, + 0,114,123,0,0,0,114,124,0,0,0,114,135,0,0,0, + 114,136,0,0,0,114,127,0,0,0,90,8,114,97,119,95, + 100,97,116,97,114,141,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,52,0,0,0,19,2,0, + 0,115,62,0,0,0,0,1,20,1,8,1,8,2,14,2, + 2,1,14,1,12,1,24,1,10,1,12,1,8,2,16,2, + 18,2,16,1,16,1,12,1,8,1,2,1,14,1,14,1, + 24,1,10,1,14,1,40,2,10,2,4,3,2,1,10,1, + 14,1,14,1,114,52,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0, + 0,0,115,16,0,0,0,116,0,124,0,124,1,24,0,131, + 1,100,1,107,1,83,0,41,2,78,114,5,0,0,0,41, + 1,218,3,97,98,115,41,2,90,2,116,49,90,2,116,50, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 9,95,101,113,95,109,116,105,109,101,65,2,0,0,115,2, + 0,0,0,0,2,114,147,0,0,0,99,5,0,0,0,0, + 0,0,0,0,0,0,0,14,0,0,0,8,0,0,0,67, + 0,0,0,115,56,1,0,0,124,3,124,2,100,1,156,2, + 125,5,122,18,116,0,160,1,124,4,124,3,124,5,161,3, + 125,6,87,0,110,20,4,0,116,2,121,48,1,0,1,0, + 1,0,89,0,100,0,83,0,48,0,124,6,100,2,64,0, + 100,3,107,3,125,7,124,7,114,178,124,6,100,4,64,0, + 100,3,107,3,125,8,116,3,106,4,100,5,107,3,114,176, + 124,8,115,102,116,3,106,4,100,6,107,2,114,176,116,5, + 124,0,124,2,131,2,125,9,124,9,100,0,117,1,114,176, + 116,3,160,6,116,0,106,7,124,9,161,2,125,10,122,20, + 116,0,160,8,124,4,124,10,124,3,124,5,161,4,1,0, + 87,0,110,20,4,0,116,2,121,174,1,0,1,0,1,0, + 89,0,100,0,83,0,48,0,110,84,116,9,124,0,124,2, + 131,2,92,2,125,11,125,12,124,11,144,1,114,6,116,10, + 116,11,124,4,100,7,100,8,133,2,25,0,131,1,124,11, + 131,2,114,242,116,11,124,4,100,8,100,9,133,2,25,0, + 131,1,124,12,107,3,144,1,114,6,116,12,160,13,100,10, + 124,3,155,2,157,2,161,1,1,0,100,0,83,0,116,14, + 160,15,124,4,100,9,100,0,133,2,25,0,161,1,125,13, + 116,16,124,13,116,17,131,2,144,1,115,52,116,18,100,11, + 124,1,155,2,100,12,157,3,131,1,130,1,124,13,83,0, + 41,13,78,41,2,114,59,0,0,0,114,13,0,0,0,114, + 5,0,0,0,114,0,0,0,0,114,86,0,0,0,90,5, + 110,101,118,101,114,90,6,97,108,119,97,121,115,114,99,0, + 0,0,114,94,0,0,0,114,95,0,0,0,122,22,98,121, + 116,101,99,111,100,101,32,105,115,32,115,116,97,108,101,32, + 102,111,114,32,122,16,99,111,109,112,105,108,101,100,32,109, + 111,100,117,108,101,32,122,21,32,105,115,32,110,111,116,32, + 97,32,99,111,100,101,32,111,98,106,101,99,116,41,19,114, + 21,0,0,0,90,13,95,99,108,97,115,115,105,102,121,95, + 112,121,99,114,75,0,0,0,218,4,95,105,109,112,90,21, + 99,104,101,99,107,95,104,97,115,104,95,98,97,115,101,100, + 95,112,121,99,115,218,15,95,103,101,116,95,112,121,99,95, + 115,111,117,114,99,101,218,11,115,111,117,114,99,101,95,104, + 97,115,104,90,17,95,82,65,87,95,77,65,71,73,67,95, + 78,85,77,66,69,82,90,18,95,118,97,108,105,100,97,116, + 101,95,104,97,115,104,95,112,121,99,218,29,95,103,101,116, + 95,109,116,105,109,101,95,97,110,100,95,115,105,122,101,95, + 111,102,95,115,111,117,114,99,101,114,147,0,0,0,114,2, + 0,0,0,114,76,0,0,0,114,77,0,0,0,218,7,109, + 97,114,115,104,97,108,90,5,108,111,97,100,115,114,15,0, + 0,0,218,10,95,99,111,100,101,95,116,121,112,101,218,9, + 84,121,112,101,69,114,114,111,114,41,14,114,32,0,0,0, + 114,53,0,0,0,114,63,0,0,0,114,38,0,0,0,114, + 126,0,0,0,90,11,101,120,99,95,100,101,116,97,105,108, + 115,114,129,0,0,0,90,10,104,97,115,104,95,98,97,115, + 101,100,90,12,99,104,101,99,107,95,115,111,117,114,99,101, + 90,12,115,111,117,114,99,101,95,98,121,116,101,115,114,150, + 0,0,0,90,12,115,111,117,114,99,101,95,109,116,105,109, + 101,90,11,115,111,117,114,99,101,95,115,105,122,101,114,46, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,15,95,117,110,109,97,114,115,104,97,108,95,99, + 111,100,101,75,2,0,0,115,82,0,0,0,0,2,2,1, + 2,254,6,5,2,1,18,1,12,1,8,2,12,1,4,1, + 12,1,10,1,2,255,2,1,8,255,2,2,10,1,8,1, + 4,1,4,1,2,254,4,5,2,1,4,1,8,255,8,2, + 12,1,10,3,8,255,6,3,6,3,22,1,18,255,4,2, + 4,1,8,255,4,2,4,2,18,1,12,1,16,1,114,155, + 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,4,0,0,0,67,0,0,0,115,28,0,0, + 0,124,0,160,0,100,1,100,2,161,2,125,0,124,0,160, + 0,100,3,100,2,161,2,125,0,124,0,83,0,41,4,78, + 115,2,0,0,0,13,10,243,1,0,0,0,10,243,1,0, + 0,0,13,41,1,114,19,0,0,0,41,1,218,6,115,111, + 117,114,99,101,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,23,95,110,111,114,109,97,108,105,122,101,95, + 108,105,110,101,95,101,110,100,105,110,103,115,126,2,0,0, + 115,6,0,0,0,0,1,12,1,12,1,114,159,0,0,0, + 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,6,0,0,0,67,0,0,0,115,24,0,0,0,116,0, + 124,1,131,1,125,1,116,1,124,1,124,0,100,1,100,2, + 100,3,141,4,83,0,41,4,78,114,74,0,0,0,84,41, + 1,90,12,100,111,110,116,95,105,110,104,101,114,105,116,41, + 2,114,159,0,0,0,218,7,99,111,109,112,105,108,101,41, + 2,114,53,0,0,0,114,158,0,0,0,114,9,0,0,0, + 114,9,0,0,0,114,10,0,0,0,218,15,95,99,111,109, + 112,105,108,101,95,115,111,117,114,99,101,133,2,0,0,115, + 4,0,0,0,0,1,8,1,114,161,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,0, + 0,0,67,0,0,0,115,68,0,0,0,116,0,160,1,124, + 0,100,1,63,0,100,2,23,0,124,0,100,3,63,0,100, + 4,64,0,124,0,100,5,64,0,124,1,100,6,63,0,124, + 1,100,3,63,0,100,7,64,0,124,1,100,5,64,0,100, + 8,20,0,100,9,100,9,100,9,102,9,161,1,83,0,41, + 10,78,233,9,0,0,0,105,188,7,0,0,233,5,0,0, + 0,233,15,0,0,0,233,31,0,0,0,233,11,0,0,0, + 233,63,0,0,0,114,86,0,0,0,114,14,0,0,0,41, + 2,114,131,0,0,0,90,6,109,107,116,105,109,101,41,2, + 218,1,100,114,138,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,14,95,112,97,114,115,101,95, + 100,111,115,116,105,109,101,139,2,0,0,115,18,0,0,0, + 0,1,4,1,10,1,10,1,6,1,6,1,10,1,10,1, + 6,249,114,169,0,0,0,99,2,0,0,0,0,0,0,0, + 0,0,0,0,6,0,0,0,10,0,0,0,67,0,0,0, + 115,114,0,0,0,122,82,124,1,100,1,100,0,133,2,25, + 0,100,2,118,0,115,22,74,0,130,1,124,1,100,0,100, + 1,133,2,25,0,125,1,124,0,106,0,124,1,25,0,125, + 2,124,2,100,3,25,0,125,3,124,2,100,4,25,0,125, + 4,124,2,100,5,25,0,125,5,116,1,124,4,124,3,131, + 2,124,5,102,2,87,0,83,0,4,0,116,2,116,3,116, + 4,102,3,121,108,1,0,1,0,1,0,89,0,100,6,83, + 0,48,0,100,0,83,0,41,7,78,114,14,0,0,0,169, + 2,218,1,99,218,1,111,114,163,0,0,0,233,6,0,0, + 0,233,3,0,0,0,41,2,114,0,0,0,0,114,0,0, + 0,0,41,5,114,28,0,0,0,114,169,0,0,0,114,26, + 0,0,0,218,10,73,110,100,101,120,69,114,114,111,114,114, + 154,0,0,0,41,6,114,32,0,0,0,114,13,0,0,0, + 114,54,0,0,0,114,131,0,0,0,114,132,0,0,0,90, + 17,117,110,99,111,109,112,114,101,115,115,101,100,95,115,105, + 122,101,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,114,151,0,0,0,152,2,0,0,115,20,0,0,0,0, + 1,2,2,20,1,12,1,10,3,8,1,8,1,8,1,16, + 1,18,1,114,151,0,0,0,99,2,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,8,0,0,0,67,0,0, + 0,115,84,0,0,0,124,1,100,1,100,0,133,2,25,0, + 100,2,118,0,115,20,74,0,130,1,124,1,100,0,100,1, + 133,2,25,0,125,1,122,14,124,0,106,0,124,1,25,0, + 125,2,87,0,110,20,4,0,116,1,121,66,1,0,1,0, + 1,0,89,0,100,0,83,0,48,0,116,2,124,0,106,3, + 124,2,131,2,83,0,100,0,83,0,41,3,78,114,14,0, + 0,0,114,170,0,0,0,41,4,114,28,0,0,0,114,26, + 0,0,0,114,52,0,0,0,114,29,0,0,0,41,3,114, + 32,0,0,0,114,13,0,0,0,114,54,0,0,0,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,114,149,0, + 0,0,171,2,0,0,115,14,0,0,0,0,2,20,1,12, + 2,2,1,14,1,12,1,8,2,114,149,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,9, + 0,0,0,67,0,0,0,115,196,0,0,0,116,0,124,0, + 124,1,131,2,125,2,116,1,68,0,93,158,92,3,125,3, + 125,4,125,5,124,2,124,3,23,0,125,6,116,2,106,3, + 100,1,124,0,106,4,116,5,124,6,100,2,100,3,141,5, + 1,0,122,14,124,0,106,6,124,6,25,0,125,7,87,0, + 110,18,4,0,116,7,121,86,1,0,1,0,1,0,89,0, + 113,14,48,0,124,7,100,4,25,0,125,8,116,8,124,0, + 106,4,124,7,131,2,125,9,124,4,114,130,116,9,124,0, + 124,8,124,6,124,1,124,9,131,5,125,10,110,10,116,10, + 124,8,124,9,131,2,125,10,124,10,100,0,117,0,114,150, + 113,14,124,7,100,4,25,0,125,8,124,10,124,5,124,8, + 102,3,2,0,1,0,83,0,113,14,116,11,100,5,124,1, + 155,2,157,2,124,1,100,6,141,2,130,1,100,0,83,0, + 41,7,78,122,13,116,114,121,105,110,103,32,123,125,123,125, + 123,125,114,86,0,0,0,41,1,90,9,118,101,114,98,111, + 115,105,116,121,114,0,0,0,0,114,57,0,0,0,114,58, + 0,0,0,41,12,114,36,0,0,0,114,89,0,0,0,114, + 76,0,0,0,114,77,0,0,0,114,29,0,0,0,114,20, + 0,0,0,114,28,0,0,0,114,26,0,0,0,114,52,0, + 0,0,114,155,0,0,0,114,161,0,0,0,114,3,0,0, + 0,41,11,114,32,0,0,0,114,38,0,0,0,114,13,0, + 0,0,114,90,0,0,0,114,91,0,0,0,114,47,0,0, + 0,114,63,0,0,0,114,54,0,0,0,114,40,0,0,0, + 114,126,0,0,0,114,46,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,114,44,0,0,0,186,2, + 0,0,115,36,0,0,0,0,1,10,1,14,1,8,1,22, + 1,2,1,14,1,12,1,6,2,8,1,12,1,4,1,18, + 2,10,1,8,3,2,1,8,1,16,2,114,44,0,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,64,0,0,0,115,60,0,0,0,101,0, + 90,1,100,0,90,2,100,1,90,3,100,2,90,4,100,3, + 100,4,132,0,90,5,100,5,100,6,132,0,90,6,100,7, + 100,8,132,0,90,7,100,9,100,10,132,0,90,8,100,11, + 100,12,132,0,90,9,100,13,83,0,41,14,114,80,0,0, + 0,122,165,80,114,105,118,97,116,101,32,99,108,97,115,115, + 32,117,115,101,100,32,116,111,32,115,117,112,112,111,114,116, + 32,90,105,112,73,109,112,111,114,116,46,103,101,116,95,114, + 101,115,111,117,114,99,101,95,114,101,97,100,101,114,40,41, + 46,10,10,32,32,32,32,84,104,105,115,32,99,108,97,115, + 115,32,105,115,32,97,108,108,111,119,101,100,32,116,111,32, + 114,101,102,101,114,101,110,99,101,32,97,108,108,32,116,104, + 101,32,105,110,110,97,114,100,115,32,97,110,100,32,112,114, + 105,118,97,116,101,32,112,97,114,116,115,32,111,102,10,32, + 32,32,32,116,104,101,32,122,105,112,105,109,112,111,114,116, + 101,114,46,10,32,32,32,32,70,99,3,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0, + 0,0,115,16,0,0,0,124,1,124,0,95,0,124,2,124, + 0,95,1,100,0,83,0,114,88,0,0,0,41,2,114,4, + 0,0,0,114,38,0,0,0,41,3,114,32,0,0,0,114, + 4,0,0,0,114,38,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,34,0,0,0,220,2,0, + 0,115,4,0,0,0,0,1,6,1,122,33,95,90,105,112, + 73,109,112,111,114,116,82,101,115,111,117,114,99,101,82,101, + 97,100,101,114,46,95,95,105,110,105,116,95,95,99,2,0, + 0,0,0,0,0,0,0,0,0,0,5,0,0,0,8,0, + 0,0,67,0,0,0,115,90,0,0,0,124,0,106,0,160, + 1,100,1,100,2,161,2,125,2,124,2,155,0,100,2,124, + 1,155,0,157,3,125,3,100,3,100,4,108,2,109,3,125, + 4,1,0,122,18,124,4,124,0,106,4,160,5,124,3,161, + 1,131,1,87,0,83,0,4,0,116,6,121,84,1,0,1, + 0,1,0,116,7,124,3,131,1,130,1,89,0,110,2,48, + 0,100,0,83,0,41,5,78,114,85,0,0,0,114,109,0, + 0,0,114,0,0,0,0,41,1,218,7,66,121,116,101,115, + 73,79,41,8,114,38,0,0,0,114,19,0,0,0,90,2, + 105,111,114,176,0,0,0,114,4,0,0,0,114,55,0,0, + 0,114,22,0,0,0,218,17,70,105,108,101,78,111,116,70, + 111,117,110,100,69,114,114,111,114,41,5,114,32,0,0,0, + 218,8,114,101,115,111,117,114,99,101,218,16,102,117,108,108, + 110,97,109,101,95,97,115,95,112,97,116,104,114,13,0,0, + 0,114,176,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,13,111,112,101,110,95,114,101,115,111, + 117,114,99,101,224,2,0,0,115,14,0,0,0,0,1,14, + 1,14,1,12,1,2,1,18,1,12,1,122,38,95,90,105, + 112,73,109,112,111,114,116,82,101,115,111,117,114,99,101,82, + 101,97,100,101,114,46,111,112,101,110,95,114,101,115,111,117, + 114,99,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,8,0,0, + 0,116,0,130,1,100,0,83,0,114,88,0,0,0,41,1, + 114,177,0,0,0,41,2,114,32,0,0,0,114,178,0,0, + 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 218,13,114,101,115,111,117,114,99,101,95,112,97,116,104,233, + 2,0,0,115,2,0,0,0,0,4,122,38,95,90,105,112, + 73,109,112,111,114,116,82,101,115,111,117,114,99,101,82,101, + 97,100,101,114,46,114,101,115,111,117,114,99,101,95,112,97, + 116,104,99,2,0,0,0,0,0,0,0,0,0,0,0,4, + 0,0,0,8,0,0,0,67,0,0,0,115,70,0,0,0, + 124,0,106,0,160,1,100,1,100,2,161,2,125,2,124,2, + 155,0,100,2,124,1,155,0,157,3,125,3,122,16,124,0, + 106,2,160,3,124,3,161,1,1,0,87,0,110,20,4,0, + 116,4,121,64,1,0,1,0,1,0,89,0,100,3,83,0, + 48,0,100,4,83,0,41,5,78,114,85,0,0,0,114,109, + 0,0,0,70,84,41,5,114,38,0,0,0,114,19,0,0, + 0,114,4,0,0,0,114,55,0,0,0,114,22,0,0,0, + 41,4,114,32,0,0,0,114,59,0,0,0,114,179,0,0, + 0,114,13,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,11,105,115,95,114,101,115,111,117,114, + 99,101,239,2,0,0,115,14,0,0,0,0,3,14,1,14, + 1,2,1,16,1,12,1,8,1,122,36,95,90,105,112,73, + 109,112,111,114,116,82,101,115,111,117,114,99,101,82,101,97, + 100,101,114,46,105,115,95,114,101,115,111,117,114,99,101,99, + 1,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0, + 9,0,0,0,99,0,0,0,115,184,0,0,0,100,1,100, + 2,108,0,109,1,125,1,1,0,124,1,124,0,106,2,160, + 3,124,0,106,4,161,1,131,1,125,2,124,2,160,5,124, + 0,106,2,106,6,161,1,125,3,124,3,106,7,100,3,107, + 2,115,58,74,0,130,1,124,3,106,8,125,4,116,9,131, + 0,125,5,124,0,106,2,106,10,68,0,93,100,125,6,122, + 18,124,1,124,6,131,1,160,5,124,4,161,1,125,7,87, + 0,110,22,4,0,116,11,121,122,1,0,1,0,1,0,89, + 0,113,78,89,0,110,2,48,0,124,7,106,8,106,7,125, + 8,116,12,124,8,131,1,100,1,107,2,114,154,124,7,106, + 7,86,0,1,0,113,78,124,8,124,5,118,1,114,78,124, + 5,160,13,124,8,161,1,1,0,124,8,86,0,1,0,113, + 78,100,0,83,0,41,4,78,114,0,0,0,0,41,1,218, + 4,80,97,116,104,114,60,0,0,0,41,14,90,7,112,97, + 116,104,108,105,98,114,183,0,0,0,114,4,0,0,0,114, + 56,0,0,0,114,38,0,0,0,90,11,114,101,108,97,116, + 105,118,101,95,116,111,114,29,0,0,0,114,59,0,0,0, + 90,6,112,97,114,101,110,116,218,3,115,101,116,114,28,0, + 0,0,114,23,0,0,0,114,51,0,0,0,218,3,97,100, + 100,41,9,114,32,0,0,0,114,183,0,0,0,90,13,102, + 117,108,108,110,97,109,101,95,112,97,116,104,90,13,114,101, + 108,97,116,105,118,101,95,112,97,116,104,90,12,112,97,99, + 107,97,103,101,95,112,97,116,104,90,12,115,117,98,100,105, + 114,115,95,115,101,101,110,218,8,102,105,108,101,110,97,109, + 101,90,8,114,101,108,97,116,105,118,101,90,11,112,97,114, + 101,110,116,95,110,97,109,101,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,8,99,111,110,116,101,110,116, + 115,250,2,0,0,115,34,0,0,0,0,8,12,1,18,1, + 14,3,14,1,6,1,6,1,12,1,2,1,18,1,12,1, + 10,5,8,1,12,1,10,1,8,1,10,1,122,33,95,90, + 105,112,73,109,112,111,114,116,82,101,115,111,117,114,99,101, + 82,101,97,100,101,114,46,99,111,110,116,101,110,116,115,78, + 41,10,114,6,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,84,0,0,0,114,81,0,0,0,114,34,0,0,0, + 114,180,0,0,0,114,181,0,0,0,114,182,0,0,0,114, + 187,0,0,0,114,9,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,80,0,0,0,212,2,0, + 0,115,14,0,0,0,8,1,4,5,4,2,8,4,8,9, + 8,6,8,11,114,80,0,0,0,41,45,114,84,0,0,0, + 90,26,95,102,114,111,122,101,110,95,105,109,112,111,114,116, + 108,105,98,95,101,120,116,101,114,110,97,108,114,21,0,0, + 0,114,1,0,0,0,114,2,0,0,0,90,17,95,102,114, + 111,122,101,110,95,105,109,112,111,114,116,108,105,98,114,76, + 0,0,0,114,148,0,0,0,114,110,0,0,0,114,152,0, + 0,0,114,67,0,0,0,114,131,0,0,0,90,7,95,95, + 97,108,108,95,95,114,20,0,0,0,90,15,112,97,116,104, + 95,115,101,112,97,114,97,116,111,114,115,114,18,0,0,0, + 114,75,0,0,0,114,3,0,0,0,114,25,0,0,0,218, + 4,116,121,112,101,114,70,0,0,0,114,113,0,0,0,114, + 115,0,0,0,114,117,0,0,0,114,4,0,0,0,114,89, + 0,0,0,114,36,0,0,0,114,37,0,0,0,114,35,0, + 0,0,114,27,0,0,0,114,122,0,0,0,114,142,0,0, + 0,114,144,0,0,0,114,52,0,0,0,114,147,0,0,0, + 114,155,0,0,0,218,8,95,95,99,111,100,101,95,95,114, + 153,0,0,0,114,159,0,0,0,114,161,0,0,0,114,169, + 0,0,0,114,151,0,0,0,114,149,0,0,0,114,44,0, + 0,0,114,80,0,0,0,114,9,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,8,60,109,111, + 100,117,108,101,62,1,0,0,0,115,88,0,0,0,4,16, + 8,1,16,1,8,1,8,1,8,1,8,1,8,1,8,2, + 8,3,6,1,14,3,16,4,4,2,8,2,4,1,4,1, + 4,2,14,127,0,127,0,1,12,1,12,1,2,1,2,252, + 4,9,8,4,8,9,8,31,8,126,2,254,2,29,4,5, + 8,21,8,46,8,10,8,46,10,5,8,7,8,6,8,13, + 8,19,8,15,8,26, +}; From 766117b402b270897802cd8eea637c49cbfa01a5 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 17 Dec 2021 18:45:26 +0100 Subject: [PATCH 115/160] use CRLF on stdout ad friends --- Modules/_io/fileio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Modules/_io/fileio.c b/Modules/_io/fileio.c index 7d4eed96..d00672c9 100644 --- a/Modules/_io/fileio.c +++ b/Modules/_io/fileio.c @@ -478,7 +478,8 @@ _Py_COMP_DIAG_POP #endif #if defined(__OS2__) /* don't translate newlines (\r\n <=> \n) */ - setmode(self->fd, O_BINARY); + if (!isatty(self->fd)) + setmode(self->fd, O_BINARY); #endif if (_PyObject_SetAttrId((PyObject *)self, &PyId_name, nameobj) < 0) From fba1dff1a13606e0fc5d891c3ddd5b4e3c9d22ad Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 12 Jan 2022 12:53:07 +0100 Subject: [PATCH 116/160] add os2 to bdist.py as well --- Lib/distutils/command/bdist.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lib/distutils/command/bdist.py b/Lib/distutils/command/bdist.py index 014871d2..5607bd95 100644 --- a/Lib/distutils/command/bdist.py +++ b/Lib/distutils/command/bdist.py @@ -58,7 +58,8 @@ class bdist(Command): # This won't do in reality: will need to distinguish RPM-ish Linux, # Debian-ish Linux, Solaris, FreeBSD, ..., Windows, Mac OS. default_format = {'posix': 'gztar', - 'nt': 'zip'} + 'nt': 'zip', + 'os2': 'zip'} # Establish the preferred order (for the --help-formats option). format_commands = ['rpm', 'gztar', 'bztar', 'xztar', 'ztar', 'tar', From 5044755060c823bbb5f7930fb3942ee0ff40270d Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 2 Feb 2022 17:54:30 +0100 Subject: [PATCH 117/160] use the right codepage for text files --- Python/fileutils.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Python/fileutils.c b/Python/fileutils.c index 38012a35..dc03f072 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -8,7 +8,10 @@ # include extern int winerror_to_errno(int); #endif - +#ifdef __OS2__ +#define INCL_DOS +#include +#endif #ifdef HAVE_LANGINFO_H #include #endif @@ -82,6 +85,13 @@ _Py_device_encoding(int fd) has no console */ if (cp != 0) return PyUnicode_FromFormat("cp%u", (unsigned int)cp); +#elif defined(__OS2__) + { + ULONG OS2CodePage[5]; + ULONG OS2CodePageLen; + if (!DosQueryCp(sizeof(OS2CodePage), OS2CodePage, &OS2CodePageLen)) + return PyUnicode_FromFormat("cp%u", OS2CodePage[0]); + } #elif defined(CODESET) { char *codeset = nl_langinfo(CODESET); From 5ed559d88dc95a34833813bbebd91c3cce904c35 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 3 Feb 2022 16:02:57 +0100 Subject: [PATCH 118/160] don't use bytebased env, use string based --- Lib/os.py | 2 +- Modules/posixmodule.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Lib/os.py b/Lib/os.py index 95fa9221..3f767485 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -755,7 +755,7 @@ def __ror__(self, other): return new def _createenviron(): - if name == 'nt': + if name in ('nt', 'os2'): # Where Env Var Names Must Be UPPERCASE def check_str(value): if not isinstance(value, str): diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 9cde241a..79b533cd 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1676,6 +1676,8 @@ convertenviron(void) continue; #ifdef MS_WINDOWS k = PyUnicode_FromWideChar(*e, (Py_ssize_t)(p-*e)); +#elif defined(__OS2__) + k = PyUnicode_FromStringAndSize(*e, (int)(p-*e)); #else k = PyBytes_FromStringAndSize(*e, (int)(p-*e)); #endif @@ -1685,6 +1687,8 @@ convertenviron(void) } #ifdef MS_WINDOWS v = PyUnicode_FromWideChar(p+1, wcslen(p+1)); +#elif defined(__OS2__) + v = PyUnicode_FromStringAndSize(p+1, strlen(p+1)); #else v = PyBytes_FromStringAndSize(p+1, strlen(p+1)); #endif @@ -1713,7 +1717,7 @@ convertenviron(void) } /* Do not pollute the einvironment with unset pseudo-env variables */ if (*val) { - PyObject *v = PyBytes_FromString(val); + PyObject *v = PyUnicode_FromString(val); PyDict_SetItemString(d, sp_envvars[i], v); Py_DECREF(v); } From 0eaf5e5243088311c8240b3ae6e381fccba82b28 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 3 Feb 2022 19:49:36 +0100 Subject: [PATCH 119/160] don't force utf-8 on C or POSIX locale --- Python/preconfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/preconfig.c b/Python/preconfig.c index 262738fa..e4296bb9 100644 --- a/Python/preconfig.c +++ b/Python/preconfig.c @@ -634,7 +634,7 @@ preconfig_init_utf8_mode(PyPreConfig *config, const _PyPreCmdline *cmdline) } -#ifndef MS_WINDOWS +#if !defined(MS_WINDOWS) && !defined(__OS2__) if (config->utf8_mode < 0) { /* The C locale and the POSIX locale enable the UTF-8 Mode (PEP 540) */ const char *ctype_loc = setlocale(LC_CTYPE, NULL); From 3271add88a2c51be49fa84ba837ed74246e3e91a Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 3 Mar 2023 15:41:24 +0100 Subject: [PATCH 120/160] fixes ticket #9 --- Lib/subprocess.py | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index bddd50f2..05bad5df 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -2023,6 +2023,11 @@ def _communicate(self, input, endtime, orig_timeout): stderr = self._stderr_buff self.stderr.close() + # All data exchanged. Translate lists into strings. + if stdout is not None: + stdout = ''.join(stdout) + if stderr is not None: + stderr = ''.join(stderr) else: if self.stdin and not self._communication_started: # Flush stdio buffer. This might block, if the user has @@ -2104,23 +2109,23 @@ def _communicate(self, input, endtime, orig_timeout): self.wait(timeout=self._remaining_time(endtime)) - # All data exchanged. Translate lists into strings. - if stdout is not None: - stdout = b''.join(stdout) - if stderr is not None: - stderr = b''.join(stderr) - - # Translate newlines, if requested. - # This also turns bytes into strings. - if self.text_mode: + # All data exchanged. Translate lists into strings. if stdout is not None: - stdout = self._translate_newlines(stdout, - self.stdout.encoding, - self.stdout.errors) + stdout = b''.join(stdout) if stderr is not None: - stderr = self._translate_newlines(stderr, - self.stderr.encoding, - self.stderr.errors) + stderr = b''.join(stderr) + + # Translate newlines, if requested. + # This also turns bytes into strings. + if self.text_mode: + if stdout is not None: + stdout = self._translate_newlines(stdout, + self.stdout.encoding, + self.stdout.errors) + if stderr is not None: + stderr = self._translate_newlines(stderr, + self.stderr.encoding, + self.stderr.errors) return (stdout, stderr) From 55f9d9639acf2b93fc0bb772047b34dd1e586425 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Thu, 22 Jun 2023 22:16:30 +0300 Subject: [PATCH 121/160] Revert "fixes ticket #9" This reverts commit 3271add88a2c51be49fa84ba837ed74246e3e91a. The previous version is the right one, as the buffers are bytes in the Posix code path. --- Lib/subprocess.py | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 05bad5df..bddd50f2 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -2023,11 +2023,6 @@ def _communicate(self, input, endtime, orig_timeout): stderr = self._stderr_buff self.stderr.close() - # All data exchanged. Translate lists into strings. - if stdout is not None: - stdout = ''.join(stdout) - if stderr is not None: - stderr = ''.join(stderr) else: if self.stdin and not self._communication_started: # Flush stdio buffer. This might block, if the user has @@ -2109,23 +2104,23 @@ def _communicate(self, input, endtime, orig_timeout): self.wait(timeout=self._remaining_time(endtime)) - # All data exchanged. Translate lists into strings. + # All data exchanged. Translate lists into strings. + if stdout is not None: + stdout = b''.join(stdout) + if stderr is not None: + stderr = b''.join(stderr) + + # Translate newlines, if requested. + # This also turns bytes into strings. + if self.text_mode: if stdout is not None: - stdout = b''.join(stdout) + stdout = self._translate_newlines(stdout, + self.stdout.encoding, + self.stdout.errors) if stderr is not None: - stderr = b''.join(stderr) - - # Translate newlines, if requested. - # This also turns bytes into strings. - if self.text_mode: - if stdout is not None: - stdout = self._translate_newlines(stdout, - self.stdout.encoding, - self.stdout.errors) - if stderr is not None: - stderr = self._translate_newlines(stderr, - self.stderr.encoding, - self.stderr.errors) + stderr = self._translate_newlines(stderr, + self.stderr.encoding, + self.stderr.errors) return (stdout, stderr) From c932873c80dc03e10dba5d0c8d46eccd67739a98 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuminov Date: Fri, 30 Jun 2023 16:29:41 +0300 Subject: [PATCH 122/160] subprocess: Fix str/byte mismatch exceptions. Finally closes #9. --- Lib/subprocess.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index bddd50f2..1ea9c3ae 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -106,7 +106,7 @@ import sysconfig # On Android the default shell is at '/system/bin/sh'. _UNIX_SHELL = sysconfig.get_config_var('SHELL') or ('/system/bin/sh' if - hasattr(sys, 'getandroidapilevel') else '/bin/sh') + hasattr(sys, 'getandroidapilevel') else '/bin/sh') if _os2: import fcntl import time @@ -1968,7 +1968,7 @@ def _wait(self, timeout): if _os2: - # _readerthread and also the os2 part in _communicate is + # _readerthread and also the os2 part in _communicate is # borrowed from the winows implementation, so try to be in sync def _readerthread(self, fh, buffer): buffer.append(fh.read()) @@ -2023,6 +2023,10 @@ def _communicate(self, input, endtime, orig_timeout): stderr = self._stderr_buff self.stderr.close() + # All data exchanged. Translate lists into strings. + stdout = stdout[0] if stdout else None + stderr = stderr[0] if stderr else None + else: if self.stdin and not self._communication_started: # Flush stdio buffer. This might block, if the user has @@ -2104,23 +2108,23 @@ def _communicate(self, input, endtime, orig_timeout): self.wait(timeout=self._remaining_time(endtime)) - # All data exchanged. Translate lists into strings. - if stdout is not None: - stdout = b''.join(stdout) - if stderr is not None: - stderr = b''.join(stderr) - - # Translate newlines, if requested. - # This also turns bytes into strings. - if self.text_mode: + # All data exchanged. Translate lists into strings. if stdout is not None: - stdout = self._translate_newlines(stdout, - self.stdout.encoding, - self.stdout.errors) + stdout = b''.join(stdout) if stderr is not None: - stderr = self._translate_newlines(stderr, - self.stderr.encoding, - self.stderr.errors) + stderr = b''.join(stderr) + + # Translate newlines, if requested. + # This also turns bytes into strings. + if self.text_mode: + if stdout is not None: + stdout = self._translate_newlines(stdout, + self.stdout.encoding, + self.stdout.errors) + if stderr is not None: + stderr = self._translate_newlines(stderr, + self.stderr.encoding, + self.stderr.errors) return (stdout, stderr) From cf20554407c1e9279d1ae6e0b16a574e153e38cc Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 27 Feb 2025 20:18:19 +0100 Subject: [PATCH 123/160] normpath() fails if Path instance is passed. Fixes #13 --- Lib/os2knixpath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index 79341bc0..30aab749 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -119,7 +119,7 @@ def ismount(path): def normpath(path): """Normalize path, eliminating double slashes, etc.""" - path = path.replace('\\', '/') + path = str(path).replace('\\', '/') prefix, path = splitdrive(path) while path[:1] == '/': prefix = prefix + '/' From edec2f91fb741adb55e8566ba3a12e75019082f5 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 27 Feb 2025 20:19:09 +0100 Subject: [PATCH 124/160] x:/path/to/dir is not treated as an absolute path. Fixes #12 --- Lib/pathlib.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/Lib/pathlib.py b/Lib/pathlib.py index 7aeda14a..31b84671 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -22,6 +22,8 @@ supports_symlinks = False _getfinalpathname = None else: + if os.name == 'os2': + _getfinalpathname = None nt = None @@ -126,7 +128,7 @@ class _WindowsFlavour(_Flavour): has_drv = True pathmod = ntpath - is_supported = (os.name == 'nt') + is_supported = (os.name in ['nt', 'os2']) drive_letters = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') ext_namespace_prefix = '\\\\?\\' @@ -264,6 +266,21 @@ def make_uri(self, path): return 'file:' + urlquote_from_bytes(path.as_posix().encode('utf-8')) def gethomedir(self, username): + if os.name == 'os2': + if not username: + try: + return os.environ['HOME'] + except KeyError: + import pwd + return pwd.getpwuid(os.getuid()).pw_dir + else: + import pwd + try: + return pwd.getpwnam(username).pw_dir + except KeyError: + raise RuntimeError("Can't determine home directory " + "for %r" % username) + if 'USERPROFILE' in os.environ: userhome = os.environ['USERPROFILE'] elif 'HOMEPATH' in os.environ: @@ -298,7 +315,7 @@ class _PosixFlavour(_Flavour): has_drv = False pathmod = posixpath - is_supported = (os.name != 'nt') + is_supported = (os.name not in ['nt', 'os2']) def splitroot(self, part, sep=sep): if part and part[0] == sep: @@ -1078,7 +1095,7 @@ class Path(PurePath): def __new__(cls, *args, **kwargs): if cls is Path: - cls = WindowsPath if os.name == 'nt' else PosixPath + cls = WindowsPath if os.name in ['nt', 'os2'] else PosixPath self = cls._from_parts(args, init=False) if not self._flavour.is_supported: raise NotImplementedError("cannot instantiate %r on your system" From 3c4419edb7a3cdfc5b15e5e20c76c6d1aba73c5d Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 28 Feb 2025 19:02:30 +0100 Subject: [PATCH 125/160] don't use -fvisibility --- configure.ac | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac index 9052bac8..5b5b8981 100644 --- a/configure.ac +++ b/configure.ac @@ -1848,6 +1848,9 @@ yes) CFLAGS_NODIST="$CFLAGS_NODIST -Werror=implicit-function-declaration" fi + # no visibility cflag on OS/2 please. + if test "$MACHDEP" != os2knix; then + AC_MSG_CHECKING(if we can use visibility in $CC) ac_save_cc="$CC" CC="$CC -fvisibility=hidden" @@ -1868,6 +1871,8 @@ yes) CFLAGS_NODIST="$CFLAGS_NODIST -fvisibility=hidden" fi + fi + # if using gcc on alpha, use -mieee to get (near) full IEEE 754 # support. Without this, treatment of subnormals doesn't follow # the standard. From 658eba0627f5610cd0718ea7e5a1752e1f62d21d Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 9 Apr 2025 20:22:57 +0200 Subject: [PATCH 126/160] fix a typo --- Include/exports.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Include/exports.h b/Include/exports.h index 620717a7..1765c8fa 100644 --- a/Include/exports.h +++ b/Include/exports.h @@ -72,7 +72,7 @@ # define PyAPI_DATA(RTYPE) extern Py_EXPORTED_SYMBOL RTYPE /* module init functions inside the core need no external linkage */ /* except for Cygwin to handle embedding */ -# if defined(__CYGWIN__) || defrined(__OS2__) +# if defined(__CYGWIN__) || defined(__OS2__) # define PyMODINIT_FUNC Py_EXPORTED_SYMBOL PyObject* # else /* __CYGWIN__ */ # define PyMODINIT_FUNC PyObject* @@ -83,7 +83,7 @@ /* Under Cygwin, auto-import functions to prevent compilation */ /* failures similar to those described at the bottom of 4.1: */ /* http://docs.python.org/extending/windows.html#a-cookbook-approach */ -# if !defined(__CYGWIN__) && !ddefined(__OS2__) +# if !defined(__CYGWIN__) && !defined(__OS2__) # define PyAPI_FUNC(RTYPE) Py_IMPORTED_SYMBOL RTYPE # endif /* !__CYGWIN__ */ # if !defined(__OS2__) From 614b4bc017d136bea6113e8c87d8babb5d42c47e Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 9 Apr 2025 20:23:31 +0200 Subject: [PATCH 127/160] adjuyt configure.ac, so it configures ok --- configure.ac | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 39194925..b2813f11 100644 --- a/configure.ac +++ b/configure.ac @@ -1194,6 +1194,7 @@ AS_CASE([$host/$ac_cv_cc_name], [aarch64-apple-ios*/clang], [PY_SUPPORT_TIER=3], dnl iOS on ARM64 [aarch64-*-linux-android/clang], [PY_SUPPORT_TIER=3], dnl Android on ARM64 [x86_64-*-linux-android/clang], [PY_SUPPORT_TIER=3], dnl Android on AMD64 + [*pc-os2-emx*/gcc], [PY_SUPPORT_TIER=3], dnl OS/2 [PY_SUPPORT_TIER=0] ) @@ -1335,6 +1336,7 @@ AC_ARG_WITH([suffix], [Emscripten/browser*], [EXEEXT=.js], [Emscripten/node*], [EXEEXT=.js], [WASI/*], [EXEEXT=.wasm], + [OS/2/*], [EXEEXT=.exe], [EXEEXT=] ) ]) @@ -1605,7 +1607,7 @@ if test $enable_shared = "yes"; then BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=BEGINLIBPATH="'`pwd`;$BEGINLIBPATH'" CONDENSED_VERSION=`echo "${LDVERSION}" | tr -d .,` - DLLLIBRARY='python$(CONDENSED_VERSION).dll' + DLLLIBRARY='pytho$(CONDENSED_VERSION).dll' ;; esac From 766de5b59336f245c5b70d5f9f387cea3a0fa3e5 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 9 Apr 2025 20:25:50 +0200 Subject: [PATCH 128/160] use the special macros only on os2, makes thins a lot easier --- Include/osdefs.h | 32 ++++---------------------------- Objects/exceptions.c | 6 +++++- Python/fileutils.c | 7 +++++-- Python/pathconfig.c | 25 +++++++++++++++---------- Python/traceback.c | 6 +++++- 5 files changed, 34 insertions(+), 42 deletions(-) diff --git a/Include/osdefs.h b/Include/osdefs.h index 92ee59c7..1569c40f 100644 --- a/Include/osdefs.h +++ b/Include/osdefs.h @@ -28,6 +28,10 @@ extern "C" { #define ALTSEP L'\\' #define DRVSEP L':' #define DELIM L';' +#define OS2_SEP(ch) ((ch) == SEP || (ch) == ALTSEP) +#define OS2_DRV(path) (*(path) && (path)[1] == DRVSEP) +#define OS2_ABSPATH(path) (OS2_SEP((path)[0]) || OS2_DRV(path)) +#define OS2_ANYSEP(path) ( wcschr((path), SEP) || wcschr((path), ALTSEP) || OS2_DRV(path) ) #endif #ifdef __VXWORKS__ @@ -39,34 +43,6 @@ extern "C" { # define SEP L'/' #endif -/* Test if `ch' is a filename separator (bird) */ -#ifdef ALTSEP -#define IS_SEP(ch) ((ch) == SEP || (ch) == ALTSEP) -#else -#define IS_SEP(ch) ((ch) == SEP) -#endif - -/* Test if `path' has a drive letter or not. (bird) */ -#ifdef DRVSEP -#define HAS_DRV(path) (*(path) && (path)[1] == DRVSEP) -#else -#define HAS_DRV(path) 0 -#endif - -/* Test if `path' is absolute or not. (bird) */ -#ifdef DRVSEP -#define IS_ABSPATH(path) (IS_SEP((path)[0]) || HAS_DRV(path)) -#else -#define IS_ABSPATH(path) (IS_SEP((path)[0])) -#endif - -/* Test if `path' contains any of the path separators including drive letter. (bird) */ -#ifdef ALTSEP -#define HAS_ANYSEP(path) ( wcschr((path), SEP) || wcschr((path), ALTSEP) || HAS_DRV(path) ) -#else -#define HAS_ANYSEP(path) ( wcschr((path), SEP) || HAS_DRV(path) ) -#endif - /* Max pathname length */ #ifdef __hpux # include diff --git a/Objects/exceptions.c b/Objects/exceptions.c index 1ce3814e..0c424bb2 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -2479,7 +2479,11 @@ my_basename(PyObject *name) size = PyUnicode_GET_LENGTH(name); offset = 0; for(i=0; i < size; i++) { - if (IS_SEP(PyUnicode_READ(kind, data, i))) { +#ifndef __OS2__ + if (PyUnicode_READ(kind, data, i) == SEP) { +#else + if (OS2_SEP(PyUnicode_READ(kind, data, i))) { +#endif offset = i + 1; } } diff --git a/Python/fileutils.c b/Python/fileutils.c index d41afc5f..be368622 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -22,8 +22,10 @@ extern int winerror_to_errno(int); #endif #ifdef __OS2__ #define INCL_DOS +#define INCL_DOSERRORS #include #endif + #ifdef HAVE_LANGINFO_H # include // nl_langinfo(CODESET) #endif @@ -2183,13 +2185,14 @@ _Py_isabs(const wchar_t *path) return 1; #else #ifdef __OS2__ - return (IS_ABSPATH(path)); + return (OS2_ABSPATH(path)); #else return (path[0] == SEP); #endif #endif } + /* Get an absolute path. On error (ex: fail to get the current directory), return -1. On memory allocation failure, set *abspath_p to NULL and return 0. @@ -2325,7 +2328,7 @@ _Py_skiproot(const wchar_t *path, Py_ssize_t size, Py_ssize_t *drvsize, { assert(drvsize); assert(rootsize); -#ifndef MS_WINDOWS +#if !defined(MS_WINDOWS) && !defined(__OS2__) #define IS_SEP(x) (*(x) == SEP) *drvsize = 0; if (!IS_SEP(&path[0])) { diff --git a/Python/pathconfig.c b/Python/pathconfig.c index ede2945c..41e8d3a7 100644 --- a/Python/pathconfig.c +++ b/Python/pathconfig.c @@ -413,22 +413,29 @@ _PyPathConfig_ComputeSysPath0(const PyWideStringList *argv, PyObject **path0_p) if (nr > 0) { /* It's a symlink */ link[nr] = '\0'; - if (IS_ABSPATH(link)) { +#ifndef __OS2__ + if (link[0] == SEP) { +#else + if (OS2_ABSPATH(link)) { +#endif path0 = link; /* Link to absolute path */ } - else if (!HAS_ANYSEP(link)) { +#ifndef __OS2__ + else if (wcschr(link, SEP) == NULL) { +#else + else if (!OS2_ANYSEP(link)) { +#endif /* Link without path */ } else { /* Must join(dirname(path0), link) */ wchar_t *q = wcsrchr(path0, SEP); -#ifdef ALTSEP +#ifdef __OS2__ wchar_t *q2 = wcsrchr(q ? q : path0, ALTSEP); if (q2) q = q2; -#endif -#ifdef DRVSEP - if (!q && HAS_DRV(path0)) + + if (!q && OS2_DRV(path0)) q = wcsrchr(path0, DRVSEP); #endif if (q == NULL) { @@ -483,15 +490,13 @@ _PyPathConfig_ComputeSysPath0(const PyWideStringList *argv, PyObject **path0_p) } #endif p = wcsrchr(path0, SEP); -#ifdef ALTSEP +#ifdef __OS2__ { wchar_t *p2 = wcsrchr(p ? p : path0, ALTSEP); if (p2 != NULL) p = p2; } -#endif -#ifdef DRVSEP - if (p == NULL && HAS_DRV(path0)) + if (p == NULL && OS2_DRV(path0)) p = wcsrchr(path0, DRVSEP); #endif } diff --git a/Python/traceback.c b/Python/traceback.c index 56fe4d7e..0cfd3ca3 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -374,7 +374,11 @@ _Py_FindSourceFile(PyObject *filename, char* namebuf, size_t namelen, PyObject * Py_DECREF(path); if (strlen(namebuf) != (size_t)len) continue; /* v contains '\0' */ - if (len > 0 && !IS_SEP(namebuf[len-1])) +#ifndef __OS2__ + if (len > 0 && namebuf[len-1] != SEP) +#else + if (len > 0 && !OS2_SEP(namebuf[len-1])) +#endif namebuf[len++] = SEP; strcpy(namebuf+len, tail); From cc37f22fa2a43bdc556ed41bdfd05f86bbe02dac Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 9 Apr 2025 20:28:59 +0200 Subject: [PATCH 129/160] make it build --- Modules/clinic/posixmodule.c.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index c072b8e9..9f51dea3 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -4152,8 +4152,8 @@ os_spawn2(PyObject *module, PyObject *const *args, Py_ssize_t nargs) { PyObject *return_value = NULL; int mode; - path_t path = PATH_T_INITIALIZE("spawn2", "path", 0, 0); - path_t cwd = PATH_T_INITIALIZE("spawn2", "cwd", 1, 0); + path_t path = PATH_T_INITIALIZE_P("spawn2", "path", 0, 0, 0, 0); + path_t cwd = PATH_T_INITIALIZE_P("spawn2", "cwd", 1, 0, 0, 0); PyObject *argv; PyObject *env; PyObject *stdfds; @@ -4166,7 +4166,7 @@ os_spawn2(PyObject *module, PyObject *const *args, Py_ssize_t nargs) "integer argument expected, got float" ); goto exit; } - mode = _PyLong_AsInt(args[0]); + mode = PyLong_AsInt(args[0]); if (mode == -1 && PyErr_Occurred()) { goto exit; } From d424c44ff59484af4c04ac62f3236e360262ab6c Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 9 Apr 2025 20:30:00 +0200 Subject: [PATCH 130/160] add Py_ID(os2) --- Include/internal/pycore_global_objects_fini_generated.h | 3 +++ Include/internal/pycore_global_strings.h | 3 +++ Modules/Setup.bootstrap.in | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Include/internal/pycore_global_objects_fini_generated.h b/Include/internal/pycore_global_objects_fini_generated.h index cd56ffde..01e183e8 100644 --- a/Include/internal/pycore_global_objects_fini_generated.h +++ b/Include/internal/pycore_global_objects_fini_generated.h @@ -1120,6 +1120,9 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) { _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(options)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(order)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(origin)); +#ifdef __OS2__ + _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(os2)); +#endif _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(out_fd)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(outgoing)); _PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(overlapped)); diff --git a/Include/internal/pycore_global_strings.h b/Include/internal/pycore_global_strings.h index cad2d1a8..c679960e 100644 --- a/Include/internal/pycore_global_strings.h +++ b/Include/internal/pycore_global_strings.h @@ -610,6 +610,9 @@ struct _Py_global_strings { STRUCT_FOR_ID(order) STRUCT_FOR_ID(origin) STRUCT_FOR_ID(out_fd) +#ifdef __OS2__ + STRUCT_FOR_ID(os2) +#endif STRUCT_FOR_ID(outgoing) STRUCT_FOR_ID(overlapped) STRUCT_FOR_ID(owner) diff --git a/Modules/Setup.bootstrap.in b/Modules/Setup.bootstrap.in index aa4e60e2..855b5a8e 100644 --- a/Modules/Setup.bootstrap.in +++ b/Modules/Setup.bootstrap.in @@ -8,7 +8,7 @@ # module C APIs are used in core atexit atexitmodule.c faulthandler faulthandler.c -posix posixmodule.c +os2 posixmodule.c _signal signalmodule.c _tracemalloc _tracemalloc.c _suggestions _suggestions.c From 3c5c2ebefd21a4f73334eeb3319a9b001e1373a9 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 10 Apr 2025 14:46:50 +0200 Subject: [PATCH 131/160] add exe extention to frozen_module, so it doesnt get built every run --- Makefile.pre.in | 2 +- configure.ac | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index 06dcab50..f1c7f7c9 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1548,7 +1548,7 @@ Programs/_freeze_module.o: Programs/_freeze_module.c Makefile Modules/getpath_noop.o: $(srcdir)/Modules/getpath_noop.c Makefile -Programs/_freeze_module: Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) +Programs/_freeze_module$(EXE): Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_module.o Modules/getpath_noop.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) # We manually freeze getpath.py rather than through freeze_modules diff --git a/configure.ac b/configure.ac index b2813f11..37f5bf8a 100644 --- a/configure.ac +++ b/configure.ac @@ -191,8 +191,8 @@ AS_VAR_IF([cross_compiling], [yes], ], [ dnl internal build tools also depend on Programs/_freeze_module and _bootstrap_python. - FREEZE_MODULE_BOOTSTRAP='./Programs/_freeze_module' - FREEZE_MODULE_BOOTSTRAP_DEPS="Programs/_freeze_module" + FREEZE_MODULE_BOOTSTRAP='./Programs/_freeze_module$(EXE)' + FREEZE_MODULE_BOOTSTRAP_DEPS="Programs/_freeze_module\$(EXE)" FREEZE_MODULE='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py' FREEZE_MODULE_DEPS="_bootstrap_python \$(srcdir)/Programs/_freeze_module.py" PYTHON_FOR_BUILD_DEPS='$(BUILDPYTHON)' From 71c66fa731259c05f4dc14ee18ecad2ce9dbba26 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 10 Apr 2025 16:12:54 +0200 Subject: [PATCH 132/160] we lack wscicmp, so use stricmp for now --- Modules/getpath.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Modules/getpath.c b/Modules/getpath.c index f2450905..cefba4e9 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -149,8 +149,10 @@ getpath_hassuffix(PyObject *Py_UNUSED(self), PyObject *args) suffix = PyUnicode_AsWideCharString(suffixobj, &suffixLen); if (suffix) { if (suffixLen > len || -#if defined(MS_WINDOWS) || defined(__OS2__) +#if defined(MS_WINDOWS) wcsicmp(&path[len - suffixLen], suffix) != 0 +#elif defined(__OS2__) + stricmp((const char*)&path[len - suffixLen], (const char*)suffix) != 0 #else wcscmp(&path[len - suffixLen], suffix) != 0 #endif From 16d7d8047833e8b065b42428f077223106c4f04c Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 10 Apr 2025 16:56:15 +0200 Subject: [PATCH 133/160] add Py_ID(os2) by hand, as regen is not running. reason is they use python code introduced in 3.10 --- Include/internal/pycore_unicodeobject_generated.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Include/internal/pycore_unicodeobject_generated.h b/Include/internal/pycore_unicodeobject_generated.h index 7f6b6e07..c76b50e3 100644 --- a/Include/internal/pycore_unicodeobject_generated.h +++ b/Include/internal/pycore_unicodeobject_generated.h @@ -2236,6 +2236,10 @@ _PyUnicode_InitStaticStrings(PyInterpreterState *interp) { _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); assert(PyUnicode_GET_LENGTH(string) != 1); + string = &_Py_ID(os2); + _PyUnicode_InternStatic(interp, &string); + assert(_PyUnicode_CheckConsistency(string, 1)); + assert(PyUnicode_GET_LENGTH(string) != 1); string = &_Py_ID(out_fd); _PyUnicode_InternStatic(interp, &string); assert(_PyUnicode_CheckConsistency(string, 1)); From 3e25cec085f8fe87d859de6a8a8f16f53ab2bf83 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 10 Apr 2025 17:57:52 +0200 Subject: [PATCH 134/160] don't regenerate _bootstrap_python every time --- Makefile.pre.in | 6 +++--- configure.ac | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index f1c7f7c9..a0c8d701 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1462,7 +1462,7 @@ BOOTSTRAP_HEADERS = \ Programs/_bootstrap_python.o: Programs/_bootstrap_python.c $(BOOTSTRAP_HEADERS) $(PYTHON_HEADERS) -_bootstrap_python: $(LIBRARY_OBJS_OMIT_FROZEN) Programs/_bootstrap_python.o Modules/getpath.o Modules/Setup.local +_bootstrap_python$(EXE): $(LIBRARY_OBJS_OMIT_FROZEN) Programs/_bootstrap_python.o Modules/getpath.o Modules/Setup.local $(LINKCC) $(PY_LDFLAGS_NOLTO) -o $@ $(LIBRARY_OBJS_OMIT_FROZEN) \ Programs/_bootstrap_python.o Modules/getpath.o $(LIBS) $(MODLIBS) $(SYSLIBS) @@ -2980,10 +2980,10 @@ clean-retain-profile: pycremoval find build -name '*.py' -exec rm -f {} ';' || true find build -name '*.py[co]' -exec rm -f {} ';' || true -rm -f pybuilddir.txt - -rm -f _bootstrap_python + -rm -f _bootstrap_python$(EXE) -rm -f python.html python*.js python.data python*.symbols python*.map -rm -f $(WASM_STDLIB) - -rm -f Programs/_testembed Programs/_freeze_module + -rm -f Programs/_testembed Programs/_freeze_module$(EXE) -rm -rf Python/deepfreeze -rm -f Python/frozen_modules/*.h -rm -f Python/frozen_modules/MANIFEST diff --git a/configure.ac b/configure.ac index 37f5bf8a..26ff4921 100644 --- a/configure.ac +++ b/configure.ac @@ -171,7 +171,7 @@ AC_ARG_WITH([build-python], [AC_MSG_ERROR([Cross compiling requires --with-build-python])] ) PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E' - PYTHON_FOR_FREEZE="./_bootstrap_python" + PYTHON_FOR_FREEZE="./_bootstrap_python\$(EXE)" ] ) AC_SUBST([PYTHON_FOR_BUILD]) @@ -194,7 +194,7 @@ AS_VAR_IF([cross_compiling], [yes], FREEZE_MODULE_BOOTSTRAP='./Programs/_freeze_module$(EXE)' FREEZE_MODULE_BOOTSTRAP_DEPS="Programs/_freeze_module\$(EXE)" FREEZE_MODULE='$(PYTHON_FOR_FREEZE) $(srcdir)/Programs/_freeze_module.py' - FREEZE_MODULE_DEPS="_bootstrap_python \$(srcdir)/Programs/_freeze_module.py" + FREEZE_MODULE_DEPS="_bootstrap_python\$(EXE) \$(srcdir)/Programs/_freeze_module.py" PYTHON_FOR_BUILD_DEPS='$(BUILDPYTHON)' ] ) From 7187ddedea856bc96b69a6e230cf2b00b3f52463 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 11 Apr 2025 18:57:48 +0200 Subject: [PATCH 135/160] fix some typos --- Lib/ntpath.py | 2 +- Lib/sysconfig/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/ntpath.py b/Lib/ntpath.py index c4a9f8d5..87debd19 100644 --- a/Lib/ntpath.py +++ b/Lib/ntpath.py @@ -371,7 +371,7 @@ def expanduser(path): # password database, return the path unchanged return path else: - return = os.environ['HOME'] + return os.environ['HOME'] if 'USERPROFILE' in os.environ: userhome = os.environ['USERPROFILE'] diff --git a/Lib/sysconfig/__init__.py b/Lib/sysconfig/__init__.py index a0656895..489f30bb 100644 --- a/Lib/sysconfig/__init__.py +++ b/Lib/sysconfig/__init__.py @@ -123,7 +123,7 @@ # For the OS-native venv scheme, we essentially provide an alias: if os.name == 'nt': _INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['nt_venv'] -elif os.name = 'os2': +elif os.name == 'os2': _INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['os2_venv'] else: _INSTALL_SCHEMES['venv'] = _INSTALL_SCHEMES['posix_venv'] From a23281abbda9fa1091fb7d039bcdb514a160149b Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 11 Apr 2025 18:59:29 +0200 Subject: [PATCH 136/160] adapt GetLocaleEncoding to wchar --- Python/fileutils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Python/fileutils.c b/Python/fileutils.c index be368622..d06fb958 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -927,13 +927,13 @@ _Py_GetLocaleEncoding(void) encoding[Py_ARRAY_LENGTH(encoding) - 1] = 0; return _PyMem_RawWcsdup(encoding); #elif defined(__OS2__) - char encoding[100]; + wchar_t encoding[23]; ULONG cp[3]; ULONG cplen; - strcpy(encoding, ""); if (DosQueryCp (sizeof (cp), cp, &cplen) == NO_ERROR) - PyOS_snprintf(encoding, sizeof(encoding), "cp%lu", cp[0]); + swprintf(encoding, Py_ARRAY_LENGTH(encoding), L"cp%lu", cp[0]); + encoding[Py_ARRAY_LENGTH(encoding) - 1] = 0; return _PyMem_RawWcsdup(encoding); #else const char *encoding = nl_langinfo(CODESET); From ac6f0a1872399c69d4ca8d0f689982430e4c6788 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 11 Apr 2025 19:00:14 +0200 Subject: [PATCH 137/160] fix path finding during build --- Modules/getpath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/getpath.py b/Modules/getpath.py index 97edca76..4ba4cf68 100644 --- a/Modules/getpath.py +++ b/Modules/getpath.py @@ -204,7 +204,7 @@ elif os_name == 'os2': BUILDDIR_TXT = 'pybuilddir.txt' - BUILD_LANDMARK = f'{VPATH}\\Modules\\Setup.local' + BUILD_LANDMARK = 'Modules\\Setup.local' DEFAULT_PROGRAM_NAME = f'python' STDLIB_SUBDIR = 'Lib' STDLIB_LANDMARKS = [f'{STDLIB_SUBDIR}\\os.py', f'{STDLIB_SUBDIR}\\os.pyc'] From d1ebfcf811a59b9272628e8e6f2710be12fddeb0 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 11 Apr 2025 19:21:22 +0200 Subject: [PATCH 138/160] fix some buildbreaks --- Lib/pathlib/_local.py | 6 +++--- configure.ac | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Lib/pathlib/_local.py b/Lib/pathlib/_local.py index 872061ba..91599c7b 100644 --- a/Lib/pathlib/_local.py +++ b/Lib/pathlib/_local.py @@ -504,7 +504,7 @@ def __init__(self, *args, **kwargs): def __new__(cls, *args, **kwargs): if cls is Path: - cls = WindowsPath if os.name in ['nt', 'os2] else PosixPath + cls = WindowsPath if os.name in ['nt', 'os2'] else PosixPath return object.__new__(cls) def stat(self, *, follow_symlinks=True): @@ -843,7 +843,7 @@ class PosixPath(Path, PurePosixPath): """ __slots__ = () - if os.name == 'nt': + if os.name in ['nt', 'os2']: def __new__(cls, *args, **kwargs): raise UnsupportedOperation( f"cannot instantiate {cls.__name__!r} on your system") @@ -855,7 +855,7 @@ class WindowsPath(Path, PureWindowsPath): """ __slots__ = () - if os.name !in ['nt', 'os2]: + if os.name not in ['nt', 'os2']: def __new__(cls, *args, **kwargs): raise UnsupportedOperation( f"cannot instantiate {cls.__name__!r} on your system") diff --git a/configure.ac b/configure.ac index 26ff4921..c635a8d6 100644 --- a/configure.ac +++ b/configure.ac @@ -6246,8 +6246,8 @@ AC_SUBST([LIBPYTHON]) MODULE_DEPS_SHARED='$(MODULE_DEPS_STATIC) $(EXPORTSYMS)' LIBPYTHON='' -# On Android and Cygwin the shared libraries must be linked with libpython. -if test "$PY_ENABLE_SHARED" = "1" && ( test -n "$ANDROID_API_LEVEL" || test "$MACHDEP" = "cygwin"); then +# On Android, OS/2 and Cygwin the shared libraries must be linked with libpython. +if test "$PY_ENABLE_SHARED" = "1" && ( test -n "$ANDROID_API_LEVEL" || test "$MACHDEP" = "cygwin" || test "$MACHDEP" = "os2knix"); then MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(LDLIBRARY)" LIBPYTHON="\$(BLDLIBRARY)" fi From cdad0cd703268fe0f6be7edac2fcf8061a4c91bf Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 15 Apr 2025 16:00:19 +0200 Subject: [PATCH 139/160] treat /@unixroot as absolute path --- Lib/ntpath.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Lib/ntpath.py b/Lib/ntpath.py index 87debd19..4ca70bdb 100644 --- a/Lib/ntpath.py +++ b/Lib/ntpath.py @@ -16,6 +16,7 @@ altsep = '/' defpath = '.;C:\\bin' devnull = 'nul' +unixroot = '\\@unixroot' import os import sys @@ -85,13 +86,20 @@ def isabs(s): altsep = b'/' colon_sep = b':\\' double_sep = b'\\\\' + unixroot = b'\\@unixroot' else: sep = '\\' altsep = '/' colon_sep = ':\\' double_sep = '\\\\' - s = s[:3].replace(altsep, sep) + unixroot = '\\@unixroot' + if os.name == 'os2': + s = s[:10].replace(altsep, sep) + else: + s = s[:3].replace(altsep, sep) # Absolute: UNC, device, and paths with a drive and root. + if os.name == 'os2': + return s.startswith(colon_sep, 1) or s.startswith(double_sep) or s.startswith(unixroot) return s.startswith(colon_sep, 1) or s.startswith(double_sep) From cfa3ec6c69f227fb2af84e991828adcd8c8efca9 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 15 Apr 2025 16:01:32 +0200 Subject: [PATCH 140/160] create a .def file for the modules, shorten the names if needed and create a symlink --- Modules/makesetup | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Modules/makesetup b/Modules/makesetup index 8bb971b1..2ac42493 100755 --- a/Modules/makesetup +++ b/Modules/makesetup @@ -54,6 +54,7 @@ config='' makepre='' noobjects='' doconfig=yes +system=`uname -s` while : do case $1 in @@ -267,14 +268,43 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | for mod in $mods do file="$srcdir/$mod\$(EXT_SUFFIX)" + if test "$system" = "OS/2" + then + if test ${#mod} -gt 8 + then + first4="`echo $mod | cut -c1-4`" + rand="$(mktemp --dry-run XXXX)" + mod83="$first4$rand" + file83="$srcdir/$mod83\$(EXT_SUFFIX)" + else + mod83="$mod" + file83="$file" + fi + fi case $doconfig in no) SHAREDMODS="$SHAREDMODS $file" BUILT_SHARED="$BUILT_SHARED $mod" ;; esac + if test "$system" = "OS/2" + then + objs="$objs $srcdir/$mod.def" + fi rule="$file: $objs" + if test "$system" != "OS/2" + then rule="$rule; \$(BLDSHARED) $objs $libs \$(LIBPYTHON) -o $file" + else + rule="$rule; \$(BLDSHARED) $objs $libs \$(LIBPYTHON) -o $file83" + if test ${#mod} -gt 8 + then + rule="$rule; rm -f $file; ln -s $mod83\$(EXT_SUFFIX) $file" + fi + rule="$rule\n$srcdir/$mod.def: \n\t echo \"LIBRARY $mod83 INITINSTANCE TERMINSTANCE\" >\$@" + rule="$rule\n\t echo \"DESCRIPTION \\\"@\#\$(VENDOR):\$(VERSION)\#@\$(BUILD_INFO)::::0::@@$mod\\\"\" >>\$@" + rule="$rule\n\t echo \"DATA MULTIPLE\" >>\$@" + fi echo "$rule" >>$rulesf done done From 7ca7d1f1ce62c795448e93864c0c08591b1bc346 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 15 Apr 2025 16:02:49 +0200 Subject: [PATCH 141/160] use only .pyd as extentsion for modules --- configure.ac | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac index c635a8d6..6c2ba56e 100644 --- a/configure.ac +++ b/configure.ac @@ -6231,7 +6231,12 @@ if test "$Py_DEBUG" = 'true'; then fi AC_SUBST([EXT_SUFFIX]) +if test "$MACHDEP" = "os2knix" +then +EXT_SUFFIX=.pyd +else EXT_SUFFIX=.${SOABI}${SHLIB_SUFFIX} +fi AC_MSG_CHECKING([LDVERSION]) LDVERSION='$(VERSION)$(ABIFLAGS)' From 5a80ee3f35a19c0cab0aac883d604616b01b2463 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 17 Apr 2025 17:39:47 +0200 Subject: [PATCH 142/160] adapt path handling to latest python --- Lib/os2knixpath.py | 207 ++++++++++++++++++++++++++------------------- 1 file changed, 122 insertions(+), 85 deletions(-) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index 30aab749..c6afa805 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -17,9 +17,11 @@ "ismount","expanduser","expandvars","normpath","abspath", "curdir","pardir","sep","pathsep","defpath","altsep", "extsep","devnull","realpath","supports_unicode_filenames","relpath", - "samefile","sameopenfile","samestat", "commonpath", "splitunc"] + "samefile","sameopenfile","samestat", "commonpath"] # strings representing various path-related bits and pieces +# These are primarily for export; internally, they are hardcoded. +# Should be set before imports for resolving cyclic dependency. curdir = '.' pardir = '..' extsep = '.' @@ -29,7 +31,13 @@ defpath = '.;' + (os.environ['UNIXROOT'] + '\\usr\\bin' if 'UNIXROOT' in os.environ else 'C:\\bin') devnull = 'nul' -# Normalize the case of a pathname and map slashes to backslashes. +def _get_bothseps(path): + if isinstance(path, bytes): + return b'\\/' + else: + return '\\/' + +# Normalize the case of a pathname and map altseps to seps. # Other normalizations (such as optimizing '../' away) are not done # (this is done by normpath). @@ -37,6 +45,13 @@ def normcase(s): """Normalize case of pathname. Makes all characters lowercase and all altseps into seps.""" + s = os.fspath(s) + if isinstance(s, bytes): + sep = b'/' + altsep = b'\\' + else: + sep = '/' + altsep = '\\' return s.replace(altsep, sep).lower() @@ -44,47 +59,34 @@ def normcase(s): def join(a, *p): """Join two or more pathname components, inserting sep as needed. - Also replaces all altsep chars with sep in the returned string to make it consistent.""" + a = os.fspath(a) path = a - for b in p: - if isabs(b): - path = b - elif path == '' or path[-1:] in '/\\:': - path = path + b - else: - path = path + '/' + b - return path.replace(altsep, sep) + if isinstance(path, bytes): + sep = b'/' + seps = b'\\/;' + altsep = b'\\' + else: + sep = '/' + seps = '\\/:' + altsep = '\\' -# Parse UNC paths -def splitunc(p): - """Split a pathname into UNC mount point and relative path specifiers. - - Return a 2-tuple (unc, rest); either part may be empty. - If unc is not empty, it has the form '//host/mount' (or similar - using backslashes). unc+rest is always the input path. - Paths containing drive letters never have an UNC part. - """ - if p[1:2] == ':': - return '', p # Drive letter present - firstTwo = p[0:2] - if firstTwo == '/' * 2 or firstTwo == '\\' * 2: - # is a UNC path: - # vvvvvvvvvvvvvvvvvvvv equivalent to drive letter - # \\machine\mountpoint\directories... - # directory ^^^^^^^^^^^^^^^ - normp = normcase(p) - index = normp.find('/', 2) - if index == -1: - ##raise RuntimeError, 'illegal UNC path: "' + p + '"' - return ("", p) - index = normp.find('/', index + 1) - if index == -1: - index = len(p) - return p[:index], p[index:] - return '', p + try: + if not p: + path[:0] + sep #23780: Ensure compatible data type even if p is null. + for b in map(os.fspath, p): + if isabs(b): + path = b + elif not path or path.endswith(seps): + path = path + b + else: + path = path + sep + b + except (TypeError, AttributeError, BytesWarning): + genericpath._check_arg_types('join', a, *p) + raise + return path.replace(altsep, sep) # Return the tail (basename) part of a path. @@ -107,39 +109,61 @@ def dirname(p): # or an UNC path with at most a / or \ after the mount point. def ismount(path): - """Test whether a path is a mount point (defined as root of drive)""" - unc, rest = splitunc(path) - if unc: - return rest in ("", "/", "\\") - p = splitdrive(path)[1] - return len(p) == 1 and p[0] in '/\\' - + """Test whether a path is a mount point (a drive root, the root of a + share, or a mounted volume)""" + path = os.fspath(path) + seps = _get_bothseps(path) + path = abspath(path) + root, rest = splitdrive(path) + if root and root[0] in seps: + return (not rest) or (rest in seps) + if rest in seps: + return True + + return False # Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A/B. def normpath(path): """Normalize path, eliminating double slashes, etc.""" - path = str(path).replace('\\', '/') + path = os.fspath(path) + if isinstance(path, bytes): + sep = b'/' + altsep = b'\\' + curdir = b'.' + pardir = b'..' + else: + sep = '/' + altsep = '\\' + curdir = '.' + pardir = '..' + path = path.replace(altsep, sep) prefix, path = splitdrive(path) - while path[:1] == '/': - prefix = prefix + '/' - path = path[1:] - comps = path.split('/') + + # collapse initial backslashes + if path.startswith(sep): + prefix += sep + path = path.lstrip(sep) + + comps = path.split(sep) i = 0 while i < len(comps): - if comps[i] == '.': - del comps[i] - elif comps[i] == '..' and i > 0 and comps[i-1] not in ('', '..'): - del comps[i-1:i+1] - i = i - 1 - elif comps[i] == '' and i > 0 and comps[i-1] != '': + if not comps[i] or comps[i] == curdir: del comps[i] + elif comps[i] == pardir: + if i > 0 and comps[i-1] != pardir: + del comps[i-1:i+1] + i -= 1 + elif i == 0 and prefix.endswith(sep): + del comps[i] + else: + i += 1 else: - i = i + 1 + i += 1 # If the path is now empty, substitute '.' if not prefix and not comps: - comps.append('.') - return prefix + '/'.join(comps) + comps.append(curdir) + return prefix + sep.join(comps) # Return an absolute path. @@ -250,38 +274,51 @@ def samestat(s1, s2): supports_unicode_filenames = False -def relpath(path, start=curdir): +def relpath(path, start=None): """Return a relative version of a path""" + path = os.fspath(path) + if isinstance(path, bytes): + sep = b'\\' + curdir = b'.' + pardir = b'..' + else: + sep = '\\' + curdir = '.' + pardir = '..' if not path: raise ValueError("no path specified") - start_list = abspath(start).split(sep) - path_list = abspath(path).split(sep) - # Remove empty components after trailing slashes - if (start_list[-1] == ''): - start_list.pop() - if (path_list[-1] == ''): - path_list.pop() - if start_list[0].lower() != path_list[0].lower(): - unc_path, rest = splitunc(path) - unc_start, rest = splitunc(start) - if bool(unc_path) ^ bool(unc_start): - raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)" - % (path, start)) - else: - raise ValueError("path is on drive %s, start on drive %s" - % (path_list[0], start_list[0])) - # Work out how much of the filepath is shared by start and path. - for i in range(min(len(start_list), len(path_list))): - if start_list[i].lower() != path_list[i].lower(): - break + + if start is None: + start = curdir else: - i += 1 + start = os.fspath(start) - rel_list = [pardir] * (len(start_list)-i) + path_list[i:] - if not rel_list: - return curdir - return join(*rel_list) + try: + start_abs = abspath(start) + path_abs = abspath(path) + start_drive, start_rest = splitdrive(start_abs) + path_drive, path_rest = splitdrive(path_abs) + if normcase(start_drive) != normcase(path_drive): + raise ValueError("path is on mount %r, start on mount %r" % ( + path_drive, start_drive)) + + start_list = start_rest.split(sep) if start_rest else [] + path_list = path_rest.split(sep) if path_list else [] + # Work out how much of the filepath is shared by start and path. + i = 0 + for e1, e2 in zip(start_list, path_list): + if normcase(e1) != normcase(e2): + break + i += 1 + + rel_list = [pardir] * (len(start_list)-i) + path_list[i:] + if not rel_list: + return curdir + return join(*rel_list) + except (TypeError, ValueError, AttributeError, BytesWarning, DeprecationWarning): + genericpath._check_arg_types('relpath', path, start) + raise # Return the longest common sub-path of the sequence of paths given as input. # The function is case-insensitive and 'separator-insensitive', i.e. if the From 6cfc7a57417c1f8d2240bc47d101d62fdf6592ab Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 17 Apr 2025 18:03:43 +0200 Subject: [PATCH 143/160] fixed a typo --- Lib/os2knixpath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index c6afa805..f88d38fc 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -304,7 +304,7 @@ def relpath(path, start=None): path_drive, start_drive)) start_list = start_rest.split(sep) if start_rest else [] - path_list = path_rest.split(sep) if path_list else [] + path_list = path_rest.split(sep) if path_rest else [] # Work out how much of the filepath is shared by start and path. i = 0 for e1, e2 in zip(start_list, path_list): From 15a780e220d848782ae99ba2c68e3d9c3994ba0c Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 17 Apr 2025 20:16:21 +0200 Subject: [PATCH 144/160] fix another typo --- Lib/os2knixpath.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index f88d38fc..e4a42eb8 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -278,11 +278,11 @@ def relpath(path, start=None): """Return a relative version of a path""" path = os.fspath(path) if isinstance(path, bytes): - sep = b'\\' + sep = b'/' curdir = b'.' pardir = b'..' else: - sep = '\\' + sep = '/' curdir = '.' pardir = '..' From 9960f52e47e30a34427ff948b60296974e6515c9 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 23 Apr 2025 13:30:03 +0200 Subject: [PATCH 145/160] make sure .pc files are ceated right --- configure.ac | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configure.ac b/configure.ac index 6c2ba56e..20efdd04 100644 --- a/configure.ac +++ b/configure.ac @@ -6254,7 +6254,11 @@ LIBPYTHON='' # On Android, OS/2 and Cygwin the shared libraries must be linked with libpython. if test "$PY_ENABLE_SHARED" = "1" && ( test -n "$ANDROID_API_LEVEL" || test "$MACHDEP" = "cygwin" || test "$MACHDEP" = "os2knix"); then MODULE_DEPS_SHARED="$MODULE_DEPS_SHARED \$(LDLIBRARY)" + if ( test "$MACHDEP" = "os2knix"); then + LIBPYTHON=`echo -lpython${VERSION}${ABIFLAGS}` + else LIBPYTHON="\$(BLDLIBRARY)" + fi fi # On iOS the shared libraries must be linked with the Python framework From 38c98552a8afc93c95d70dc5094055667938270b Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Wed, 7 May 2025 12:29:12 +0200 Subject: [PATCH 146/160] don't build _testembed.exe on every run --- Makefile.pre.in | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in index a0c8d701..0c4e073e 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -697,7 +697,7 @@ list-targets: .PHONY: build_all build_all: check-clean-src check-app-store-compliance $(BUILDPYTHON) platform sharedmods \ - gdbhooks Programs/_testembed scripts checksharedmods rundsymutil + gdbhooks Programs/_testembed$(EXE) scripts checksharedmods rundsymutil .PHONY: build_wasm build_wasm: check-clean-src $(BUILDPYTHON) platform sharedmods \ @@ -1449,7 +1449,7 @@ regen-re: $(BUILDPYTHON) # using Tools/build/generate_re_casefix.py $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py -Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS) +Programs/_testembed$(EXE): Programs/_testembed.o $(LINK_PYTHON_DEPS) $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS) ############################################################################ @@ -1830,7 +1830,7 @@ regen-keyword: $(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new .PHONY: regen-stdlib-module-names -regen-stdlib-module-names: all Programs/_testembed +regen-stdlib-module-names: all Programs/_testembed$(EXE) # Regenerate Python/stdlib_module_names.h # using Tools/build/generate_stdlib_module_names.py $(RUNSHARED) ./$(BUILDPYTHON) \ @@ -2983,7 +2983,7 @@ clean-retain-profile: pycremoval -rm -f _bootstrap_python$(EXE) -rm -f python.html python*.js python.data python*.symbols python*.map -rm -f $(WASM_STDLIB) - -rm -f Programs/_testembed Programs/_freeze_module$(EXE) + -rm -f Programs/_testembed$(EXE) Programs/_freeze_module$(EXE) -rm -rf Python/deepfreeze -rm -f Python/frozen_modules/*.h -rm -f Python/frozen_modules/MANIFEST From c9d831d9aee244623cab37cc2e95b4a4a530659a Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 8 May 2025 08:09:50 +0200 Subject: [PATCH 147/160] our ln doesn't work correct with the -f flag, so we have to delete the links first or we get en error, if the link already is there --- Makefile.pre.in | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.pre.in b/Makefile.pre.in index 0c4e073e..0aeba270 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1379,6 +1379,7 @@ sharedmods: $(SHAREDMODS) pybuilddir.txt $(MKDIR_P) $$target; \ for mod in X $(SHAREDMODS); do \ if test $$mod != X; then \ + rm -f $$target/`basename $$mod`; \ $(LN) -sf ../../$$mod $$target/`basename $$mod`; \ fi; \ done From 3e9d2f70739ebaa69ac72b7da2bc901571c330be Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 8 May 2025 12:21:06 +0200 Subject: [PATCH 148/160] adapt some values to our env --- Modules/getpath.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/getpath.py b/Modules/getpath.py index 4ba4cf68..b76e7704 100644 --- a/Modules/getpath.py +++ b/Modules/getpath.py @@ -206,12 +206,12 @@ BUILDDIR_TXT = 'pybuilddir.txt' BUILD_LANDMARK = 'Modules\\Setup.local' DEFAULT_PROGRAM_NAME = f'python' - STDLIB_SUBDIR = 'Lib' + STDLIB_SUBDIR = f'{platlibdir}/python{VERSION_MAJOR}.{VERSION_MINOR}' STDLIB_LANDMARKS = [f'{STDLIB_SUBDIR}\\os.py', f'{STDLIB_SUBDIR}\\os.pyc'] - PLATSTDLIB_LANDMARK = f'{platlibdir}' + PLATSTDLIB_LANDMARK = f'{platlibdir}/python{VERSION_MAJOR}.{VERSION_MINOR}/lib-dynload' BUILDSTDLIB_LANDMARKS = ['Lib\\os.py'] VENV_LANDMARK = 'pyvenv.cfg' - ZIP_LANDMARK = f'python{VERSION_MAJOR}{VERSION_MINOR}{PYDEBUGEXT or ""}.zip' + ZIP_LANDMARK = f'{platlibdir}/python{VERSION_MAJOR}{VERSION_MINOR}.zip' DELIM = ';' SEP = '\\' From a0856e8f7bc9508732b836358e35cc6adbd1bfc1 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 8 May 2025 18:10:29 +0200 Subject: [PATCH 149/160] copy the symlinks as well during install --- Makefile.pre.in | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Makefile.pre.in b/Makefile.pre.in index 0aeba270..e0c0b372 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -2186,7 +2186,15 @@ sharedinstall: all @for i in X $(SHAREDMODS); do \ if test $$i != X; then \ echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \ + mod=`basename $$i`; \ + moddir=`dirname $$i`; \ + if test $${#mod} -gt 12 ; then \ + mod8=`paste -s $$moddir/$${mod%%$(EXT_SUFFIX)}.def | cut -d " " -f 2`; \ + $(INSTALL_SHARED) $$moddir/$$mod8$(EXT_SUFFIX) $(DESTDIR)$(DESTSHARED)/$$mod8$(EXT_SUFFIX); \ + $(LN) -sf $$mod8$(EXT_SUFFIX) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \ + else \ $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \ + fi; \ if test -d "$$i.dSYM"; then \ echo $(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \ $(DSYMUTIL_PATH) $(DESTDIR)$(DESTSHARED)/`basename $$i`; \ From 2a7e6e110866a689416939cbcf60a3d59b5012d5 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Thu, 8 May 2025 19:26:19 +0200 Subject: [PATCH 150/160] adapt multiprocess to 3.13 --- Lib/concurrent/futures/process.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lib/concurrent/futures/process.py b/Lib/concurrent/futures/process.py index 09456bd0..69d370d7 100644 --- a/Lib/concurrent/futures/process.py +++ b/Lib/concurrent/futures/process.py @@ -583,7 +583,8 @@ def _check_system_limits(): raise NotImplementedError(_system_limited) _system_limits_checked = True if os.name == 'os2': - return + _system_limited = ("This Python build for OS/2 lacks multiprocessing.") + raise NotImplementedError(_system_limited) try: import multiprocessing.synchronize except ImportError: From ba5fef9f049beaff064e2270c390b45b12713d48 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 9 May 2025 12:27:41 +0200 Subject: [PATCH 151/160] make sure the short names are consistent --- Modules/makesetup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/makesetup b/Modules/makesetup index 2ac42493..dcb97c11 100755 --- a/Modules/makesetup +++ b/Modules/makesetup @@ -273,7 +273,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' | if test ${#mod} -gt 8 then first4="`echo $mod | cut -c1-4`" - rand="$(mktemp --dry-run XXXX)" + rand="`echo $mod | md5sum | cut -c1-4`" mod83="$first4$rand" file83="$srcdir/$mod83\$(EXT_SUFFIX)" else From 4b9ffd9e6ed192592a542fc1d836c4d15742268b Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Sat, 10 May 2025 10:44:10 +0200 Subject: [PATCH 152/160] add expanduser to os2knixpath, and remove the wrong implementation from ntpath --- Lib/ntpath.py | 16 ------------ Lib/os2knixpath.py | 65 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 17 deletions(-) diff --git a/Lib/ntpath.py b/Lib/ntpath.py index 4ca70bdb..19c4a902 100644 --- a/Lib/ntpath.py +++ b/Lib/ntpath.py @@ -365,22 +365,6 @@ def expanduser(path): while i < n and path[i] not in seps: i += 1 - if os.name == 'os2': - if 'HOME' not in os.environ: - try: - import pwd - except ImportError: - # pwd module unavailable, return path unchanged - return path - try: - userhome = pwd.getpwuid(os.getuid()).pw_dir - except KeyError: - # bpo-10496: if the current user identifier doesn't exist in the - # password database, return the path unchanged - return path - else: - return os.environ['HOME'] - if 'USERPROFILE' in os.environ: userhome = os.environ['USERPROFILE'] elif 'HOME' in os.environ: diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index e4a42eb8..0d88b253 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -8,7 +8,7 @@ import os import stat from genericpath import * -from ntpath import (expanduser, expandvars, isabs, islink, splitdrive, +from ntpath import (expandvars, isabs, islink, splitdrive, splitext, split) __all__ = ["normcase","isabs","join","splitdrive","split","splitext", @@ -381,3 +381,66 @@ def commonpath(paths): genericpath._check_arg_types('commonpath', *paths) raise +# Expand paths beginning with '~' or '~user'. +# '~' means $HOME; '~user' means that user's home directory. +# If the path doesn't begin with '~', or if the user or $HOME is unknown, +# the path is returned unchanged (leaving error reporting to whatever +# function is called with the expanded path as argument). +# See also module 'glob' for expansion of *, ? and [...] in pathnames. +# (A function should also be defined to do full *sh-style environment +# variable expansion.) + +def expanduser(path): + """Expand ~ and ~user constructs. + + If user or $HOME is unknown, do nothing.""" + path = os.fspath(path) + if isinstance(path, bytes): + seps = b'\\/' + tilde = b'~' + else: + seps = '\\/' + tilde = '~' + if not path.startswith(tilde): + return path + i, n = 1, len(path) + while i < n and path[i] not in seps: + i += 1 + + if 'HOME' not in os.environ: + try: + import pwd + except ImportError: + # pwd module unavailable, return path unchanged + return path + try: + userhome = pwd.getpwuid(os.getuid()).pw_dir + except KeyError: + # bpo-10496: if the current user identifier doesn't exist in the + # password database, return the path unchanged + return path + else: + userhome = os.environ['HOME'] + + if i != 1: #~user + target_user = path[1:i] + if isinstance(target_user, bytes): + target_user = os.fsdecode(target_user) + + try: + import pwd + except ImportError: + # pwd module unavailable, return path unchanged + return path + + try: + userhome = pwd.getpwnam(target_user).pw_dir + except KeyError: + return path + + userhome = join(dirname(userhome), target_user) + + if isinstance(path, bytes): + userhome = os.fsencode(userhome) + + return userhome + path[i:] From 396a9138a8e5b1cb282643594bffda13532355dc Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Sat, 10 May 2025 11:24:09 +0200 Subject: [PATCH 153/160] fix more path stuff --- Lib/os2knixpath.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lib/os2knixpath.py b/Lib/os2knixpath.py index 0d88b253..ae6119fd 100644 --- a/Lib/os2knixpath.py +++ b/Lib/os2knixpath.py @@ -177,9 +177,10 @@ def abspath(path): # Return a canonical path (i.e. the absolute location of a file on the # filesystem). -def realpath(filename): +def realpath(filename, *, strict=False): """Return the canonical path of the specified filename, eliminating any symbolic links encountered in the path.""" + filename = normpath(filename) if isabs(filename): bits = ['/'] + filename.split('/')[1:] else: From b40b534e18455263a637885875c88acc9c05f2f6 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 13 May 2025 15:19:31 +0200 Subject: [PATCH 154/160] import sysconfig --- Lib/subprocess.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index a8ccdab3..217d53bd 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -126,6 +126,7 @@ class _del_safe: if _os2: import fcntl import time + import sysconfig # Exception classes used by this module. class SubprocessError(Exception): pass From 19edc5418fc4d25f3e834d8a6f7bfa2c045729b1 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Tue, 13 May 2025 16:00:17 +0200 Subject: [PATCH 155/160] fix a merge issue, and load sysconfig always in non _mswindows case --- Lib/subprocess.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 217d53bd..7c77cd16 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -123,10 +123,11 @@ class _del_safe: import selectors _os2 = (os.name == "os2") +if not _mswindows: + import sysconfig if _os2: import fcntl import time - import sysconfig # Exception classes used by this module. class SubprocessError(Exception): pass @@ -2172,10 +2173,9 @@ def _communicate(self, input, endtime, orig_timeout): self.stderr.close() # All data exchanged. Translate lists into strings. - if stdout is not None: - stdout = ''.join(stdout) - if stderr is not None: - stderr = ''.join(stderr) + stdout = stdout[0] if stdout else None + stderr = stderr[0] if stderr else None + else: if self.stdin and not self._communication_started: # Flush stdio buffer. This might block, if the user has From 4a38b05dc625f7f5a1f378b26ed53af0597db435 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 16 Jan 2026 20:23:58 +0100 Subject: [PATCH 156/160] fix a merge issue --- Lib/subprocess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index df1aa1d7..2efe5998 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -2262,7 +2262,7 @@ def _communicate(self, input, endtime, orig_timeout): # XXX Rewrite these to use non-blocking I/O on the file # objects; they are no longer using C stdio! - for key, events in ready: if key.fileobj is self.stdin: + for key, events in ready: if key.fileobj is self.stdin: chunk = input_view[self._input_offset : self._input_offset + _PIPE_BUF] From 322603c5d81ea4f4ba335511030974f0da1e7f24 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 16 Jan 2026 20:24:46 +0100 Subject: [PATCH 157/160] adapt to wchar case compare, as we have it finally --- Modules/getpath.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/getpath.c b/Modules/getpath.c index cefba4e9..f4b35204 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -152,7 +152,7 @@ getpath_hassuffix(PyObject *Py_UNUSED(self), PyObject *args) #if defined(MS_WINDOWS) wcsicmp(&path[len - suffixLen], suffix) != 0 #elif defined(__OS2__) - stricmp((const char*)&path[len - suffixLen], (const char*)suffix) != 0 + wcscasecmp(&path[len - suffixLen], suffix) != 0 #else wcscmp(&path[len - suffixLen], suffix) != 0 #endif From 8b5f1f09e61fc01418e8914c0e0f7b3f505a191f Mon Sep 17 00:00:00 2001 From: KO Myung-Hun Date: Fri, 16 Jan 2026 20:45:19 +0100 Subject: [PATCH 158/160] fixes issue #53 os.rmdir() fails because of 'Resource busy' --- Lib/subprocess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 2efe5998..b4760fc3 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -1879,7 +1879,7 @@ def _execute_child(self, args, executable, preexec_fn, close_fds, if close_fds: mode |= os.P_2_NOINHERIT - if threadsafe: + if threadsafe or cwd is not None: mode |= os.P_2_THREADSAFE stdfds = [ p2cread, c2pwrite, errwrite ] From 7ffc860a45c449dffb4f0f2ee1ad4b585d26bfeb Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 16 Jan 2026 21:18:11 +0100 Subject: [PATCH 159/160] closes issue #54 --- Modules/clinic/posixmodule.c.h | 2 +- Modules/posixmodule.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index a5fe9d3a..0e1ed291 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -11229,7 +11229,7 @@ os_eventfd_write(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyOb #endif /* (defined(HAVE_EVENTFD) && defined(EFD_CLOEXEC)) */ -#if (defined(TERMSIZE_USE_CONIO) || defined(TERMSIZE_USE_IOCTL)) +#if (defined(TERMSIZE_USE_CONIO) || defined(TERMSIZE_USE_IOCTL) || defined(__OS2__)) PyDoc_STRVAR(os_get_terminal_size__doc__, "get_terminal_size($module, fd=, /)\n" diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index f2dfecad..c16609ea 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -15719,7 +15719,7 @@ static PyStructSequence_Desc TerminalSize_desc = { 2, }; -#if defined(TERMSIZE_USE_CONIO) || defined(TERMSIZE_USE_IOCTL) +#if defined(TERMSIZE_USE_CONIO) || defined(TERMSIZE_USE_IOCTL) || defined(__OS2__) /*[clinic input] os.get_terminal_size @@ -15782,6 +15782,15 @@ os_get_terminal_size_impl(PyObject *module, int fd) } #endif /* TERMSIZE_USE_CONIO */ +#ifdef __OS2__ + { + int dst[2]; + _scrsize(dst); + columns = dst[0]; + lines = dst[1]; + } +#endif /* TERMSIZE_USE_IOCTL */ + PyObject *TerminalSizeType = get_posix_state(module)->TerminalSizeType; termsize = PyStructSequence_New((PyTypeObject *)TerminalSizeType); if (termsize == NULL) From 7882c7dda74703af9684c5ca0f0e8fc44d9d8182 Mon Sep 17 00:00:00 2001 From: SilvanScherrer Date: Fri, 23 Jan 2026 10:41:02 +0100 Subject: [PATCH 160/160] disable pthread_cleanup_push and pthread_cleanup_post, as we lack those api --- Modules/_testcapimodule.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 72df72e9..25b27c53 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -3338,13 +3338,13 @@ static PyObject * finalize_thread_hang(PyObject *self, PyObject *callback) { // WASI builds some pthread stuff but doesn't have these APIs today? -#if defined(_POSIX_THREADS) && !defined(__wasi__) +#if defined(_POSIX_THREADS) && !defined(__wasi__) && !defined(__OS2__) pthread_cleanup_push(finalize_thread_hang_cleanup_callback, NULL); #endif PyObject_CallNoArgs(callback); // Should not reach here. Py_FatalError("thread unexpectedly did not hang"); -#if defined(_POSIX_THREADS) && !defined(__wasi__) +#if defined(_POSIX_THREADS) && !defined(__wasi__) && !defined(__OS2__) pthread_cleanup_pop(0); #endif Py_RETURN_NONE;